summaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit90825e2392b2d70e43c7a25b8a3752299a933894 (patch)
treee33aa27f02b74604afbfd0ea4f1cfca8833d882a /python
downloadtdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz
tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'python')
-rw-r--r--python/Makefile.am157
-rw-r--r--python/README.copy29
-rw-r--r--python/configure.in.in11
-rw-r--r--python/mungepyqtconfig.sed1
-rw-r--r--python/mungesipconfig.sed2
-rw-r--r--python/pykde/AUTHORS6
-rw-r--r--python/pykde/BUGS0
-rw-r--r--python/pykde/COPYING343
-rw-r--r--python/pykde/ChangeLog602
-rw-r--r--python/pykde/ChangeLog.2001-4185
-rw-r--r--python/pykde/Changelog779
-rw-r--r--python/pykde/INSTALL14
-rw-r--r--python/pykde/NEWS3
-rw-r--r--python/pykde/README5
-rw-r--r--python/pykde/THANKS109
-rw-r--r--python/pykde/configure.py943
-rwxr-xr-xpython/pykde/contrib/kdepyuic150
-rw-r--r--python/pykde/doc/classref/allclasses.html801
-rw-r--r--python/pykde/doc/classref/dcop/DCOPClient.html456
-rw-r--r--python/pykde/doc/classref/dcop/DCOPObject.html160
-rw-r--r--python/pykde/doc/classref/dcop/DCOPObjectProxy.html60
-rw-r--r--python/pykde/doc/classref/dcop/DCOPRef.html142
-rw-r--r--python/pykde/doc/classref/dcop/DCOPReply.html50
-rw-r--r--python/pykde/doc/classref/dcop/DCOPStub.html93
-rw-r--r--python/pykde/doc/classref/dcop/index.html40
-rw-r--r--python/pykde/doc/classref/glossary.html40
-rw-r--r--python/pykde/doc/classref/index.html57
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Address.html249
-rw-r--r--python/pykde/doc/classref/kabc/KABC.AddressBook.html281
-rw-r--r--python/pykde/doc/classref/kabc/KABC.AddressLineEdit.html123
-rw-r--r--python/pykde/doc/classref/kabc/KABC.AddresseeDialog.html72
-rw-r--r--python/pykde/doc/classref/kabc/KABC.AddresseeItem.html61
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Agent.html105
-rw-r--r--python/pykde/doc/classref/kabc/KABC.ConsoleErrorHandler.html48
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionList.Entry.html56
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionList.html77
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionListDialog.html49
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionListEditorWidget.html49
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionListManager.html74
-rw-r--r--python/pykde/doc/classref/kabc/KABC.DistributionListWatcher.html58
-rw-r--r--python/pykde/doc/classref/kabc/KABC.EmailSelectDialog.html61
-rw-r--r--python/pykde/doc/classref/kabc/KABC.EmailSelector.html64
-rw-r--r--python/pykde/doc/classref/kabc/KABC.ErrorHandler.html49
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Field.html184
-rw-r--r--python/pykde/doc/classref/kabc/KABC.FieldSortMode.html57
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Format.html57
-rw-r--r--python/pykde/doc/classref/kabc/KABC.FormatFactory.html72
-rw-r--r--python/pykde/doc/classref/kabc/KABC.FormatInfo.html45
-rw-r--r--python/pykde/doc/classref/kabc/KABC.FormatPlugin.html87
-rw-r--r--python/pykde/doc/classref/kabc/KABC.GUIErrorHandler.html48
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Geo.html90
-rw-r--r--python/pykde/doc/classref/kabc/KABC.GuiErrorHandler.html55
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Key.html140
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LDAPUrl.Extension.html44
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LDAPUrl.html152
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LDIF.html174
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LDIFConverter.html122
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LdapClient.html190
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LdapConfigWidget.html276
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LdapObject.html88
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LdapResult.html45
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LdapSearch.html78
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Lock.html94
-rw-r--r--python/pykde/doc/classref/kabc/KABC.LockNull.html60
-rw-r--r--python/pykde/doc/classref/kabc/KABC.NameSortMode.html64
-rw-r--r--python/pykde/doc/classref/kabc/KABC.PhoneNumber.html127
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Picture.html116
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Plugin.html78
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Resource.html346
-rw-r--r--python/pykde/doc/classref/kabc/KABC.ResourceFile.html312
-rw-r--r--python/pykde/doc/classref/kabc/KABC.ResourceSelectDialog.html70
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Secrecy.html100
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortMode.html50
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.FamilyName.html59
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.FormattedName.html59
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.GivenName.html59
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.Name.html59
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.Uid.html59
-rw-r--r--python/pykde/doc/classref/kabc/KABC.SortingTraits.html41
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Sound.html109
-rw-r--r--python/pykde/doc/classref/kabc/KABC.StdAddressBook.html143
-rw-r--r--python/pykde/doc/classref/kabc/KABC.Ticket.html50
-rw-r--r--python/pykde/doc/classref/kabc/KABC.TimeZone.html80
-rw-r--r--python/pykde/doc/classref/kabc/KABC.VCardConverter.html96
-rw-r--r--python/pykde/doc/classref/kabc/KABC.VCardFormat.html58
-rw-r--r--python/pykde/doc/classref/kabc/KABC.VCardFormatPlugin.html86
-rw-r--r--python/pykde/doc/classref/kabc/KABC.html67
-rw-r--r--python/pykde/doc/classref/kabc/index.html95
-rw-r--r--python/pykde/doc/classref/kabc/kabc-globals.html28
-rw-r--r--python/pykde/doc/classref/kdecore/KAboutData.html260
-rw-r--r--python/pykde/doc/classref/kdecore/KAboutPerson.html65
-rw-r--r--python/pykde/doc/classref/kdecore/KAboutTranslator.html54
-rw-r--r--python/pykde/doc/classref/kdecore/KAccel.html366
-rw-r--r--python/pykde/doc/classref/kdecore/KAccelAction.html208
-rw-r--r--python/pykde/doc/classref/kdecore/KAccelActions.html172
-rw-r--r--python/pykde/doc/classref/kdecore/KAccelBase.html242
-rw-r--r--python/pykde/doc/classref/kdecore/KAccelShortcutList.html130
-rw-r--r--python/pykde/doc/classref/kdecore/KApplication.html666
-rw-r--r--python/pykde/doc/classref/kdecore/KAsyncIO.html70
-rw-r--r--python/pykde/doc/classref/kdecore/KAudioPlayer.html59
-rw-r--r--python/pykde/doc/classref/kdecore/KBufferedIO.html136
-rw-r--r--python/pykde/doc/classref/kdecore/KCalendarSystem.html306
-rw-r--r--python/pykde/doc/classref/kdecore/KCalendarSystemFactory.html59
-rw-r--r--python/pykde/doc/classref/kdecore/KCatalogue.html93
-rw-r--r--python/pykde/doc/classref/kdecore/KCharMacroExpander.html75
-rw-r--r--python/pykde/doc/classref/kdecore/KCharsets.html106
-rw-r--r--python/pykde/doc/classref/kdecore/KClipboardSynchronizer.html84
-rw-r--r--python/pykde/doc/classref/kdecore/KCmdLineArgs.html220
-rw-r--r--python/pykde/doc/classref/kdecore/KCmdLineOptions.html45
-rw-r--r--python/pykde/doc/classref/kdecore/KCodecs.html182
-rw-r--r--python/pykde/doc/classref/kdecore/KCompletion.html211
-rw-r--r--python/pykde/doc/classref/kdecore/KCompletionBase.html141
-rw-r--r--python/pykde/doc/classref/kdecore/KConfig.html149
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigBackEnd.html107
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigBase.html970
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigDialogManager.html130
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigGroup.html95
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigGroupSaver.html71
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigINIBackEnd.html88
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemBool.html96
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemColor.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDateTime.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDouble.html118
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.Choice.html45
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.html90
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemFont.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt.html118
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt64.html124
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemIntList.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemLong.html118
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPassword.html51
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPath.html51
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPathList.html65
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPoint.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemProperty.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemRect.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemSize.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemString.html106
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemStringList.html102
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt.html118
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt64.html124
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemULong.html118
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeleton.html334
-rw-r--r--python/pykde/doc/classref/kdecore/KConfigSkeletonItem.html170
-rw-r--r--python/pykde/doc/classref/kdecore/KCrash.html82
-rw-r--r--python/pykde/doc/classref/kdecore/KDCOPPropertyProxy.html91
-rw-r--r--python/pykde/doc/classref/kdecore/KDE.html61
-rw-r--r--python/pykde/doc/classref/kdecore/KDesktopFile.html155
-rw-r--r--python/pykde/doc/classref/kdecore/KEntry.html54
-rw-r--r--python/pykde/doc/classref/kdecore/KEntryKey.html56
-rw-r--r--python/pykde/doc/classref/kdecore/KGlobal.html122
-rw-r--r--python/pykde/doc/classref/kdecore/KGlobalAccel.html173
-rw-r--r--python/pykde/doc/classref/kdecore/KGlobalSettings.KMouseSettings.html46
-rw-r--r--python/pykde/doc/classref/kdecore/KGlobalSettings.html270
-rw-r--r--python/pykde/doc/classref/kdecore/KIDNA.html62
-rw-r--r--python/pykde/doc/classref/kdecore/KIPC.html63
-rw-r--r--python/pykde/doc/classref/kdecore/KIcon.html69
-rw-r--r--python/pykde/doc/classref/kdecore/KIconEffect.html205
-rw-r--r--python/pykde/doc/classref/kdecore/KIconLoader.html195
-rw-r--r--python/pykde/doc/classref/kdecore/KIconTheme.html140
-rw-r--r--python/pykde/doc/classref/kdecore/KInstance.html103
-rw-r--r--python/pykde/doc/classref/kdecore/KKey.html195
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyNative.html174
-rw-r--r--python/pykde/doc/classref/kdecore/KKeySequence.html180
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyServer.CodeMod.html44
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyServer.Key.html103
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyServer.Sym.html92
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyServer.Variations.html68
-rw-r--r--python/pykde/doc/classref/kdecore/KKeyServer.html132
-rw-r--r--python/pykde/doc/classref/kdecore/KLibFactory.html72
-rw-r--r--python/pykde/doc/classref/kdecore/KLibLoader.html91
-rw-r--r--python/pykde/doc/classref/kdecore/KLibrary.html80
-rw-r--r--python/pykde/doc/classref/kdecore/KLocale.html583
-rw-r--r--python/pykde/doc/classref/kdecore/KLockFile.html82
-rw-r--r--python/pykde/doc/classref/kdecore/KMD4.html145
-rw-r--r--python/pykde/doc/classref/kdecore/KMD5.html144
-rw-r--r--python/pykde/doc/classref/kdecore/KMacroExpander.html113
-rw-r--r--python/pykde/doc/classref/kdecore/KMacroExpanderBase.html99
-rw-r--r--python/pykde/doc/classref/kdecore/KMimeSourceFactory.html54
-rw-r--r--python/pykde/doc/classref/kdecore/KMountPoint.html92
-rw-r--r--python/pykde/doc/classref/kdecore/KMultipleDrag.html82
-rw-r--r--python/pykde/doc/classref/kdecore/KNotifyClient.Instance.html58
-rw-r--r--python/pykde/doc/classref/kdecore/KNotifyClient.html148
-rw-r--r--python/pykde/doc/classref/kdecore/KPalette.html140
-rw-r--r--python/pykde/doc/classref/kdecore/KPixmapProvider.html49
-rw-r--r--python/pykde/doc/classref/kdecore/KProcIO.html139
-rw-r--r--python/pykde/doc/classref/kdecore/KProcess.html348
-rw-r--r--python/pykde/doc/classref/kdecore/KProcessController.html134
-rw-r--r--python/pykde/doc/classref/kdecore/KPty.html96
-rw-r--r--python/pykde/doc/classref/kdecore/KRFCDate.html74
-rw-r--r--python/pykde/doc/classref/kdecore/KRandomSequence.html80
-rw-r--r--python/pykde/doc/classref/kdecore/KRegExp.html82
-rw-r--r--python/pykde/doc/classref/kdecore/KRootProp.html127
-rw-r--r--python/pykde/doc/classref/kdecore/KSaveFile.html85
-rw-r--r--python/pykde/doc/classref/kdecore/KSelectionOwner.html114
-rw-r--r--python/pykde/doc/classref/kdecore/KSelectionWatcher.html77
-rw-r--r--python/pykde/doc/classref/kdecore/KServerSocket.html108
-rw-r--r--python/pykde/doc/classref/kdecore/KSessionManaged.html56
-rw-r--r--python/pykde/doc/classref/kdecore/KShared.html62
-rw-r--r--python/pykde/doc/classref/kdecore/KSharedConfig.html64
-rw-r--r--python/pykde/doc/classref/kdecore/KShell.html88
-rw-r--r--python/pykde/doc/classref/kdecore/KShellProcess.html68
-rw-r--r--python/pykde/doc/classref/kdecore/KShortcut.html243
-rw-r--r--python/pykde/doc/classref/kdecore/KShortcutList.html159
-rw-r--r--python/pykde/doc/classref/kdecore/KSimpleConfig.html65
-rw-r--r--python/pykde/doc/classref/kdecore/KSocket.html126
-rw-r--r--python/pykde/doc/classref/kdecore/KStartupInfo.html227
-rw-r--r--python/pykde/doc/classref/kdecore/KStartupInfoData.html195
-rw-r--r--python/pykde/doc/classref/kdecore/KStartupInfoId.html98
-rw-r--r--python/pykde/doc/classref/kdecore/KStaticDeleterBase.html45
-rw-r--r--python/pykde/doc/classref/kdecore/KStdAccel.ShortcutList.html108
-rw-r--r--python/pykde/doc/classref/kdecore/KStdAccel.html284
-rw-r--r--python/pykde/doc/classref/kdecore/KStringHandler.html292
-rw-r--r--python/pykde/doc/classref/kdecore/KTempDir.html99
-rw-r--r--python/pykde/doc/classref/kdecore/KTempFile.html106
-rw-r--r--python/pykde/doc/classref/kdecore/KTimezone.html129
-rw-r--r--python/pykde/doc/classref/kdecore/KTimezoneDetails.html124
-rw-r--r--python/pykde/doc/classref/kdecore/KTimezoneSource.html60
-rw-r--r--python/pykde/doc/classref/kdecore/KTimezones.html74
-rw-r--r--python/pykde/doc/classref/kdecore/KURL.List.html183
-rw-r--r--python/pykde/doc/classref/kdecore/KURL.html562
-rw-r--r--python/pykde/doc/classref/kdecore/KURLDrag.html165
-rw-r--r--python/pykde/doc/classref/kdecore/KUniqueApplication.html101
-rw-r--r--python/pykde/doc/classref/kdecore/KWin.Info.html66
-rw-r--r--python/pykde/doc/classref/kdecore/KWin.WindowInfo.html172
-rw-r--r--python/pykde/doc/classref/kdecore/KWin.html304
-rw-r--r--python/pykde/doc/classref/kdecore/KWinModule.html191
-rw-r--r--python/pykde/doc/classref/kdecore/KWordMacroExpander.html75
-rw-r--r--python/pykde/doc/classref/kdecore/KZoneAllocator.html77
-rw-r--r--python/pykde/doc/classref/kdecore/NET.html92
-rw-r--r--python/pykde/doc/classref/kdecore/NETExtendedStrut.html60
-rw-r--r--python/pykde/doc/classref/kdecore/NETIcon.html49
-rw-r--r--python/pykde/doc/classref/kdecore/NETPoint.html49
-rw-r--r--python/pykde/doc/classref/kdecore/NETRect.html44
-rw-r--r--python/pykde/doc/classref/kdecore/NETRootInfo.html424
-rw-r--r--python/pykde/doc/classref/kdecore/NETRootInfo2.html102
-rw-r--r--python/pykde/doc/classref/kdecore/NETRootInfo3.html84
-rw-r--r--python/pykde/doc/classref/kdecore/NETRootInfo4.html62
-rw-r--r--python/pykde/doc/classref/kdecore/NETSize.html49
-rw-r--r--python/pykde/doc/classref/kdecore/NETStrut.html51
-rw-r--r--python/pykde/doc/classref/kdecore/NETWinInfo.html315
-rw-r--r--python/pykde/doc/classref/kdecore/index.html180
-rw-r--r--python/pykde/doc/classref/kdecore/kdecore-globals.html209
-rw-r--r--python/pykde/doc/classref/kdefx/KCPUInfo.html52
-rw-r--r--python/pykde/doc/classref/kdefx/KImageEffect.html523
-rw-r--r--python/pykde/doc/classref/kdefx/KPixmap.html90
-rw-r--r--python/pykde/doc/classref/kdefx/KPixmapEffect.html178
-rw-r--r--python/pykde/doc/classref/kdefx/KPixmapSplitter.html86
-rw-r--r--python/pykde/doc/classref/kdefx/KStyle.html212
-rw-r--r--python/pykde/doc/classref/kdefx/index.html41
-rw-r--r--python/pykde/doc/classref/kdefx/kdefx-globals.html151
-rw-r--r--python/pykde/doc/classref/kdeprint/DrBase.html137
-rw-r--r--python/pykde/doc/classref/kdeprint/DrBooleanOption.html45
-rw-r--r--python/pykde/doc/classref/kdeprint/DrChoiceGroup.html48
-rw-r--r--python/pykde/doc/classref/kdeprint/DrConstraint.html65
-rw-r--r--python/pykde/doc/classref/kdeprint/DrFloatOption.html60
-rw-r--r--python/pykde/doc/classref/kdeprint/DrGroup.html136
-rw-r--r--python/pykde/doc/classref/kdeprint/DrIntegerOption.html60
-rw-r--r--python/pykde/doc/classref/kdeprint/DrListOption.html110
-rw-r--r--python/pykde/doc/classref/kdeprint/DrMain.html94
-rw-r--r--python/pykde/doc/classref/kdeprint/DrPageSize.html105
-rw-r--r--python/pykde/doc/classref/kdeprint/DrStringOption.html56
-rw-r--r--python/pykde/doc/classref/kdeprint/KMJob.html242
-rw-r--r--python/pykde/doc/classref/kdeprint/KMJobManager.JobFilter.html50
-rw-r--r--python/pykde/doc/classref/kdeprint/KMJobManager.html204
-rw-r--r--python/pykde/doc/classref/kdeprint/KMManager.html363
-rw-r--r--python/pykde/doc/classref/kdeprint/KMObject.html53
-rw-r--r--python/pykde/doc/classref/kdeprint/KMPrinter.html420
-rw-r--r--python/pykde/doc/classref/kdeprint/KPReloadObject.html57
-rw-r--r--python/pykde/doc/classref/kdeprint/KPrintAction.html127
-rw-r--r--python/pykde/doc/classref/kdeprint/KPrintDialog.html193
-rw-r--r--python/pykde/doc/classref/kdeprint/KPrintDialogPage.html103
-rw-r--r--python/pykde/doc/classref/kdeprint/KPrinter.html493
-rw-r--r--python/pykde/doc/classref/kdeprint/index.html46
-rw-r--r--python/pykde/doc/classref/kdeprint/kdeprint-globals.html45
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutApplication.html64
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutContainer.html111
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutContributor.html133
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutDialog.html263
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutKDE.html49
-rw-r--r--python/pykde/doc/classref/kdeui/KAboutWidget.html122
-rw-r--r--python/pykde/doc/classref/kdeui/KAction.html531
-rw-r--r--python/pykde/doc/classref/kdeui/KActionCollection.html574
-rw-r--r--python/pykde/doc/classref/kdeui/KActionMenu.html227
-rw-r--r--python/pykde/doc/classref/kdeui/KActionPtrShortcutList.html119
-rw-r--r--python/pykde/doc/classref/kdeui/KActionSelector.html233
-rw-r--r--python/pykde/doc/classref/kdeui/KActionSeparator.html73
-rw-r--r--python/pykde/doc/classref/kdeui/KActionShortcutList.html121
-rw-r--r--python/pykde/doc/classref/kdeui/KActiveLabel.html89
-rw-r--r--python/pykde/doc/classref/kdeui/KAnimWidget.html141
-rw-r--r--python/pykde/doc/classref/kdeui/KArrowButton.html79
-rw-r--r--python/pykde/doc/classref/kdeui/KAuthIcon.html65
-rw-r--r--python/pykde/doc/classref/kdeui/KBugReport.html82
-rw-r--r--python/pykde/doc/classref/kdeui/KButtonBox.html115
-rw-r--r--python/pykde/doc/classref/kdeui/KCModule.html162
-rw-r--r--python/pykde/doc/classref/kdeui/KCharSelect.html201
-rw-r--r--python/pykde/doc/classref/kdeui/KCharSelectTable.html167
-rw-r--r--python/pykde/doc/classref/kdeui/KColor.html87
-rw-r--r--python/pykde/doc/classref/kdeui/KColorCells.html149
-rw-r--r--python/pykde/doc/classref/kdeui/KColorCombo.html78
-rw-r--r--python/pykde/doc/classref/kdeui/KColorDialog.html117
-rw-r--r--python/pykde/doc/classref/kdeui/KColorDrag.html99
-rw-r--r--python/pykde/doc/classref/kdeui/KColorPatch.html83
-rw-r--r--python/pykde/doc/classref/kdeui/KComboBox.html261
-rw-r--r--python/pykde/doc/classref/kdeui/KCommand.html56
-rw-r--r--python/pykde/doc/classref/kdeui/KCommandHistory.html122
-rw-r--r--python/pykde/doc/classref/kdeui/KCompletionBox.html156
-rw-r--r--python/pykde/doc/classref/kdeui/KConfigDialog.html139
-rw-r--r--python/pykde/doc/classref/kdeui/KContextMenuManager.html63
-rw-r--r--python/pykde/doc/classref/kdeui/KCursor.html136
-rw-r--r--python/pykde/doc/classref/kdeui/KDCOPActionProxy.html96
-rw-r--r--python/pykde/doc/classref/kdeui/KDateInternalMonthPicker.html141
-rw-r--r--python/pykde/doc/classref/kdeui/KDateInternalWeekSelector.html87
-rw-r--r--python/pykde/doc/classref/kdeui/KDateInternalYearSelector.html76
-rw-r--r--python/pykde/doc/classref/kdeui/KDatePicker.html200
-rw-r--r--python/pykde/doc/classref/kdeui/KDateTable.html192
-rw-r--r--python/pykde/doc/classref/kdeui/KDateTimeWidget.html76
-rw-r--r--python/pykde/doc/classref/kdeui/KDateValidator.html67
-rw-r--r--python/pykde/doc/classref/kdeui/KDateWidget.html84
-rw-r--r--python/pykde/doc/classref/kdeui/KDialog.html125
-rw-r--r--python/pykde/doc/classref/kdeui/KDialogBase.html706
-rw-r--r--python/pykde/doc/classref/kdeui/KDialogQueue.html55
-rw-r--r--python/pykde/doc/classref/kdeui/KDockArea.html135
-rw-r--r--python/pykde/doc/classref/kdeui/KDockMainWindow.html136
-rw-r--r--python/pykde/doc/classref/kdeui/KDockManager.html208
-rw-r--r--python/pykde/doc/classref/kdeui/KDockTabGroup.html52
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWidget.html320
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeader.html66
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeaderDrag.html52
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWidgetHeader.html108
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWidgetHeaderDrag.html55
-rw-r--r--python/pykde/doc/classref/kdeui/KDockWindow.html48
-rw-r--r--python/pykde/doc/classref/kdeui/KDoubleNumInput.html228
-rw-r--r--python/pykde/doc/classref/kdeui/KDoubleSpinBox.html177
-rw-r--r--python/pykde/doc/classref/kdeui/KDoubleValidator.html78
-rw-r--r--python/pykde/doc/classref/kdeui/KDualColorButton.html162
-rw-r--r--python/pykde/doc/classref/kdeui/KEdFind.html103
-rw-r--r--python/pykde/doc/classref/kdeui/KEdGotoLine.html58
-rw-r--r--python/pykde/doc/classref/kdeui/KEdReplace.html112
-rw-r--r--python/pykde/doc/classref/kdeui/KEdit.html264
-rw-r--r--python/pykde/doc/classref/kdeui/KEditListBox.CustomEditor.html82
-rw-r--r--python/pykde/doc/classref/kdeui/KEditListBox.html210
-rw-r--r--python/pykde/doc/classref/kdeui/KEditToolbar.html108
-rw-r--r--python/pykde/doc/classref/kdeui/KEditToolbarWidget.html188
-rw-r--r--python/pykde/doc/classref/kdeui/KFloatValidator.html101
-rw-r--r--python/pykde/doc/classref/kdeui/KFontAction.html252
-rw-r--r--python/pykde/doc/classref/kdeui/KFontChooser.html147
-rw-r--r--python/pykde/doc/classref/kdeui/KFontCombo.html136
-rw-r--r--python/pykde/doc/classref/kdeui/KFontDialog.html114
-rw-r--r--python/pykde/doc/classref/kdeui/KFontRequester.html115
-rw-r--r--python/pykde/doc/classref/kdeui/KFontSizeAction.html263
-rw-r--r--python/pykde/doc/classref/kdeui/KGradientSelector.html115
-rw-r--r--python/pykde/doc/classref/kdeui/KGuiItem.html139
-rw-r--r--python/pykde/doc/classref/kdeui/KHSSelector.html66
-rw-r--r--python/pykde/doc/classref/kdeui/KHelpMenu.html82
-rw-r--r--python/pykde/doc/classref/kdeui/KHistoryCombo.html124
-rw-r--r--python/pykde/doc/classref/kdeui/KIconView.html213
-rw-r--r--python/pykde/doc/classref/kdeui/KIconViewItem.html150
-rw-r--r--python/pykde/doc/classref/kdeui/KIconViewSearchLine.html131
-rw-r--r--python/pykde/doc/classref/kdeui/KInputDialog.html217
-rw-r--r--python/pykde/doc/classref/kdeui/KIntNumInput.html190
-rw-r--r--python/pykde/doc/classref/kdeui/KIntSpinBox.html84
-rw-r--r--python/pykde/doc/classref/kdeui/KIntValidator.html93
-rw-r--r--python/pykde/doc/classref/kdeui/KJanusWidget.html288
-rw-r--r--python/pykde/doc/classref/kdeui/KKeyButton.html86
-rw-r--r--python/pykde/doc/classref/kdeui/KKeyChooser.html280
-rw-r--r--python/pykde/doc/classref/kdeui/KKeyDialog.html170
-rw-r--r--python/pykde/doc/classref/kdeui/KLanguageButton.html173
-rw-r--r--python/pykde/doc/classref/kdeui/KLed.html162
-rw-r--r--python/pykde/doc/classref/kdeui/KLineEdit.html329
-rw-r--r--python/pykde/doc/classref/kdeui/KLineEditDlg.html85
-rw-r--r--python/pykde/doc/classref/kdeui/KListAction.html221
-rw-r--r--python/pykde/doc/classref/kdeui/KListBox.html124
-rw-r--r--python/pykde/doc/classref/kdeui/KListView.html712
-rw-r--r--python/pykde/doc/classref/kdeui/KListViewItem.html162
-rw-r--r--python/pykde/doc/classref/kdeui/KListViewSearchLine.html132
-rw-r--r--python/pykde/doc/classref/kdeui/KListViewSearchLineWidget.html65
-rw-r--r--python/pykde/doc/classref/kdeui/KMacroCommand.html59
-rw-r--r--python/pykde/doc/classref/kdeui/KMainWindow.html421
-rw-r--r--python/pykde/doc/classref/kdeui/KMainWindowInterface.html171
-rw-r--r--python/pykde/doc/classref/kdeui/KMenuBar.html158
-rw-r--r--python/pykde/doc/classref/kdeui/KMessageBox.html677
-rw-r--r--python/pykde/doc/classref/kdeui/KMimeTypeValidator.html60
-rw-r--r--python/pykde/doc/classref/kdeui/KNamedCommand.html56
-rw-r--r--python/pykde/doc/classref/kdeui/KNumInput.html93
-rw-r--r--python/pykde/doc/classref/kdeui/KPaletteTable.html114
-rw-r--r--python/pykde/doc/classref/kdeui/KPanelAppMenu.html113
-rw-r--r--python/pykde/doc/classref/kdeui/KPanelApplet.html197
-rw-r--r--python/pykde/doc/classref/kdeui/KPanelExtension.html181
-rw-r--r--python/pykde/doc/classref/kdeui/KPanelMenu.html113
-rw-r--r--python/pykde/doc/classref/kdeui/KPassivePopup.html309
-rw-r--r--python/pykde/doc/classref/kdeui/KPasswordDialog.html194
-rw-r--r--python/pykde/doc/classref/kdeui/KPasswordEdit.html122
-rw-r--r--python/pykde/doc/classref/kdeui/KPasteTextAction.html83
-rw-r--r--python/pykde/doc/classref/kdeui/KPixmapIO.html105
-rw-r--r--python/pykde/doc/classref/kdeui/KPixmapRegionSelectorDialog.html94
-rw-r--r--python/pykde/doc/classref/kdeui/KPixmapRegionSelectorWidget.html122
-rw-r--r--python/pykde/doc/classref/kdeui/KPopupFrame.html115
-rw-r--r--python/pykde/doc/classref/kdeui/KPopupMenu.html244
-rw-r--r--python/pykde/doc/classref/kdeui/KPopupTitle.html108
-rw-r--r--python/pykde/doc/classref/kdeui/KProgress.html127
-rw-r--r--python/pykde/doc/classref/kdeui/KProgressDialog.html133
-rw-r--r--python/pykde/doc/classref/kdeui/KPushButton.html142
-rw-r--r--python/pykde/doc/classref/kdeui/KRadioAction.html199
-rw-r--r--python/pykde/doc/classref/kdeui/KRecentFilesAction.html380
-rw-r--r--python/pykde/doc/classref/kdeui/KRestrictedLine.html70
-rw-r--r--python/pykde/doc/classref/kdeui/KRootPermsIcon.html54
-rw-r--r--python/pykde/doc/classref/kdeui/KRootPixmap.html132
-rw-r--r--python/pykde/doc/classref/kdeui/KRuler.html311
-rw-r--r--python/pykde/doc/classref/kdeui/KScrollView.html77
-rw-r--r--python/pykde/doc/classref/kdeui/KSelectAction.html536
-rw-r--r--python/pykde/doc/classref/kdeui/KSelector.html146
-rw-r--r--python/pykde/doc/classref/kdeui/KSeparator.html76
-rw-r--r--python/pykde/doc/classref/kdeui/KSharedPixmap.html82
-rw-r--r--python/pykde/doc/classref/kdeui/KShortcutDialog.html93
-rw-r--r--python/pykde/doc/classref/kdeui/KSplashScreen.html49
-rw-r--r--python/pykde/doc/classref/kdeui/KSqueezedTextLabel.html85
-rw-r--r--python/pykde/doc/classref/kdeui/KStatusBar.html114
-rw-r--r--python/pykde/doc/classref/kdeui/KStatusBarLabel.html74
-rw-r--r--python/pykde/doc/classref/kdeui/KStdAction.html579
-rw-r--r--python/pykde/doc/classref/kdeui/KStdGuiItem.html213
-rw-r--r--python/pykde/doc/classref/kdeui/KStringListValidator.html90
-rw-r--r--python/pykde/doc/classref/kdeui/KSystemTray.html129
-rw-r--r--python/pykde/doc/classref/kdeui/KTabBar.html268
-rw-r--r--python/pykde/doc/classref/kdeui/KTabCtl.html128
-rw-r--r--python/pykde/doc/classref/kdeui/KTabWidget.html360
-rw-r--r--python/pykde/doc/classref/kdeui/KTextBrowser.html102
-rw-r--r--python/pykde/doc/classref/kdeui/KTextEdit.html139
-rw-r--r--python/pykde/doc/classref/kdeui/KTimeWidget.html76
-rw-r--r--python/pykde/doc/classref/kdeui/KTimezoneWidget.html70
-rw-r--r--python/pykde/doc/classref/kdeui/KTipDatabase.html63
-rw-r--r--python/pykde/doc/classref/kdeui/KTipDialog.html100
-rw-r--r--python/pykde/doc/classref/kdeui/KToggleAction.html298
-rw-r--r--python/pykde/doc/classref/kdeui/KToggleFullScreenAction.html74
-rw-r--r--python/pykde/doc/classref/kdeui/KToggleToolBarAction.html127
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBar.html797
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBarButton.html325
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBarLabelAction.html108
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBarPopupAction.html177
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBarRadioGroup.html66
-rw-r--r--python/pykde/doc/classref/kdeui/KToolBarSeparator.html81
-rw-r--r--python/pykde/doc/classref/kdeui/KURLLabel.html263
-rw-r--r--python/pykde/doc/classref/kdeui/KValueSelector.html95
-rw-r--r--python/pykde/doc/classref/kdeui/KWidgetAction.html133
-rw-r--r--python/pykde/doc/classref/kdeui/KWindowInfo.html144
-rw-r--r--python/pykde/doc/classref/kdeui/KWindowListMenu.html67
-rw-r--r--python/pykde/doc/classref/kdeui/KWizard.html50
-rw-r--r--python/pykde/doc/classref/kdeui/KWordWrap.html108
-rw-r--r--python/pykde/doc/classref/kdeui/KWritePermsIcon.html65
-rw-r--r--python/pykde/doc/classref/kdeui/KXMLGUIBuilder.html107
-rw-r--r--python/pykde/doc/classref/kdeui/KXMLGUIClient.StateChange.html44
-rw-r--r--python/pykde/doc/classref/kdeui/KXMLGUIClient.html231
-rw-r--r--python/pykde/doc/classref/kdeui/KXMLGUIFactory.html188
-rw-r--r--python/pykde/doc/classref/kdeui/KXYSelector.html141
-rw-r--r--python/pykde/doc/classref/kdeui/QXEmbed.html196
-rw-r--r--python/pykde/doc/classref/kdeui/index.html213
-rw-r--r--python/pykde/doc/classref/kdeui/kdeui-globals.html36
-rw-r--r--python/pykde/doc/classref/kfile/KAppTreeListItem.html101
-rw-r--r--python/pykde/doc/classref/kfile/KApplicationPropsPlugin.html63
-rw-r--r--python/pykde/doc/classref/kfile/KApplicationTree.html101
-rw-r--r--python/pykde/doc/classref/kfile/KBindingPropsPlugin.html57
-rw-r--r--python/pykde/doc/classref/kfile/KCombiView.html202
-rw-r--r--python/pykde/doc/classref/kfile/KCustomMenuEditor.html82
-rw-r--r--python/pykde/doc/classref/kfile/KDesktopPropsPlugin.html80
-rw-r--r--python/pykde/doc/classref/kfile/KDevicePropsPlugin.html57
-rw-r--r--python/pykde/doc/classref/kfile/KDirOperator.html520
-rw-r--r--python/pykde/doc/classref/kfile/KDirSelectDialog.html89
-rw-r--r--python/pykde/doc/classref/kfile/KDirSize.html128
-rw-r--r--python/pykde/doc/classref/kfile/KDiskFreeSp.html81
-rw-r--r--python/pykde/doc/classref/kfile/KEncodingFileDialog.Result.html45
-rw-r--r--python/pykde/doc/classref/kfile/KEncodingFileDialog.html139
-rw-r--r--python/pykde/doc/classref/kfile/KExecPropsPlugin.html60
-rw-r--r--python/pykde/doc/classref/kfile/KFile.html108
-rw-r--r--python/pykde/doc/classref/kfile/KFileDetailView.html274
-rw-r--r--python/pykde/doc/classref/kfile/KFileDialog.html543
-rw-r--r--python/pykde/doc/classref/kfile/KFileFilterCombo.html93
-rw-r--r--python/pykde/doc/classref/kfile/KFileIconView.html306
-rw-r--r--python/pykde/doc/classref/kfile/KFileIconViewItem.html61
-rw-r--r--python/pykde/doc/classref/kfile/KFileListViewItem.html91
-rw-r--r--python/pykde/doc/classref/kfile/KFileOpenWithHandler.html50
-rw-r--r--python/pykde/doc/classref/kfile/KFilePermissionsPropsPlugin.html61
-rw-r--r--python/pykde/doc/classref/kfile/KFilePreview.html206
-rw-r--r--python/pykde/doc/classref/kfile/KFilePropsPlugin.html110
-rw-r--r--python/pykde/doc/classref/kfile/KFileSharePropsPlugin.html72
-rw-r--r--python/pykde/doc/classref/kfile/KFileTreeBranch.html157
-rw-r--r--python/pykde/doc/classref/kfile/KFileTreeView.html265
-rw-r--r--python/pykde/doc/classref/kfile/KFileTreeViewItem.html81
-rw-r--r--python/pykde/doc/classref/kfile/KFileTreeViewToolTip.html53
-rw-r--r--python/pykde/doc/classref/kfile/KFileView.html301
-rw-r--r--python/pykde/doc/classref/kfile/KFileViewSignaler.html115
-rw-r--r--python/pykde/doc/classref/kfile/KIconButton.html97
-rw-r--r--python/pykde/doc/classref/kfile/KIconCanvas.html78
-rw-r--r--python/pykde/doc/classref/kfile/KIconDialog.html143
-rw-r--r--python/pykde/doc/classref/kfile/KImageFilePreview.html96
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.Application.html75
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.ApplicationList.html39
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.Event.html64
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.KNotifyWidget.html150
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.ListViewItem.html62
-rw-r--r--python/pykde/doc/classref/kfile/KNotify.html41
-rw-r--r--python/pykde/doc/classref/kfile/KNotifyDialog.html89
-rw-r--r--python/pykde/doc/classref/kfile/KOpenWithDlg.html141
-rw-r--r--python/pykde/doc/classref/kfile/KPreviewWidgetBase.html70
-rw-r--r--python/pykde/doc/classref/kfile/KPropertiesDialog.html223
-rw-r--r--python/pykde/doc/classref/kfile/KPropsDlgPlugin.html72
-rw-r--r--python/pykde/doc/classref/kfile/KRecentDirs.html62
-rw-r--r--python/pykde/doc/classref/kfile/KRecentDocument.html80
-rw-r--r--python/pykde/doc/classref/kfile/KURLBar.html211
-rw-r--r--python/pykde/doc/classref/kfile/KURLBarItem.html141
-rw-r--r--python/pykde/doc/classref/kfile/KURLBarItemDialog.html84
-rw-r--r--python/pykde/doc/classref/kfile/KURLBarListBox.html96
-rw-r--r--python/pykde/doc/classref/kfile/KURLComboBox.html148
-rw-r--r--python/pykde/doc/classref/kfile/KURLComboRequester.html49
-rw-r--r--python/pykde/doc/classref/kfile/KURLPropsPlugin.html57
-rw-r--r--python/pykde/doc/classref/kfile/KURLRequester.html171
-rw-r--r--python/pykde/doc/classref/kfile/KURLRequesterDlg.html78
-rw-r--r--python/pykde/doc/classref/kfile/index.html91
-rw-r--r--python/pykde/doc/classref/khtml/DOM.AbstractView.html69
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Attr.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CDATASection.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSCharsetRule.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSException.html60
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSFontFaceRule.html62
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSImportRule.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSMediaRule.html78
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSPageRule.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSPrimitiveValue.html98
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSRule.html89
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSRuleList.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSStyleDeclaration.html112
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSStyleRule.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSStyleSheet.html78
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSUnknownRule.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSValue.html81
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CSSValueList.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CharacterData.html106
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Comment.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Counter.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.CustomNodeFilter.html56
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DOMException.html60
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DOMImplementation.html101
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DOMString.html158
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Document.html292
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DocumentFragment.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DocumentStyle.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DocumentType.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.DomShared.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Element.html220
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Entity.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.EntityReference.html59
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Event.html101
-rw-r--r--python/pykde/doc/classref/khtml/DOM.EventException.html60
-rw-r--r--python/pykde/doc/classref/khtml/DOM.EventListener.html53
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLAnchorElement.html173
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLAppletElement.html180
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLAreaElement.html131
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLBRElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLBaseElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLBaseFontElement.html97
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLBlockquoteElement.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLBodyElement.html113
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLButtonElement.html118
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLCollection.html89
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLDListElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLDirectoryElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLDivElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLDocument.html156
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLElement.html150
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLFieldSetElement.html62
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLFontElement.html86
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLFormElement.html125
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLFrameElement.html134
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLFrameSetElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLHRElement.html95
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLHeadElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLHeadingElement.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLHtmlElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLIFrameElement.html152
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLImageElement.html186
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLInputElement.html279
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLIsIndexElement.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLLIElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLLabelElement.html81
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLLayerElement.html107
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLLegendElement.html80
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLLinkElement.html143
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLMapElement.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLMenuElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLMetaElement.html95
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLModElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLOListElement.html86
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLObjectElement.html240
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLOptGroupElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLOptionElement.html119
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLParagraphElement.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLParamElement.html95
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLPreElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLQuoteElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLScriptElement.html122
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLSelectElement.html153
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLStyleElement.html89
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableCaptionElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableCellElement.html194
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableColElement.html113
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableElement.html203
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableRowElement.html143
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTableSectionElement.html110
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTextAreaElement.html189
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLTitleElement.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.HTMLUListElement.html77
-rw-r--r--python/pykde/doc/classref/khtml/DOM.LinkStyle.html56
-rw-r--r--python/pykde/doc/classref/khtml/DOM.MediaList.html89
-rw-r--r--python/pykde/doc/classref/khtml/DOM.MouseEvent.html109
-rw-r--r--python/pykde/doc/classref/khtml/DOM.MutationEvent.html99
-rw-r--r--python/pykde/doc/classref/khtml/DOM.NamedNodeMap.html106
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Node.html221
-rw-r--r--python/pykde/doc/classref/khtml/DOM.NodeFilter.html88
-rw-r--r--python/pykde/doc/classref/khtml/DOM.NodeIterator.html80
-rw-r--r--python/pykde/doc/classref/khtml/DOM.NodeList.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Notation.html65
-rw-r--r--python/pykde/doc/classref/khtml/DOM.ProcessingInstruction.html74
-rw-r--r--python/pykde/doc/classref/khtml/DOM.RGBColor.html80
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Range.html204
-rw-r--r--python/pykde/doc/classref/khtml/DOM.RangeException.html60
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Rect.html71
-rw-r--r--python/pykde/doc/classref/khtml/DOM.StyleSheet.html89
-rw-r--r--python/pykde/doc/classref/khtml/DOM.StyleSheetList.html68
-rw-r--r--python/pykde/doc/classref/khtml/DOM.Text.html65
-rw-r--r--python/pykde/doc/classref/khtml/DOM.TextEvent.html113
-rw-r--r--python/pykde/doc/classref/khtml/DOM.TreeWalker.html109
-rw-r--r--python/pykde/doc/classref/khtml/DOM.UIEvent.html103
-rw-r--r--python/pykde/doc/classref/khtml/DOM.html57
-rw-r--r--python/pykde/doc/classref/khtml/KHTMLPart.html807
-rw-r--r--python/pykde/doc/classref/khtml/KHTMLSettings.html318
-rw-r--r--python/pykde/doc/classref/khtml/KHTMLView.html287
-rw-r--r--python/pykde/doc/classref/khtml/index.html153
-rw-r--r--python/pykde/doc/classref/khtml/khtml-globals.html28
-rw-r--r--python/pykde/doc/classref/kio/KACL.html209
-rw-r--r--python/pykde/doc/classref/kio/KAr.html104
-rw-r--r--python/pykde/doc/classref/kio/KArchive.html288
-rw-r--r--python/pykde/doc/classref/kio/KArchiveDirectory.html79
-rw-r--r--python/pykde/doc/classref/kio/KArchiveEntry.html83
-rw-r--r--python/pykde/doc/classref/kio/KArchiveFile.html84
-rw-r--r--python/pykde/doc/classref/kio/KAutoMount.html67
-rw-r--r--python/pykde/doc/classref/kio/KAutoUnmount.html63
-rw-r--r--python/pykde/doc/classref/kio/KDCOPServiceStarter.html78
-rw-r--r--python/pykde/doc/classref/kio/KDEDesktopMimeType.Service.html56
-rw-r--r--python/pykde/doc/classref/kio/KDEDesktopMimeType.html196
-rw-r--r--python/pykde/doc/classref/kio/KDataTool.html67
-rw-r--r--python/pykde/doc/classref/kio/KDataToolAction.html70
-rw-r--r--python/pykde/doc/classref/kio/KDataToolInfo.html106
-rw-r--r--python/pykde/doc/classref/kio/KDirLister.html356
-rw-r--r--python/pykde/doc/classref/kio/KDirNotify.html93
-rw-r--r--python/pykde/doc/classref/kio/KDirWatch.html168
-rw-r--r--python/pykde/doc/classref/kio/KEMailSettings.html88
-rw-r--r--python/pykde/doc/classref/kio/KExecMimeType.html54
-rw-r--r--python/pykde/doc/classref/kio/KFileFilter.html48
-rw-r--r--python/pykde/doc/classref/kio/KFileItem.html326
-rw-r--r--python/pykde/doc/classref/kio/KFileMetaInfo.html197
-rw-r--r--python/pykde/doc/classref/kio/KFileMetaInfoGroup.html153
-rw-r--r--python/pykde/doc/classref/kio/KFileMetaInfoItem.html122
-rw-r--r--python/pykde/doc/classref/kio/KFileMetaInfoProvider.html95
-rw-r--r--python/pykde/doc/classref/kio/KFileMimeTypeInfo.GroupInfo.html72
-rw-r--r--python/pykde/doc/classref/kio/KFileMimeTypeInfo.ItemInfo.html87
-rw-r--r--python/pykde/doc/classref/kio/KFileMimeTypeInfo.html104
-rw-r--r--python/pykde/doc/classref/kio/KFilePlugin.html161
-rw-r--r--python/pykde/doc/classref/kio/KFileShare.html118
-rw-r--r--python/pykde/doc/classref/kio/KFileSharePrivate.html62
-rw-r--r--python/pykde/doc/classref/kio/KFilterBase.html141
-rw-r--r--python/pykde/doc/classref/kio/KFilterDev.html149
-rw-r--r--python/pykde/doc/classref/kio/KFolderType.html82
-rw-r--r--python/pykde/doc/classref/kio/KIO.AuthInfo.html74
-rw-r--r--python/pykde/doc/classref/kio/KIO.ChmodJob.html72
-rw-r--r--python/pykde/doc/classref/kio/KIO.Connection.html105
-rw-r--r--python/pykde/doc/classref/kio/KIO.CopyInfo.html49
-rw-r--r--python/pykde/doc/classref/kio/KIO.CopyJob.html276
-rw-r--r--python/pykde/doc/classref/kio/KIO.DavJob.html66
-rw-r--r--python/pykde/doc/classref/kio/KIO.DefaultProgress.html223
-rw-r--r--python/pykde/doc/classref/kio/KIO.DeleteJob.html125
-rw-r--r--python/pykde/doc/classref/kio/KIO.DirectCopyJob.html66
-rw-r--r--python/pykde/doc/classref/kio/KIO.FileCopyJob.html152
-rw-r--r--python/pykde/doc/classref/kio/KIO.ForwardingSlaveBase.html166
-rw-r--r--python/pykde/doc/classref/kio/KIO.Job.html307
-rw-r--r--python/pykde/doc/classref/kio/KIO.ListJob.html126
-rw-r--r--python/pykde/doc/classref/kio/KIO.MetaInfoJob.html91
-rw-r--r--python/pykde/doc/classref/kio/KIO.MimetypeJob.html62
-rw-r--r--python/pykde/doc/classref/kio/KIO.MkdirJob.html94
-rw-r--r--python/pykde/doc/classref/kio/KIO.MultiGetJob.html103
-rw-r--r--python/pykde/doc/classref/kio/KIO.NetAccess.html323
-rw-r--r--python/pykde/doc/classref/kio/KIO.NetRC.AutoLogin.html47
-rw-r--r--python/pykde/doc/classref/kio/KIO.NetRC.html90
-rw-r--r--python/pykde/doc/classref/kio/KIO.PasswordDialog.html120
-rw-r--r--python/pykde/doc/classref/kio/KIO.PreviewJob.html114
-rw-r--r--python/pykde/doc/classref/kio/KIO.ProgressBase.html201
-rw-r--r--python/pykde/doc/classref/kio/KIO.Scheduler.html267
-rw-r--r--python/pykde/doc/classref/kio/KIO.SessionData.html69
-rw-r--r--python/pykde/doc/classref/kio/KIO.SimpleJob.html148
-rw-r--r--python/pykde/doc/classref/kio/KIO.Slave.html200
-rw-r--r--python/pykde/doc/classref/kio/KIO.SlaveBase.html631
-rw-r--r--python/pykde/doc/classref/kio/KIO.SlaveConfig.html90
-rw-r--r--python/pykde/doc/classref/kio/KIO.SlaveInterface.html284
-rw-r--r--python/pykde/doc/classref/kio/KIO.StatJob.html109
-rw-r--r--python/pykde/doc/classref/kio/KIO.StatusbarProgress.html88
-rw-r--r--python/pykde/doc/classref/kio/KIO.StoredTransferJob.html63
-rw-r--r--python/pykde/doc/classref/kio/KIO.TCPSlaveBase.html230
-rw-r--r--python/pykde/doc/classref/kio/KIO.Task.html44
-rw-r--r--python/pykde/doc/classref/kio/KIO.TransferJob.html198
-rw-r--r--python/pykde/doc/classref/kio/KIO.UDSAtom.html45
-rw-r--r--python/pykde/doc/classref/kio/KIO.html645
-rw-r--r--python/pykde/doc/classref/kio/KImageIO.html120
-rw-r--r--python/pykde/doc/classref/kio/KMimeMagic.html96
-rw-r--r--python/pykde/doc/classref/kio/KMimeMagicResult.html68
-rw-r--r--python/pykde/doc/classref/kio/KMimeType.Format.html48
-rw-r--r--python/pykde/doc/classref/kio/KMimeType.html290
-rw-r--r--python/pykde/doc/classref/kio/KMimeTypeChooser.html69
-rw-r--r--python/pykde/doc/classref/kio/KMimeTypeChooserDialog.html71
-rw-r--r--python/pykde/doc/classref/kio/KNFSShare.html69
-rw-r--r--python/pykde/doc/classref/kio/KOCRDialog.html73
-rw-r--r--python/pykde/doc/classref/kio/KOCRDialogFactory.html75
-rw-r--r--python/pykde/doc/classref/kio/KOpenWithHandler.html48
-rw-r--r--python/pykde/doc/classref/kio/KProcessRunner.html87
-rw-r--r--python/pykde/doc/classref/kio/KProtocolInfo.ExtraField.html58
-rw-r--r--python/pykde/doc/classref/kio/KProtocolInfo.html466
-rw-r--r--python/pykde/doc/classref/kio/KProtocolManager.html189
-rw-r--r--python/pykde/doc/classref/kio/KRemoteEncoding.html114
-rw-r--r--python/pykde/doc/classref/kio/KRun.html360
-rw-r--r--python/pykde/doc/classref/kio/KSambaShare.html69
-rw-r--r--python/pykde/doc/classref/kio/KScanDialog.html90
-rw-r--r--python/pykde/doc/classref/kio/KScanDialogFactory.html75
-rw-r--r--python/pykde/doc/classref/kio/KService.html324
-rw-r--r--python/pykde/doc/classref/kio/KServiceGroup.html240
-rw-r--r--python/pykde/doc/classref/kio/KServiceOffer.html79
-rw-r--r--python/pykde/doc/classref/kio/KServiceSeparator.html67
-rw-r--r--python/pykde/doc/classref/kio/KServiceType.html169
-rw-r--r--python/pykde/doc/classref/kio/KServiceTypeProfile.html111
-rw-r--r--python/pykde/doc/classref/kio/KShellCompletion.html65
-rw-r--r--python/pykde/doc/classref/kio/KShred.html91
-rw-r--r--python/pykde/doc/classref/kio/KSimpleFileFilter.html104
-rw-r--r--python/pykde/doc/classref/kio/KSycoca.html172
-rw-r--r--python/pykde/doc/classref/kio/KSycocaDict.html96
-rw-r--r--python/pykde/doc/classref/kio/KSycocaEntry.html111
-rw-r--r--python/pykde/doc/classref/kio/KSycocaFactory.html104
-rw-r--r--python/pykde/doc/classref/kio/KTar.html177
-rw-r--r--python/pykde/doc/classref/kio/KTrader.html65
-rw-r--r--python/pykde/doc/classref/kio/KURIFilter.html93
-rw-r--r--python/pykde/doc/classref/kio/KURIFilterData.html137
-rw-r--r--python/pykde/doc/classref/kio/KURIFilterPlugin.html100
-rw-r--r--python/pykde/doc/classref/kio/KURLCompletion.html152
-rw-r--r--python/pykde/doc/classref/kio/KURLPixmapProvider.html48
-rw-r--r--python/pykde/doc/classref/kio/KZip.html228
-rw-r--r--python/pykde/doc/classref/kio/KZipFileEntry.html108
-rw-r--r--python/pykde/doc/classref/kio/Observer.html289
-rw-r--r--python/pykde/doc/classref/kio/RenameDlgPlugin.html65
-rw-r--r--python/pykde/doc/classref/kio/ThumbCreator.html57
-rw-r--r--python/pykde/doc/classref/kio/index.html148
-rw-r--r--python/pykde/doc/classref/kio/kio-globals.html53
-rw-r--r--python/pykde/doc/classref/kmdi/KMdi.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildArea.html214
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrm.html254
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmCaption.html106
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmDragBeginEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmDragEndEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmMoveEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmResizeBeginEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildFrmResizeEndEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiChildView.html385
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiMainFrm.html580
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiTaskBar.html101
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiTaskBarButton.html104
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiToolViewAccessor.html99
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiViewCloseEvent.html47
-rw-r--r--python/pykde/doc/classref/kmdi/KMdiWin32IconButton.html57
-rw-r--r--python/pykde/doc/classref/kmdi/index.html51
-rw-r--r--python/pykde/doc/classref/kmdi/kmdi-globals.html28
-rw-r--r--python/pykde/doc/classref/kparts/ExtTerminalInterface.html82
-rw-r--r--python/pykde/doc/classref/kparts/KParts.BrowserExtension.html322
-rw-r--r--python/pykde/doc/classref/kparts/KParts.BrowserHostExtension.html76
-rw-r--r--python/pykde/doc/classref/kparts/KParts.BrowserInterface.html55
-rw-r--r--python/pykde/doc/classref/kparts/KParts.BrowserRun.html197
-rw-r--r--python/pykde/doc/classref/kparts/KParts.DockMainWindow.html67
-rw-r--r--python/pykde/doc/classref/kparts/KParts.Event.html65
-rw-r--r--python/pykde/doc/classref/kparts/KParts.Factory.html91
-rw-r--r--python/pykde/doc/classref/kparts/KParts.GUIActivateEvent.html57
-rw-r--r--python/pykde/doc/classref/kparts/KParts.HistoryProvider.html82
-rw-r--r--python/pykde/doc/classref/kparts/KParts.LiveConnectExtension.html98
-rw-r--r--python/pykde/doc/classref/kparts/KParts.MainWindow.html88
-rw-r--r--python/pykde/doc/classref/kparts/KParts.OpenURLEvent.html65
-rw-r--r--python/pykde/doc/classref/kparts/KParts.Part.html130
-rw-r--r--python/pykde/doc/classref/kparts/KParts.PartActivateEvent.html65
-rw-r--r--python/pykde/doc/classref/kparts/KParts.PartBase.html78
-rw-r--r--python/pykde/doc/classref/kparts/KParts.PartManager.html204
-rw-r--r--python/pykde/doc/classref/kparts/KParts.PartSelectEvent.html65
-rw-r--r--python/pykde/doc/classref/kparts/KParts.Plugin.PluginInfo.html45
-rw-r--r--python/pykde/doc/classref/kparts/KParts.Plugin.html118
-rw-r--r--python/pykde/doc/classref/kparts/KParts.ReadOnlyPart.html131
-rw-r--r--python/pykde/doc/classref/kparts/KParts.ReadWritePart.html112
-rw-r--r--python/pykde/doc/classref/kparts/KParts.StatusBarExtension.html92
-rw-r--r--python/pykde/doc/classref/kparts/KParts.URLArgs.html134
-rw-r--r--python/pykde/doc/classref/kparts/KParts.WindowArgs.html90
-rw-r--r--python/pykde/doc/classref/kparts/KParts.html41
-rw-r--r--python/pykde/doc/classref/kparts/TerminalInterface.html63
-rw-r--r--python/pykde/doc/classref/kparts/index.html65
-rw-r--r--python/pykde/doc/classref/kparts/konsoleBrowserExtension.html53
-rw-r--r--python/pykde/doc/classref/kparts/konsoleFactory.html59
-rw-r--r--python/pykde/doc/classref/kparts/konsolePart.html237
-rw-r--r--python/pykde/doc/classref/kparts/kparts-globals.html110
-rw-r--r--python/pykde/doc/classref/kresources/KRES.ConfigDialog.html76
-rw-r--r--python/pykde/doc/classref/kresources/KRES.ConfigWidget.html79
-rw-r--r--python/pykde/doc/classref/kresources/KRES.Factory.html90
-rw-r--r--python/pykde/doc/classref/kresources/KRES.PluginFactoryBase.html67
-rw-r--r--python/pykde/doc/classref/kresources/KRES.Resource.html134
-rw-r--r--python/pykde/doc/classref/kresources/KRES.ResourcePageInfo.html50
-rw-r--r--python/pykde/doc/classref/kresources/KRES.SelectDialog.html70
-rw-r--r--python/pykde/doc/classref/kresources/KRES.html41
-rw-r--r--python/pykde/doc/classref/kresources/index.html42
-rw-r--r--python/pykde/doc/classref/kspell/KDictSpellingHighlighter.html168
-rw-r--r--python/pykde/doc/classref/kspell/KSpell.html408
-rw-r--r--python/pykde/doc/classref/kspell/KSpellConfig.html211
-rw-r--r--python/pykde/doc/classref/kspell/KSpellDlg.html158
-rw-r--r--python/pykde/doc/classref/kspell/KSpellingHighlighter.html86
-rw-r--r--python/pykde/doc/classref/kspell/KSyntaxHighlighter.html65
-rw-r--r--python/pykde/doc/classref/kspell/index.html41
-rw-r--r--python/pykde/doc/classref/kspell/kspell-globals.html38
-rw-r--r--python/pykde/doc/classref/kutils/KCModuleContainer.html74
-rw-r--r--python/pykde/doc/classref/kutils/KCModuleInfo.html219
-rw-r--r--python/pykde/doc/classref/kutils/KCModuleLoader.html135
-rw-r--r--python/pykde/doc/classref/kutils/KCModuleProxy.html182
-rw-r--r--python/pykde/doc/classref/kutils/KCMultiDialog.html135
-rw-r--r--python/pykde/doc/classref/kutils/KFind.html222
-rw-r--r--python/pykde/doc/classref/kutils/KFindDialog.html188
-rw-r--r--python/pykde/doc/classref/kutils/KMultiTabBar.html163
-rw-r--r--python/pykde/doc/classref/kutils/KMultiTabBarButton.html120
-rw-r--r--python/pykde/doc/classref/kutils/KMultiTabBarTab.html139
-rw-r--r--python/pykde/doc/classref/kutils/KPluginInfo.html213
-rw-r--r--python/pykde/doc/classref/kutils/KPluginSelector.html105
-rw-r--r--python/pykde/doc/classref/kutils/KReplace.html143
-rw-r--r--python/pykde/doc/classref/kutils/KReplaceDialog.html97
-rw-r--r--python/pykde/doc/classref/kutils/index.html47
-rw-r--r--python/pykde/doc/dcopext.html378
-rw-r--r--python/pykde/doc/examples.html125
-rw-r--r--python/pykde/doc/images/kdcop1.pngbin0 -> 28836 bytes
-rw-r--r--python/pykde/doc/images/kdcop2.pngbin0 -> 6264 bytes
-rw-r--r--python/pykde/doc/images/khtmlpart.pngbin0 -> 72815 bytes
-rw-r--r--python/pykde/doc/images/mimetype.pngbin0 -> 24439 bytes
-rw-r--r--python/pykde/doc/images/uisampler.pngbin0 -> 54104 bytes
-rw-r--r--python/pykde/doc/index.html139
-rw-r--r--python/pykde/doc/index1.html82
-rw-r--r--python/pykde/doc/install.html181
-rw-r--r--python/pykde/doc/kde.css8
-rw-r--r--python/pykde/doc/libpythonize.html224
-rw-r--r--python/pykde/doc/limits.html427
-rw-r--r--python/pykde/doc/signal.html290
-rw-r--r--python/pykde/doc/static.html183
-rw-r--r--python/pykde/doc/switches.html253
-rw-r--r--python/pykde/doc/trouble.html337
-rw-r--r--python/pykde/examples/README17
-rw-r--r--python/pykde/examples/aboutkde.pngbin0 -> 33856 bytes
-rw-r--r--python/pykde/examples/astron.pngbin0 -> 32329 bytes
-rw-r--r--python/pykde/examples/example_dcopexport.py136
-rw-r--r--python/pykde/examples/example_dcopext.py135
-rw-r--r--python/pykde/examples/kdeform1.ui335
-rw-r--r--python/pykde/examples/kdeform1.ui.h13
-rw-r--r--python/pykde/examples/kpartgui.dtd122
-rw-r--r--python/pykde/examples/kurldemo.py98
-rw-r--r--python/pykde/examples/menudemo.py291
-rw-r--r--python/pykde/examples/mimetype.py269
-rw-r--r--python/pykde/examples/pyKHTMLPart.py214
-rw-r--r--python/pykde/examples/pykde-sampler/HOWTO.samples60
-rw-r--r--python/pykde/examples/pykde-sampler/TODO12
-rw-r--r--python/pykde/examples/pykde-sampler/__init__.py1
-rw-r--r--python/pykde/examples/pykde-sampler/about.py57
-rw-r--r--python/pykde/examples/pykde-sampler/basic_widgets/__init__.py17
-rw-r--r--python/pykde/examples/pykde-sampler/basic_widgets/datepicker.py42
-rw-r--r--python/pykde/examples/pykde-sampler/basic_widgets/historycombo.py53
-rw-r--r--python/pykde/examples/pykde-sampler/contributors.txt4
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/__init__.py18
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/about/__init__.py16
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/about/aboutapp.py29
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/about/aboutkde.py28
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/bugreport.py34
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/color.py42
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/config.py59
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/edfind.py52
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/edreplace.py52
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/font.py53
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/input.py87
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/key.py29
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/msgbox.py141
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/passwd.py34
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/progress.py39
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/tip.py31
-rw-r--r--python/pykde/examples/pykde-sampler/dialogs/tips24
-rw-r--r--python/pykde/examples/pykde-sampler/gen_todo.py19
-rw-r--r--python/pykde/examples/pykde-sampler/icon_handling/__init__.py18
-rw-r--r--python/pykde/examples/pykde-sampler/icon_handling/misc.py31
-rw-r--r--python/pykde/examples/pykde-sampler/icon_handling/sizes.py30
-rw-r--r--python/pykde/examples/pykde-sampler/lib.py105
-rw-r--r--python/pykde/examples/pykde-sampler/misc/__init__.py16
-rw-r--r--python/pykde/examples/pykde-sampler/misc/gradientselect.py51
-rw-r--r--python/pykde/examples/pykde-sampler/misc/passivepop.py43
-rw-r--r--python/pykde/examples/pykde-sampler/misc/window_info.py35
-rw-r--r--python/pykde/examples/pykde-sampler/qt_widgets/CONTRIB537
-rw-r--r--python/pykde/examples/pykde-sampler/qt_widgets/__init__.py17
-rw-r--r--python/pykde/examples/pykde-sampler/qt_widgets/table.py42
-rw-r--r--python/pykde/examples/pykde-sampler/runner.py58
-rw-r--r--python/pykde/examples/pykde-sampler/sampler.py423
-rw-r--r--python/pykde/examples/pykde-sampler/sampler.rc13
-rw-r--r--python/pykde/examples/pykde-sampler/wizards/__init__.py2
-rw-r--r--python/pykde/examples/pykde-sampler/wizards/wiz.py2
-rw-r--r--python/pykde/examples/pykde-sampler/xwin/__init__.py18
-rw-r--r--python/pykde/examples/pytestimage.pngbin0 -> 36986 bytes
-rw-r--r--python/pykde/examples/qxembed_example.pngbin0 -> 22146 bytes
-rw-r--r--python/pykde/examples/qxembedexample.py79
-rw-r--r--python/pykde/examples/qxembedexample.ui150
-rw-r--r--python/pykde/examples/systray.py54
-rw-r--r--python/pykde/examples/uikmdi.py203
-rw-r--r--python/pykde/examples/uikmdi.rc11
-rw-r--r--python/pykde/examples/uimodules/uidialogs.py232
-rw-r--r--python/pykde/examples/uimodules/uimenus.py108
-rw-r--r--python/pykde/examples/uimodules/uimisc.py239
-rw-r--r--python/pykde/examples/uimodules/uiwidgets.py754
-rw-r--r--python/pykde/examples/uimodules/uixml.py45
-rw-r--r--python/pykde/examples/uiqxembed.py119
-rw-r--r--python/pykde/examples/uisampler.py227
-rw-r--r--python/pykde/examples/xmlmenudemo.py291
-rw-r--r--python/pykde/examples/xmlmenudemoui.rc49
-rw-r--r--python/pykde/extensions/dcopexport.py196
-rw-r--r--python/pykde/extensions/dcopext.py721
-rw-r--r--python/pykde/extra/kde300/kaccelaction.h202
-rw-r--r--python/pykde/extra/kde300/kaccelbase.h233
-rw-r--r--python/pykde/extra/kde300/kicontheme.h217
-rw-r--r--python/pykde/extra/kde300/kkeyserver_x11.h131
-rw-r--r--python/pykde/extra/kde300/konsole_part.h223
-rw-r--r--python/pykde/extra/kde300/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde300/ksycocafactory.h135
-rw-r--r--python/pykde/extra/kde300/ktoolbarbutton.h306
-rw-r--r--python/pykde/extra/kde300/kurifilter.h593
-rw-r--r--python/pykde/extra/kde301/kaccelaction.h202
-rw-r--r--python/pykde/extra/kde301/kaccelbase.h233
-rw-r--r--python/pykde/extra/kde301/kicontheme.h217
-rw-r--r--python/pykde/extra/kde301/kkeyserver_x11.h131
-rw-r--r--python/pykde/extra/kde301/konsole_part.h223
-rw-r--r--python/pykde/extra/kde301/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde301/ksycocafactory.h135
-rw-r--r--python/pykde/extra/kde301/ktoolbarbutton.h313
-rw-r--r--python/pykde/extra/kde301/kurifilter.h593
-rw-r--r--python/pykde/extra/kde303/kaccelaction.h202
-rw-r--r--python/pykde/extra/kde303/kaccelbase.h233
-rw-r--r--python/pykde/extra/kde303/kicontheme.h217
-rw-r--r--python/pykde/extra/kde303/kkeyserver_x11.h131
-rw-r--r--python/pykde/extra/kde303/konsole_part.h223
-rw-r--r--python/pykde/extra/kde303/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde303/ksycocafactory.h135
-rw-r--r--python/pykde/extra/kde303/ktoolbarbutton.h313
-rw-r--r--python/pykde/extra/kde303/kurifilter.h593
-rw-r--r--python/pykde/extra/kde310/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde310/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde310/kicontheme.h331
-rw-r--r--python/pykde/extra/kde310/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde310/konsole_part.h223
-rw-r--r--python/pykde/extra/kde310/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde310/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde310/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde310/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde310/kurifilter.h602
-rw-r--r--python/pykde/extra/kde311/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde311/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde311/kicontheme.h331
-rw-r--r--python/pykde/extra/kde311/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde311/konsole_part.h223
-rw-r--r--python/pykde/extra/kde311/kpanelmenu.h177
-rw-r--r--python/pykde/extra/kde311/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde311/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde311/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde311/kurifilter.h602
-rw-r--r--python/pykde/extra/kde312/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde312/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde312/kicontheme.h331
-rw-r--r--python/pykde/extra/kde312/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde312/konsole_part.h223
-rw-r--r--python/pykde/extra/kde312/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde312/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde312/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde312/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde312/kurifilter.h602
-rw-r--r--python/pykde/extra/kde313/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde313/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde313/kicontheme.h331
-rw-r--r--python/pykde/extra/kde313/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde313/konsole_part.h223
-rw-r--r--python/pykde/extra/kde313/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde313/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde313/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde313/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde313/kurifilter.h602
-rw-r--r--python/pykde/extra/kde314/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde314/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde314/kicontheme.h331
-rw-r--r--python/pykde/extra/kde314/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde314/konsole_part.h223
-rw-r--r--python/pykde/extra/kde314/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde314/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde314/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde314/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde314/kurifilter.h602
-rw-r--r--python/pykde/extra/kde315/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde315/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde315/kicontheme.h331
-rw-r--r--python/pykde/extra/kde315/kkeyserver_x11.h435
-rw-r--r--python/pykde/extra/kde315/konsole_part.h223
-rw-r--r--python/pykde/extra/kde315/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde315/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde315/ksycocafactory.h137
-rw-r--r--python/pykde/extra/kde315/ktoolbarbutton.h317
-rw-r--r--python/pykde/extra/kde315/kurifilter.h602
-rw-r--r--python/pykde/extra/kde320/configwidget.h58
-rw-r--r--python/pykde/extra/kde320/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde320/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde320/kicontheme.h334
-rw-r--r--python/pykde/extra/kde320/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde320/konsole_part.h223
-rw-r--r--python/pykde/extra/kde320/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde320/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde320/ksharedptr.h171
-rw-r--r--python/pykde/extra/kde320/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde320/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde320/kurifilter.h644
-rw-r--r--python/pykde/extra/kde320/selectdialog.h87
-rw-r--r--python/pykde/extra/kde321/configwidget.h58
-rw-r--r--python/pykde/extra/kde321/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde321/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde321/kicontheme.h334
-rw-r--r--python/pykde/extra/kde321/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde321/konsole_part.h223
-rw-r--r--python/pykde/extra/kde321/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde321/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde321/ksharedptr.h171
-rw-r--r--python/pykde/extra/kde321/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde321/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde321/kurifilter.h644
-rw-r--r--python/pykde/extra/kde321/selectdialog.h87
-rw-r--r--python/pykde/extra/kde322/configwidget.h58
-rw-r--r--python/pykde/extra/kde322/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde322/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde322/kicontheme.h334
-rw-r--r--python/pykde/extra/kde322/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde322/konsole_part.h223
-rw-r--r--python/pykde/extra/kde322/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde322/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde322/ksharedptr.h171
-rw-r--r--python/pykde/extra/kde322/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde322/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde322/kurifilter.h644
-rw-r--r--python/pykde/extra/kde322/selectdialog.h87
-rw-r--r--python/pykde/extra/kde323/configwidget.h58
-rw-r--r--python/pykde/extra/kde323/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde323/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde323/kicontheme.h334
-rw-r--r--python/pykde/extra/kde323/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde323/konsole_part.h223
-rw-r--r--python/pykde/extra/kde323/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde323/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde323/ksharedptr.h171
-rw-r--r--python/pykde/extra/kde323/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde323/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde323/kurifilter.h644
-rw-r--r--python/pykde/extra/kde323/selectdialog.h87
-rw-r--r--python/pykde/extra/kde330/configwidget.h58
-rw-r--r--python/pykde/extra/kde330/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde330/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde330/kicontheme.h336
-rw-r--r--python/pykde/extra/kde330/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde330/konsole_part.h229
-rw-r--r--python/pykde/extra/kde330/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde330/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde330/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde330/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde330/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde330/kurifilter.h644
-rw-r--r--python/pykde/extra/kde330/selectdialog.h87
-rw-r--r--python/pykde/extra/kde331/configwidget.h58
-rw-r--r--python/pykde/extra/kde331/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde331/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde331/kicontheme.h338
-rw-r--r--python/pykde/extra/kde331/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde331/konsole_part.h229
-rw-r--r--python/pykde/extra/kde331/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde331/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde331/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde331/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde331/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde331/kurifilter.h644
-rw-r--r--python/pykde/extra/kde331/selectdialog.h87
-rw-r--r--python/pykde/extra/kde332/configwidget.h58
-rw-r--r--python/pykde/extra/kde332/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde332/kaccelbase.h230
-rw-r--r--python/pykde/extra/kde332/kicontheme.h338
-rw-r--r--python/pykde/extra/kde332/kkeyserver_x11.h433
-rw-r--r--python/pykde/extra/kde332/konsole_part.h229
-rw-r--r--python/pykde/extra/kde332/kpanelmenu.h181
-rw-r--r--python/pykde/extra/kde332/krecentdirs.h68
-rw-r--r--python/pykde/extra/kde332/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde332/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde332/ktoolbarbutton.h315
-rw-r--r--python/pykde/extra/kde332/kurifilter.h644
-rw-r--r--python/pykde/extra/kde332/selectdialog.h87
-rw-r--r--python/pykde/extra/kde340/configwidget.h58
-rw-r--r--python/pykde/extra/kde340/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde340/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde340/kicontheme.h355
-rw-r--r--python/pykde/extra/kde340/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde340/kkeyserver_x11.h461
-rw-r--r--python/pykde/extra/kde340/konsole_part.h228
-rw-r--r--python/pykde/extra/kde340/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde340/krecentdirs.h70
-rw-r--r--python/pykde/extra/kde340/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde340/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde340/ktoolbarbutton.h329
-rw-r--r--python/pykde/extra/kde340/kurifilter.h647
-rw-r--r--python/pykde/extra/kde340/selectdialog.h87
-rw-r--r--python/pykde/extra/kde341/configwidget.h58
-rw-r--r--python/pykde/extra/kde341/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde341/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde341/kicontheme.h355
-rw-r--r--python/pykde/extra/kde341/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde341/kkeyserver_x11.h461
-rw-r--r--python/pykde/extra/kde341/konsole_part.h228
-rw-r--r--python/pykde/extra/kde341/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde341/krecentdirs.h70
-rw-r--r--python/pykde/extra/kde341/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde341/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde341/ktoolbarbutton.h329
-rw-r--r--python/pykde/extra/kde341/kurifilter.h647
-rw-r--r--python/pykde/extra/kde341/selectdialog.h87
-rw-r--r--python/pykde/extra/kde342/configwidget.h58
-rw-r--r--python/pykde/extra/kde342/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde342/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde342/kicontheme.h355
-rw-r--r--python/pykde/extra/kde342/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde342/kkeyserver_x11.h469
-rw-r--r--python/pykde/extra/kde342/konsole_part.h228
-rw-r--r--python/pykde/extra/kde342/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde342/krecentdirs.h70
-rw-r--r--python/pykde/extra/kde342/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde342/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde342/ktoolbarbutton.h329
-rw-r--r--python/pykde/extra/kde342/kurifilter.h647
-rw-r--r--python/pykde/extra/kde342/selectdialog.h87
-rw-r--r--python/pykde/extra/kde343/configwidget.h58
-rw-r--r--python/pykde/extra/kde343/kaccelaction.h564
-rw-r--r--python/pykde/extra/kde343/kaccelbase.h229
-rw-r--r--python/pykde/extra/kde343/kicontheme.h355
-rw-r--r--python/pykde/extra/kde343/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde343/kkeyserver_x11.h469
-rw-r--r--python/pykde/extra/kde343/konsole_part.h228
-rw-r--r--python/pykde/extra/kde343/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde343/krecentdirs.h70
-rw-r--r--python/pykde/extra/kde343/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde343/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde343/ktoolbarbutton.h329
-rw-r--r--python/pykde/extra/kde343/kurifilter.h647
-rw-r--r--python/pykde/extra/kde343/selectdialog.h87
-rw-r--r--python/pykde/extra/kde350/configwidget.h58
-rw-r--r--python/pykde/extra/kde350/kaccelaction.h576
-rw-r--r--python/pykde/extra/kde350/kaccelbase.h260
-rw-r--r--python/pykde/extra/kde350/kicontheme.h355
-rw-r--r--python/pykde/extra/kde350/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde350/kkeyserver_x11.h477
-rw-r--r--python/pykde/extra/kde350/konsole_part.h241
-rw-r--r--python/pykde/extra/kde350/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde350/krecentdirs.h70
-rw-r--r--python/pykde/extra/kde350/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde350/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde350/ktoolbarbutton.h330
-rw-r--r--python/pykde/extra/kde350/kurifilter.h647
-rw-r--r--python/pykde/extra/kde350/selectdialog.h87
-rw-r--r--python/pykde/extra/kde351/kaccelaction.h576
-rw-r--r--python/pykde/extra/kde351/kaccelbase.h260
-rw-r--r--python/pykde/extra/kde351/kicontheme.h355
-rw-r--r--python/pykde/extra/kde351/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde351/kkeyserver_x11.h477
-rw-r--r--python/pykde/extra/kde351/konsole_part.h241
-rw-r--r--python/pykde/extra/kde351/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde351/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde351/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde351/ktoolbarbutton.h330
-rw-r--r--python/pykde/extra/kde351/kurifilter.h647
-rw-r--r--python/pykde/extra/kde352/kaccelaction.h576
-rw-r--r--python/pykde/extra/kde352/kaccelbase.h260
-rw-r--r--python/pykde/extra/kde352/kicontheme.h355
-rw-r--r--python/pykde/extra/kde352/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde352/kkeyserver_x11.h477
-rw-r--r--python/pykde/extra/kde352/konsole_part.h241
-rw-r--r--python/pykde/extra/kde352/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde352/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde352/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde352/ktoolbarbutton.h330
-rw-r--r--python/pykde/extra/kde352/kurifilter.h647
-rw-r--r--python/pykde/extra/kde353/kaccelaction.h576
-rw-r--r--python/pykde/extra/kde353/kaccelbase.h260
-rw-r--r--python/pykde/extra/kde353/kicontheme.h355
-rw-r--r--python/pykde/extra/kde353/kkeyserver.h29
-rw-r--r--python/pykde/extra/kde353/kkeyserver_x11.h477
-rw-r--r--python/pykde/extra/kde353/konsole_part.h241
-rw-r--r--python/pykde/extra/kde353/kpanelmenu.h182
-rw-r--r--python/pykde/extra/kde353/ksharedptr.h175
-rw-r--r--python/pykde/extra/kde353/ksycocafactory.h143
-rw-r--r--python/pykde/extra/kde353/ktoolbarbutton.h330
-rw-r--r--python/pykde/extra/kde353/kurifilter.h647
-rw-r--r--python/pykde/importTest.py22
-rwxr-xr-xpython/pykde/postproc520
-rw-r--r--python/pykde/pykde350.prj495
-rw-r--r--python/pykde/pykde351.prj495
-rw-r--r--python/pykde/pykde352.prj495
-rw-r--r--python/pykde/pykdeconfig.py.in207
-rw-r--r--python/pykde/sip/dcop/dcopclient.sip175
-rw-r--r--python/pykde/sip/dcop/dcopmod.sip42
-rw-r--r--python/pykde/sip/dcop/dcopmod.sip.in43
-rw-r--r--python/pykde/sip/dcop/dcopobject.sip82
-rw-r--r--python/pykde/sip/dcop/dcopref.sip109
-rw-r--r--python/pykde/sip/dcop/dcopstub.sip68
-rw-r--r--python/pykde/sip/dcop/typedefs.sip108
-rw-r--r--python/pykde/sip/glossary.html40
-rw-r--r--python/pykde/sip/kabc/address.sip150
-rw-r--r--python/pykde/sip/kabc/addressbook.sip230
-rw-r--r--python/pykde/sip/kabc/addressee.sip470
-rw-r--r--python/pykde/sip/kabc/addresseedialog.sip75
-rw-r--r--python/pykde/sip/kabc/addresseelist.sip122
-rw-r--r--python/pykde/sip/kabc/addresslineedit.sip66
-rw-r--r--python/pykde/sip/kabc/agent.sip58
-rw-r--r--python/pykde/sip/kabc/distributionlist.sip177
-rw-r--r--python/pykde/sip/kabc/distributionlistdialog.sip74
-rw-r--r--python/pykde/sip/kabc/distributionlisteditor.sip47
-rw-r--r--python/pykde/sip/kabc/errorhandler.sip97
-rw-r--r--python/pykde/sip/kabc/field.sip162
-rw-r--r--python/pykde/sip/kabc/format.sip43
-rw-r--r--python/pykde/sip/kabc/formatfactory.sip74
-rw-r--r--python/pykde/sip/kabc/formatplugin.sip50
-rw-r--r--python/pykde/sip/kabc/geo.sip61
-rw-r--r--python/pykde/sip/kabc/kabc-kde310.diff17
-rw-r--r--python/pykde/sip/kabc/kabc-kde311.diff17
-rw-r--r--python/pykde/sip/kabc/kabc-kde312.diff17
-rw-r--r--python/pykde/sip/kabc/kabc-kde313.diff17
-rw-r--r--python/pykde/sip/kabc/kabc-kde314.diff17
-rw-r--r--python/pykde/sip/kabc/kabc-kde320.diff21
-rw-r--r--python/pykde/sip/kabc/kabc-kde322.diff21
-rw-r--r--python/pykde/sip/kabc/kabc-kde323.diff21
-rw-r--r--python/pykde/sip/kabc/kabc-kde330.diff24
-rw-r--r--python/pykde/sip/kabc/kabc-kde331.diff24
-rw-r--r--python/pykde/sip/kabc/kabc-kde332.diff24
-rw-r--r--python/pykde/sip/kabc/kabc-kde340.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde341.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde342.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde343.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde350.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde351.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde352.diff25
-rw-r--r--python/pykde/sip/kabc/kabc-kde353.diff25
-rw-r--r--python/pykde/sip/kabc/kabcmod.sip78
-rw-r--r--python/pykde/sip/kabc/kabcmod.sip.in55
-rw-r--r--python/pykde/sip/kabc/key.sip144
-rw-r--r--python/pykde/sip/kabc/ldapclient.sip245
-rw-r--r--python/pykde/sip/kabc/ldapconfigwidget.sip105
-rw-r--r--python/pykde/sip/kabc/ldapurl.sip85
-rw-r--r--python/pykde/sip/kabc/ldif.sip99
-rw-r--r--python/pykde/sip/kabc/ldifconverter.sip78
-rw-r--r--python/pykde/sip/kabc/lock.sip57
-rw-r--r--python/pykde/sip/kabc/locknull.sip49
-rw-r--r--python/pykde/sip/kabc/phonenumber.sip191
-rw-r--r--python/pykde/sip/kabc/picture.sip60
-rw-r--r--python/pykde/sip/kabc/plugin.sip52
-rw-r--r--python/pykde/sip/kabc/resource.sip160
-rw-r--r--python/pykde/sip/kabc/resourcefile.sip176
-rw-r--r--python/pykde/sip/kabc/resourceselectdialog.sip55
-rw-r--r--python/pykde/sip/kabc/secrecy.sip92
-rw-r--r--python/pykde/sip/kabc/sortmode.sip83
-rw-r--r--python/pykde/sip/kabc/sound.sip63
-rw-r--r--python/pykde/sip/kabc/stdaddressbook.sip111
-rw-r--r--python/pykde/sip/kabc/timezone.sip59
-rw-r--r--python/pykde/sip/kabc/vcardconverter.sip74
-rw-r--r--python/pykde/sip/kabc/vcardformat.sip44
-rw-r--r--python/pykde/sip/kabc/vcardformatplugin.sip51
-rw-r--r--python/pykde/sip/kdecore/bytearray.sip812
-rw-r--r--python/pykde/sip/kdecore/fixx11h.sip30
-rw-r--r--python/pykde/sip/kdecore/kaboutdata.sip301
-rw-r--r--python/pykde/sip/kdecore/kaccel.sip239
-rw-r--r--python/pykde/sip/kdecore/kaccelaction.sip121
-rw-r--r--python/pykde/sip/kdecore/kaccelbase.sip102
-rw-r--r--python/pykde/sip/kdecore/kallocator.sip48
-rw-r--r--python/pykde/sip/kdecore/kapplication.sip449
-rw-r--r--python/pykde/sip/kdecore/kasyncio.sip52
-rw-r--r--python/pykde/sip/kdecore/kaudioplayer.sip42
-rw-r--r--python/pykde/sip/kdecore/kbufferedio.sip73
-rw-r--r--python/pykde/sip/kdecore/kcalendarsystem.sip78
-rw-r--r--python/pykde/sip/kdecore/kcalendarsystemfactory.sip44
-rw-r--r--python/pykde/sip/kdecore/kcatalogue.sip64
-rw-r--r--python/pykde/sip/kdecore/kcharsets.sip62
-rw-r--r--python/pykde/sip/kdecore/kclipboard.sip52
-rw-r--r--python/pykde/sip/kdecore/kcmdlineargs.sip264
-rw-r--r--python/pykde/sip/kdecore/kcompletion.sip228
-rw-r--r--python/pykde/sip/kdecore/kconfig.sip234
-rw-r--r--python/pykde/sip/kdecore/kconfigbackend.sip93
-rw-r--r--python/pykde/sip/kdecore/kconfigbase.sip333
-rw-r--r--python/pykde/sip/kdecore/kconfigdata.sip176
-rw-r--r--python/pykde/sip/kdecore/kconfigdialogmanager.sip64
-rw-r--r--python/pykde/sip/kdecore/kconfigskeleton.sip1149
-rw-r--r--python/pykde/sip/kdecore/kcrash.sip51
-rw-r--r--python/pykde/sip/kdecore/kdcoppropertyproxy.sip44
-rw-r--r--python/pykde/sip/kdecore/kdebug.sip67
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde310.diff1
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde311.diff1
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde312.diff1
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde313.diff1
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde314.diff3
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde315.diff3
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde320.diff16
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde321.diff12
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde322.diff13
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde323.diff13
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde330.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde331.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde332.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde340.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde341.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde342.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde343.diff15
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde350.diff16
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde351.diff16
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde352.diff16
-rw-r--r--python/pykde/sip/kdecore/kdecore-kde353.diff16
-rw-r--r--python/pykde/sip/kdecore/kdecoremod.sip.in99
-rw-r--r--python/pykde/sip/kdecore/kdesktopfile.sip85
-rw-r--r--python/pykde/sip/kdecore/kdesktopwidget.sip45
-rw-r--r--python/pykde/sip/kdecore/kdestyle.sip108
-rw-r--r--python/pykde/sip/kdecore/kdeversion.sip45
-rw-r--r--python/pykde/sip/kdecore/kglobal.sip65
-rw-r--r--python/pykde/sip/kdecore/kglobalaccel.sip87
-rw-r--r--python/pykde/sip/kdecore/kglobalsettings.sip157
-rw-r--r--python/pykde/sip/kdecore/kiconeffect.sip102
-rw-r--r--python/pykde/sip/kdecore/kiconloader.sip92
-rw-r--r--python/pykde/sip/kdecore/kicontheme.sip249
-rw-r--r--python/pykde/sip/kdecore/kidna.sip40
-rw-r--r--python/pykde/sip/kdecore/kinstance.sip75
-rw-r--r--python/pykde/sip/kdecore/kipc.sip98
-rw-r--r--python/pykde/sip/kdecore/kkeynative.sip90
-rw-r--r--python/pykde/sip/kdecore/kkeyserver_x11.sip187
-rw-r--r--python/pykde/sip/kdecore/klibloader.sip103
-rw-r--r--python/pykde/sip/kdecore/klocale.sip238
-rw-r--r--python/pykde/sip/kdecore/klockfile.sip113
-rw-r--r--python/pykde/sip/kdecore/kmacroexpander.sip364
-rw-r--r--python/pykde/sip/kdecore/kmanagerselection.sip91
-rw-r--r--python/pykde/sip/kdecore/kmdcodec.sip156
-rw-r--r--python/pykde/sip/kdecore/kmimesourcefactory.sip42
-rw-r--r--python/pykde/sip/kdecore/kmountpoint.sip189
-rw-r--r--python/pykde/sip/kdecore/kmultipledrag.sip58
-rw-r--r--python/pykde/sip/kdecore/knotifyclient.sip139
-rw-r--r--python/pykde/sip/kdecore/kpalette.sip63
-rw-r--r--python/pykde/sip/kdecore/kpixmapprovider.sip41
-rw-r--r--python/pykde/sip/kdecore/kprocctrl.sip95
-rw-r--r--python/pykde/sip/kdecore/kprocess.sip272
-rw-r--r--python/pykde/sip/kdecore/kprocio.sip67
-rw-r--r--python/pykde/sip/kdecore/kpty.sip52
-rw-r--r--python/pykde/sip/kdecore/krandomsequence.sip45
-rw-r--r--python/pykde/sip/kdecore/kregexp.sip44
-rw-r--r--python/pykde/sip/kdecore/krfcdate.sip42
-rw-r--r--python/pykde/sip/kdecore/krootprop.sip52
-rw-r--r--python/pykde/sip/kdecore/ksavefile.sip52
-rw-r--r--python/pykde/sip/kdecore/ksharedptr.sip45
-rw-r--r--python/pykde/sip/kdecore/kshell.sip77
-rw-r--r--python/pykde/sip/kdecore/kshortcut.sip261
-rw-r--r--python/pykde/sip/kdecore/kshortcutlist.sip133
-rw-r--r--python/pykde/sip/kdecore/ksimpleconfig.sip50
-rw-r--r--python/pykde/sip/kdecore/ksock.sip97
-rw-r--r--python/pykde/sip/kdecore/kstartupinfo.sip280
-rw-r--r--python/pykde/sip/kdecore/kstaticdeleter.sip38
-rw-r--r--python/pykde/sip/kdecore/kstdaccel.sip441
-rw-r--r--python/pykde/sip/kdecore/kstddirs.sip64
-rw-r--r--python/pykde/sip/kdecore/kstringhandler.sip89
-rw-r--r--python/pykde/sip/kdecore/ktempdir.sip58
-rw-r--r--python/pykde/sip/kdecore/ktempfile.sip58
-rw-r--r--python/pykde/sip/kdecore/ktimezones.sip264
-rw-r--r--python/pykde/sip/kdecore/kuniqueapplication.sip68
-rw-r--r--python/pykde/sip/kdecore/kurl.sip405
-rw-r--r--python/pykde/sip/kdecore/kurldrag.sip76
-rw-r--r--python/pykde/sip/kdecore/kuser.sip74
-rw-r--r--python/pykde/sip/kdecore/kvmallocator.sip42
-rw-r--r--python/pykde/sip/kdecore/kwin.sip188
-rw-r--r--python/pykde/sip/kdecore/kwinmodule.sip159
-rw-r--r--python/pykde/sip/kdecore/kxmessages.sip55
-rw-r--r--python/pykde/sip/kdecore/netwm.sip649
-rw-r--r--python/pykde/sip/kdecore/netwm_def.sip535
-rw-r--r--python/pykde/sip/kdefx/kcpuinfo.sip52
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde320.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde321.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde322.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde323.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde330.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde331.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde332.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde340.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde341.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde342.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde343.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde350.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde351.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde352.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefx-kde353.diff1
-rw-r--r--python/pykde/sip/kdefx/kdefxmod.sip41
-rw-r--r--python/pykde/sip/kdefx/kdefxmod.sip.in41
-rw-r--r--python/pykde/sip/kdefx/kdrawutil.sip41
-rw-r--r--python/pykde/sip/kdefx/kimageeffect.sip205
-rw-r--r--python/pykde/sip/kdefx/kpixmap.sip65
-rw-r--r--python/pykde/sip/kdefx/kpixmapeffect.sip85
-rw-r--r--python/pykde/sip/kdefx/kpixmapsplitter.sip46
-rw-r--r--python/pykde/sip/kdefx/kstyle.sip126
-rw-r--r--python/pykde/sip/kdeprint/driver.sip338
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde310.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde311.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde312.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde313.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde314.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde315.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde320.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde321.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde322.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde323.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde330.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde331.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde332.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde340.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde341.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde342.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde343.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde350.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde351.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde352.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprint-kde353.diff2
-rw-r--r--python/pykde/sip/kdeprint/kdeprintmod.sip48
-rw-r--r--python/pykde/sip/kdeprint/kdeprintmod.sip.in47
-rw-r--r--python/pykde/sip/kdeprint/kmjob.sip113
-rw-r--r--python/pykde/sip/kdeprint/kmjobmanager.sip198
-rw-r--r--python/pykde/sip/kdeprint/kmmanager.sip221
-rw-r--r--python/pykde/sip/kdeprint/kmobject.sip42
-rw-r--r--python/pykde/sip/kdeprint/kmprinter.sip178
-rw-r--r--python/pykde/sip/kdeprint/kpreloadobject.sip43
-rw-r--r--python/pykde/sip/kdeprint/kprintaction.sip61
-rw-r--r--python/pykde/sip/kdeprint/kprintdialog.sip170
-rw-r--r--python/pykde/sip/kdeprint/kprintdialogpage.sip52
-rw-r--r--python/pykde/sip/kdeprint/kprinter.sip258
-rw-r--r--python/pykde/sip/kdeui/kaboutapplication.sip205
-rw-r--r--python/pykde/sip/kdeui/kaboutdialog.sip190
-rw-r--r--python/pykde/sip/kdeui/kaboutkde.sip38
-rw-r--r--python/pykde/sip/kdeui/kaccelmanager.sip43
-rw-r--r--python/pykde/sip/kdeui/kaccelmenu.sip53
-rw-r--r--python/pykde/sip/kdeui/kaction.sip759
-rw-r--r--python/pykde/sip/kdeui/kactionclasses.sip529
-rw-r--r--python/pykde/sip/kdeui/kactioncollection.sip125
-rw-r--r--python/pykde/sip/kdeui/kactionselector.sip106
-rw-r--r--python/pykde/sip/kdeui/kactionshortcutlist.sip106
-rw-r--r--python/pykde/sip/kdeui/kactivelabel.sip58
-rw-r--r--python/pykde/sip/kdeui/kalphapainter.sip41
-rw-r--r--python/pykde/sip/kdeui/kanimwidget.sip92
-rw-r--r--python/pykde/sip/kdeui/karrowbutton.sip55
-rw-r--r--python/pykde/sip/kdeui/kauthicon.sip101
-rw-r--r--python/pykde/sip/kdeui/kbugreport.sip54
-rw-r--r--python/pykde/sip/kdeui/kbuttonbox.sip59
-rw-r--r--python/pykde/sip/kdeui/kcharselect.sip130
-rw-r--r--python/pykde/sip/kdeui/kcmenumngr.sip43
-rw-r--r--python/pykde/sip/kdeui/kcmodule.sip183
-rw-r--r--python/pykde/sip/kdeui/kcolorbtn.sip54
-rw-r--r--python/pykde/sip/kdeui/kcolorcombo.sip51
-rw-r--r--python/pykde/sip/kdeui/kcolordialog.sip237
-rw-r--r--python/pykde/sip/kdeui/kcolordrag.sip52
-rw-r--r--python/pykde/sip/kdeui/kcombobox.sip130
-rw-r--r--python/pykde/sip/kdeui/kcommand.sip131
-rw-r--r--python/pykde/sip/kdeui/kcompletionbox.sip86
-rw-r--r--python/pykde/sip/kdeui/kconfigdialog.sip69
-rw-r--r--python/pykde/sip/kdeui/kcontainer.sip75
-rw-r--r--python/pykde/sip/kdeui/kcursor.sip57
-rw-r--r--python/pykde/sip/kdeui/kdatepicker.sip108
-rw-r--r--python/pykde/sip/kdeui/kdatepik.sip64
-rw-r--r--python/pykde/sip/kdeui/kdatetbl.sip303
-rw-r--r--python/pykde/sip/kdeui/kdatetimewidget.sip50
-rw-r--r--python/pykde/sip/kdeui/kdatewidget.sip58
-rw-r--r--python/pykde/sip/kdeui/kdbtn.sip61
-rw-r--r--python/pykde/sip/kdeui/kdcopactionproxy.sip48
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde310.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde311.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde312.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde313.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde314.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde315.diff4
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde320.diff13
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde321.diff13
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde322.diff13
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde323.diff14
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde330.diff16
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde331.diff16
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde332.diff16
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde340.diff21
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde341.diff21
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde342.diff21
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde343.diff21
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde350.diff23
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde351.diff23
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde352.diff23
-rw-r--r--python/pykde/sip/kdeui/kdeui-kde353.diff23
-rw-r--r--python/pykde/sip/kdeui/kdeuimod.sip.in123
-rw-r--r--python/pykde/sip/kdeui/kdialog.sip90
-rw-r--r--python/pykde/sip/kdeui/kdialogbase.sip283
-rw-r--r--python/pykde/sip/kdeui/kdocktabctl.sip186
-rw-r--r--python/pykde/sip/kdeui/kdockwidget.sip469
-rw-r--r--python/pykde/sip/kdeui/kdockwindow.sip38
-rw-r--r--python/pykde/sip/kdeui/kdualcolorbtn.sip73
-rw-r--r--python/pykde/sip/kdeui/kdualcolorbutton.sip74
-rw-r--r--python/pykde/sip/kdeui/keditcl.sip224
-rw-r--r--python/pykde/sip/kdeui/keditlistbox.sip206
-rw-r--r--python/pykde/sip/kdeui/kedittoolbar.sip156
-rw-r--r--python/pykde/sip/kdeui/kfontcombo.sip67
-rw-r--r--python/pykde/sip/kdeui/kfontdialog.sip184
-rw-r--r--python/pykde/sip/kdeui/kfontrequester.sip63
-rw-r--r--python/pykde/sip/kdeui/kguiitem.sip57
-rw-r--r--python/pykde/sip/kdeui/khelpmenu.sip63
-rw-r--r--python/pykde/sip/kdeui/kiconview.sip147
-rw-r--r--python/pykde/sip/kdeui/kiconviewsearchline.sip61
-rw-r--r--python/pykde/sip/kdeui/kinputdialog.sip66
-rw-r--r--python/pykde/sip/kdeui/kjanuswidget.sip110
-rw-r--r--python/pykde/sip/kdeui/kkeybutton.sip59
-rw-r--r--python/pykde/sip/kdeui/kkeydialog.sip262
-rw-r--r--python/pykde/sip/kdeui/klanguagebutton.sip60
-rw-r--r--python/pykde/sip/kdeui/kled.sip97
-rw-r--r--python/pykde/sip/kdeui/klineedit.sip146
-rw-r--r--python/pykde/sip/kdeui/klineeditdlg.sip53
-rw-r--r--python/pykde/sip/kdeui/klistbox.sip60
-rw-r--r--python/pykde/sip/kdeui/klistview.sip337
-rw-r--r--python/pykde/sip/kdeui/klistviewlineedit.sip51
-rw-r--r--python/pykde/sip/kdeui/klistviewsearchline.sip84
-rw-r--r--python/pykde/sip/kdeui/kmainwindow.sip274
-rw-r--r--python/pykde/sip/kdeui/kmainwindowiface.sip71
-rw-r--r--python/pykde/sip/kdeui/kmenubar.sip91
-rw-r--r--python/pykde/sip/kdeui/kmessagebox.sip260
-rw-r--r--python/pykde/sip/kdeui/knuminput.sip261
-rw-r--r--python/pykde/sip/kdeui/knumvalidator.sip89
-rw-r--r--python/pykde/sip/kdeui/kpanelapplet.sip140
-rw-r--r--python/pykde/sip/kdeui/kpanelappmenu.sip51
-rw-r--r--python/pykde/sip/kdeui/kpanelextension.sip159
-rw-r--r--python/pykde/sip/kdeui/kpanelmenu.sip65
-rw-r--r--python/pykde/sip/kdeui/kpassdlg.sip138
-rw-r--r--python/pykde/sip/kdeui/kpassivepopup.sip112
-rw-r--r--python/pykde/sip/kdeui/kpixmapio.sip53
-rw-r--r--python/pykde/sip/kdeui/kpixmapregionselectordialog.sip49
-rw-r--r--python/pykde/sip/kdeui/kpixmapregionselectorwidget.sip60
-rw-r--r--python/pykde/sip/kdeui/kpopupmenu.sip149
-rw-r--r--python/pykde/sip/kdeui/kprogress.sip102
-rw-r--r--python/pykde/sip/kdeui/kpushbutton.sip67
-rw-r--r--python/pykde/sip/kdeui/krestrictedline.sip49
-rw-r--r--python/pykde/sip/kdeui/krootpixmap.sip71
-rw-r--r--python/pykde/sip/kdeui/kruler.sip108
-rw-r--r--python/pykde/sip/kdeui/kscrollview.sip53
-rw-r--r--python/pykde/sip/kdeui/kselect.sip142
-rw-r--r--python/pykde/sip/kdeui/kseparator.sip48
-rw-r--r--python/pykde/sip/kdeui/ksharedpixmap.sip62
-rw-r--r--python/pykde/sip/kdeui/kshortcutdialog.sip53
-rw-r--r--python/pykde/sip/kdeui/ksplashscreen.sip42
-rw-r--r--python/pykde/sip/kdeui/ksqueezedtextlabel.sip60
-rw-r--r--python/pykde/sip/kdeui/kstatusbar.sip82
-rw-r--r--python/pykde/sip/kdeui/kstdaction.sip327
-rw-r--r--python/pykde/sip/kdeui/kstdguiitem.sip352
-rw-r--r--python/pykde/sip/kdeui/kstringvalidator.sip63
-rw-r--r--python/pykde/sip/kdeui/ksystemtray.sip84
-rw-r--r--python/pykde/sip/kdeui/ktabbar.sip98
-rw-r--r--python/pykde/sip/kdeui/ktabctl.sip64
-rw-r--r--python/pykde/sip/kdeui/ktabwidget.sip144
-rw-r--r--python/pykde/sip/kdeui/ktextbrowser.sip58
-rw-r--r--python/pykde/sip/kdeui/ktextedit.sip83
-rw-r--r--python/pykde/sip/kdeui/kthemebase.sip258
-rw-r--r--python/pykde/sip/kdeui/kthemestyle.sip89
-rw-r--r--python/pykde/sip/kdeui/ktimewidget.sip50
-rw-r--r--python/pykde/sip/kdeui/ktimezonewidget.sip45
-rw-r--r--python/pykde/sip/kdeui/ktip.sip82
-rw-r--r--python/pykde/sip/kdeui/ktmainwindow.sip53
-rw-r--r--python/pykde/sip/kdeui/ktoolbar.sip263
-rw-r--r--python/pykde/sip/kdeui/ktoolbarbutton.sip123
-rw-r--r--python/pykde/sip/kdeui/ktoolbarlabelaction.sip51
-rw-r--r--python/pykde/sip/kdeui/ktoolbarradiogroup.sip43
-rw-r--r--python/pykde/sip/kdeui/kurllabel.sip108
-rw-r--r--python/pykde/sip/kdeui/kwindowinfo.sip61
-rw-r--r--python/pykde/sip/kdeui/kwindowlistmenu.sip54
-rw-r--r--python/pykde/sip/kdeui/kwizard.sip38
-rw-r--r--python/pykde/sip/kdeui/kwordwrap.sip82
-rw-r--r--python/pykde/sip/kdeui/kxmlgui.sip26
-rw-r--r--python/pykde/sip/kdeui/kxmlguibuilder.sip53
-rw-r--r--python/pykde/sip/kdeui/kxmlguiclient.sip101
-rw-r--r--python/pykde/sip/kdeui/kxmlguifactory.sip300
-rw-r--r--python/pykde/sip/kdeui/qxembed.sip113
-rw-r--r--python/pykde/sip/kfile/booktoken.sip66
-rw-r--r--python/pykde/sip/kfile/kcombiview.sip90
-rw-r--r--python/pykde/sip/kfile/kcustommenueditor.sip57
-rw-r--r--python/pykde/sip/kfile/kdiroperator.sip205
-rw-r--r--python/pykde/sip/kfile/kdirselectdialog.sip71
-rw-r--r--python/pykde/sip/kfile/kdirsize.sip86
-rw-r--r--python/pykde/sip/kfile/kdiskfreesp.sip49
-rw-r--r--python/pykde/sip/kfile/kencodingfiledialog.sip65
-rw-r--r--python/pykde/sip/kfile/kfile-kde310.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde311.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde312.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde313.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde314.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde315.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde320.diff6
-rw-r--r--python/pykde/sip/kfile/kfile-kde321.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde322.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde323.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde330.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde331.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde332.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde340.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde341.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde342.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde343.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde350.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde351.diff5
-rw-r--r--python/pykde/sip/kfile/kfile-kde352.diff6
-rw-r--r--python/pykde/sip/kfile/kfile-kde353.diff5
-rw-r--r--python/pykde/sip/kfile/kfile.sip115
-rw-r--r--python/pykde/sip/kfile/kfilebookmark.sip157
-rw-r--r--python/pykde/sip/kfile/kfiledetailview.sip207
-rw-r--r--python/pykde/sip/kfile/kfiledialog.sip207
-rw-r--r--python/pykde/sip/kfile/kfilefiltercombo.sip58
-rw-r--r--python/pykde/sip/kfile/kfileiconview.sip141
-rw-r--r--python/pykde/sip/kfile/kfilemod.sip67
-rw-r--r--python/pykde/sip/kfile/kfilemod.sip.in63
-rw-r--r--python/pykde/sip/kfile/kfilepreview.sip80
-rw-r--r--python/pykde/sip/kfile/kfilereader.sip47
-rw-r--r--python/pykde/sip/kfile/kfilesharedlg.sip53
-rw-r--r--python/pykde/sip/kfile/kfiletreebranch.sip235
-rw-r--r--python/pykde/sip/kfile/kfiletreeview.sip109
-rw-r--r--python/pykde/sip/kfile/kfiletreeviewitem.sip48
-rw-r--r--python/pykde/sip/kfile/kfileview.sip153
-rw-r--r--python/pykde/sip/kfile/kfileviewitem.sip58
-rw-r--r--python/pykde/sip/kfile/kicondialog.sip131
-rw-r--r--python/pykde/sip/kfile/kimagefilepreview.sip57
-rw-r--r--python/pykde/sip/kfile/knotifydialog.sip315
-rw-r--r--python/pykde/sip/kfile/knotifywidgetbase.sip64
-rw-r--r--python/pykde/sip/kfile/kopenwith.sip146
-rw-r--r--python/pykde/sip/kfile/kpreviewwidgetbase.sip57
-rw-r--r--python/pykde/sip/kfile/kpropertiesdialog.sip304
-rw-r--r--python/pykde/sip/kfile/kpropsdlg.sip208
-rw-r--r--python/pykde/sip/kfile/krecentdirs.sip40
-rw-r--r--python/pykde/sip/kfile/krecentdocument.sip44
-rw-r--r--python/pykde/sip/kfile/kurlbar.sip213
-rw-r--r--python/pykde/sip/kfile/kurlcombobox.sip80
-rw-r--r--python/pykde/sip/kfile/kurlrequester.sip112
-rw-r--r--python/pykde/sip/kfile/kurlrequesterdlg.sip43
-rw-r--r--python/pykde/sip/khtml/css_rule.sip259
-rw-r--r--python/pykde/sip/khtml/css_stylesheet.sip197
-rw-r--r--python/pykde/sip/khtml/css_value.sip320
-rw-r--r--python/pykde/sip/khtml/dom2_events.sip251
-rw-r--r--python/pykde/sip/khtml/dom2_range.sip115
-rw-r--r--python/pykde/sip/khtml/dom2_traversal.sip176
-rw-r--r--python/pykde/sip/khtml/dom2_views.sip50
-rw-r--r--python/pykde/sip/khtml/dom_doc.sip185
-rw-r--r--python/pykde/sip/khtml/dom_element.sip111
-rw-r--r--python/pykde/sip/khtml/dom_exception.sip64
-rw-r--r--python/pykde/sip/khtml/dom_misc.sip49
-rw-r--r--python/pykde/sip/khtml/dom_node.sip150
-rw-r--r--python/pykde/sip/khtml/dom_string.sip79
-rw-r--r--python/pykde/sip/khtml/dom_text.sip92
-rw-r--r--python/pykde/sip/khtml/dom_xml.sip128
-rw-r--r--python/pykde/sip/khtml/html_base.sip207
-rw-r--r--python/pykde/sip/khtml/html_block.sip233
-rw-r--r--python/pykde/sip/khtml/html_document.sip77
-rw-r--r--python/pykde/sip/khtml/html_element.sip78
-rw-r--r--python/pykde/sip/khtml/html_form.sip436
-rw-r--r--python/pykde/sip/khtml/html_head.sip203
-rw-r--r--python/pykde/sip/khtml/html_image.sip144
-rw-r--r--python/pykde/sip/khtml/html_inline.sip169
-rw-r--r--python/pykde/sip/khtml/html_list.sip169
-rw-r--r--python/pykde/sip/khtml/html_misc.sip97
-rw-r--r--python/pykde/sip/khtml/html_object.sip179
-rw-r--r--python/pykde/sip/khtml/html_table.sip256
-rw-r--r--python/pykde/sip/khtml/khtml_part.sip282
-rw-r--r--python/pykde/sip/khtml/khtml_part.sip.323272
-rw-r--r--python/pykde/sip/khtml/khtml_part.sip.330282
-rw-r--r--python/pykde/sip/khtml/khtml_settings.sip293
-rw-r--r--python/pykde/sip/khtml/khtmlmod.sip.in71
-rw-r--r--python/pykde/sip/khtml/khtmlview.sip144
-rw-r--r--python/pykde/sip/kio/authinfo.sip206
-rw-r--r--python/pykde/sip/kio/chmodjob.sip64
-rw-r--r--python/pykde/sip/kio/connection.sip72
-rw-r--r--python/pykde/sip/kio/davjob.sip56
-rw-r--r--python/pykde/sip/kio/defaultprogress.sip103
-rw-r--r--python/pykde/sip/kio/forwardingslavebase.sip63
-rw-r--r--python/pykde/sip/kio/global.sip732
-rw-r--r--python/pykde/sip/kio/job.sip73
-rw-r--r--python/pykde/sip/kio/jobclasses.sip748
-rw-r--r--python/pykde/sip/kio/kacl.sip166
-rw-r--r--python/pykde/sip/kio/kar.sip54
-rw-r--r--python/pykde/sip/kio/karchive.sip189
-rw-r--r--python/pykde/sip/kio/kautomount.sip77
-rw-r--r--python/pykde/sip/kio/kdatatool.sip173
-rw-r--r--python/pykde/sip/kio/kdcopservicestarter.sip48
-rw-r--r--python/pykde/sip/kio/kdirlister.sip268
-rw-r--r--python/pykde/sip/kio/kdirnotify.sip57
-rw-r--r--python/pykde/sip/kio/kdirwatch.sip96
-rw-r--r--python/pykde/sip/kio/kemailsettings.sip84
-rw-r--r--python/pykde/sip/kio/kfilefilter.sip81
-rw-r--r--python/pykde/sip/kio/kfileitem.sip171
-rw-r--r--python/pykde/sip/kio/kfilemetainfo.sip458
-rw-r--r--python/pykde/sip/kio/kfileshare.sip87
-rw-r--r--python/pykde/sip/kio/kfilterbase.sip74
-rw-r--r--python/pykde/sip/kio/kfilterdev.sip73
-rw-r--r--python/pykde/sip/kio/kimageio.sip59
-rw-r--r--python/pykde/sip/kio/kio-kde310.diff5
-rw-r--r--python/pykde/sip/kio/kio-kde311.diff4
-rw-r--r--python/pykde/sip/kio/kio-kde312.diff5
-rw-r--r--python/pykde/sip/kio/kio-kde313.diff5
-rw-r--r--python/pykde/sip/kio/kio-kde314.diff5
-rw-r--r--python/pykde/sip/kio/kio-kde315.diff5
-rw-r--r--python/pykde/sip/kio/kio-kde320.diff6
-rw-r--r--python/pykde/sip/kio/kio-kde321.diff6
-rw-r--r--python/pykde/sip/kio/kio-kde322.diff6
-rw-r--r--python/pykde/sip/kio/kio-kde323.diff6
-rw-r--r--python/pykde/sip/kio/kio-kde330.diff10
-rw-r--r--python/pykde/sip/kio/kio-kde331.diff10
-rw-r--r--python/pykde/sip/kio/kio-kde332.diff10
-rw-r--r--python/pykde/sip/kio/kio-kde340.diff11
-rw-r--r--python/pykde/sip/kio/kio-kde341.diff11
-rw-r--r--python/pykde/sip/kio/kio-kde342.diff11
-rw-r--r--python/pykde/sip/kio/kio-kde343.diff11
-rw-r--r--python/pykde/sip/kio/kio-kde350.diff12
-rw-r--r--python/pykde/sip/kio/kio-kde351.diff12
-rw-r--r--python/pykde/sip/kio/kio-kde352.diff12
-rw-r--r--python/pykde/sip/kio/kio-kde353.diff12
-rw-r--r--python/pykde/sip/kio/kiomod.sip107
-rw-r--r--python/pykde/sip/kio/kiomod.sip.in97
-rw-r--r--python/pykde/sip/kio/kmimemagic.sip74
-rw-r--r--python/pykde/sip/kio/kmimetype.sip432
-rw-r--r--python/pykde/sip/kio/kmimetypechooser.sip74
-rw-r--r--python/pykde/sip/kio/knfsshare.sip51
-rw-r--r--python/pykde/sip/kio/kpac.sip44
-rw-r--r--python/pykde/sip/kio/kprotocolinfo.sip288
-rw-r--r--python/pykde/sip/kio/kprotocolmanager.sip99
-rw-r--r--python/pykde/sip/kio/kremoteencoding.sip60
-rw-r--r--python/pykde/sip/kio/krun.sip206
-rw-r--r--python/pykde/sip/kio/ksambashare.sip51
-rw-r--r--python/pykde/sip/kio/kscan.sip120
-rw-r--r--python/pykde/sip/kio/kservice.sip289
-rw-r--r--python/pykde/sip/kio/kservicegroup.sip291
-rw-r--r--python/pykde/sip/kio/kservicetype.sip292
-rw-r--r--python/pykde/sip/kio/kshellcompletion.sip47
-rw-r--r--python/pykde/sip/kio/kshred.sip49
-rw-r--r--python/pykde/sip/kio/ksycoca.sip171
-rw-r--r--python/pykde/sip/kio/ksycocadict.sip51
-rw-r--r--python/pykde/sip/kio/ksycocaentry.sip213
-rw-r--r--python/pykde/sip/kio/ksycocafactory.sip63
-rw-r--r--python/pykde/sip/kio/ksycocatype.sip76
-rw-r--r--python/pykde/sip/kio/ktar.sip73
-rw-r--r--python/pykde/sip/kio/ktrader.sip125
-rw-r--r--python/pykde/sip/kio/kurifilter.sip147
-rw-r--r--python/pykde/sip/kio/kurlcompletion.sip81
-rw-r--r--python/pykde/sip/kio/kurlpixmapprovider.sip41
-rw-r--r--python/pykde/sip/kio/kuserprofile.sip224
-rw-r--r--python/pykde/sip/kio/kzip.sip120
-rw-r--r--python/pykde/sip/kio/metainfojob.sip63
-rw-r--r--python/pykde/sip/kio/netaccess.sip128
-rw-r--r--python/pykde/sip/kio/observer.sip96
-rw-r--r--python/pykde/sip/kio/passdlg.sip68
-rw-r--r--python/pykde/sip/kio/paste.sip56
-rw-r--r--python/pykde/sip/kio/previewjob.sip72
-rw-r--r--python/pykde/sip/kio/progressbase.sip95
-rw-r--r--python/pykde/sip/kio/renamedlg.sip67
-rw-r--r--python/pykde/sip/kio/renamedlgplugin.sip39
-rw-r--r--python/pykde/sip/kio/scheduler.sip106
-rw-r--r--python/pykde/sip/kio/sessiondata.sip51
-rw-r--r--python/pykde/sip/kio/skipdlg.sip45
-rw-r--r--python/pykde/sip/kio/slave.sip95
-rw-r--r--python/pykde/sip/kio/slavebase.sip187
-rw-r--r--python/pykde/sip/kio/slaveconfig.sip53
-rw-r--r--python/pykde/sip/kio/slaveinterface.sip188
-rw-r--r--python/pykde/sip/kio/statusbarprogress.sip56
-rw-r--r--python/pykde/sip/kio/tcpslavebase.sip91
-rw-r--r--python/pykde/sip/kio/thumbcreator.sip47
-rw-r--r--python/pykde/sip/kmdi/kmdichildarea.sip102
-rw-r--r--python/pykde/sip/kmdi/kmdichildfrm.sip276
-rw-r--r--python/pykde/sip/kmdi/kmdichildfrmcaption.sip57
-rw-r--r--python/pykde/sip/kmdi/kmdichildview.sip120
-rw-r--r--python/pykde/sip/kmdi/kmdidefines.sip115
-rw-r--r--python/pykde/sip/kmdi/kmdimainfrm.sip339
-rw-r--r--python/pykde/sip/kmdi/kmdimod.sip47
-rw-r--r--python/pykde/sip/kmdi/kmdimod.sip.in48
-rw-r--r--python/pykde/sip/kmdi/kmditaskbar.sip88
-rw-r--r--python/pykde/sip/kmdi/kmditoolviewaccessor.sip53
-rw-r--r--python/pykde/sip/kparts/browserextension.sip603
-rw-r--r--python/pykde/sip/kparts/browserinterface.sip43
-rw-r--r--python/pykde/sip/kparts/browserrun.sip117
-rw-r--r--python/pykde/sip/kparts/dockmainwindow.sip49
-rw-r--r--python/pykde/sip/kparts/event.sip94
-rw-r--r--python/pykde/sip/kparts/factory.sip53
-rw-r--r--python/pykde/sip/kparts/genericfactory.sip25
-rw-r--r--python/pykde/sip/kparts/historyprovider.sip54
-rw-r--r--python/pykde/sip/kparts/konsole_part.sip177
-rw-r--r--python/pykde/sip/kparts/kparts-kde320.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde321.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde322.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde323.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde330.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde331.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde332.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde340.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde341.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde342.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde343.diff1
-rw-r--r--python/pykde/sip/kparts/kparts-kde350.diff2
-rw-r--r--python/pykde/sip/kparts/kparts-kde351.diff2
-rw-r--r--python/pykde/sip/kparts/kparts-kde352.diff2
-rw-r--r--python/pykde/sip/kparts/kparts-kde353.diff2
-rw-r--r--python/pykde/sip/kparts/kpartsmod.sip51
-rw-r--r--python/pykde/sip/kparts/kpartsmod.sip.in51
-rw-r--r--python/pykde/sip/kparts/mainwindow.sip60
-rw-r--r--python/pykde/sip/kparts/part.sip312
-rw-r--r--python/pykde/sip/kparts/partmanager.sip181
-rw-r--r--python/pykde/sip/kparts/plugin.sip210
-rw-r--r--python/pykde/sip/kparts/statusbarextension.sip52
-rw-r--r--python/pykde/sip/kresources/configdialog.sip52
-rw-r--r--python/pykde/sip/kresources/configpage.sip48
-rw-r--r--python/pykde/sip/kresources/configwidget.sip56
-rw-r--r--python/pykde/sip/kresources/factory.sip54
-rw-r--r--python/pykde/sip/kresources/kresourcesmod.sip44
-rw-r--r--python/pykde/sip/kresources/kresourcesmod.sip.in45
-rw-r--r--python/pykde/sip/kresources/resource.sip84
-rw-r--r--python/pykde/sip/kresources/selectdialog.sip133
-rw-r--r--python/pykde/sip/kspell/ksconfig.sip210
-rw-r--r--python/pykde/sip/kspell/kspell-kde320.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde321.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde322.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde323.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde330.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde331.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde332.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde340.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde341.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde342.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde343.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde350.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde351.diff3
-rw-r--r--python/pykde/sip/kspell/kspell-kde352.diff1
-rw-r--r--python/pykde/sip/kspell/kspell-kde353.diff1
-rw-r--r--python/pykde/sip/kspell/kspell.sip190
-rw-r--r--python/pykde/sip/kspell/kspelldlg.sip123
-rw-r--r--python/pykde/sip/kspell/kspellmod.sip.in42
-rw-r--r--python/pykde/sip/kspell/ksyntaxhighlighter.sip114
-rw-r--r--python/pykde/sip/kspell2/backgroundchecker.sip68
-rw-r--r--python/pykde/sip/kspell2/broker.sip62
-rw-r--r--python/pykde/sip/kspell2/configdialog.sip49
-rw-r--r--python/pykde/sip/kspell2/configwidget.sip54
-rw-r--r--python/pykde/sip/kspell2/defaultdictionary.sip60
-rw-r--r--python/pykde/sip/kspell2/dialog.sip61
-rw-r--r--python/pykde/sip/kspell2/dictionary.sip57
-rw-r--r--python/pykde/sip/kspell2/filter.sip87
-rw-r--r--python/pykde/sip/kspell2/highlighter.sip54
-rw-r--r--python/pykde/sip/kspell2/kspell2mod.sip.in48
-rw-r--r--python/pykde/sip/kspell2/settings.sip63
-rw-r--r--python/pykde/sip/kutils/kcmoduleinfo.sip91
-rw-r--r--python/pykde/sip/kutils/kcmoduleloader.sip67
-rw-r--r--python/pykde/sip/kutils/kcmoduleproxy.sip104
-rw-r--r--python/pykde/sip/kutils/kcmultidialog.sip86
-rw-r--r--python/pykde/sip/kutils/kfind.sip83
-rw-r--r--python/pykde/sip/kutils/kfinddialog.sip86
-rw-r--r--python/pykde/sip/kutils/kmultitabbar.sip167
-rw-r--r--python/pykde/sip/kutils/kplugininfo.sip149
-rw-r--r--python/pykde/sip/kutils/kpluginselector.sip53
-rw-r--r--python/pykde/sip/kutils/kreplace.sip60
-rw-r--r--python/pykde/sip/kutils/kreplacedialog.sip59
-rw-r--r--python/pykde/sip/kutils/kutils-kde340.diff1
-rw-r--r--python/pykde/sip/kutils/kutils-kde341.diff1
-rw-r--r--python/pykde/sip/kutils/kutilsmod.sip49
-rw-r--r--python/pykde/sip/kutils/kutilsmod.sip.in50
-rw-r--r--python/pykde/svnmerge.py47
-rw-r--r--python/pykde/svnmergedocs.py30
-rw-r--r--python/pykde/templates/annotated/basicapp.py113
-rw-r--r--python/pykde/templates/annotated/menuapp1.py270
-rw-r--r--python/pykde/templates/annotated/menuapp2.py244
-rw-r--r--python/pykde/templates/annotated/menuapp3.py209
-rw-r--r--python/pykde/templates/annotated/menuapp3ui.rc24
-rw-r--r--python/pykde/templates/annotated/minimal.py75
-rw-r--r--python/pykde/templates/annotated/panelapplet.py64
-rw-r--r--python/pykde/templates/annotated/systray.py82
-rw-r--r--python/pykde/templates/annotated/systray1.py87
-rw-r--r--python/pykde/templates/basic/basicapp.py58
-rw-r--r--python/pykde/templates/basic/menuapp1.py194
-rw-r--r--python/pykde/templates/basic/menuapp2.py200
-rw-r--r--python/pykde/templates/basic/menuapp3.py162
-rw-r--r--python/pykde/templates/basic/menuapp3ui.rc24
-rw-r--r--python/pykde/templates/basic/minimal.py48
-rw-r--r--python/pykde/templates/basic/panelapplet.py49
-rw-r--r--python/pykde/templates/basic/systray.py61
-rw-r--r--python/pykde/templates/basic/systray1.py67
-rw-r--r--python/pyqt/ChangeLog3223
-rw-r--r--python/pyqt/LICENSE280
-rw-r--r--python/pyqt/NEWS544
-rw-r--r--python/pyqt/README64
-rw-r--r--python/pyqt/README.AIX68
-rw-r--r--python/pyqt/README.SunOS44
-rw-r--r--python/pyqt/THANKS35
-rw-r--r--python/pyqt/build.py730
-rw-r--r--python/pyqt/configure.py1438
-rw-r--r--python/pyqt/doc/PyQt.html12845
-rw-r--r--python/pyqt/doc/PyQt.sgml5807
-rw-r--r--python/pyqt/doc/qtdocs.sip1920
-rw-r--r--python/pyqt/examples2/README11
-rwxr-xr-xpython/pyqt/examples2/aclock.py61
-rwxr-xr-xpython/pyqt/examples2/addressbook.py457
-rwxr-xr-xpython/pyqt/examples2/application.py277
-rwxr-xr-xpython/pyqt/examples2/buttongroups.py113
-rwxr-xr-xpython/pyqt/examples2/dclock.py58
-rwxr-xr-xpython/pyqt/examples2/desktop.py219
-rwxr-xr-xpython/pyqt/examples2/dirview.py76
-rwxr-xr-xpython/pyqt/examples2/dragdrop.py57
-rw-r--r--python/pyqt/examples2/dropsite.py96
-rwxr-xr-xpython/pyqt/examples2/gears.py235
-rwxr-xr-xpython/pyqt/examples2/menu.py301
-rw-r--r--python/pyqt/examples2/qt.pngbin0 -> 355 bytes
-rw-r--r--python/pyqt/examples2/qtlogo.pngbin0 -> 3734 bytes
-rw-r--r--python/pyqt/examples2/secret.py65
-rwxr-xr-xpython/pyqt/examples2/semaphore.py203
-rwxr-xr-xpython/pyqt/examples2/splitter.py65
-rwxr-xr-xpython/pyqt/examples2/table.py115
-rwxr-xr-xpython/pyqt/examples2/themes.py2484
-rw-r--r--python/pyqt/examples2/trolltech.bmpbin0 -> 30054 bytes
-rw-r--r--python/pyqt/examples2/trolltech.gifbin0 -> 42629 bytes
-rw-r--r--python/pyqt/examples2/tt-logo.pngbin0 -> 4547 bytes
-rwxr-xr-xpython/pyqt/examples2/tut1.py16
-rwxr-xr-xpython/pyqt/examples2/tut10.py145
-rwxr-xr-xpython/pyqt/examples2/tut11.py213
-rwxr-xr-xpython/pyqt/examples2/tut12.py252
-rwxr-xr-xpython/pyqt/examples2/tut13.py329
-rwxr-xr-xpython/pyqt/examples2/tut14.py377
-rwxr-xr-xpython/pyqt/examples2/tut2.py19
-rwxr-xr-xpython/pyqt/examples2/tut3.py20
-rwxr-xr-xpython/pyqt/examples2/tut4.py29
-rwxr-xr-xpython/pyqt/examples2/tut5.py32
-rwxr-xr-xpython/pyqt/examples2/tut6.py41
-rwxr-xr-xpython/pyqt/examples2/tut7.py57
-rwxr-xr-xpython/pyqt/examples2/tut8.py96
-rwxr-xr-xpython/pyqt/examples2/tut9.py104
-rwxr-xr-xpython/pyqt/examples2/widgets.py512
-rw-r--r--python/pyqt/examples3/README12
-rw-r--r--python/pyqt/examples3/SQL/README76
-rw-r--r--python/pyqt/examples3/SQL/connect.ui238
-rw-r--r--python/pyqt/examples3/SQL/connect.ui.h21
-rwxr-xr-xpython/pyqt/examples3/SQL/dbconnect.py82
-rw-r--r--python/pyqt/examples3/SQL/dbpar.py22
-rw-r--r--python/pyqt/examples3/SQL/form1.ui77
-rw-r--r--python/pyqt/examples3/SQL/form2.ui327
-rw-r--r--python/pyqt/examples3/SQL/frmconnect.py120
-rw-r--r--python/pyqt/examples3/SQL/frmconnect.ui245
-rwxr-xr-xpython/pyqt/examples3/SQL/runform1.py21
-rwxr-xr-xpython/pyqt/examples3/SQL/runform2.py21
-rwxr-xr-xpython/pyqt/examples3/SQL/runsqlex.py151
-rwxr-xr-xpython/pyqt/examples3/SQL/sqlcustom1.py94
-rw-r--r--python/pyqt/examples3/SQL/sqlex.ui303
-rw-r--r--python/pyqt/examples3/SQL/sqlex.ui.h35
-rwxr-xr-xpython/pyqt/examples3/SQL/sqlsubclass5.py151
-rwxr-xr-xpython/pyqt/examples3/SQL/sqltable4.py118
-rw-r--r--python/pyqt/examples3/SQL/testdb_mysql.sql57
-rw-r--r--python/pyqt/examples3/SQL/testdb_pg.sql232
-rwxr-xr-xpython/pyqt/examples3/aclock.py61
-rwxr-xr-xpython/pyqt/examples3/addressbook.py457
-rwxr-xr-xpython/pyqt/examples3/application.py277
-rwxr-xr-xpython/pyqt/examples3/biff.py173
-rwxr-xr-xpython/pyqt/examples3/bigtable.py72
-rwxr-xr-xpython/pyqt/examples3/buttongroups.py125
-rw-r--r--python/pyqt/examples3/canvas/butterfly.pngbin0 -> 37900 bytes
-rwxr-xr-xpython/pyqt/examples3/canvas/canvas.py619
-rw-r--r--python/pyqt/examples3/canvas/qt-trans.xpm54
-rw-r--r--python/pyqt/examples3/canvas/qtlogo.pngbin0 -> 22673 bytes
-rwxr-xr-xpython/pyqt/examples3/checklists.py136
-rwxr-xr-xpython/pyqt/examples3/cursor.py114
-rwxr-xr-xpython/pyqt/examples3/dclock.py58
-rwxr-xr-xpython/pyqt/examples3/desktop.py230
-rwxr-xr-xpython/pyqt/examples3/dirview.py452
-rwxr-xr-xpython/pyqt/examples3/dragdrop.py57
-rwxr-xr-xpython/pyqt/examples3/drawlines.py74
-rw-r--r--python/pyqt/examples3/dropsite.py96
-rw-r--r--python/pyqt/examples3/fileopen.xpm22
-rwxr-xr-xpython/pyqt/examples3/fontdisplayer.py148
-rwxr-xr-xpython/pyqt/examples3/fonts.py151
-rwxr-xr-xpython/pyqt/examples3/gears.py235
-rw-r--r--python/pyqt/examples3/i18n/i18n.pro15
-rwxr-xr-xpython/pyqt/examples3/i18n/i18n.py147
-rw-r--r--python/pyqt/examples3/i18n/mywidget.py47
-rw-r--r--python/pyqt/examples3/i18n/mywidget_cs.qmbin0 -> 818 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_cs.ts75
-rw-r--r--python/pyqt/examples3/i18n/mywidget_de.qmbin0 -> 913 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_de.ts69
-rw-r--r--python/pyqt/examples3/i18n/mywidget_el.qmbin0 -> 832 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_el.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_en.qmbin0 -> 337 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_en.ts69
-rw-r--r--python/pyqt/examples3/i18n/mywidget_eo.qmbin0 -> 835 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_eo.ts72
-rw-r--r--python/pyqt/examples3/i18n/mywidget_fr.qmbin0 -> 884 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_fr.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_it.qmbin0 -> 763 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_it.ts72
-rw-r--r--python/pyqt/examples3/i18n/mywidget_jp.qmbin0 -> 738 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_jp.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_ko.qmbin0 -> 738 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_ko.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_no.qmbin0 -> 830 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_no.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_ru.qmbin0 -> 799 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_ru.ts68
-rw-r--r--python/pyqt/examples3/i18n/mywidget_zh.qmbin0 -> 706 bytes
-rw-r--r--python/pyqt/examples3/i18n/mywidget_zh.ts68
-rwxr-xr-xpython/pyqt/examples3/lineedits.py140
-rwxr-xr-xpython/pyqt/examples3/listbox.py176
-rwxr-xr-xpython/pyqt/examples3/listboxcombo.py167
-rw-r--r--python/pyqt/examples3/marble.pngbin0 -> 26015 bytes
-rwxr-xr-xpython/pyqt/examples3/mdi.py360
-rwxr-xr-xpython/pyqt/examples3/menu.py286
-rwxr-xr-xpython/pyqt/examples3/progress.py287
-rwxr-xr-xpython/pyqt/examples3/progressbar.py155
-rwxr-xr-xpython/pyqt/examples3/qdir.py323
-rwxr-xr-xpython/pyqt/examples3/qmag.py233
-rw-r--r--python/pyqt/examples3/qt.pngbin0 -> 355 bytes
-rw-r--r--python/pyqt/examples3/qtlogo.pngbin0 -> 12811 bytes
-rwxr-xr-xpython/pyqt/examples3/rangecontrols.py79
-rwxr-xr-xpython/pyqt/examples3/richtext.py136
-rw-r--r--python/pyqt/examples3/secret.py65
-rwxr-xr-xpython/pyqt/examples3/semaphore.py203
-rwxr-xr-xpython/pyqt/examples3/smalltable.py57
-rwxr-xr-xpython/pyqt/examples3/splitter.py65
-rwxr-xr-xpython/pyqt/examples3/tabdialog.py116
-rwxr-xr-xpython/pyqt/examples3/tablestatistics.py168
-rwxr-xr-xpython/pyqt/examples3/tooltip.py105
-rw-r--r--python/pyqt/examples3/trolltech.bmpbin0 -> 30054 bytes
-rw-r--r--python/pyqt/examples3/trolltech.gifbin0 -> 42629 bytes
-rw-r--r--python/pyqt/examples3/tt-logo.pngbin0 -> 4547 bytes
-rwxr-xr-xpython/pyqt/examples3/tut1.py16
-rwxr-xr-xpython/pyqt/examples3/tut10.py145
-rwxr-xr-xpython/pyqt/examples3/tut11.py213
-rwxr-xr-xpython/pyqt/examples3/tut12.py253
-rwxr-xr-xpython/pyqt/examples3/tut13.py330
-rwxr-xr-xpython/pyqt/examples3/tut14.py378
-rwxr-xr-xpython/pyqt/examples3/tut2.py19
-rwxr-xr-xpython/pyqt/examples3/tut3.py21
-rwxr-xr-xpython/pyqt/examples3/tut4.py29
-rwxr-xr-xpython/pyqt/examples3/tut5.py32
-rwxr-xr-xpython/pyqt/examples3/tut6.py41
-rwxr-xr-xpython/pyqt/examples3/tut7.py57
-rwxr-xr-xpython/pyqt/examples3/tut8.py97
-rwxr-xr-xpython/pyqt/examples3/tut9.py104
-rw-r--r--python/pyqt/examples3/webbrowser/mainwindow.py1097
-rw-r--r--python/pyqt/examples3/webbrowser/mainwindow.ui410
-rw-r--r--python/pyqt/examples3/webbrowser/webbrowser.py91
-rwxr-xr-xpython/pyqt/examples3/widgets.py500
-rw-r--r--python/pyqt/pylupdate3/LICENSE.GPL280
-rw-r--r--python/pyqt/pylupdate3/fetchtr.cpp455
-rw-r--r--python/pyqt/pylupdate3/main.cpp155
-rw-r--r--python/pyqt/pylupdate3/merge.cpp110
-rw-r--r--python/pyqt/pylupdate3/metatranslator.cpp557
-rw-r--r--python/pyqt/pylupdate3/metatranslator.h95
-rw-r--r--python/pyqt/pylupdate3/numberh.cpp230
-rw-r--r--python/pyqt/pylupdate3/proparser.cpp78
-rw-r--r--python/pyqt/pylupdate3/proparser.h25
-rw-r--r--python/pyqt/pylupdate3/pylupdate-prof.sbf24
-rw-r--r--python/pyqt/pylupdate3/pylupdate.pro.in29
-rw-r--r--python/pyqt/pylupdate3/pylupdate.sbf24
-rw-r--r--python/pyqt/pylupdate3/sametexth.cpp78
-rw-r--r--python/pyqt/pyqtconfig.py.in187
-rw-r--r--python/pyqt/pyuic2/COPYING280
-rw-r--r--python/pyqt/pyuic2/domtool.cpp260
-rw-r--r--python/pyqt/pyuic2/domtool.h41
-rw-r--r--python/pyqt/pyuic2/globaldefs.h33
-rw-r--r--python/pyqt/pyuic2/pyuic.pro.in24
-rw-r--r--python/pyqt/pyuic2/pyuic.sbf24
-rw-r--r--python/pyqt/pyuic2/uic.cpp1601
-rw-r--r--python/pyqt/pyuic2/uic.h133
-rw-r--r--python/pyqt/pyuic2/widgetdatabase.cpp640
-rw-r--r--python/pyqt/pyuic2/widgetdatabase.h75
-rw-r--r--python/pyqt/pyuic3/LICENSE.GPL280
-rw-r--r--python/pyqt/pyuic3/domtool.cpp447
-rw-r--r--python/pyqt/pyuic3/domtool.h47
-rw-r--r--python/pyqt/pyuic3/embed.cpp323
-rw-r--r--python/pyqt/pyuic3/form.cpp938
-rw-r--r--python/pyqt/pyuic3/globaldefs.h56
-rw-r--r--python/pyqt/pyuic3/main.cpp245
-rw-r--r--python/pyqt/pyuic3/object.cpp704
-rw-r--r--python/pyqt/pyuic3/parser.cpp66
-rw-r--r--python/pyqt/pyuic3/parser.h33
-rw-r--r--python/pyqt/pyuic3/pyuic-prof.sbf24
-rw-r--r--python/pyqt/pyuic3/pyuic.pro.in36
-rw-r--r--python/pyqt/pyuic3/pyuic.sbf24
-rw-r--r--python/pyqt/pyuic3/subclassing.cpp185
-rw-r--r--python/pyqt/pyuic3/uic.cpp1145
-rw-r--r--python/pyqt/pyuic3/uic.h183
-rw-r--r--python/pyqt/pyuic3/widgetdatabase.cpp953
-rw-r--r--python/pyqt/pyuic3/widgetdatabase.h96
-rw-r--r--python/pyqt/pyuic3/widgetinterface.h29
-rw-r--r--python/pyqt/sip/pyqt-gpl.sip1
-rw-r--r--python/pyqt/sip/qt/copying.sip51
-rw-r--r--python/pyqt/sip/qt/qaccel.sip104
-rw-r--r--python/pyqt/sip/qt/qaction.sip210
-rw-r--r--python/pyqt/sip/qt/qapplication.sip574
-rw-r--r--python/pyqt/sip/qt/qarray.sip94
-rw-r--r--python/pyqt/sip/qt/qassistantclient.sip63
-rw-r--r--python/pyqt/sip/qt/qbitmap.sip59
-rw-r--r--python/pyqt/sip/qt/qbrush.sip105
-rw-r--r--python/pyqt/sip/qt/qbutton.sip184
-rw-r--r--python/pyqt/sip/qt/qbuttongroup.sip104
-rw-r--r--python/pyqt/sip/qt/qbytearray.sip203
-rw-r--r--python/pyqt/sip/qt/qcdestyle.sip68
-rw-r--r--python/pyqt/sip/qt/qcheckbox.sip88
-rw-r--r--python/pyqt/sip/qt/qclipboard.sip152
-rw-r--r--python/pyqt/sip/qt/qcolor.sip207
-rw-r--r--python/pyqt/sip/qt/qcolordialog.sip77
-rw-r--r--python/pyqt/sip/qt/qcolorgroup.sip125
-rw-r--r--python/pyqt/sip/qt/qcombobox.sip277
-rw-r--r--python/pyqt/sip/qt/qcommonstyle.sip137
-rw-r--r--python/pyqt/sip/qt/qcstring.sip223
-rw-r--r--python/pyqt/sip/qt/qcursor.sip144
-rw-r--r--python/pyqt/sip/qt/qdatastream.sip224
-rw-r--r--python/pyqt/sip/qt/qdatetime.sip280
-rw-r--r--python/pyqt/sip/qt/qdatetimeedit.sip256
-rw-r--r--python/pyqt/sip/qt/qdesktopwidget.sip84
-rw-r--r--python/pyqt/sip/qt/qdial.sip112
-rw-r--r--python/pyqt/sip/qt/qdialog.sip158
-rw-r--r--python/pyqt/sip/qt/qdir.sip384
-rw-r--r--python/pyqt/sip/qt/qdockarea.sip88
-rw-r--r--python/pyqt/sip/qt/qdockwindow.sip135
-rw-r--r--python/pyqt/sip/qt/qdragobject.sip374
-rw-r--r--python/pyqt/sip/qt/qdrawutil.sip74
-rw-r--r--python/pyqt/sip/qt/qdropsite.sip51
-rw-r--r--python/pyqt/sip/qt/qerrormessage.sip57
-rw-r--r--python/pyqt/sip/qt/qevent.sip1235
-rw-r--r--python/pyqt/sip/qt/qeventloop.sip89
-rw-r--r--python/pyqt/sip/qt/qfile.sip310
-rw-r--r--python/pyqt/sip/qt/qfiledialog.sip361
-rw-r--r--python/pyqt/sip/qt/qfileinfo.sip145
-rw-r--r--python/pyqt/sip/qt/qfont.sip441
-rw-r--r--python/pyqt/sip/qt/qfontdatabase.sip121
-rw-r--r--python/pyqt/sip/qt/qfontdialog.sip105
-rw-r--r--python/pyqt/sip/qt/qfontinfo.sip70
-rw-r--r--python/pyqt/sip/qt/qfontmetrics.sip220
-rw-r--r--python/pyqt/sip/qt/qframe.sip180
-rw-r--r--python/pyqt/sip/qt/qglobal.sip74
-rw-r--r--python/pyqt/sip/qt/qgmanager.sip88
-rw-r--r--python/pyqt/sip/qt/qgrid.sip72
-rw-r--r--python/pyqt/sip/qt/qgridview.sip76
-rw-r--r--python/pyqt/sip/qt/qgroupbox.sip135
-rw-r--r--python/pyqt/sip/qt/qhbox.sip75
-rw-r--r--python/pyqt/sip/qt/qhbuttongroup.sip48
-rw-r--r--python/pyqt/sip/qt/qheader.sip268
-rw-r--r--python/pyqt/sip/qt/qhgroupbox.sip48
-rw-r--r--python/pyqt/sip/qt/qiconset.sip146
-rw-r--r--python/pyqt/sip/qt/qiconview.sip457
-rw-r--r--python/pyqt/sip/qt/qimage.sip544
-rw-r--r--python/pyqt/sip/qt/qinputdialog.sip174
-rw-r--r--python/pyqt/sip/qt/qinterlacestyle.sip103
-rw-r--r--python/pyqt/sip/qt/qiodevice.sip408
-rw-r--r--python/pyqt/sip/qt/qkeycode.sip286
-rw-r--r--python/pyqt/sip/qt/qkeysequence.sip119
-rw-r--r--python/pyqt/sip/qt/qlabel.sip157
-rw-r--r--python/pyqt/sip/qt/qlayout.sip597
-rw-r--r--python/pyqt/sip/qt/qlcdnumber.sip137
-rw-r--r--python/pyqt/sip/qt/qlibrary.sip59
-rw-r--r--python/pyqt/sip/qt/qlineedit.sip427
-rw-r--r--python/pyqt/sip/qt/qlist.sip111
-rw-r--r--python/pyqt/sip/qt/qlistbox.sip571
-rw-r--r--python/pyqt/sip/qt/qlistview.sip770
-rw-r--r--python/pyqt/sip/qt/qlocale.sip537
-rw-r--r--python/pyqt/sip/qt/qmainwindow.sip289
-rw-r--r--python/pyqt/sip/qt/qmemarray.sip92
-rw-r--r--python/pyqt/sip/qt/qmenubar.sip118
-rw-r--r--python/pyqt/sip/qt/qmenudata.sip291
-rw-r--r--python/pyqt/sip/qt/qmessagebox.sip204
-rw-r--r--python/pyqt/sip/qt/qmetaobject.sip170
-rw-r--r--python/pyqt/sip/qt/qmime.sip104
-rw-r--r--python/pyqt/sip/qt/qmotifplusstyle.sip150
-rw-r--r--python/pyqt/sip/qt/qmotifstyle.sip168
-rw-r--r--python/pyqt/sip/qt/qmovie.sip109
-rw-r--r--python/pyqt/sip/qt/qmultilinedit.sip374
-rw-r--r--python/pyqt/sip/qt/qmutex.sip104
-rw-r--r--python/pyqt/sip/qt/qnamespace.sip903
-rw-r--r--python/pyqt/sip/qt/qnetworkprotocol.sip227
-rw-r--r--python/pyqt/sip/qt/qobject.sip1369
-rw-r--r--python/pyqt/sip/qt/qobjectcleanuphandler.sip49
-rw-r--r--python/pyqt/sip/qt/qobjectlist.sip108
-rw-r--r--python/pyqt/sip/qt/qpaintdevice.sip247
-rw-r--r--python/pyqt/sip/qt/qpaintdevicemetrics.sip55
-rw-r--r--python/pyqt/sip/qt/qpainter.sip676
-rw-r--r--python/pyqt/sip/qt/qpair.sip83
-rw-r--r--python/pyqt/sip/qt/qpalette.sip102
-rw-r--r--python/pyqt/sip/qt/qpen.sip101
-rw-r--r--python/pyqt/sip/qt/qpicture.sip111
-rw-r--r--python/pyqt/sip/qt/qpixmap.sip288
-rw-r--r--python/pyqt/sip/qt/qpixmapcache.sip53
-rw-r--r--python/pyqt/sip/qt/qplatinumstyle.sip142
-rw-r--r--python/pyqt/sip/qt/qpoint.sip103
-rw-r--r--python/pyqt/sip/qt/qpointarray.sip247
-rw-r--r--python/pyqt/sip/qt/qpopupmenu.sip282
-rw-r--r--python/pyqt/sip/qt/qprintdialog.sip64
-rw-r--r--python/pyqt/sip/qt/qprinter.sip256
-rw-r--r--python/pyqt/sip/qt/qprocess.sip112
-rw-r--r--python/pyqt/sip/qt/qprogressbar.sip95
-rw-r--r--python/pyqt/sip/qt/qprogressdialog.sip194
-rw-r--r--python/pyqt/sip/qt/qptrlist.sip111
-rw-r--r--python/pyqt/sip/qt/qpushbutton.sip143
-rw-r--r--python/pyqt/sip/qt/qradiobutton.sip84
-rw-r--r--python/pyqt/sip/qt/qrangecontrol.sip79
-rw-r--r--python/pyqt/sip/qt/qrect.sip209
-rw-r--r--python/pyqt/sip/qt/qregexp.sip139
-rw-r--r--python/pyqt/sip/qt/qregion.sip126
-rw-r--r--python/pyqt/sip/qt/qscrollbar.sip170
-rw-r--r--python/pyqt/sip/qt/qscrollview.sip325
-rw-r--r--python/pyqt/sip/qt/qsemaphore.sip112
-rw-r--r--python/pyqt/sip/qt/qsemimodal.sip63
-rw-r--r--python/pyqt/sip/qt/qsessionmanager.sip89
-rw-r--r--python/pyqt/sip/qt/qsettings.sip177
-rw-r--r--python/pyqt/sip/qt/qsgistyle.sip157
-rw-r--r--python/pyqt/sip/qt/qsignalmapper.sip51
-rw-r--r--python/pyqt/sip/qt/qsimplerichtext.sip91
-rw-r--r--python/pyqt/sip/qt/qsize.sip114
-rw-r--r--python/pyqt/sip/qt/qsizegrip.sip60
-rw-r--r--python/pyqt/sip/qt/qsizepolicy.sip103
-rw-r--r--python/pyqt/sip/qt/qslider.sip187
-rw-r--r--python/pyqt/sip/qt/qsocketnotifier.sip66
-rw-r--r--python/pyqt/sip/qt/qsound.sip69
-rw-r--r--python/pyqt/sip/qt/qspinbox.sip268
-rw-r--r--python/pyqt/sip/qt/qsplashscreen.sip61
-rw-r--r--python/pyqt/sip/qt/qsplitter.sip160
-rw-r--r--python/pyqt/sip/qt/qstatusbar.sip94
-rw-r--r--python/pyqt/sip/qt/qstring.sip1079
-rw-r--r--python/pyqt/sip/qt/qstringlist.sip247
-rw-r--r--python/pyqt/sip/qt/qstrlist.sip100
-rw-r--r--python/pyqt/sip/qt/qstyle.sip862
-rw-r--r--python/pyqt/sip/qt/qstylefactory.sip45
-rw-r--r--python/pyqt/sip/qt/qstylesheet.sip239
-rw-r--r--python/pyqt/sip/qt/qsyntaxhighlighter.sip57
-rw-r--r--python/pyqt/sip/qt/qtabbar.sip264
-rw-r--r--python/pyqt/sip/qt/qtabdialog.sip167
-rw-r--r--python/pyqt/sip/qt/qtableview.sip185
-rw-r--r--python/pyqt/sip/qt/qtabwidget.sip177
-rw-r--r--python/pyqt/sip/qt/qtextbrowser.sip114
-rw-r--r--python/pyqt/sip/qt/qtextcodec.sip146
-rw-r--r--python/pyqt/sip/qt/qtextedit.sip437
-rw-r--r--python/pyqt/sip/qt/qtextstream.sip231
-rw-r--r--python/pyqt/sip/qt/qtextview.sip128
-rw-r--r--python/pyqt/sip/qt/qthread.sip98
-rw-r--r--python/pyqt/sip/qt/qtimer.sip59
-rw-r--r--python/pyqt/sip/qt/qtmod.sip282
-rw-r--r--python/pyqt/sip/qt/qtoolbar.sip160
-rw-r--r--python/pyqt/sip/qt/qtoolbox.sip88
-rw-r--r--python/pyqt/sip/qt/qtoolbutton.sip199
-rw-r--r--python/pyqt/sip/qt/qtooltip.sip169
-rw-r--r--python/pyqt/sip/qt/qtranslator.sip177
-rw-r--r--python/pyqt/sip/qt/qurl.sip114
-rw-r--r--python/pyqt/sip/qt/qurlinfo.sip96
-rw-r--r--python/pyqt/sip/qt/qurloperator.sip115
-rw-r--r--python/pyqt/sip/qt/quuid.sip87
-rw-r--r--python/pyqt/sip/qt/qvalidator.sip227
-rw-r--r--python/pyqt/sip/qt/qvaluelist.sip181
-rw-r--r--python/pyqt/sip/qt/qvariant.sip420
-rw-r--r--python/pyqt/sip/qt/qvbox.sip55
-rw-r--r--python/pyqt/sip/qt/qvbuttongroup.sip48
-rw-r--r--python/pyqt/sip/qt/qvgroupbox.sip48
-rw-r--r--python/pyqt/sip/qt/qwaitcondition.sip81
-rw-r--r--python/pyqt/sip/qt/qwhatsthis.sip97
-rw-r--r--python/pyqt/sip/qt/qwidget.sip654
-rw-r--r--python/pyqt/sip/qt/qwidgetlist.sip108
-rw-r--r--python/pyqt/sip/qt/qwidgetstack.sip98
-rw-r--r--python/pyqt/sip/qt/qwindow.sip47
-rw-r--r--python/pyqt/sip/qt/qwindowdefs.sip180
-rw-r--r--python/pyqt/sip/qt/qwindowdefs_qws.sip29
-rw-r--r--python/pyqt/sip/qt/qwindowdefs_x11.sip48
-rw-r--r--python/pyqt/sip/qt/qwindowsstyle.sip192
-rw-r--r--python/pyqt/sip/qt/qwindowsxpstyle.sip31
-rw-r--r--python/pyqt/sip/qt/qwizard.sip122
-rw-r--r--python/pyqt/sip/qt/qwmatrix.sip178
-rw-r--r--python/pyqt/sip/qt/qworkspace.sip101
-rw-r--r--python/pyqt/sip/qt/versions.sip88
-rw-r--r--python/pyqt/sip/qtaxcontainer/copying.sip51
-rw-r--r--python/pyqt/sip/qtaxcontainer/qaxbase.sip86
-rw-r--r--python/pyqt/sip/qtaxcontainer/qaxobject.sip37
-rw-r--r--python/pyqt/sip/qtaxcontainer/qaxwidget.sip37
-rw-r--r--python/pyqt/sip/qtaxcontainer/qtaxcontainermod.sip32
-rw-r--r--python/pyqt/sip/qtcanvas/copying.sip51
-rw-r--r--python/pyqt/sip/qtcanvas/qcanvas.sip856
-rw-r--r--python/pyqt/sip/qtcanvas/qtcanvasmod.sip70
-rw-r--r--python/pyqt/sip/qtext/copying.sip51
-rw-r--r--python/pyqt/sip/qtext/qextscintilla.sip411
-rw-r--r--python/pyqt/sip/qtext/qextscintillaapis.sip42
-rw-r--r--python/pyqt/sip/qtext/qextscintillabase.sip1024
-rw-r--r--python/pyqt/sip/qtext/qextscintillacommand.sip44
-rw-r--r--python/pyqt/sip/qtext/qextscintillacommandset.sip52
-rw-r--r--python/pyqt/sip/qtext/qextscintilladocument.sip42
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexer.sip80
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerbash.sip80
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerbatch.sip62
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexercpp.sip98
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexercsharp.sip47
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexercss.sip81
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerdiff.sip57
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerhtml.sip178
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexeridl.sip43
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerjava.sip41
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerjavascript.sip47
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerlua.sip79
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexermakefile.sip60
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerperl.sip96
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerpov.sip85
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerproperties.sip68
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerpython.sip94
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexerruby.sip128
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexersql.sip105
-rw-r--r--python/pyqt/sip/qtext/qextscintillalexertex.sip57
-rw-r--r--python/pyqt/sip/qtext/qextscintillamacro.sip49
-rw-r--r--python/pyqt/sip/qtext/qextscintillaprinter.sip45
-rw-r--r--python/pyqt/sip/qtext/qtextmod.sip107
-rw-r--r--python/pyqt/sip/qtgl/copying.sip51
-rw-r--r--python/pyqt/sip/qtgl/qgl.sip298
-rw-r--r--python/pyqt/sip/qtgl/qglcolormap.sip63
-rw-r--r--python/pyqt/sip/qtgl/qtglmod.sip71
-rw-r--r--python/pyqt/sip/qtnetwork/copying.sip51
-rw-r--r--python/pyqt/sip/qtnetwork/qdns.sip274
-rw-r--r--python/pyqt/sip/qtnetwork/qftp.sip183
-rw-r--r--python/pyqt/sip/qtnetwork/qhostaddress.sip99
-rw-r--r--python/pyqt/sip/qtnetwork/qhttp.sip279
-rw-r--r--python/pyqt/sip/qtnetwork/qlocalfs.sip56
-rw-r--r--python/pyqt/sip/qtnetwork/qnetwork.sip34
-rw-r--r--python/pyqt/sip/qtnetwork/qserversocket.sip70
-rw-r--r--python/pyqt/sip/qtnetwork/qsocket.sip348
-rw-r--r--python/pyqt/sip/qtnetwork/qsocketdevice.sip224
-rw-r--r--python/pyqt/sip/qtnetwork/qtnetworkmod.sip78
-rw-r--r--python/pyqt/sip/qtpe/copying.sip51
-rw-r--r--python/pyqt/sip/qtpe/qpeapplication.sip223
-rw-r--r--python/pyqt/sip/qtpe/qpeapplnk.sip157
-rw-r--r--python/pyqt/sip/qtpe/qpeconfig.sip78
-rw-r--r--python/pyqt/sip/qtpe/qpefilemanager.sip53
-rw-r--r--python/pyqt/sip/qtpe/qpefileselector.sip69
-rw-r--r--python/pyqt/sip/qtpe/qpefontdatabase.sip67
-rw-r--r--python/pyqt/sip/qtpe/qpeglobal.sip83
-rw-r--r--python/pyqt/sip/qtpe/qpemenubar.sip42
-rw-r--r--python/pyqt/sip/qtpe/qpemenubutton.sip61
-rw-r--r--python/pyqt/sip/qtpe/qpeqcopenvelope.sip39
-rw-r--r--python/pyqt/sip/qtpe/qpeqdawg.sip65
-rw-r--r--python/pyqt/sip/qtpe/qperesource.sip50
-rw-r--r--python/pyqt/sip/qtpe/qpetimestring.sip71
-rw-r--r--python/pyqt/sip/qtpe/qpetoolbar.sip42
-rw-r--r--python/pyqt/sip/qtpe/qtpemod.sip94
-rw-r--r--python/pyqt/sip/qtsql/copying.sip51
-rw-r--r--python/pyqt/sip/qtsql/qdatabrowser.sip150
-rw-r--r--python/pyqt/sip/qtsql/qdatatable.sip201
-rw-r--r--python/pyqt/sip/qtsql/qdataview.sip60
-rw-r--r--python/pyqt/sip/qtsql/qeditorfactory.sip55
-rw-r--r--python/pyqt/sip/qtsql/qsql.sip80
-rw-r--r--python/pyqt/sip/qtsql/qsqlcursor.sip148
-rw-r--r--python/pyqt/sip/qtsql/qsqldatabase.sip154
-rw-r--r--python/pyqt/sip/qtsql/qsqldriver.sip93
-rw-r--r--python/pyqt/sip/qtsql/qsqleditorfactory.sip57
-rw-r--r--python/pyqt/sip/qtsql/qsqlerror.sip68
-rw-r--r--python/pyqt/sip/qtsql/qsqlfield.sip95
-rw-r--r--python/pyqt/sip/qtsql/qsqlform.sip74
-rw-r--r--python/pyqt/sip/qtsql/qsqlindex.sip64
-rw-r--r--python/pyqt/sip/qtsql/qsqlpropertymap.sip63
-rw-r--r--python/pyqt/sip/qtsql/qsqlquery.sip115
-rw-r--r--python/pyqt/sip/qtsql/qsqlrecord.sip178
-rw-r--r--python/pyqt/sip/qtsql/qsqlresult.sip73
-rw-r--r--python/pyqt/sip/qtsql/qsqlselectcursor.sip92
-rw-r--r--python/pyqt/sip/qtsql/qtsqlmod.sip88
-rw-r--r--python/pyqt/sip/qttable/copying.sip51
-rw-r--r--python/pyqt/sip/qttable/qtable.sip532
-rw-r--r--python/pyqt/sip/qttable/qttablemod.sip70
-rw-r--r--python/pyqt/sip/qtui/copying.sip51
-rw-r--r--python/pyqt/sip/qtui/qtuimod.sip71
-rw-r--r--python/pyqt/sip/qtui/qwidgetfactory.sip63
-rw-r--r--python/pyqt/sip/qtxml/copying.sip51
-rw-r--r--python/pyqt/sip/qtxml/qdom.sip866
-rw-r--r--python/pyqt/sip/qtxml/qtxmlmod.sip80
-rw-r--r--python/sip/ChangeLog3814
-rw-r--r--python/sip/LICENSE45
-rw-r--r--python/sip/NEWS198
-rw-r--r--python/sip/README5
-rw-r--r--python/sip/README.HP-UX32
-rw-r--r--python/sip/THANKS16
-rw-r--r--python/sip/TODO55
-rw-r--r--python/sip/configure.py417
-rw-r--r--python/sip/custom/custom.c60
-rw-r--r--python/sip/custom/customw.c64
-rw-r--r--python/sip/custom/mkcustom.py87
-rw-r--r--python/sip/doc/default.css229
-rw-r--r--python/sip/doc/sipref.html5281
-rw-r--r--python/sip/doc/sipref.txt5353
-rw-r--r--python/sip/sipdistutils.py90
-rw-r--r--python/sip/sipgen/export.c998
-rw-r--r--python/sip/sipgen/gencode.c10820
-rw-r--r--python/sip/sipgen/heap.c115
-rw-r--r--python/sip/sipgen/lexer.c3266
-rw-r--r--python/sip/sipgen/lexer.l567
-rw-r--r--python/sip/sipgen/main.c484
-rw-r--r--python/sip/sipgen/parser.c7526
-rw-r--r--python/sip/sipgen/parser.h268
-rw-r--r--python/sip/sipgen/parser.y4945
-rw-r--r--python/sip/sipgen/sip.h1027
-rw-r--r--python/sip/sipgen/sipgen.sbf16
-rw-r--r--python/sip/sipgen/transform.c2856
-rw-r--r--python/sip/siplib/bool.cpp19
-rw-r--r--python/sip/siplib/objmap.c264
-rw-r--r--python/sip/siplib/qtlib.c1254
-rw-r--r--python/sip/siplib/sip.h1302
-rw-r--r--python/sip/siplib/sipint.h121
-rw-r--r--python/sip/siplib/siplib.c7902
-rw-r--r--python/sip/siplib/siplib.sbf16
-rw-r--r--python/sip/siplib/threads.c223
-rw-r--r--python/sip/siputils.py2354
-rw-r--r--python/sip/specs/aix-g++79
-rw-r--r--python/sip/specs/aix-g++-6479
-rw-r--r--python/sip/specs/aix-xlc82
-rw-r--r--python/sip/specs/aix-xlc-6484
-rw-r--r--python/sip/specs/bsdi-g++84
-rw-r--r--python/sip/specs/cygwin-g++86
-rw-r--r--python/sip/specs/darwin-g++89
-rw-r--r--python/sip/specs/dgux-g++77
-rw-r--r--python/sip/specs/freebsd-g++80
-rw-r--r--python/sip/specs/freebsd-g++3480
-rw-r--r--python/sip/specs/freebsd-g++4080
-rw-r--r--python/sip/specs/freebsd-icc105
-rw-r--r--python/sip/specs/hpux-acc103
-rw-r--r--python/sip/specs/hpux-acc-64124
-rw-r--r--python/sip/specs/hpux-acc-o64123
-rw-r--r--python/sip/specs/hpux-cc100
-rw-r--r--python/sip/specs/hpux-g++85
-rw-r--r--python/sip/specs/hpux-g++-6485
-rw-r--r--python/sip/specs/hpuxi-acc122
-rw-r--r--python/sip/specs/hpuxi-acc-64122
-rw-r--r--python/sip/specs/hurd-g++77
-rw-r--r--python/sip/specs/irix-cc113
-rw-r--r--python/sip/specs/irix-cc-64113
-rw-r--r--python/sip/specs/irix-cc-o3289
-rw-r--r--python/sip/specs/irix-g++84
-rw-r--r--python/sip/specs/irix-g++-6484
-rw-r--r--python/sip/specs/linux-cxx78
-rw-r--r--python/sip/specs/linux-ecc-6484
-rw-r--r--python/sip/specs/linux-g++90
-rw-r--r--python/sip/specs/linux-g++-3290
-rw-r--r--python/sip/specs/linux-g++-6493
-rw-r--r--python/sip/specs/linux-icc107
-rw-r--r--python/sip/specs/linux-kcc93
-rw-r--r--python/sip/specs/linux-kylix82
-rw-r--r--python/sip/specs/linux-lsb90
-rw-r--r--python/sip/specs/linux-pgcc82
-rw-r--r--python/sip/specs/lynxos-g++85
-rw-r--r--python/sip/specs/macx-g++97
-rw-r--r--python/sip/specs/macx-mwerks25
-rw-r--r--python/sip/specs/macx-pbuilder83
-rw-r--r--python/sip/specs/macx-xcode83
-rw-r--r--python/sip/specs/macx-xlc94
-rw-r--r--python/sip/specs/netbsd-g++80
-rw-r--r--python/sip/specs/openbsd-g++81
-rw-r--r--python/sip/specs/qnx-g++81
-rw-r--r--python/sip/specs/reliant-cds85
-rw-r--r--python/sip/specs/reliant-cds-6485
-rw-r--r--python/sip/specs/sco-cc78
-rw-r--r--python/sip/specs/sco-g++77
-rw-r--r--python/sip/specs/solaris-cc85
-rw-r--r--python/sip/specs/solaris-cc-64102
-rw-r--r--python/sip/specs/solaris-g++87
-rw-r--r--python/sip/specs/solaris-g++-64104
-rw-r--r--python/sip/specs/tru64-cxx79
-rw-r--r--python/sip/specs/tru64-g++79
-rw-r--r--python/sip/specs/unixware-cc84
-rw-r--r--python/sip/specs/unixware-g++81
-rw-r--r--python/sip/specs/win32-borland90
-rw-r--r--python/sip/specs/win32-g++102
-rw-r--r--python/sip/specs/win32-icc87
-rw-r--r--python/sip/specs/win32-msvc86
-rw-r--r--python/sip/specs/win32-msvc.net88
-rw-r--r--python/sip/specs/win32-msvc200588
-rw-r--r--python/sip/specs/win32-watcom69
2481 files changed, 442473 insertions, 0 deletions
diff --git a/python/Makefile.am b/python/Makefile.am
new file mode 100644
index 00000000..dfb84740
--- /dev/null
+++ b/python/Makefile.am
@@ -0,0 +1,157 @@
+#
+# Simon Edwards <simon@simonzone.com>
+#
+
+site_packages = @PYTHONMODDIR@/site-packages
+sip_dir = @datadir@/sip/
+qt_includes = @qt_includes@
+qt_dir = $(dir @qt_includes@)
+
+python_inc_dir = `echo @PYTHONINC@ | sed s/-I//`
+
+# qassistantclient.h
+# qlist.h
+
+noinst_DATA = build_pyqt_pykde
+EXTRA_DIST = sip pyqt pykde
+DISTCLEANFILES = sipdone prepqt prepkde
+
+build_pyqt_pykde: prepkde
+ @(cd pyqt && $(MAKE))
+ @(cd pykde && $(MAKE))
+
+sipdone:
+ -mkdir sip
+ export builddir=`pwd` ; \
+ cd $(srcdir)/sip ; \
+ export QTDIR=${qt_dir} ; \
+ export PYTHONPATH=$$builddir/sip:$$PYTHONPATH ; \
+ @PYTHON@ configure.py -b @bindir@ -d ${site_packages} -e ${python_inc_dir} -v ${sip_dir}
+ @(cd sip ; $(MAKE))
+ echo "" > sipdone
+
+prepqt: sipdone
+ @# A quick hack to make sure that the configure.py programs from PyQt/PyKDE both get the correct sip config.
+ -mkdir pyqt
+ export builddir=`pwd` ; \
+ export abssrcdir=`cd $(srcdir) && pwd` ; \
+ sed "s#sip_bin':.*\$$#sip_bin': '$$builddir/sip/sipgen/sip',#g;s#sip_inc_dir':.*\$$#sip_inc_dir': '$$abssrcdir/sip/siplib',#g" sip/sipconfig.py > pyqt/sipconfig.py
+ export builddir=`pwd` ; \
+ export PYTHONPATH=$$builddir/pyqt:$$PYTHONPATH ; \
+ cd $(srcdir)/pyqt ; \
+ export QTDIR=${qt_dir} ; \
+ echo "yes" | @PYTHON@ configure.py -i -b @bindir@ -d ${site_packages} -v ${sip_dir}
+ echo "" > prepqt
+
+prepkde: prepqt
+ -mkdir pykde
+ @# PyKDE's configure needs to pick up the correct pyqtconfig.py
+ export builddir=`pwd` ; \
+ export abssrcdir=`cd $(srcdir) && pwd` ; \
+ sed "s#sip_bin':.*\$$#sip_bin': '$$builddir/sip/sipgen/sip',#g;s#sip_inc_dir':.*\$$#sip_inc_dir': '$$abssrcdir/sip/siplib',#g" sip/sipconfig.py > pykde/sipconfig.py ; \
+ sed "s#pyqt_sip_dir':.*\$$#pyqt_sip_dir': '$$abssrcdir/pyqt/sip',#g" pyqt/pyqtconfig.py > pykde/pyqtconfig.py
+ export builddir=`pwd` ; \
+ export PYTHONPATH=$$builddir/pykde:$$PYTHONPATH ; \
+ cd $(srcdir)/pykde ; \
+ export QTDIR=${qt_dir} ; \
+ @PYTHON@ configure.py -i -k @prefix@ -d ${site_packages} -v ${sip_dir}
+ echo "" > prepkde
+
+install:
+ @(cd sip && $(MAKE) install)
+ @(cd pyqt && $(MAKE) install)
+ @(cd pykde && $(MAKE) install)
+
+uninstall:
+ @(cd pykde && $(MAKE) uninstall)
+ @(cd pyqt && $(MAKE) uninstall)
+ @(cd sip && $(MAKE) uninstall)
+
+clean:
+ -(cd sip && $(MAKE) clean)
+ -(cd pyqt && $(MAKE) clean)
+ -(cd pykde && $(MAKE) clean)
+ -rm sipdone
+ -rm prepqt
+ -rm prepkde
+
+dist-hook:
+ -rm -rf `find $(distdir) -name CVS`
+ -rm -rf `find $(distdir) -name Makefile`
+ -rm -rf `find $(distdir) -name "*.pyc"`
+ -rm -rf `find $(distdir) -name "*.o"`
+ -rm -rf `find $(distdir) -name "*.so"`
+ -rm -rf $(distdir)/sipdone
+ -rm -rf $(distdir)/prepqt
+ -rm -rf $(distdir)/prepkde
+ -rm -rf $(distdir)/sip/sipgen/sip
+ -rm -rf $(distdir)/pyqt/cfgtest
+ -rm -rf $(distdir)/pyqt/mkfeatures
+ -rm -rf $(distdir)/pyqt/sipconfig.py
+ -rm -rf $(distdir)/pyqt/pyqtconfig.py
+ -rm -rf $(distdir)/pyqt/qt
+ -rm -rf $(distdir)/pyqt/qtcanvas
+ -rm -rf $(distdir)/pyqt/qtext
+ -rm -rf $(distdir)/pyqt/qtgl
+ -rm -rf $(distdir)/pyqt/qtnetwork
+ -rm -rf $(distdir)/pyqt/qtsql
+ -rm -rf $(distdir)/pyqt/qttable
+ -rm -rf $(distdir)/pyqt/qtui
+ -rm -rf $(distdir)/pyqt/qtxml
+ -rm -rf $(distdir)/pykde/sipconfig.py
+ -rm -rf $(distdir)/pykde/pyqtconfig.py
+ -rm -rf $(distdir)/pykde/pykdeconfig.py
+ -rm -rf $(distdir)/pykde/dcop
+ -rm -rf $(distdir)/pykde/kdecore
+ -rm -rf $(distdir)/pykde/kdefx
+ -rm -rf $(distdir)/pykde/kdeprint
+ -rm -rf $(distdir)/pykde/kdesu
+ -rm -rf $(distdir)/pykde/kdeui
+ -rm -rf $(distdir)/pykde/kfile
+ -rm -rf $(distdir)/pykde/khtml
+ -rm -rf $(distdir)/pykde/kio
+ -rm -rf $(distdir)/pykde/kmdi
+ -rm -rf $(distdir)/pykde/kparts
+ -rm -rf $(distdir)/pykde/kspell
+
+distclean-local:
+ -(cd sip && $(MAKE) distclean)
+ -(cd pyqt && $(MAKE) distclean)
+ -(cd pykde && $(MAKE) distclean)
+ -rm -rf sip/sipgen/sip
+ -rm -rf sip/sipconfig.py
+ -rm -rf pyqt/cfgtest
+ -rm -rf pyqt/cfgtest.cpp
+ -rm -rf pyqt/features
+ -rm -rf pyqt/mkfeatures
+ -rm -rf pyqt/mkfeatures.cpp
+ -rm -rf pyqt/sipconfig.py
+ -rm -rf pyqt/pyqtconfig.py
+ -rm -rf pyqt/qt
+ -rm -rf pyqt/qtcanvas
+ -rm -rf pyqt/qtext
+ -rm -rf pyqt/qtgl
+ -rm -rf pyqt/qtnetwork
+ -rm -rf pyqt/qtsql
+ -rm -rf pyqt/qttable
+ -rm -rf pyqt/qtui
+ -rm -rf pyqt/qtxml
+ -rm -rf pykde/sipconfig.py
+ -rm -rf pykde/pyqtconfig.py
+ -rm -rf pykde/pykdeconfig.py
+ -rm -rf pykde/dcop
+ -rm -rf pykde/kdecore
+ -rm -rf pykde/kdefx
+ -rm -rf pykde/kdeprint
+ -rm -rf pykde/kdesu
+ -rm -rf pykde/kdeui
+ -rm -rf pykde/kfile
+ -rm -rf pykde/khtml
+ -rm -rf pykde/kio
+ -rm -rf pykde/kmdi
+ -rm -rf pykde/kparts
+ -rm -rf pykde/kspell
+ -rm -rf pykde/sip/kspell/kspellmod.sip
+ -rm -rf pykde/sip/khtml/khtmlmod.sip
+ -rm -rf pykde/sip/kdecore/kdecoremod.sip
+ -rm -rf pykde/sip/kdeui/kdeuimod.sip
diff --git a/python/README.copy b/python/README.copy
new file mode 100644
index 00000000..bb11f868
--- /dev/null
+++ b/python/README.copy
@@ -0,0 +1,29 @@
+This directory holds a copy of:
+
+* SIP 4.2.1, Python binding generator for C++ from Riverbank Computing.
+ http://www.riverbankcomputing.co.uk/sip/index.php
+ Published under basically the Python License. (=GPL compatible)
+
+* PyQt (PyQt-x11-gpl-3.14.1), Python bindings for Qt from Riverbank Computing.
+ http://www.riverbankcomputing.co.uk/pyqt/index.php
+ Published under the GPL.
+
+* PyKDE snapshot 20050628, Python bindings for KDE from Riverbank Computing.
+ http://www.riverbankcomputing.co.uk/pykde/index.php
+ Published under the GPL.
+
+This set of software has been patched to work 'out of the box' with this
+version of KDE.
+
+If you want QScintilla support (needed by the Eric3 Python IDE), then be
+sure to install QScintilla before building these bindings. QScintilla
+can be downloaded from here:
+
+http://www.riverbankcomputing.co.uk/qscintilla/index.php
+
+
+All things related to development with Qt/KDE using Python can be discussed
+on the PyKDE mailing list:
+http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
+
+Maintainer: Simon Edwards <simon@simonzone.com> \ No newline at end of file
diff --git a/python/configure.in.in b/python/configure.in.in
new file mode 100644
index 00000000..a90293f2
--- /dev/null
+++ b/python/configure.in.in
@@ -0,0 +1,11 @@
+
+KDE_CHECK_PYTHON(1.5)
+# FIXME which version do we need? dcoppython requires 1.5 but we need 2.3 I think.
+
+if test -z "$LIBPYTHON" || test -z "$PYTHONINC"; then
+ DO_NOT_COMPILE="$DO_NOT_COMPILE python"
+fi
+
+#AC_ARG_VAR([PYTHON])
+#AC_PATH_PROG([PYTHON],[python])
+#AC_OUTPUT(python/Makefile)
diff --git a/python/mungepyqtconfig.sed b/python/mungepyqtconfig.sed
new file mode 100644
index 00000000..af4f2d00
--- /dev/null
+++ b/python/mungepyqtconfig.sed
@@ -0,0 +1 @@
+s/pyqt_sip_dir':.*$/pyqt_sip_dir': '..\/pyqt\/sip',/g
diff --git a/python/mungesipconfig.sed b/python/mungesipconfig.sed
new file mode 100644
index 00000000..a76367e7
--- /dev/null
+++ b/python/mungesipconfig.sed
@@ -0,0 +1,2 @@
+s/sip_bin':.*$/sip_bin': '..\/sip\/sipgen\/sip',/g
+s/sip_inc_dir':.*$/sip_inc_dir': '..\/..\/sip\/siplib',/g
diff --git a/python/pykde/AUTHORS b/python/pykde/AUTHORS
new file mode 100644
index 00000000..31812665
--- /dev/null
+++ b/python/pykde/AUTHORS
@@ -0,0 +1,6 @@
+Jim Bublitz (jbublitz@nwinternet.com)
+ PyKDE(KDE2, KDE3)
+
+Phil Thompson (phil@river-bank.demon.co.uk)
+ sip, PyQt, original PyKDE (KDE1) and loads of good advice and help
+
diff --git a/python/pykde/BUGS b/python/pykde/BUGS
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/python/pykde/BUGS
diff --git a/python/pykde/COPYING b/python/pykde/COPYING
new file mode 100644
index 00000000..5139a0c5
--- /dev/null
+++ b/python/pykde/COPYING
@@ -0,0 +1,343 @@
+The GNU GENERAL PUBLIC LICENSE
+------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/python/pykde/ChangeLog b/python/pykde/ChangeLog
new file mode 100644
index 00000000..3bd0311b
--- /dev/null
+++ b/python/pykde/ChangeLog
@@ -0,0 +1,602 @@
+------------------------------------------------------------------------
+r124 | (jim) | 2006-01-21 11:33:36 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+removed kkeyserver.sip references from all .diff files
+
+------------------------------------------------------------------------
+r123 | (jim) | 2006-01-21 11:31:03 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+updated docs
+
+------------------------------------------------------------------------
+r122 | (jim) | 2006-01-21 10:46:51 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+fixed TOC links in classref doc files
+
+------------------------------------------------------------------------
+r121 | (jim) | 2006-01-21 01:20:30 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+Initial doc update
+
+------------------------------------------------------------------------
+r120 | (jim) | 2006-01-20 17:37:06 -0800 (Fri, 20 Jan 2006) | 3 lines
+
+fixed QValueList<KConfigSkeleton::ItemEnum::Choice> code
+and fixed dcopexport.py handling of void return types
+
+------------------------------------------------------------------------
+r119 | (jim) | 2006-01-20 12:14:10 -0800 (Fri, 20 Jan 2006) | 2 lines
+
+added X11 include
+
+------------------------------------------------------------------------
+r118 | (jim) | 2006-01-18 23:27:15 -0800 (Wed, 18 Jan 2006) | 2 lines
+
+backed out ambiguous/inaccessible methods in KConfigSkeleton
+
+------------------------------------------------------------------------
+r117 | (jim) | 2006-01-18 23:00:34 -0800 (Wed, 18 Jan 2006) | 3 lines
+
+correct versioning error on addItem* methods in
+KConfigSkeleton
+
+------------------------------------------------------------------------
+r116 | (jim) | 2006-01-18 22:08:35 -0800 (Wed, 18 Jan 2006) | 3 lines
+
+fixes for backward compatibility with older KDE, gcc,
+sip
+
+------------------------------------------------------------------------
+r115 | (jim) | 2006-01-18 21:12:02 -0800 (Wed, 18 Jan 2006) | 2 lines
+
+PyKDE for KDE 3.5.0 complete
+
+------------------------------------------------------------------------
+r114 | (jim) | 2006-01-17 01:51:20 -0800 (Tue, 17 Jan 2006) | 2 lines
+
+all modules working for KDE 3.4.3 - minor fixes
+
+------------------------------------------------------------------------
+r113 | (jim) | 2006-01-16 22:13:25 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresources touchup
+
+------------------------------------------------------------------------
+r112 | (jim) | 2006-01-16 21:57:28 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+update extra/ for KDE 3.5.0
+
+------------------------------------------------------------------------
+r111 | (jim) | 2006-01-16 21:56:14 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+minor fix
+
+------------------------------------------------------------------------
+r109 | (jim) | 2006-01-16 20:35:03 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+yet more debugging kabc, kresources
+
+------------------------------------------------------------------------
+r108 | (jim) | 2006-01-16 20:22:55 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+more debugging kabc, kresources
+
+------------------------------------------------------------------------
+r107 | (jim) | 2006-01-16 20:15:50 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+more kabc, kresource debugging
+
+------------------------------------------------------------------------
+r106 | (jim) | 2006-01-16 20:12:37 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresource debugging
+
+------------------------------------------------------------------------
+r105 | (jim) | 2006-01-16 20:08:37 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresources through KDE 3.4.3
+
+------------------------------------------------------------------------
+r104 | (jim) | 2006-01-16 18:33:10 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+removed erroneous kresources .diff file
+
+------------------------------------------------------------------------
+r103 | (jim) | 2006-01-16 18:24:05 -0800 (Mon, 16 Jan 2006) | 3 lines
+
+more kabc and kresources debugging - compiles
+through KDE 330
+
+------------------------------------------------------------------------
+r102 | (jim) | 2006-01-16 00:47:43 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+debug configure.py, kabc, kresources
+
+------------------------------------------------------------------------
+r101 | (jim) | 2006-01-15 22:27:45 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+fixed typo in configure.py
+
+------------------------------------------------------------------------
+r100 | (jim) | 2006-01-15 22:22:50 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+added kabc and kresources through KDE 3.3.0
+
+------------------------------------------------------------------------
+r97 | (jim) | 2006-01-15 15:04:44 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+upgrade to KDE 3.4.3
+
+------------------------------------------------------------------------
+r95 | (jim) | 2006-01-15 10:47:15 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+added 'extra' files
+
+------------------------------------------------------------------------
+r94 | (jim) | 2006-01-15 10:26:53 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+Update to KDE 3.4.2
+
+------------------------------------------------------------------------
+r93 | (jim) | 2006-01-14 14:12:52 -0800 (Sat, 14 Jan 2006) | 4 lines
+
+typedef'd IntList from QValueList<int> so IntList()
+can be used as intializer for defaults; removed C++
+for second ctors ItemInt64 and ItemUInt64
+
+------------------------------------------------------------------------
+r92 | (jim) | 2006-01-14 14:03:35 -0800 (Sat, 14 Jan 2006) | 2 lines
+
+reversed kdecore/kconfigskeleton change
+
+------------------------------------------------------------------------
+r91 | (jim) | 2006-01-14 13:40:37 -0800 (Sat, 14 Jan 2006) | 2 lines
+
+remove erroneous files
+
+------------------------------------------------------------------------
+r90 | (jim) | 2006-01-14 13:38:39 -0800 (Sat, 14 Jan 2006) | 5 lines
+
+Fix sio syntax errors in kdecore/kconfigskeleton.sip
+(QValueList<int>() as arg default value) and
+kio/slaveinterface.sip (%TypeHeaderCode in namespace
+instead of %ModuleHeaderCode outside)
+
+------------------------------------------------------------------------
+r89 | (jim) | 2006-01-14 13:25:39 -0800 (Sat, 14 Jan 2006) | 5 lines
+
+Upgrade to sip snapshot (future sip 4.4 - sipTransferObj stuff
+and eliminate most typedefs to prevent auto mapped types); add
+patch code to KConfigSkeleton addItem* and Item* ctors for
+scalar types;minor bugfixes (sipForceConvertToQString anachronisms)
+
+------------------------------------------------------------------------
+r88 | (jim) | 2005-12-18 11:20:55 -0800 (Sun, 18 Dec 2005) | 2 lines
+
+Version dirSize in kdirsize.sip for older KDE
+
+------------------------------------------------------------------------
+r87 | (jim) | 2005-12-18 09:51:33 -0800 (Sun, 18 Dec 2005) | 4 lines
+
+Fixed versioning bug for enum Other in kshortcutlist.sip;
+added fully-qualified names to two 'Other' arguments in
+method calls
+
+------------------------------------------------------------------------
+r86 | (jim) | 2005-12-17 14:44:01 -0800 (Sat, 17 Dec 2005) | 3 lines
+
+Removed incorrect (later version) %Includes from
+sip.in files
+
+------------------------------------------------------------------------
+r85 | (jim) | 2005-12-17 14:24:58 -0800 (Sat, 17 Dec 2005) | 2 lines
+
+Added missing @mark@ to sip.in files
+
+------------------------------------------------------------------------
+r84 | (jim) | 2005-12-17 13:39:26 -0800 (Sat, 17 Dec 2005) | 3 lines
+
+Removed longlong/ulonglong from kzip (now in kdecore for
+older KDE versions), and versioned QPtrList<KConfigDialogManager>
+
+------------------------------------------------------------------------
+r83 | (jim) | 2005-12-17 13:28:33 -0800 (Sat, 17 Dec 2005) | 2 lines
+
+Extended longlong and ulonglong to earlier KDE versions
+
+------------------------------------------------------------------------
+r82 | (jim) | 2005-10-15 17:40:13 -0700 (Sat, 15 Oct 2005) | 2 lines
+
+Updated %Timeline for KDE 3.4.1
+
+------------------------------------------------------------------------
+r81 | (jim) | 2005-10-15 17:38:51 -0700 (Sat, 15 Oct 2005) | 5 lines
+
+Create ChangeLog from svn logs
+Change PyKDE version to 3.5.0
+Update KDE versions to 3.4.1
+
+
+------------------------------------------------------------------------
+r80 | (jim) | 2005-10-15 17:23:54 -0700 (Sat, 15 Oct 2005) | 3 lines
+
+Modified configure.py to detect compiler and
+set default concatenation appropriately
+
+------------------------------------------------------------------------
+r79 | (jim) | 2005-10-15 17:22:13 -0700 (Sat, 15 Oct 2005) | 2 lines
+
+fixup
+
+------------------------------------------------------------------------
+r78 | (jim) | 2005-10-13 11:45:39 -0700 (Thu, 13 Oct 2005) | 8 lines
+
+Replaced sipNewCppToSelf instances with sipBuildResult
+Cleaned up sip files for gcc 3.4.x/4.0.x compatibility
+Dropped kdesu (undefined symbol problem)
+Added -fno-rtti to kdeprint compile
+Dropped driver.sip from kdeprint
+Updated configure.py to use pyqtconfig.py for Qt environment info
+Backed out konsolepart code (undefined symbol problem)
+
+------------------------------------------------------------------------
+r76 | (jim) | 2005-07-27 23:27:34 -0700 (Wed, 27 Jul 2005) | 2 lines
+
+update configure.py for konsolePart
+
+------------------------------------------------------------------------
+r75 | (jim) | 2005-07-27 21:46:51 -0700 (Wed, 27 Jul 2005) | 2 lines
+
+added ConvertToSubclassCode entry for konsolePart
+
+------------------------------------------------------------------------
+r74 | (jim) | 2005-07-26 16:58:53 -0700 (Tue, 26 Jul 2005) | 2 lines
+
+added konsolePart class
+
+------------------------------------------------------------------------
+r73 | (jim) | 2005-06-28 16:27:53 -0700 (Tue, 28 Jun 2005) | 2 lines
+
+KDE 3.4.1 upgrade
+
+------------------------------------------------------------------------
+r72 | (jim) | 2005-06-28 14:58:07 -0700 (Tue, 28 Jun 2005) | 2 lines
+
+added bool type to DCOP extensions
+
+------------------------------------------------------------------------
+r71 | (jim) | 2005-06-18 19:16:03 -0700 (Sat, 18 Jun 2005) | 2 lines
+
+Added explicit link of kdeui for kspell module
+
+------------------------------------------------------------------------
+r70 | (jim) | 2005-06-18 17:59:10 -0700 (Sat, 18 Jun 2005) | 2 lines
+
+Added private dtors to keep sip 4.2 happy
+
+------------------------------------------------------------------------
+r69 | (jim) | 2005-03-18 16:05:34 -0800 (Fri, 18 Mar 2005) | 3 lines
+
+fixed cast in KURL::List operator + that was causing problems
+for gcc 4
+
+------------------------------------------------------------------------
+r68 | (jim) | 2005-03-16 08:50:52 -0800 (Wed, 16 Mar 2005) | 2 lines
+
+patch for DCOP line breaks
+
+------------------------------------------------------------------------
+r67 | (jim) | 2005-03-16 08:49:37 -0800 (Wed, 16 Mar 2005) | 2 lines
+
+Fix typos in previous patch
+
+------------------------------------------------------------------------
+r66 | (jim) | 2005-03-15 16:07:18 -0800 (Tue, 15 Mar 2005) | 2 lines
+
+Added ConvertToSubclassCode blocks for kmdi, kutils
+
+------------------------------------------------------------------------
+r65 | (jim) | 2005-03-10 10:41:57 -0800 (Thu, 10 Mar 2005) | 2 lines
+
+added kkeyserver.h to extra/kde340
+
+------------------------------------------------------------------------
+r64 | (jim) | 2005-03-08 14:14:58 -0800 (Tue, 08 Mar 2005) | 3 lines
+
+Fixed case problem in configure.py distro check; fixed default
+value in KURL::cleanPath
+
+------------------------------------------------------------------------
+r62 | (jim) | 2005-03-06 21:31:50 -0800 (Sun, 06 Mar 2005) | 2 lines
+
+fixed emums in templates/annotated
+
+------------------------------------------------------------------------
+r61 | (jim) | 2005-03-06 21:30:48 -0800 (Sun, 06 Mar 2005) | 2 lines
+
+fixed enums in examples, templates; fixed KIconThemeDir ref
+
+------------------------------------------------------------------------
+r60 | (jim) | 2005-03-05 00:57:44 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+added -L option for lib path
+
+------------------------------------------------------------------------
+r59 | (jim) | 2005-03-05 00:47:24 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+removed kjs support
+
+------------------------------------------------------------------------
+r58 | (jim) | 2005-03-05 00:42:59 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+update extra/kde340 h files
+
+------------------------------------------------------------------------
+r57 | (jim) | 2005-03-05 00:36:09 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+update .easibox - extra/kde340
+
+------------------------------------------------------------------------
+r56 | (jim) | 2005-03-05 00:34:34 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+added extra/kde340
+
+------------------------------------------------------------------------
+r55 | (jim) | 2005-03-04 23:58:35 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+kmdimod.sip.in one more time
+
+------------------------------------------------------------------------
+r54 | (jim) | 2005-03-04 23:53:37 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+kmdimod.sip.in again
+
+------------------------------------------------------------------------
+r53 | (jim) | 2005-03-04 23:37:43 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed kmdimod.sip.in and kutils.sip.in
+
+------------------------------------------------------------------------
+r52 | (jim) | 2005-03-04 23:08:29 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+correct qt path in kutils.sip.in
+
+------------------------------------------------------------------------
+r51 | (jim) | 2005-03-04 23:04:54 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+%Include bytearray.sip missing from kdecore.sip.in
+
+------------------------------------------------------------------------
+r50 | (jim) | 2005-03-04 22:59:10 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed missing %Feature in dcopmod.sip.in
+
+------------------------------------------------------------------------
+r49 | (jim) | 2005-03-04 22:55:43 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed paths in sip.in files
+
+------------------------------------------------------------------------
+r48 | (jim) | 2005-03-04 22:49:00 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+doc updates for PyKDE 4.0
+
+------------------------------------------------------------------------
+r47 | (jim) | 2005-03-04 22:28:30 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+PyKDE 4.0 docs
+
+------------------------------------------------------------------------
+r46 | (jim) | 2005-03-04 22:02:00 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+new configure.py for PyKDE 4.0
+
+------------------------------------------------------------------------
+r45 | (jim) | 2005-03-04 22:00:42 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+PyKDE 4.0
+
+------------------------------------------------------------------------
+r42 | (jim) | 2005-03-01 16:20:01 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Fixed KActionCollection for Mandrake
+
+------------------------------------------------------------------------
+r41 | (jim) | 2005-03-01 14:55:49 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Fixed pid_t typing problems (QValueList)
+
+------------------------------------------------------------------------
+r40 | (jim) | 2005-03-01 13:34:04 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Changed pid_t type from int to long; enabled KParts::URLArgs::metaData ()
+
+------------------------------------------------------------------------
+r39 | (jim) | 2005-02-28 23:49:09 -0800 (Mon, 28 Feb 2005) | 4 lines
+
+KFileMetaInfo typedefs removed; KProcessController versioning
+corrected; KRecentDirs (and extra/ hfiles) added; pykde332.prj
+added
+
+------------------------------------------------------------------------
+r38 | (jim) | 2005-02-28 22:34:42 -0800 (Mon, 28 Feb 2005) | 2 lines
+
+added KHTMLPart to %ConvertToSubclassCode; install kdepyuic
+
+------------------------------------------------------------------------
+r37 | (jim) | 2005-02-03 00:07:38 -0800 (Thu, 03 Feb 2005) | 2 lines
+
+Added KURL import to dcopext.py
+
+------------------------------------------------------------------------
+r36 | (jim) | 2005-01-04 11:38:01 -0800 (Tue, 04 Jan 2005) | 2 lines
+
+Add extra subdir
+
+------------------------------------------------------------------------
+r35 | (jim) | 2005-01-03 21:38:17 -0800 (Mon, 03 Jan 2005) | 2 lines
+
+KDE 3.3.2 and sip 4.2 updates
+
+------------------------------------------------------------------------
+r33 | (jim) | 2004-11-28 13:58:07 -0800 (Sun, 28 Nov 2004) | 2 lines
+
+Modified kmdidefines.sip for sip 4.2 enumerator name problem
+
+------------------------------------------------------------------------
+r32 | (jim) | 2004-11-28 13:56:19 -0800 (Sun, 28 Nov 2004) | 2 lines
+
+Removed pykdeconfig.py from source control
+
+------------------------------------------------------------------------
+r31 | (jim) | 2004-11-27 23:29:03 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+docs
+
+------------------------------------------------------------------------
+r30 | (jim) | 2004-11-27 23:07:07 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+docs
+
+------------------------------------------------------------------------
+r29 | (jim) | 2004-11-27 22:17:49 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Missing comma
+
+------------------------------------------------------------------------
+r28 | (jim) | 2004-11-27 22:16:34 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+PyKDE for KDE 3.3.1
+
+------------------------------------------------------------------------
+r27 | (jim) | 2004-11-27 21:16:55 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Revise project files
+
+------------------------------------------------------------------------
+r26 | (jim) | 2004-11-27 17:47:35 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Updating to KDE 3.3.1
+
+------------------------------------------------------------------------
+r25 | (jim) | 2004-08-25 16:43:40 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Updated change log
+
+------------------------------------------------------------------------
+r24 | (jim) | 2004-08-25 16:41:33 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Updated numbering to 3.11.3
+
+------------------------------------------------------------------------
+r23 | (jim) | 2004-08-25 15:34:33 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Added post proc for WId in kwinmodule signals
+
+------------------------------------------------------------------------
+r22 | (jim) | 2004-08-21 16:50:33 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+same khtml_part patch as the previous rev ???
+
+------------------------------------------------------------------------
+r21 | (jim) | 2004-08-21 16:42:06 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+khtml_part: fixed enum values for sip3.10.2 with KDE 3.3.0
+
+------------------------------------------------------------------------
+r20 | (jim) | 2004-08-21 01:10:05 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+Update version numbers in docs
+
+------------------------------------------------------------------------
+r19 | (jim) | 2004-08-21 01:03:27 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+docs for final release
+
+------------------------------------------------------------------------
+r18 | (jim) | 2004-08-20 18:50:22 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Fixed access specifier for copy ctor on KProcessController
+
+------------------------------------------------------------------------
+r17 | (jim) | 2004-08-20 10:00:27 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Updated to KDE 3.3.0 final
+
+------------------------------------------------------------------------
+r16 | (jim) | 2004-08-20 09:59:28 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Removed khtml_part.sip (different versions for different KDE versions)
+
+------------------------------------------------------------------------
+r15 | (jim) | 2004-08-19 23:52:31 -0700 (Thu, 19 Aug 2004) | 2 lines
+
+Added svnmerge, svnmergedocs
+
+------------------------------------------------------------------------
+r14 | (jim) | 2004-08-16 19:42:57 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+change spaces to tabs in postproc/appQuit
+
+------------------------------------------------------------------------
+r13 | (jim) | 2004-08-16 19:41:25 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Save doc tool mods
+
+------------------------------------------------------------------------
+r12 | (jim) | 2004-08-16 17:44:37 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Updated docs
+
+------------------------------------------------------------------------
+r11 | (jim) | 2004-08-16 17:23:33 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Patched qvariant.h problem in kdecore
+
+------------------------------------------------------------------------
+r10 | (jim) | 2004-08-16 16:40:43 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Corrected kuniqueapplication
+
+------------------------------------------------------------------------
+r9 | (jim) | 2004-08-16 14:43:51 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Fixed h file problems for KDE3.0.x; fixed LONG_LONG for KDE3.0.x with Python 2.3
+
+------------------------------------------------------------------------
+r8 | (jim) | 2004-08-15 21:49:27 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+version before access hides access for KDE < 3.2 in kprocctrl.sip
+
+------------------------------------------------------------------------
+r7 | (jim) | 2004-08-15 12:21:23 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Corrected error - configure.py spippath defined in wrong place
+
+------------------------------------------------------------------------
+r6 | (jim) | 2004-08-15 12:19:37 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Added khtml_part.sip versions
+
+------------------------------------------------------------------------
+r5 | (jim) | 2004-08-15 12:14:27 -0700 (Sun, 15 Aug 2004) | 3 lines
+
+Changes to configure.py for khtml/kutils when KDE < 3.3.0 and
+kutils isn't needed/supported
+
+------------------------------------------------------------------------
+r4 | (jim) | 2004-08-15 12:04:57 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Patches for building with -i option (no concatenation)
+
+------------------------------------------------------------------------
+r3 | (jim) | 2004-08-15 09:13:47 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Ready for KDE 3.3.0beta2
+
+------------------------------------------------------------------------
+r2 | (jim) | 2004-08-13 22:35:48 -0700 (Fri, 13 Aug 2004) | 2 lines
+
+Initial import
+
+------------------------------------------------------------------------
diff --git a/python/pykde/ChangeLog.2001-4 b/python/pykde/ChangeLog.2001-4
new file mode 100644
index 00000000..7eb8682d
--- /dev/null
+++ b/python/pykde/ChangeLog.2001-4
@@ -0,0 +1,185 @@
+2004/08/25 16:44:00 jim
+Released 3.11.3; added post-processing for WId args
+in KWinModule signals; fixed enum in khtml_part (for
+KDE >= 3.3); updated version numbers
+
+2004/08/16 17:57:00 jim
+Updated to KDE3.3.0beta2; minor fixes for earlier
+KDE versions using sip4; fixed KUniqueApplication
+(was missing); added kutils module (kspell2 missing
+from beta2); docs; removed event %ConvertToSubClassCode
+from kparts - was causing problems; other fixes;
+snapshot released
+
+2003/11/22 12:19:00 jim
+Fixed -c switch (was always True); install
+pythonize.h in Python incl dir
+
+2003/11/20 21:11:00 jim
+Fixed -v, -i switches; fixed testPythonize.pro -L
+
+2003/10/13 14:32:00 jim
+added version methods for KDE, PyKDE; revised
+all docs; added class ref docs and viewer;
+revised build.py; bug fixes; libpythonize
+threading fixed (can now have kicker reload
+multiple applets)
+
+2003/9/4 13:05:00 jim
+PyKDE-3.8-rc; finished up pykpanelapplet fix
+from yesterday; removed qxembed from kdeui-kde*.sip
+
+2003/9/3 23:20:00 jim
+No release; removed circular ref between
+libpykpanelapplet and libkdeuicmodule; adjusted
+kpanelapplet.sip, pykpanelapplet.h and build.py
+to implement; moved nullGUIItem to top of
+kmessagebox.sip; considering removing qxembed.sip
+
+2003/9/1 10:52:00 jim
+No release; Revised handling of global.sip and
+kzip.sip for Python 2.3 in build.py
+
+2003/8/31 18:37:00 jim
+No release; Revised generation of rm's in
+pykdepanelapplet Makefile install target to use wild
+cards instead of one per lib link; finished applet
+installer handling of existing .desktop files;
+improved installer validation; updated docs.
+
+2003/8/30 23:05:00 jim
+PyKDE-3.8rc1; finished panel applet support and
+installer; revised docs;
+
+2003/8/25 11:33:00 jim
+No release; %ConvertToSubClassCode for
+KParts::Event subclasses
+
+2003/8/24 11:32:00 jim
+No release. added pythonize, pykpanelapplet
+libs to enable panel applets; revised build.py
+for same; lowered version on KService copy ctor
+to 3.1.0 for Mdk 9.1 compatibility
+
+2003/8/20 23:52:00 jim
+No release. cleaned up operator addition (no
+docs for those yet); add ConvertToSubClassCode
+for all QObject subclasses; deleted obsolete
+files
+
+2003/8/14 11:17:00 jim
+No release; added -u switch to allow disable of
+strict version checking (sip and PyQt snapshot
+version names may be out of sync)
+
+2003/8/13 15:07:00 jim
+PyKDE-3.8-4 bug fixes (also -2 and -3); new build.py
+(no root, SMP, version checks) now builds with
+KDE3.1.3 and/or Qt3.2.0; hack for Python 2.3
+
+2003/8/6 15:23:00 jim
+PyKDE-3.7-1 changes for sip 3.6/3.7 compatibility;
+drop KDE2 support; upgrade through KDE 3.1.3; build.py
+revised - -lqt-mt and -c defaults. added -c-
+switch
+
+2003/4/8 22:12:00 jim
+PyKDE-3.5-2 bug fixes to build.py (PYQT_VERSION
+converted to string, kdeDir fixed); QList instances
+versioned out/replaced by QPtrList for KDE >= 3.0.0;
+changed 'python' invocation to 'sys.executable' in
+examples and build.py postproc calls; changed build.py
+error msg to point to PyKDE list instead of Phil
+
+2003/3/27 12:34:00 jim
+PyKDE-3.5-1 Upgrade through KDE 3.1.1, removed
+kdepyuic.py and README.pyuic; complete rebuild
+using new version of presip; changed license to
+GPL
+
+2002/8/21 11:03:00 jim
+PyKDE-3.3.2-3: Upgrade to KDE 3.0.3; added
+kdepyuic.py and README.pyuic
+
+2002/8/10 09:33:00 jim
+PyKDE-3.3.2-2: fix Qt versioning change
+(build.py)
+
+2002/8/9 13:00:00 jim
+PyKDE-3.3.2-1: handle Qt versioning change in
+Qt 3.0.5 (build.py); add '-I usr/X11R6/include'
+in sip/kde30.kdecore.sip
+
+2002/8/8 13:10:00 jim
+Cleaned up top-level sip files for all versions;
+fixed bug with KIconThemeDir (never released);
+cleaned up docs (released as 3.3.2)
+
+2002/7/22 13:29:00 jim
+(PyKDE-3.3.2 pre release)
+Added -z option to build.py; fixed missing
+'/TransferThis/' in all KListViewItem ctors;
+(not released)
+
+2002/7/19 10:07:00 jim
+PyKDE-3.3.2 pre release: fixed KLineEditDlg bug; fixed
+QValueList bug in MappedTypes (sipMapNewToSelf);
+ugraded to sip/PyQt3.3.2; build system switched
+to PyQt system (t/qmake, concat cpp);sip-in files
+revised, changed to '.sip' in sip/kde* directories;
+added %PrePythonCode for lib loading as req'd (not
+released)
+
+2002/5/15 22:51:00 jim
+PyKDE-3.2.4: namechange back to PyKDE; versioning
+to KDE3.0.0; dropped KDE3.0beta2 support; upgraded
+to sip 3.2.4;build system completely revised;docs
+revised; kapp variable dropped from kdecore; other
+fixes for gcc2.96 compatiblility
+
+2002/3/11 11:01:00 jim
+3.0beta1: versioning to KDE3.0beta2; mapped types
+for KSharedPtr descendants; KParts modified - now
+works; KTrader added; support for long long added;
+created PyKDE2generic and revised build system;
+new examples; removed inaccessible member classes;
+added kdesu (all), kdeprint (>= 2.2.0), kdefx (3.0);
+code cleanup for mapped types, member code, added
+virtual code; general cleanup
+
+
+2002/2/13 09:15:00 jim
+3.0alpha6: versioning to KDE2.2.2; repaired SLOT
+assignment code in KStdAction, KAction,K*Action,
+KAccelMenu, KToolBar, and KGlobalAccel with
+"SIP_RXOBJ_CON, SIP_SLOT_CON(...)";
+
+
+2002/2/11 13:50:00 jim
+3.0alpha5: versioning to KDE2.2.1; fixed bug in
+KCmdLineArgs.init1 (Henrik Motakef) Modified
+examples/pykless.py so KAboutData is used instead
+of KMainWindow.helpMenu (3.0alpha5 was not
+released)
+
+2002/2/7 14:25:00 jim
+3.0alpha4: changed postproc to run from $PYTHONINTERP from
+configure; removed unnecessary links to libdcop (from
+kdebindings) -- only libDCOP is req'd (bug reports from
+Henrik Motakef)
+
+2001/11/25 13:19:00 jim
+3.0alpha3:versioning to KDE2.2.0 (new classes/methods);
+dropped KSocket::initSockaddr (deprecated); KURLComboItem
+to struct (no longer mapped type);
+
+
+2001/11/19 22:12:00 jim
+3.0alpha2:Added kparts, khtml, kjs, kspell; converted some
+structs from mapped types to classes; revised all docs; revised
+autoconf to look for top level KDE include dir; added some
+missing classes and methods;bugs fixed;versioning to KDE2.1.2
+(minor changes); added add'l doc text;ready for release
+
+
+Initial release
diff --git a/python/pykde/Changelog b/python/pykde/Changelog
new file mode 100644
index 00000000..4d56107b
--- /dev/null
+++ b/python/pykde/Changelog
@@ -0,0 +1,779 @@
+------------------------------------------------------------------------
+r160 | (no author) | 2006-09-22 00:23:44 -0700 (Fri, 22 Sep 2006) | 2 lines
+
+kio/kfileshare changed in error - reverted
+
+------------------------------------------------------------------------
+r159 | (no author) | 2006-09-22 00:22:47 -0700 (Fri, 22 Sep 2006) | 3 lines
+
+Bumped min versions: sip >= 4.4.0, PyQt >= 3.16.0,
+Qt >= 3.2.0
+
+------------------------------------------------------------------------
+r158 | (no author) | 2006-09-22 00:16:56 -0700 (Fri, 22 Sep 2006) | 3 lines
+
+version error KMimeType::List; changed -x to -t for
+%Platforms in configure.py, added "ALL" generic platform
+
+------------------------------------------------------------------------
+r157 | (no author) | 2006-09-21 23:19:39 -0700 (Thu, 21 Sep 2006) | 3 lines
+
+configure.py searches for lib64; non-functional PyKDE
+version methods deleted (and in docs)
+
+------------------------------------------------------------------------
+r156 | (no author) | 2006-09-21 17:56:59 -0700 (Thu, 21 Sep 2006) | 2 lines
+
+update sip.in and diff files for kparts.konsole_part
+
+------------------------------------------------------------------------
+r155 | (no author) | 2006-09-21 17:54:25 -0700 (Thu, 21 Sep 2006) | 2 lines
+
+set konsolepart for KDE3.5.0 or greater only
+
+------------------------------------------------------------------------
+r154 | (no author) | 2006-09-21 14:12:29 -0700 (Thu, 21 Sep 2006) | 2 lines
+
+remove pyc files from svn
+
+------------------------------------------------------------------------
+r153 | (no author) | 2006-09-21 14:11:58 -0700 (Thu, 21 Sep 2006) | 2 lines
+
+konsole_part stuff
+
+------------------------------------------------------------------------
+r152 | (no author) | 2006-09-21 10:13:58 -0700 (Thu, 21 Sep 2006) | 3 lines
+
+added konsole_part.h to versions missing it; added
+extra/kde353 to base fileset
+
+------------------------------------------------------------------------
+r150 | (no author) | 2006-09-21 08:38:43 -0700 (Thu, 21 Sep 2006) | 3 lines
+
+More cleanup for 3.16 release; added konsole_part again;
+miscellaneous small bug fixes
+
+------------------------------------------------------------------------
+r149 | (no author) | 2006-09-19 16:26:43 -0700 (Tue, 19 Sep 2006) | 2 lines
+
+Upgrade to KDE 3.5.3
+
+------------------------------------------------------------------------
+r148 | (no author) | 2006-09-19 16:24:33 -0700 (Tue, 19 Sep 2006) | 3 lines
+
+Cleaned up files for presip; minor fixes for 9/17 sip snapshot
+Clean fileset - presip will build clean 3.5.3 from this set
+
+------------------------------------------------------------------------
+r145 | (no author) | 2006-05-26 21:49:46 -0700 (Fri, 26 May 2006) | 2 lines
+
+Deleted commented out QList code
+
+------------------------------------------------------------------------
+r144 | (no author) | 2006-05-26 20:39:51 -0700 (Fri, 26 May 2006) | 2 lines
+
+Eliminate obsolete QList/qlist.h references
+
+------------------------------------------------------------------------
+r143 | (no author) | 2006-05-25 01:54:27 -0700 (Thu, 25 May 2006) | 2 lines
+
+fix for KDE 3.1.x
+
+------------------------------------------------------------------------
+r142 | (no author) | 2006-05-22 19:26:54 -0700 (Mon, 22 May 2006) | 3 lines
+
+fixes for KDE < 3.2.0 in configure.py, kabc .diff files
+and knotifydialog
+
+------------------------------------------------------------------------
+r141 | (no author) | 2006-05-22 00:38:44 -0700 (Mon, 22 May 2006) | 2 lines
+
+remove top-level (*mod.sip) files
+
+------------------------------------------------------------------------
+r140 | (no author) | 2006-05-21 20:27:45 -0700 (Sun, 21 May 2006) | 2 lines
+
+added extra/kde352
+
+------------------------------------------------------------------------
+r139 | (no author) | 2006-05-21 20:06:53 -0700 (Sun, 21 May 2006) | 2 lines
+
+KDE 3.3.0 touchup
+
+------------------------------------------------------------------------
+r138 | (no author) | 2006-05-21 18:24:47 -0700 (Sun, 21 May 2006) | 2 lines
+
+clean up .sip.in files
+
+------------------------------------------------------------------------
+r137 | (no author) | 2006-05-21 15:46:13 -0700 (Sun, 21 May 2006) | 2 lines
+
+modifications for KDE 3.3.0 compatibility
+
+------------------------------------------------------------------------
+r136 | (no author) | 2006-05-21 04:59:30 -0700 (Sun, 21 May 2006) | 2 lines
+
+KDE 3.5.2
+
+------------------------------------------------------------------------
+r135 | (no author) | 2006-05-20 15:27:11 -0700 (Sat, 20 May 2006) | 2 lines
+
+added 352 project file
+
+------------------------------------------------------------------------
+r133 | (no author) | 2006-05-19 00:53:46 -0700 (Fri, 19 May 2006) | 2 lines
+
+KDE 3.5.1
+
+------------------------------------------------------------------------
+r132 | (no author) | 2006-01-27 13:00:18 -0800 (Fri, 27 Jan 2006) | 2 lines
+
+added missing method kabc/resourcefile.sip
+
+------------------------------------------------------------------------
+r131 | (no author) | 2006-01-26 19:27:45 -0800 (Thu, 26 Jan 2006) | 2 lines
+
+fully-qualified names in kabc/resourcefile.sip
+
+------------------------------------------------------------------------
+r130 | (no author) | 2006-01-26 16:53:44 -0800 (Thu, 26 Jan 2006) | 3 lines
+
+Put kabc/resourcefile.sip back into kabc for later
+versions (missing in kdelibs tarball, but in kde3/include/kabc)
+
+------------------------------------------------------------------------
+r129 | (no author) | 2006-01-26 16:50:00 -0800 (Thu, 26 Jan 2006) | 3 lines
+
+Removed *mod.sip files from version control (user
+generated)
+
+------------------------------------------------------------------------
+r128 | (no author) | 2006-01-26 16:46:27 -0800 (Thu, 26 Jan 2006) | 2 lines
+
+Updated kabc/resourcefile.sip - versioning
+
+------------------------------------------------------------------------
+r127 | (no author) | 2006-01-23 00:19:15 -0800 (Mon, 23 Jan 2006) | 2 lines
+
+typo in configure.py
+
+------------------------------------------------------------------------
+r126 | (no author) | 2006-01-22 23:08:28 -0800 (Sun, 22 Jan 2006) | 4 lines
+
+changed configure.py to concatenate by default for
+gcc >= 4.0.3; deleted unneeded mapped type from
+kio/global.sip
+
+------------------------------------------------------------------------
+r125 | (no author) | 2006-01-22 21:45:55 -0800 (Sun, 22 Jan 2006) | 8 lines
+
+modify configure.py to drop kresources for KDE < 3.2;
+version Resource class in kabc/resource.sip; version
+64 bit read/write stuff in kdecore/kconfigbase.sip;
+version copy ctor in kdecore/kprocctrl.sip; version
+out longlong/ulonglong mapped types in kio/global.sip;
+version one method in kio/ksycoca.sip; fix line with
+illegal char (?) in extensions/dcopexport.py
+
+------------------------------------------------------------------------
+r124 | (no author) | 2006-01-21 11:33:36 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+removed kkeyserver.sip references from all .diff files
+
+------------------------------------------------------------------------
+r123 | (no author) | 2006-01-21 11:31:03 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+updated docs
+
+------------------------------------------------------------------------
+r122 | (no author) | 2006-01-21 10:46:51 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+fixed TOC links in classref doc files
+
+------------------------------------------------------------------------
+r121 | (no author) | 2006-01-21 01:20:30 -0800 (Sat, 21 Jan 2006) | 2 lines
+
+Initial doc update
+
+------------------------------------------------------------------------
+r120 | (no author) | 2006-01-20 17:37:06 -0800 (Fri, 20 Jan 2006) | 3 lines
+
+fixed QValueList<KConfigSkeleton::ItemEnum::Choice> code
+and fixed dcopexport.py handling of void return types
+
+------------------------------------------------------------------------
+r119 | (no author) | 2006-01-20 12:14:10 -0800 (Fri, 20 Jan 2006) | 2 lines
+
+added X11 include
+
+------------------------------------------------------------------------
+r118 | (no author) | 2006-01-18 23:27:15 -0800 (Wed, 18 Jan 2006) | 2 lines
+
+backed out ambiguous/inaccessible methods in KConfigSkeleton
+
+------------------------------------------------------------------------
+r117 | (no author) | 2006-01-18 23:00:34 -0800 (Wed, 18 Jan 2006) | 3 lines
+
+correct versioning error on addItem* methods in
+KConfigSkeleton
+
+------------------------------------------------------------------------
+r116 | (no author) | 2006-01-18 22:08:35 -0800 (Wed, 18 Jan 2006) | 3 lines
+
+fixes for backward compatibility with older KDE, gcc,
+sip
+
+------------------------------------------------------------------------
+r115 | (no author) | 2006-01-18 21:12:02 -0800 (Wed, 18 Jan 2006) | 2 lines
+
+PyKDE for KDE 3.5.0 complete
+
+------------------------------------------------------------------------
+r114 | (no author) | 2006-01-17 01:51:20 -0800 (Tue, 17 Jan 2006) | 2 lines
+
+all modules working for KDE 3.4.3 - minor fixes
+
+------------------------------------------------------------------------
+r113 | (no author) | 2006-01-16 22:13:25 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresources touchup
+
+------------------------------------------------------------------------
+r112 | (no author) | 2006-01-16 21:57:28 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+update extra/ for KDE 3.5.0
+
+------------------------------------------------------------------------
+r111 | (no author) | 2006-01-16 21:56:14 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+minor fix
+
+------------------------------------------------------------------------
+r109 | (no author) | 2006-01-16 20:35:03 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+yet more debugging kabc, kresources
+
+------------------------------------------------------------------------
+r108 | (no author) | 2006-01-16 20:22:55 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+more debugging kabc, kresources
+
+------------------------------------------------------------------------
+r107 | (no author) | 2006-01-16 20:15:50 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+more kabc, kresource debugging
+
+------------------------------------------------------------------------
+r106 | (no author) | 2006-01-16 20:12:37 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresource debugging
+
+------------------------------------------------------------------------
+r105 | (no author) | 2006-01-16 20:08:37 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+kabc, kresources through KDE 3.4.3
+
+------------------------------------------------------------------------
+r104 | (no author) | 2006-01-16 18:33:10 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+removed erroneous kresources .diff file
+
+------------------------------------------------------------------------
+r103 | (no author) | 2006-01-16 18:24:05 -0800 (Mon, 16 Jan 2006) | 3 lines
+
+more kabc and kresources debugging - compiles
+through KDE 330
+
+------------------------------------------------------------------------
+r102 | (no author) | 2006-01-16 00:47:43 -0800 (Mon, 16 Jan 2006) | 2 lines
+
+debug configure.py, kabc, kresources
+
+------------------------------------------------------------------------
+r101 | (no author) | 2006-01-15 22:27:45 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+fixed typo in configure.py
+
+------------------------------------------------------------------------
+r100 | (no author) | 2006-01-15 22:22:50 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+added kabc and kresources through KDE 3.3.0
+
+------------------------------------------------------------------------
+r97 | (no author) | 2006-01-15 15:04:44 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+upgrade to KDE 3.4.3
+
+------------------------------------------------------------------------
+r95 | (no author) | 2006-01-15 10:47:15 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+added 'extra' files
+
+------------------------------------------------------------------------
+r94 | (no author) | 2006-01-15 10:26:53 -0800 (Sun, 15 Jan 2006) | 2 lines
+
+Update to KDE 3.4.2
+
+------------------------------------------------------------------------
+r93 | (no author) | 2006-01-14 14:12:52 -0800 (Sat, 14 Jan 2006) | 4 lines
+
+typedef'd IntList from QValueList<int> so IntList()
+can be used as intializer for defaults; removed C++
+for second ctors ItemInt64 and ItemUInt64
+
+------------------------------------------------------------------------
+r92 | (no author) | 2006-01-14 14:03:35 -0800 (Sat, 14 Jan 2006) | 2 lines
+
+reversed kdecore/kconfigskeleton change
+
+------------------------------------------------------------------------
+r91 | (no author) | 2006-01-14 13:40:37 -0800 (Sat, 14 Jan 2006) | 2 lines
+
+remove erroneous files
+
+------------------------------------------------------------------------
+r90 | (no author) | 2006-01-14 13:38:39 -0800 (Sat, 14 Jan 2006) | 5 lines
+
+Fix sio syntax errors in kdecore/kconfigskeleton.sip
+(QValueList<int>() as arg default value) and
+kio/slaveinterface.sip (%TypeHeaderCode in namespace
+instead of %ModuleHeaderCode outside)
+
+------------------------------------------------------------------------
+r89 | (no author) | 2006-01-14 13:25:39 -0800 (Sat, 14 Jan 2006) | 5 lines
+
+Upgrade to sip snapshot (future sip 4.4 - sipTransferObj stuff
+and eliminate most typedefs to prevent auto mapped types); add
+patch code to KConfigSkeleton addItem* and Item* ctors for
+scalar types;minor bugfixes (sipForceConvertToQString anachronisms)
+
+------------------------------------------------------------------------
+r88 | (no author) | 2005-12-18 11:20:55 -0800 (Sun, 18 Dec 2005) | 2 lines
+
+Version dirSize in kdirsize.sip for older KDE
+
+------------------------------------------------------------------------
+r87 | (no author) | 2005-12-18 09:51:33 -0800 (Sun, 18 Dec 2005) | 4 lines
+
+Fixed versioning bug for enum Other in kshortcutlist.sip;
+added fully-qualified names to two 'Other' arguments in
+method calls
+
+------------------------------------------------------------------------
+r86 | (no author) | 2005-12-17 14:44:01 -0800 (Sat, 17 Dec 2005) | 3 lines
+
+Removed incorrect (later version) %Includes from
+sip.in files
+
+------------------------------------------------------------------------
+r85 | (no author) | 2005-12-17 14:24:58 -0800 (Sat, 17 Dec 2005) | 2 lines
+
+Added missing @mark@ to sip.in files
+
+------------------------------------------------------------------------
+r84 | (no author) | 2005-12-17 13:39:26 -0800 (Sat, 17 Dec 2005) | 3 lines
+
+Removed longlong/ulonglong from kzip (now in kdecore for
+older KDE versions), and versioned QPtrList<KConfigDialogManager>
+
+------------------------------------------------------------------------
+r83 | (no author) | 2005-12-17 13:28:33 -0800 (Sat, 17 Dec 2005) | 2 lines
+
+Extended longlong and ulonglong to earlier KDE versions
+
+------------------------------------------------------------------------
+r82 | (no author) | 2005-10-15 17:40:13 -0700 (Sat, 15 Oct 2005) | 2 lines
+
+Updated %Timeline for KDE 3.4.1
+
+------------------------------------------------------------------------
+r81 | (no author) | 2005-10-15 17:38:51 -0700 (Sat, 15 Oct 2005) | 5 lines
+
+Create ChangeLog from svn logs
+Change PyKDE version to 3.5.0
+Update KDE versions to 3.4.1
+
+
+------------------------------------------------------------------------
+r80 | (no author) | 2005-10-15 17:23:54 -0700 (Sat, 15 Oct 2005) | 3 lines
+
+Modified configure.py to detect compiler and
+set default concatenation appropriately
+
+------------------------------------------------------------------------
+r79 | (no author) | 2005-10-15 17:22:13 -0700 (Sat, 15 Oct 2005) | 2 lines
+
+fixup
+
+------------------------------------------------------------------------
+r78 | (no author) | 2005-10-13 11:45:39 -0700 (Thu, 13 Oct 2005) | 8 lines
+
+Replaced sipNewCppToSelf instances with sipBuildResult
+Cleaned up sip files for gcc 3.4.x/4.0.x compatibility
+Dropped kdesu (undefined symbol problem)
+Added -fno-rtti to kdeprint compile
+Dropped driver.sip from kdeprint
+Updated configure.py to use pyqtconfig.py for Qt environment info
+Backed out konsolepart code (undefined symbol problem)
+
+------------------------------------------------------------------------
+r76 | (no author) | 2005-07-27 23:27:34 -0700 (Wed, 27 Jul 2005) | 2 lines
+
+update configure.py for konsolePart
+
+------------------------------------------------------------------------
+r75 | (no author) | 2005-07-27 21:46:51 -0700 (Wed, 27 Jul 2005) | 2 lines
+
+added ConvertToSubclassCode entry for konsolePart
+
+------------------------------------------------------------------------
+r74 | (no author) | 2005-07-26 16:58:53 -0700 (Tue, 26 Jul 2005) | 2 lines
+
+added konsolePart class
+
+------------------------------------------------------------------------
+r73 | (no author) | 2005-06-28 16:27:53 -0700 (Tue, 28 Jun 2005) | 2 lines
+
+KDE 3.4.1 upgrade
+
+------------------------------------------------------------------------
+r72 | (no author) | 2005-06-28 14:58:07 -0700 (Tue, 28 Jun 2005) | 2 lines
+
+added bool type to DCOP extensions
+
+------------------------------------------------------------------------
+r71 | (no author) | 2005-06-18 19:16:03 -0700 (Sat, 18 Jun 2005) | 2 lines
+
+Added explicit link of kdeui for kspell module
+
+------------------------------------------------------------------------
+r70 | (no author) | 2005-06-18 17:59:10 -0700 (Sat, 18 Jun 2005) | 2 lines
+
+Added private dtors to keep sip 4.2 happy
+
+------------------------------------------------------------------------
+r69 | (no author) | 2005-03-18 16:05:34 -0800 (Fri, 18 Mar 2005) | 3 lines
+
+fixed cast in KURL::List operator + that was causing problems
+for gcc 4
+
+------------------------------------------------------------------------
+r68 | (no author) | 2005-03-16 08:50:52 -0800 (Wed, 16 Mar 2005) | 2 lines
+
+patch for DCOP line breaks
+
+------------------------------------------------------------------------
+r67 | (no author) | 2005-03-16 08:49:37 -0800 (Wed, 16 Mar 2005) | 2 lines
+
+Fix typos in previous patch
+
+------------------------------------------------------------------------
+r66 | (no author) | 2005-03-15 16:07:18 -0800 (Tue, 15 Mar 2005) | 2 lines
+
+Added ConvertToSubclassCode blocks for kmdi, kutils
+
+------------------------------------------------------------------------
+r65 | (no author) | 2005-03-10 10:41:57 -0800 (Thu, 10 Mar 2005) | 2 lines
+
+added kkeyserver.h to extra/kde340
+
+------------------------------------------------------------------------
+r64 | (no author) | 2005-03-08 14:14:58 -0800 (Tue, 08 Mar 2005) | 3 lines
+
+Fixed case problem in configure.py distro check; fixed default
+value in KURL::cleanPath
+
+------------------------------------------------------------------------
+r62 | (no author) | 2005-03-06 21:31:50 -0800 (Sun, 06 Mar 2005) | 2 lines
+
+fixed emums in templates/annotated
+
+------------------------------------------------------------------------
+r61 | (no author) | 2005-03-06 21:30:48 -0800 (Sun, 06 Mar 2005) | 2 lines
+
+fixed enums in examples, templates; fixed KIconThemeDir ref
+
+------------------------------------------------------------------------
+r60 | (no author) | 2005-03-05 00:57:44 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+added -L option for lib path
+
+------------------------------------------------------------------------
+r59 | (no author) | 2005-03-05 00:47:24 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+removed kjs support
+
+------------------------------------------------------------------------
+r58 | (no author) | 2005-03-05 00:42:59 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+update extra/kde340 h files
+
+------------------------------------------------------------------------
+r57 | (no author) | 2005-03-05 00:36:09 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+update .easibox - extra/kde340
+
+------------------------------------------------------------------------
+r56 | (no author) | 2005-03-05 00:34:34 -0800 (Sat, 05 Mar 2005) | 2 lines
+
+added extra/kde340
+
+------------------------------------------------------------------------
+r55 | (no author) | 2005-03-04 23:58:35 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+kmdimod.sip.in one more time
+
+------------------------------------------------------------------------
+r54 | (no author) | 2005-03-04 23:53:37 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+kmdimod.sip.in again
+
+------------------------------------------------------------------------
+r53 | (no author) | 2005-03-04 23:37:43 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed kmdimod.sip.in and kutils.sip.in
+
+------------------------------------------------------------------------
+r52 | (no author) | 2005-03-04 23:08:29 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+correct qt path in kutils.sip.in
+
+------------------------------------------------------------------------
+r51 | (no author) | 2005-03-04 23:04:54 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+%Include bytearray.sip missing from kdecore.sip.in
+
+------------------------------------------------------------------------
+r50 | (no author) | 2005-03-04 22:59:10 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed missing %Feature in dcopmod.sip.in
+
+------------------------------------------------------------------------
+r49 | (no author) | 2005-03-04 22:55:43 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+fixed paths in sip.in files
+
+------------------------------------------------------------------------
+r48 | (no author) | 2005-03-04 22:49:00 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+doc updates for PyKDE 4.0
+
+------------------------------------------------------------------------
+r47 | (no author) | 2005-03-04 22:28:30 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+PyKDE 4.0 docs
+
+------------------------------------------------------------------------
+r46 | (no author) | 2005-03-04 22:02:00 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+new configure.py for PyKDE 4.0
+
+------------------------------------------------------------------------
+r45 | (no author) | 2005-03-04 22:00:42 -0800 (Fri, 04 Mar 2005) | 2 lines
+
+PyKDE 4.0
+
+------------------------------------------------------------------------
+r42 | (no author) | 2005-03-01 16:20:01 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Fixed KActionCollection for Mandrake
+
+------------------------------------------------------------------------
+r41 | (no author) | 2005-03-01 14:55:49 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Fixed pid_t typing problems (QValueList)
+
+------------------------------------------------------------------------
+r40 | (no author) | 2005-03-01 13:34:04 -0800 (Tue, 01 Mar 2005) | 2 lines
+
+Changed pid_t type from int to long; enabled KParts::URLArgs::metaData ()
+
+------------------------------------------------------------------------
+r39 | (no author) | 2005-02-28 23:49:09 -0800 (Mon, 28 Feb 2005) | 4 lines
+
+KFileMetaInfo typedefs removed; KProcessController versioning
+corrected; KRecentDirs (and extra/ hfiles) added; pykde332.prj
+added
+
+------------------------------------------------------------------------
+r38 | (no author) | 2005-02-28 22:34:42 -0800 (Mon, 28 Feb 2005) | 2 lines
+
+added KHTMLPart to %ConvertToSubclassCode; install kdepyuic
+
+------------------------------------------------------------------------
+r37 | (no author) | 2005-02-03 00:07:38 -0800 (Thu, 03 Feb 2005) | 2 lines
+
+Added KURL import to dcopext.py
+
+------------------------------------------------------------------------
+r36 | (no author) | 2005-01-04 11:38:01 -0800 (Tue, 04 Jan 2005) | 2 lines
+
+Add extra subdir
+
+------------------------------------------------------------------------
+r35 | (no author) | 2005-01-03 21:38:17 -0800 (Mon, 03 Jan 2005) | 2 lines
+
+KDE 3.3.2 and sip 4.2 updates
+
+------------------------------------------------------------------------
+r33 | (no author) | 2004-11-28 13:58:07 -0800 (Sun, 28 Nov 2004) | 2 lines
+
+Modified kmdidefines.sip for sip 4.2 enumerator name problem
+
+------------------------------------------------------------------------
+r32 | (no author) | 2004-11-28 13:56:19 -0800 (Sun, 28 Nov 2004) | 2 lines
+
+Removed pykdeconfig.py from source control
+
+------------------------------------------------------------------------
+r31 | (no author) | 2004-11-27 23:29:03 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+docs
+
+------------------------------------------------------------------------
+r30 | (no author) | 2004-11-27 23:07:07 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+docs
+
+------------------------------------------------------------------------
+r29 | (no author) | 2004-11-27 22:17:49 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Missing comma
+
+------------------------------------------------------------------------
+r28 | (no author) | 2004-11-27 22:16:34 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+PyKDE for KDE 3.3.1
+
+------------------------------------------------------------------------
+r27 | (no author) | 2004-11-27 21:16:55 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Revise project files
+
+------------------------------------------------------------------------
+r26 | (no author) | 2004-11-27 17:47:35 -0800 (Sat, 27 Nov 2004) | 2 lines
+
+Updating to KDE 3.3.1
+
+------------------------------------------------------------------------
+r25 | (no author) | 2004-08-25 16:43:40 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Updated change log
+
+------------------------------------------------------------------------
+r24 | (no author) | 2004-08-25 16:41:33 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Updated numbering to 3.11.3
+
+------------------------------------------------------------------------
+r23 | (no author) | 2004-08-25 15:34:33 -0700 (Wed, 25 Aug 2004) | 2 lines
+
+Added post proc for WId in kwinmodule signals
+
+------------------------------------------------------------------------
+r22 | (no author) | 2004-08-21 16:50:33 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+same khtml_part patch as the previous rev ???
+
+------------------------------------------------------------------------
+r21 | (no author) | 2004-08-21 16:42:06 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+khtml_part: fixed enum values for sip3.10.2 with KDE 3.3.0
+
+------------------------------------------------------------------------
+r20 | (no author) | 2004-08-21 01:10:05 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+Update version numbers in docs
+
+------------------------------------------------------------------------
+r19 | (no author) | 2004-08-21 01:03:27 -0700 (Sat, 21 Aug 2004) | 2 lines
+
+docs for final release
+
+------------------------------------------------------------------------
+r18 | (no author) | 2004-08-20 18:50:22 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Fixed access specifier for copy ctor on KProcessController
+
+------------------------------------------------------------------------
+r17 | (no author) | 2004-08-20 10:00:27 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Updated to KDE 3.3.0 final
+
+------------------------------------------------------------------------
+r16 | (no author) | 2004-08-20 09:59:28 -0700 (Fri, 20 Aug 2004) | 2 lines
+
+Removed khtml_part.sip (different versions for different KDE versions)
+
+------------------------------------------------------------------------
+r15 | (no author) | 2004-08-19 23:52:31 -0700 (Thu, 19 Aug 2004) | 2 lines
+
+Added svnmerge, svnmergedocs
+
+------------------------------------------------------------------------
+r14 | (no author) | 2004-08-16 19:42:57 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+change spaces to tabs in postproc/appQuit
+
+------------------------------------------------------------------------
+r13 | (no author) | 2004-08-16 19:41:25 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Save doc tool mods
+
+------------------------------------------------------------------------
+r12 | (no author) | 2004-08-16 17:44:37 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Updated docs
+
+------------------------------------------------------------------------
+r11 | (no author) | 2004-08-16 17:23:33 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Patched qvariant.h problem in kdecore
+
+------------------------------------------------------------------------
+r10 | (no author) | 2004-08-16 16:40:43 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Corrected kuniqueapplication
+
+------------------------------------------------------------------------
+r9 | (no author) | 2004-08-16 14:43:51 -0700 (Mon, 16 Aug 2004) | 2 lines
+
+Fixed h file problems for KDE3.0.x; fixed LONG_LONG for KDE3.0.x with Python 2.3
+
+------------------------------------------------------------------------
+r8 | (no author) | 2004-08-15 21:49:27 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+version before access hides access for KDE < 3.2 in kprocctrl.sip
+
+------------------------------------------------------------------------
+r7 | (no author) | 2004-08-15 12:21:23 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Corrected error - configure.py spippath defined in wrong place
+
+------------------------------------------------------------------------
+r6 | (no author) | 2004-08-15 12:19:37 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Added khtml_part.sip versions
+
+------------------------------------------------------------------------
+r5 | (no author) | 2004-08-15 12:14:27 -0700 (Sun, 15 Aug 2004) | 3 lines
+
+Changes to configure.py for khtml/kutils when KDE < 3.3.0 and
+kutils isn't needed/supported
+
+------------------------------------------------------------------------
+r4 | (no author) | 2004-08-15 12:04:57 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Patches for building with -i option (no concatenation)
+
+------------------------------------------------------------------------
+r3 | (no author) | 2004-08-15 09:13:47 -0700 (Sun, 15 Aug 2004) | 2 lines
+
+Ready for KDE 3.3.0beta2
+
+------------------------------------------------------------------------
+r2 | (no author) | 2004-08-13 22:35:48 -0700 (Fri, 13 Aug 2004) | 2 lines
+
+Initial import
+
+------------------------------------------------------------------------
diff --git a/python/pykde/INSTALL b/python/pykde/INSTALL
new file mode 100644
index 00000000..499b923a
--- /dev/null
+++ b/python/pykde/INSTALL
@@ -0,0 +1,14 @@
+This set of files will build all supported PyKDE versions.
+
+With the directory containing this file as the current directory,
+do:
+
+>> python configure.py && make && su -c"make install"
+>> python importTest.py
+
+python configure.py -h will list the command line switches. Most
+installations will work as above.
+
+The full installation instructions are now in ./doc/install.html, which
+can also be reached from the Table of Contents in ./doc/index.html.
+
diff --git a/python/pykde/NEWS b/python/pykde/NEWS
new file mode 100644
index 00000000..998f8f08
--- /dev/null
+++ b/python/pykde/NEWS
@@ -0,0 +1,3 @@
+No news is good news
+
+Initial Release
diff --git a/python/pykde/README b/python/pykde/README
new file mode 100644
index 00000000..1a0c8f6e
--- /dev/null
+++ b/python/pykde/README
@@ -0,0 +1,5 @@
+This set of files will build all supported PyKDE versions.
+
+The installation instructions are now in ./doc/install.html, which
+can also be reached from the Table of Contents in ./doc/index.html.
+
diff --git a/python/pykde/THANKS b/python/pykde/THANKS
new file mode 100644
index 00000000..d52be618
--- /dev/null
+++ b/python/pykde/THANKS
@@ -0,0 +1,109 @@
+Michael Franz Aigner
+ For basic KConfigSkeleton::addItem* and Item*
+ ctors (for scalar types)
+
+Simon Edwards
+ For putting PyKDE on KDE CVS
+
+Torsten Marek
+ For initial work on PyKDE for sip 4.0 that cut lots
+ of hours off the development time, and for several
+ bug reports; PyKDE/PyQt wiki
+
+Troy Melhase
+ kmdi advocacy and the example programs for kmdi and qxembed
+
+Steve Robson
+ Slackware bug reports and persistence
+
+The usual suspects: Hans-Peter Jansen, Simon Edwards,
+ Ricardo Javier Cardenes
+ General assistance and great suggestions on a number
+ of aspects of PyKDE
+
+PyKDE mailing list
+ As always, a lot of good comments, suggestions, bug
+ reports from people whose names I haven't listed
+ here (sorry for the omissions).
+
+David Boddie
+ More plugin related stuff (coming in future releases)
+
+Ricardo Javier Cardenes Medina
+ build.py bugs and incompatibilities with Python < 2.2)
+
+David Boddie
+ Panel applet original code and suggestions; Slackware
+ bug reports
+
+Han-Peter Jansen (again)
+ Top level sip file patch script, more build.py fixes
+ and enhancements
+
+Gordon Tyler (again)
+ Need for and implementation of ConvertToSubClassCode
+ code in PyKDE (subclassing related)
+
+Simon Edwards
+ Mandrake 9.1 rpms
+
+PyKDE mailing list
+ Encouragement, support useful criticisms and
+ patience
+
+Hans-Peter Jansen (again)
+ For build.py cleanup and enhancements (smp, dest dir,
+ etc.)
+
+Gordon Tyler
+ For build.py bug reports and 'sys.executable' patch
+ for example files, obsolete QList instances report,
+ createGUI fix in xmlmenu example
+
+Julian Rockey
+ For build.py bug reports
+
+Jonathan Gardner, Hans-Peter Janssen, Marc Schmitt
+ For rpm packages and the source forge website
+ (let me know if I've left out any names)
+
+Daniel Naber
+ For bug reports and testing (KSharedPtr related)
+
+Roberto Alsina
+ For an interim KDE3.1.1 compatible release
+
+Michael Lauer
+ For presip testing and suggestions
+
+Neil Stevens
+ KListViewItem constructor bug
+
+Bret McMillan
+ For RH info and assistance.
+
+Ricardo Javier Cardenes Medina
+ For the Debian port, 80% improvement in compile times and
+ other suggestions.
+
+Bill Soudan
+ For testing and bug fixes for gcc2.96/KDE2.2.0/RH7.2 (and
+ a lot of work on all of those)
+
+Boudewijn Rempt
+ For evangelising and providing so much support to other users.
+
+Matt Gerassimoff, John Filo, Boudewijn Rempt
+ For testing and excellent bug reports.
+
+Rupert Thurner
+ For pointing out what env is for.
+
+Henrik Motakef
+ For bug reports/fixes in PyKDE2
+
+Yannick Gingras
+ For bug reports (gcc 2.96 related)
+
+KDE Developers
+ For a great platform to port to Python
diff --git a/python/pykde/configure.py b/python/pykde/configure.py
new file mode 100644
index 00000000..9906ceff
--- /dev/null
+++ b/python/pykde/configure.py
@@ -0,0 +1,943 @@
+# This script generates the PyKDE configuration and generates the Makefiles.
+#
+# Copyright (c) 2004
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+# Jim Bublitz <jbublitz@nwinternet.com>
+#
+# This file is part of PyKDE.
+#
+# This copy of PyKDE is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyKDE is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyKDE; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+import sys
+import os
+import string
+import glob
+import getopt
+import shutil
+import py_compile
+
+try:
+ import sipconfig
+except:
+ print ("Can't find sipconfig.py (expected in sys.path)")
+ print ("Have you built the correct version of sip?")
+ sys.exit (-1)
+
+try:
+ import pyqtconfig
+except:
+ sipconfig.error ("Can't find pyqtconfig.py in sys.path - exiting")
+
+# Get the SIP configuration.
+sipcfg = sipconfig.Configuration()
+pyqtcfg = pyqtconfig.Configuration ()
+
+# Initialise the globals.
+pykde_version = 0x031000
+pykde_version_str = "3.16.0"
+kde_version = None
+kde_version_str = None
+kde_version_sfx = None
+kde_version_extra = None
+kde_max_version = 0x030503
+
+sip_min_v3_version = 0x040400
+sip_min_v4_version = 0x040400
+qt_min_version = 0x030200
+pyqt_min_version = 0x031000
+
+kde_sip_flags = []
+
+# Command line options.
+opt_pykdemoddir = sipcfg.default_mod_dir
+opt_pykdesipdir = sipcfg.default_sip_dir
+opt_debug = 0
+opt_concat = None
+opt_split = 1
+opt_releasegil = 0
+opt_tracing = 0
+opt_static = 0
+opt_kdebasedir = None
+opt_kdelibdir = None
+opt_kdeincdir = None
+opt_dep_warnings = 0
+opt_libdir = "lib"
+opt_dist_name = ""
+
+pykde_modules = ["dcop", "kdecore", "kdefx", "kdeui", "kio", "kresources", "kabc", "kutils", "kfile", "kparts",\
+ "khtml", "kspell", "kdeprint", "kmdi"] #, "kspell2"]
+
+pykde_imports = {
+ "dcop": ["qt"],
+ "kdecore": ["qt", "dcop"],
+# "kdesu": ["qt", "dcop", "kdecore"],
+ "kdefx": ["qt", "dcop", "kdecore"],
+ "kdeui": ["qt", "qtxml", "dcop", "kdecore", "kdefx"],
+ "kio": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui"],
+ "kresources": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio"],
+ "kabc": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio", "kresources"],
+ "kutils": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio"],
+ "kfile": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio"],
+ "kparts": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio"],
+ "khtml": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kutils", "kio", "kparts"],
+ "kspell": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio", "kfile"],
+ "kdeprint": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui"],
+ "kmdi": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui", "kio", "kparts"],
+ "kspell2": ["qt", "qtxml", "dcop", "kdecore", "kdefx", "kdeui"]
+ }
+
+kde_includes = {
+ "dcop": None,
+ "kdecore": None,
+# "kdesu": ["kdesu"],
+ "kdefx": None,
+ "kdeui": None,
+ "kio": ["kio"],
+ "kresources": ["kio", "../kio", "kresources"],
+ "kabc": ["kio", "../kio", "kresources", "kabc"],
+ "kfile": ["kio", "../kio"],
+ "kparts": ["kio", "../kio", "kparts"],
+ "khtml": ["kio", "../kio", "kparts", "dom"],
+ "kspell": ["kio"],
+ "kdeprint": ["kdeprint"],
+ "kmdi": ["kmdi", "kio", "../kio", "kparts"],
+ "kutils": ["kio", "../kio"] #,
+# "kspell2": None
+ }
+
+postProcess = {
+ "dcop": None,
+ "kdecore": [["-p ", "kdecore", "-o", "appQuit", "kdecore.py"],
+ ["-p ", "kdecore", "-o", "fixQVariant", "kdecore.sbf"],
+ ["-p ", "kdecore", "-o", "fixSignal", "kdecorepart0.*"]],
+# "kdesu": None,
+ "kdefx": None,
+ "kdeui": None, #[["-p ", "kdeui", "-o", "shpix", "sipkdeuiKSharedPixmap.cpp"]],
+ "kresources": None,
+ "kabc": None,
+ "kio": None,
+ "kfile": None,
+ "kparts": None,
+ "khtml": None,
+ "kspell": None,
+ "kdeprint": None,
+ "kmdi": None,
+ "kutils": None #,
+# "kspell2": None
+ }
+
+opt_startModName = ""
+opt_startmod = 0
+opt_endmod = len (pykde_modules)
+
+def check_gcc ():
+ global opt_concat
+
+ os.system ("gcc -dumpversion > gccvers.txt")
+ m = open ('gccvers.txt', 'r')
+ vers = m.read ().strip ()
+ m.close ()
+ os.unlink ('gccvers.txt')
+ print "gcc version %s" % vers
+
+ if opt_concat == None:
+ if vers < "4.0.0" or vers >= "4.0.3":
+ opt_concat = 1
+ else:
+ opt_concat = 0
+
+ if opt_concat == 1:
+ print "concatenating files"
+ else:
+ print "no concatenation"
+ print
+
+def init_and_check_sanity ():
+ """ Do some initialization and check various versions and
+ attributes of sip and PyQt installations
+ """
+
+ check_gcc ()
+
+ # Check SIP is new enough.
+ if sipcfg.sip_version_str[:8] != "snapshot":
+ minv = None
+
+ if sipcfg.sip_version >= 0x040000:
+ if sipcfg.sip_version < sip_min_v4_version:
+ minv = sip_min_v4_version
+ else:
+ if sipcfg.sip_version < sip_min_v3_version:
+ minv = sip_min_v3_version
+
+ if minv:
+ sipcfg.error("This version of PyKDE requires SIP v%s or later" % sipcfg.version_to_string(minv))
+
+ # Check SIP has Qt support enabled and check version
+ if pyqtcfg.qt_version == 0:
+ sipconfig.error("SIP has been built with Qt support disabled.")
+ if pyqtcfg.qt_version < qt_min_version:
+ sipconfig.error("SIP has been built with an unsupported Qt version (%s)"\
+ % sipcfg.version_to_string (sipcfg.qt_version))
+
+ # Check PyQt built with libqt-mt
+ if pyqtcfg.qt_threaded == 0:
+ sipconfig.error ("PyKDE requires a threaded Qt version (libqt-mt)")
+
+ # Check PyQt version
+ if pyqtcfg.pyqt_version < pyqt_min_version:
+ sipcfg.error("This version of PyKDE requires PyQt v%s or later"\
+ % pyqtcfg.version_to_string(pyqtcfg.pyqt_version))
+
+ # find the libs, includes, and version info
+ check_kde_installation ()
+
+def usage(rcode = 2):
+ """Display a usage message and exit.
+
+ rcode is the return code passed back to the calling process.
+ """
+ print "Usage:"
+ print " python configure.py [-h] [-c] [-d dir] [-g] [-j #] [-k] [-n dir] [-o dir] [-r] [-u] [-v dir] [-z file]"
+ print "where:"
+ print " -h displays this help message"
+ print " -c concatenates each module's C/C++ source files [default]"
+ print " -d dir where the PyKDE modules will be installed [default %s]" % opt_pykdemoddir
+ print " -g always release the GIL (SIP v3.x behaviour)"
+ print " -i no concatenation of each module's C/C++ source files"
+ print " -j # splits the concatenated C++ source files into # pieces [default 1]"
+ print " -k dir the KDE base directory"
+ print " -L dir the library directory name [default lib]"
+ print " -n dir the directory containing the KDE lib files"
+ print " -o dir the directory containing the KDE header files"
+ print " -r generates code with tracing enabled [default disabled]"
+ print " -u build with debugging symbols"
+ print " -v dir where the PyKDE .sip files will be installed [default %s]" % opt_pykdesipdir
+ print " -w turn on KDE deprecated object warnings when compiling [default off]"
+ print " -z file the name of a file containing command line flags"
+
+ sys.exit(rcode)
+
+
+def inform_user(stage):
+ """Tell the user the option values that are going to be used.
+ """
+ if stage == 0:
+ print
+ print " PyKDE version %s" % pykde_version_str
+ print " -------"
+ print
+ sipconfig.inform ("Python include directory is %s" % sipcfg.py_inc_dir)
+ sipconfig.inform ("Python version is %s" % sipconfig.version_to_string (sipcfg.py_version))
+ print
+ sipconfig.inform ("sip version is %s (%s)" % (sipcfg.sip_version_str,
+ sipconfig.version_to_string (sipcfg.sip_version)))
+ print
+ sipconfig.inform ("Qt directory is %s" % pyqtcfg.qt_dir)
+ sipconfig.inform ("Qt version is %s" % sipconfig.version_to_string (pyqtcfg.qt_version))
+ print
+ sipconfig.inform ("PyQt directory is %s" % pyqtcfg.pyqt_sip_dir)
+ sipconfig.inform ("PyQt version is %s (%s)" % (pyqtcfg.pyqt_version_str,
+ sipconfig.version_to_string (pyqtcfg.pyqt_version)))
+ print
+
+ elif stage == 1:
+ sipconfig.inform ("KDE base directory is %s" % opt_kdebasedir)
+ sipconfig.inform ("KDE include directory is %s" % opt_kdeincdir)
+ sipconfig.inform ("KDE lib directory is %s" % opt_kdelibdir)
+ sipconfig.inform ("lib directory is %s" % opt_libdir)
+
+ elif stage == 2:
+ sipconfig.inform ("KDE version is %s (0x%x)" % (kde_version_str, kde_version))
+ print
+
+ sipconfig.inform("PyKDE modules will be installed in %s" % opt_pykdemoddir)
+ sipconfig.inform("PyKDE .sip files will be installed in %s" % opt_pykdesipdir)
+ print
+
+
+
+def create_config(module, template):
+ """Create the PyKDE configuration module so that it can be imported by build
+ scripts.
+
+ module is the module file name.
+ template is the template file name.
+ """
+ sipconfig.inform("Creating %s..." % module)
+
+ content = {
+ "pykde_version": pykde_version,
+ "pykde_version_str": pykde_version_str,
+ "kde_version": kde_version,
+ "kde_version_str": kde_version_str,
+ "kde_version_sfx": kde_version_sfx,
+ "kde_version_extra": kde_version_extra,
+# "pykde_bin_dir": opt_pykdebindir,
+ "pykde_mod_dir": opt_pykdemoddir,
+ "pykde_sip_dir": opt_pykdesipdir,
+ "pykde_modules": pykde_modules,
+ "pykde_kde_sip_flags": kde_sip_flags,
+ "kdebasedir": opt_kdebasedir,
+ "kdelibdir": opt_kdelibdir,
+ "libdir": opt_libdir,
+ "kdeincdir": opt_kdeincdir,
+ "pykde_modules": pykde_modules,
+ "dist_name": opt_dist_name
+ }
+
+ sipconfig.create_config_module(module, template, content)
+
+def getKDEVersion (versFile):
+ if not os.path.isfile (versFile):
+ return
+
+ major = None
+ minor = None
+ micro = None
+
+ global kde_version, kde_version_str, kde_version_sfx, kde_version_extra
+
+ f = open (versFile)
+ l = f.readline ()
+ ok = 0
+
+ while not ok and l:
+ wl = string.split(l)
+ if len(wl) == 3 and wl[0] == "#define":
+ if wl[1] == "KDE_VERSION_MAJOR":
+ major = string.strip (wl[2])
+
+ if wl[1] == "KDE_VERSION_MINOR":
+ minor = string.strip (wl[2])
+
+ if wl[1] == "KDE_VERSION_RELEASE":
+ micro = string.strip (wl[2])
+
+ if major and minor and micro:
+ ok = 1
+
+ l = f.readline()
+
+ f.close()
+
+ if micro >= "90" and minor == "2":
+ micro = "0"
+ minor = "3"
+
+ kde_version = (int (major) << 16) + (int (minor) << 8) + int (micro)
+
+ if kde_version > kde_max_version:
+ print
+ sipconfig.inform ("*** True KDE version is %s -- building for KDE %s ***" % (hex (kde_version), hex (kde_max_version)))
+ print
+ kde_version = kde_max_version
+ major = hex ((kde_version & 0xff0000) >> 16) [ 2:]
+ minor = hex ((kde_version & 0x00ff00) >> 8) [ 2:]
+ micro = hex (kde_version & 0x0000ff) [ 2:]
+
+ if ok:
+ kde_version_str = string.join ([major, minor, micro], ".")
+ kde_version_sfx = string.join (["-kde", major, minor, micro, ".diff"], "")
+ kde_version_extra = string.join (["kde", major, minor, micro], "")
+ else:
+ sipconfig.error ("KDE version not found in %s" % versFile)
+
+ global postProcess
+
+def search (target, searchPath):
+ if not searchPath:
+ return
+
+ path = None
+ for searchEntry in searchPath:
+ if os.path.isdir (searchEntry)\
+ and (not target or os.path.isfile (os.path.join (searchEntry, target))):
+ path = searchEntry
+ break
+
+ return path
+
+def discoverKDE3 ():
+ global opt_kdeincdir, opt_kdebasedir, opt_kdelibdir, opt_libdir
+
+ if not opt_kdebasedir:
+ kdeSearchPaths = []
+ libSearchPaths = []
+ incSearchPaths = []
+
+ try:
+ kdeSearchPaths.append (os.environ ["KDEDIR"])
+ except:
+ pass
+ kdeSearchPaths.append (os.path.join ("/opt", "kde3"))
+ kdeSearchPaths.append ("/usr")
+
+ opt_kdebasedir = search (None, kdeSearchPaths)
+
+ if not opt_kdelibdir:
+ libSearchPaths = [os.path.join (opt_kdebasedir, "lib"), os.path.join (opt_kdebasedir, "lib64"), os.path.join (opt_kdebasedir, opt_libdir)]
+# print opt_libdir
+ opt_kdelibdir = search ("libkdecore.so", libSearchPaths)
+
+ if not opt_kdeincdir:
+ incSearchPaths = [os.path.join (opt_kdebasedir, "include")]
+ incSearchPaths.append (os.path.join (opt_kdebasedir, "include", "kde")) # Red Hat
+ opt_kdeincdir = search ("kapplication.h", incSearchPaths)
+
+def check_kde_installation():
+ """Check the KDE installation and get the version number
+
+ """
+ # Check the KDE header files have been installed.
+
+ discoverKDE3 ()
+
+ if not opt_kdebasedir:
+ sipconfig.error ("Couldn't locate KDE3 base directory")
+
+ if not opt_kdeincdir:
+ sipconfig.error ("Couldn't locate KDE3 include directory (%s is KDE base)" % opt_kdebasedir)
+
+ if not opt_kdelibdir:
+ sipconfig.error ("Couldn't locate KDE3 lib directory (%s is KDE base)" % opt_kdebasedir)
+
+ kdeversion_h = os.path.join(opt_kdeincdir, "kdeversion.h")
+
+ inform_user (1)
+
+ if not os.access(kdeversion_h, os.F_OK):
+ sipconfig.error("kdeversion.h could not be found in %s." % opt_kdeincdir)
+
+ # Get the KDE version number.
+ getKDEVersion(kdeversion_h)
+
+ inform_user (2)
+
+def create_top_level (mname):
+ """ Create the top level sip file <mname>mod.sip from <mname>mod.sip-in
+ and add/delete any %Included sip files per the current KDE version
+ """
+ diff = os.path.join ("sip", mname, mname + kde_version_sfx)
+ plus = []
+ minus = []
+ if os.path.exists (diff):
+ d = open (diff)
+ line = d.readline()
+ while line:
+ if string.find (line, "+") == 0:
+ plus.append (line [2:])
+ elif string.find (line, "-") == 0:
+ minus.append (line [2:])
+
+ line = d.readline()
+
+ sipin = open (os.path.join ("sip", mname, mname + "mod.sip.in"))
+ sipout = open (os.path.join ("sip", mname, mname + "mod.sip"), "w")
+
+ line = sipin.readline()
+ while line:
+ if string.find (line, "%Include") == 0:
+ inclFound = 1
+ if minus and line in minus:
+ line = sipin.readline()
+ continue
+ sipout.write (line)
+ elif string.find (line, "@mark@") == 0:
+ for p in plus:
+ sipout.write (p)
+ elif mname == "kabc" and kde_version < 0x030200 and string.find (line, "kresourcesmod.sip") >= 0:
+ pass
+ else:
+ sipout.write (line)
+
+ line = sipin.readline()
+
+ sipin.close ()
+ sipout.close ()
+
+ if mname == "khtml":
+ # PyKDE < 3.3.0 doesn't provide kutils (and khtml doesn't need it)
+ sippath = os.path.join ("sip", mname)
+ if kde_version < 0x030300:
+ sipin = open (os.path.join (sippath, mname + "mod.sip"))
+ sipout = open (os.path.join (sippath, mname + "mod.sip.new"), "w")
+ for line in sipin:
+ if line.find ("kutilsmod.sip") > 0:
+ continue
+ sipout.write (line)
+ sipin.close ()
+ sipout.close ()
+ os.unlink (os.path.join (sippath, mname + "mod.sip"))
+ os.rename (os.path.join (sippath, mname + "mod.sip.new"), os.path.join (sippath, mname + "mod.sip"))
+
+ os.system ("cp %s %s" % (os.path.join (sippath, "khtml_part.sip.323"), os.path.join (sippath, "khtml_part.sip")))
+
+ else:
+ os.system ("cp %s %s" % (os.path.join (sippath, "khtml_part.sip.330"), os.path.join (sippath, "khtml_part.sip")))
+
+
+def check_distribution ():
+ kde_sip_flags.append ("-t")
+ kde_sip_flags.append ("ALL")
+
+def set_sip_flags():
+ """Set the SIP platform, version and feature flags.
+ """
+ global kde_sip_flags
+
+ check_distribution ()
+
+ kde_sip_flags.append (pyqtcfg.pyqt_qt_sip_flags)
+
+ kdetags = {
+ 0x030001: "KDE_3_0_0",
+ 0x030003: "KDE_3_0_1",
+ 0x030100: "KDE_3_0_3",
+ 0x030101: "KDE_3_1_0",
+ 0x030102: "KDE_3_1_1",
+ 0x030103: "KDE_3_1_2",
+ 0x030104: "KDE_3_1_3",
+ 0x030105: "KDE_3_1_4",
+ 0x030200: "KDE_3_1_5",
+ 0x030201: "KDE_3_2_0",
+ 0x030202: "KDE_3_2_1",
+ 0x030203: "KDE_3_2_2",
+ 0x030300: "KDE_3_2_3",
+ 0x030301: "KDE_3_3_0",
+ 0x030302: "KDE_3_3_1",
+ 0x030400: "KDE_3_3_2",
+ 0x030401: "KDE_3_4_0",
+ 0x030402: "KDE_3_4_1",
+ 0x030403: "KDE_3_4_2",
+ 0x030500: "KDE_3_4_3",
+ 0x030501: "KDE_3_5_0",
+ 0x030502: "KDE_3_5_1",
+ 0x030503: "KDE_3_5_2",
+ 0x040000: "KDE_3_5_3"
+
+ }
+
+ kde_sip_flags.append("-t")
+ kde_sip_flags.append(sipconfig.version_to_sip_tag(kde_version, kdetags, "KDE"))
+
+
+def generate_code(mname, imports=None, extra_cflags=None, extra_cxxflags=None, extra_define=None, extra_include_dir=None, extra_lflags=None, extra_lib_dir=None, extra_lib=None, opengl=0, sip_flags=None):
+ """Generate the code for a module.
+
+ mname is the name of the module.
+ imports is the list of PyQt/PyKDE modules that this one %Imports.
+ extra_cflags is a string containing additional C compiler flags.
+ extra_cxxflags is a string containing additional C++ compiler flags.
+ extra_define is a name to add to the list of preprocessor defines.
+ extra_include_dir is the name of a directory to add to the list of include
+ directories.
+ extra_lflags is a string containing additional linker flags.
+ extra_lib_dir is the name of a directory to add to the list of library
+ directories.
+ extra_lib is the name of an extra library to add to the list of libraries.
+ opengl is set if the module needs OpenGL support.
+ sip_flags is the list of sip flags to use instead of the defaults.
+ """
+ sipconfig.inform("Generating the C++ source for the %s module..." % mname)
+
+ create_top_level (mname)
+ try:
+ #create_top_level (mname)
+ pass
+ except:
+ sipconfig.error ("Couldn't create top level sip file for %s" % mname)
+
+ try:
+ shutil.rmtree(mname)
+ except:
+ pass
+
+ try:
+ os.mkdir(mname)
+ except:
+ sipconfig.error("Unable to create the %s directory." % mname)
+
+ # Build the SIP command line.
+ argv = [sipcfg.sip_bin]
+ argv.extend(kde_sip_flags)
+
+ if opt_concat:
+ argv.append("-j")
+ if mname == "kdeui" and opt_split == 1:
+ splits = 2
+ else:
+ splits = opt_split
+ argv.append(str(splits))
+
+ if opt_tracing:
+ argv.append("-r")
+
+ if opt_releasegil:
+ argv.append("-g")
+
+ argv.append("-c")
+ argv.append(mname)
+
+ buildfile = os.path.join(mname, mname + ".sbf")
+ argv.append("-b")
+ argv.append(buildfile)
+
+ argv.append("-I")
+ argv.append("sip")
+
+ pyqtInclPathSeen = 0
+ for mod in pykde_imports [mname]:
+ if string.find (mod, "q") == 0 and not pyqtInclPathSeen:
+ argv.append ("-I")
+ argv.append (pyqtcfg.pyqt_sip_dir)
+ pyqtInclPathSeen = 1
+
+ elif mod == "dcop" or string.find (mod, "k") == 0:
+ subdir = os.path.join ("sip", mod)
+ argv.append("-I")
+ argv.append(subdir)
+
+ # SIP assumes POSIX style path separators.
+ argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
+
+# print string.join (argv)
+ # finally, run SIP and generate the C++ code
+ os.system (string.join(argv))
+
+ # post process the C++ code for QT_NO_TRANSLATION
+ if os.system (string.join ([sys.executable, "postproc"] + ['-p', mname, "-o", "tr", "*.cpp"])) != 0:
+ sipconfig.error ("Post processing of C++ code failed %s (tr)" % mname)
+
+ # Check the result.
+ if not os.access(buildfile, os.F_OK):
+ sipconfig.error("Unable to create the C++ code.")
+
+ if mname == "kdecore" and not opt_concat:
+ postProcess ["kdecore"][-1][-1] = "kdecorecmodule.*"
+
+ # Compile the Python stub.
+ if sipcfg.sip_version < 0x040000:
+ sipconfig.inform("Compiling %s.py..." % mname)
+ py_compile.compile(os.path.join(mname, mname + ".py"), os.path.join(mname, mname + ".pyc"))
+ elif mname == "kdecore":
+ postProcess ["kdecore"][-1][-1] = "sip" + postProcess ["kdecore"][-1][-1]
+
+ # needs to be here (not earlier) to catch .py files if any
+ if postProcess [mname]:
+ for s in postProcess [mname]:
+ if os.system (string.join ([sys.executable, "postproc"] + s)) != 0:
+ sipconfig.error ("Post processing of C++ code failed %s (%s)" % (mname, s [3]))
+
+ # Generate the Makefile.
+ sipconfig.inform("Creating the Makefile for the %s module..." % mname)
+
+ installs = []
+ if mname == "dcop":
+ installs.append ([["../extensions/dcopext.py", "../extensions/dcopexport.py"], opt_pykdemoddir])
+
+ if sipcfg.sip_version >= 0x040000:
+ warnings = 1
+ else:
+ warnings = 0
+ installs.append([[mname + ".py", mname + ".pyc"], opt_pykdemoddir])
+
+ sipfiles = []
+
+# for s in glob.glob("sip/*.sip"):
+# sipfiles.append(os.path.join("..", "sip", os.path.basename(s)))
+ for s in os.listdir (os.path.join ("sip", mname)):
+ if s.endswith (".sip"):
+ sipfiles.append(os.path.join("..", "sip", mname, os.path.basename(s)))
+
+
+ installs.append([sipfiles, os.path.join(opt_pykdesipdir, mname)])
+
+ makefile = sipconfig.SIPModuleMakefile(
+ configuration = pyqtcfg,
+ build_file = mname + ".sbf",
+ dir = mname,
+ install_dir = opt_pykdemoddir,
+ installs = installs,
+ qt = 1,
+ opengl = opengl,
+ warnings = warnings,
+ static = opt_static,
+ debug = opt_debug
+ )
+
+ if extra_cflags:
+ makefile.extra_cflags.append(extra_cflags)
+
+ if extra_cxxflags:
+ makefile.extra_cxxflags.append(extra_cxxflags)
+
+ if opt_dep_warnings == 0:
+ makefile.extra_cflags.append ("-Wno-deprecated-declarations")
+ makefile.extra_cxxflags.append ("-Wno-deprecated-declarations")
+
+ if extra_define:
+ makefile.extra_defines.append(extra_define)
+
+ makefile.extra_include_dirs.append (os.path.join ("..", "extra", kde_version_extra))
+ makefile.extra_include_dirs.append (opt_kdeincdir)
+ if kde_includes [mname]:
+ for incdir in kde_includes [mname]:
+ if "/" not in incdir:
+ makefile.extra_include_dirs.append (os.path.join (opt_kdeincdir, incdir))
+ else:
+ makefile.extra_include_dirs.append (incdir)
+
+ if extra_include_dir:
+ makefile.extra_include_dirs.append(extra_include_dir)
+
+ if extra_lflags:
+ makefile.extra_lflags.append(extra_lflags)
+
+ makefile.extra_lib_dirs.append (opt_kdelibdir)
+ if extra_lib_dir:
+ makefile.extra_lib_dirs.append(extra_lib_dir)
+
+ if extra_lib == "dcop":
+ extra_lib = "DCOP"
+ elif extra_lib == "kfile":
+ extra_lib = "kio"
+
+ makefile.extra_libs.append(extra_lib)
+ if extra_lib == "kdefx":
+ makefile.extra_libs.append ("kdecore")
+ if extra_lib == "kspell":
+ makefile.extra_libs.append ("kdeui")
+ if extra_lib == "kabc" and kde_version >= 0x030200:
+ makefile.extra_libs.append ("kabc_file")
+ if extra_lib == "kparts" and kde_version >= 0x030500:
+ makefile.extra_lib_dirs.append (os.path.join (opt_kdelibdir, "kde3"))
+ makefile.extra_libs.append ("konsolepart")
+
+ if extra_lib == "kdeprint":
+ makefile.extra_cflags.append ("-fno-rtti")
+ makefile.extra_cxxflags.append ("-fno-rtti")
+
+
+ if sipcfg.sip_version < 0x040000 and imports:
+ # Inter-module links.
+ for im in imports:
+ makefile.extra_lib_dirs.insert(0, os.path.join("..", im))
+ makefile.extra_libs.insert(0, makefile.module_as_lib(im))
+
+ makefile.generate()
+ print
+
+
+def create_makefiles():
+ """Create the additional Makefiles.
+ """
+ subdirs = pykde_modules[:]
+
+ sipconfig.inform("Creating top level Makefile...")
+
+ sipconfig.ParentMakefile(
+ configuration = pyqtcfg,
+ subdirs = subdirs,
+ installs= [("pykdeconfig.py", opt_pykdemoddir), ("contrib/kdepyuic", sipcfg.default_bin_dir)]
+ ).generate()
+
+ if kde_version >= 0x030500:
+ f = open ("Makefile", "r")
+ buff = f.read ()
+ f.close ()
+ target = os.path.join (opt_kdelibdir, "kde3", "libkonsolepart.so")
+ symlink = os.path.join ( "$(DESTDIR)" + opt_kdelibdir, "libkonsolepart.so")
+ buff = buff.replace ("install:\n", "install:\n\tln -sf %s %s\n" % (target, symlink))
+ f = open ("Makefile.new", "w")
+ f.write (buff)
+ f.close ()
+ os.unlink ("Makefile")
+ os.rename ("Makefile.new", "Makefile")
+
+def fileOpts (fn):
+ try:
+ optfile = open (fn, 'r')
+ except:
+ error ("Could not open option file %s" % (fn))
+
+ opts = []
+
+ for line in optfile.readlines ():
+ if (line [0] == '#') or (line == '\n'):
+ continue
+ elif line [0] == '-':
+ opts.append ((line [0:2], string.strip (line [2:])))
+ else:
+ opts.append (("-" + line [0:1], string.strip (line [1:])))
+
+ print 'Additional options: ',
+ for opt, arg in opts:
+ print "%s %s " %(opt, arg)
+ print
+
+ return opts
+
+def main(argv):
+ """Create the configuration module module.
+
+ argv is the list of command line arguments.
+ """
+ try:
+ optlist, args = getopt.getopt(argv[1:], "hcd:gij:k:L:l:n:o:ruv:wz:")
+ except getopt.GetoptError:
+ usage()
+
+ global opt_pykdemoddir, opt_pykdesipdir
+ global opt_debug, opt_concat, opt_releasegil
+ global opt_split, opt_tracing, opt_startModName
+ global opt_startmod, opt_endmod
+ global opt_kdebasedir, opt_kdelibdir, opt_kdeincdir, opt_libdir
+ global pykde_modules, opt_dep_warnings, opt_dist_name
+ global pykde_imports, kde_includes
+
+ # Look for '-z' first and process that switch
+ # (command line switches override file switches)
+ for opt, arg in optlist:
+ if opt == "-z":
+ optlist = fileOpts (arg) + optlist
+ break
+ elif opt == "-h":
+ usage (0)
+ else:
+ if args: usage()
+
+ for opt, arg in optlist:
+ if opt == "-h":
+ usage(0)
+
+ # turns on concatentation (on by default, here for consistency)
+ elif opt == "-c":
+ opt_concat = 1
+
+ elif opt == "-d":
+ opt_pykdemoddir = arg
+ elif opt == "-g":
+ opt_releasegil = 1
+
+ # turns off concatenation (on by default)
+ elif opt == "-i":
+ opt_concat = 0
+
+ elif opt == "-j":
+ try:
+ opt_split = int(arg)
+ except:
+ usage()
+
+ elif opt == "-k":
+ opt_kdebasedir = arg
+
+ elif opt == "-L":
+ opt_libdir = arg
+
+ # allows build of single module (-lmodule) or all modules
+ # beginning at specified module (-lmodule:)
+ elif opt == "-l":
+ opt_startModName = arg
+
+ elif opt == "-n":
+ opt_kdelibdir = arg
+ elif opt == "-o":
+ opt_kdeincdir = arg
+ elif opt == "-r":
+ opt_tracing = 1
+ elif opt == "-u":
+ opt_debug = 1
+ elif opt == "-v":
+ opt_pykdesipdir = arg
+ elif opt == "-w":
+ opt_dep_warnings = 1
+
+ inform_user (0)
+ init_and_check_sanity ()
+
+ # Set the SIP platform, version and feature flags.
+ if kde_version < 0x030200:
+ pykde_modules.remove ("kmdi")
+ pykde_modules.remove ("kresources")
+ pykde_imports ["kabc"].remove ("kresources")
+ kde_includes ["kabc"].remove ("kresources")
+
+ if kde_version < 0x030300:
+ pykde_modules.remove ("kutils")
+# pykde_modules.remove ("kspell2")
+ pykde_imports ["khtml"].remove ("kutils")
+
+ opt_endmod = len (pykde_modules)
+ if opt_startModName != "":
+ if opt_startModName in pykde_modules:
+ single = opt_startModName [-1] != ":"
+ if not single:
+ opt_startModName = opt_startModName [:-1]
+
+ try:
+ opt_startmod = pykde_modules.index (opt_startModName)
+ if single:
+ opt_endmod = opt_startmod + 1
+ except:
+ sipconfig.error ("%s is not a PyKDE module" % opt_startModName)
+
+ print "PyKDE modules to be built:\n %s\n" % string.join(pykde_modules [opt_startmod:opt_endmod])
+
+ set_sip_flags()
+
+ for module in pykde_modules [opt_startmod:opt_endmod]:
+ generate_code (module, pykde_imports [module], extra_lib = module)
+
+ # Create the additional Makefiles.
+ create_makefiles()
+
+ # Install the configuration module.
+ create_config("pykdeconfig.py", "pykdeconfig.py.in")
+
+
+def reporting_msg ():
+ print """
+If reporting errors, paste all of the output above into your
+message and post to the PyKDE mailing list at:
+
+ mailto: PyKDE@mats.imk.fraunhofer.de
+ subscribe: http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
+
+You can redirect the output into a file (> output.txt) if needed
+"""
+
+
+
+###############################################################################
+# The script starts here.
+###############################################################################
+
+if __name__ == "__main__":
+ try:
+ main(sys.argv)
+ except SystemExit:
+ reporting_msg ()
+ raise
+ except:
+ reporting_msg ()
+ print \
+"""
+An internal error occured. Please report all output from the program,
+including the following traceback, to the PyKDE mailing list
+"""
+ raise
diff --git a/python/pykde/contrib/kdepyuic b/python/pykde/contrib/kdepyuic
new file mode 100755
index 00000000..a0776f0e
--- /dev/null
+++ b/python/pykde/contrib/kdepyuic
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+#Terms and Conditions
+
+#Copyright (c) 2002 Jim Bublitz (jbublitz@nwinternet.com)
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy of
+#this software and associated documentation files (the "Software"), to deal in
+#the Software without restriction, including without limitation the rights to
+#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+#of the Software, and to permit persons to whom the Software is furnished to do
+#so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in all
+#copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+#Except as contained in this notice, the names of the copyright holders shall not
+#be used in advertising or otherwise to promote the sale, use or other dealings
+#in this Software without prior written authorization from the copyright holders.
+
+# 2003/04/19: some minor bits from Hans-Peter Jansen, <hpj@urpla.net>
+
+import sys, getopt, os, os.path, string
+
+#---------- globals ----------
+
+FALSE = 0
+TRUE = not FALSE
+addApp = TRUE
+addImport = TRUE
+pyuicPath = "pyuic"
+filename = ""
+
+
+# --------- support functions ----------
+
+def getOptions ():
+ global filename
+
+ opterr = 0
+ shortOptions = "aip:"
+ longOptions = "noapp noimport pyuic="
+
+ try:
+ optlist, args = getopt.getopt (sys.argv [1:], shortOptions, longOptions)
+ except getopt.GetoptError:
+ opterr = 1
+ optlist = []
+ args = []
+
+ if opterr or (len (args) != 1):
+ print """\nUsage:
+
+ kdepyuic [options] filename.ui
+
+ Options:
+ -a, --noapp Don't add KApplication code
+ -i, --noimport Don't add kdecore, kdeui import statements
+ -p, --pyuic Path to pyuic program
+ """
+ return FALSE
+
+ filename = args[0]
+ return checkOptions (optlist)
+
+def checkOptions (optlist):
+ global addApp, addImport, pyuicPath
+
+ for pair in optlist:
+ if (pair [0] == '--noapp') or (pair [0] == '-a'):
+ addApp = FALSE
+
+ elif (pair [0] == '--noimport') or (pair [0] == '-i'):
+ addImport = FALSE
+
+ elif (pair [0] == '--pyuic') or (pair [0] == '-p'):
+ pyuicPath = pair [1]
+
+
+
+# --------- operations ----------
+
+def addimport (n):
+ if addApp:
+ n.write ('from kdecore import KCmdLineArgs, KApplication\n')
+ n.write ('from kdeui import *\n\n')
+
+
+def addapp (indent, n):
+ n.write (indent + 'appname = ""\n')
+ n.write (indent + 'description = ""\n')
+ n.write (indent + 'version = ""\n')
+ n.write ('\n')
+ n.write (indent + 'KCmdLineArgs.init (sys.argv, appname, description, version)\n')
+ n.write (indent + 'a = KApplication ()\n\n')
+
+def doPyuic ():
+
+ fn = os.path.splitext (os.path.basename(filename)) [0] + '.py'
+
+ if addApp:
+ opts = ' -x -o '
+ else:
+ opts = ' -o '
+
+ if os.system (pyuicPath + opts + fn + ' ' + filename) != 0:
+ print pyuicPath + opts + fn + ' ' + filename + " failed"
+ sys.exit (-1)
+
+ if addApp or addImport:
+ m = open (fn, 'r')
+ n = open (fn + '.tmp', 'w')
+
+ buff = m.readlines ()
+
+ for line in buff:
+ if addImport and (string.strip (line) == 'from qt import *'):
+ n.write (line)
+ addimport (n)
+ elif addApp and (string.strip (line) == 'a = QApplication(sys.argv)'):
+ indent = 0
+ while line [indent] in string.whitespace:
+ indent = indent + 1
+ addapp (line[:indent], n)
+ elif string.find(line, " = KDatePicker(") != -1:
+ o = string.find(line, ",")
+ n.write (line[:o] + ",QDate.currentDate()" + line[o:])
+ else:
+ n.write (line)
+
+ m.close ()
+ n.close ()
+
+ os.unlink (fn)
+ os.rename (fn + '.tmp', fn)
+
+ print fn + ' written'
+
+
+# --------- main ----------
+
+getOptions ()
+doPyuic ()
diff --git a/python/pykde/doc/classref/allclasses.html b/python/pykde/doc/classref/allclasses.html
new file mode 100644
index 00000000..f552687d
--- /dev/null
+++ b/python/pykde/doc/classref/allclasses.html
@@ -0,0 +1,801 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>All PyKDE Classes</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>PyKDE Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../classref/index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DCOPClient - KConfigBase</th></tr>
+<tr ><td><a href="dcop/DCOPClient.html">DCOPClient</A></td></tr>
+<tr ><td><a href="dcop/DCOPObject.html">DCOPObject</A></td></tr>
+<tr ><td><a href="dcop/DCOPObjectProxy.html">DCOPObjectProxy</A></td></tr>
+<tr ><td><a href="dcop/DCOPRef.html">DCOPRef</A></td></tr>
+<tr ><td><a href="dcop/DCOPReply.html">DCOPReply</A></td></tr>
+<tr ><td><a href="dcop/DCOPStub.html">DCOPStub</A></td></tr>
+<tr ><td><a href="khtml/DOM.AbstractView.html">DOM.AbstractView</A></td></tr>
+<tr ><td><a href="khtml/DOM.Attr.html">DOM.Attr</A></td></tr>
+<tr ><td><a href="khtml/DOM.CDATASection.html">DOM.CDATASection</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSCharsetRule.html">DOM.CSSCharsetRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSException.html">DOM.CSSException</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSFontFaceRule.html">DOM.CSSFontFaceRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSImportRule.html">DOM.CSSImportRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSMediaRule.html">DOM.CSSMediaRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSPageRule.html">DOM.CSSPageRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSPrimitiveValue.html">DOM.CSSPrimitiveValue</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSRule.html">DOM.CSSRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSRuleList.html">DOM.CSSRuleList</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSStyleDeclaration.html">DOM.CSSStyleDeclaration</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSStyleRule.html">DOM.CSSStyleRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSStyleSheet.html">DOM.CSSStyleSheet</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSUnknownRule.html">DOM.CSSUnknownRule</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSValue.html">DOM.CSSValue</A></td></tr>
+<tr ><td><a href="khtml/DOM.CSSValueList.html">DOM.CSSValueList</A></td></tr>
+<tr ><td><a href="khtml/DOM.CharacterData.html">DOM.CharacterData</A></td></tr>
+<tr ><td><a href="khtml/DOM.Comment.html">DOM.Comment</A></td></tr>
+<tr ><td><a href="khtml/DOM.Counter.html">DOM.Counter</A></td></tr>
+<tr ><td><a href="khtml/DOM.CustomNodeFilter.html">DOM.CustomNodeFilter</A></td></tr>
+<tr ><td><a href="khtml/DOM.DOMException.html">DOM.DOMException</A></td></tr>
+<tr ><td><a href="khtml/DOM.DOMImplementation.html">DOM.DOMImplementation</A></td></tr>
+<tr ><td><a href="khtml/DOM.DOMString.html">DOM.DOMString</A></td></tr>
+<tr ><td><a href="khtml/DOM.Document.html">DOM.Document</A></td></tr>
+<tr ><td><a href="khtml/DOM.DocumentFragment.html">DOM.DocumentFragment</A></td></tr>
+<tr ><td><a href="khtml/DOM.DocumentStyle.html">DOM.DocumentStyle</A></td></tr>
+<tr ><td><a href="khtml/DOM.DocumentType.html">DOM.DocumentType</A></td></tr>
+<tr ><td><a href="khtml/DOM.DomShared.html">DOM.DomShared</A></td></tr>
+<tr ><td><a href="khtml/DOM.Element.html">DOM.Element</A></td></tr>
+<tr ><td><a href="khtml/DOM.Entity.html">DOM.Entity</A></td></tr>
+<tr ><td><a href="khtml/DOM.EntityReference.html">DOM.EntityReference</A></td></tr>
+<tr ><td><a href="khtml/DOM.Event.html">DOM.Event</A></td></tr>
+<tr ><td><a href="khtml/DOM.EventException.html">DOM.EventException</A></td></tr>
+<tr ><td><a href="khtml/DOM.EventListener.html">DOM.EventListener</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLAnchorElement.html">DOM.HTMLAnchorElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLAppletElement.html">DOM.HTMLAppletElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLAreaElement.html">DOM.HTMLAreaElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLBRElement.html">DOM.HTMLBRElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLBaseElement.html">DOM.HTMLBaseElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLBaseFontElement.html">DOM.HTMLBaseFontElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLBlockquoteElement.html">DOM.HTMLBlockquoteElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLBodyElement.html">DOM.HTMLBodyElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLButtonElement.html">DOM.HTMLButtonElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLCollection.html">DOM.HTMLCollection</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLDListElement.html">DOM.HTMLDListElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLDirectoryElement.html">DOM.HTMLDirectoryElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLDivElement.html">DOM.HTMLDivElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLDocument.html">DOM.HTMLDocument</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLElement.html">DOM.HTMLElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLFieldSetElement.html">DOM.HTMLFieldSetElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLFontElement.html">DOM.HTMLFontElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLFormElement.html">DOM.HTMLFormElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLFrameElement.html">DOM.HTMLFrameElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLFrameSetElement.html">DOM.HTMLFrameSetElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLHRElement.html">DOM.HTMLHRElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLHeadElement.html">DOM.HTMLHeadElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLHeadingElement.html">DOM.HTMLHeadingElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLHtmlElement.html">DOM.HTMLHtmlElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLIFrameElement.html">DOM.HTMLIFrameElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLImageElement.html">DOM.HTMLImageElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLInputElement.html">DOM.HTMLInputElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLIsIndexElement.html">DOM.HTMLIsIndexElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLLIElement.html">DOM.HTMLLIElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLLabelElement.html">DOM.HTMLLabelElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLLayerElement.html">DOM.HTMLLayerElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLLegendElement.html">DOM.HTMLLegendElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLLinkElement.html">DOM.HTMLLinkElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLMapElement.html">DOM.HTMLMapElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLMenuElement.html">DOM.HTMLMenuElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLMetaElement.html">DOM.HTMLMetaElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLModElement.html">DOM.HTMLModElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLOListElement.html">DOM.HTMLOListElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLObjectElement.html">DOM.HTMLObjectElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLOptGroupElement.html">DOM.HTMLOptGroupElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLOptionElement.html">DOM.HTMLOptionElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLParagraphElement.html">DOM.HTMLParagraphElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLParamElement.html">DOM.HTMLParamElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLPreElement.html">DOM.HTMLPreElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLQuoteElement.html">DOM.HTMLQuoteElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLScriptElement.html">DOM.HTMLScriptElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLSelectElement.html">DOM.HTMLSelectElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLStyleElement.html">DOM.HTMLStyleElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableCaptionElement.html">DOM.HTMLTableCaptionElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableCellElement.html">DOM.HTMLTableCellElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableColElement.html">DOM.HTMLTableColElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableElement.html">DOM.HTMLTableElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableRowElement.html">DOM.HTMLTableRowElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTableSectionElement.html">DOM.HTMLTableSectionElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTextAreaElement.html">DOM.HTMLTextAreaElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLTitleElement.html">DOM.HTMLTitleElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.HTMLUListElement.html">DOM.HTMLUListElement</A></td></tr>
+<tr ><td><a href="khtml/DOM.LinkStyle.html">DOM.LinkStyle</A></td></tr>
+<tr ><td><a href="khtml/DOM.MediaList.html">DOM.MediaList</A></td></tr>
+<tr ><td><a href="khtml/DOM.MouseEvent.html">DOM.MouseEvent</A></td></tr>
+<tr ><td><a href="khtml/DOM.MutationEvent.html">DOM.MutationEvent</A></td></tr>
+<tr ><td><a href="khtml/DOM.NamedNodeMap.html">DOM.NamedNodeMap</A></td></tr>
+<tr ><td><a href="khtml/DOM.Node.html">DOM.Node</A></td></tr>
+<tr ><td><a href="khtml/DOM.NodeFilter.html">DOM.NodeFilter</A></td></tr>
+<tr ><td><a href="khtml/DOM.NodeIterator.html">DOM.NodeIterator</A></td></tr>
+<tr ><td><a href="khtml/DOM.NodeList.html">DOM.NodeList</A></td></tr>
+<tr ><td><a href="khtml/DOM.Notation.html">DOM.Notation</A></td></tr>
+<tr ><td><a href="khtml/DOM.ProcessingInstruction.html">DOM.ProcessingInstruction</A></td></tr>
+<tr ><td><a href="khtml/DOM.RGBColor.html">DOM.RGBColor</A></td></tr>
+<tr ><td><a href="khtml/DOM.Range.html">DOM.Range</A></td></tr>
+<tr ><td><a href="khtml/DOM.RangeException.html">DOM.RangeException</A></td></tr>
+<tr ><td><a href="khtml/DOM.Rect.html">DOM.Rect</A></td></tr>
+<tr ><td><a href="khtml/DOM.StyleSheet.html">DOM.StyleSheet</A></td></tr>
+<tr ><td><a href="khtml/DOM.StyleSheetList.html">DOM.StyleSheetList</A></td></tr>
+<tr ><td><a href="khtml/DOM.Text.html">DOM.Text</A></td></tr>
+<tr ><td><a href="khtml/DOM.TextEvent.html">DOM.TextEvent</A></td></tr>
+<tr ><td><a href="khtml/DOM.TreeWalker.html">DOM.TreeWalker</A></td></tr>
+<tr ><td><a href="khtml/DOM.UIEvent.html">DOM.UIEvent</A></td></tr>
+<tr ><td><a href="khtml/DOM.html">DOM</A></td></tr>
+<tr ><td><a href="kparts/ExtTerminalInterface.html"><i>ExtTerminalInterface</i></A></td></tr>
+<tr ><td><a href="kabc/KABC.Address.html">KABC.Address</A></td></tr>
+<tr ><td><a href="kabc/KABC.AddressBook.html">KABC.AddressBook</A></td></tr>
+<tr ><td><a href="kabc/KABC.AddressLineEdit.html">KABC.AddressLineEdit</A></td></tr>
+<tr ><td><a href="kabc/KABC.AddresseeDialog.html">KABC.AddresseeDialog</A></td></tr>
+<tr ><td><a href="kabc/KABC.AddresseeItem.html">KABC.AddresseeItem</A></td></tr>
+<tr ><td><a href="kabc/KABC.Agent.html">KABC.Agent</A></td></tr>
+<tr ><td><a href="kabc/KABC.ConsoleErrorHandler.html">KABC.ConsoleErrorHandler</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionList.Entry.html">KABC.DistributionList.Entry</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionList.html">KABC.DistributionList</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionListDialog.html">KABC.DistributionListDialog</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionListEditorWidget.html">KABC.DistributionListEditorWidget</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionListManager.html">KABC.DistributionListManager</A></td></tr>
+<tr ><td><a href="kabc/KABC.DistributionListWatcher.html">KABC.DistributionListWatcher</A></td></tr>
+<tr ><td><a href="kabc/KABC.EmailSelectDialog.html">KABC.EmailSelectDialog</A></td></tr>
+<tr ><td><a href="kabc/KABC.EmailSelector.html">KABC.EmailSelector</A></td></tr>
+<tr ><td><a href="kabc/KABC.ErrorHandler.html"><i>KABC.ErrorHandler</i></A></td></tr>
+<tr ><td><a href="kabc/KABC.Field.html">KABC.Field</A></td></tr>
+<tr ><td><a href="kabc/KABC.FieldSortMode.html">KABC.FieldSortMode</A></td></tr>
+<tr ><td><a href="kabc/KABC.Format.html"><i>KABC.Format</i></A></td></tr>
+<tr ><td><a href="kabc/KABC.FormatFactory.html">KABC.FormatFactory</A></td></tr>
+<tr ><td><a href="kabc/KABC.FormatInfo.html">KABC.FormatInfo</A></td></tr>
+<tr ><td><a href="kabc/KABC.FormatPlugin.html"><i>KABC.FormatPlugin</i></A></td></tr>
+<tr ><td><a href="kabc/KABC.GUIErrorHandler.html">KABC.GUIErrorHandler</A></td></tr>
+<tr ><td><a href="kabc/KABC.Geo.html">KABC.Geo</A></td></tr>
+<tr ><td><a href="kabc/KABC.GuiErrorHandler.html">KABC.GuiErrorHandler</A></td></tr>
+<tr ><td><a href="kabc/KABC.Key.html">KABC.Key</A></td></tr>
+<tr ><td><a href="kabc/KABC.LDAPUrl.Extension.html">KABC.LDAPUrl.Extension</A></td></tr>
+<tr ><td><a href="kabc/KABC.LDAPUrl.html">KABC.LDAPUrl</A></td></tr>
+<tr ><td><a href="kabc/KABC.LDIF.html">KABC.LDIF</A></td></tr>
+<tr ><td><a href="kabc/KABC.LDIFConverter.html">KABC.LDIFConverter</A></td></tr>
+<tr ><td><a href="kabc/KABC.LdapClient.html">KABC.LdapClient</A></td></tr>
+<tr ><td><a href="kabc/KABC.LdapConfigWidget.html">KABC.LdapConfigWidget</A></td></tr>
+<tr ><td><a href="kabc/KABC.LdapObject.html">KABC.LdapObject</A></td></tr>
+<tr ><td><a href="kabc/KABC.LdapResult.html">KABC.LdapResult</A></td></tr>
+<tr ><td><a href="kabc/KABC.LdapSearch.html">KABC.LdapSearch</A></td></tr>
+<tr ><td><a href="kabc/KABC.Lock.html">KABC.Lock</A></td></tr>
+<tr ><td><a href="kabc/KABC.LockNull.html">KABC.LockNull</A></td></tr>
+<tr ><td><a href="kabc/KABC.NameSortMode.html">KABC.NameSortMode</A></td></tr>
+<tr ><td><a href="kabc/KABC.PhoneNumber.html">KABC.PhoneNumber</A></td></tr>
+<tr ><td><a href="kabc/KABC.Picture.html">KABC.Picture</A></td></tr>
+<tr ><td><a href="kabc/KABC.Plugin.html">KABC.Plugin</A></td></tr>
+<tr ><td><a href="kabc/KABC.Resource.html">KABC.Resource</A></td></tr>
+<tr ><td><a href="kabc/KABC.ResourceFile.html">KABC.ResourceFile</A></td></tr>
+<tr ><td><a href="kabc/KABC.ResourceSelectDialog.html">KABC.ResourceSelectDialog</A></td></tr>
+<tr ><td><a href="kabc/KABC.Secrecy.html">KABC.Secrecy</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortMode.html"><i>KABC.SortMode</i></A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.FamilyName.html">KABC.SortingTraits.FamilyName</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.FormattedName.html">KABC.SortingTraits.FormattedName</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.GivenName.html">KABC.SortingTraits.GivenName</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.Name.html">KABC.SortingTraits.Name</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.Uid.html">KABC.SortingTraits.Uid</A></td></tr>
+<tr ><td><a href="kabc/KABC.SortingTraits.html">KABC.SortingTraits</A></td></tr>
+<tr ><td><a href="kabc/KABC.Sound.html">KABC.Sound</A></td></tr>
+<tr ><td><a href="kabc/KABC.StdAddressBook.html">KABC.StdAddressBook</A></td></tr>
+<tr ><td><a href="kabc/KABC.Ticket.html">KABC.Ticket</A></td></tr>
+<tr ><td><a href="kabc/KABC.TimeZone.html">KABC.TimeZone</A></td></tr>
+<tr ><td><a href="kabc/KABC.VCardConverter.html">KABC.VCardConverter</A></td></tr>
+<tr ><td><a href="kabc/KABC.VCardFormat.html">KABC.VCardFormat</A></td></tr>
+<tr ><td><a href="kabc/KABC.VCardFormatPlugin.html">KABC.VCardFormatPlugin</A></td></tr>
+<tr ><td><a href="kabc/KABC.html">KABC</A></td></tr>
+<tr ><td><a href="kio/KACL.html">KACL</A></td></tr>
+<tr ><td><a href="kdeui/KAboutApplication.html">KAboutApplication</A></td></tr>
+<tr ><td><a href="kdeui/KAboutContainer.html">KAboutContainer</A></td></tr>
+<tr ><td><a href="kdeui/KAboutContributor.html">KAboutContributor</A></td></tr>
+<tr ><td><a href="kdecore/KAboutData.html">KAboutData</A></td></tr>
+<tr ><td><a href="kdeui/KAboutDialog.html">KAboutDialog</A></td></tr>
+<tr ><td><a href="kdeui/KAboutKDE.html">KAboutKDE</A></td></tr>
+<tr ><td><a href="kdecore/KAboutPerson.html">KAboutPerson</A></td></tr>
+<tr ><td><a href="kdecore/KAboutTranslator.html">KAboutTranslator</A></td></tr>
+<tr ><td><a href="kdeui/KAboutWidget.html">KAboutWidget</A></td></tr>
+<tr ><td><a href="kdecore/KAccel.html">KAccel</A></td></tr>
+<tr ><td><a href="kdecore/KAccelAction.html">KAccelAction</A></td></tr>
+<tr ><td><a href="kdecore/KAccelActions.html">KAccelActions</A></td></tr>
+<tr ><td><a href="kdecore/KAccelBase.html"><i>KAccelBase</i></A></td></tr>
+<tr ><td><a href="kdecore/KAccelShortcutList.html">KAccelShortcutList</A></td></tr>
+<tr ><td><a href="kdeui/KAction.html">KAction</A></td></tr>
+<tr ><td><a href="kdeui/KActionCollection.html">KActionCollection</A></td></tr>
+<tr ><td><a href="kdeui/KActionMenu.html">KActionMenu</A></td></tr>
+<tr ><td><a href="kdeui/KActionPtrShortcutList.html">KActionPtrShortcutList</A></td></tr>
+<tr ><td><a href="kdeui/KActionSelector.html">KActionSelector</A></td></tr>
+<tr ><td><a href="kdeui/KActionSeparator.html">KActionSeparator</A></td></tr>
+<tr ><td><a href="kdeui/KActionShortcutList.html">KActionShortcutList</A></td></tr>
+<tr ><td><a href="kdeui/KActiveLabel.html">KActiveLabel</A></td></tr>
+<tr ><td><a href="kdeui/KAnimWidget.html">KAnimWidget</A></td></tr>
+<tr ><td><a href="kfile/KAppTreeListItem.html">KAppTreeListItem</A></td></tr>
+<tr ><td><a href="kdecore/KApplication.html">KApplication</A></td></tr>
+<tr ><td><a href="kfile/KApplicationPropsPlugin.html">KApplicationPropsPlugin</A></td></tr>
+<tr ><td><a href="kfile/KApplicationTree.html">KApplicationTree</A></td></tr>
+<tr ><td><a href="kio/KAr.html">KAr</A></td></tr>
+<tr ><td><a href="kio/KArchive.html"><i>KArchive</i></A></td></tr>
+<tr ><td><a href="kio/KArchiveDirectory.html">KArchiveDirectory</A></td></tr>
+<tr ><td><a href="kio/KArchiveEntry.html">KArchiveEntry</A></td></tr>
+<tr ><td><a href="kio/KArchiveFile.html">KArchiveFile</A></td></tr>
+<tr ><td><a href="kdeui/KArrowButton.html">KArrowButton</A></td></tr>
+<tr ><td><a href="kdecore/KAsyncIO.html"><i>KAsyncIO</i></A></td></tr>
+<tr ><td><a href="kdecore/KAudioPlayer.html">KAudioPlayer</A></td></tr>
+<tr ><td><a href="kdeui/KAuthIcon.html"><i>KAuthIcon</i></A></td></tr>
+<tr ><td><a href="kfile/KBindingPropsPlugin.html">KBindingPropsPlugin</A></td></tr>
+<tr ><td><a href="kdecore/KBufferedIO.html"><i>KBufferedIO</i></A></td></tr>
+<tr ><td><a href="kdeui/KBugReport.html">KBugReport</A></td></tr>
+<tr ><td><a href="kdeui/KButtonBox.html">KButtonBox</A></td></tr>
+<tr ><td><a href="kdeui/KCModule.html">KCModule</A></td></tr>
+<tr ><td><a href="kutils/KCModuleInfo.html">KCModuleInfo</A></td></tr>
+<tr ><td><a href="kutils/KCModuleLoader.html">KCModuleLoader</A></td></tr>
+<tr ><td><a href="kutils/KCModuleProxy.html">KCModuleProxy</A></td></tr>
+<tr ><td><a href="kutils/KCMultiDialog.html">KCMultiDialog</A></td></tr>
+<tr ><td><a href="kdefx/KCPUInfo.html">KCPUInfo</A></td></tr>
+<tr ><td><a href="kdecore/KCalendarSystem.html"><i>KCalendarSystem</i></A></td></tr>
+<tr ><td><a href="kdecore/KCalendarSystemFactory.html">KCalendarSystemFactory</A></td></tr>
+<tr ><td><a href="kdecore/KCatalogue.html">KCatalogue</A></td></tr>
+<tr ><td><a href="kdecore/KCharMacroExpander.html"><i>KCharMacroExpander</i></A></td></tr>
+<tr ><td><a href="kdeui/KCharSelect.html">KCharSelect</A></td></tr>
+<tr ><td><a href="kdeui/KCharSelectTable.html">KCharSelectTable</A></td></tr>
+<tr ><td><a href="kdecore/KCharsets.html">KCharsets</A></td></tr>
+<tr ><td><a href="kdecore/KClipboardSynchronizer.html">KClipboardSynchronizer</A></td></tr>
+<tr ><td><a href="kdecore/KCmdLineArgs.html">KCmdLineArgs</A></td></tr>
+<tr ><td><a href="kdecore/KCmdLineOptions.html">KCmdLineOptions</A></td></tr>
+<tr ><td><a href="kdecore/KCodecs.html">KCodecs</A></td></tr>
+<tr ><td><a href="kdeui/KColor.html">KColor</A></td></tr>
+<tr ><td><a href="kdeui/KColorCells.html">KColorCells</A></td></tr>
+<tr ><td><a href="kdeui/KColorCombo.html">KColorCombo</A></td></tr>
+<tr ><td><a href="kdeui/KColorDialog.html">KColorDialog</A></td></tr>
+<tr ><td><a href="kdeui/KColorDrag.html">KColorDrag</A></td></tr>
+<tr ><td><a href="kdeui/KColorPatch.html">KColorPatch</A></td></tr>
+<tr ><td><a href="kfile/KCombiView.html">KCombiView</A></td></tr>
+<tr ><td><a href="kdeui/KComboBox.html">KComboBox</A></td></tr>
+<tr ><td><a href="kdeui/KCommand.html"><i>KCommand</i></A></td></tr>
+<tr ><td><a href="kdeui/KCommandHistory.html">KCommandHistory</A></td></tr>
+<tr ><td><a href="kdecore/KCompletion.html">KCompletion</A></td></tr>
+<tr ><td><a href="kdecore/KCompletionBase.html"><i>KCompletionBase</i></A></td></tr>
+<tr ><td><a href="kdeui/KCompletionBox.html">KCompletionBox</A></td></tr>
+<tr ><td><a href="kdecore/KConfig.html">KConfig</A></td></tr>
+<tr ><td><a href="kdecore/KConfigBackEnd.html"><i>KConfigBackEnd</i></A></td></tr>
+<tr ><td><a href="kdecore/KConfigBase.html"><i>KConfigBase</i></A></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KConfigDialog - KMdiTaskBar</th></tr>
+<tr ><td><a href="kdeui/KConfigDialog.html">KConfigDialog</A></td></tr>
+<tr ><td><a href="kdecore/KConfigDialogManager.html">KConfigDialogManager</A></td></tr>
+<tr ><td><a href="kdecore/KConfigGroup.html">KConfigGroup</A></td></tr>
+<tr ><td><a href="kdecore/KConfigGroupSaver.html">KConfigGroupSaver</A></td></tr>
+<tr ><td><a href="kdecore/KConfigINIBackEnd.html">KConfigINIBackEnd</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemBool.html">KConfigSkeleton.ItemBool</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemColor.html">KConfigSkeleton.ItemColor</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemDateTime.html">KConfigSkeleton.ItemDateTime</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemDouble.html">KConfigSkeleton.ItemDouble</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemEnum.Choice.html">KConfigSkeleton.ItemEnum.Choice</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemEnum.html">KConfigSkeleton.ItemEnum</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemFont.html">KConfigSkeleton.ItemFont</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemInt64.html">KConfigSkeleton.ItemInt64</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemInt.html">KConfigSkeleton.ItemInt</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemIntList.html">KConfigSkeleton.ItemIntList</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemLong.html">KConfigSkeleton.ItemLong</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemPassword.html">KConfigSkeleton.ItemPassword</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemPath.html">KConfigSkeleton.ItemPath</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemPathList.html">KConfigSkeleton.ItemPathList</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemPoint.html">KConfigSkeleton.ItemPoint</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemProperty.html">KConfigSkeleton.ItemProperty</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemRect.html">KConfigSkeleton.ItemRect</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemSize.html">KConfigSkeleton.ItemSize</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemString.html">KConfigSkeleton.ItemString</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemStringList.html">KConfigSkeleton.ItemStringList</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemUInt64.html">KConfigSkeleton.ItemUInt64</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemUInt.html">KConfigSkeleton.ItemUInt</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.ItemULong.html">KConfigSkeleton.ItemULong</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeleton.html">KConfigSkeleton</A></td></tr>
+<tr ><td><a href="kdecore/KConfigSkeletonItem.html"><i>KConfigSkeletonItem</i></A></td></tr>
+<tr ><td><a href="kdeui/KContextMenuManager.html">KContextMenuManager</A></td></tr>
+<tr ><td><a href="kdecore/KCrash.html">KCrash</A></td></tr>
+<tr ><td><a href="kdeui/KCursor.html">KCursor</A></td></tr>
+<tr ><td><a href="kfile/KCustomMenuEditor.html">KCustomMenuEditor</A></td></tr>
+<tr ><td><a href="kdeui/KDCOPActionProxy.html">KDCOPActionProxy</A></td></tr>
+<tr ><td><a href="kdecore/KDCOPPropertyProxy.html">KDCOPPropertyProxy</A></td></tr>
+<tr ><td><a href="kio/KDCOPServiceStarter.html">KDCOPServiceStarter</A></td></tr>
+<tr ><td><a href="kdecore/KDE.html">KDE</A></td></tr>
+<tr ><td><a href="kio/KDEDesktopMimeType.Service.html">KDEDesktopMimeType.Service</A></td></tr>
+<tr ><td><a href="kio/KDEDesktopMimeType.html">KDEDesktopMimeType</A></td></tr>
+<tr ><td><a href="kio/KDataTool.html"><i>KDataTool</i></A></td></tr>
+<tr ><td><a href="kio/KDataToolAction.html">KDataToolAction</A></td></tr>
+<tr ><td><a href="kio/KDataToolInfo.html">KDataToolInfo</A></td></tr>
+<tr ><td><a href="kdeui/KDateInternalMonthPicker.html">KDateInternalMonthPicker</A></td></tr>
+<tr ><td><a href="kdeui/KDateInternalWeekSelector.html">KDateInternalWeekSelector</A></td></tr>
+<tr ><td><a href="kdeui/KDateInternalYearSelector.html">KDateInternalYearSelector</A></td></tr>
+<tr ><td><a href="kdeui/KDatePicker.html">KDatePicker</A></td></tr>
+<tr ><td><a href="kdeui/KDateTable.html">KDateTable</A></td></tr>
+<tr ><td><a href="kdeui/KDateTimeWidget.html">KDateTimeWidget</A></td></tr>
+<tr ><td><a href="kdeui/KDateValidator.html">KDateValidator</A></td></tr>
+<tr ><td><a href="kdeui/KDateWidget.html">KDateWidget</A></td></tr>
+<tr ><td><a href="kdecore/KDesktopFile.html">KDesktopFile</A></td></tr>
+<tr ><td><a href="kfile/KDesktopPropsPlugin.html">KDesktopPropsPlugin</A></td></tr>
+<tr ><td><a href="kfile/KDevicePropsPlugin.html">KDevicePropsPlugin</A></td></tr>
+<tr ><td><a href="kdeui/KDialog.html">KDialog</A></td></tr>
+<tr ><td><a href="kdeui/KDialogBase.html">KDialogBase</A></td></tr>
+<tr ><td><a href="kdeui/KDialogQueue.html">KDialogQueue</A></td></tr>
+<tr ><td><a href="kspell/KDictSpellingHighlighter.html">KDictSpellingHighlighter</A></td></tr>
+<tr ><td><a href="kio/KDirLister.html">KDirLister</A></td></tr>
+<tr ><td><a href="kio/KDirNotify.html"><i>KDirNotify</i></A></td></tr>
+<tr ><td><a href="kfile/KDirOperator.html">KDirOperator</A></td></tr>
+<tr ><td><a href="kfile/KDirSelectDialog.html">KDirSelectDialog</A></td></tr>
+<tr ><td><a href="kfile/KDirSize.html">KDirSize</A></td></tr>
+<tr ><td><a href="kio/KDirWatch.html">KDirWatch</A></td></tr>
+<tr ><td><a href="kfile/KDiskFreeSp.html">KDiskFreeSp</A></td></tr>
+<tr ><td><a href="kdeui/KDockArea.html">KDockArea</A></td></tr>
+<tr ><td><a href="kdeui/KDockMainWindow.html">KDockMainWindow</A></td></tr>
+<tr ><td><a href="kdeui/KDockManager.html">KDockManager</A></td></tr>
+<tr ><td><a href="kdeui/KDockTabGroup.html">KDockTabGroup</A></td></tr>
+<tr ><td><a href="kdeui/KDockWidget.html">KDockWidget</A></td></tr>
+<tr ><td><a href="kdeui/KDockWidgetAbstractHeader.html">KDockWidgetAbstractHeader</A></td></tr>
+<tr ><td><a href="kdeui/KDockWidgetAbstractHeaderDrag.html">KDockWidgetAbstractHeaderDrag</A></td></tr>
+<tr ><td><a href="kdeui/KDockWidgetHeader.html">KDockWidgetHeader</A></td></tr>
+<tr ><td><a href="kdeui/KDockWidgetHeaderDrag.html">KDockWidgetHeaderDrag</A></td></tr>
+<tr ><td><a href="kdeui/KDoubleNumInput.html">KDoubleNumInput</A></td></tr>
+<tr ><td><a href="kdeui/KDoubleSpinBox.html">KDoubleSpinBox</A></td></tr>
+<tr ><td><a href="kdeui/KDoubleValidator.html">KDoubleValidator</A></td></tr>
+<tr ><td><a href="kdeui/KDualColorButton.html">KDualColorButton</A></td></tr>
+<tr ><td><a href="kio/KEMailSettings.html">KEMailSettings</A></td></tr>
+<tr ><td><a href="kdeui/KEdFind.html">KEdFind</A></td></tr>
+<tr ><td><a href="kdeui/KEdGotoLine.html">KEdGotoLine</A></td></tr>
+<tr ><td><a href="kdeui/KEdReplace.html">KEdReplace</A></td></tr>
+<tr ><td><a href="kdeui/KEdit.html">KEdit</A></td></tr>
+<tr ><td><a href="kdeui/KEditListBox.CustomEditor.html">KEditListBox.CustomEditor</A></td></tr>
+<tr ><td><a href="kdeui/KEditListBox.html">KEditListBox</A></td></tr>
+<tr ><td><a href="kdeui/KEditToolbar.html">KEditToolbar</A></td></tr>
+<tr ><td><a href="kdeui/KEditToolbarWidget.html">KEditToolbarWidget</A></td></tr>
+<tr ><td><a href="kfile/KEncodingFileDialog.Result.html">KEncodingFileDialog.Result</A></td></tr>
+<tr ><td><a href="kfile/KEncodingFileDialog.html">KEncodingFileDialog</A></td></tr>
+<tr ><td><a href="kdecore/KEntry.html">KEntry</A></td></tr>
+<tr ><td><a href="kdecore/KEntryKey.html">KEntryKey</A></td></tr>
+<tr ><td><a href="kio/KExecMimeType.html">KExecMimeType</A></td></tr>
+<tr ><td><a href="kfile/KExecPropsPlugin.html">KExecPropsPlugin</A></td></tr>
+<tr ><td><a href="kfile/KFile.html">KFile</A></td></tr>
+<tr ><td><a href="kfile/KFileDetailView.html">KFileDetailView</A></td></tr>
+<tr ><td><a href="kfile/KFileDialog.html">KFileDialog</A></td></tr>
+<tr ><td><a href="kio/KFileFilter.html"><i>KFileFilter</i></A></td></tr>
+<tr ><td><a href="kfile/KFileFilterCombo.html">KFileFilterCombo</A></td></tr>
+<tr ><td><a href="kfile/KFileIconView.html">KFileIconView</A></td></tr>
+<tr ><td><a href="kfile/KFileIconViewItem.html">KFileIconViewItem</A></td></tr>
+<tr ><td><a href="kio/KFileItem.html">KFileItem</A></td></tr>
+<tr ><td><a href="kfile/KFileListViewItem.html">KFileListViewItem</A></td></tr>
+<tr ><td><a href="kio/KFileMetaInfo.html">KFileMetaInfo</A></td></tr>
+<tr ><td><a href="kio/KFileMetaInfoGroup.html">KFileMetaInfoGroup</A></td></tr>
+<tr ><td><a href="kio/KFileMetaInfoItem.html">KFileMetaInfoItem</A></td></tr>
+<tr ><td><a href="kio/KFileMetaInfoProvider.html">KFileMetaInfoProvider</A></td></tr>
+<tr ><td><a href="kio/KFileMimeTypeInfo.GroupInfo.html">KFileMimeTypeInfo.GroupInfo</A></td></tr>
+<tr ><td><a href="kio/KFileMimeTypeInfo.ItemInfo.html">KFileMimeTypeInfo.ItemInfo</A></td></tr>
+<tr ><td><a href="kio/KFileMimeTypeInfo.html">KFileMimeTypeInfo</A></td></tr>
+<tr ><td><a href="kfile/KFileOpenWithHandler.html">KFileOpenWithHandler</A></td></tr>
+<tr ><td><a href="kfile/KFilePermissionsPropsPlugin.html">KFilePermissionsPropsPlugin</A></td></tr>
+<tr ><td><a href="kio/KFilePlugin.html"><i>KFilePlugin</i></A></td></tr>
+<tr ><td><a href="kfile/KFilePreview.html">KFilePreview</A></td></tr>
+<tr ><td><a href="kfile/KFilePropsPlugin.html">KFilePropsPlugin</A></td></tr>
+<tr ><td><a href="kio/KFileShare.html">KFileShare</A></td></tr>
+<tr ><td><a href="kfile/KFileSharePropsPlugin.html">KFileSharePropsPlugin</A></td></tr>
+<tr ><td><a href="kfile/KFileTreeBranch.html">KFileTreeBranch</A></td></tr>
+<tr ><td><a href="kfile/KFileTreeView.html">KFileTreeView</A></td></tr>
+<tr ><td><a href="kfile/KFileTreeViewItem.html">KFileTreeViewItem</A></td></tr>
+<tr ><td><a href="kfile/KFileTreeViewToolTip.html">KFileTreeViewToolTip</A></td></tr>
+<tr ><td><a href="kfile/KFileView.html"><i>KFileView</i></A></td></tr>
+<tr ><td><a href="kfile/KFileViewSignaler.html">KFileViewSignaler</A></td></tr>
+<tr ><td><a href="kio/KFilterBase.html"><i>KFilterBase</i></A></td></tr>
+<tr ><td><a href="kio/KFilterDev.html">KFilterDev</A></td></tr>
+<tr ><td><a href="kutils/KFind.html">KFind</A></td></tr>
+<tr ><td><a href="kutils/KFindDialog.html">KFindDialog</A></td></tr>
+<tr ><td><a href="kdeui/KFloatValidator.html">KFloatValidator</A></td></tr>
+<tr ><td><a href="kio/KFolderType.html">KFolderType</A></td></tr>
+<tr ><td><a href="kdeui/KFontAction.html">KFontAction</A></td></tr>
+<tr ><td><a href="kdeui/KFontChooser.html">KFontChooser</A></td></tr>
+<tr ><td><a href="kdeui/KFontCombo.html">KFontCombo</A></td></tr>
+<tr ><td><a href="kdeui/KFontDialog.html">KFontDialog</A></td></tr>
+<tr ><td><a href="kdeui/KFontRequester.html">KFontRequester</A></td></tr>
+<tr ><td><a href="kdeui/KFontSizeAction.html">KFontSizeAction</A></td></tr>
+<tr ><td><a href="kdecore/KGlobal.html">KGlobal</A></td></tr>
+<tr ><td><a href="kdecore/KGlobalAccel.html">KGlobalAccel</A></td></tr>
+<tr ><td><a href="kdecore/KGlobalSettings.KMouseSettings.html">KGlobalSettings.KMouseSettings</A></td></tr>
+<tr ><td><a href="kdecore/KGlobalSettings.html">KGlobalSettings</A></td></tr>
+<tr ><td><a href="kdeui/KGradientSelector.html">KGradientSelector</A></td></tr>
+<tr ><td><a href="kdeui/KGuiItem.html">KGuiItem</A></td></tr>
+<tr ><td><a href="kdeui/KHSSelector.html">KHSSelector</A></td></tr>
+<tr ><td><a href="khtml/KHTMLPart.html">KHTMLPart</A></td></tr>
+<tr ><td><a href="khtml/KHTMLSettings.html">KHTMLSettings</A></td></tr>
+<tr ><td><a href="khtml/KHTMLView.html">KHTMLView</A></td></tr>
+<tr ><td><a href="kdeui/KHelpMenu.html">KHelpMenu</A></td></tr>
+<tr ><td><a href="kdeui/KHistoryCombo.html">KHistoryCombo</A></td></tr>
+<tr ><td><a href="kdecore/KIDNA.html">KIDNA</A></td></tr>
+<tr ><td><a href="kio/KIO.AuthInfo.html">KIO.AuthInfo</A></td></tr>
+<tr ><td><a href="kio/KIO.ChmodJob.html">KIO.ChmodJob</A></td></tr>
+<tr ><td><a href="kio/KIO.Connection.html">KIO.Connection</A></td></tr>
+<tr ><td><a href="kio/KIO.CopyInfo.html">KIO.CopyInfo</A></td></tr>
+<tr ><td><a href="kio/KIO.CopyJob.html">KIO.CopyJob</A></td></tr>
+<tr ><td><a href="kio/KIO.DavJob.html">KIO.DavJob</A></td></tr>
+<tr ><td><a href="kio/KIO.DefaultProgress.html">KIO.DefaultProgress</A></td></tr>
+<tr ><td><a href="kio/KIO.DeleteJob.html">KIO.DeleteJob</A></td></tr>
+<tr ><td><a href="kio/KIO.DirectCopyJob.html">KIO.DirectCopyJob</A></td></tr>
+<tr ><td><a href="kio/KIO.FileCopyJob.html">KIO.FileCopyJob</A></td></tr>
+<tr ><td><a href="kio/KIO.ForwardingSlaveBase.html"><i>KIO.ForwardingSlaveBase</i></A></td></tr>
+<tr ><td><a href="kio/KIO.Job.html">KIO.Job</A></td></tr>
+<tr ><td><a href="kio/KIO.ListJob.html">KIO.ListJob</A></td></tr>
+<tr ><td><a href="kio/KIO.MetaInfoJob.html">KIO.MetaInfoJob</A></td></tr>
+<tr ><td><a href="kio/KIO.MimetypeJob.html">KIO.MimetypeJob</A></td></tr>
+<tr ><td><a href="kio/KIO.MkdirJob.html">KIO.MkdirJob</A></td></tr>
+<tr ><td><a href="kio/KIO.MultiGetJob.html">KIO.MultiGetJob</A></td></tr>
+<tr ><td><a href="kio/KIO.NetAccess.html">KIO.NetAccess</A></td></tr>
+<tr ><td><a href="kio/KIO.NetRC.AutoLogin.html">KIO.NetRC.AutoLogin</A></td></tr>
+<tr ><td><a href="kio/KIO.NetRC.html">KIO.NetRC</A></td></tr>
+<tr ><td><a href="kio/KIO.PasswordDialog.html">KIO.PasswordDialog</A></td></tr>
+<tr ><td><a href="kio/KIO.PreviewJob.html">KIO.PreviewJob</A></td></tr>
+<tr ><td><a href="kio/KIO.ProgressBase.html">KIO.ProgressBase</A></td></tr>
+<tr ><td><a href="kio/KIO.Scheduler.html">KIO.Scheduler</A></td></tr>
+<tr ><td><a href="kio/KIO.SessionData.html">KIO.SessionData</A></td></tr>
+<tr ><td><a href="kio/KIO.SimpleJob.html">KIO.SimpleJob</A></td></tr>
+<tr ><td><a href="kio/KIO.Slave.html">KIO.Slave</A></td></tr>
+<tr ><td><a href="kio/KIO.SlaveBase.html">KIO.SlaveBase</A></td></tr>
+<tr ><td><a href="kio/KIO.SlaveConfig.html">KIO.SlaveConfig</A></td></tr>
+<tr ><td><a href="kio/KIO.SlaveInterface.html">KIO.SlaveInterface</A></td></tr>
+<tr ><td><a href="kio/KIO.StatJob.html">KIO.StatJob</A></td></tr>
+<tr ><td><a href="kio/KIO.StatusbarProgress.html">KIO.StatusbarProgress</A></td></tr>
+<tr ><td><a href="kio/KIO.StoredTransferJob.html">KIO.StoredTransferJob</A></td></tr>
+<tr ><td><a href="kio/KIO.TCPSlaveBase.html">KIO.TCPSlaveBase</A></td></tr>
+<tr ><td><a href="kio/KIO.Task.html">KIO.Task</A></td></tr>
+<tr ><td><a href="kio/KIO.TransferJob.html">KIO.TransferJob</A></td></tr>
+<tr ><td><a href="kio/KIO.UDSAtom.html">KIO.UDSAtom</A></td></tr>
+<tr ><td><a href="kio/KIO.html">KIO</A></td></tr>
+<tr ><td><a href="kdecore/KIPC.html">KIPC</A></td></tr>
+<tr ><td><a href="kdecore/KIcon.html">KIcon</A></td></tr>
+<tr ><td><a href="kfile/KIconButton.html">KIconButton</A></td></tr>
+<tr ><td><a href="kfile/KIconCanvas.html">KIconCanvas</A></td></tr>
+<tr ><td><a href="kfile/KIconDialog.html">KIconDialog</A></td></tr>
+<tr ><td><a href="kdecore/KIconEffect.html">KIconEffect</A></td></tr>
+<tr ><td><a href="kdecore/KIconLoader.html">KIconLoader</A></td></tr>
+<tr ><td><a href="kdecore/KIconTheme.html">KIconTheme</A></td></tr>
+<tr ><td><a href="kdeui/KIconView.html">KIconView</A></td></tr>
+<tr ><td><a href="kdeui/KIconViewItem.html">KIconViewItem</A></td></tr>
+<tr ><td><a href="kdeui/KIconViewSearchLine.html">KIconViewSearchLine</A></td></tr>
+<tr ><td><a href="kdefx/KImageEffect.html">KImageEffect</A></td></tr>
+<tr ><td><a href="kfile/KImageFilePreview.html">KImageFilePreview</A></td></tr>
+<tr ><td><a href="kio/KImageIO.html">KImageIO</A></td></tr>
+<tr ><td><a href="kdeui/KInputDialog.html">KInputDialog</A></td></tr>
+<tr ><td><a href="kdecore/KInstance.html">KInstance</A></td></tr>
+<tr ><td><a href="kdeui/KIntNumInput.html">KIntNumInput</A></td></tr>
+<tr ><td><a href="kdeui/KIntSpinBox.html">KIntSpinBox</A></td></tr>
+<tr ><td><a href="kdeui/KIntValidator.html">KIntValidator</A></td></tr>
+<tr ><td><a href="kdeui/KJanusWidget.html">KJanusWidget</A></td></tr>
+<tr ><td><a href="kdecore/KKey.html">KKey</A></td></tr>
+<tr ><td><a href="kdeui/KKeyButton.html">KKeyButton</A></td></tr>
+<tr ><td><a href="kdeui/KKeyChooser.html">KKeyChooser</A></td></tr>
+<tr ><td><a href="kdeui/KKeyDialog.html">KKeyDialog</A></td></tr>
+<tr ><td><a href="kdecore/KKeyNative.html">KKeyNative</A></td></tr>
+<tr ><td><a href="kdecore/KKeySequence.html">KKeySequence</A></td></tr>
+<tr ><td><a href="kdecore/KKeyServer.CodeMod.html">KKeyServer.CodeMod</A></td></tr>
+<tr ><td><a href="kdecore/KKeyServer.Key.html">KKeyServer.Key</A></td></tr>
+<tr ><td><a href="kdecore/KKeyServer.Sym.html">KKeyServer.Sym</A></td></tr>
+<tr ><td><a href="kdecore/KKeyServer.Variations.html">KKeyServer.Variations</A></td></tr>
+<tr ><td><a href="kdecore/KKeyServer.html">KKeyServer</A></td></tr>
+<tr ><td><a href="kdeui/KLanguageButton.html">KLanguageButton</A></td></tr>
+<tr ><td><a href="kdeui/KLed.html">KLed</A></td></tr>
+<tr ><td><a href="kdecore/KLibFactory.html">KLibFactory</A></td></tr>
+<tr ><td><a href="kdecore/KLibLoader.html">KLibLoader</A></td></tr>
+<tr ><td><a href="kdecore/KLibrary.html">KLibrary</A></td></tr>
+<tr ><td><a href="kdeui/KLineEdit.html">KLineEdit</A></td></tr>
+<tr ><td><a href="kdeui/KLineEditDlg.html">KLineEditDlg</A></td></tr>
+<tr ><td><a href="kdeui/KListAction.html">KListAction</A></td></tr>
+<tr ><td><a href="kdeui/KListBox.html">KListBox</A></td></tr>
+<tr ><td><a href="kdeui/KListView.html">KListView</A></td></tr>
+<tr ><td><a href="kdeui/KListViewItem.html">KListViewItem</A></td></tr>
+<tr ><td><a href="kdeui/KListViewSearchLine.html">KListViewSearchLine</A></td></tr>
+<tr ><td><a href="kdeui/KListViewSearchLineWidget.html">KListViewSearchLineWidget</A></td></tr>
+<tr ><td><a href="kdecore/KLocale.html">KLocale</A></td></tr>
+<tr ><td><a href="kdecore/KLockFile.html">KLockFile</A></td></tr>
+<tr ><td><a href="kdecore/KMD4.html">KMD4</A></td></tr>
+<tr ><td><a href="kdecore/KMD5.html">KMD5</A></td></tr>
+<tr ><td><a href="kdeprint/KMJob.html">KMJob</A></td></tr>
+<tr ><td><a href="kdeprint/KMJobManager.JobFilter.html">KMJobManager.JobFilter</A></td></tr>
+<tr ><td><a href="kdeprint/KMJobManager.html">KMJobManager</A></td></tr>
+<tr ><td><a href="kdeprint/KMManager.html">KMManager</A></td></tr>
+<tr ><td><a href="kdeprint/KMObject.html">KMObject</A></td></tr>
+<tr ><td><a href="kdeprint/KMPrinter.html">KMPrinter</A></td></tr>
+<tr ><td><a href="kdeui/KMacroCommand.html">KMacroCommand</A></td></tr>
+<tr ><td><a href="kdecore/KMacroExpander.html">KMacroExpander</A></td></tr>
+<tr ><td><a href="kdecore/KMacroExpanderBase.html">KMacroExpanderBase</A></td></tr>
+<tr ><td><a href="kdeui/KMainWindow.html">KMainWindow</A></td></tr>
+<tr ><td><a href="kdeui/KMainWindowInterface.html">KMainWindowInterface</A></td></tr>
+<tr ><td><a href="kmdi/KMdi.html">KMdi</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildArea.html">KMdiChildArea</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrm.html">KMdiChildFrm</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmCaption.html">KMdiChildFrmCaption</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmDragBeginEvent.html">KMdiChildFrmDragBeginEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmDragEndEvent.html">KMdiChildFrmDragEndEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmMoveEvent.html">KMdiChildFrmMoveEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmResizeBeginEvent.html">KMdiChildFrmResizeBeginEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildFrmResizeEndEvent.html">KMdiChildFrmResizeEndEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiChildView.html">KMdiChildView</A></td></tr>
+<tr ><td><a href="kmdi/KMdiMainFrm.html">KMdiMainFrm</A></td></tr>
+<tr ><td><a href="kmdi/KMdiTaskBar.html">KMdiTaskBar</A></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMdiTaskBarButton - konsolePart</th></tr>
+<tr ><td><a href="kmdi/KMdiTaskBarButton.html">KMdiTaskBarButton</A></td></tr>
+<tr ><td><a href="kmdi/KMdiToolViewAccessor.html">KMdiToolViewAccessor</A></td></tr>
+<tr ><td><a href="kmdi/KMdiViewCloseEvent.html">KMdiViewCloseEvent</A></td></tr>
+<tr ><td><a href="kmdi/KMdiWin32IconButton.html">KMdiWin32IconButton</A></td></tr>
+<tr ><td><a href="kdeui/KMenuBar.html">KMenuBar</A></td></tr>
+<tr ><td><a href="kdeui/KMessageBox.html">KMessageBox</A></td></tr>
+<tr ><td><a href="kio/KMimeMagic.html">KMimeMagic</A></td></tr>
+<tr ><td><a href="kio/KMimeMagicResult.html">KMimeMagicResult</A></td></tr>
+<tr ><td><a href="kdecore/KMimeSourceFactory.html">KMimeSourceFactory</A></td></tr>
+<tr ><td><a href="kio/KMimeType.Format.html">KMimeType.Format</A></td></tr>
+<tr ><td><a href="kio/KMimeType.html">KMimeType</A></td></tr>
+<tr ><td><a href="kio/KMimeTypeChooser.html">KMimeTypeChooser</A></td></tr>
+<tr ><td><a href="kio/KMimeTypeChooserDialog.html">KMimeTypeChooserDialog</A></td></tr>
+<tr ><td><a href="kdeui/KMimeTypeValidator.html">KMimeTypeValidator</A></td></tr>
+<tr ><td><a href="kdecore/KMountPoint.html">KMountPoint</A></td></tr>
+<tr ><td><a href="kutils/KMultiTabBar.html">KMultiTabBar</A></td></tr>
+<tr ><td><a href="kutils/KMultiTabBarButton.html">KMultiTabBarButton</A></td></tr>
+<tr ><td><a href="kutils/KMultiTabBarTab.html">KMultiTabBarTab</A></td></tr>
+<tr ><td><a href="kdecore/KMultipleDrag.html">KMultipleDrag</A></td></tr>
+<tr ><td><a href="kio/KNFSShare.html">KNFSShare</A></td></tr>
+<tr ><td><a href="kdeui/KNamedCommand.html">KNamedCommand</A></td></tr>
+<tr ><td><a href="kfile/KNotify.Application.html">KNotify.Application</A></td></tr>
+<tr ><td><a href="kfile/KNotify.ApplicationList.html">KNotify.ApplicationList</A></td></tr>
+<tr ><td><a href="kfile/KNotify.Event.html">KNotify.Event</A></td></tr>
+<tr ><td><a href="kfile/KNotify.KNotifyWidget.html">KNotify.KNotifyWidget</A></td></tr>
+<tr ><td><a href="kfile/KNotify.html">KNotify</A></td></tr>
+<tr ><td><a href="kdecore/KNotifyClient.Instance.html">KNotifyClient.Instance</A></td></tr>
+<tr ><td><a href="kdecore/KNotifyClient.html">KNotifyClient</A></td></tr>
+<tr ><td><a href="kfile/KNotifyDialog.html">KNotifyDialog</A></td></tr>
+<tr ><td><a href="kdeui/KNumInput.html"><i>KNumInput</i></A></td></tr>
+<tr ><td><a href="kio/KOCRDialog.html">KOCRDialog</A></td></tr>
+<tr ><td><a href="kio/KOCRDialogFactory.html"><i>KOCRDialogFactory</i></A></td></tr>
+<tr ><td><a href="kfile/KOpenWithDlg.html">KOpenWithDlg</A></td></tr>
+<tr ><td><a href="kio/KOpenWithHandler.html">KOpenWithHandler</A></td></tr>
+<tr ><td><a href="kdeprint/KPReloadObject.html"><i>KPReloadObject</i></A></td></tr>
+<tr ><td><a href="kdecore/KPalette.html">KPalette</A></td></tr>
+<tr ><td><a href="kdeui/KPaletteTable.html">KPaletteTable</A></td></tr>
+<tr ><td><a href="kdeui/KPanelAppMenu.html">KPanelAppMenu</A></td></tr>
+<tr ><td><a href="kdeui/KPanelApplet.html">KPanelApplet</A></td></tr>
+<tr ><td><a href="kdeui/KPanelExtension.html">KPanelExtension</A></td></tr>
+<tr ><td><a href="kdeui/KPanelMenu.html"><i>KPanelMenu</i></A></td></tr>
+<tr ><td><a href="kparts/KParts.BrowserExtension.html">KParts.BrowserExtension</A></td></tr>
+<tr ><td><a href="kparts/KParts.BrowserHostExtension.html">KParts.BrowserHostExtension</A></td></tr>
+<tr ><td><a href="kparts/KParts.BrowserInterface.html">KParts.BrowserInterface</A></td></tr>
+<tr ><td><a href="kparts/KParts.BrowserRun.html">KParts.BrowserRun</A></td></tr>
+<tr ><td><a href="kparts/KParts.DockMainWindow.html">KParts.DockMainWindow</A></td></tr>
+<tr ><td><a href="kparts/KParts.Event.html">KParts.Event</A></td></tr>
+<tr ><td><a href="kparts/KParts.Factory.html">KParts.Factory</A></td></tr>
+<tr ><td><a href="kparts/KParts.GUIActivateEvent.html">KParts.GUIActivateEvent</A></td></tr>
+<tr ><td><a href="kparts/KParts.HistoryProvider.html">KParts.HistoryProvider</A></td></tr>
+<tr ><td><a href="kparts/KParts.LiveConnectExtension.html">KParts.LiveConnectExtension</A></td></tr>
+<tr ><td><a href="kparts/KParts.MainWindow.html">KParts.MainWindow</A></td></tr>
+<tr ><td><a href="kparts/KParts.OpenURLEvent.html">KParts.OpenURLEvent</A></td></tr>
+<tr ><td><a href="kparts/KParts.Part.html">KParts.Part</A></td></tr>
+<tr ><td><a href="kparts/KParts.PartActivateEvent.html">KParts.PartActivateEvent</A></td></tr>
+<tr ><td><a href="kparts/KParts.PartBase.html">KParts.PartBase</A></td></tr>
+<tr ><td><a href="kparts/KParts.PartManager.html">KParts.PartManager</A></td></tr>
+<tr ><td><a href="kparts/KParts.PartSelectEvent.html">KParts.PartSelectEvent</A></td></tr>
+<tr ><td><a href="kparts/KParts.Plugin.PluginInfo.html">KParts.Plugin.PluginInfo</A></td></tr>
+<tr ><td><a href="kparts/KParts.Plugin.html">KParts.Plugin</A></td></tr>
+<tr ><td><a href="kparts/KParts.ReadOnlyPart.html"><i>KParts.ReadOnlyPart</i></A></td></tr>
+<tr ><td><a href="kparts/KParts.ReadWritePart.html"><i>KParts.ReadWritePart</i></A></td></tr>
+<tr ><td><a href="kparts/KParts.StatusBarExtension.html">KParts.StatusBarExtension</A></td></tr>
+<tr ><td><a href="kparts/KParts.URLArgs.html">KParts.URLArgs</A></td></tr>
+<tr ><td><a href="kparts/KParts.WindowArgs.html">KParts.WindowArgs</A></td></tr>
+<tr ><td><a href="kparts/KParts.html">KParts</A></td></tr>
+<tr ><td><a href="kdeui/KPassivePopup.html">KPassivePopup</A></td></tr>
+<tr ><td><a href="kdeui/KPasswordDialog.html">KPasswordDialog</A></td></tr>
+<tr ><td><a href="kdeui/KPasswordEdit.html">KPasswordEdit</A></td></tr>
+<tr ><td><a href="kdeui/KPasteTextAction.html">KPasteTextAction</A></td></tr>
+<tr ><td><a href="kdefx/KPixmap.html">KPixmap</A></td></tr>
+<tr ><td><a href="kdefx/KPixmapEffect.html">KPixmapEffect</A></td></tr>
+<tr ><td><a href="kdeui/KPixmapIO.html">KPixmapIO</A></td></tr>
+<tr ><td><a href="kdecore/KPixmapProvider.html"><i>KPixmapProvider</i></A></td></tr>
+<tr ><td><a href="kdeui/KPixmapRegionSelectorDialog.html">KPixmapRegionSelectorDialog</A></td></tr>
+<tr ><td><a href="kdeui/KPixmapRegionSelectorWidget.html">KPixmapRegionSelectorWidget</A></td></tr>
+<tr ><td><a href="kdefx/KPixmapSplitter.html">KPixmapSplitter</A></td></tr>
+<tr ><td><a href="kutils/KPluginInfo.html">KPluginInfo</A></td></tr>
+<tr ><td><a href="kutils/KPluginSelector.html">KPluginSelector</A></td></tr>
+<tr ><td><a href="kdeui/KPopupFrame.html">KPopupFrame</A></td></tr>
+<tr ><td><a href="kdeui/KPopupMenu.html">KPopupMenu</A></td></tr>
+<tr ><td><a href="kdeui/KPopupTitle.html">KPopupTitle</A></td></tr>
+<tr ><td><a href="kfile/KPreviewWidgetBase.html"><i>KPreviewWidgetBase</i></A></td></tr>
+<tr ><td><a href="kdeprint/KPrintAction.html">KPrintAction</A></td></tr>
+<tr ><td><a href="kdeprint/KPrintDialog.html">KPrintDialog</A></td></tr>
+<tr ><td><a href="kdeprint/KPrintDialogPage.html">KPrintDialogPage</A></td></tr>
+<tr ><td><a href="kdeprint/KPrinter.html">KPrinter</A></td></tr>
+<tr ><td><a href="kdecore/KProcIO.html">KProcIO</A></td></tr>
+<tr ><td><a href="kdecore/KProcess.html">KProcess</A></td></tr>
+<tr ><td><a href="kdecore/KProcessController.html">KProcessController</A></td></tr>
+<tr ><td><a href="kio/KProcessRunner.html">KProcessRunner</A></td></tr>
+<tr ><td><a href="kdeui/KProgress.html">KProgress</A></td></tr>
+<tr ><td><a href="kdeui/KProgressDialog.html">KProgressDialog</A></td></tr>
+<tr ><td><a href="kfile/KPropertiesDialog.html">KPropertiesDialog</A></td></tr>
+<tr ><td><a href="kfile/KPropsDlgPlugin.html">KPropsDlgPlugin</A></td></tr>
+<tr ><td><a href="kio/KProtocolInfo.ExtraField.html">KProtocolInfo.ExtraField</A></td></tr>
+<tr ><td><a href="kio/KProtocolInfo.html">KProtocolInfo</A></td></tr>
+<tr ><td><a href="kio/KProtocolManager.html">KProtocolManager</A></td></tr>
+<tr ><td><a href="kdeui/KPushButton.html">KPushButton</A></td></tr>
+<tr ><td><a href="kresources/KRES.ConfigDialog.html">KRES.ConfigDialog</A></td></tr>
+<tr ><td><a href="kresources/KRES.ConfigWidget.html"><i>KRES.ConfigWidget</i></A></td></tr>
+<tr ><td><a href="kresources/KRES.Factory.html">KRES.Factory</A></td></tr>
+<tr ><td><a href="kresources/KRES.PluginFactoryBase.html"><i>KRES.PluginFactoryBase</i></A></td></tr>
+<tr ><td><a href="kresources/KRES.Resource.html">KRES.Resource</A></td></tr>
+<tr ><td><a href="kresources/KRES.ResourcePageInfo.html">KRES.ResourcePageInfo</A></td></tr>
+<tr ><td><a href="kresources/KRES.SelectDialog.html">KRES.SelectDialog</A></td></tr>
+<tr ><td><a href="kresources/KRES.html">KRES</A></td></tr>
+<tr ><td><a href="kdecore/KRFCDate.html">KRFCDate</A></td></tr>
+<tr ><td><a href="kdeui/KRadioAction.html">KRadioAction</A></td></tr>
+<tr ><td><a href="kdecore/KRandomSequence.html">KRandomSequence</A></td></tr>
+<tr ><td><a href="kfile/KRecentDocument.html">KRecentDocument</A></td></tr>
+<tr ><td><a href="kdeui/KRecentFilesAction.html">KRecentFilesAction</A></td></tr>
+<tr ><td><a href="kdecore/KRegExp.html">KRegExp</A></td></tr>
+<tr ><td><a href="kio/KRemoteEncoding.html">KRemoteEncoding</A></td></tr>
+<tr ><td><a href="kutils/KReplace.html">KReplace</A></td></tr>
+<tr ><td><a href="kutils/KReplaceDialog.html">KReplaceDialog</A></td></tr>
+<tr ><td><a href="kdeui/KRestrictedLine.html">KRestrictedLine</A></td></tr>
+<tr ><td><a href="kdeui/KRootPermsIcon.html">KRootPermsIcon</A></td></tr>
+<tr ><td><a href="kdeui/KRootPixmap.html">KRootPixmap</A></td></tr>
+<tr ><td><a href="kdecore/KRootProp.html">KRootProp</A></td></tr>
+<tr ><td><a href="kdeui/KRuler.html">KRuler</A></td></tr>
+<tr ><td><a href="kio/KRun.html">KRun</A></td></tr>
+<tr ><td><a href="kio/KSambaShare.html">KSambaShare</A></td></tr>
+<tr ><td><a href="kdecore/KSaveFile.html">KSaveFile</A></td></tr>
+<tr ><td><a href="kio/KScanDialog.html">KScanDialog</A></td></tr>
+<tr ><td><a href="kio/KScanDialogFactory.html"><i>KScanDialogFactory</i></A></td></tr>
+<tr ><td><a href="kdeui/KScrollView.html">KScrollView</A></td></tr>
+<tr ><td><a href="kdeui/KSelectAction.html">KSelectAction</A></td></tr>
+<tr ><td><a href="kdecore/KSelectionOwner.html">KSelectionOwner</A></td></tr>
+<tr ><td><a href="kdecore/KSelectionWatcher.html">KSelectionWatcher</A></td></tr>
+<tr ><td><a href="kdeui/KSelector.html">KSelector</A></td></tr>
+<tr ><td><a href="kdeui/KSeparator.html">KSeparator</A></td></tr>
+<tr ><td><a href="kio/KService.html">KService</A></td></tr>
+<tr ><td><a href="kio/KServiceGroup.html">KServiceGroup</A></td></tr>
+<tr ><td><a href="kio/KServiceOffer.html">KServiceOffer</A></td></tr>
+<tr ><td><a href="kio/KServiceSeparator.html">KServiceSeparator</A></td></tr>
+<tr ><td><a href="kio/KServiceType.html">KServiceType</A></td></tr>
+<tr ><td><a href="kio/KServiceTypeProfile.html">KServiceTypeProfile</A></td></tr>
+<tr ><td><a href="kdecore/KSessionManaged.html">KSessionManaged</A></td></tr>
+<tr ><td><a href="kdecore/KShared.html">KShared</A></td></tr>
+<tr ><td><a href="kdecore/KSharedConfig.html">KSharedConfig</A></td></tr>
+<tr ><td><a href="kdecore/KShell.html">KShell</A></td></tr>
+<tr ><td><a href="kio/KShellCompletion.html">KShellCompletion</A></td></tr>
+<tr ><td><a href="kdecore/KShellProcess.html">KShellProcess</A></td></tr>
+<tr ><td><a href="kdecore/KShortcut.html">KShortcut</A></td></tr>
+<tr ><td><a href="kdeui/KShortcutDialog.html">KShortcutDialog</A></td></tr>
+<tr ><td><a href="kdecore/KShortcutList.html"><i>KShortcutList</i></A></td></tr>
+<tr ><td><a href="kio/KShred.html">KShred</A></td></tr>
+<tr ><td><a href="kdecore/KSimpleConfig.html">KSimpleConfig</A></td></tr>
+<tr ><td><a href="kio/KSimpleFileFilter.html">KSimpleFileFilter</A></td></tr>
+<tr ><td><a href="kspell/KSpell.html">KSpell</A></td></tr>
+<tr ><td><a href="kspell/KSpellConfig.html">KSpellConfig</A></td></tr>
+<tr ><td><a href="kspell/KSpellDlg.html">KSpellDlg</A></td></tr>
+<tr ><td><a href="kspell/KSpellingHighlighter.html"><i>KSpellingHighlighter</i></A></td></tr>
+<tr ><td><a href="kdeui/KSplashScreen.html">KSplashScreen</A></td></tr>
+<tr ><td><a href="kdeui/KSqueezedTextLabel.html">KSqueezedTextLabel</A></td></tr>
+<tr ><td><a href="kdecore/KStartupInfo.html">KStartupInfo</A></td></tr>
+<tr ><td><a href="kdecore/KStartupInfoData.html">KStartupInfoData</A></td></tr>
+<tr ><td><a href="kdecore/KStartupInfoId.html">KStartupInfoId</A></td></tr>
+<tr ><td><a href="kdecore/KStaticDeleterBase.html"><i>KStaticDeleterBase</i></A></td></tr>
+<tr ><td><a href="kdeui/KStatusBar.html">KStatusBar</A></td></tr>
+<tr ><td><a href="kdeui/KStatusBarLabel.html">KStatusBarLabel</A></td></tr>
+<tr ><td><a href="kdecore/KStdAccel.ShortcutList.html">KStdAccel.ShortcutList</A></td></tr>
+<tr ><td><a href="kdecore/KStdAccel.html">KStdAccel</A></td></tr>
+<tr ><td><a href="kdeui/KStdAction.html">KStdAction</A></td></tr>
+<tr ><td><a href="kdeui/KStdGuiItem.html">KStdGuiItem</A></td></tr>
+<tr ><td><a href="kdecore/KStringHandler.html">KStringHandler</A></td></tr>
+<tr ><td><a href="kdeui/KStringListValidator.html">KStringListValidator</A></td></tr>
+<tr ><td><a href="kdefx/KStyle.html">KStyle</A></td></tr>
+<tr ><td><a href="kio/KSycoca.html">KSycoca</A></td></tr>
+<tr ><td><a href="kio/KSycocaEntry.html"><i>KSycocaEntry</i></A></td></tr>
+<tr ><td><a href="kio/KSycocaFactory.html"><i>KSycocaFactory</i></A></td></tr>
+<tr ><td><a href="kspell/KSyntaxHighlighter.html">KSyntaxHighlighter</A></td></tr>
+<tr ><td><a href="kdeui/KSystemTray.html">KSystemTray</A></td></tr>
+<tr ><td><a href="kdeui/KTabBar.html">KTabBar</A></td></tr>
+<tr ><td><a href="kdeui/KTabCtl.html">KTabCtl</A></td></tr>
+<tr ><td><a href="kdeui/KTabWidget.html">KTabWidget</A></td></tr>
+<tr ><td><a href="kio/KTar.html">KTar</A></td></tr>
+<tr ><td><a href="kdecore/KTempDir.html">KTempDir</A></td></tr>
+<tr ><td><a href="kdecore/KTempFile.html">KTempFile</A></td></tr>
+<tr ><td><a href="kdeui/KTextBrowser.html">KTextBrowser</A></td></tr>
+<tr ><td><a href="kdeui/KTextEdit.html">KTextEdit</A></td></tr>
+<tr ><td><a href="kdeui/KTimeWidget.html">KTimeWidget</A></td></tr>
+<tr ><td><a href="kdecore/KTimezone.html">KTimezone</A></td></tr>
+<tr ><td><a href="kdecore/KTimezoneDetails.html">KTimezoneDetails</A></td></tr>
+<tr ><td><a href="kdecore/KTimezoneSource.html">KTimezoneSource</A></td></tr>
+<tr ><td><a href="kdeui/KTimezoneWidget.html">KTimezoneWidget</A></td></tr>
+<tr ><td><a href="kdecore/KTimezones.html">KTimezones</A></td></tr>
+<tr ><td><a href="kdeui/KTipDatabase.html">KTipDatabase</A></td></tr>
+<tr ><td><a href="kdeui/KTipDialog.html">KTipDialog</A></td></tr>
+<tr ><td><a href="kdeui/KToggleAction.html">KToggleAction</A></td></tr>
+<tr ><td><a href="kdeui/KToggleFullScreenAction.html">KToggleFullScreenAction</A></td></tr>
+<tr ><td><a href="kdeui/KToggleToolBarAction.html">KToggleToolBarAction</A></td></tr>
+<tr ><td><a href="kdeui/KToolBar.html">KToolBar</A></td></tr>
+<tr ><td><a href="kdeui/KToolBarButton.html">KToolBarButton</A></td></tr>
+<tr ><td><a href="kdeui/KToolBarLabelAction.html">KToolBarLabelAction</A></td></tr>
+<tr ><td><a href="kdeui/KToolBarPopupAction.html">KToolBarPopupAction</A></td></tr>
+<tr ><td><a href="kdeui/KToolBarRadioGroup.html">KToolBarRadioGroup</A></td></tr>
+<tr ><td><a href="kdeui/KToolBarSeparator.html">KToolBarSeparator</A></td></tr>
+<tr ><td><a href="kio/KTrader.html">KTrader</A></td></tr>
+<tr ><td><a href="kio/KURIFilter.html">KURIFilter</A></td></tr>
+<tr ><td><a href="kio/KURIFilterData.html">KURIFilterData</A></td></tr>
+<tr ><td><a href="kio/KURIFilterPlugin.html"><i>KURIFilterPlugin</i></A></td></tr>
+<tr ><td><a href="kdecore/KURL.List.html">KURL.List</A></td></tr>
+<tr ><td><a href="kdecore/KURL.html">KURL</A></td></tr>
+<tr ><td><a href="kfile/KURLBar.html">KURLBar</A></td></tr>
+<tr ><td><a href="kfile/KURLBarItem.html">KURLBarItem</A></td></tr>
+<tr ><td><a href="kfile/KURLBarItemDialog.html">KURLBarItemDialog</A></td></tr>
+<tr ><td><a href="kfile/KURLBarListBox.html">KURLBarListBox</A></td></tr>
+<tr ><td><a href="kfile/KURLComboBox.html">KURLComboBox</A></td></tr>
+<tr ><td><a href="kfile/KURLComboRequester.html">KURLComboRequester</A></td></tr>
+<tr ><td><a href="kio/KURLCompletion.html">KURLCompletion</A></td></tr>
+<tr ><td><a href="kdecore/KURLDrag.html">KURLDrag</A></td></tr>
+<tr ><td><a href="kdeui/KURLLabel.html">KURLLabel</A></td></tr>
+<tr ><td><a href="kio/KURLPixmapProvider.html">KURLPixmapProvider</A></td></tr>
+<tr ><td><a href="kfile/KURLPropsPlugin.html">KURLPropsPlugin</A></td></tr>
+<tr ><td><a href="kfile/KURLRequester.html">KURLRequester</A></td></tr>
+<tr ><td><a href="kfile/KURLRequesterDlg.html">KURLRequesterDlg</A></td></tr>
+<tr ><td><a href="kdecore/KUniqueApplication.html">KUniqueApplication</A></td></tr>
+<tr ><td><a href="kdeui/KValueSelector.html">KValueSelector</A></td></tr>
+<tr ><td><a href="kdeui/KWidgetAction.html">KWidgetAction</A></td></tr>
+<tr ><td><a href="kdeui/KWindowInfo.html">KWindowInfo</A></td></tr>
+<tr ><td><a href="kdeui/KWindowListMenu.html">KWindowListMenu</A></td></tr>
+<tr ><td><a href="kdeui/KWizard.html">KWizard</A></td></tr>
+<tr ><td><a href="kdecore/KWordMacroExpander.html"><i>KWordMacroExpander</i></A></td></tr>
+<tr ><td><a href="kdeui/KWordWrap.html">KWordWrap</A></td></tr>
+<tr ><td><a href="kdeui/KWritePermsIcon.html">KWritePermsIcon</A></td></tr>
+<tr ><td><a href="kdeui/KXMLGUIBuilder.html">KXMLGUIBuilder</A></td></tr>
+<tr ><td><a href="kdeui/KXMLGUIClient.StateChange.html">KXMLGUIClient.StateChange</A></td></tr>
+<tr ><td><a href="kdeui/KXMLGUIClient.html">KXMLGUIClient</A></td></tr>
+<tr ><td><a href="kdeui/KXMLGUIFactory.html">KXMLGUIFactory</A></td></tr>
+<tr ><td><a href="kdeui/KXYSelector.html">KXYSelector</A></td></tr>
+<tr ><td><a href="kio/KZip.html">KZip</A></td></tr>
+<tr ><td><a href="kio/KZipFileEntry.html">KZipFileEntry</A></td></tr>
+<tr ><td><a href="kdecore/KZoneAllocator.html">KZoneAllocator</A></td></tr>
+<tr ><td><a href="kdecore/NET.html">NET</A></td></tr>
+<tr ><td><a href="kdecore/NETExtendedStrut.html">NETExtendedStrut</A></td></tr>
+<tr ><td><a href="kdecore/NETIcon.html">NETIcon</A></td></tr>
+<tr ><td><a href="kdecore/NETPoint.html">NETPoint</A></td></tr>
+<tr ><td><a href="kdecore/NETRect.html">NETRect</A></td></tr>
+<tr ><td><a href="kdecore/NETRootInfo2.html">NETRootInfo2</A></td></tr>
+<tr ><td><a href="kdecore/NETRootInfo3.html">NETRootInfo3</A></td></tr>
+<tr ><td><a href="kdecore/NETRootInfo4.html">NETRootInfo4</A></td></tr>
+<tr ><td><a href="kdecore/NETRootInfo.html">NETRootInfo</A></td></tr>
+<tr ><td><a href="kdecore/NETSize.html">NETSize</A></td></tr>
+<tr ><td><a href="kdecore/NETStrut.html">NETStrut</A></td></tr>
+<tr ><td><a href="kdecore/NETWinInfo.html">NETWinInfo</A></td></tr>
+<tr ><td><a href="kio/Observer.html">Observer</A></td></tr>
+<tr ><td><a href="kdeui/QXEmbed.html">QXEmbed</A></td></tr>
+<tr ><td><a href="kio/RenameDlgPlugin.html">RenameDlgPlugin</A></td></tr>
+<tr ><td><a href="kparts/TerminalInterface.html"><i>TerminalInterface</i></A></td></tr>
+<tr ><td><a href="kio/ThumbCreator.html"><i>ThumbCreator</i></A></td></tr>
+<tr ><td><a href="kparts/konsoleBrowserExtension.html">konsoleBrowserExtension</A></td></tr>
+<tr ><td><a href="kparts/konsoleFactory.html">konsoleFactory</A></td></tr>
+<tr ><td><a href="kparts/konsolePart.html">konsolePart</A></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPClient.html b/python/pykde/doc/classref/dcop/DCOPClient.html
new file mode 100644
index 00000000..57faa27c
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPClient.html
@@ -0,0 +1,456 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPClient</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPClient</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPClient</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DCOPClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPClient instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptCalls</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applicationRegistered</b> (appId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applicationRemoved</b> (appId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attachFailed</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>beginTransaction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClientTransaction)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bindToApp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blockUserInput</b> (block)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>block</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>call</b> (remApp, remObj, remFun, data, useEventLoop, timeout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) replyType (QCString) replyData (QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>useEventLoop</td><td>bool</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>call</b> (remApp, remObj, remFun, data, useEventLoop = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) replyType (QCString) replyData (QByteArray)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>useEventLoop</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callAsync</b> (remApp, remObj, remFun, data, callBackObj, callBackSlot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>callBackObj</td><td>QObject</td><td></td></tr>
+<tr><td>callBackSlot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callAsync</b> (a0, a1, a2, a3, slot, )
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.3.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>QCString</td><td></td></tr>
+<tr><td>a3</td><td>QByteArray</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callBack</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectDCOPSignal</b> (sender, senderObj, signal, receiverObj, slot, Volatile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>senderObj</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>receiverObj</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+<tr><td>Volatile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectDCOPSignal</b> (sender, signal, receiverObj, slot, Volatile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>receiverObj</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+<tr><td>Volatile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopServerFile</b> (hostname = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QCString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopServerFileOld</b> (hostname = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QCString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectDCOPSignal</b> (sender, senderObj, signal, receiverObj, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>senderObj</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>receiverObj</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectDCOPSignal</b> (sender, signal, receiverObj, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>receiverObj</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emergencyClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitDCOPSignal</b> (object, signal, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitDCOPSignal</b> (signal, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endTransaction</b> (t, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>DCOPClientTransaction</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (app, obj, fun, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) replyType (QCString) replyData (QByteArray)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findLocalClient</b> (_appId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_appId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findObject</b> (remApp, remObj, remFun, data, useEventLoop, timeout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) foundApp (QCString) foundObj (QCString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>useEventLoop</td><td>bool</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findObject</b> (remApp, remObj, remFun, data, useEventLoop = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) foundApp (QCString) foundObj (QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>useEventLoop</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleAsyncReply</b> (replyStruct)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iceauthPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isApplicationRegistered</b> (remApp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAttached</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAttachedToForeignServer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRegistered</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSuspended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mainClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>normalizeFunctionSignature</b> (fun)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postMortemFunction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postMortemObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postMortemSender</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processSocketData</b> (socknum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>socknum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>qtBridgeEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receive</b> (app, obj, fun, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) replyType (QCString) replyData (QByteArray)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>registerAs</b> (appId, addPID = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appId</td><td>QCString</td><td></td></tr>
+<tr><td>addPID</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>registeredApplications</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remoteFunctions</b> (remApp, remObj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remoteInterfaces</b> (remApp, remObj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remoteObjects</b> (remApp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>send</b> (remApp, remObj, remFun, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>send</b> (remApp, remObj, remFun, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>remApp</td><td>QCString</td><td></td></tr>
+<tr><td>remObj</td><td>QCString</td><td></td></tr>
+<tr><td>remFun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>senderId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptCalls</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDaemonMode</b> (daemonMode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>daemonMode</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultObject</b> (objId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainClient</b> (mainClient)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mainClient</td><td>DCOPClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNotifications</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPriorityCall</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setQtBridgeEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setServerAddress</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>socket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspend</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transactionId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Q_INT32)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPObject.html b/python/pykde/doc/classref/dcop/DCOPObject.html
new file mode 100644
index 00000000..c4eb4321
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPObject.html
@@ -0,0 +1,160 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPObject</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPObject</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPObject</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DCOPObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPObject instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPObject</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPObject instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPObject</b> (objId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPObject instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callingDcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectDCOPSignal</b> (sender, senderObj, signal, slot, Volatile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>senderObj</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+<tr><td>Volatile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectDCOPSignal</b> (sender, senderObj, signal, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QCString</td><td></td></tr>
+<tr><td>senderObj</td><td>QCString</td><td></td></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>slot</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitDCOPSignal</b> (signal, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (objId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPObject)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functionsDynamic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasObject</b> (objId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfaces</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfacesDynamic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>match</b> (partialId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<DCOPObject>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>partialId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>objId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>objectName</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processDynamic</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCallingDcopClient</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DCOPClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setObjId</b> (objId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objId</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPObjectProxy.html b/python/pykde/doc/classref/dcop/DCOPObjectProxy.html
new file mode 100644
index 00000000..4344e354
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPObjectProxy.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPObjectProxy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPObjectProxy</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPObjectProxy</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DCOPObjectProxy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPObjectProxy instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPObjectProxy</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPObjectProxy instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DCOPClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (obj, fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPRef.html b/python/pykde/doc/classref/dcop/DCOPRef.html
new file mode 100644
index 00000000..4bdb9702
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPRef.html
@@ -0,0 +1,142 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPRef</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPRef</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPRef</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>EventLoopFlag</b> = {NoEventLoop, UseEventLoop
+}</ul>
+<h3>methods</h3><ul>
+<li><b>DCOPRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPRef instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPRef</b> (ref)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPRef instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ref</td><td>DCOPRef</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPRef</b> (app, obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPRef instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPRef</b> (object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPRef instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>DCOPObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPRef</b> (app, obj, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPRef instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>type</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>app</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>call</b> (fun)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPReply)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callExt</b> (fun, useEventLoop = NoEventLoop, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPReply)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>useEventLoop</td><td>DCOPRef.EventLoopFlag</td><td>NoEventLoop</td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>obj</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>object</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>send</b> (fun)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDCOPClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>DCOPClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRef</b> (app, obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRef</b> (app, obj, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>type</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPReply.html b/python/pykde/doc/classref/dcop/DCOPReply.html
new file mode 100644
index 00000000..5260ccfe
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPReply.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPReply</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPReply</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPReply</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>data</td><td>QByteArray</td></tr>
+<tr><td>type</td><td>QCString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/DCOPStub.html b/python/pykde/doc/classref/dcop/DCOPStub.html
new file mode 100644
index 00000000..a578888d
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/DCOPStub.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DCOPStub</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DCOPStub</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">dcop Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>dcop</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DCOPStub</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Status</b> = {CallSucceeded, CallFailed
+}</ul>
+<h3>methods</h3><ul>
+<li><b>DCOPStub</b> (app, obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPStub instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPStub</b> (client, app, obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPStub instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>DCOPClient</td><td></td></tr>
+<tr><td>app</td><td>QCString</td><td></td></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPStub</b> (ref)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DCOPStub instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ref</td><td>DCOPRef</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DCOPStub</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>app</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callFailed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>obj</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ok</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatus</b> (_status)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_status</td><td>DCOPStub.Status</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Status)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/dcop/index.html b/python/pykde/doc/classref/dcop/index.html
new file mode 100644
index 00000000..65b4823c
--- /dev/null
+++ b/python/pykde/doc/classref/dcop/index.html
@@ -0,0 +1,40 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module dcop</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>dcop Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DCOPClient - DCOPObject</th></tr>
+<tr ><td><a href="DCOPClient.html">DCOPClient</a></td></tr>
+<tr ><td><a href="DCOPObject.html">DCOPObject</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DCOPObjectProxy - DCOPRef</th></tr>
+<tr ><td><a href="DCOPObjectProxy.html">DCOPObjectProxy</a></td></tr>
+<tr ><td><a href="DCOPRef.html">DCOPRef</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DCOPReply - DCOPStub</th></tr>
+<tr ><td><a href="DCOPReply.html">DCOPReply</a></td></tr>
+<tr ><td><a href="DCOPStub.html">DCOPStub</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/glossary.html b/python/pykde/doc/classref/glossary.html
new file mode 100644
index 00000000..0c026cb4
--- /dev/null
+++ b/python/pykde/doc/classref/glossary.html
@@ -0,0 +1,40 @@
+<h2><a name="abstract">Abstract</a></h2>
+<p>
+Abstract classes are used as base classes. You cannot create
+an instance of an abstract class directly - you need to subclass
+it. In the subclass, you need to overload <i>all</i> of the
+class's <a href="#purevirtual">pure virtual</a> methods. These
+are marked as "pure virtual" in these docs, and are also indicated
+by a " = 0" at the end of the method declaration.
+</p>
+<p>
+If your subclass doesn't overload the pure virtual methods in the
+abstract base class, you won't be able to create an instance of it.
+</p>
+
+<h2><a name="purevirtual">pure virtual</a></h2>
+<p>
+Pure virtual methods are members of an <a href="#abstract">abstract</a>
+class (they're what makes the class abstract in the first place). Pure
+virtual methods are nothing more than place holders - there is no code
+associated with them
+</p>
+
+
+<h2><a name="variables">variables</a></h2>
+<p>
+Class variables can be read and written from Python. Global or static
+variables are <i>read only</i>. Variables that are "protected" or.
+"private" in C++ are not implemented.
+</p>
+
+<h2><a name="slots">slots</a></h2>
+<p>
+When using Qt or KDE in C++, methods involving connections to slots
+take 2 arguments: a QObject 'receiver' and a char* 'slot' name. In Python
+you only need to provide a single value - the name of a Python callable
+method or function which will be connected to a signal. The method or
+function does not need to be in the class where it is reference, and does
+not have to be in a class at all. There are other options - see the
+"Signals and Slots" documentation for more information.
+</p>
diff --git a/python/pykde/doc/classref/index.html b/python/pykde/doc/classref/index.html
new file mode 100644
index 00000000..a73c6acb
--- /dev/null
+++ b/python/pykde/doc/classref/index.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>PyKDE Classref</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+&nbsp;
+<table width="100%" >
+<tr>
+ <td valign=top>
+ <table width="80%" >
+ <tr bgcolor="#C8C8FF">
+ <td><b>PyKDE API Reference - Modules</b></td>
+ </tr>
+ <tr bgcolor="#F0F0FF">
+ <td><ul>
+<li><a href="dcop/index.html">dcop</a></li>
+<li><a href="kabc/index.html">kabc</a></li>
+<li><a href="kdecore/index.html">kdecore</a></li>
+<li><a href="kdefx/index.html">kdefx</a></li>
+<li><a href="kdeprint/index.html">kdeprint</a></li>
+<li><a href="kdeui/index.html">kdeui</a></li>
+<li><a href="kfile/index.html">kfile</a></li>
+<li><a href="khtml/index.html">khtml</a></li>
+<li><a href="kio/index.html">kio</a></li>
+<li><a href="kmdi/index.html">kmdi</a></li>
+<li><a href="kparts/index.html">kparts</a></li>
+<li><a href="kresources/index.html">kresources</a></li>
+<li><a href="kspell/index.html">kspell</a></li>
+<li><a href="kutils/index.html">kutils</a></li>
+</ul>
+ </td>
+ </table>
+ </td>
+ <td valign=TOP>
+ <center><h1>PyKDE API Reference</h1></center>
+ <font size="+2">T</font>his section contains the PyKDE class reference for the
+ current version of PyKDE.
+ <ul>
+ <li><a href="doc/index.html">Table of contents</a></li>
+ <li>Modules</li>
+ <li><a href=allclasses.html>All Classes</a><li>
+ </ul>
+ </td>
+</tr></table>
+</table>
+</body>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Address.html b/python/pykde/doc/classref/kabc/KABC.Address.html
new file mode 100644
index 00000000..b7dd7d32
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Address.html
@@ -0,0 +1,249 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Address</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Address</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Address</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Type</b> = {Dom, Intl, Postal, Parcel, Home, Work, Pref
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Address</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Address instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Address</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Address instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ISOtoCountry</b> (ISOname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ISOname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>country</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>countryLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>countryToISO</b> (cname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dump</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extendedLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formattedAddress</b> (realName = QString .null, orgaName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>realName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>orgaName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>labelLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locality</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localityLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postOfficeBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postOfficeBoxLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postalCode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postalCodeLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>region</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>regionLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCountry</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtended</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocality</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPostOfficeBox</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPostalCode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRegion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStreet</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>street</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>streetLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Address.TypeList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Address</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Address</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.AddressBook.html b/python/pykde/doc/classref/kabc/KABC.AddressBook.html
new file mode 100644
index 00000000..81082289
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.AddressBook.html
@@ -0,0 +1,281 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.AddressBook</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.AddressBook</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.AddressBook</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AddressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AddressBook instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>AddressBook</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AddressBook instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCustomField</b> (label, category = KABC .Field .All, key = QString .null, app = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>category</td><td>int</td><td>KABC .Field .All</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>app</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addResource</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBookChanged</b> (addressBook)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addressBook</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBookLocked</b> (addressBook)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addressBook</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBookUnlocked</b> (addressBook)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addressBook</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allAddressees</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncLoad</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncSave</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteRemovedAddressees</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dump</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitAddressBookChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitAddressBookLocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitAddressBookUnlocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fields</b> (category = KABC .Field .All)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>category</td><td>int</td><td>KABC .Field .All</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByCategory</b> (category)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>category</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByEmail</b> (email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByUid</b> (uid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uid</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertAddressee</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadingFinished</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadingHasFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>releaseSaveTicket</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (it)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeResource</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> (resource = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceLoadingError</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceLoadingFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceSavingError</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceSavingFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resources</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KABC.Resource>)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>savingFinished</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setErrorHandler</b> (errorHandler)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>errorHandler</td><td>KABC.ErrorHandler</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStandardResource</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>standardResource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.AddressLineEdit.html b/python/pykde/doc/classref/kabc/KABC.AddressLineEdit.html
new file mode 100644
index 00000000..3e88c2ff
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.AddressLineEdit.html
@@ -0,0 +1,123 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.AddressLineEdit</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.AddressLineEdit</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.AddressLineEdit</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AddressLineEdit</b> (parent, useCompletion = 1, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AddressLineEdit instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>useCompletion</td><td>bool</td><td>1</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addAddress</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cursorAtEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doCompletion</b> (ctrlT)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ctrlT</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableCompletion</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAddresses</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paste</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.AddresseeDialog.html b/python/pykde/doc/classref/kabc/KABC.AddresseeDialog.html
new file mode 100644
index 00000000..3289911e
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.AddresseeDialog.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.AddresseeDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.AddresseeDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.AddresseeDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AddresseeDialog</b> (parent = 0, multiple = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AddresseeDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>multiple</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBookChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressee</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressees</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAddressee</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAddressees</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.AddresseeItem.html b/python/pykde/doc/classref/kabc/KABC.AddresseeItem.html
new file mode 100644
index 00000000..4e2f6c10
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.AddresseeItem.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.AddresseeItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.AddresseeItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.AddresseeItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListViewItem </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>columns</b> = {Name, Email
+}</ul>
+<h3>methods</h3><ul>
+<li><b>AddresseeItem</b> (parent, addressee)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AddresseeItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>addressee</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressee</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (column, ascending)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+<tr><td>ascending</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Agent.html b/python/pykde/doc/classref/kabc/KABC.Agent.html
new file mode 100644
index 00000000..442ffb2d
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Agent.html
@@ -0,0 +1,105 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Agent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Agent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Agent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Agent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Agent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Agent</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Agent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Agent</b> (addressee)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Agent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addressee</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressee</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isIntern</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAddressee</b> (addressee)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addressee</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUrl</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Agent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Agent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.ConsoleErrorHandler.html b/python/pykde/doc/classref/kabc/KABC.ConsoleErrorHandler.html
new file mode 100644
index 00000000..b2d91cf2
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.ConsoleErrorHandler.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.ConsoleErrorHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.ConsoleErrorHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.ConsoleErrorHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.ErrorHandler </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>error</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionList.Entry.html b/python/pykde/doc/classref/kabc/KABC.DistributionList.Entry.html
new file mode 100644
index 00000000..89284d84
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionList.Entry.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionList.Entry</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionList.Entry</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionList.Entry</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Entry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Entry instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Entry</b> (_addressee, _email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Entry instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_addressee</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>_email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>addressee</td><td>KABC::Addressee</td></tr>
+<tr><td>email</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionList.html b/python/pykde/doc/classref/kabc/KABC.DistributionList.html
new file mode 100644
index 00000000..c5653eee
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionList.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DistributionList</b> (manager, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DistributionList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>manager</td><td>KABC.DistributionListManager</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emails</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.DistributionList.Entry.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertEntry</b> (a0, email = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeEntry</b> (a0, email = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionListDialog.html b/python/pykde/doc/classref/kabc/KABC.DistributionListDialog.html
new file mode 100644
index 00000000..b1085d3a
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionListDialog.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionListDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionListDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionListDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DistributionListDialog</b> (ab, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DistributionListDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ab</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionListEditorWidget.html b/python/pykde/doc/classref/kabc/KABC.DistributionListEditorWidget.html
new file mode 100644
index 00000000..63498563
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionListEditorWidget.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionListEditorWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionListEditorWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionListEditorWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DistributionListEditorWidget</b> (a0, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DistributionListEditorWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionListManager.html b/python/pykde/doc/classref/kabc/KABC.DistributionListManager.html
new file mode 100644
index 00000000..dba1b0dc
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionListManager.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionListManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionListManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionListManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DistributionListManager</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DistributionListManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.DistributionList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>list</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.DistributionList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.DistributionList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.DistributionListWatcher.html b/python/pykde/doc/classref/kabc/KABC.DistributionListWatcher.html
new file mode 100644
index 00000000..1a42c31e
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.DistributionListWatcher.html
@@ -0,0 +1,58 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.DistributionListWatcher</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.DistributionListWatcher</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.DistributionListWatcher</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DistributionListWatcher</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DistributionListWatcher instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.DistributionListWatcher)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~DistributionListWatcher</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.EmailSelectDialog.html b/python/pykde/doc/classref/kabc/KABC.EmailSelectDialog.html
new file mode 100644
index 00000000..5894897e
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.EmailSelectDialog.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.EmailSelectDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.EmailSelectDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.EmailSelectDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>EmailSelectDialog</b> (emails, current, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EmailSelectDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>emails</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getEmail</b> (emails, current, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>emails</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.EmailSelector.html b/python/pykde/doc/classref/kabc/KABC.EmailSelector.html
new file mode 100644
index 00000000..f81e0eb2
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.EmailSelector.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.EmailSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.EmailSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.EmailSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>EmailSelector</b> (emails, current, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EmailSelector instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>emails</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getEmail</b> (emails, current, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>emails</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.ErrorHandler.html b/python/pykde/doc/classref/kabc/KABC.ErrorHandler.html
new file mode 100644
index 00000000..e126d962
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.ErrorHandler.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.ErrorHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.ErrorHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.ErrorHandler <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>error</b> (msg) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Field.html b/python/pykde/doc/classref/kabc/KABC.Field.html
new file mode 100644
index 00000000..10e403fa
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Field.html
@@ -0,0 +1,184 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Field</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Field</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Field</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>FieldCategory</b> = {All, Frequent, Address, Email, Personal, Organization, CustomCategory
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Field</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Field</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Field instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allFields</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>category</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>categoryLabel</b> (category)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>category</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCustomField</b> (label, category, key, app)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>category</td><td>int</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>app</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDefaultField</b> (id, category = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>category</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createField</b> (id, category = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>category</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultFields</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteFields</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>equals</b> (field)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>field</td><td>KABC.Field</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCustom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreFields</b> (cfg, identifier)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cfg</td><td>KConfig</td><td></td></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreFields</b> (identifier)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Field.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveFields</b> (cfg, identifier, fields)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cfg</td><td>KConfig</td><td></td></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+<tr><td>fields</td><td>KABC.Field.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveFields</b> (identifier, fields)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+<tr><td>fields</td><td>KABC.Field.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~Field</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.FieldSortMode.html b/python/pykde/doc/classref/kabc/KABC.FieldSortMode.html
new file mode 100644
index 00000000..7278a4cb
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.FieldSortMode.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.FieldSortMode</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.FieldSortMode</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.FieldSortMode</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.SortMode </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>FieldSortMode</b> (field, ascending = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a FieldSortMode instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>field</td><td>KABC.Field</td><td></td></tr>
+<tr><td>ascending</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lesser</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Format.html b/python/pykde/doc/classref/kabc/KABC.Format.html
new file mode 100644
index 00000000..2b8e0017
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Format.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Format</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Format</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Format <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>load</b> (a0, fileName) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0, fileName) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.FormatFactory.html b/python/pykde/doc/classref/kabc/KABC.FormatFactory.html
new file mode 100644
index 00000000..c535dad9
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.FormatFactory.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.FormatFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.FormatFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.FormatFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>FormatFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a FormatFactory instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.FormatPlugin)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formats</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>info</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.FormatInfo)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.FormatFactory)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~FormatFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.FormatInfo.html b/python/pykde/doc/classref/kabc/KABC.FormatInfo.html
new file mode 100644
index 00000000..1d6aafb4
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.FormatInfo.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.FormatInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.FormatInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.FormatInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>descriptionLabel</td><td>QString</td></tr>
+<tr><td>library</td><td>QString</td></tr>
+<tr><td>nameLabel</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.FormatPlugin.html b/python/pykde/doc/classref/kabc/KABC.FormatPlugin.html
new file mode 100644
index 00000000..1cb7f19d
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.FormatPlugin.html
@@ -0,0 +1,87 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.FormatPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.FormatPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.FormatPlugin <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.Plugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>checkFormat</b> (file) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0, file) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAll</b> (a0, a1, file) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0, file) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAll</b> (a0, a1, file) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.GUIErrorHandler.html b/python/pykde/doc/classref/kabc/KABC.GUIErrorHandler.html
new file mode 100644
index 00000000..9259c18d
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.GUIErrorHandler.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.GUIErrorHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.GUIErrorHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.GUIErrorHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.ErrorHandler </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>error</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Geo.html b/python/pykde/doc/classref/kabc/KABC.Geo.html
new file mode 100644
index 00000000..719dff3b
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Geo.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Geo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Geo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Geo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Geo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Geo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Geo</b> (latitude, longitude)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Geo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>latitude</td><td>float</td><td></td></tr>
+<tr><td>longitude</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>latitude</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>longitude</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLatitude</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLongitude</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Geo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Geo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.GuiErrorHandler.html b/python/pykde/doc/classref/kabc/KABC.GuiErrorHandler.html
new file mode 100644
index 00000000..d1784871
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.GuiErrorHandler.html
@@ -0,0 +1,55 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.GuiErrorHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.GuiErrorHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.GuiErrorHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.ErrorHandler </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>GuiErrorHandler</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a GuiErrorHandler instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Key.html b/python/pykde/doc/classref/kabc/KABC.Key.html
new file mode 100644
index 00000000..c5249152
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Key.html
@@ -0,0 +1,140 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Key</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Key</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Key</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Types</b> = {X509, PGP, Custom
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Key</b> (text = QString .null, type = PGP)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Key instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>type</td><td>int</td><td>PGP</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>binaryData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customTypeString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isBinary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBinaryData</b> (binary)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>binary</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomTypeString</b> (custom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>custom</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTextData</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(TypeList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LDAPUrl.Extension.html b/python/pykde/doc/classref/kabc/KABC.LDAPUrl.Extension.html
new file mode 100644
index 00000000..6c2f2c9e
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LDAPUrl.Extension.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LDAPUrl.Extension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LDAPUrl.Extension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LDAPUrl.Extension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>critical</td><td>bool</td></tr>
+<tr><td>value</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LDAPUrl.html b/python/pykde/doc/classref/kabc/KABC.LDAPUrl.html
new file mode 100644
index 00000000..5f554d19
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LDAPUrl.html
@@ -0,0 +1,152 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LDAPUrl</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LDAPUrl</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LDAPUrl</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KURL </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Scope</b> = {Base, One, Sub
+}</ul>
+<h3>methods</h3><ul>
+<li><b>LDAPUrl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LDAPUrl instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LDAPUrl</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LDAPUrl instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extension</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDAPUrl.Extension)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extension</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) critical (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasExtension</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseQuery</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeExtension</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scope</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDAPUrl.Scope)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributes</b> (attributes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>attributes</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDn</b> (dn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dn</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtension</b> (key, ext)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>ext</td><td>KABC.LDAPUrl.Extension</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtension</b> (key, value, critical = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>critical</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScope</b> (scope)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>scope</td><td>KABC.LDAPUrl.Scope</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateQuery</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LDIF.html b/python/pykde/doc/classref/kabc/KABC.LDIF.html
new file mode 100644
index 00000000..2f8789c4
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LDIF.html
@@ -0,0 +1,174 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LDIF</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LDIF</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LDIF</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>EntryType</b> = {Entry_None, Entry_Add, Entry_Del, Entry_Mod, Entry_Modrdn
+}<li><b>ModType</b> = {Mod_None, Mod_Add, Mod_Replace, Mod_Del
+}<li><b>ParseVal</b> = {None, NewEntry, EndEntry, Item, Control, Err, MoreData
+}</ul>
+<h3>methods</h3><ul>
+<li><b>LDIF</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LDIF instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assembleLine</b> (fieldname, value, linelen = 0, url = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QByteArray</td><td></td></tr>
+<tr><td>linelen</td><td>uint</td><td>0</td></tr>
+<tr><td>url</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assembleLine</b> (fieldname, value, linelen = 0, url = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QCString</td><td></td></tr>
+<tr><td>linelen</td><td>uint</td><td>0</td></tr>
+<tr><td>url</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assembleLine</b> (fieldname, value, linelen = 0, url = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>linelen</td><td>uint</td><td>0</td></tr>
+<tr><td>url</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>critical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delOldRdn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endLDIF</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDIF.EntryType)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isUrl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineNo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newRdn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newSuperior</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDIF.ParseVal)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>oid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDIF.ParseVal)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLDIF</b> (ldif)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ldif</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitControl</b> (line, oid, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) critical (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QCString</td><td></td></tr>
+<tr><td>oid</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitLine</b> (line, fieldname, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QCString</td><td></td></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startParsing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>val</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LDIFConverter.html b/python/pykde/doc/classref/kabc/KABC.LDIFConverter.html
new file mode 100644
index 00000000..d9286782
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LDIFConverter.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LDIFConverter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LDIFConverter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LDIFConverter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LDIFToAddressee</b> (a0, a1, a2 = QDateTime .currentDateTime ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>a2</td><td>QDateTime</td><td>QDateTime .currentDateTime ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LDIFToAddressee</b> (a0, a1, a2 = QDateTime .currentDateTime ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>a2</td><td>QDateTime</td><td>QDateTime .currentDateTime ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addresseeToLDIF</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addresseeToLDIF</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addresseeToLDIF</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>evaluatePair</b> (a, homeAddr, workAddr, fieldname, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>homeAddr</td><td>KABC.Address</td><td></td></tr>
+<tr><td>workAddr</td><td>KABC.Address</td><td></td></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeLDIFfieldString</b> (field, value, allowEncode = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>field</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>allowEncode</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseSingleLine</b> (a, homeAddr, workAddr, line)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>homeAddr</td><td>KABC.Address</td><td></td></tr>
+<tr><td>workAddr</td><td>KABC.Address</td><td></td></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitLine</b> (line, fieldname, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+<tr><td>fieldname</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LdapClient.html b/python/pykde/doc/classref/kabc/KABC.LdapClient.html
new file mode 100644
index 00000000..50b9c5d3
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LdapClient.html
@@ -0,0 +1,190 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LdapClient</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LdapClient</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LdapClient</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LdapClient</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapClient instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attrs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bindDN</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelQuery</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endParseLDIF</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>host</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseLDIF</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pwdBindDN</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>result</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.LdapObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttrs</b> (attrs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>attrs</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBase</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBindDN</b> (bindDN)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bindDN</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHost</b> (host)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPort</b> (port)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>port</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPwdBindDN</b> (pwdBindDN)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pwdBindDN</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScope</b> (scope)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>scope</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotData</b> (a0, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInfoMessage</b> (a0, info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>info</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startParseLDIF</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startQuery</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LdapConfigWidget.html b/python/pykde/doc/classref/kabc/KABC.LdapConfigWidget.html
new file mode 100644
index 00000000..dad295d7
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LdapConfigWidget.html
@@ -0,0 +1,276 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LdapConfigWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LdapConfigWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LdapConfigWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>LCW_Flags</b> = {W_USER, W_PASS, W_BINDDN, W_REALM, W_HOST, W_PORT, W_VER, W_DN, W_FILTER, W_SECBOX, W_AUTHBOX, W_TIMELIMIT, W_SIZELIMIT, W_ALL
+}</ul>
+<h3>methods</h3><ul>
+<li><b>LdapConfigWidget</b> (parent = 0, name = 0, fl = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapConfigWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>fl</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LdapConfigWidget</b> (flags, parent = 0, name = 0, fl = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapConfigWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>fl</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bindDN</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>host</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAuthAnon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAuthSASL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAuthSimple</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSecNO</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSecSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSecTLS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mech</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>password</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>realm</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAuthAnon</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAuthSASL</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAuthSimple</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBindDN</b> (binddn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>binddn</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDn</b> (dn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dn</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFlags</b> (flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHost</b> (host)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMech</b> (mech)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mech</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPassword</b> (password)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>password</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPort</b> (port)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>port</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRealm</b> (realm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>realm</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSecNO</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSecSSL</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSecTLS</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSizeLimit</b> (sizelimit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sizelimit</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimeLimit</b> (timelimit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>timelimit</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUser</b> (user)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVer</b> (ver)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ver</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeLimit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeLimit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.LDAPUrl)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ver</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LdapObject.html b/python/pykde/doc/classref/kabc/KABC.LdapObject.html
new file mode 100644
index 00000000..fd48df48
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LdapObject.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LdapObject</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LdapObject</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LdapObject</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LdapObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapObject instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LdapObject</b> (_dn, _cl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapObject instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_dn</td><td>QString</td><td></td></tr>
+<tr><td>_cl</td><td>KABC.LdapClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LdapObject</b> (that)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapObject instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>that</td><td>KABC.LdapObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LdapObject</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapObject instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assign</b> (that)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>that</td><td>KABC.LdapObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>attrs</td><td>LdapAttrMap</td></tr>
+<tr><td>client</td><td>KABC::LdapClient*</td></tr>
+<tr><td>dn</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LdapResult.html b/python/pykde/doc/classref/kabc/KABC.LdapResult.html
new file mode 100644
index 00000000..235e0941
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LdapResult.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LdapResult</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LdapResult</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LdapResult</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>clientNumber</td><td>int</td></tr>
+<tr><td>email</td><td>QString</td></tr>
+<tr><td>name</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LdapSearch.html b/python/pykde/doc/classref/kabc/KABC.LdapSearch.html
new file mode 100644
index 00000000..dd5068e4
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LdapSearch.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LdapSearch</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LdapSearch</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LdapSearch</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LdapSearch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LdapSearch instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelSearch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAvailable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.LdapResultList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchDone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startSearch</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Lock.html b/python/pykde/doc/classref/kabc/KABC.Lock.html
new file mode 100644
index 00000000..6d8610e5
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Lock.html
@@ -0,0 +1,94 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Lock</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Lock</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Lock</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Lock</b> (identifier)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Lock instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lockFileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locksDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readLockFile</b> (filename, app)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) pid (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>app</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeLockFile</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.LockNull.html b/python/pykde/doc/classref/kabc/KABC.LockNull.html
new file mode 100644
index 00000000..085f7f06
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.LockNull.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.LockNull</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.LockNull</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.LockNull</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.Lock </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LockNull</b> (allowAccess)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LockNull instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowAccess</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.NameSortMode.html b/python/pykde/doc/classref/kabc/KABC.NameSortMode.html
new file mode 100644
index 00000000..6539fa29
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.NameSortMode.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.NameSortMode</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.NameSortMode</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.NameSortMode</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.SortMode </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>NameType</b> = {FormattedName, FamilyName, GivenName
+}</ul>
+<h3>methods</h3><ul>
+<li><b>NameSortMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NameSortMode instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NameSortMode</b> (type, ascending = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NameSortMode instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KABC.NameSortMode.NameType</td><td></td></tr>
+<tr><td>ascending</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lesser</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.PhoneNumber.html b/python/pykde/doc/classref/kabc/KABC.PhoneNumber.html
new file mode 100644
index 00000000..c14321ea
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.PhoneNumber.html
@@ -0,0 +1,127 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.PhoneNumber</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.PhoneNumber</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.PhoneNumber</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {Home, Work, Msg, Pref, Voice, Fax, Cell, Video, Bbs, Modem, Car, Isdn, Pcs, Pager
+}<li><b>Types</b> = {Home, Work, Msg, Pref, Voice, Fax, Cell, Video, Bbs, Modem, Car, Isdn, Pcs, Pager
+}</ul>
+<h3>methods</h3><ul>
+<li><b>PhoneNumber</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PhoneNumber instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>PhoneNumber</b> (number, type = Home)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PhoneNumber instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>number</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>int</td><td>Home</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>number</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNumber</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(TypeList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.PhoneNumber</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.PhoneNumber</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Picture.html b/python/pykde/doc/classref/kabc/KABC.Picture.html
new file mode 100644
index 00000000..46c5c7ca
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Picture.html
@@ -0,0 +1,116 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Picture</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Picture</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Picture</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Picture</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Picture instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Picture</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Picture instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Picture</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Picture instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isIntern</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUrl</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Picture</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Picture</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Plugin.html b/python/pykde/doc/classref/kabc/KABC.Plugin.html
new file mode 100644
index 00000000..59cf21fc
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Plugin.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Plugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Plugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Plugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Plugin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Plugin instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>descriptionLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nameLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDescriptionLabel</b> (label)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNameLabel</b> (label)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Resource.html b/python/pykde/doc/classref/kabc/KABC.Resource.html
new file mode 100644
index 00000000..0ce1ab16
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Resource.html
@@ -0,0 +1,346 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Resource</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Resource</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Resource</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Resource</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Resource instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Resource</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Resource instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Resource</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Resource instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.AddressBook)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.AddressBook)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.AddressBook)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncLoad</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncSave</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>begin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>begin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cryptStr</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>end</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>end</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fastResource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByCategory</b> (category)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>category</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByEmail</b> (email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByUid</b> (uid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uid</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertAddressee</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadingError</b> (resource, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadingFinished</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>releaseSaveTicket</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (ticket) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>savingError</b> (resource, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>savingFinished</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAddressBook</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAddressBook</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFastResource</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.ResourceFile.html b/python/pykde/doc/classref/kabc/KABC.ResourceFile.html
new file mode 100644
index 00000000..2fb527eb
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.ResourceFile.html
@@ -0,0 +1,312 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.ResourceFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.ResourceFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.ResourceFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.Resource </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ResourceFile</b> (cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cfg</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (fileName, formatName = "vcard")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>formatName</td><td>QString</td><td>"vcard"</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (a0, a1, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KABC.FormatPlugin</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (a0, a1, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KABC.FormatPlugin</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceFile</b> (a0, a1, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceFile instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KABC.Format</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncLoad</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asyncSave</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doOpen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.1 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (fileName, format)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lock</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lock</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>releaseSaveTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>releaseSaveTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>releaseSaveTicket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAddressee</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.1 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestSaveTicket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Ticket)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (ticket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ticket</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Ticket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFormat</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlock</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlock</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cfg</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.ResourceSelectDialog.html b/python/pykde/doc/classref/kabc/KABC.ResourceSelectDialog.html
new file mode 100644
index 00000000..737ff0d2
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.ResourceSelectDialog.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.ResourceSelectDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.ResourceSelectDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.ResourceSelectDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ResourceSelectDialog</b> (ab, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceSelectDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ab</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ResourceSelectDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourceSelectDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.ResourceSelectDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getResource</b> (ab, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ab</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Secrecy.html b/python/pykde/doc/classref/kabc/KABC.Secrecy.html
new file mode 100644
index 00000000..65590a7b
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Secrecy.html
@@ -0,0 +1,100 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Secrecy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Secrecy</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Secrecy</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Types</b> = {Public, Private, Confidential, Invalid
+}<li><b>Types</b> = {Public, Private, Confidential
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Secrecy</b> (type = Private)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Secrecy instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td>Private</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeLabel</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(TypeList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Secrecy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Secrecy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortMode.html b/python/pykde/doc/classref/kabc/KABC.SortMode.html
new file mode 100644
index 00000000..b82da335
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortMode.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortMode</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortMode</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortMode <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>lesser</b> (first, second) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>first</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>second</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.FamilyName.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.FamilyName.html
new file mode 100644
index 00000000..5b1b56ea
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.FamilyName.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits.FamilyName</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits.FamilyName</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits.FamilyName</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>eq</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lt</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.FormattedName.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.FormattedName.html
new file mode 100644
index 00000000..9c6ff2e8
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.FormattedName.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits.FormattedName</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits.FormattedName</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits.FormattedName</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>eq</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lt</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.GivenName.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.GivenName.html
new file mode 100644
index 00000000..6c75dd1b
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.GivenName.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits.GivenName</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits.GivenName</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits.GivenName</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>eq</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lt</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.Name.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.Name.html
new file mode 100644
index 00000000..429a87dc
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.Name.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits.Name</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits.Name</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits.Name</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>eq</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lt</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.Uid.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.Uid.html
new file mode 100644
index 00000000..d28040c7
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.Uid.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits.Uid</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits.Uid</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits.Uid</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>eq</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lt</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.SortingTraits.html b/python/pykde/doc/classref/kabc/KABC.SortingTraits.html
new file mode 100644
index 00000000..b13211be
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.SortingTraits.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.SortingTraits</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.SortingTraits</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.SortingTraits</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KABC.SortingTraits.FamilyName.html">FamilyName</a></b><li><b><a href="KABC.SortingTraits.FormattedName.html">FormattedName</a></b><li><b><a href="KABC.SortingTraits.GivenName.html">GivenName</a></b><li><b><a href="KABC.SortingTraits.Name.html">Name</a></b><li><b><a href="KABC.SortingTraits.Uid.html">Uid</a></b></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Sound.html b/python/pykde/doc/classref/kabc/KABC.Sound.html
new file mode 100644
index 00000000..60c27e19
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Sound.html
@@ -0,0 +1,109 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Sound</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Sound</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Sound</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Sound</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sound instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Sound</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sound instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Sound</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sound instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isIntern</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUrl</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Sound</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Sound</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.StdAddressBook.html b/python/pykde/doc/classref/kabc/KABC.StdAddressBook.html
new file mode 100644
index 00000000..fb5eab35
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.StdAddressBook.html
@@ -0,0 +1,143 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.StdAddressBook</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.StdAddressBook</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.StdAddressBook</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.AddressBook </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StdAddressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StdAddressBook instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>StdAddressBook</b> (asynchronous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StdAddressBook instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>asynchronous</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>automaticSave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directoryName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleCrash</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (asynchronous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>asynchronous</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.StdAddressBook)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> (asynchronous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.StdAddressBook)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>asynchronous</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.AddressBook)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.AddressBook)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.2</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutomaticSave</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWhoAmI</b> (addr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whoAmI</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~StdAddressBook</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.Ticket.html b/python/pykde/doc/classref/kabc/KABC.Ticket.html
new file mode 100644
index 00000000..f5f3aa76
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.Ticket.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.Ticket</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.Ticket</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.Ticket</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Ticket</b> (resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Ticket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KABC.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Resource)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.TimeZone.html b/python/pykde/doc/classref/kabc/KABC.TimeZone.html
new file mode 100644
index 00000000..af7d1179
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.TimeZone.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.TimeZone</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.TimeZone</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.TimeZone</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>TimeZone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TimeZone instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TimeZone</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TimeZone instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOffset</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.TimeZone</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.TimeZone</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.VCardConverter.html b/python/pykde/doc/classref/kabc/KABC.VCardConverter.html
new file mode 100644
index 00000000..aec960a0
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.VCardConverter.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.VCardConverter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.VCardConverter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.VCardConverter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Version</b> = {v2_1, v3_0
+}</ul>
+<h3>methods</h3><ul>
+<li><b>VCardConverter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a VCardConverter instance</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addresseeToVCard</b> (a0, a1, version = v3_0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>version</td><td>KABC.VCardConverter.Version</td><td>v3_0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createVCard</b> (addr, version = v3_0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>addr</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>version</td><td>KABC.VCardConverter.Version</td><td>v3_0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createVCards</b> (list, version = v3_0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KABC.Addressee.List</td><td></td></tr>
+<tr><td>version</td><td>KABC.VCardConverter.Version</td><td>v3_0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseVCard</b> (vcard)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>vcard</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseVCards</b> (vcard)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KABC.Addressee.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>vcard</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vCardToAddressee</b> (a0, a1, version = v3_0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>version</td><td>KABC.VCardConverter.Version</td><td>v3_0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.VCardFormat.html b/python/pykde/doc/classref/kabc/KABC.VCardFormat.html
new file mode 100644
index 00000000..fc7eb790
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.VCardFormat.html
@@ -0,0 +1,58 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.VCardFormat</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.VCardFormat</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.VCardFormat</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.Format </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>VCardFormat</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a VCardFormat instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0, fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0, fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.VCardFormatPlugin.html b/python/pykde/doc/classref/kabc/KABC.VCardFormatPlugin.html
new file mode 100644
index 00000000..77c996c1
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.VCardFormatPlugin.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC.VCardFormatPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC.VCardFormatPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC.VCardFormatPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KABC.FormatPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>VCardFormatPlugin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a VCardFormatPlugin instance</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkFormat</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAll</b> (a0, a1, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.Addressee</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAll</b> (a0, a1, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KABC.AddressBook</td><td></td></tr>
+<tr><td>a1</td><td>KABC.Resource</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/KABC.html b/python/pykde/doc/classref/kabc/KABC.html
new file mode 100644
index 00000000..befb11d8
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/KABC.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KABC</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KABC</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kabc</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KABC</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KABC.Address.html">Address</a></b><li><b><a href="KABC.AddressBook.html">AddressBook</a></b><li><b><a href="KABC.AddressLineEdit.html">AddressLineEdit</a></b><li><b><a href="KABC.AddresseeDialog.html">AddresseeDialog</a></b><li><b><a href="KABC.AddresseeItem.html">AddresseeItem</a></b><li><b><a href="KABC.Agent.html">Agent</a></b><li><b><a href="KABC.ConsoleErrorHandler.html">ConsoleErrorHandler</a></b><li><b><a href="KABC.DistributionList.html">DistributionList</a></b><li><b><a href="KABC.DistributionList.Entry.html">DistributionList.Entry</a></b><li><b><a href="KABC.DistributionListDialog.html">DistributionListDialog</a></b><li><b><a href="KABC.DistributionListEditorWidget.html">DistributionListEditorWidget</a></b><li><b><a href="KABC.DistributionListManager.html">DistributionListManager</a></b><li><b><a href="KABC.DistributionListWatcher.html">DistributionListWatcher</a></b><li><b><a href="KABC.EmailSelectDialog.html">EmailSelectDialog</a></b><li><b><a href="KABC.EmailSelector.html">EmailSelector</a></b><li><b><a href="KABC.ErrorHandler.html">ErrorHandler</a></b><li><b><a href="KABC.Field.html">Field</a></b><li><b><a href="KABC.FieldSortMode.html">FieldSortMode</a></b><li><b><a href="KABC.Format.html">Format</a></b><li><b><a href="KABC.FormatFactory.html">FormatFactory</a></b><li><b><a href="KABC.FormatInfo.html">FormatInfo</a></b><li><b><a href="KABC.FormatPlugin.html">FormatPlugin</a></b><li><b><a href="KABC.GUIErrorHandler.html">GUIErrorHandler</a></b><li><b><a href="KABC.Geo.html">Geo</a></b><li><b><a href="KABC.GuiErrorHandler.html">GuiErrorHandler</a></b><li><b><a href="KABC.Key.html">Key</a></b><li><b><a href="KABC.LDAPUrl.html">LDAPUrl</a></b><li><b><a href="KABC.LDAPUrl.Extension.html">LDAPUrl.Extension</a></b><li><b><a href="KABC.LDIF.html">LDIF</a></b><li><b><a href="KABC.LdapClient.html">LdapClient</a></b><li><b><a href="KABC.LdapConfigWidget.html">LdapConfigWidget</a></b><li><b><a href="KABC.LdapObject.html">LdapObject</a></b><li><b><a href="KABC.LdapResult.html">LdapResult</a></b><li><b><a href="KABC.LdapSearch.html">LdapSearch</a></b><li><b><a href="KABC.Lock.html">Lock</a></b><li><b><a href="KABC.LockNull.html">LockNull</a></b><li><b><a href="KABC.NameSortMode.html">NameSortMode</a></b><li><b><a href="KABC.PhoneNumber.html">PhoneNumber</a></b><li><b><a href="KABC.Picture.html">Picture</a></b><li><b><a href="KABC.Plugin.html">Plugin</a></b><li><b><a href="KABC.Resource.html">Resource</a></b><li><b><a href="KABC.Resource.html">Resource</a></b><li><b><a href="KABC.Resource.html">Resource</a></b><li><b><a href="KABC.ResourceFile.html">ResourceFile</a></b><li><b><a href="KABC.ResourceFile.html">ResourceFile</a></b><li><b><a href="KABC.ResourceSelectDialog.html">ResourceSelectDialog</a></b><li><b><a href="KABC.Secrecy.html">Secrecy</a></b><li><b><a href="KABC.SortMode.html">SortMode</a></b><li><b><a href="KABC.Sound.html">Sound</a></b><li><b><a href="KABC.StdAddressBook.html">StdAddressBook</a></b><li><b><a href="KABC.Ticket.html">Ticket</a></b><li><b><a href="KABC.TimeZone.html">TimeZone</a></b><li><b><a href="KABC.VCardConverter.html">VCardConverter</a></b><li><b><a href="KABC.VCardFormat.html">VCardFormat</a></b><li><b><a href="KABC.VCardFormatPlugin.html">VCardFormatPlugin</a></b></ul>
+<h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {Uid, Name, FormattedName, FamilyName, GivenName
+}</ul>
+<h3>methods</h3><ul>
+<li><b>VCardStringToDate</b> (dateString)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dateString</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateToVCardString</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateToVCardString</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/index.html b/python/pykde/doc/classref/kabc/index.html
new file mode 100644
index 00000000..4091822a
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/index.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kabc</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kabc Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kabc-globals.html">kabc Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KABC - KABC.Format</th></tr>
+<tr ><td><a href="KABC.html">KABC</a></td></tr>
+<tr ><td><a href="KABC.Address.html">KABC.Address</a></td></tr>
+<tr ><td><a href="KABC.AddressBook.html">KABC.AddressBook</a></td></tr>
+<tr ><td><a href="KABC.AddressLineEdit.html">KABC.AddressLineEdit</a></td></tr>
+<tr ><td><a href="KABC.AddresseeDialog.html">KABC.AddresseeDialog</a></td></tr>
+<tr ><td><a href="KABC.AddresseeItem.html">KABC.AddresseeItem</a></td></tr>
+<tr ><td><a href="KABC.Agent.html">KABC.Agent</a></td></tr>
+<tr ><td><a href="KABC.ConsoleErrorHandler.html">KABC.ConsoleErrorHandler</a></td></tr>
+<tr ><td><a href="KABC.DistributionList.html">KABC.DistributionList</a></td></tr>
+<tr ><td><a href="KABC.DistributionList.Entry.html">KABC.DistributionList.Entry</a></td></tr>
+<tr ><td><a href="KABC.DistributionListDialog.html">KABC.DistributionListDialog</a></td></tr>
+<tr ><td><a href="KABC.DistributionListEditorWidget.html">KABC.DistributionListEditorWidget</a></td></tr>
+<tr ><td><a href="KABC.DistributionListManager.html">KABC.DistributionListManager</a></td></tr>
+<tr ><td><a href="KABC.DistributionListWatcher.html">KABC.DistributionListWatcher</a></td></tr>
+<tr ><td><a href="KABC.EmailSelectDialog.html">KABC.EmailSelectDialog</a></td></tr>
+<tr ><td><a href="KABC.EmailSelector.html">KABC.EmailSelector</a></td></tr>
+<tr ><td><a href="KABC.ErrorHandler.html"><i>KABC.ErrorHandler</i></a></td></tr>
+<tr ><td><a href="KABC.Field.html">KABC.Field</a></td></tr>
+<tr ><td><a href="KABC.FieldSortMode.html">KABC.FieldSortMode</a></td></tr>
+<tr ><td><a href="KABC.Format.html"><i>KABC.Format</i></a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KABC.FormatFactory - KABC.PhoneNumber</th></tr>
+<tr ><td><a href="KABC.FormatFactory.html">KABC.FormatFactory</a></td></tr>
+<tr ><td><a href="KABC.FormatInfo.html">KABC.FormatInfo</a></td></tr>
+<tr ><td><a href="KABC.FormatPlugin.html"><i>KABC.FormatPlugin</i></a></td></tr>
+<tr ><td><a href="KABC.GUIErrorHandler.html">KABC.GUIErrorHandler</a></td></tr>
+<tr ><td><a href="KABC.Geo.html">KABC.Geo</a></td></tr>
+<tr ><td><a href="KABC.GuiErrorHandler.html">KABC.GuiErrorHandler</a></td></tr>
+<tr ><td><a href="KABC.Key.html">KABC.Key</a></td></tr>
+<tr ><td><a href="KABC.LDAPUrl.html">KABC.LDAPUrl</a></td></tr>
+<tr ><td><a href="KABC.LDAPUrl.Extension.html">KABC.LDAPUrl.Extension</a></td></tr>
+<tr ><td><a href="KABC.LDIF.html">KABC.LDIF</a></td></tr>
+<tr ><td><a href="KABC.LDIFConverter.html">KABC.LDIFConverter</a></td></tr>
+<tr ><td><a href="KABC.LdapClient.html">KABC.LdapClient</a></td></tr>
+<tr ><td><a href="KABC.LdapConfigWidget.html">KABC.LdapConfigWidget</a></td></tr>
+<tr ><td><a href="KABC.LdapObject.html">KABC.LdapObject</a></td></tr>
+<tr ><td><a href="KABC.LdapResult.html">KABC.LdapResult</a></td></tr>
+<tr ><td><a href="KABC.LdapSearch.html">KABC.LdapSearch</a></td></tr>
+<tr ><td><a href="KABC.Lock.html">KABC.Lock</a></td></tr>
+<tr ><td><a href="KABC.LockNull.html">KABC.LockNull</a></td></tr>
+<tr ><td><a href="KABC.NameSortMode.html">KABC.NameSortMode</a></td></tr>
+<tr ><td><a href="KABC.PhoneNumber.html">KABC.PhoneNumber</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KABC.Picture - KABC.VCardFormatPlugin</th></tr>
+<tr ><td><a href="KABC.Picture.html">KABC.Picture</a></td></tr>
+<tr ><td><a href="KABC.Plugin.html">KABC.Plugin</a></td></tr>
+<tr ><td><a href="KABC.Resource.html">KABC.Resource</a></td></tr>
+<tr ><td><a href="KABC.ResourceFile.html">KABC.ResourceFile</a></td></tr>
+<tr ><td><a href="KABC.ResourceSelectDialog.html">KABC.ResourceSelectDialog</a></td></tr>
+<tr ><td><a href="KABC.Secrecy.html">KABC.Secrecy</a></td></tr>
+<tr ><td><a href="KABC.SortMode.html"><i>KABC.SortMode</i></a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.html">KABC.SortingTraits</a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.FamilyName.html">KABC.SortingTraits.FamilyName</a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.FormattedName.html">KABC.SortingTraits.FormattedName</a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.GivenName.html">KABC.SortingTraits.GivenName</a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.Name.html">KABC.SortingTraits.Name</a></td></tr>
+<tr ><td><a href="KABC.SortingTraits.Uid.html">KABC.SortingTraits.Uid</a></td></tr>
+<tr ><td><a href="KABC.Sound.html">KABC.Sound</a></td></tr>
+<tr ><td><a href="KABC.StdAddressBook.html">KABC.StdAddressBook</a></td></tr>
+<tr ><td><a href="KABC.Ticket.html">KABC.Ticket</a></td></tr>
+<tr ><td><a href="KABC.TimeZone.html">KABC.TimeZone</a></td></tr>
+<tr ><td><a href="KABC.VCardConverter.html">KABC.VCardConverter</a></td></tr>
+<tr ><td><a href="KABC.VCardFormat.html">KABC.VCardFormat</a></td></tr>
+<tr ><td><a href="KABC.VCardFormatPlugin.html">KABC.VCardFormatPlugin</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kabc/kabc-globals.html b/python/pykde/doc/classref/kabc/kabc-globals.html
new file mode 100644
index 00000000..266eb8e7
--- /dev/null
+++ b/python/pykde/doc/classref/kabc/kabc-globals.html
@@ -0,0 +1,28 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kabc globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kabc Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kabc Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAboutData.html b/python/pykde/doc/classref/kdecore/KAboutData.html
new file mode 100644
index 00000000..611bac31
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAboutData.html
@@ -0,0 +1,260 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutData</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutData</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutData</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>LicenseKey</b> = {License_Custom, License_File, License_Unknown, License_GPL, License_GPL_V2, License_LGPL, License_LGPL_V2, License_BSD, License_Artistic, License_QPL, License_QPL_V1_0
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KAboutData</b> (appName, programName, version, shortDescription = 0, licenseType = License_Unknown, copyrightStatement = 0, text = 0, homePageAddress = 0, bugsEmailAddress = "submit@bugs.kde.org")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appName</td><td>char</td><td></td></tr>
+<tr><td>programName</td><td>char</td><td></td></tr>
+<tr><td>version</td><td>char</td><td></td></tr>
+<tr><td>shortDescription</td><td>char</td><td>0</td></tr>
+<tr><td>licenseType</td><td>int</td><td>License_Unknown</td></tr>
+<tr><td>copyrightStatement</td><td>char</td><td>0</td></tr>
+<tr><td>text</td><td>char</td><td>0</td></tr>
+<tr><td>homePageAddress</td><td>char</td><td>0</td></tr>
+<tr><td>bugsEmailAddress</td><td>char</td><td>"submit@bugs.kde.org"</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutTranslationTeam</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addAuthor</b> (name, task = 0, emailAddress = 0, webAddress = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>task</td><td>char</td><td>0</td></tr>
+<tr><td>emailAddress</td><td>char</td><td>0</td></tr>
+<tr><td>webAddress</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCredit</b> (name, task = 0, emailAddress = 0, webAddress = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>task</td><td>char</td><td>0</td></tr>
+<tr><td>emailAddress</td><td>char</td><td>0</td></tr>
+<tr><td>webAddress</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authors</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAboutPerson>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bugAddress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyrightStatement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>credits</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAboutPerson>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customAuthorPlainText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customAuthorRichText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customAuthorTextEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>homepage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalBugAddress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalProgramName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalVersion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>license</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>otherText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>productName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>programLogo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>programName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAppName</b> (appName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBugAddress</b> (bugAddress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bugAddress</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCopyrightStatement</b> (copyrightStatement)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>copyrightStatement</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomAuthorText</b> (plainText, richText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>plainText</td><td>QString</td><td></td></tr>
+<tr><td>richText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHomepage</b> (homepage)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>homepage</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLicense</b> (licenseKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>licenseKey</td><td>KAboutData.LicenseKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLicenseText</b> (license)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>license</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLicenseTextFile</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOtherText</b> (otherText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>otherText</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProductName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgramLogo</b> (image)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgramName</b> (programName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>programName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortDescription</b> (shortDescription)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortDescription</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTranslator</b> (name, emailAddress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>emailAddress</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVersion</b> (version)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>version</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortDescription</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translateInternalProgramName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translators</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAboutTranslator>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsetCustomAuthorText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>version</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAboutPerson.html b/python/pykde/doc/classref/kdecore/KAboutPerson.html
new file mode 100644
index 00000000..6a74e1df
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAboutPerson.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutPerson</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutPerson</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutPerson</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutPerson</b> (name, task, emailAddress, webAddress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutPerson instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>task</td><td>char</td><td></td></tr>
+<tr><td>emailAddress</td><td>char</td><td></td></tr>
+<tr><td>webAddress</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAboutPerson</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutPerson instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emailAddress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>task</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>webAddress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAboutTranslator.html b/python/pykde/doc/classref/kdecore/KAboutTranslator.html
new file mode 100644
index 00000000..3a42622e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAboutTranslator.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutTranslator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutTranslator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutTranslator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutTranslator</b> (name = QString .null, emailAddress = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutTranslator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>emailAddress</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emailAddress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAccel.html b/python/pykde/doc/classref/kdecore/KAccel.html
new file mode 100644
index 00000000..aaa14e58
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAccel.html
@@ -0,0 +1,366 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAccel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAccel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAccel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QAccel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAccel</b> (pParent, psName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pParent</td><td>QWidget</td><td></td></tr>
+<tr><td>psName</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccel</b> (watch, parent, psName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>watch</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>psName</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelActions)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeMenuAccel</b> (menu, id, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeMenuAccel</b> (menu, id, accel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>accel</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectItem</b> (sAction, slot, bActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bActivate</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectItem</b> (accel, slot, )
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accel</td><td>KStdAccel.StdAccel</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectItem</b> (a0, a1, a2, a3 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectItem</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStdAccel.StdAccel</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentKey</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitKeycodeChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAutoUpdate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sAction, sLabel, sWhatsThis, cutDef, slot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>cutDef</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sAction, sLabel, sWhatsThis, cutDef3, cutDef4, slot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>cutDef3</td><td>KShortcut</td><td></td></tr>
+<tr><td>cutDef4</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (psAction, cutDef, slot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>psAction</td><td>char</td><td></td></tr>
+<tr><td>cutDef</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (id, slot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1, a2, a3, a4, a5, a6 = 1, a7 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+<tr><td>a3</td><td>KShortcut</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td></td></tr>
+<tr><td>a6</td><td>bool</td><td>1</td></tr>
+<tr><td>a7</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1, a2, a3, a4, a5, a6, a7 = 1, a8 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+<tr><td>a3</td><td>KShortcut</td><td></td></tr>
+<tr><td>a4</td><td>KShortcut</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td></td></tr>
+<tr><td>a7</td><td>bool</td><td>1</td></tr>
+<tr><td>a8</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1, a2, a3, a4 = 1, a5 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>a2</td><td>QObject</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td></td></tr>
+<tr><td>a4</td><td>bool</td><td>1</td></tr>
+<tr><td>a5</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1, a2, a3 = 1, a4 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStdAccel.StdAccel</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td>1</td></tr>
+<tr><td>a4</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (sLabel, sAction, psKey, nIDMenu = 0, pMenu = 0, bConfigurable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>psKey</td><td>char</td><td></td></tr>
+<tr><td>nIDMenu</td><td>int</td><td>0</td></tr>
+<tr><td>pMenu</td><td>QPopupMenu</td><td>0</td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (sLabel, sAction, key, nIDMenu, pMenu, bConfigurable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>int</td><td></td></tr>
+<tr><td>nIDMenu</td><td>int</td><td></td></tr>
+<tr><td>pMenu</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertStdItem</b> (id, descr = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+<tr><td>descr</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keycodeChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (bAuto)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAuto</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (bEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (sAction, bEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemEnabled</b> (sAction, bEnable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>bEnable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (sAction, shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSlot</b> (sAction, slot, )
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSlot</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.4 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stringToKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAccelAction.html b/python/pykde/doc/classref/kdecore/KAccelAction.html
new file mode 100644
index 00000000..3de553bd
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAccelAction.html
@@ -0,0 +1,208 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAccelAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAccelAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAccelAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAccelAction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelAction instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelAction</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelAction</b> (sName, sLabel, sWhatsThis, cutDef3, cutDef4, pObjSlot, psMethodSlot, bConfigurable, bEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>cutDef3</td><td>KShortcut</td><td></td></tr>
+<tr><td>cutDef4</td><td>KShortcut</td><td></td></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td></td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td></td></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearShortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getID</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>incConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (sName, sLabel, sWhatsThis, cutDef3, cutDef4, pObjSlot, psMethodSlot, bConfigurable, bEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>cutDef3</td><td>KShortcut</td><td></td></tr>
+<tr><td>cutDef4</td><td>KShortcut</td><td></td></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td></td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td></td></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConnected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>methodSlotPtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>objSlotPtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigurable</b> (configurable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configurable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setID</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeySequence</b> (i, keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (label)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (rgCuts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rgCuts</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSlot</b> (pObjSlot, psMethodSlot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td></td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWhatsThis</b> (whatsThis)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>whatsThis</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault4</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useFourModifierKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useFourModifierKeys</b> (use)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>use</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAccelActions.html b/python/pykde/doc/classref/kdecore/KAccelActions.html
new file mode 100644
index 00000000..68b889cb
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAccelActions.html
@@ -0,0 +1,172 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAccelActions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAccelActions</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAccelActions</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAccelActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelActions instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelActions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelActions instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelActions</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelActions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelActions instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionIndex</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitKeycodeChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (actions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KAccelActions</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (config, sGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>sGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sAction, sLabel, sWhatsThis, rgCutDefaults3, rgCutDefaults4, pObjSlot = 0, psMethodSlot = 0, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>rgCutDefaults3</td><td>KShortcut</td><td></td></tr>
+<tr><td>rgCutDefaults4</td><td>KShortcut</td><td></td></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td>0</td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td>0</td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sName, sLabel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertPtr</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readActions</b> (sConfigGroup = "Shortcuts", pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>"Shortcuts"</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resize</b> (new_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>new_size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateShortcuts</b> (shortcuts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcuts</td><td>KAccelActions</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeActions</b> (sConfigGroup = "Shortcuts", pConfig = 0, bWriteAll = 0, bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>"Shortcuts"</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+<tr><td>bWriteAll</td><td>bool</td><td>0</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator []</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction),</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAccelBase.html b/python/pykde/doc/classref/kdecore/KAccelBase.html
new file mode 100644
index 00000000..fc815b8b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAccelBase.html
@@ -0,0 +1,242 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAccelBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAccelBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAccelBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Init</b> = {QT_KEYS, NATIVE_KEYS
+}<li><b>Signal</b> = {KEYCODE_CHANGED
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KAccelBase</b> (fInitCode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fInitCode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPtr</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelActions)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectKey</b> (a0, a1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+<tr><td>a1</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectKey</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createKeyList</b> (rgKeys)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> (pParent, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pParent</td><td>QWidget</td><td></td></tr>
+<tr><td>a0</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectKey</b> (a0, a1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+<tr><td>a1</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectKey</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitSignal</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelBase.Signal</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAutoUpdate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sName, sDesc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>sDesc</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sAction, sDesc, sHelp, rgCutDefaults3, rgCutDefaults4, pObjSlot, psMethodSlot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sDesc</td><td>QString</td><td></td></tr>
+<tr><td>sHelp</td><td>QString</td><td></td></tr>
+<tr><td>rgCutDefaults3</td><td>KShortcut</td><td></td></tr>
+<tr><td>rgCutDefaults4</td><td>KShortcut</td><td></td></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td></td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertConnection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabledInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeConnection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActionEnabled</b> (sAction, bEnable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>bEnable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActionSlot</b> (sAction, pObjSlot, psMethodSlot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>pObjSlot</td><td>QObject</td><td></td></tr>
+<tr><td>psMethodSlot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (bAuto)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAuto</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigGlobal</b> (global)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>global</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (bEnabled) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (sAction, cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRemoveAction</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccelAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAccelShortcutList.html b/python/pykde/doc/classref/kdecore/KAccelShortcutList.html
new file mode 100644
index 00000000..b790b4ba
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAccelShortcutList.html
@@ -0,0 +1,130 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAccelShortcutList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAccelShortcutList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAccelShortcutList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShortcutList </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAccelShortcutList</b> (accel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelShortcutList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accel</td><td>KAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelShortcutList</b> (accel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelShortcutList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accel</td><td>KGlobalAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAccelShortcutList</b> (actions, bGlobal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAccelShortcutList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KAccelActions</td><td></td></tr>
+<tr><td>bGlobal</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOther</b> (a0, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isGlobal</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOther</b> (a0, index, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (index, shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KApplication.html b/python/pykde/doc/classref/kdecore/KApplication.html
new file mode 100644
index 00000000..9b484c9b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KApplication.html
@@ -0,0 +1,666 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KApplication</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KApplication</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KApplication</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QApplication, KInstance </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {ShiftModifier, LockModifier, ControlModifier, Modifier1, Modifier2, Modifier3, Modifier4, Modifier5
+}<li><b>(anonymous)</b> = {Button1Pressed, Button2Pressed, Button3Pressed, Button4Pressed, Button5Pressed
+}<li><b>CaptionLayout</b> = {CaptionAppLast, CaptionAppFirst, CaptionNoApp
+}<li><b>SettingsCategory</b> = {SETTINGS_MOUSE, SETTINGS_COMPLETION, SETTINGS_PATHS, SETTINGS_POPUPMENU, SETTINGS_QT, SETTINGS_SHORTCUTS
+}<li><b>ShutdownConfirm</b> = {ShutdownConfirmDefault, ShutdownConfirmNo, ShutdownConfirmYes
+}<li><b>ShutdownMode</b> = {ShutdownModeDefault, ShutdownModeSchedule, ShutdownModeTryNow, ShutdownModeForceNow, ShutdownModeInteractive
+}<li><b>ShutdownType</b> = {ShutdownTypeDefault, ShutdownTypeNone, ShutdownTypeReboot, ShutdownTypeHalt
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KApplication</b> (allowStyles = 1, GUIenabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowStyles</td><td>bool</td><td>1</td></tr>
+<tr><td>GUIenabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (display, visual = 0, colormap = 0, allowStyles = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (display, rAppName, allowStyles = 1, GUIenabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (argv, rAppName, allowStyles = 1, GUIenabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>argv</td><td>a Python list of strings</td><td></td></tr>
+<tr><td>rAppName</td><td>Python string</td><td></td></tr>
+<tr><td>allowStyles</td><td>bool</td><td>1</td></tr>
+<tr><td>GUIenabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (allowStyles, GUIenabled, _instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowStyles</td><td>bool</td><td></td></tr>
+<tr><td>GUIenabled</td><td>bool</td><td></td></tr>
+<tr><td>_instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (display, visual, colormap, allowStyles, _instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KApplication</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KApplication</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCmdLineOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addKipcEventMask</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowURLAction</b> (action, _baseURL, _destURL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+<tr><td>_baseURL</td><td>KURL</td><td></td></tr>
+<tr><td>_destURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appearanceChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorize</b> (genericAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>genericAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorizeControlModule</b> (menuId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menuId</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorizeControlModules</b> (menuIds)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menuIds</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorizeKAction</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorizeURLAction</b> (action, baseURL, destURL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+<tr><td>baseURL</td><td>KURL</td><td></td></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundChanged</b> (desk)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desk</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkRecoverFile</b> (pFilename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) bRecover (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pFilename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commitData</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>QSessionManager</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createApplicationPalette</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPalette)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createApplicationPalette</b> (config, contrast)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPalette)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>contrast</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAutoDcopRegistration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableSessionManagement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableStyles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableSessionManagement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableStyles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>geometryArgument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDisplay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Display)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iceIOErrorHandler</b> (conn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconChanged</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>installKDEPropertyMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>installSigpipeHandler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>installX11EventFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeBrowser</b> (url, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeBrowser</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeEditSlot</b> (slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeHTMLHelp</b> (aFilename, aTopic = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aFilename</td><td>QString</td><td></td></tr>
+<tr><td>aTopic</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeHelp</b> (anchor, appname, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>anchor</td><td>QString</td><td></td></tr>
+<tr><td>appname</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeHelp</b> (anchor = QString .null, appname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>anchor</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>appname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (address, subject, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>address</td><td>QString</td><td></td></tr>
+<tr><td>subject</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (address, subject)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>address</td><td>QString</td><td></td></tr>
+<tr><td>subject</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (mailtoURL, startup_id, allowAttachments)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mailtoURL</td><td>KURL</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+<tr><td>allowAttachments</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (mailtoURL, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mailtoURL</td><td>KURL</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (mailtoURL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mailtoURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (to, cc, bcc, subject, body, messageFile, attachURLs, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>to</td><td>QString</td><td></td></tr>
+<tr><td>cc</td><td>QString</td><td></td></tr>
+<tr><td>bcc</td><td>QString</td><td></td></tr>
+<tr><td>subject</td><td>QString</td><td></td></tr>
+<tr><td>body</td><td>QString</td><td></td></tr>
+<tr><td>messageFile</td><td>QString</td><td></td></tr>
+<tr><td>attachURLs</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeMailer</b> (to, cc, bcc, subject, body, messageFile = QString .null, attachURLs = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>to</td><td>QString</td><td></td></tr>
+<tr><td>cc</td><td>QString</td><td></td></tr>
+<tr><td>bcc</td><td>QString</td><td></td></tr>
+<tr><td>subject</td><td>QString</td><td></td></tr>
+<tr><td>body</td><td>QString</td><td></td></tr>
+<tr><td>messageFile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>attachURLs</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRestored</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KApplication)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeinitExec</b> (name, args, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) pid (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeinitExec</b> (name, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeinitExecWait</b> (name, args, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) pid (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeinitExecWait</b> (name, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdisplayFontChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdisplayPaletteChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdisplayStyleChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyboardModifiers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyboardMouseState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ButtonState)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kipcMessage</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kstyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>launcher</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeStdCaption</b> (userCaption, withAppName = 1, modified = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>userCaption</td><td>QString</td><td></td></tr>
+<tr><td>withAppName</td><td>bool</td><td>1</td></tr>
+<tr><td>modified</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>miniIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>miniIconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notify</b> (receiver, event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paste</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propagateSessionManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>random</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>randomString</b> (length)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>length</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeKipcEventMask</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeX11EventFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestShutDown</b> (confirm = ShutdownConfirmDefault, sdtype = ShutdownTypeDefault, sdmode = ShutdownModeDefault)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>confirm</td><td>KApplication.ShutdownConfirm</td><td>ShutdownConfirmDefault</td></tr>
+<tr><td>sdtype</td><td>KApplication.ShutdownType</td><td>ShutdownTypeDefault</td></tr>
+<tr><td>sdmode</td><td>KApplication.ShutdownMode</td><td>ShutdownModeDefault</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>QSessionManager</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveYourself</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sessionConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sessionSaving</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStartupId</b> (startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTopWidget</b> (topWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>topWidget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChanged</b> (category)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>category</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shutDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startKdeinit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByDesktopName</b> (_name, URL, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URL</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByDesktopName</b> (_name, URLs, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URLs</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByDesktopPath</b> (_name, URL, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URL</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByDesktopPath</b> (_name, URLs, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URLs</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByName</b> (_name, URL, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URL</td><td>QString</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceByName</b> (_name, URLs, startup_id = QCString ("" ), noWait = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) error (QString) dcopService (QCString) pid (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>URLs</td><td>QStringList</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>noWait</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startupId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tempSaveName</b> (pFilename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pFilename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolbarAppearanceChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateRemoteUserTimestamp</b> (dcopId, time = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dcopId</td><td>QCString</td><td></td></tr>
+<tr><td>time</td><td>ulong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateUserTimestamp</b> (time = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>ulong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userTimestamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x11EventFilter</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xErrhandler</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xioErrhandler</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xioErrhandler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>loadedByKdeinit</td><td>bool</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAsyncIO.html b/python/pykde/doc/classref/kdecore/KAsyncIO.html
new file mode 100644
index 00000000..fc5497d6
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAsyncIO.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAsyncIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAsyncIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAsyncIO <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, QIODevice </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAsyncIO</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAsyncIO instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAsyncIO</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAsyncIO instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAsyncIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableRead</b> (enable) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableWrite</b> (enable) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readyRead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readyWrite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KAudioPlayer.html b/python/pykde/doc/classref/kdecore/KAudioPlayer.html
new file mode 100644
index 00000000..2e25f9f6
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KAudioPlayer.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAudioPlayer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAudioPlayer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAudioPlayer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAudioPlayer</b> (filename, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAudioPlayer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>play</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>play</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KBufferedIO.html b/python/pykde/doc/classref/kdecore/KBufferedIO.html
new file mode 100644
index 00000000..cf9a67ab
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KBufferedIO.html
@@ -0,0 +1,136 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KBufferedIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KBufferedIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KBufferedIO <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAsyncIO </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>closeModes</b> = {availRead, dirtyWrite, involuntary, delayed, closedNow
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KBufferedIO</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KBufferedIO instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bytesAvailable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bytesToWrite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bytesWritten</b> (nbytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nbytes</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canReadLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeNow</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closed</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>consumeReadBuffer</b> (nbytes, destbuffer, discard = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nbytes</td><td>uint</td><td></td></tr>
+<tr><td>destbuffer</td><td>char</td><td></td></tr>
+<tr><td>discard</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>consumeWriteBuffer</b> (nbytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nbytes</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>feedReadBuffer</b> (nbytes, buffer, atBeginning = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nbytes</td><td>uint</td><td></td></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+<tr><td>atBeginning</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>feedWriteBuffer</b> (nbytes, buffer)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nbytes</td><td>uint</td><td></td></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>peekBlock</b> (data, maxlen) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readBufferSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBufferSize</b> (rsize, wsize = -2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rsize</td><td>int</td><td></td></tr>
+<tr><td>wsize</td><td>int</td><td>-2</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unreadBlock</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitForMore</b> (msec) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msec</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeBufferSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCalendarSystem.html b/python/pykde/doc/classref/kdecore/KCalendarSystem.html
new file mode 100644
index 00000000..352e9473
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCalendarSystem.html
@@ -0,0 +1,306 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCalendarSystem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCalendarSystem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCalendarSystem <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCalendarSystem</b> (locale = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCalendarSystem instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>locale</td><td>KLocale</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDays</b> (date, ndays) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>ndays</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addMonths</b> (date, nmonths) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>nmonths</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addYears</b> (date, nyears) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>nyears</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calendarName</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>day</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dayOfWeek</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dayOfYear</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dayString</b> (pDate, bShort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDate</td><td>QDate</td><td></td></tr>
+<tr><td>bShort</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dayStringToInteger</b> (sNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) iLength (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sNum</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>daysInMonth</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>daysInYear</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLunar</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLunisolar</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSolar</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locale</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLocale)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValidYear</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValidYear</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>month</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthName</b> (month, year, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>month</td><td>int</td><td></td></tr>
+<tr><td>year</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthName</b> (date, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthNamePossessive</b> (month, year, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>month</td><td>int</td><td></td></tr>
+<tr><td>year</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthNamePossessive</b> (date, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthString</b> (pDate, bShort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDate</td><td>QDate</td><td></td></tr>
+<tr><td>bShort</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthStringToInteger</b> (sNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) iLength (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sNum</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthsInYear</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setYMD</b> (date, y, m, d) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>m</td><td>int</td><td></td></tr>
+<tr><td>d</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekDayName</b> (weekDay, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>weekDay</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekDayName</b> (date, shortName = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekDayOfPray</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekNumber</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) yearNum (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weeksInYear</b> (year) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>year</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>year</b> (date) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yearString</b> (pDate, bShort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDate</td><td>QDate</td><td></td></tr>
+<tr><td>bShort</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yearStringToInteger</b> (sNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) iLength (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sNum</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCalendarSystemFactory.html b/python/pykde/doc/classref/kdecore/KCalendarSystemFactory.html
new file mode 100644
index 00000000..4db5b72e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCalendarSystemFactory.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCalendarSystemFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCalendarSystemFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCalendarSystemFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCalendarSystemFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCalendarSystemFactory instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calendarSystems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (calType = QString .fromLatin1 ("gregorian" ), locale = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCalendarSystem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>calType</td><td>QString</td><td>QString .fromLatin1 ("gregorian" )</td></tr>
+<tr><td>locale</td><td>KLocale</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCatalogue.html b/python/pykde/doc/classref/kdecore/KCatalogue.html
new file mode 100644
index 00000000..68f5372d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCatalogue.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCatalogue</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCatalogue</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCatalogue</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCatalogue</b> (name = QString .null, language = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCatalogue instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>language</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCatalogue</b> (rhs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCatalogue instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rhs</td><td>KCatalogue</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCatalogue</b> (a0 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCatalogue instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only( D MANDRAKE only)</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>language</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluralType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only( D MANDRAKE only)</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPluralType</b> (pluralType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pluralType</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translate</b> (msgid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msgid</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCharMacroExpander.html b/python/pykde/doc/classref/kdecore/KCharMacroExpander.html
new file mode 100644
index 00000000..391bcdfe
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCharMacroExpander.html
@@ -0,0 +1,75 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCharMacroExpander</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCharMacroExpander</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCharMacroExpander <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMacroExpanderBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCharMacroExpander</b> (c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCharMacroExpander instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandEscapedMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacro</b> (chr, ret) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>chr</td><td>QChar</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandPlainMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCharsets.html b/python/pykde/doc/classref/kdecore/KCharsets.html
new file mode 100644
index 00000000..559f6e4b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCharsets.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCharsets</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCharsets</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCharsets</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCharsets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCharsets instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availableEncodingNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codecForName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTextCodec)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codecForName</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTextCodec) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>descriptiveEncodingNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodingForName</b> (descriptiveName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>descriptiveName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodingsForLanguage</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromEntity</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromEntity</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar) len (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>languageForEncoding</b> (encoding)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>languages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resolveEntities</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toEntity</b> (ch)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ch</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KClipboardSynchronizer.html b/python/pykde/doc/classref/kdecore/KClipboardSynchronizer.html
new file mode 100644
index 00000000..750cb778
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KClipboardSynchronizer.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KClipboardSynchronizer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KClipboardSynchronizer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KClipboardSynchronizer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KClipboardSynchronizer</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KClipboardSynchronizer instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReverseSynchronizing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSynchronizing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KClipboardSynchronizer)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReverseSynchronizing</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSynchronizing</b> (sync)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sync</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KClipboardSynchronizer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCmdLineArgs.html b/python/pykde/doc/classref/kdecore/KCmdLineArgs.html
new file mode 100644
index 00000000..a3a7e8e5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCmdLineArgs.html
@@ -0,0 +1,220 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCmdLineArgs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCmdLineArgs</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCmdLineArgs</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCmdLineArgs</b> (_options, _name, _id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCmdLineArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_options</td><td>KCmdLineOptions</td><td></td></tr>
+<tr><td>_name</td><td>char</td><td></td></tr>
+<tr><td>_id</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCmdLineOptions</b> (options, name = 0, id = 0, afterId = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>a Python list of tuples</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>id</td><td>char</td><td>0</td></tr>
+<tr><td>afterId</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td>A Pytbon list of tuples (name, description, default) is the first parameter
+instead of a KCmdLineOptions object (KCmdLineOptions is not used);
+NULL (or None) parameters to mark the end of the list are not required
+</td></tr></table></td></tr></table></li><hr>
+<li><b>addTempFileOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>arg</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cwd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enable_i18n</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOption</b> (option)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>option</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptionList</b> (option)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>option</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptionList</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QCString>)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.3 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_argc, _argv, _appname, programName, _description, _version, noKApp = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_argc</td><td>int</td><td></td></tr>
+<tr><td>_argv</td><td>char</td><td></td></tr>
+<tr><td>_appname</td><td>char</td><td></td></tr>
+<tr><td>programName</td><td>char</td><td></td></tr>
+<tr><td>_description</td><td>char</td><td></td></tr>
+<tr><td>_version</td><td>char</td><td></td></tr>
+<tr><td>noKApp</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_argv, _appname, _description, _version, noKApp = False)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_argv</td><td>a Python list of strings which may be modified</td><td></td></tr>
+<tr><td>_appname</td><td>char</td><td></td></tr>
+<tr><td>_description</td><td>char</td><td></td></tr>
+<tr><td>_version</td><td>char</td><td></td></tr>
+<tr><td>noKApp</td><td>bool</td><td>False</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_argv, about, noKApp = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_argv</td><td>a Python list of strings which may be modified</td><td></td></tr>
+<tr><td>about</td><td>KAboutData</td><td></td></tr>
+<tr><td>noKApp</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (about)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>about</td><td>KAboutData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSet</b> (option)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>option</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTempFileSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAppArgs</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeURL</b> (urlArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urlArg</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parsedArgs</b> (id = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCmdLineArgs)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCwd</b> (cwd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cwd</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usage</b> (id = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usage</b> (error)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>error</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KCmdLineArgs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCmdLineOptions.html b/python/pykde/doc/classref/kdecore/KCmdLineOptions.html
new file mode 100644
index 00000000..d5aad5b0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCmdLineOptions.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCmdLineOptions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCmdLineOptions</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCmdLineOptions</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>def</td><td>char*</td></tr>
+<tr><td>description</td><td>char*</td></tr>
+<tr><td>name</td><td>char*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCodecs.html b/python/pykde/doc/classref/kdecore/KCodecs.html
new file mode 100644
index 00000000..57dd6047
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCodecs.html
@@ -0,0 +1,182 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCodecs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCodecs</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCodecs</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCodecs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCodecs instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Decode</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Decode</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Decode</b> (in, out)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Encode</b> (in, insertLFs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>insertLFs</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Encode</b> (str, insertLFs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+<tr><td>insertLFs</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Encode</b> (in, out, insertLFs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+<tr><td>insertLFs</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableDecode</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableDecode</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableDecode</b> (in, out)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableEncode</b> (in, useCRLF)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>useCRLF</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableEncode</b> (str, useCRLF = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+<tr><td>useCRLF</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quotedPrintableEncode</b> (in, out, useCRLF)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+<tr><td>useCRLF</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uudecode</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uudecode</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uudecode</b> (in, out)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uuencode</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uuencode</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uuencode</b> (in, out)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+<tr><td>out</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCompletion.html b/python/pykde/doc/classref/kdecore/KCompletion.html
new file mode 100644
index 00000000..b2080a06
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCompletion.html
@@ -0,0 +1,211 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCompletion</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCompletion</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCompletion</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>CompOrder</b> = {Sorted, Insertion, Weighted
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCompletion instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItem</b> (item, weight)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+<tr><td>weight</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allMatches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allMatches</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allWeightedMatches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allWeightedMatches</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGlobalSettings.Completion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableSounds</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableSounds</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasMultipleMatches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreCase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSoundsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastMatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>match</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matches</b> (matchlist)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>matchlist</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multipleMatches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextMatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>order</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(CompOrder)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatch</b> (match)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>match</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>matches</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previousMatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KGlobalSettings.Completion</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableSounds</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreCase</b> (ignoreCase)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ignoreCase</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItems</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrder</b> (order)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>order</td><td>KCompletion.CompOrder</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMakeCompletion</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNextMatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPreviousMatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substringCompletion</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCompletionBase.html b/python/pykde/doc/classref/kdecore/KCompletionBase.html
new file mode 100644
index 00000000..7da31be9
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCompletionBase.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCompletionBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCompletionBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCompletionBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>KeyBindingType</b> = {TextCompletion, PrevCompletionMatch, NextCompletionMatch, SubstringCompletion
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KCompletionBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCompletionBase instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compObj</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGlobalSettings.Completion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionObject</b> (hsig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletion)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hsig</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delegate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletionBase)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitSignals</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getKeyBinding</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getKeyBindings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletionBase.KeyBindingMap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleSignals</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCompletionObjectAutoDeleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDeleteCompletionObject</b> (autoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedItems</b> (items) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedText</b> (text) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KGlobalSettings.Completion</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionObject</b> (compObj, hsig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>compObj</td><td>KCompletion</td><td></td></tr>
+<tr><td>hsig</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelegate</b> (delegate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>delegate</td><td>KCompletionBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableSignals</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHandleSignals</b> (handle)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>handle</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeyBinding</b> (item, key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+<tr><td>key</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useGlobalKeyBindings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfig.html b/python/pykde/doc/classref/kdecore/KConfig.html
new file mode 100644
index 00000000..53cacf25
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfig.html
@@ -0,0 +1,149 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfig</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfig</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfig</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfig</b> (fileName = QString .null, bReadOnly = 0, bUseKDEGlobals = 1, resType = "config")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>bReadOnly</td><td>bool</td><td>0</td></tr>
+<tr><td>bUseKDEGlobals</td><td>bool</td><td>1</td></tr>
+<tr><td>resType</td><td>char</td><td>"config"</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfig</b> (backEnd, bReadOnly = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfig instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>backEnd</td><td>KConfigBackEnd</td><td></td></tr>
+<tr><td>bReadOnly</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkUpdate</b> (id, updateFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+<tr><td>updateFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyTo</b> (file, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryMap</b> (pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forceGlobal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalEntryMap</b> (pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntryMap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalEntryMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntryMap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalHasGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lockFile</b> (bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLockFile.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lookupData</b> (_key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntry)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putData</b> (_key, _data, _checkGroup = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+<tr><td>_data</td><td>KEntry</td><td></td></tr>
+<tr><td>_checkGroup</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reparseConfiguration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rollback</b> (bDeep = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bDeep</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileWriteMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setForceGlobal</b> (force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigBackEnd.html b/python/pykde/doc/classref/kdecore/KConfigBackEnd.html
new file mode 100644
index 00000000..e7cd692e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigBackEnd.html
@@ -0,0 +1,107 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigBackEnd</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigBackEnd</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigBackEnd <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigBackEnd</b> (_config, _fileName, _resType, _useKDEGlobals)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigBackEnd instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>_fileName</td><td>QString</td><td></td></tr>
+<tr><td>_resType</td><td>char</td><td></td></tr>
+<tr><td>_useKDEGlobals</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeFileName</b> (_fileName, _resType, _useKDEGlobals)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fileName</td><td>QString</td><td></td></tr>
+<tr><td>_resType</td><td>char</td><td></td></tr>
+<tr><td>_useKDEGlobals</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkConfigFilesWritable</b> (warnUser)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>warnUser</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filename</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getConfigState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigBase.ConfigState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lockFile</b> (bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLockFile.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseConfigFiles</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileWriteMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocaleString</b> (_localeString)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_localeString</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> (bMerge = 1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bMerge</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigBase.html b/python/pykde/doc/classref/kdecore/KConfigBase.html
new file mode 100644
index 00000000..55ed3cc9
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigBase.html
@@ -0,0 +1,970 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ConfigState</b> = {NoAccess, ReadOnly, ReadWrite
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KConfigBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigBase instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkConfigFilesWritable</b> (warnUser)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>warnUser</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteEntry</b> (pKey, bNLS = 0, bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteEntry</b> (pKey, bNLS = 0, bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteGroup</b> (group, bDeep = 1, bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>bDeep</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryIsImmutable</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryMap</b> (group) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getConfigState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ConfigState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupIsImmutable</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupList</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasDefault</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasGroup</b> (_pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_pGroup</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasGroup</b> (_pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_pGroup</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasKey</b> (pKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalEntryMap</b> (pGroup) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntryMap)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalEntryMap</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntryMap)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalHasGroup</b> (group) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDollarExpansion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isImmutable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReadOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locale</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lookupData</b> (_key) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntry)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseConfigFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putData</b> (_key, _data, _checkGroup = 1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+<tr><td>_data</td><td>KEntry</td><td></td></tr>
+<tr><td>_checkGroup</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readBoolEntry</b> (pKey, bDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>bDefault</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readBoolEntry</b> (pKey, bDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>bDefault</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readColorEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QColor</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readColorEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QColor</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDateTimeEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QDateTime</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDateTimeEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QDateTime</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDefaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDoubleNumEntry</b> (pKey, nDefault = 0.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>double</td><td>0.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDoubleNumEntry</b> (pKey, nDefault = 0.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>double</td><td>0.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntry</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntry</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntryUntranslated</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntryUntranslated</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntryUtf8</b> (pKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readFontEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QFont</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readFontEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QFont</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readIntListEntry</b> (pKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readIntListEntry</b> (pKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readListEntry</b> (pKey, list, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>list</td><td>QStrList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readListEntry</b> (pKey, list, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>list</td><td>QStrList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readListEntry</b> (pKey, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readListEntry</b> (pKey, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readListEntry</b> (pKey, aDefault, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>aDefault</td><td>QStringList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readLongNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>long</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readLongNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>long</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNum64Entry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(longlong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>longlong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNum64Entry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(longlong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>longlong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPathEntry</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPathEntry</b> (pKey, aDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>aDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPathListEntry</b> (pKey, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPathListEntry</b> (pKey, sep = ',')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPointEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPoint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QPoint</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPointEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPoint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QPoint</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPropertyEntry</b> (pKey, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>QVariant.Type</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPropertyEntry</b> (pKey, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>a0</td><td>QVariant.Type</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPropertyEntry</b> (pKey, aDefault)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>aDefault</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPropertyEntry</b> (pKey, aDefault)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>aDefault</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readRectEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QRect</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readRectEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QRect</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSizeEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QSize</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSizeEntry</b> (pKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pDefault</td><td>QSize</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedLongNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>ulong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedLongNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>ulong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedNum64Entry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulonglong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>ulonglong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedNum64Entry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulonglong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>ulonglong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>uint</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUnsignedNumEntry</b> (pKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nDefault</td><td>uint</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reparseConfiguration</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>revertToDefault</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rollback</b> (bDeep = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bDeep</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktopGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirty</b> (_bDirty = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_bDirty</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDollarExpansion</b> (_bExpand = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_bExpand</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGroup</b> (pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pGroup</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGroup</b> (pGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pGroup</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocale</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadDefaults</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (_ro)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ro</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, pValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pValue</td><td>QString</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, pValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pValue</td><td>QString</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, pValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>pValue</td><td>char</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, pValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>pValue</td><td>char</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nValue</td><td>int</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nValue</td><td>int</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nValue</td><td>longlong</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nValue</td><td>longlong</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>nValue</td><td>ulonglong</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>nValue</td><td>ulonglong</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, format = 'g', precision = 6, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, nValue, bPersistent = 1, bGlobal = 0, format = 'g', precision = 6, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QVariant</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rFont, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rFont</td><td>QFont</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rFont, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rFont</td><td>QFont</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rColor, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rColor</td><td>QColor</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rColor, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rColor</td><td>QColor</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rDateTime, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rDateTime</td><td>QDateTime</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rDateTime, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rDateTime</td><td>QDateTime</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QRect</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QRect</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QPoint</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QPoint</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QVariant</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QSize</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QSize</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QStrList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QStrList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QStringList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QStringList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QValueList<int></td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (pKey, rValue, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QValueList<int></td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writePathEntry</b> (pKey, path, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writePathEntry</b> (pKey, path, bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writePathEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QStringList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writePathEntry</b> (pKey, rValue, sep = ',', bPersistent = 1, bGlobal = 0, bNLS = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pKey</td><td>char</td><td></td></tr>
+<tr><td>rValue</td><td>QStringList</td><td></td></tr>
+<tr><td>sep</td><td>char</td><td>','</td></tr>
+<tr><td>bPersistent</td><td>bool</td><td>1</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bNLS</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigDialogManager.html b/python/pykde/doc/classref/kdecore/KConfigDialogManager.html
new file mode 100644
index 00000000..2e6ffa9d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigDialogManager.html
@@ -0,0 +1,130 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigDialogManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigDialogManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigDialogManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigDialogManager</b> (parent, conf, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigDialogManager instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>conf</td><td>KConfigSkeleton</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (trackChanges)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>trackChanges</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseChildren</b> (widget, trackChanges)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>trackChanges</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (w, v)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+<tr><td>v</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChanged</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupWidget</b> (widget, item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>item</td><td>KConfigSkeletonItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateWidgets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateWidgetsDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widgetModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigGroup.html b/python/pykde/doc/classref/kdecore/KConfigGroup.html
new file mode 100644
index 00000000..ccb7a394
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigGroup.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigGroup</b> (master, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>master</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigGroup</b> (master, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>master</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigGroup</b> (master, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>master</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteGroup</b> (bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupIsImmutable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lookupData</b> (_key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEntry)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putData</b> (_key, _data, _checkGroup = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_key</td><td>KEntryKey</td><td></td></tr>
+<tr><td>_data</td><td>KEntry</td><td></td></tr>
+<tr><td>_checkGroup</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirty</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigGroupSaver.html b/python/pykde/doc/classref/kdecore/KConfigGroupSaver.html
new file mode 100644
index 00000000..c81da228
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigGroupSaver.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigGroupSaver</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigGroupSaver</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigGroupSaver</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigGroupSaver</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroupSaver instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigGroupSaver</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroupSaver instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigGroupSaver</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroupSaver instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>group</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigGroupSaver</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigGroupSaver instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfigGroupSaver</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigBase)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigINIBackEnd.html b/python/pykde/doc/classref/kdecore/KConfigINIBackEnd.html
new file mode 100644
index 00000000..7fc07f48
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigINIBackEnd.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigINIBackEnd</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigINIBackEnd</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigINIBackEnd</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigBackEnd </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigINIBackEnd</b> (_config, _fileName, _resType, _useKDEGlobals = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigINIBackEnd instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_config</td><td>KConfigBase</td><td></td></tr>
+<tr><td>_fileName</td><td>QString</td><td></td></tr>
+<tr><td>_resType</td><td>char</td><td></td></tr>
+<tr><td>_useKDEGlobals</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getEntryMap</b> (map, bGlobal, mergeFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>map</td><td>KEntryMap</td><td></td></tr>
+<tr><td>bGlobal</td><td>bool</td><td></td></tr>
+<tr><td>mergeFile</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseConfigFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseSingleConfigFile</b> (rFile, pWriteBackMap = 0, bGlobal = 0, bDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rFile</td><td>QFile</td><td></td></tr>
+<tr><td>pWriteBackMap</td><td>KEntryMap</td><td>0</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bDefault</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> (bMerge = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bMerge</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfigFile</b> (filename, bGlobal = 0, bMerge = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+<tr><td>bMerge</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntries</b> (pStream, aTempMap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemBool.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemBool.html
new file mode 100644
index 00000000..955538de
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemBool.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemBool</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemBool</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemBool</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemBool</b> (group, key, reference, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemBool instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>bool</td><td></td></tr>
+<tr><td>defaultValue</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemColor.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemColor.html
new file mode 100644
index 00000000..bc798cd2
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemColor.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemColor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemColor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemColor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemColor</b> (a0, a1, a2, a3 = QColor (128 ,128 ,128 ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemColor instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QColor</td><td></td></tr>
+<tr><td>a3</td><td>QColor</td><td>QColor (128 ,128 ,128 )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDateTime.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDateTime.html
new file mode 100644
index 00000000..c2041833
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDateTime.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemDateTime</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemDateTime</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemDateTime</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemDateTime</b> (a0, a1, a2, a3 = QDateTime ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemDateTime instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QDateTime</td><td></td></tr>
+<tr><td>a3</td><td>QDateTime</td><td>QDateTime ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDouble.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDouble.html
new file mode 100644
index 00000000..a1ecad1b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemDouble.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemDouble</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemDouble</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemDouble</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemDouble</b> (group, key, reference, defaultValue = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemDouble instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>double</td><td></td></tr>
+<tr><td>defaultValue</td><td>double</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (double)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (double)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.Choice.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.Choice.html
new file mode 100644
index 00000000..532cd641
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.Choice.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemEnum.Choice</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemEnum.Choice</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemEnum.Choice</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>label</td><td>QString</td></tr>
+<tr><td>name</td><td>QString</td></tr>
+<tr><td>whatsThis</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.html
new file mode 100644
index 00000000..c4ac0e05
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemEnum.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemEnum</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemEnum</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemEnum</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeleton.ItemInt </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemEnum</b> (group, key, reference, choices, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemEnum instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>int</td><td></td></tr>
+<tr><td>choices</td><td>QValueList<KConfigSkeleton.ItemEnum.Choice></td><td></td></tr>
+<tr><td>defaultValue</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>choices</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KConfigSkeleton.ItemEnum.Choice>)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemFont.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemFont.html
new file mode 100644
index 00000000..f5b9c47c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemFont.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemFont</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemFont</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemFont</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemFont</b> (a0, a1, a2, a3 = KGlobalSettings .generalFont ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemFont instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QFont</td><td></td></tr>
+<tr><td>a3</td><td>QFont</td><td>KGlobalSettings .generalFont ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt.html
new file mode 100644
index 00000000..894ab23c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemInt</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemInt</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemInt</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemInt</b> (group, key, reference, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemInt instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>int</td><td></td></tr>
+<tr><td>defaultValue</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt64.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt64.html
new file mode 100644
index 00000000..6631bcc6
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemInt64.html
@@ -0,0 +1,124 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemInt64</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemInt64</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemInt64</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemInt64</b> (group, key, reference, defaultValue = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemInt64 instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>longlong</td><td></td></tr>
+<tr><td>defaultValue</td><td>longlong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>longlong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>longlong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>longlong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>longlong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(longlong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemIntList.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemIntList.html
new file mode 100644
index 00000000..efbf655b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemIntList.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemIntList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemIntList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemIntList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemIntList</b> (group, key, reference, defaultValue = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemIntList instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>a Python list of int</td><td></td></tr>
+<tr><td>defaultValue</td><td>a Python list of int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QValueList<int></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QValueList<int></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemLong.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemLong.html
new file mode 100644
index 00000000..01b2b96f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemLong.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemLong</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemLong</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemLong</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemLong</b> (group, key, reference, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a2 (long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>long</td><td></td></tr>
+<tr><td>defaultValue</td><td>long</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPassword.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPassword.html
new file mode 100644
index 00000000..b3d1988d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPassword.html
@@ -0,0 +1,51 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemPassword</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemPassword</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemPassword</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeleton.ItemString </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemPassword</b> (group, key, reference, defaultValue = QString .fromLatin1 ("" ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemPassword instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QString</td><td></td></tr>
+<tr><td>defaultValue</td><td>QString</td><td>QString .fromLatin1 ("" )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPath.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPath.html
new file mode 100644
index 00000000..c9e23e7c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPath.html
@@ -0,0 +1,51 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemPath</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemPath</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemPath</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeleton.ItemString </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemPath</b> (group, key, reference, defaultValue = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemPath instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QString</td><td></td></tr>
+<tr><td>defaultValue</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPathList.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPathList.html
new file mode 100644
index 00000000..0562e0dc
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPathList.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemPathList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemPathList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemPathList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeleton.ItemStringList </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemPathList</b> (group, key, reference, defaultValue = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemPathList instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QStringList</td><td></td></tr>
+<tr><td>defaultValue</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPoint.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPoint.html
new file mode 100644
index 00000000..05943a46
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemPoint.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemPoint</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemPoint</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemPoint</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemPoint</b> (a0, a1, a2, a3 = QPoint ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemPoint instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QPoint</td><td></td></tr>
+<tr><td>a3</td><td>QPoint</td><td>QPoint ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPoint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemProperty.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemProperty.html
new file mode 100644
index 00000000..ab13a2ed
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemProperty.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemProperty</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemProperty</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemProperty</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemProperty</b> (group, key, reference, defaultValue = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemProperty instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QVariant</td><td></td></tr>
+<tr><td>defaultValue</td><td>QVariant</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemRect.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemRect.html
new file mode 100644
index 00000000..3c1816d6
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemRect.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemRect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemRect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemRect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemRect</b> (a0, a1, a2, a3 = QRect ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemRect instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QRect</td><td></td></tr>
+<tr><td>a3</td><td>QRect</td><td>QRect ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemSize.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemSize.html
new file mode 100644
index 00000000..d5ceb818
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemSize.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemSize</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemSize</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemSize</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemSize</b> (a0, a1, a2, a3 = QSize ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemSize instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QSize</td><td></td></tr>
+<tr><td>a3</td><td>QSize</td><td>QSize ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemString.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemString.html
new file mode 100644
index 00000000..bec81fdc
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemString.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemString</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemString</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemString</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Type</b> = {Normal, Password, Path
+}</ul>
+<h3>methods</h3><ul>
+<li><b>ItemString</b> (a0, a1, a2, a3 = QString .fromLatin1 ("" ), a4 = KConfigSkeleton .ItemString .Normal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemString instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .fromLatin1 ("" )</td></tr>
+<tr><td>a4</td><td>KConfigSkeleton.ItemString.Type</td><td>KConfigSkeleton .ItemString .Normal</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemStringList.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemStringList.html
new file mode 100644
index 00000000..9a7a02b4
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemStringList.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemStringList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemStringList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemStringList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemStringList</b> (a0, a1, a2, a3 = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemStringList instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QStringList</td><td></td></tr>
+<tr><td>a3</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt.html
new file mode 100644
index 00000000..92fabe23
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemUInt</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemUInt</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemUInt</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemUInt</b> (group, key, reference, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemUInt instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>uint</td><td></td></tr>
+<tr><td>defaultValue</td><td>uint</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt64.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt64.html
new file mode 100644
index 00000000..7c97d963
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemUInt64.html
@@ -0,0 +1,124 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemUInt64</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemUInt64</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemUInt64</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemUInt64</b> (group, key, reference, defaultValue = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemUInt64 instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>ulonglong</td><td></td></tr>
+<tr><td>defaultValue</td><td>ulonglong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulonglong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulonglong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulonglong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulonglong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulonglong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemULong.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemULong.html
new file mode 100644
index 00000000..104cab2a
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.ItemULong.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton.ItemULong</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton.ItemULong</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton.ItemULong</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfigSkeletonItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemULong</b> (group, key, reference, defaultValue = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemULong instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>ulong</td><td></td></tr>
+<tr><td>defaultValue</td><td>ulong</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a0 (ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeleton.html b/python/pykde/doc/classref/kdecore/KConfigSkeleton.html
new file mode 100644
index 00000000..05a73558
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeleton.html
@@ -0,0 +1,334 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeleton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeleton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeleton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigSkeleton</b> (configname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigSkeleton instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KConfigSkeleton</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigSkeleton instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KSharedConfig.Ptr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItem</b> (a0, name = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfigSkeletonItem</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemBool</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemBool) reference (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+<tr><td>defaultValue</td><td>bool</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemColor</b> (name, reference, defaultValue = QColor (128 ,128 ,128 ), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemColor)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QColor</td><td></td></tr>
+<tr><td>defaultValue</td><td>QColor</td><td>QColor (128 ,128 ,128 )</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemDateTime</b> (name, reference, defaultValue = QDateTime (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemDateTime)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QDateTime</td><td></td></tr>
+<tr><td>defaultValue</td><td>QDateTime</td><td>QDateTime ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemDouble</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemDouble) reference (double)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>defaultValue</td><td>double</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemFont</b> (name, reference, defaultValue = KGlobalSettings .generalFont (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemFont)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QFont</td><td></td></tr>
+<tr><td>defaultValue</td><td>QFont</td><td>KGlobalSettings .generalFont ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemInt</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemInt) reference (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+<tr><td>defaultValue</td><td>int</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemInt64</b> (name, reference, defaultValue = 0, key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeleton.ItemInt64)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>longlong</td><td></td></tr>
+<tr><td>defaultValue</td><td>longlong</td><td>0</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemIntList</b> (name, reference, defaultValue = [], key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of int,</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>a Python list of int</td><td></td></tr>
+<tr><td>defaultValue</td><td>a Python list of int</td><td>[]</td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemLong</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemLong) reference (long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>long</td><td></td></tr>
+<tr><td>defaultValue</td><td>long</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemPassword</b> (name, reference, defaultValue = QString .fromLatin1 ("" ), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeleton.ItemPassword)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QString</td><td></td></tr>
+<tr><td>defaultValue</td><td>QString</td><td>QString .fromLatin1 ("" )</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemPath</b> (name, reference, defaultValue = QString .fromLatin1 ("" ), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeleton.ItemPath)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QString</td><td></td></tr>
+<tr><td>defaultValue</td><td>QString</td><td>QString .fromLatin1 ("" )</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemPoint</b> (name, reference, defaultValue = QPoint (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemPoint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QPoint</td><td></td></tr>
+<tr><td>defaultValue</td><td>QPoint</td><td>QPoint ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemProperty</b> (name, reference, defaultValue = QVariant (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemProperty)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QVariant</td><td></td></tr>
+<tr><td>defaultValue</td><td>QVariant</td><td>QVariant ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemRect</b> (name, reference, defaultValue = QRect (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QRect</td><td></td></tr>
+<tr><td>defaultValue</td><td>QRect</td><td>QRect ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemSize</b> (name, reference, defaultValue = QSize (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemSize)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QSize</td><td></td></tr>
+<tr><td>defaultValue</td><td>QSize</td><td>QSize ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemString</b> (name, reference, defaultValue = QString .fromLatin1 ("" ), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QString</td><td></td></tr>
+<tr><td>defaultValue</td><td>QString</td><td>QString .fromLatin1 ("" )</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemStringList</b> (name, reference, defaultValue = QStringList (), key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeleton.ItemStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>QStringList</td><td></td></tr>
+<tr><td>defaultValue</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemUInt</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemUInt) reference (uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>uint</td><td></td></tr>
+<tr><td>defaultValue</td><td>uint</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemUInt64</b> (name, reference, defaultValue = 0, key = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeleton.ItemUInt64)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>reference</td><td>ulonglong</td><td></td></tr>
+<tr><td>defaultValue</td><td>ulonglong</td><td>0</td></tr>
+<tr><td>key</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemULong</b> (name, value, defaultValue, key = QString.null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ItemULong) reference (ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>ulong</td><td></td></tr>
+<tr><td>defaultValue</td><td>ulong</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td>QString.null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findItem</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigSkeletonItem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isImmutable</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(a Python list of Items),</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useDefaults</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usrReadConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usrSetDefaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usrUseDefaults</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usrWriteConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KConfigSkeletonItem.html b/python/pykde/doc/classref/kdecore/KConfigSkeletonItem.html
new file mode 100644
index 00000000..9aaf1d73
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KConfigSkeletonItem.html
@@ -0,0 +1,170 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigSkeletonItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigSkeletonItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigSkeletonItem <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigSkeletonItem</b> (group, key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigSkeletonItem instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isImmutable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDefault</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readImmutability</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (l)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>l</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (p) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWhatsThis</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swapDefault</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KCrash.html b/python/pykde/doc/classref/kdecore/KCrash.html
new file mode 100644
index 00000000..89a44624
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KCrash.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCrash</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCrash</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCrash</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>crashHandler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultCrashHandler</b> (signal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emergencySaveFunction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setApplicationName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setApplicationPath</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCrashHandler</b> (handler = defaultCrashHandler)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEmergencySaveFunction</b> (saveFunction = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSafer</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KDCOPPropertyProxy.html b/python/pykde/doc/classref/kdecore/KDCOPPropertyProxy.html
new file mode 100644
index 00000000..a4547723
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KDCOPPropertyProxy.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDCOPPropertyProxy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDCOPPropertyProxy</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDCOPPropertyProxy</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDCOPPropertyProxy</b> (object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDCOPPropertyProxy instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QCString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> (object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QCString>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPropertyRequest</b> (fun)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPropertyRequest</b> (fun, object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processPropertyRequest</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processPropertyRequest</b> (fun, data, replyType, replyData, object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KDE.html b/python/pykde/doc/classref/kdecore/KDE.html
new file mode 100644
index 00000000..8c11f7c5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KDE.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDE</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDE</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDE</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>version</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>versionMajor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>versionMinor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>versionRelease</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>versionString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KDesktopFile.html b/python/pykde/doc/classref/kdecore/KDesktopFile.html
new file mode 100644
index 00000000..333a0618
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KDesktopFile.html
@@ -0,0 +1,155 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDesktopFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDesktopFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDesktopFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfig </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDesktopFile</b> (fileName, readOnly = 0, resType = "apps")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDesktopFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>readOnly</td><td>bool</td><td>0</td></tr>
+<tr><td>resType</td><td>char</td><td>"apps"</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDesktopFile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDesktopFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyTo</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDesktopFile)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filename</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasActionGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasApplicationType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasDeviceType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasLinkType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasMimeTypeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAuthorizedDesktopFile</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDesktopFile</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locateLocal</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readComment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDevice</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDocPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readGenericName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActionGroup</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortOrder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tryExec</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KEntry.html b/python/pykde/doc/classref/kdecore/KEntry.html
new file mode 100644
index 00000000..ed0cf8a0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KEntry.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEntry</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEntry</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEntry</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEntry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEntry instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>bDeleted</td><td>bool</td></tr>
+<tr><td>bDirty</td><td>bool</td></tr>
+<tr><td>bExpand</td><td>bool</td></tr>
+<tr><td>bGlobal</td><td>bool</td></tr>
+<tr><td>bImmutable</td><td>bool</td></tr>
+<tr><td>bNLS</td><td>bool</td></tr>
+<tr><td>mValue</td><td>QCString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KEntryKey.html b/python/pykde/doc/classref/kdecore/KEntryKey.html
new file mode 100644
index 00000000..58f7222b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KEntryKey.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEntryKey</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEntryKey</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEntryKey</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEntryKey</b> (_group = QCString ("" ), _key = QCString ("" ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEntryKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_group</td><td>QCString</td><td>QCString ("" )</td></tr>
+<tr><td>_key</td><td>QCString</td><td>QCString ("" )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>bDefault</td><td>bool</td></tr>
+<tr><td>bLocal</td><td>bool</td></tr>
+<tr><td>c_key</td><td>char*</td></tr>
+<tr><td>mGroup</td><td>QCString</td></tr>
+<tr><td>mKey</td><td>QCString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KGlobal.html b/python/pykde/doc/classref/kdecore/KGlobal.html
new file mode 100644
index 00000000..a1c6145b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KGlobal.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGlobal</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGlobal</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGlobal</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>activeInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charsets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCharsets)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteStaticDeleters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStandardDirs)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconLoader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIconLoader)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locale</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLocale)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>registerStaticDeleter</b> (d)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>d</td><td>KStaticDeleterBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveInstance</b> (d)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>d</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharedConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSharedConfig)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>staticQString</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>staticQString</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unregisterStaticDeleter</b> (d)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>d</td><td>KStaticDeleterBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>_activeInstance</td><td>KInstance*</td></tr>
+<tr><td>_charsets</td><td>KCharsets*</td></tr>
+<tr><td>_instance</td><td>KInstance*</td></tr>
+<tr><td>_locale</td><td>KLocale*</td></tr>
+<tr><td>_staticDeleters</td><td>KStaticDeleterList*</td></tr>
+<tr><td>_stringDict</td><td>KStringDict*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KGlobalAccel.html b/python/pykde/doc/classref/kdecore/KGlobalAccel.html
new file mode 100644
index 00000000..1f8ca21c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KGlobalAccel.html
@@ -0,0 +1,173 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGlobalAccel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGlobalAccel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGlobalAccel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KGlobalAccel</b> (pParent, psName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGlobalAccel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pParent</td><td>QObject</td><td></td></tr>
+<tr><td>psName</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blockShortcuts</b> (block)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>block</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableBlocking</b> (disable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>disable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sAction, sLabel, sWhatsThis, cutDef3, cutDef4, slot, bConfigurable = 1, bEnabled = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+<tr><td>sWhatsThis</td><td>QString</td><td></td></tr>
+<tr><td>cutDef3</td><td>KShortcut</td><td></td></tr>
+<tr><td>cutDef4</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>bConfigurable</td><td>bool</td><td>1</td></tr>
+<tr><td>bEnabled</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (sName, sLabel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccelAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>sLabel</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActionEnabled</b> (sAction, bEnable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>bEnable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigGroup</b> (cg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (bEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (sAction, shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSlot</b> (sAction, slot, )
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (sAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useFourModifierKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSettings</b> (pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSettings</b> (pConfig, bGlobal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td></td></tr>
+<tr><td>bGlobal</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KGlobalSettings.KMouseSettings.html b/python/pykde/doc/classref/kdecore/KGlobalSettings.KMouseSettings.html
new file mode 100644
index 00000000..9928940f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KGlobalSettings.KMouseSettings.html
@@ -0,0 +1,46 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGlobalSettings.KMouseSettings</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGlobalSettings.KMouseSettings</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGlobalSettings.KMouseSettings</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {RightHanded, LeftHanded
+}</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>handed</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KGlobalSettings.html b/python/pykde/doc/classref/kdecore/KGlobalSettings.html
new file mode 100644
index 00000000..cf747af8
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KGlobalSettings.html
@@ -0,0 +1,270 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGlobalSettings</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGlobalSettings</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGlobalSettings</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Completion</b> = {CompletionNone, CompletionAuto, CompletionMan, CompletionShell, CompletionPopup, CompletionPopupAuto
+}<li><b>TearOffHandle</b> = {Disable, ApplicationLevel, Enable
+}</ul>
+<h3>methods</h3><ul>
+<li><b>activeTextColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeTitleColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alternateBackgroundColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoSelectDelay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autostartPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonBackground</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonTextColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calculateAlternateBackgroundColor</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeCursorOverIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Completion)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contrast</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopGeometry</b> (point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>point</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopGeometry</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dndEventDelay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixedFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>generalFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightedTextColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inactiveTextColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inactiveTitleColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTearOffHandle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGlobalSettings.TearOffHandle)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTearOffHandle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMultiHead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>largeFont</b> (text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGlobalSettings.KMouseSettings)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>opaqueResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shadeSortColumn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showContextMenusOnPress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showFilePreview</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showIconsOnPushButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>singleClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splashScreenDesktopGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>taskbarFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBarFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBarHighlightColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trashPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visitedLinkColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visualActivate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visualActivateSpeed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelMouseZooms</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowTitleFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIDNA.html b/python/pykde/doc/classref/kdecore/KIDNA.html
new file mode 100644
index 00000000..08f46acc
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIDNA.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIDNA</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIDNA</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIDNA</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>toAscii</b> (idna)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>idna</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toAsciiCString</b> (idna)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>idna</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toUnicode</b> (idna)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>idna</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIPC.html b/python/pykde/doc/classref/kdecore/KIPC.html
new file mode 100644
index 00000000..f9a97a9d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIPC.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIPC</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIPC</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIPC</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Message</b> = {PaletteChanged, FontChanged, StyleChanged, BackgroundChanged, SettingsChanged, IconChanged, ToolbarStyleChanged, ClipboardConfigChanged, BlockShortcuts, UserMessage
+}<li><b>Message</b> = {PaletteChanged, FontChanged, StyleChanged, BackgroundChanged, SettingsChanged, IconChanged, ToolbarStyleChanged, ClipboardConfigChanged, UserMessage
+}<li><b>Message</b> = {PaletteChanged, FontChanged, StyleChanged, BackgroundChanged, SettingsChanged, IconChanged, ToolbarStyleChanged, UserMessage
+}</ul>
+<h3>methods</h3><ul>
+<li><b>sendMessage</b> (msg, w, data = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>KIPC.Message</td><td></td></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+<tr><td>data</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendMessageAll</b> (msg, data = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>KIPC.Message</td><td></td></tr>
+<tr><td>data</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIcon.html b/python/pykde/doc/classref/kdecore/KIcon.html
new file mode 100644
index 00000000..4629f984
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIcon.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIcon</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIcon</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIcon</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Context</b> = {Any, Action, Application, Device, FileSystem, MimeType
+}<li><b>Group</b> = {NoGroup, Desktop, FirstGroup, Toolbar, MainToolbar, Small, Panel, LastGroup, User
+}<li><b>Group</b> = {NoGroup, Desktop, FirstGroup, Toolbar, MainToolbar, Small, Panel, LastGroup, User
+}<li><b>MatchType</b> = {MatchExact, MatchBest
+}<li><b>Overlays</b> = {LockOverlay, ZipOverlay, LinkOverlay, HiddenOverlay, ShareOverlay, OverlayMask
+}<li><b>Overlays</b> = {LockOverlay, ZipOverlay, LinkOverlay, HiddenOverlay, OverlayMask
+}<li><b>States</b> = {DefaultState, ActiveState, DisabledState, LastState
+}<li><b>StdSizes</b> = {SizeSmall, SizeSmallMedium, SizeMedium, SizeLarge, SizeHuge, SizeEnormous
+}<li><b>StdSizes</b> = {SizeSmall, SizeSmallMedium, SizeMedium, SizeLarge, SizeHuge
+}<li><b>StdSizes</b> = {SizeSmall, SizeMedium, SizeLarge, SizeHuge
+}<li><b>StdSizes</b> = {SizeSmall, SizeMedium, SizeLarge
+}<li><b>Type</b> = {Fixed, Scalable, Threshold
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIcon instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>context</td><td>Context</td></tr>
+<tr><td>path</td><td>QString</td></tr>
+<tr><td>size</td><td>int</td></tr>
+<tr><td>threshold</td><td>int</td></tr>
+<tr><td>type</td><td>Type</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIconEffect.html b/python/pykde/doc/classref/kdecore/KIconEffect.html
new file mode 100644
index 00000000..43d7d9d9
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIconEffect.html
@@ -0,0 +1,205 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconEffect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconEffect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconEffect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Effects</b> = {NoEffect, ToGray, Colorize, ToGamma, DeSaturate, ToMonochrome, LastEffect
+}<li><b>Effects</b> = {NoEffect, ToGray, Colorize, ToGamma, DeSaturate, LastEffect
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KIconEffect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconEffect instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, group, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>group</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, effect, value, rgb, trans)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>effect</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+<tr><td>rgb</td><td>QColor</td><td></td></tr>
+<tr><td>trans</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, effect, value, rgb, rgb2, trans)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>effect</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+<tr><td>rgb</td><td>QColor</td><td></td></tr>
+<tr><td>rgb2</td><td>QColor</td><td></td></tr>
+<tr><td>trans</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, group, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QPixmap</td><td></td></tr>
+<tr><td>group</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, effect, value, rgb, trans)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QPixmap</td><td></td></tr>
+<tr><td>effect</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+<tr><td>rgb</td><td>QColor</td><td></td></tr>
+<tr><td>trans</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> (src, effect, value, rgb, rgb2, trans)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QPixmap</td><td></td></tr>
+<tr><td>effect</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+<tr><td>rgb</td><td>QColor</td><td></td></tr>
+<tr><td>rgb2</td><td>QColor</td><td></td></tr>
+<tr><td>trans</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorize</b> (image, col, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deSaturate</b> (image, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doublePixels</b> (src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fingerprint</b> (group, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasEffect</b> (group, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>overlay</b> (src, overlay)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>overlay</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>semiTransparent</b> (image)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>semiTransparent</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toGamma</b> (image, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toGray</b> (image, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toMonochrome</b> (image, black, white, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>black</td><td>QColor</td><td></td></tr>
+<tr><td>white</td><td>QColor</td><td></td></tr>
+<tr><td>value</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visualActivate</b> (widget, rect)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>rect</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIconLoader.html b/python/pykde/doc/classref/kdecore/KIconLoader.html
new file mode 100644
index 00000000..2c75fe3d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIconLoader.html
@@ -0,0 +1,195 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconLoader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconLoader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconLoader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconLoader</b> (appname = QString .null, dirs = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconLoader instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appname</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dirs</td><td>KStandardDirs</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addAppDir</b> (appname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addExtraDesktopThemes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alphaBlending</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentSize</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableDelayedIconSetLoading</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraDesktopThemesAdded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconEffect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIconEffect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconPath</b> (name, group_or_size, canReturnNull = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group_or_size</td><td>int</td><td></td></tr>
+<tr><td>canReturnNull</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDelayedIconSetLoadingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAnimated</b> (name, group, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadIcon</b> (name, group, size = 0, state = KIcon .DefaultState, path_store = 0, canReturnNull = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>path_store</td><td>QString</td><td>0</td></tr>
+<tr><td>canReturnNull</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadIconSet</b> (name, group, size, canReturnNull, immediateExistenceCheck)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>canReturnNull</td><td>bool</td><td></td></tr>
+<tr><td>immediateExistenceCheck</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadIconSet</b> (name, group, size, canReturnNull)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>canReturnNull</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadIconSet</b> (name, group, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadMovie</b> (name, group, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMovie)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moviePath</b> (name, group, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryIcons</b> (group_or_size, context = KIcon .Any)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group_or_size</td><td>int</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Any</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryIconsByContext</b> (group_or_size, context = KIcon .Any)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group_or_size</td><td>int</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Any</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryIconsByDir</b> (iconsDir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconsDir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reconfigure</b> (_appname, _dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_appname</td><td>QString</td><td></td></tr>
+<tr><td>_dirs</td><td>KStandardDirs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>theme</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIconTheme)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unknown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KIconTheme.html b/python/pykde/doc/classref/kdecore/KIconTheme.html
new file mode 100644
index 00000000..e897f1e6
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KIconTheme.html
@@ -0,0 +1,140 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconTheme</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconTheme</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconTheme</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconTheme</b> (name, appName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconTheme instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>appName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>current</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultSize</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultThemeName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>depth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>example</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconPath</b> (name, size, match)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIcon)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>match</td><td>KIcon.MatchType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inherits</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHidden</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkOverlay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>list</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lockOverlay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryIcons</b> (size, context = KIcon .Any)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Any</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryIconsByContext</b> (size, context = KIcon .Any)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Any</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>querySizes</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reconfigure</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>screenshot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shareOverlay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zipOverlay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KInstance.html b/python/pykde/doc/classref/kdecore/KInstance.html
new file mode 100644
index 00000000..b3212b8e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KInstance.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KInstance</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KInstance</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KInstance</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KInstance</b> (instanceName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInstance instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInstance</b> (aboutData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInstance instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInstance</b> (src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInstance instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInstance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInstance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInstance instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutData)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charsets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStandardDirs)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconLoader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIconLoader)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instanceName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeSourceFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeSourceFactory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newIconLoader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharedConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSharedConfig)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKey.html b/python/pykde/doc/classref/kdecore/KKey.html
new file mode 100644
index 00000000..836f8c7d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKey.html
@@ -0,0 +1,195 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKey</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKey</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKey</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {MOD_FLAG_COUNT
+}<li><b>(anonymous)</b> = {QtWIN
+}<li><b>(anonymous)</b> = {QtWIN
+}<li><b>(anonymous)</b> = {QtWIN
+}<li><b>ModFlag</b> = {SHIFT, CTRL, ALT, WIN
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (keyEvent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyEvent</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKey</b> (key, mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKey instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>uint</td><td></td></tr>
+<tr><td>mod</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keyEvent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyEvent</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key, mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>uint</td><td></td></tr>
+<tr><td>mod</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValidNative</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValidQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCodeQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modFlagLabel</b> (f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>KKey.ModFlag</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modFlags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>null</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKey)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>simplify</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sym</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyNative.html b/python/pykde/doc/classref/kdecore/KKeyNative.html
new file mode 100644
index 00000000..3499b791
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyNative.html
@@ -0,0 +1,174 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyNative</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyNative</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyNative</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KKeyNative</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyNative instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyNative</b> (xevent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyNative</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyNative instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyNative</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyNative instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyNative</b> (code, mod, sym)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyNative instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>code</td><td>uint</td><td></td></tr>
+<tr><td>mod</td><td>uint</td><td></td></tr>
+<tr><td>sym</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accelModMaskX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>code</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (xevent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKey)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCodeQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyboardHasWinKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mod</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modX</b> (modFlag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modFlag</td><td>KKey.ModFlag</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXModeSwitch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXNumLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXScrollLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>null</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKeyNative)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sym</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator KKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeySequence.html b/python/pykde/doc/classref/kdecore/KKeySequence.html
new file mode 100644
index 00000000..e73aef7f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeySequence.html
@@ -0,0 +1,180 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeySequence</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeySequence</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeySequence</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {MAX_KEYS
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KKeySequence</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeySequence instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeySequence</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeySequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeySequence</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeySequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeySequence</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeySequence</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeySequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeySequence</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeySequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTriggerOnRelease</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKey)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCodeQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>null</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKeySequence)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>qt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QKeySequence)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKey</b> (i, key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTriggerOnRelease</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startsWith</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyServer.CodeMod.html b/python/pykde/doc/classref/kdecore/KKeyServer.CodeMod.html
new file mode 100644
index 00000000..f5389c2f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyServer.CodeMod.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyServer.CodeMod</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyServer.CodeMod</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyServer.CodeMod</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>code</td><td>int</td></tr>
+<tr><td>mod</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyServer.Key.html b/python/pykde/doc/classref/kdecore/KKeyServer.Key.html
new file mode 100644
index 00000000..80a6398c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyServer.Key.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyServer.Key</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyServer.Key</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyServer.Key</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {CODE_FOR_QT
+}</ul>
+<h3>methods</h3><ul>
+<li><b>code</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key, bQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+<tr><td>bQt</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNative</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKey)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCodeQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mod</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeycodeQt</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sym</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyServer.Key</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_code</td><td>uint</td></tr>
+<tr><td>m_mod</td><td>uint</td></tr>
+<tr><td>m_sym</td><td>uint</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyServer.Sym.html b/python/pykde/doc/classref/kdecore/KKeyServer.Sym.html
new file mode 100644
index 00000000..af77d2c4
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyServer.Sym.html
@@ -0,0 +1,92 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyServer.Sym</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyServer.Sym</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyServer.Sym</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Sym</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sym instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Sym</b> (sym)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sym instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sym</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Sym</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Sym instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getModsRequired</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSymVariation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initQt</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>qt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator uint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_sym</td><td>uint</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyServer.Variations.html b/python/pykde/doc/classref/kdecore/KKeyServer.Variations.html
new file mode 100644
index 00000000..40a3c684
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyServer.Variations.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyServer.Variations</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyServer.Variations</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyServer.Variations</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {MAX_VARIATIONS
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Variations</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Variations instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (a0, bQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKey</td><td></td></tr>
+<tr><td>bQt</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKeyServer.Key)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_nVariations</td><td>uint</td></tr>
+<tr><td>m_rgkey[MAX_VARIATIONS]</td><td>KKeyServer::Key</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KKeyServer.html b/python/pykde/doc/classref/kdecore/KKeyServer.html
new file mode 100644
index 00000000..1407b605
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KKeyServer.html
@@ -0,0 +1,132 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyServer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyServer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyServer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KKeyServer.CodeMod.html">CodeMod</a></b><li><b><a href="KKeyServer.Key.html">Key</a></b><li><b><a href="KKeyServer.Sym.html">Sym</a></b><li><b><a href="KKeyServer.Variations.html">Variations</a></b></ul>
+<h3>enums</h3><ul>
+<li><b>ExtraModFlag</b> = {MODE_SWITCH
+}</ul>
+<h3>methods</h3><ul>
+<li><b>accelModMaskX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codeXToSym</b> (codeX, modX)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initializeMods</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyQtToKeyX</b> (keyCombQt, pKeyCodeX)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyQtToMod</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyQtToSym</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyboardHasWinKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modToModQt</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modToModX</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modToStringInternal</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modToStringUser</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modX</b> (modFlag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modFlag</td><td>KKey.ModFlag</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXAlt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXCtrl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXModeSwitch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.4.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXNumLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXScrollLock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXShift</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXToMod</b> (modX)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXToModQt</b> (modX)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modXWin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>qtButtonStateToMod</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stringToSymMod</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stringUserToMod</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mod</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symToKeyQt</b> (sym)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KLibFactory.html b/python/pykde/doc/classref/kdecore/KLibFactory.html
new file mode 100644
index 00000000..f2d8c6ac
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KLibFactory.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLibFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLibFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLibFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLibFactory</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLibFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (parent = 0, name = 0, classname = "QObject", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"QObject"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createObject</b> (parent = 0, name = 0, className = "QObject", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>className</td><td>char</td><td>"QObject"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>objectCreated</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KLibLoader.html b/python/pykde/doc/classref/kdecore/KLibLoader.html
new file mode 100644
index 00000000..82fbd82f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KLibLoader.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLibLoader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLibLoader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLibLoader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLibLoader</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLibLoader instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>factory</b> (libname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLibFactory)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>libname</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findLibrary</b> (name, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>globalLibrary</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLibrary)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastErrorMessage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>library</b> (libname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLibrary)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>libname</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLibLoader)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unloadLibrary</b> (libname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>libname</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KLibrary.html b/python/pykde/doc/classref/kdecore/KLibrary.html
new file mode 100644
index 00000000..cba0d2e0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KLibrary.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLibrary</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLibrary</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLibrary</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLibrary</b> (libname, filename, handle)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLibrary</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLibrary instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>factory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLibFactory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasSymbol</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symbol</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(void)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KLibrary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KLocale.html b/python/pykde/doc/classref/kdecore/KLocale.html
new file mode 100644
index 00000000..853d92c7
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KLocale.html
@@ -0,0 +1,583 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLocale</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLocale</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLocale</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>MeasureSystem</b> = {Metric, Imperial
+}<li><b>ReadDateFlags</b> = {NormalFormat, ShortFormat
+}<li><b>ReadTimeFlags</b> = {WithSeconds, WithoutSeconds
+}<li><b>SignPosition</b> = {ParensAround, BeforeQuantityMoney, AfterQuantityMoney, BeforeMoney, AfterMoney
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KLocale</b> (catalog, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLocale instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>catalog</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLocale</b> (rhs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLocale</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLocale instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KLocale</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>_initLanguage</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allCountriesTwoAlpha</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allLanguagesTwoAlpha</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calendar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCalendarSystem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calendarType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codecForEncoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTextCodec)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>country</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currencySymbol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateFormat</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateFormatShort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateMonthNamePossessive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decimalSymbol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultCountry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultLanguage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodingMib</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileEncodingMib</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatDate</b> (pDate, shortFormat = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDate</td><td>QDate</td><td></td></tr>
+<tr><td>shortFormat</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatDateTime</b> (pDateTime, shortFormat, includeSecs = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDateTime</td><td>QDateTime</td><td></td></tr>
+<tr><td>shortFormat</td><td>bool</td><td></td></tr>
+<tr><td>includeSecs</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatLong</b> (num)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>num</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatMoney</b> (num, currency = QString .null, digits = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>num</td><td>double</td><td></td></tr>
+<tr><td>currency</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>digits</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatMoney</b> (numStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatNumber</b> (num, precision = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>num</td><td>double</td><td></td></tr>
+<tr><td>precision</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatNumber</b> (numStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatNumber</b> (numStr, round, precision)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numStr</td><td>QString</td><td></td></tr>
+<tr><td>round</td><td>bool</td><td></td></tr>
+<tr><td>precision</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatTime</b> (pTime, includeSecs, isDuration)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pTime</td><td>QTime</td><td></td></tr>
+<tr><td>includeSecs</td><td>bool</td><td></td></tr>
+<tr><td>isDuration</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatTime</b> (pTime, includeSecs = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pTime</td><td>QTime</td><td></td></tr>
+<tr><td>includeSecs</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fracDigits</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertCatalogue</b> (catalog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>catalog</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>langLookup</b> (fname, rtype = "html")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fname</td><td>QString</td><td></td></tr>
+<tr><td>rtype</td><td>char</td><td>"html"</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>language</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>languageList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>languages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>languagesTwoAlpha</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>measureSystem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLocale.MeasureSystem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monetaryDecimalSymbol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monetaryThousandsSeparator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthName</b> (i, shortName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthNamePossessive</b> (i, shortName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>negativeMonetarySignPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(SignPosition)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>negativePrefixCurrencySymbol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>negativeSign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nounDeclension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positiveMonetarySignPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(SignPosition)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positivePrefixCurrencySymbol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positiveSign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDate</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDate</b> (intstr, fmt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>intstr</td><td>QString</td><td></td></tr>
+<tr><td>fmt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDate</b> (str, flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>flags</td><td>KLocale.ReadDateFlags</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readMoney</b> (numStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNumber</b> (numStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readTime</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTime) ok (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readTime</b> (str, flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTime) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>flags</td><td>KLocale.ReadTimeFlags</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeCatalogue</b> (catalog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>catalog</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveCatalogue</b> (catalog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>catalog</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCalendar</b> (calendarType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>calendarType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCharset</b> (charset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCountry</b> (country)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>country</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrencySymbol</b> (symbol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>symbol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDateFormat</b> (format)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDateFormatShort</b> (format)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDateMonthNamePossessive</b> (possessive)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>possessive</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDecimalSymbol</b> (symbol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>symbol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncoding</b> (mibEnum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mibEnum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFracDigits</b> (digits)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>digits</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLanguage</b> (language)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>language</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLanguage</b> (languages)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>languages</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainCatalogue</b> (catalog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>catalog</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMeasureSystem</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>KLocale.MeasureSystem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMonetaryDecimalSymbol</b> (symbol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>symbol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMonetaryThousandsSeparator</b> (separator)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>separator</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNegativeMonetarySignPosition</b> (signpos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signpos</td><td>KLocale.SignPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNegativePrefixCurrencySymbol</b> (prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prefix</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNegativeSign</b> (sign)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sign</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageSize</b> (paperFormat)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>paperFormat</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPositiveMonetarySignPosition</b> (signpos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signpos</td><td>KLocale.SignPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPositivePrefixCurrencySymbol</b> (prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prefix</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPositiveSign</b> (sign)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sign</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setThousandsSeparator</b> (separator)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>separator</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimeFormat</b> (format)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWeekStartDay</b> (day)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>day</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWeekStartsMonday</b> (start)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>start</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitLocale</b> (str, language, country, charset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>language</td><td>QString</td><td></td></tr>
+<tr><td>country</td><td>QString</td><td></td></tr>
+<tr><td>charset</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>thousandsSeparator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeFormat</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translate</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translate</b> (comment, fallback)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>comment</td><td>char</td><td></td></tr>
+<tr><td>fallback</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translate</b> (singular, plural, n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>singular</td><td>char</td><td></td></tr>
+<tr><td>plural</td><td>char</td><td></td></tr>
+<tr><td>n</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translateQt</b> (context, sourceText, message)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>context</td><td>char</td><td></td></tr>
+<tr><td>sourceText</td><td>char</td><td></td></tr>
+<tr><td>message</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>twoAlphaToCountryName</b> (code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>code</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>twoAlphaToLanguageName</b> (code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>code</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>use12Clock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekDayName</b> (i, shortName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>shortName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekStartDay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekStartsMonday</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KLockFile.html b/python/pykde/doc/classref/kdecore/KLockFile.html
new file mode 100644
index 00000000..437a5639
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KLockFile.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLockFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLockFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLockFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShared </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>LockOptions</b> = {LockNoBlock, LockForce
+}<li><b>LockResult</b> = {LockOK, LockFail, LockError, LockStale
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KLockFile</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLockFile instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getLockInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) pid (int) hostname (QString) appname (QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lock</b> (options = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLockFile.LockResult)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStaleTime</b> (_staleTime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_staleTime</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>staleTime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMD4.html b/python/pykde/doc/classref/kdecore/KMD4.html
new file mode 100644
index 00000000..3d9b8cfd
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMD4.html
@@ -0,0 +1,145 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMD4</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMD4</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMD4</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMD4</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD4 instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD4</b> (in, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD4 instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD4</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD4 instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD4</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD4 instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD4</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD4 instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KMD4</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Digest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hexDigest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hexDigest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rawDigest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rawDigest</b> (bin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transform</b> (buf[4], in[16])
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>verify</b> (digest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>verify</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMD5.html b/python/pykde/doc/classref/kdecore/KMD5.html
new file mode 100644
index 00000000..92e9ce8d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMD5.html
@@ -0,0 +1,144 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMD5</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMD5</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMD5</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMD5</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD5 instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD5</b> (in, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD5 instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD5</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD5 instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD5</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD5 instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMD5</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMD5 instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KMD5</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base64Digest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hexDigest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hexDigest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rawDigest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rawDigest</b> (bin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transform</b> (buffer[64])
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transform</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uchar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transform</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uchar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (in)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>in</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>verify</b> (digest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>verify</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMacroExpander.html b/python/pykde/doc/classref/kdecore/KMacroExpander.html
new file mode 100644
index 00000000..94576459
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMacroExpander.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMacroExpander</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMacroExpander</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMacroExpander</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>expandMacros</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacros</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacros</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacros</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str, map, c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>map</td><td>QMap<QString,QStringList></td><td></td></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMacroExpanderBase.html b/python/pykde/doc/classref/kdecore/KMacroExpanderBase.html
new file mode 100644
index 00000000..05a7928b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMacroExpanderBase.html
@@ -0,0 +1,99 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMacroExpanderBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMacroExpanderBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMacroExpanderBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMacroExpanderBase</b> (c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMacroExpanderBase instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>escapeChar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandEscapedMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacros</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) pos (uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacrosShellQuote</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandPlainMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEscapeChar</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMimeSourceFactory.html b/python/pykde/doc/classref/kdecore/KMimeSourceFactory.html
new file mode 100644
index 00000000..97730540
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMimeSourceFactory.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeSourceFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeSourceFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeSourceFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QMimeSourceFactory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeSourceFactory</b> (loader = KGlobal .iconLoader ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeSourceFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>loader</td><td>KIconLoader</td><td>KGlobal .iconLoader ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeAbsolute</b> (abs_or_rel_name, context)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>abs_or_rel_name</td><td>QString</td><td></td></tr>
+<tr><td>context</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMountPoint.html b/python/pykde/doc/classref/kdecore/KMountPoint.html
new file mode 100644
index 00000000..f57d224d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMountPoint.html
@@ -0,0 +1,92 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMountPoint</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMountPoint</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMountPoint</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShared </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {NeedMountOptions, NeedRealDeviceName
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMountPoint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMountPoint instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentMountPoints</b> (infoNeeded = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMountPoint.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>infoNeeded</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>devNameFromOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mountOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mountPoint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mountType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mountedFrom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>possibleMountPoints</b> (infoNeeded = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMountPoint.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>infoNeeded</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>realDeviceName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KMultipleDrag.html b/python/pykde/doc/classref/kdecore/KMultipleDrag.html
new file mode 100644
index 00000000..c7d6da6b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KMultipleDrag.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMultipleDrag</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMultipleDrag</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMultipleDrag</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QDragObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMultipleDrag</b> (dragSource = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMultipleDrag instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dragSource</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDragObject</b> (dragObject)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dragObject</td><td>QDragObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedData</b> (mime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mime</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KNotifyClient.Instance.html b/python/pykde/doc/classref/kdecore/KNotifyClient.Instance.html
new file mode 100644
index 00000000..397acf7d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KNotifyClient.Instance.html
@@ -0,0 +1,58 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotifyClient.Instance</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotifyClient.Instance</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotifyClient.Instance</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Instance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Instance instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>current</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotifyClient.Instance)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useSystemBell</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KNotifyClient.html b/python/pykde/doc/classref/kdecore/KNotifyClient.html
new file mode 100644
index 00000000..853faae8
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KNotifyClient.html
@@ -0,0 +1,148 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotifyClient</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotifyClient</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotifyClient</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KNotifyClient.Instance.html">Instance</a></b></ul>
+<h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {Default, Sound, Messagebox, Logfile, Stderr
+}<li><b>(anonymous)</b> = {Default, Sound, Messagebox, Logfile, Stderr
+}<li><b>(anonymous)</b> = {Default, Sound, Messagebox, Logfile, Stderr
+}<li><b>(anonymous)</b> = {Default, Sound, Messagebox, Logfile, Stderr
+}<li><b>StandardEvent</b> = {cannotOpenFile, notification, warning, fatalError, catastrophe
+}</ul>
+<h3>methods</h3><ul>
+<li><b>beep</b> (reason = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reason</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (winId, event, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>event</td><td>KNotifyClient.StandardEvent</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (winId, event, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>event</td><td>KNotifyClient.StandardEvent</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (winId, event, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>event</td><td>KNotifyClient.StandardEvent</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (winId, event, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>event</td><td>KNotifyClient.StandardEvent</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDefaultFile</b> (eventname, present)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventname</td><td>QString</td><td></td></tr>
+<tr><td>present</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDefaultPresentation</b> (eventname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFile</b> (eventname, present)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventname</td><td>QString</td><td></td></tr>
+<tr><td>present</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPresentation</b> (eventname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startDaemon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userEvent</b> (winId, text = QString .null, present = KNotifyClient .Default, level = KNotifyClient .Default, sound = QString .null, file = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>present</td><td>int</td><td>KNotifyClient .Default</td></tr>
+<tr><td>level</td><td>int</td><td>KNotifyClient .Default</td></tr>
+<tr><td>sound</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>file</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userEvent</b> (winId, text = QString .null, present = KNotifyClient .Default, level = KNotifyClient .Default, sound = QString .null, file = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>winId</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>present</td><td>int</td><td>KNotifyClient .Default</td></tr>
+<tr><td>level</td><td>int</td><td>KNotifyClient .Default</td></tr>
+<tr><td>sound</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>file</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KPalette.html b/python/pykde/doc/classref/kdecore/KPalette.html
new file mode 100644
index 00000000..f4a39d12
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KPalette.html
@@ -0,0 +1,140 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPalette</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPalette</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPalette</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Editable</b> = {Yes, No, Ask
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPalette</b> (name = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPalette instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPalette</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPalette instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPalette</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addColor</b> (newColor, newColorName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newColor</td><td>QColor</td><td></td></tr>
+<tr><td>newColorName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeColor</b> (index, newColor, newColorName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>newColor</td><td>QColor</td><td></td></tr>
+<tr><td>newColorName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeColor</b> (oldColor, newColor, newColorName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldColor</td><td>QColor</td><td></td></tr>
+<tr><td>newColor</td><td>QColor</td><td></td></tr>
+<tr><td>newColorName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorName</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorName</b> (color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Editable)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findColor</b> (color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPaletteList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nrColors</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDescription</b> (desc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desc</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditable</b> (editable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>editable</td><td>KPalette.Editable</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KPixmapProvider.html b/python/pykde/doc/classref/kdecore/KPixmapProvider.html
new file mode 100644
index 00000000..1248b6c5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KPixmapProvider.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapProvider</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapProvider</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapProvider <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>pixmapFor</b> (text, size = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KProcIO.html b/python/pykde/doc/classref/kdecore/KProcIO.html
new file mode 100644
index 00000000..c84f248c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KProcIO.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProcIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProcIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProcIO</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KProcess </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KProcIO</b> (codec = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcIO instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>codec</td><td>QTextCodec</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ackRead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeWhenDone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>controlledEmission</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableReadSignals</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fgets</b> (line, autoAck = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+<tr><td>autoAck</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fputs</b> (line, AppendNewLine = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+<tr><td>AppendNewLine</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readReady</b> (pio)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pio</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readln</b> (autoAck = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) line (QString) partial (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoAck</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>received</b> (proc, buffer, buflen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>KProcess</td><td></td></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+<tr><td>buflen</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setComm</b> (comm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>comm</td><td>Communication</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (runmode = NotifyOnExit, includeStderr = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>runmode</td><td>RunMode</td><td>NotifyOnExit</td></tr>
+<tr><td>includeStderr</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeStdin</b> (line, appendnewline = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+<tr><td>appendnewline</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeStdin</b> (line, appendnewline)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QCString</td><td></td></tr>
+<tr><td>appendnewline</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeStdin</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KProcess.html b/python/pykde/doc/classref/kdecore/KProcess.html
new file mode 100644
index 00000000..f85968da
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KProcess.html
@@ -0,0 +1,348 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProcess</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProcess</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProcess</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {PrioLowest, PrioLow, PrioLower, PrioNormal, PrioHigher, PrioHigh, PrioHighest
+}<li><b>Communication</b> = {NoCommunication, Stdin, Stdout, Stderr, AllOutput, All, NoRead, CTtyOnly, MergedStderr
+}<li><b>Communication</b> = {NoCommunication, Stdin, Stdout, Stderr, AllOutput, All, NoRead
+}<li><b>RunMode</b> = {DontCare, NotifyOnExit, Block, OwnGroup
+}<li><b>RunMode</b> = {DontCare, NotifyOnExit, Block
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KProcess</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcess</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcess</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>args</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QCString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childError</b> (fdno)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fdno</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childOutput</b> (fdno)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fdno</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearArguments</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closePty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeStderr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeStdin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeStdout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commSetupDoneC</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commSetupDoneP</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>coreDumped</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exitSignal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exitStatus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRunning</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kill</b> (signo = SIGTERM)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signo</td><td>int</td><td>SIGTERM</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>normalExit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processExited</b> (proc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processHasExited</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPty)</i></td></tr>
+<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.4.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quote</b> (arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedStderr</b> (proc, buffer, buflen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>KProcess</td><td></td></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+<tr><td>buflen</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedStdout</b> (proc, buffer, buflen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>KProcess</td><td></td></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+<tr><td>buflen</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedStdout</b> (fd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runPrivileged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArguments</b> (arglist)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arglist</td><td>a Python list of strings</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td>setArguments is the PyKDE equivalent of the stream operator methods (<<)
+in KDE's KProcess class - provide with a list of strings representing
+the arguments to the executable program set with setExecutable (PyKDE
+will continue to provide setExecutable even though it's deprecated in
+KDE (to also be replaced with stream operators)
+</td></tr></table></td></tr></table></li><hr>
+<li><b>setBinaryExecutable</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnvironment</b> (name, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExecutable</b> (proc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPriority</b> (prio)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prio</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRunPrivileged</b> (keepPrivileges)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keepPrivileges</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUsePty</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.4.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess.Communication</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseShell</b> (useShell, shell = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useShell</td><td>bool</td><td></td></tr>
+<tr><td>shell</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWorkingDirectory</b> (dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupCommunication</b> (comm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>comm</td><td>KProcess.Communication</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupEnvironment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>signalled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotChildError</b> (fdno)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fdno</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotChildOutput</b> (fdno)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fdno</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSendData</b> (dummy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dummy</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (runmode = NotifyOnExit, comm = NoCommunication)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>runmode</td><td>KProcess.RunMode</td><td>NotifyOnExit</td></tr>
+<tr><td>comm</td><td>KProcess.Communication</td><td>NoCommunication</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspend</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wait</b> (timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeStdin</b> (buffer, buflen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buffer</td><td>char</td><td></td></tr>
+<tr><td>buflen</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wroteStdin</b> (proc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proc</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator &lt;&lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;&lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;&lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;&lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KProcessController.html b/python/pykde/doc/classref/kdecore/KProcessController.html
new file mode 100644
index 00000000..eb2a92dd
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KProcessController.html
@@ -0,0 +1,134 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProcessController</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProcessController</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProcessController</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KProcessController</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessController instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcessController</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessController instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcessController</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcessController</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessController instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addKProcess</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addProcess</b> (pid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pid</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notifierFd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeKProcess</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rescheduleCheck</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetHandlers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupHandlers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDoHousekeeping</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>theSigCHLDHandler</b> (signal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unscheduleCheck</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitForProcessExit</b> (timeout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KProcessController</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>theKProcessController</td><td>KProcessController*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KPty.html b/python/pykde/doc/classref/kdecore/KPty.html
new file mode 100644
index 00000000..fdccfa31
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KPty.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPty</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPty</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPty</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPty instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>login</b> (user = 0, remotehost = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>user</td><td>char</td><td>0</td></tr>
+<tr><td>remotehost</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>logout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>masterFd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCTty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWinSize</b> (lines, columns)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lines</td><td>int</td><td></td></tr>
+<tr><td>columns</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXonXoff</b> (useXonXoff)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useXonXoff</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveFd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ttyName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KRFCDate.html b/python/pykde/doc/classref/kdecore/KRFCDate.html
new file mode 100644
index 00000000..26fea697
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KRFCDate.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRFCDate</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRFCDate</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRFCDate</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>localUTCOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseDate</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(time_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseDateISO8601</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(time_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rfc2822DateString</b> (utcTime, utcOffset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>utcTime</td><td>time_t</td><td></td></tr>
+<tr><td>utcOffset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rfc2822DateString</b> (utcTime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>utcTime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KRandomSequence.html b/python/pykde/doc/classref/kdecore/KRandomSequence.html
new file mode 100644
index 00000000..6074d9da
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KRandomSequence.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRandomSequence</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRandomSequence</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRandomSequence</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRandomSequence</b> (lngSeed = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRandomSequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lngSeed</td><td>long</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRandomSequence</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRandomSequence instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KRandomSequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getBool</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDouble</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getLong</b> (max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>max</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modulate</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>randomize</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSeed</b> (lngSeed = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lngSeed</td><td>long</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KRegExp.html b/python/pykde/doc/classref/kdecore/KRegExp.html
new file mode 100644
index 00000000..5530768e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KRegExp.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRegExp</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRegExp</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRegExp</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRegExp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRegExp instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRegExp</b> (_pattern, _mode = "")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRegExp instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_pattern</td><td>char</td><td></td></tr>
+<tr><td>_mode</td><td>char</td><td>""</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compile</b> (_pattern, _mode = "")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_pattern</td><td>char</td><td></td></tr>
+<tr><td>_mode</td><td>char</td><td>""</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> (_grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_grp</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupEnd</b> (_grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_grp</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupStart</b> (_grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_grp</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>match</b> (_string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_string</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KRootProp.html b/python/pykde/doc/classref/kdecore/KRootProp.html
new file mode 100644
index 00000000..0ceefbf5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KRootProp.html
@@ -0,0 +1,127 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRootProp</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRootProp</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRootProp</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRootProp</b> (rProp = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRootProp instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rProp</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>destroy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listEntries</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readColorEntry</b> (rKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QColor</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEntry</b> (rKey, pDefault = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readFontEntry</b> (rKey, pDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>pDefault</td><td>QFont</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNumEntry</b> (rKey, nDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>nDefault</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeEntry</b> (rKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProp</b> (rProp = "")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rProp</td><td>QString</td><td>""</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (rKey, rValue)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>rValue</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (rKey, nValue)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>nValue</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (rKey, rFont)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>rFont</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEntry</b> (rKey, rColor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rKey</td><td>QString</td><td></td></tr>
+<tr><td>rColor</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSaveFile.html b/python/pykde/doc/classref/kdecore/KSaveFile.html
new file mode 100644
index 00000000..baaa9eb0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSaveFile.html
@@ -0,0 +1,85 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSaveFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSaveFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSaveFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSaveFile</b> (filename, mode = 438)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSaveFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>int</td><td>438</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backupFile</b> (filename, backupDir = QString .null, backupExtension = QString .fromLatin1 ("~" ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>backupDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>backupExtension</td><td>QString</td><td>QString .fromLatin1 ("~" )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDataStream)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFile)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fstream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTextStream)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSelectionOwner.html b/python/pykde/doc/classref/kdecore/KSelectionOwner.html
new file mode 100644
index 00000000..7891f304
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSelectionOwner.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSelectionOwner</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSelectionOwner</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSelectionOwner</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSelectionOwner</b> (selection, screen = -1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectionOwner instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selection</td><td>Atom</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectionOwner</b> (selection, screen = -1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectionOwner instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selection</td><td>char</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>claim</b> (force, force_kill = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+<tr><td>force_kill</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterEvent</b> (ev_P)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>genericReply</b> (target, property, requestor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>Atom</td><td></td></tr>
+<tr><td>property</td><td>Atom</td><td></td></tr>
+<tr><td>requestor</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAtoms</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleMessage</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lostOwnership</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>release</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replyTargets</b> (property, requestor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>property</td><td>Atom</td><td></td></tr>
+<tr><td>requestor</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (extra1, extra2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>extra1</td><td>long</td><td></td></tr>
+<tr><td>extra2</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSelectionWatcher.html b/python/pykde/doc/classref/kdecore/KSelectionWatcher.html
new file mode 100644
index 00000000..2b3faff9
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSelectionWatcher.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSelectionWatcher</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSelectionWatcher</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSelectionWatcher</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSelectionWatcher</b> (selection, screen = -1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectionWatcher instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selection</td><td>Atom</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectionWatcher</b> (selection, screen = -1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectionWatcher instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selection</td><td>char</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterEvent</b> (ev_P)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lostOwner</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newOwner</b> (owner)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>owner</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>owner</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KServerSocket.html b/python/pykde/doc/classref/kdecore/KServerSocket.html
new file mode 100644
index 00000000..1ce054ed
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KServerSocket.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServerSocket</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServerSocket</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServerSocket</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServerSocket</b> (_port, _bind)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServerSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_port</td><td>ushort</td><td></td></tr>
+<tr><td>_bind</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServerSocket</b> (_path, _bind)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServerSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_path</td><td>char</td><td></td></tr>
+<tr><td>_bind</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServerSocket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServerSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KServerSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServerSocket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServerSocket instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServerSocket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServerSocket instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accepted</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bindAndListen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_path</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAccept</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>socket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSessionManaged.html b/python/pykde/doc/classref/kdecore/KSessionManaged.html
new file mode 100644
index 00000000..411fabe0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSessionManaged.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSessionManaged</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSessionManaged</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSessionManaged</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSessionManaged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSessionManaged instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commitData</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>QSessionManager</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>QSessionManager</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KShared.html b/python/pykde/doc/classref/kdecore/KShared.html
new file mode 100644
index 00000000..7cdf6870
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KShared.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShared</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShared</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShared</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KShared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShared instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShared</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShared instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShared</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>_KShared_count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>_KShared_ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>_KShared_unref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KShared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSharedConfig.html b/python/pykde/doc/classref/kdecore/KSharedConfig.html
new file mode 100644
index 00000000..fe7fa390
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSharedConfig.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSharedConfig</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSharedConfig</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSharedConfig</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfig, KShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSharedConfig</b> (fileName, immutable, useKDEGlobals)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSharedConfig instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>immutable</td><td>bool</td><td></td></tr>
+<tr><td>useKDEGlobals</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openConfig</b> (fileName, immutable = 0, bUseKDEGlobals = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSharedConfig.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>immutable</td><td>bool</td><td>0</td></tr>
+<tr><td>bUseKDEGlobals</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KSharedConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KShell.html b/python/pykde/doc/classref/kdecore/KShell.html
new file mode 100644
index 00000000..864280df
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KShell.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShell</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShell</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShell</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Errors</b> = {NoError, BadQuoting, FoundMeta
+}<li><b>Options</b> = {NoOptions, TildeExpand, AbortOnMeta
+}</ul>
+<h3>methods</h3><ul>
+<li><b>homeDir</b> (user)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>joinArgs</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString),</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td> Python list of string</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>joinArgs</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString),</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td> Python list of string</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>joinArgsDQ</b> (args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitArgs</b> (cmd, flags = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList) err (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>QString</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tildeExpand</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KShellProcess.html b/python/pykde/doc/classref/kdecore/KShellProcess.html
new file mode 100644
index 00000000..31825ee5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KShellProcess.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShellProcess</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShellProcess</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShellProcess</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KProcess </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KShellProcess</b> (shellname = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShellProcess instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shellname</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShellProcess</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShellProcess instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShellProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quote</b> (arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (runmode = NotifyOnExit, comm = NoCommunication)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>runmode</td><td>RunMode</td><td>NotifyOnExit</td></tr>
+<tr><td>comm</td><td>Communication</td><td>NoCommunication</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KShortcut.html b/python/pykde/doc/classref/kdecore/KShortcut.html
new file mode 100644
index 00000000..74fcbcad
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KShortcut.html
@@ -0,0 +1,243 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShortcut</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShortcut</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShortcut</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {MAX_SEQUENCES
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KShortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KShortcut</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcut instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>append</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>append</b> (spec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>spec</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>append</b> (cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKeyNative</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>QKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>KKey</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCodeQt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>null</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>seq</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KKeySequence)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSeq</b> (i, keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringInternal</b> (pcutDefault = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pcutDefault</td><td>KShortcut</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator QKeySequence</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator int</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KShortcutList.html b/python/pykde/doc/classref/kdecore/KShortcutList.html
new file mode 100644
index 00000000..e1ae5f1e
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KShortcutList.html
@@ -0,0 +1,159 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShortcutList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShortcutList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShortcutList <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Other</b> = {
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KShortcutList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcutList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOther</b> (a0, index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>index</b> (sName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>index</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isGlobal</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readSettings</b> (sConfigGroup = QString .null, pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOther</b> (a0, index, a1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (index, shortcut) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (index) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSettings</b> (sConfigGroup = QString .null, pConfig = 0, bWriteAll = 0, bGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+<tr><td>bWriteAll</td><td>bool</td><td>0</td></tr>
+<tr><td>bGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSimpleConfig.html b/python/pykde/doc/classref/kdecore/KSimpleConfig.html
new file mode 100644
index 00000000..9a30104b
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSimpleConfig.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSimpleConfig</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSimpleConfig</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSimpleConfig</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KConfig </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSimpleConfig</b> (fileName, bReadOnly = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSimpleConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>bReadOnly</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSimpleConfig</b> (backEnd, bReadOnly = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSimpleConfig instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>backEnd</td><td>KConfigBackEnd</td><td></td></tr>
+<tr><td>bReadOnly</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSimpleConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSimpleConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KSimpleConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KSocket.html b/python/pykde/doc/classref/kdecore/KSocket.html
new file mode 100644
index 00000000..0cd1bf3d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KSocket.html
@@ -0,0 +1,126 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSocket</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSocket</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSocket</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSocket</b> (_sock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_sock</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSocket</b> (_host, _port, timeOut = 30)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_host</td><td>char</td><td></td></tr>
+<tr><td>_port</td><td>ushort</td><td></td></tr>
+<tr><td>timeOut</td><td>int</td><td>30</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSocket</b> (_path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_path</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSocket</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSocket instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (_host, _port, timeout = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_host</td><td>QString</td><td></td></tr>
+<tr><td>_port</td><td>ushort</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (_path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_path</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableRead</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableWrite</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readEvent</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRead</b> (x)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotWrite</b> (x)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>socket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeEvent</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStartupInfo.html b/python/pykde/doc/classref/kdecore/KStartupInfo.html
new file mode 100644
index 00000000..17ed30bd
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStartupInfo.html
@@ -0,0 +1,227 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStartupInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStartupInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStartupInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {CleanOnCantDetect, DisableKWinModule, AnnounceSilenceChanges
+}<li><b>startup_t</b> = {NoMatch, Match, CantDetect
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KStartupInfo</b> (flags, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appStarted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appStarted</b> (startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStartup</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfo.startup_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStartup</b> (w, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfo.startup_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStartup</b> (w, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfo.startup_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStartup</b> (w, id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfo.startup_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createNewStartupId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentStartupIdEnv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfoId)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customEvent</b> (e_P)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e_P</td><td>QCustomEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAutoAppStartedSending</b> (disable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>disable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotNewStartup</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotRemoveStartup</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotStartupChange</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleAutoAppStartedSending</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetStartupEnv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendChange</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendChangeX</b> (dpy, id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendFinish</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendFinish</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendFinishX</b> (dpy, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendFinishX</b> (dpy, id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendStartup</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendStartupX</b> (dpy, id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNewStartupId</b> (window, startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>startup_id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimeout</b> (secs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>secs</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindowStartupId</b> (window, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+<tr><td>id</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>silenceStartup</b> (silence)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>silence</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowStartupId</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStartupInfoData.html b/python/pykde/doc/classref/kdecore/KStartupInfoData.html
new file mode 100644
index 00000000..1760ede0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStartupInfoData.html
@@ -0,0 +1,195 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStartupInfoData</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStartupInfoData</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStartupInfoData</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>TriState</b> = {Yes, No, Unknown
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KStartupInfoData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoData instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KStartupInfoData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KStartupInfoData</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WMClass</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPid</b> (pid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pid</td><td>pid_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findDescription</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findWMClass</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hostname</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>is_pid</b> (pid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pid</td><td>pid_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pids</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<pid_t>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pids</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.3 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>screen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBin</b> (bin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bin</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDescription</b> (descr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>descr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHostname</b> (hostname = QCString ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QCString</td><td>QCString ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScreen</b> (screen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>screen</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSilent</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>KStartupInfoData.TriState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimestamp</b> (time)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWMClass</b> (wmclass)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>wmclass</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>silent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStartupInfoData.TriState)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timestamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>update</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KStartupInfoData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStartupInfoId.html b/python/pykde/doc/classref/kdecore/KStartupInfoId.html
new file mode 100644
index 00000000..be7c1e9f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStartupInfoId.html
@@ -0,0 +1,98 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStartupInfoId</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStartupInfoId</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStartupInfoId</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KStartupInfoId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoId instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KStartupInfoId</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoId instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KStartupInfoId</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStartupInfoId instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initId</b> (id = "")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QCString</td><td>""</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>none</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupStartupEnv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timestamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStaticDeleterBase.html b/python/pykde/doc/classref/kdecore/KStaticDeleterBase.html
new file mode 100644
index 00000000..08800b8c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStaticDeleterBase.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStaticDeleterBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStaticDeleterBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStaticDeleterBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>destructObject</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStdAccel.ShortcutList.html b/python/pykde/doc/classref/kdecore/KStdAccel.ShortcutList.html
new file mode 100644
index 00000000..d3f69a4c
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStdAccel.ShortcutList.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStdAccel.ShortcutList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStdAccel.ShortcutList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStdAccel.ShortcutList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShortcutList </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ShortcutList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ShortcutList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOther</b> (a0, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOther</b> (a0, index, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList.Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (index, shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStdAccel.html b/python/pykde/doc/classref/kdecore/KStdAccel.html
new file mode 100644
index 00000000..73a3b871
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStdAccel.html
@@ -0,0 +1,284 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStdAccel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStdAccel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStdAccel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KStdAccel.ShortcutList.html">ShortcutList</a></b></ul>
+<h3>enums</h3><ul>
+<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}<li><b>StdAccel</b> = {AccelNone, Open, New, Close, Save, Print, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, DeleteWordBack, DeleteWordForward, Find, FindNext, FindPrev, Replace, Home, End, Prior, Next, GotoLine, AddBookmark, ZoomIn, ZoomOut, Up, Back, Forward, Reload, PopupMenuContext, ShowMenubar, Help, WhatsThis, TextCompletion, PrevCompletion, NextCompletion, SubstringCompletion, RotateUp, RotateDown, WhatThis
+}</ul>
+<h3>methods</h3><ul>
+<li><b>action</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBookmark</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>back</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backwardWord</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>beginningOfLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultKey</b> (accel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accel</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteWordBack</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteWordForward</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>end</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endOfLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findPrev</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findStdAccel</b> (keySeq)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStdAccel.StdAccel)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keySeq</td><td>KKeySequence</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forward</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forwardWord</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fullScreen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>help</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>home</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEqual</b> (pEvent, keyQt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pEvent</td><td>QKeyEvent</td><td></td></tr>
+<tr><td>keyQt</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>next</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openNew</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paste</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenuContext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>Renamed: was <i>' print
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prior</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault3</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault4</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAccel.StdAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMenubar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substringCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabPrev</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>up</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomIn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomOut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KStringHandler.html b/python/pykde/doc/classref/kdecore/KStringHandler.html
new file mode 100644
index 00000000..7ddb6f70
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KStringHandler.html
@@ -0,0 +1,292 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStringHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStringHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStringHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>cEmSqueeze</b> (name, fontMetrics, maxlen = 30)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>30</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cPixelSqueeze</b> (name, fontMetrics, maxPixels)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxPixels</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>capwords</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>capwords</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>center</b> (text, width)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>csqueeze</b> (str, maxlen = 40)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>40</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>from8Bit</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insword</b> (text, word, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isUtf8</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lEmSqueeze</b> (name, fontMetrics, maxlen = 30)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>30</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lPixelSqueeze</b> (name, fontMetrics, maxPixels)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxPixels</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ljust</b> (text, width)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lsqueeze</b> (str, maxlen = 40)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>40</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchFileName</b> (filename, pattern)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchFilename</b> (filename, pattern)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>obscure</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>perlSplit</b> (sep, s, max = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>perlSplit</b> (sep, s, max = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>perlSplit</b> (sep, s, max = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rEmSqueeze</b> (name, fontMetrics, maxlen = 30)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>30</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rPixelSqueeze</b> (name, fontMetrics, maxPixels)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>fontMetrics</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>maxPixels</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remrange</b> (text, range)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>range</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remword</b> (text, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remword</b> (text, word)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reverse</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reverse</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rjust</b> (text, width)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rsqueeze</b> (str, maxlen = 40)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td>40</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setword</b> (text, word, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tagURLs</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>word</b> (text, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>word</b> (text, range)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>range</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTempDir.html b/python/pykde/doc/classref/kdecore/KTempDir.html
new file mode 100644
index 00000000..18c95209
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTempDir.html
@@ -0,0 +1,99 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTempDir</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTempDir</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTempDir</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTempDir</b> (directoryPrefix = QString .null, mode = 448)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTempDir instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directoryPrefix</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>mode</td><td>int</td><td>448</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (directoryPrefix, mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directoryPrefix</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>existing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>qDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDir)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeDir</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (autoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setError</b> (error)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>error</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTempFile.html b/python/pykde/doc/classref/kdecore/KTempFile.html
new file mode 100644
index 00000000..4277f513
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTempFile.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTempFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTempFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTempFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTempFile</b> (filePrefix = QString .null, fileExtension = QString .null, mode = 384)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTempFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filePrefix</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>fileExtension</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>mode</td><td>int</td><td>384</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTempFile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTempFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (filePrefix, fileExtension, mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filePrefix</td><td>QString</td><td></td></tr>
+<tr><td>fileExtension</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDataStream)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFile)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fstream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (autoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setError</b> (error)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>error</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTextStream)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTimezone.html b/python/pykde/doc/classref/kdecore/KTimezone.html
new file mode 100644
index 00000000..b747a897
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTimezone.html
@@ -0,0 +1,129 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimezone</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimezone</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimezone</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimezone</b> (db, name, countryCode = QString (), latitude = KTimezone .UNKNOWN, longitude = KTimezone .UNKNOWN, comment = QString ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezone instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>db</td><td>KSharedPtr<KTimezoneSource></td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>countryCode</td><td>QString</td><td>QString ()</td></tr>
+<tr><td>latitude</td><td>float</td><td>KTimezone .UNKNOWN</td></tr>
+<tr><td>longitude</td><td>float</td><td>KTimezone .UNKNOWN</td></tr>
+<tr><td>comment</td><td>QString</td><td>QString ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTimezone</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezone instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KTimezone</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convert</b> (newZone, dateTime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newZone</td><td>KTimezone</td><td></td></tr>
+<tr><td>dateTime</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>countryCode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValidLatitude</b> (latitude)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>latitude</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValidLongitude</b> (longitude)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>longitude</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>latitude</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>longitude</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> (basisSpec = Qt .UTC)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>basisSpec</td><td>Qt.TimeSpec</td><td>Qt .UTC</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> (dateTime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dateTime</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parse</b> (dataReceiver)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dataReceiver</td><td>KTimezoneDetails</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>UNKNOWN</td><td>float</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTimezoneDetails.html b/python/pykde/doc/classref/kdecore/KTimezoneDetails.html
new file mode 100644
index 00000000..cc97444a
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTimezoneDetails.html
@@ -0,0 +1,124 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimezoneDetails</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimezoneDetails</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimezoneDetails</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimezoneDetails</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezoneDetails instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotAbbreviation</b> (index, abbr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>abbr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotHeader</b> (ttIsGmtCnt, ttIsStdCnt, leapCnt, timeCnt, typeCnt, charCnt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ttIsGmtCnt</td><td>uint</td><td></td></tr>
+<tr><td>ttIsStdCnt</td><td>uint</td><td></td></tr>
+<tr><td>leapCnt</td><td>uint</td><td></td></tr>
+<tr><td>timeCnt</td><td>uint</td><td></td></tr>
+<tr><td>typeCnt</td><td>uint</td><td></td></tr>
+<tr><td>charCnt</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotIsStandard</b> (index, isStandard)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>isStandard</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotIsUTC</b> (index, isUTC)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>isUTC</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotLeapAdjustment</b> (index, leapTime, leapSeconds)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>leapTime</td><td>uint</td><td></td></tr>
+<tr><td>leapSeconds</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotLocalTime</b> (index, gmtOff, isDst, abbrIndex)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>gmtOff</td><td>int</td><td></td></tr>
+<tr><td>isDst</td><td>bool</td><td></td></tr>
+<tr><td>abbrIndex</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotLocalTimeIndex</b> (index, localTimeIndex)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>localTimeIndex</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotTransitionTime</b> (index, transitionTime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>transitionTime</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseEnded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseStarted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTimezoneSource.html b/python/pykde/doc/classref/kdecore/KTimezoneSource.html
new file mode 100644
index 00000000..18870536
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTimezoneSource.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimezoneSource</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimezoneSource</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimezoneSource</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimezoneSource</b> (db)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezoneSource instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>db</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>db</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parse</b> (zone, dataReceiver)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>zone</td><td>QString</td><td></td></tr>
+<tr><td>dataReceiver</td><td>KTimezoneDetails</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KTimezones.html b/python/pykde/doc/classref/kdecore/KTimezones.html
new file mode 100644
index 00000000..caa8d8a2
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KTimezones.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimezones</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimezones</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimezones</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimezones</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezones instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTimezones</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezones instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KTimezones</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> (zone)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>zone</td><td>KTimezone</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allZones</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTimezones.ZoneMap)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>local</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTimezone)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zone</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTimezone)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KURL.List.html b/python/pykde/doc/classref/kdecore/KURL.List.html
new file mode 100644
index 00000000..1261d903
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KURL.List.html
@@ -0,0 +1,183 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURL.List</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURL.List</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURL.List</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>List</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a List instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>List</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a List instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__contains__</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__delitem__</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__delitem__</b> (range)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>range</td><td>a Python slice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__len__</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int),</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__setitem__</b> (index, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>__setitem__</b> (range, urlList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>range</td><td>a Python slice</td><td></td></tr>
+<tr><td>urlList</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>append</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>first</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>last</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepend</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toStringList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator *</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator *=</b> (val)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>val</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +</b> (listToAdd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>listToAdd</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator []</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator []</b> (range)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>range</td><td>a Python slice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KURL.html b/python/pykde/doc/classref/kdecore/KURL.html
new file mode 100644
index 00000000..9d7f5259
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KURL.html
@@ -0,0 +1,562 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURL</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURL</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURL</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>AdjustementFlags</b> = {NoAdjustements, StripFileProtocol
+}<li><b>QueryItemsOptions</b> = {CaseInsensitiveKeys
+}<li><b>URIMode</b> = {Auto, Invalid, RawURI, URL, Mailto
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>char</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QCString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>QUrl</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURL</b> (_baseurl, _rel_url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURL instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_baseurl</td><td>KURL</td><td></td></tr>
+<tr><td>_rel_url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPath</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addQueryItem</b> (_item, _value, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_item</td><td>QString</td><td></td></tr>
+<tr><td>_value</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adjustPath</b> (_trailing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cd</b> (_dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanPath</b> (cleanDirSeparator = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cleanDirSeparator</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cmp</b> (u, ignore_trailing = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+<tr><td>ignore_trailing</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decode_string</b> (str, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directory</b> (_strip_trailing_slash_from_result = 1, _ignore_trailing_slash_in_path = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_strip_trailing_slash_from_result</td><td>bool</td><td>1</td></tr>
+<tr><td>_ignore_trailing_slash_in_path</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encode_string</b> (str, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encode_string_no_slash</b> (str, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedHtmlRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedPathAndQuery</b> (_trailing = 0, _no_empty_path = 0, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td>0</td></tr>
+<tr><td>_no_empty_path</td><td>bool</td><td>0</td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>equals</b> (u, ignore_trailing = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+<tr><td>ignore_trailing</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileEncoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> (_ignore_trailing_slash_in_path = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ignore_trailing_slash_in_path</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filename</b> (_ignore_trailing_slash_in_path = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ignore_trailing_slash_in_path</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromPathOrURL</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasHTMLRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasHost</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasPass</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasSubURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasUser</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>host</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLocalFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMalformed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isParentOf</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRelativeURL</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>join</b> (_list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_list</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parse</b> (_url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseMailto</b> (_url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseRawURI</b> (_url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseURL</b> (_url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pass_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>Renamed: was <i>' pass
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> (_trailing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pathOrURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prettyURL</b> (_trailing = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prettyURL</b> (_trailing, _flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td></td></tr>
+<tr><td>_flags</td><td>KURL.AdjustementFlags</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>protocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>query</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryItem</b> (item, encoding_hint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryItems</b> (options = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryItems</b> (options, encoding_hint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativePath</b> (base_dir, path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) isParent (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base_dir</td><td>QString</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativeURL</b> (base_url, url, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base_url</td><td>KURL</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeQueryItem</b> (_item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirectory</b> (dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncodedPath</b> (_txt, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncodedPathAndQuery</b> (_txt, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileEncoding</b> (encoding)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileName</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHTMLRef</b> (_ref)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ref</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHost</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPass</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPath</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPort</b> (_p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_p</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProtocol</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setQuery</b> (_txt, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRef</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUser</b> (_txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>split</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>split</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uriMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uriModeForProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.URIMode)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> (_trailing = 0, encoding_hint = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_trailing</td><td>int</td><td>0</td></tr>
+<tr><td>encoding_hint</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KURLDrag.html b/python/pykde/doc/classref/kdecore/KURLDrag.html
new file mode 100644
index 00000000..e39e32a3
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KURLDrag.html
@@ -0,0 +1,165 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLDrag</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLDrag</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLDrag</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QUriDrag </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLDrag</b> (urls, dragSource, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLDrag instance</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>dragSource</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLDrag</b> (urls, metaData, dragSource, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLDrag instance</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>metaData</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>dragSource</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLDrag</b> (urls, metaData, dragSource, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLDrag instance</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>QStrList</td><td></td></tr>
+<tr><td>metaData</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>dragSource</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decode</b> (e, urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMimeSource</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decode</b> (e, urls, metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMimeSource</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>metaData</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedData</b> (mime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mime</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newDrag</b> (urls, dragSource = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLDrag)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>dragSource</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newDrag</b> (urls, metaData, dragSource = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLDrag)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>metaData</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>dragSource</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExportAsText</b> (exp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>exp</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stringToUrl</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlToString</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KUniqueApplication.html b/python/pykde/doc/classref/kdecore/KUniqueApplication.html
new file mode 100644
index 00000000..b0e636c5
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KUniqueApplication.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KUniqueApplication</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KUniqueApplication</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KUniqueApplication</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KApplication, DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KUniqueApplication</b> (allowStyles, GUIenabled, configUnique)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KUniqueApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowStyles</td><td>bool</td><td></td></tr>
+<tr><td>GUIenabled</td><td>bool</td><td></td></tr>
+<tr><td>configUnique</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KUniqueApplication</b> (display, visual = 0, colormap = 0, allowStyles = 1, configUnique = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KUniqueApplication</b> (a0 = 1, a1 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KUniqueApplication instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td>1</td></tr>
+<tr><td>a1</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCmdLineOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoringSession</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHandleAutoStarted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KWin.Info.html b/python/pykde/doc/classref/kdecore/KWin.Info.html
new file mode 100644
index 00000000..61ed86dc
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KWin.Info.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWin.Info</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWin.Info</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWin.Info</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>isIconified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMinimized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleNameWithState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>desktop</td><td>int</td></tr>
+<tr><td>frameGeometry</td><td>QRect</td></tr>
+<tr><td>geometry</td><td>QRect</td></tr>
+<tr><td>mappingState</td><td>NET::MappingState</td></tr>
+<tr><td>name</td><td>QString</td></tr>
+<tr><td>onAllDesktops</td><td>bool</td></tr>
+<tr><td>pid</td><td>pid_t</td></tr>
+<tr><td>state</td><td>ulong</td></tr>
+<tr><td>strut</td><td>NETStrut</td></tr>
+<tr><td>visibleName</td><td>QString</td></tr>
+<tr><td>win</td><td>WId</td></tr>
+<tr><td>windowType</td><td>NET::WindowType</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KWin.WindowInfo.html b/python/pykde/doc/classref/kdecore/KWin.WindowInfo.html
new file mode 100644
index 00000000..8782a366
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KWin.WindowInfo.html
@@ -0,0 +1,172 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWin.WindowInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWin.WindowInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWin.WindowInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>WindowInfo</b> (window, properties, properties2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>properties2</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WindowInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WindowInfo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KWin.WindowInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionSupported</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>NET.Action</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extendedStrut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETExtendedStrut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>geometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupLeader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasState</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMinimized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOnCurrentDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOnDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mappingState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NET.MappingState)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onAllDesktops</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETStrut)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transientFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valid</b> (withdrawn_is_valid = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>withdrawn_is_valid</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleIconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleIconNameWithState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleNameWithState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>win</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowType</b> (supported_types)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NET.WindowType)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supported_types</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KWin.html b/python/pykde/doc/classref/kdecore/KWin.html
new file mode 100644
index 00000000..577f7b76
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KWin.html
@@ -0,0 +1,304 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>IconSource</b> = {NETWM = 1, WMHints = 2, ClassHint = 4, XApp = 8
+}</ul>
+<h3>methods</h3><ul>
+<li><b>activateWindow</b> (win, time = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>time</td><td>long</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowedActionsSupported</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appStarted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearState</b> (win, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>state</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deIconifyWindow</b> (win, animation = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>animation</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>demandAttention</b> (win, set = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>set</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forceActiveWindow</b> (win, time = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>time</td><td>long</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupLeader</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icccmCompliantMappingState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (win, width = -1, height = -1, scale = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>width</td><td>int</td><td>-1</td></tr>
+<tr><td>height</td><td>int</td><td>-1</td></tr>
+<tr><td>scale</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (win, width, height, scale, flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+<tr><td>scale</td><td>bool</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconifyWindow</b> (win, animation = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>animation</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>info</b> (win)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KWin.Info)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeContextHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lowerWindow</b> (win)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numberOfDesktops</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>raiseWindow</b> (win)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNameProperty</b> (window, atom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+<tr><td>atom</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveWindow</b> (win)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtendedStrut</b> (win, left_width, left_start, left_end, right_width, right_start, right_end, top_width, top_start, top_end, bottom_width, bottom_start, bottom_end)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>left_width</td><td>int</td><td></td></tr>
+<tr><td>left_start</td><td>int</td><td></td></tr>
+<tr><td>left_end</td><td>int</td><td></td></tr>
+<tr><td>right_width</td><td>int</td><td></td></tr>
+<tr><td>right_start</td><td>int</td><td></td></tr>
+<tr><td>right_end</td><td>int</td><td></td></tr>
+<tr><td>top_width</td><td>int</td><td></td></tr>
+<tr><td>top_start</td><td>int</td><td></td></tr>
+<tr><td>top_end</td><td>int</td><td></td></tr>
+<tr><td>bottom_width</td><td>int</td><td></td></tr>
+<tr><td>bottom_start</td><td>int</td><td></td></tr>
+<tr><td>bottom_end</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcons</b> (win, icon, miniIcon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>miniIcon</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnAllDesktops</b> (win, b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnDesktop</b> (win, desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (win, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>state</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStrut</b> (win, left, right, top, bottom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>left</td><td>int</td><td></td></tr>
+<tr><td>right</td><td>int</td><td></td></tr>
+<tr><td>top</td><td>int</td><td></td></tr>
+<tr><td>bottom</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSystemTrayWindowFor</b> (trayWin, forWin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>trayWin</td><td>WId</td><td></td></tr>
+<tr><td>forWin</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (win, windowType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>windowType</td><td>NET.WindowType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserTime</b> (win, time)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>time</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transientFor</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowInfo</b> (win, properties = 0, properties2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KWin.WindowInfo)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win</td><td>WId</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td>0</td></tr>
+<tr><td>properties2</td><td>ulong</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KWinModule.html b/python/pykde/doc/classref/kdecore/KWinModule.html
new file mode 100644
index 00000000..6103e4e0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KWinModule.html
@@ -0,0 +1,191 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWinModule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWinModule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWinModule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {INFO_DESKTOP = 1, INFO_WINDOWS = 2, INFO_ALL = 32767
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KWinModule</b> (parent, what)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWinModule instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>what</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KWinModule</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWinModule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeWindowChanged</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectNotify</b> (signal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDesktopChanged</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopName</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopNamesChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doNotManage</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasWId</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numberOfDesktops</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numberOfDesktopsChanged</b> (num)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>num</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktopName</b> (desktop, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stackingOrder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<WId>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stackingOrderChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strutChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemTrayWindowAdded</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemTrayWindowRemoved</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemTrayWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<WId>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowAdded</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowChanged</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowChanged</b> (id, properties)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+<tr><td>properties</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowChanged</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowRemoved</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<WId>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>workArea</b> (desktop = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>workArea</b> (excludes, desktop = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>excludes</td><td>QValueList<WId></td><td></td></tr>
+<tr><td>desktop</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>workAreaChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KWordMacroExpander.html b/python/pykde/doc/classref/kdecore/KWordMacroExpander.html
new file mode 100644
index 00000000..66684d53
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KWordMacroExpander.html
@@ -0,0 +1,75 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWordMacroExpander</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWordMacroExpander</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWordMacroExpander <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMacroExpanderBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWordMacroExpander</b> (c = '%')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWordMacroExpander instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td>'%'</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandEscapedMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandMacro</b> (str, ret) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandPlainMacro</b> (str, pos, ret)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>ret</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/KZoneAllocator.html b/python/pykde/doc/classref/kdecore/KZoneAllocator.html
new file mode 100644
index 00000000..0d3d6d9d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/KZoneAllocator.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KZoneAllocator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KZoneAllocator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KZoneAllocator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KZoneAllocator</b> (_blockSize = 131072)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KZoneAllocator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_blockSize</td><td>long</td><td>131072</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBlock</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allocate</b> (_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(void)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_size</td><td>size_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deallocate</b> (ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ptr</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delBlock</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>free_since</b> (ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ptr</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initHash</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertHash</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NET.html b/python/pykde/doc/classref/kdecore/NET.html
new file mode 100644
index 00000000..3c45bd3a
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NET.html
@@ -0,0 +1,92 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NET</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NET</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NET</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {AllTypesMask
+}<li><b>(anonymous)</b> = {OnAllDesktops
+}<li><b>(anonymous)</b> = {AllTypesMask
+}<li><b>Action</b> = {ActionMove, ActionResize, ActionMinimize, ActionShade, ActionStick, ActionMaxVert, ActionMaxHoriz, ActionMax, ActionFullScreen, ActionChangeDesktop, ActionClose
+}<li><b>Direction</b> = {TopLeft, Top, TopRight, Right, BottomRight, Bottom, BottomLeft, Left, Move, KeyboardSize, KeyboardMove, MoveResizeCancel
+}<li><b>Direction</b> = {TopLeft, Top, TopRight, Right, BottomRight, Bottom, BottomLeft, Left, Move, KeyboardSize, KeyboardMove
+}<li><b>Direction</b> = {TopLeft, Top, TopRight, Right, BottomRight, Bottom, BottomLeft, Left, Move
+}<li><b>MappingState</b> = {Visible, Withdrawn, Iconic
+}<li><b>Property</b> = {Supported, ClientList, ClientListStacking, NumberOfDesktops, DesktopGeometry, DesktopViewport, CurrentDesktop, DesktopNames, ActiveWindow, WorkArea, SupportingWMCheck, VirtualRoots, KDESystemTrayWindows, CloseWindow, WMMoveResize, WMName, WMVisibleName, WMDesktop, WMWindowType, WMState, WMStrut, WMIconGeometry, WMIcon, WMPid, WMHandledIcons, WMPing, WMKDESystemTrayWinFor, XAWMState, WMFrameExtents, WMKDEFrameStrut, WMIconName, WMVisibleIconName, WMGeometry
+}<li><b>Property</b> = {Supported, ClientList, ClientListStacking, NumberOfDesktops, DesktopGeometry, DesktopViewport, CurrentDesktop, DesktopNames, ActiveWindow, WorkArea, SupportingWMCheck, VirtualRoots, KDESystemTrayWindows, CloseWindow, WMMoveResize, WMName, WMVisibleName, WMDesktop, WMWindowType, WMState, WMStrut, WMIconGeometry, WMIcon, WMPid, WMHandledIcons, WMPing, WMKDESystemTrayWinFor, XAWMState, WMKDEFrameStrut, WMIconName, WMVisibleIconName, WMGeometry
+}<li><b>Property2</b> = {WM2UserTime = 1, WM2StartupId = 2, WM2TransientFor = 4, WM2GroupLeader = 8, WM2AllowedActions = 16, WM2RestackWindow = 32, WM2MoveResizeWindow = 64, WM2ExtendedStrut = 128, WM2TakeActivity = 256, WM2KDETemporaryRules = 512, WM2WindowClass = 1024, WM2WindowRole = 2048, WM2ClientMachine = 4096, WM2ShowingDesktop = 8192
+}<li><b>Property2</b> = {WM2UserTime, WM2StartupId, WM2TransientFor, WM2GroupLeader, WM2AllowedActions, WM2RestackWindow, WM2MoveResizeWindow, WM2ExtendedStrut, WM2TakeActivity, WM2KDETemporaryRules, WM2WindowClass, WM2WindowRole, WM2ClientMachine
+}<li><b>Property2</b> = {WM2UserTime, WM2StartupId, WM2TransientFor, WM2GroupLeader, WM2AllowedActions, WM2RestackWindow, WM2MoveResizeWindow, WM2ExtendedStrut, WM2TakeActivity, WM2KDETemporaryRules
+}<li><b>Property2</b> = {WM2UserTime, WM2StartupId, WM2TransientFor, WM2GroupLeader, WM2AllowedActions, WM2RestackWindow, WM2MoveResizeWindow
+}<li><b>RequestSource</b> = {FromUnknown, FromApplication, FromTool
+}<li><b>Role</b> = {Client, WindowManager
+}<li><b>State</b> = {Modal, Sticky, MaxVert, MaxHoriz, Max, Shaded, SkipTaskbar, KeepAbove, StaysOnTop, SkipPager, Hidden, FullScreen, KeepBelow, DemandsAttention
+}<li><b>State</b> = {Modal, Sticky, MaxVert, MaxHoriz, Max, Shaded, SkipTaskbar, StaysOnTop, SkipPager
+}<li><b>WindowType</b> = {Unknown, Normal, Desktop, Dock, Toolbar, Menu, Dialog, Override, TopMenu, Tool, Utility, Splash
+}<li><b>WindowType</b> = {Unknown, Normal, Desktop, Dock, Toolbar, Menu, Dialog, Override, TopMenu, Tool
+}<li><b>WindowType</b> = {Unknown, Normal, Desktop, Dock, Tool, Menu, Dialog, Override, Toolbar
+}<li><b>WindowTypeMask</b> = {NormalMask, DesktopMask, DockMask, ToolbarMask, MenuMask, DialogMask, OverrideMask, TopMenuMask, UtilityMask, SplashMask
+}</ul>
+<h3>methods</h3><ul>
+<li><b>timestampCompare</b> (time1, time2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time1</td><td>ulong</td><td></td></tr>
+<tr><td>time2</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timestampDiff</b> (time1_, time2_)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time1_</td><td>ulong</td><td></td></tr>
+<tr><td>time2_</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeMatchesMask</b> (type, mask)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>NET.WindowType</td><td></td></tr>
+<tr><td>mask</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETExtendedStrut.html b/python/pykde/doc/classref/kdecore/NETExtendedStrut.html
new file mode 100644
index 00000000..d02a704f
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETExtendedStrut.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETExtendedStrut</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETExtendedStrut</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETExtendedStrut</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETExtendedStrut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETExtendedStrut instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>bottom_end</td><td>int</td></tr>
+<tr><td>bottom_start</td><td>int</td></tr>
+<tr><td>bottom_width</td><td>int</td></tr>
+<tr><td>left_end</td><td>int</td></tr>
+<tr><td>left_start</td><td>int</td></tr>
+<tr><td>left_width</td><td>int</td></tr>
+<tr><td>right_end</td><td>int</td></tr>
+<tr><td>right_start</td><td>int</td></tr>
+<tr><td>right_width</td><td>int</td></tr>
+<tr><td>top_end</td><td>int</td></tr>
+<tr><td>top_start</td><td>int</td></tr>
+<tr><td>top_width</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETIcon.html b/python/pykde/doc/classref/kdecore/NETIcon.html
new file mode 100644
index 00000000..b4a5f0db
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETIcon.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETIcon</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETIcon</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETIcon</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETIcon instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>data</td><td>uchar*</td></tr>
+<tr><td>size</td><td>NETSize</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETPoint.html b/python/pykde/doc/classref/kdecore/NETPoint.html
new file mode 100644
index 00000000..0c44a148
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETPoint.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETPoint</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETPoint</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETPoint</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETPoint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETPoint instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>x</td><td>int</td></tr>
+<tr><td>y</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETRect.html b/python/pykde/doc/classref/kdecore/NETRect.html
new file mode 100644
index 00000000..6c2369d1
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETRect.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETRect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETRect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETRect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>pos</td><td>NETPoint</td></tr>
+<tr><td>size</td><td>NETSize</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETRootInfo.html b/python/pykde/doc/classref/kdecore/NETRootInfo.html
new file mode 100644
index 00000000..c192a7ed
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETRootInfo.html
@@ -0,0 +1,424 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETRootInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETRootInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETRootInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>NET </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {PROTOCOLS, WINDOW_TYPES, STATES, PROTOCOLS2, ACTIONS, PROPERTIES_SIZE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>NETRootInfo</b> (supportWindow, wmName, properties, screen = -1, doActivate = True)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supportWindow</td><td>Window</td><td></td></tr>
+<tr><td>wmName</td><td>a Python string</td><td></td></tr>
+<tr><td>properties</td><td>a Python list</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>doActivate</td><td>bool</td><td>True</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo</b> (supportWindow, wmName, properties, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supportWindow</td><td>Window</td><td></td></tr>
+<tr><td>wmName</td><td>a Python string</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>doActivate</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo</b> (properties, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>doActivate</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo</b> (properties, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+<tr><td>doActivate</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo</b> (rootinfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rootinfo</td><td>NETRootInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addClient</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addSystemTrayWin</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeActiveWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeCurrentDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeDesktopGeometry</b> (desktop, geom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>geom</td><td>NETSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeDesktopViewport</b> (desktop, viewport)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>viewport</td><td>NETPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeNumberOfDesktops</b> (numberOfDesktops)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numberOfDesktops</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of Window,</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientListCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientListStacking</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of Window,</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientListStackingCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeWindowRequest</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopGeometry</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopName</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopViewport</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETPoint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (event, properties_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (property)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>property</td><td>NET.Property</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (property)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>property</td><td>NET.Property2</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>NET.WindowType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>NET.State</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>NET.Action</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeSystemTrayWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of Window,</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeSystemTrayWindowsCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveResize</b> (window, x_root, y_root, direction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>x_root</td><td>int</td><td></td></tr>
+<tr><td>y_root</td><td>int</td><td></td></tr>
+<tr><td>direction</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveResizeRequest</b> (window, x_root, y_root, direction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>x_root</td><td>int</td><td></td></tr>
+<tr><td>y_root</td><td>int</td><td></td></tr>
+<tr><td>direction</td><td>Direction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveResizeWindowRequest</b> (window, flags, x, y, width, height)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numberOfDesktops</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>passedProperties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of ulong,</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeClient</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeSystemTrayWin</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restackRequest</b> (window, source, above, detail, timestamp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>source</td><td>RequestSource</td><td></td></tr>
+<tr><td>above</td><td>Window</td><td></td></tr>
+<tr><td>detail</td><td>int</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restackRequest</b> (window, above, detail)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>above</td><td>Window</td><td></td></tr>
+<tr><td>detail</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>screenNumber</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveWindow</b> (window, src, timestamp, active_window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>src</td><td>NET.RequestSource</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+<tr><td>active_window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClientList</b> (windows)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>windows</td><td>a Python list of Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClientListStacking</b> (windows)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>windows</td><td>a Python list of Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktopGeometry</b> (desktop, geometry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>geometry</td><td>NETSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktopName</b> (desktop, desktopName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>desktopName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktopViewport</b> (desktop, viewport)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>viewport</td><td>NETPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKDESystemTrayWindows</b> (windows)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>windows</td><td>a Python list of Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNumberOfDesktops</b> (numberOfDesktops)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>numberOfDesktops</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowingDesktop</b> (showing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showing</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVirtualRoots</b> (windows)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>windows</td><td>a Python list of Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWorkArea</b> (desktop, workArea)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+<tr><td>workArea</td><td>NETRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showingDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supported</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedProperties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of ulong,</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtualRoots</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of Window,</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtualRootsCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wmName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>workArea</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x11Display</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Display)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETRootInfo2.html b/python/pykde/doc/classref/kdecore/NETRootInfo2.html
new file mode 100644
index 00000000..dd3adf17
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETRootInfo2.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETRootInfo2</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETRootInfo2</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETRootInfo2</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>NETRootInfo </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETRootInfo2</b> (window, rootWindow, properties, role, a3 = Client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo2 instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>rootWindow</td><td>Window</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>role</td><td>int</td><td></td></tr>
+<tr><td>a3</td><td>Role</td><td>Client</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo2</b> (display, properties_size, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeActiveWindow</b> (window, src, timestamp, active_window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>src</td><td>NET.RequestSource</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+<tr><td>active_window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotPing</b> (window, timestamp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveResizeWindow</b> (window, flags, x, y, width, height)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restackWindow</b> (window, above, detail)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>above</td><td>Window</td><td></td></tr>
+<tr><td>detail</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendPing</b> (window, timestamp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETRootInfo3.html b/python/pykde/doc/classref/kdecore/NETRootInfo3.html
new file mode 100644
index 00000000..570f1d67
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETRootInfo3.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETRootInfo3</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETRootInfo3</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETRootInfo3</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>NETRootInfo2 </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETRootInfo3</b> (window, rootWindow, properties, role, a3 = Client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo3 instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>rootWindow</td><td>Window</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>role</td><td>int</td><td></td></tr>
+<tr><td>a3</td><td>Role</td><td>Client</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo3</b> (display, properties_size, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotTakeActivity</b> (window, timestamp, flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+<tr><td>flags</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restackWindow</b> (window, source, above, detail, timestamp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>source</td><td>RequestSource</td><td></td></tr>
+<tr><td>above</td><td>Window</td><td></td></tr>
+<tr><td>detail</td><td>int</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>takeActivity</b> (window, timestamp, flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>timestamp</td><td>Time</td><td></td></tr>
+<tr><td>flags</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETRootInfo4.html b/python/pykde/doc/classref/kdecore/NETRootInfo4.html
new file mode 100644
index 00000000..cda8e97a
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETRootInfo4.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETRootInfo4</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETRootInfo4</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETRootInfo4</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>NETRootInfo3 </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETRootInfo4</b> (window, rootWindow, properties, role, a3 = Client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETRootInfo4 instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>rootWindow</td><td>Window</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>role</td><td>int</td><td></td></tr>
+<tr><td>a3</td><td>Role</td><td>Client</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETRootInfo4</b> (display, properties_size, screen = -1, doActivate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeShowingDesktop</b> (showing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showing</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETSize.html b/python/pykde/doc/classref/kdecore/NETSize.html
new file mode 100644
index 00000000..73b96527
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETSize.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETSize</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETSize</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETSize</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETSize instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>height</td><td>int</td></tr>
+<tr><td>width</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETStrut.html b/python/pykde/doc/classref/kdecore/NETStrut.html
new file mode 100644
index 00000000..9b6f7aa3
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETStrut.html
@@ -0,0 +1,51 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETStrut</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETStrut</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETStrut</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NETStrut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETStrut instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>bottom</td><td>int</td></tr>
+<tr><td>left</td><td>int</td></tr>
+<tr><td>right</td><td>int</td></tr>
+<tr><td>top</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/NETWinInfo.html b/python/pykde/doc/classref/kdecore/NETWinInfo.html
new file mode 100644
index 00000000..027f8ad0
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/NETWinInfo.html
@@ -0,0 +1,315 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class NETWinInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class NETWinInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdecore</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>NETWinInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>NET </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {PROTOCOLS, PROTOCOLS2, PROPERTIES_SIZE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>NETWinInfo</b> (window, rootWindow, properties, role, a3 = Client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETWinInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+<tr><td>rootWindow</td><td>Window</td><td></td></tr>
+<tr><td>properties</td><td>ulong</td><td></td></tr>
+<tr><td>role</td><td>int</td><td></td></tr>
+<tr><td>a3</td><td>Role</td><td>Client</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETWinInfo</b> (window (Window), properties (ulong) = Client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window (Window)</td><td>ootWindow (Window</td><td></td></tr>
+<tr><td>properties (ulong)</td><td>ole (Role</td><td>Client</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NETWinInfo</b> (wininfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NETWinInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>wininfo</td><td>NETWinInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowedActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeState</b> (state, mask)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>ulong</td><td></td></tr>
+<tr><td>mask</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientMachine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (event, properties_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extendedStrut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETExtendedStrut)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupLeader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handledIcons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasNETSupport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (width = -1, height = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeGeometry</b> (frame, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>frame</td><td>NETRect</td><td></td></tr>
+<tr><td>window</td><td>NETRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kdeSystemTrayWinFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mappingState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(MappingState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>passedProperties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Python list of ulong,</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>properties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllowedActions</b> (actions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesktop</b> (desktop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktop</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtendedStrut</b> (extended_strut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>extended_strut</td><td>NETExtendedStrut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameExtents</b> (strut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>strut</td><td>NETStrut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHandledIcons</b> (handled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>handled</td><td>Bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon, replace = True)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconGeometry</b> (geometry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>geometry</td><td>NETRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKDEFrameStrut</b> (strut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>strut</td><td>NETStrut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKDESystemTrayWinFor</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>Window</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPid</b> (pid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pid</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStartupId</b> (startup_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startup_id</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (state, mask)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>ulong</td><td></td></tr>
+<tr><td>mask</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStrut</b> (strut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>strut</td><td>NETStrut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserTime</b> (time)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>Time</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVisibleIconName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVisibleName</b> (visibleName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>visibleName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindowType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>WindowType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startupId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(NETStrut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transientFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Window)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userTime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Time)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleIconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowClassClass</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowClassName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowRole</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowType</b> (supported_types)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WindowType)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supported_types</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WindowType)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>OnAllDesktops</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/index.html b/python/pykde/doc/classref/kdecore/index.html
new file mode 100644
index 00000000..af08ab11
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/index.html
@@ -0,0 +1,180 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kdecore</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdecore Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kdecore-globals.html">kdecore Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KAboutData - KConfigSkeleton.ItemSize</th></tr>
+<tr ><td><a href="KAboutData.html">KAboutData</a></td></tr>
+<tr ><td><a href="KAboutPerson.html">KAboutPerson</a></td></tr>
+<tr ><td><a href="KAboutTranslator.html">KAboutTranslator</a></td></tr>
+<tr ><td><a href="KAccel.html">KAccel</a></td></tr>
+<tr ><td><a href="KAccelAction.html">KAccelAction</a></td></tr>
+<tr ><td><a href="KAccelActions.html">KAccelActions</a></td></tr>
+<tr ><td><a href="KAccelBase.html"><i>KAccelBase</i></a></td></tr>
+<tr ><td><a href="KAccelShortcutList.html">KAccelShortcutList</a></td></tr>
+<tr ><td><a href="KApplication.html">KApplication</a></td></tr>
+<tr ><td><a href="KAsyncIO.html"><i>KAsyncIO</i></a></td></tr>
+<tr ><td><a href="KAudioPlayer.html">KAudioPlayer</a></td></tr>
+<tr ><td><a href="KBufferedIO.html"><i>KBufferedIO</i></a></td></tr>
+<tr ><td><a href="KCalendarSystem.html"><i>KCalendarSystem</i></a></td></tr>
+<tr ><td><a href="KCalendarSystemFactory.html">KCalendarSystemFactory</a></td></tr>
+<tr ><td><a href="KCatalogue.html">KCatalogue</a></td></tr>
+<tr ><td><a href="KCharMacroExpander.html"><i>KCharMacroExpander</i></a></td></tr>
+<tr ><td><a href="KCharsets.html">KCharsets</a></td></tr>
+<tr ><td><a href="KClipboardSynchronizer.html">KClipboardSynchronizer</a></td></tr>
+<tr ><td><a href="KCmdLineArgs.html">KCmdLineArgs</a></td></tr>
+<tr ><td><a href="KCmdLineOptions.html">KCmdLineOptions</a></td></tr>
+<tr ><td><a href="KCodecs.html">KCodecs</a></td></tr>
+<tr ><td><a href="KCompletion.html">KCompletion</a></td></tr>
+<tr ><td><a href="KCompletionBase.html"><i>KCompletionBase</i></a></td></tr>
+<tr ><td><a href="KConfig.html">KConfig</a></td></tr>
+<tr ><td><a href="KConfigBackEnd.html"><i>KConfigBackEnd</i></a></td></tr>
+<tr ><td><a href="KConfigBase.html"><i>KConfigBase</i></a></td></tr>
+<tr ><td><a href="KConfigDialogManager.html">KConfigDialogManager</a></td></tr>
+<tr ><td><a href="KConfigGroup.html">KConfigGroup</a></td></tr>
+<tr ><td><a href="KConfigGroupSaver.html">KConfigGroupSaver</a></td></tr>
+<tr ><td><a href="KConfigINIBackEnd.html">KConfigINIBackEnd</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.html">KConfigSkeleton</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemBool.html">KConfigSkeleton.ItemBool</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemColor.html">KConfigSkeleton.ItemColor</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemDateTime.html">KConfigSkeleton.ItemDateTime</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemDouble.html">KConfigSkeleton.ItemDouble</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemEnum.html">KConfigSkeleton.ItemEnum</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemEnum.Choice.html">KConfigSkeleton.ItemEnum.Choice</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemFont.html">KConfigSkeleton.ItemFont</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemInt.html">KConfigSkeleton.ItemInt</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemInt64.html">KConfigSkeleton.ItemInt64</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemIntList.html">KConfigSkeleton.ItemIntList</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemLong.html">KConfigSkeleton.ItemLong</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemPassword.html">KConfigSkeleton.ItemPassword</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemPath.html">KConfigSkeleton.ItemPath</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemPathList.html">KConfigSkeleton.ItemPathList</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemPoint.html">KConfigSkeleton.ItemPoint</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemProperty.html">KConfigSkeleton.ItemProperty</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemRect.html">KConfigSkeleton.ItemRect</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemSize.html">KConfigSkeleton.ItemSize</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KConfigSkeleton.ItemString - KProcIO</th></tr>
+<tr ><td><a href="KConfigSkeleton.ItemString.html">KConfigSkeleton.ItemString</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemStringList.html">KConfigSkeleton.ItemStringList</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemUInt.html">KConfigSkeleton.ItemUInt</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemUInt64.html">KConfigSkeleton.ItemUInt64</a></td></tr>
+<tr ><td><a href="KConfigSkeleton.ItemULong.html">KConfigSkeleton.ItemULong</a></td></tr>
+<tr ><td><a href="KConfigSkeletonItem.html"><i>KConfigSkeletonItem</i></a></td></tr>
+<tr ><td><a href="KCrash.html">KCrash</a></td></tr>
+<tr ><td><a href="KDCOPPropertyProxy.html">KDCOPPropertyProxy</a></td></tr>
+<tr ><td><a href="KDE.html">KDE</a></td></tr>
+<tr ><td><a href="KDesktopFile.html">KDesktopFile</a></td></tr>
+<tr ><td><a href="KEntry.html">KEntry</a></td></tr>
+<tr ><td><a href="KEntryKey.html">KEntryKey</a></td></tr>
+<tr ><td><a href="KGlobal.html">KGlobal</a></td></tr>
+<tr ><td><a href="KGlobalAccel.html">KGlobalAccel</a></td></tr>
+<tr ><td><a href="KGlobalSettings.html">KGlobalSettings</a></td></tr>
+<tr ><td><a href="KGlobalSettings.KMouseSettings.html">KGlobalSettings.KMouseSettings</a></td></tr>
+<tr ><td><a href="KIDNA.html">KIDNA</a></td></tr>
+<tr ><td><a href="KIPC.html">KIPC</a></td></tr>
+<tr ><td><a href="KIcon.html">KIcon</a></td></tr>
+<tr ><td><a href="KIconEffect.html">KIconEffect</a></td></tr>
+<tr ><td><a href="KIconLoader.html">KIconLoader</a></td></tr>
+<tr ><td><a href="KIconTheme.html">KIconTheme</a></td></tr>
+<tr ><td><a href="KInstance.html">KInstance</a></td></tr>
+<tr ><td><a href="KKey.html">KKey</a></td></tr>
+<tr ><td><a href="KKeyNative.html">KKeyNative</a></td></tr>
+<tr ><td><a href="KKeySequence.html">KKeySequence</a></td></tr>
+<tr ><td><a href="KKeyServer.html">KKeyServer</a></td></tr>
+<tr ><td><a href="KKeyServer.CodeMod.html">KKeyServer.CodeMod</a></td></tr>
+<tr ><td><a href="KKeyServer.Key.html">KKeyServer.Key</a></td></tr>
+<tr ><td><a href="KKeyServer.Sym.html">KKeyServer.Sym</a></td></tr>
+<tr ><td><a href="KKeyServer.Variations.html">KKeyServer.Variations</a></td></tr>
+<tr ><td><a href="KLibFactory.html">KLibFactory</a></td></tr>
+<tr ><td><a href="KLibLoader.html">KLibLoader</a></td></tr>
+<tr ><td><a href="KLibrary.html">KLibrary</a></td></tr>
+<tr ><td><a href="KLocale.html">KLocale</a></td></tr>
+<tr ><td><a href="KLockFile.html">KLockFile</a></td></tr>
+<tr ><td><a href="KMD4.html">KMD4</a></td></tr>
+<tr ><td><a href="KMD5.html">KMD5</a></td></tr>
+<tr ><td><a href="KMacroExpander.html">KMacroExpander</a></td></tr>
+<tr ><td><a href="KMacroExpanderBase.html">KMacroExpanderBase</a></td></tr>
+<tr ><td><a href="KMimeSourceFactory.html">KMimeSourceFactory</a></td></tr>
+<tr ><td><a href="KMountPoint.html">KMountPoint</a></td></tr>
+<tr ><td><a href="KMultipleDrag.html">KMultipleDrag</a></td></tr>
+<tr ><td><a href="KNotifyClient.html">KNotifyClient</a></td></tr>
+<tr ><td><a href="KNotifyClient.Instance.html">KNotifyClient.Instance</a></td></tr>
+<tr ><td><a href="KPalette.html">KPalette</a></td></tr>
+<tr ><td><a href="KPixmapProvider.html"><i>KPixmapProvider</i></a></td></tr>
+<tr ><td><a href="KProcIO.html">KProcIO</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KProcess - NETWinInfo</th></tr>
+<tr ><td><a href="KProcess.html">KProcess</a></td></tr>
+<tr ><td><a href="KProcessController.html">KProcessController</a></td></tr>
+<tr ><td><a href="KRFCDate.html">KRFCDate</a></td></tr>
+<tr ><td><a href="KRandomSequence.html">KRandomSequence</a></td></tr>
+<tr ><td><a href="KRegExp.html">KRegExp</a></td></tr>
+<tr ><td><a href="KRootProp.html">KRootProp</a></td></tr>
+<tr ><td><a href="KSaveFile.html">KSaveFile</a></td></tr>
+<tr ><td><a href="KSelectionOwner.html">KSelectionOwner</a></td></tr>
+<tr ><td><a href="KSelectionWatcher.html">KSelectionWatcher</a></td></tr>
+<tr ><td><a href="KSessionManaged.html">KSessionManaged</a></td></tr>
+<tr ><td><a href="KShared.html">KShared</a></td></tr>
+<tr ><td><a href="KSharedConfig.html">KSharedConfig</a></td></tr>
+<tr ><td><a href="KShell.html">KShell</a></td></tr>
+<tr ><td><a href="KShellProcess.html">KShellProcess</a></td></tr>
+<tr ><td><a href="KShortcut.html">KShortcut</a></td></tr>
+<tr ><td><a href="KShortcutList.html"><i>KShortcutList</i></a></td></tr>
+<tr ><td><a href="KSimpleConfig.html">KSimpleConfig</a></td></tr>
+<tr ><td><a href="KStartupInfo.html">KStartupInfo</a></td></tr>
+<tr ><td><a href="KStartupInfoData.html">KStartupInfoData</a></td></tr>
+<tr ><td><a href="KStartupInfoId.html">KStartupInfoId</a></td></tr>
+<tr ><td><a href="KStaticDeleterBase.html"><i>KStaticDeleterBase</i></a></td></tr>
+<tr ><td><a href="KStdAccel.html">KStdAccel</a></td></tr>
+<tr ><td><a href="KStdAccel.ShortcutList.html">KStdAccel.ShortcutList</a></td></tr>
+<tr ><td><a href="KStringHandler.html">KStringHandler</a></td></tr>
+<tr ><td><a href="KTempDir.html">KTempDir</a></td></tr>
+<tr ><td><a href="KTempFile.html">KTempFile</a></td></tr>
+<tr ><td><a href="KTimezone.html">KTimezone</a></td></tr>
+<tr ><td><a href="KTimezoneDetails.html">KTimezoneDetails</a></td></tr>
+<tr ><td><a href="KTimezoneSource.html">KTimezoneSource</a></td></tr>
+<tr ><td><a href="KTimezones.html">KTimezones</a></td></tr>
+<tr ><td><a href="KURL.html">KURL</a></td></tr>
+<tr ><td><a href="KURL.List.html">KURL.List</a></td></tr>
+<tr ><td><a href="KURLDrag.html">KURLDrag</a></td></tr>
+<tr ><td><a href="KUniqueApplication.html">KUniqueApplication</a></td></tr>
+<tr ><td><a href="KWordMacroExpander.html"><i>KWordMacroExpander</i></a></td></tr>
+<tr ><td><a href="KZoneAllocator.html">KZoneAllocator</a></td></tr>
+<tr ><td><a href="NET.html">NET</a></td></tr>
+<tr ><td><a href="NETExtendedStrut.html">NETExtendedStrut</a></td></tr>
+<tr ><td><a href="NETIcon.html">NETIcon</a></td></tr>
+<tr ><td><a href="NETPoint.html">NETPoint</a></td></tr>
+<tr ><td><a href="NETRect.html">NETRect</a></td></tr>
+<tr ><td><a href="NETRootInfo.html">NETRootInfo</a></td></tr>
+<tr ><td><a href="NETRootInfo2.html">NETRootInfo2</a></td></tr>
+<tr ><td><a href="NETRootInfo3.html">NETRootInfo3</a></td></tr>
+<tr ><td><a href="NETRootInfo4.html">NETRootInfo4</a></td></tr>
+<tr ><td><a href="NETSize.html">NETSize</a></td></tr>
+<tr ><td><a href="NETStrut.html">NETStrut</a></td></tr>
+<tr ><td><a href="NETWinInfo.html">NETWinInfo</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdecore/kdecore-globals.html b/python/pykde/doc/classref/kdecore/kdecore-globals.html
new file mode 100644
index 00000000..9e76247d
--- /dev/null
+++ b/python/pykde/doc/classref/kdecore/kdecore-globals.html
@@ -0,0 +1,209 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kdecore globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdecore Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>global methods</h3><ul>
+<li><b>BarIcon</b> (name, size = 0, state = KIcon .DefaultState, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>BarIcon</b> (name, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>BarIconSet</b> (name, size = 0, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DesktopIcon</b> (name, size = 0, state = KIcon .DefaultState, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DesktopIcon</b> (name, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DesktopIconSet</b> (name, size = 0, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>IconSize</b> (group, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MainBarIcon</b> (name, size = 0, state = KIcon .DefaultState, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MainBarIcon</b> (name, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MainBarIconSet</b> (name, size = 0, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>SmallIcon</b> (name, size = 0, state = KIcon .DefaultState, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>SmallIcon</b> (name, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>SmallIconSet</b> (name, size = 0, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UserIcon</b> (name, state = KIcon .DefaultState, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>state</td><td>int</td><td>KIcon .DefaultState</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UserIcon</b> (name, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UserIconSet</b> (name, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkAccess</b> (pathname, mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>i18n</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>i18n</b> (comment, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>comment</td><td>char</td><td></td></tr>
+<tr><td>text</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>i18n</b> (singular, plural, n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>singular</td><td>char</td><td></td></tr>
+<tr><td>plural</td><td>char</td><td></td></tr>
+<tr><td>n</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kasciistricmp</b> (str1, str2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str1</td><td>char</td><td></td></tr>
+<tr><td>str2</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testKEntryMap</b> (dict)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<KEntryKey,KEntry),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dict</td><td>KEntryMap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlcmp</b> (_url1, _url2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url1</td><td>QString</td><td></td></tr>
+<tr><td>_url2</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlcmp</b> (_url1, _url2, _ignore_trailing, _ignore_ref)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url1</td><td>QString</td><td></td></tr>
+<tr><td>_url2</td><td>QString</td><td></td></tr>
+<tr><td>_ignore_trailing</td><td>bool</td><td></td></tr>
+<tr><td>_ignore_ref</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KCPUInfo.html b/python/pykde/doc/classref/kdefx/KCPUInfo.html
new file mode 100644
index 00000000..e39f5093
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KCPUInfo.html
@@ -0,0 +1,52 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCPUInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCPUInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCPUInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Extensions</b> = {IntelMMX, IntelSSE, IntelSSE2, AMD3DNOW, AltiVec
+}</ul>
+<h3>methods</h3><ul>
+<li><b>haveExtension</b> (extension)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>extension</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KImageEffect.html b/python/pykde/doc/classref/kdefx/KImageEffect.html
new file mode 100644
index 00000000..9adb350d
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KImageEffect.html
@@ -0,0 +1,523 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KImageEffect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KImageEffect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KImageEffect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>BumpmapType</b> = {Linear, Spherical, Sinuosidal
+}<li><b>Disposition</b> = {NoImage, Centered, Tiled, CenterTiled, CenteredMaxpect, TiledMaxpect, Scaled, CenteredAutoFit
+}<li><b>GradientType</b> = {VerticalGradient, HorizontalGradient, DiagonalGradient, CrossDiagonalGradient, PyramidGradient, RectangleGradient, PipeCrossGradient, EllipticGradient
+}<li><b>Lighting</b> = {NorthLite, NWLite, WestLite, SWLite, SouthLite, SELite, EastLite, NELite
+}<li><b>ModulationType</b> = {Intensity, Saturation, HueShift, Contrast
+}<li><b>NoiseType</b> = {UniformNoise, GaussianNoise, MultiplicativeGaussianNoise, ImpulseNoise, LaplacianNoise, PoissonNoise
+}<li><b>RGBComponent</b> = {Red, Green, Blue, Gray, All
+}<li><b>RotateDirection</b> = {Rotate90, Rotate180, Rotate270
+}</ul>
+<h3>methods</h3><ul>
+<li><b>addNoise</b> (src, type = GaussianNoise)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>type</td><td>KImageEffect.NoiseType</td><td>GaussianNoise</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (clr, dst, opacity)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>clr</td><td>QColor</td><td></td></tr>
+<tr><td>dst</td><td>QImage</td><td></td></tr>
+<tr><td>opacity</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (src, dst, opacity)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>dst</td><td>QImage</td><td></td></tr>
+<tr><td>opacity</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (image, initial_intensity, bgnd, eff, anti_dir = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>initial_intensity</td><td>float</td><td></td></tr>
+<tr><td>bgnd</td><td>QColor</td><td></td></tr>
+<tr><td>eff</td><td>KImageEffect.GradientType</td><td></td></tr>
+<tr><td>anti_dir</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (image1, image2, gt, xf = 100, yf = 100)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image1</td><td>QImage</td><td></td></tr>
+<tr><td>image2</td><td>QImage</td><td></td></tr>
+<tr><td>gt</td><td>KImageEffect.GradientType</td><td></td></tr>
+<tr><td>xf</td><td>int</td><td>100</td></tr>
+<tr><td>yf</td><td>int</td><td>100</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (image1, image2, blendImage, channel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image1</td><td>QImage</td><td></td></tr>
+<tr><td>image2</td><td>QImage</td><td></td></tr>
+<tr><td>blendImage</td><td>QImage</td><td></td></tr>
+<tr><td>channel</td><td>KImageEffect.RGBComponent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (upper, lower, output)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+<tr><td>output</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blend</b> (x, y, upper, lower, output)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) x (int) y (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+<tr><td>output</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blendOnLower</b> (x, y, upper, lower)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blendOnLower</b> (upper, upperOffset, lower, lowerRect)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>upperOffset</td><td>QPoint</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+<tr><td>lowerRect</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blendOnLower</b> (upper, upperOffset, lower, lowerRect, opacity)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>upperOffset</td><td>QPoint</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+<tr><td>lowerRect</td><td>QRect</td><td></td></tr>
+<tr><td>opacity</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blendOnLower</b> (upper, lower, disposition, opacity)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+<tr><td>lower</td><td>QImage</td><td></td></tr>
+<tr><td>disposition</td><td>KImageEffect.Disposition</td><td></td></tr>
+<tr><td>opacity</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> (src, radius, sigma)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td></td></tr>
+<tr><td>sigma</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> (src, factor = 50.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>factor</td><td>double</td><td>50.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bumpmap</b> (img, map, azimuth, elevation, depth, xofs, yofs, waterlevel, ambient, compensate, invert, type, tiled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>map</td><td>QImage</td><td></td></tr>
+<tr><td>azimuth</td><td>double</td><td></td></tr>
+<tr><td>elevation</td><td>double</td><td></td></tr>
+<tr><td>depth</td><td>int</td><td></td></tr>
+<tr><td>xofs</td><td>int</td><td></td></tr>
+<tr><td>yofs</td><td>int</td><td></td></tr>
+<tr><td>waterlevel</td><td>int</td><td></td></tr>
+<tr><td>ambient</td><td>int</td><td></td></tr>
+<tr><td>compensate</td><td>bool</td><td></td></tr>
+<tr><td>invert</td><td>bool</td><td></td></tr>
+<tr><td>type</td><td>KImageEffect.BumpmapType</td><td></td></tr>
+<tr><td>tiled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>channelIntensity</b> (image, percent, channel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>percent</td><td>float</td><td></td></tr>
+<tr><td>channel</td><td>KImageEffect.RGBComponent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charcoal</b> (src, radius, sigma)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td></td></tr>
+<tr><td>sigma</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charcoal</b> (src, factor = 50.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>factor</td><td>double</td><td>50.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>computeDestinationRect</b> (lowerSize, disposition, upper)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lowerSize</td><td>QSize</td><td></td></tr>
+<tr><td>disposition</td><td>KImageEffect.Disposition</td><td></td></tr>
+<tr><td>upper</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contrast</b> (image, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contrastHSV</b> (img, sharpen = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>sharpen</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desaturate</b> (image, desat = 0.3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>desat</td><td>float</td><td>0.3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>despeckle</b> (src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dither</b> (image, palette, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>edge</b> (src, radius = 50.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td>50.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emboss</b> (src, radius, sigma)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td></td></tr>
+<tr><td>sigma</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emboss</b> (src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>equalize</b> (img)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fade</b> (image, val, color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>val</td><td>float</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flatten</b> (image, ca, cb, ncols = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>ncols</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gradient</b> (size, ca, cb, type, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>type</td><td>KImageEffect.GradientType</td><td></td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hash</b> (image, lite = NorthLite, spacing = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>lite</td><td>KImageEffect.Lighting</td><td>NorthLite</td></tr>
+<tr><td>spacing</td><td>uint</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>implode</b> (src, factor = 30.0, background = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>factor</td><td>double</td><td>30.0</td></tr>
+<tr><td>background</td><td>uint</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>intensity</b> (image, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>percent</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modulate</b> (image, modImage, reverse, type, factor, channel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>modImage</td><td>QImage</td><td></td></tr>
+<tr><td>reverse</td><td>bool</td><td></td></tr>
+<tr><td>type</td><td>KImageEffect.ModulationType</td><td></td></tr>
+<tr><td>factor</td><td>int</td><td></td></tr>
+<tr><td>channel</td><td>KImageEffect.RGBComponent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>normalize</b> (img)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>oilPaint</b> (src, radius = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>oilPaintConvolve</b> (src, radius)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotate</b> (src, r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>r</td><td>KImageEffect.RotateDirection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sample</b> (src, w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedImage</b> (img, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shade</b> (src, color_shading = 1, azimuth = 30.0, elevation = 30.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>color_shading</td><td>bool</td><td>1</td></tr>
+<tr><td>azimuth</td><td>double</td><td>30.0</td></tr>
+<tr><td>elevation</td><td>double</td><td>30.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharpen</b> (src, radius, sigma)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>radius</td><td>double</td><td></td></tr>
+<tr><td>sigma</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharpen</b> (src, factor = 30.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>factor</td><td>double</td><td>30.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>solarize</b> (img, factor = 50.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>factor</td><td>double</td><td>50.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spread</b> (src, amount = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>amount</td><td>uint</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>swirl</b> (src, degrees = 50.0, background = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>degrees</td><td>double</td><td>50.0</td></tr>
+<tr><td>background</td><td>uint</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>threshold</b> (img, value = 128)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>value</td><td>uint</td><td>128</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toGray</b> (image, fast = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+<tr><td>fast</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unbalancedGradient</b> (size, ca, cb, type, xfactor = 100, yfactor = 100, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>type</td><td>KImageEffect.GradientType</td><td></td></tr>
+<tr><td>xfactor</td><td>int</td><td>100</td></tr>
+<tr><td>yfactor</td><td>int</td><td>100</td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wave</b> (src, amplitude = 25.0, frequency = 150.0, background = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+<tr><td>amplitude</td><td>double</td><td>25.0</td></tr>
+<tr><td>frequency</td><td>double</td><td>150.0</td></tr>
+<tr><td>background</td><td>uint</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KPixmap.html b/python/pykde/doc/classref/kdefx/KPixmap.html
new file mode 100644
index 00000000..b28f276f
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KPixmap.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmap</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmap</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmap</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPixmap </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ColorMode</b> = {Auto, Color, Mono, LowColor, WebColor
+}<li><b>GradientMode</b> = {Horizontal, Vertical, Diagonal, CrossDiagonal
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmap instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPixmap</b> (pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmap instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkColorTable</b> (image)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertFromImage</b> (img, conversion_flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>conversion_flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertFromImage</b> (img, mode = WebColor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>mode</td><td>ColorMode</td><td>WebColor</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (fileName, format, conversion_flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>format</td><td>char</td><td></td></tr>
+<tr><td>conversion_flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (fileName, format = 0, mode = WebColor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>format</td><td>char</td><td>0</td></tr>
+<tr><td>mode</td><td>ColorMode</td><td>WebColor</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KPixmapEffect.html b/python/pykde/doc/classref/kdefx/KPixmapEffect.html
new file mode 100644
index 00000000..f84cd9a0
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KPixmapEffect.html
@@ -0,0 +1,178 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapEffect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapEffect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapEffect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>GradientType</b> = {VerticalGradient, HorizontalGradient, DiagonalGradient, CrossDiagonalGradient, PyramidGradient, RectangleGradient, PipeCrossGradient, EllipticGradient
+}<li><b>Lighting</b> = {NorthLite, NWLite, WestLite, SWLite, SouthLite, SELite, EastLite, NELite
+}<li><b>RGBComponent</b> = {Red, Green, Blue
+}</ul>
+<h3>methods</h3><ul>
+<li><b>blend</b> (pixmap, initial_intensity, bgnd, eff, anti_dir = 0, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>initial_intensity</td><td>float</td><td></td></tr>
+<tr><td>bgnd</td><td>QColor</td><td></td></tr>
+<tr><td>eff</td><td>KPixmapEffect.GradientType</td><td></td></tr>
+<tr><td>anti_dir</td><td>bool</td><td>0</td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>channelIntensity</b> (pixmap, ratio, channel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>ratio</td><td>float</td><td></td></tr>
+<tr><td>channel</td><td>KPixmapEffect.RGBComponent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contrast</b> (pixmap, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTiled</b> (pixmap, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desaturate</b> (pixmap, desat = 0.3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>desat</td><td>float</td><td>0.3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dither</b> (pixmap, palette, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>palette</td><td>QColor</td><td></td></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fade</b> (pixmap, val, color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>val</td><td>double</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gradient</b> (pixmap, ca, cb, type, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>type</td><td>KPixmapEffect.GradientType</td><td></td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hash</b> (pixmap, lite = NorthLite, spacing = 0, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>lite</td><td>KPixmapEffect.Lighting</td><td>NorthLite</td></tr>
+<tr><td>spacing</td><td>uint</td><td>0</td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>intensity</b> (pixmap, ratio)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>ratio</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pattern</b> (pixmap, size, ca, cb, ncols = 8)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>ncols</td><td>int</td><td>8</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedPixmap</b> (pixmap, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toGray</b> (pixmap, fast = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>fast</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unbalancedGradient</b> (pixmap, ca, cb, type, xfactor = 100, yfactor = 100, ncols = 3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>KPixmap</td><td></td></tr>
+<tr><td>ca</td><td>QColor</td><td></td></tr>
+<tr><td>cb</td><td>QColor</td><td></td></tr>
+<tr><td>type</td><td>KPixmapEffect.GradientType</td><td></td></tr>
+<tr><td>xfactor</td><td>int</td><td>100</td></tr>
+<tr><td>yfactor</td><td>int</td><td>100</td></tr>
+<tr><td>ncols</td><td>int</td><td>3</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KPixmapSplitter.html b/python/pykde/doc/classref/kdefx/KPixmapSplitter.html
new file mode 100644
index 00000000..65d21b48
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KPixmapSplitter.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapSplitter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapSplitter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapSplitter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPixmapSplitter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmapSplitter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>coordinates</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>coordinates</b> (ch)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ch</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHSpacing</b> (spacing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>spacing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVSpacing</b> (spacing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>spacing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/KStyle.html b/python/pykde/doc/classref/kdefx/KStyle.html
new file mode 100644
index 00000000..82bff4d1
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/KStyle.html
@@ -0,0 +1,212 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStyle</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStyle</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdefx</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStyle</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCommonStyle </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>KStyleOption</b> = {Default, AllowMenuTransparency, FilledFrameWorkaround
+}<li><b>KStylePixelMetric</b> = {KPM_MenuItemSeparatorHeight, KPM_MenuItemHMargin, KPM_MenuItemVMargin, KPM_MenuItemHFrame, KPM_MenuItemVFrame, KPM_MenuItemCheckMarkHMargin, KPM_MenuItemArrowHMargin, KPM_MenuItemTabSpacing, KPM_ListViewBranchThickness
+}<li><b>KStylePrimitive</b> = {KPE_DockWindowHandle, KPE_ToolBarHandle, KPE_GeneralHandle, KPE_SliderGroove, KPE_SliderHandle, KPE_ListViewExpander, KPE_ListViewBranch
+}<li><b>KStyleScrollBarType</b> = {WindowsStyleScrollBar, PlatinumStyleScrollBar, ThreeButtonScrollBar, NextStyleScrollBar
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KStyle</b> (flags = KStyle .Default, sbtype = KStyle .WindowsStyleScrollBar)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStyle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>KStyle.KStyleFlags</td><td>KStyle .Default</td></tr>
+<tr><td>sbtype</td><td>KStyle.KStyleScrollBarType</td><td>KStyle .WindowsStyleScrollBar</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KStyle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStyle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultStyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawComplexControl</b> (control, p, widget, r, cg, flags = Style_Default, controls = SC_All, active = SC_None, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>control</td><td>ComplexControl</td><td></td></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>flags</td><td>SFlags</td><td>Style_Default</td></tr>
+<tr><td>controls</td><td>SCFlags</td><td>SC_All</td></tr>
+<tr><td>active</td><td>SCFlags</td><td>SC_None</td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawControl</b> (element, p, widget, r, cg, flags = Style_Default, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>element</td><td>ControlElement</td><td></td></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>flags</td><td>SFlags</td><td>Style_Default</td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawKStylePrimitive</b> (kpe, p, widget, r, cg, flags = Style_Default, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>kpe</td><td>KStyle.KStylePrimitive</td><td></td></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>flags</td><td>SFlags</td><td>Style_Default</td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawPrimitive</b> (pe, p, r, cg, flags = Style_Default, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pe</td><td>PrimitiveElement</td><td></td></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>flags</td><td>SFlags</td><td>Style_Default</td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (object, event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kPixelMetric</b> (kpm, widget = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>kpm</td><td>KStyle.KStylePixelMetric</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixelMetric</b> (m, widget = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>PixelMetric</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>polish</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>polishPopupMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>querySubControl</b> (control, widget, pos, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(SubControl)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>control</td><td>ComplexControl</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>querySubControlMetrics</b> (control, widget, sc, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>control</td><td>ComplexControl</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>sc</td><td>SubControl</td><td></td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>renderMenuBlendPixmap</b> (pix, cg, popup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pix</td><td>KPixmap</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScrollBarType</b> (sbtype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sbtype</td><td>KStyle.KStyleScrollBarType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleFlags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStyle.KStyleFlags)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleHint</b> (sh, w = 0, opt = QStyleOption (QStyleOption .Default ), shr = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sh</td><td>StyleHint</td><td></td></tr>
+<tr><td>w</td><td>QWidget</td><td>0</td></tr>
+<tr><td>opt</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+<tr><td>shr</td><td>QStyleHintReturn</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stylePixmap</b> (stylepixmap, widget = 0, a0 = QStyleOption (QStyleOption .Default ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stylepixmap</td><td>StylePixmap</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a0</td><td>QStyleOption</td><td>QStyleOption (QStyleOption .Default )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>subRect</b> (r, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>SubRect</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unPolish</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/index.html b/python/pykde/doc/classref/kdefx/index.html
new file mode 100644
index 00000000..fa1f59dc
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/index.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kdefx</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdefx Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kdefx-globals.html">kdefx Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KCPUInfo - KImageEffect</th></tr>
+<tr ><td><a href="KCPUInfo.html">KCPUInfo</a></td></tr>
+<tr ><td><a href="KImageEffect.html">KImageEffect</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KPixmap - KPixmapEffect</th></tr>
+<tr ><td><a href="KPixmap.html">KPixmap</a></td></tr>
+<tr ><td><a href="KPixmapEffect.html">KPixmapEffect</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KPixmapSplitter - KStyle</th></tr>
+<tr ><td><a href="KPixmapSplitter.html">KPixmapSplitter</a></td></tr>
+<tr ><td><a href="KStyle.html">KStyle</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdefx/kdefx-globals.html b/python/pykde/doc/classref/kdefx/kdefx-globals.html
new file mode 100644
index 00000000..7765ab66
--- /dev/null
+++ b/python/pykde/doc/classref/kdefx/kdefx-globals.html
@@ -0,0 +1,151 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kdefx globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdefx Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdefx Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>global methods</h3><ul>
+<li><b>kColorBitmaps</b> (p, g, x, y, lightColor = 0, midColor = 0, midlightColor = 0, darkColor = 0, blackColor = 0, whiteColor = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>lightColor</td><td>QBitmap</td><td>0</td></tr>
+<tr><td>midColor</td><td>QBitmap</td><td>0</td></tr>
+<tr><td>midlightColor</td><td>QBitmap</td><td>0</td></tr>
+<tr><td>darkColor</td><td>QBitmap</td><td>0</td></tr>
+<tr><td>blackColor</td><td>QBitmap</td><td>0</td></tr>
+<tr><td>whiteColor</td><td>QBitmap</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kColorBitmaps</b> (p, g, x, y, w, h, isXBitmaps = 1, lightColor = 0, midColor = 0, midlightColor = 0, darkColor = 0, blackColor = 0, whiteColor = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+<tr><td>isXBitmaps</td><td>bool</td><td>1</td></tr>
+<tr><td>lightColor</td><td>uchar</td><td>0</td></tr>
+<tr><td>midColor</td><td>uchar</td><td>0</td></tr>
+<tr><td>midlightColor</td><td>uchar</td><td>0</td></tr>
+<tr><td>darkColor</td><td>uchar</td><td>0</td></tr>
+<tr><td>blackColor</td><td>uchar</td><td>0</td></tr>
+<tr><td>whiteColor</td><td>uchar</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawBeButton</b> (p, r, g, sunken = 0, fill = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+<tr><td>fill</td><td>QBrush</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawBeButton</b> (p, x, y, w, h, g, sunken = 0, fill = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+<tr><td>fill</td><td>QBrush</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawNextButton</b> (p, r, g, sunken = 0, fill = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+<tr><td>fill</td><td>QBrush</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawNextButton</b> (p, x, y, w, h, g, sunken = 0, fill = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+<tr><td>fill</td><td>QBrush</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawRoundButton</b> (p, r, g, sunken = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawRoundButton</b> (p, x, y, w, h, g, sunken = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+<tr><td>g</td><td>QColorGroup</td><td></td></tr>
+<tr><td>sunken</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kDrawRoundMask</b> (p, x, y, w, h, clear = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+<tr><td>clear</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kRoundMaskRegion</b> (r, x, y, w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>QRegion</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrBase.html b/python/pykde/doc/classref/kdeprint/DrBase.html
new file mode 100644
index 00000000..4e94fd06
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrBase.html
@@ -0,0 +1,137 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Type</b> = {Base = 0, Main, ChoiceGroup, Group, String, Integer, Float, List, Boolean
+}</ul>
+<h3>methods</h3><ul>
+<li><b>DrBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrBase instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>conflict</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createItem</b> (parent, after = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptions</b> (opts, incldef = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>incldef</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>has</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prettyText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>set</b> (key, val)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>val</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConflict</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase.Type)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrBooleanOption.html b/python/pykde/doc/classref/kdeprint/DrBooleanOption.html
new file mode 100644
index 00000000..57d6aad6
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrBooleanOption.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrBooleanOption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrBooleanOption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrBooleanOption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrListOption </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrBooleanOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrBooleanOption instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrChoiceGroup.html b/python/pykde/doc/classref/kdeprint/DrChoiceGroup.html
new file mode 100644
index 00000000..9a2cedc1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrChoiceGroup.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrChoiceGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrChoiceGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrChoiceGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrGroup </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrChoiceGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrChoiceGroup instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createItem</b> (parent, after = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrConstraint.html b/python/pykde/doc/classref/kdeprint/DrConstraint.html
new file mode 100644
index 00000000..ccdc2264
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrConstraint.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrConstraint</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrConstraint</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrConstraint</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrConstraint</b> (o1, o2, c1 = QString .null, c2 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrConstraint instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o1</td><td>QString</td><td></td></tr>
+<tr><td>o2</td><td>QString</td><td></td></tr>
+<tr><td>c1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>c2</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DrConstraint</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrConstraint instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DrConstraint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>check</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DrMain</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrFloatOption.html b/python/pykde/doc/classref/kdeprint/DrFloatOption.html
new file mode 100644
index 00000000..1e05b81b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrFloatOption.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrFloatOption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrFloatOption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrFloatOption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrFloatOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrFloatOption instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixedVal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueText</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrGroup.html b/python/pykde/doc/classref/kdeprint/DrGroup.html
new file mode 100644
index 00000000..a377b700
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrGroup.html
@@ -0,0 +1,136 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrGroup instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGroup</b> (grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>grp</td><td>DrGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addObject</b> (optgrp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>optgrp</td><td>DrBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addOption</b> (opt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opt</td><td>DrBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearConflict</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createItem</b> (parent, after = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTree</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findGroup</b> (grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findOption</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flattenGroup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptions</b> (opts, incldef = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>incldef</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupForOption</b> (optname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>optname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeGroup</b> (grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>grp</td><td>DrGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeOption</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrIntegerOption.html b/python/pykde/doc/classref/kdeprint/DrIntegerOption.html
new file mode 100644
index 00000000..feae181d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrIntegerOption.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrIntegerOption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrIntegerOption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrIntegerOption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrIntegerOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrIntegerOption instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixedVal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueText</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrListOption.html b/python/pykde/doc/classref/kdeprint/DrListOption.html
new file mode 100644
index 00000000..e7bceb71
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrListOption.html
@@ -0,0 +1,110 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrListOption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrListOption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrListOption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrListOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrListOption instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addChoice</b> (ch)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ch</td><td>DrBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>choices</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createItem</b> (parent, after = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentChoice</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findChoice</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrBase)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptions</b> (opts, incldef = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>incldef</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prettyText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChoice</b> (choicenum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>choicenum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueText</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrMain.html b/python/pykde/doc/classref/kdeprint/DrMain.html
new file mode 100644
index 00000000..05bf69b5
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrMain.html
@@ -0,0 +1,94 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrMain</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrMain</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrMain</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrGroup </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrMain</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrMain instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addConstraint</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>DrConstraint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPageSize</b> (sz)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sz</td><td>DrPageSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkConstraints</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cloneDriver</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrMain)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTreeView</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findPageSize</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DrPageSize)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flatten</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeGroupGlobally</b> (grp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>grp</td><td>DrGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeOptionGlobally</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrPageSize.html b/python/pykde/doc/classref/kdeprint/DrPageSize.html
new file mode 100644
index 00000000..76643e58
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrPageSize.html
@@ -0,0 +1,105 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrPageSize</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrPageSize</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrPageSize</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrPageSize</b> (s, width, height, left, bottom, right, top)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrPageSize instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+<tr><td>left</td><td>int</td><td></td></tr>
+<tr><td>bottom</td><td>int</td><td></td></tr>
+<tr><td>right</td><td>int</td><td></td></tr>
+<tr><td>top</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DrPageSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrPageSize instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DrPageSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bottomMargin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftMargin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>margins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rightMargin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>topMargin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/DrStringOption.html b/python/pykde/doc/classref/kdeprint/DrStringOption.html
new file mode 100644
index 00000000..2865b904
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/DrStringOption.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DrStringOption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DrStringOption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DrStringOption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DrBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DrStringOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DrStringOption instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueText</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMJob.html b/python/pykde/doc/classref/kdeprint/KMJob.html
new file mode 100644
index 00000000..23f19bd5
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMJob.html
@@ -0,0 +1,242 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>JobAction</b> = {Remove, Move, Hold, Resume, Restart, ShowCompleted, All
+}<li><b>JobState</b> = {Printing, Queued, Held, Error, Cancelled, Aborted, Completed, Unknown
+}<li><b>JobType</b> = {System, Threaded
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMJob instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMJob</b> (j)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMJob instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>j</td><td>KMJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attribute</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributeCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (j)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>j</td><td>KMJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRemote</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>owner</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedPages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttribute</b> (i, att)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>att</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributeCount</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOwner</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPages</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinter</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProcessedPages</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProcessedSize</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRemote</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUri</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stateString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uri</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMJobManager.JobFilter.html b/python/pykde/doc/classref/kdeprint/KMJobManager.JobFilter.html
new file mode 100644
index 00000000..836b1b88
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMJobManager.JobFilter.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMJobManager.JobFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMJobManager.JobFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMJobManager.JobFilter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>JobFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a JobFilter instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_isspecial</td><td>bool</td></tr>
+<tr><td>m_type[2]</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMJobManager.html b/python/pykde/doc/classref/kdeprint/KMJobManager.html
new file mode 100644
index 00000000..e589a1aa
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMJobManager.html
@@ -0,0 +1,204 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMJobManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMJobManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMJobManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>JobType</b> = {ActiveJobs, CompletedJobs
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMJobManager</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMJobManager instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addJob</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPrinter</b> (pr, type = ActiveJobs, isSpecial = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pr</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KMJobManager.JobType</td><td>ActiveJobs</td></tr>
+<tr><td>isSpecial</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPrinter</b> (a0, a1 = ActiveJobs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KMJobManager.JobType</td><td>ActiveJobs</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPluginActions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>discardAllJobs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doPluginAction</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QPtrList<KMJob></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findJob</b> (uri)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jobList</b> (reload = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KMJob>)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reload</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>limit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listJobs</b> (prname, type, limit = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prname</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KMJobManager.JobType</td><td></td></tr>
+<tr><td>limit</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeDiscardedJobs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePrinter</b> (pr, type = ActiveJobs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pr</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KMJobManager.JobType</td><td>ActiveJobs</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMJobManager)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendCommand</b> (uri, action, arg = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>QString</td><td></td></tr>
+<tr><td>action</td><td>int</td><td></td></tr>
+<tr><td>arg</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendCommand</b> (jobs, action, arg = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>jobs</td><td>QPtrList<KMJob></td><td></td></tr>
+<tr><td>action</td><td>int</td><td></td></tr>
+<tr><td>arg</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendCommandSystemJob</b> (jobs, action, arg = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>jobs</td><td>QPtrList<KMJob></td><td></td></tr>
+<tr><td>action</td><td>int</td><td></td></tr>
+<tr><td>arg</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendCommandThreadJob</b> (jobs, action, arg = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>jobs</td><td>QPtrList<KMJob></td><td></td></tr>
+<tr><td>action</td><td>int</td><td></td></tr>
+<tr><td>arg</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLimit</b> (val)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>val</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>threadJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validatePluginActions</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a1</td><td>QPtrList<KMJob></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMManager.html b/python/pykde/doc/classref/kdeprint/KMManager.html
new file mode 100644
index 00000000..97289fff
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMManager.html
@@ -0,0 +1,363 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PrinterOperations</b> = {PrinterEnabling, PrinterCreation, PrinterDefault, PrinterTesting, PrinterConfigure, PrinterRemoval, PrinterAll
+}<li><b>ServerOperations</b> = {ServerRestarting, ServerConfigure, ServerAll
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMManager</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPrinterWizard</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkUpdatePossible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkUpdatePossibleInternal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completePrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completePrinter</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completePrinterShort</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureServer</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPluginActions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createSpecialPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultPrinter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMPrinter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detectLocalPrinters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>discardAllPrinters</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>driverDbCreationProgram</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>driverDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableFilter</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enablePrinter</b> (p, on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enablePrinter</b> (name, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findPrinter</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMPrinter)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hardDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMPrinter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasManagement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invokeOptionsDialog</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFilterEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listPrinters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadDbDriver</b> (entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadDriver</b> (p, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadFileDriver</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPrinterDriver</b> (p, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modifyPrinter</b> (oldp, newp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldp</td><td>KMPrinter</td><td></td></tr>
+<tr><td>newp</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notImplemented</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerList</b> (reload = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KMPrinter>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reload</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerListComplete</b> (reload = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KMPrinter>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reload</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerOperationMask</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePrinter</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeSpecialPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restartServer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>savePrinterDriver</b> (p, d)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMManager)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serverOperationMask</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultPrinter</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setErrorMsg</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHardDefault</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHasManagement</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinterOperationMask</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setServerOperationMask</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSoftDefault</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUpdatePossible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>softDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMPrinter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startPrinter</b> (p, on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startPrinter</b> (name, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stateInformation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uncompressFile</b> (srcname, destname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>srcname</td><td>QString</td><td></td></tr>
+<tr><td>destname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upPrinter</b> (p, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updatePossible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validateDbDriver</b> (entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validatePluginActions</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a1</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMObject.html b/python/pykde/doc/classref/kdeprint/KMObject.html
new file mode 100644
index 00000000..3b5f474f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMObject.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMObject</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMObject</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMObject</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMObject instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDiscarded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDiscarded</b> (on = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KMPrinter.html b/python/pykde/doc/classref/kdeprint/KMPrinter.html
new file mode 100644
index 00000000..54748f4d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KMPrinter.html
@@ -0,0 +1,420 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMPrinter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMPrinter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMPrinter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PrinterCap</b> = {CapBW, CapColor, CapDuplex, CapStaple, CapCopies, CapCollate, CapPunch, CapCover, CapBind, CapSort, CapSmall, CapMedium, CapLarge, CapVariable
+}<li><b>PrinterState</b> = {Idle, Stopped, Processing, Unknown, Rejecting, StateMask
+}<li><b>PrinterType</b> = {Printer, Class, Implicit, Virtual, Remote, Invalid, Special
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMPrinter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMPrinter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMPrinter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMPrinter instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptJobs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addMember</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPrinterCap</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addType</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoConfigure</b> (prt, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prt</td><td>KPrinter</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (p1, p2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p1</td><td>KMPrinter</td><td></td></tr>
+<tr><td>p2</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KMPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dbEntry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultOption</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deviceProtocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>driver</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>driverInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editedOption</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editedOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasOption</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instanceName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isClass</b> (useImplicit = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useImplicit</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEdited</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHardDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isImplicit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLocal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPrinter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRemote</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSoftDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSpecial</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isVirtual</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>location</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manufacturer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>members</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>model</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>option</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownSoftDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerCap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeOption</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptJobs</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDbEntry</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultOption</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDescription</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDevice</b> (d)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>d</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDevice</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDriver</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDriverInfo</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEdited</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditedOption</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditedOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHardDefault</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstanceName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocation</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setManufacturer</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMembers</b> (l)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>l</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModel</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOption</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOwnSoftDefault</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinterCap</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinterName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSoftDefault</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KMPrinter.PrinterState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUri</b> (u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> (complete = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMPrinter.PrinterState)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>complete</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stateString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>takeDriver</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uri</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KPReloadObject.html b/python/pykde/doc/classref/kdeprint/KPReloadObject.html
new file mode 100644
index 00000000..e3b5dc37
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KPReloadObject.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPReloadObject</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPReloadObject</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPReloadObject <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPReloadObject</b> (priority = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPReloadObject instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>priority</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToReload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KPrintAction.html b/python/pykde/doc/classref/kdeprint/KPrintAction.html
new file mode 100644
index 00000000..ed763f62
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KPrintAction.html
@@ -0,0 +1,127 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPrintAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPrintAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPrintAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KActionMenu </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PrinterType</b> = {All, Regular, Specials
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPrintAction</b> (text, type = All, parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrintAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KPrintAction.PrinterType</td><td>All</td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPrintAction</b> (text, icon, type = All, parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrintAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QIconSet</td><td></td></tr>
+<tr><td>type</td><td>KPrintAction.PrinterType</td><td>All</td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPrintAction</b> (text, icon, type = All, parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrintAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KPrintAction.PrinterType</td><td>All</td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exportAll</b> (parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrintAction)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exportRegular</b> (parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrintAction)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exportSpecial</b> (parentWidget = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrintAction)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> (type, parentWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KPrintAction.PrinterType</td><td></td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' print
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KPrintDialog.html b/python/pykde/doc/classref/kdeprint/KPrintDialog.html
new file mode 100644
index 00000000..e05f693c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KPrintDialog.html
@@ -0,0 +1,193 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPrintDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPrintDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPrintDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialog, KPReloadObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPrintDialog</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrintDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkOutputFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableDialogPage</b> (index, flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableOutputFile</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableSpecial</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandDialog</b> (on = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printRequested</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerDialog</b> (a0, a1, caption = QString .null, forceExpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrintDialog)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter</td><td></td></tr>
+<tr><td>a1</td><td>QWidget</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>forceExpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDialogPages</b> (pages)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pages</td><td>QPtrList<KPrintDialogPage></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFlags</b> (f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOutputFileExtension</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotExtensionClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOpenFileDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOutputFileSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPrinterSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProperties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToggleFilter</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUpdatePossible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotWizard</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KPrintDialogPage.html b/python/pykde/doc/classref/kdeprint/KPrintDialogPage.html
new file mode 100644
index 00000000..1b7303a7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KPrintDialogPage.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPrintDialogPage</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPrintDialogPage</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPrintDialogPage</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPrintDialogPage</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrintDialogPage instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPrintDialogPage</b> (pr, dr = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>driver</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOptions</b> (opts, incldef = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+<tr><td>incldef</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onlyRealPrinters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (ID)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ID</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnlyRealPrinters</b> (on = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/KPrinter.html b/python/pykde/doc/classref/kdeprint/KPrinter.html
new file mode 100644
index 00000000..6c638dbf
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/KPrinter.html
@@ -0,0 +1,493 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPrinter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPrinter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeprint</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPrinter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPaintDevice, KPReloadObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ApplicationType</b> = {Dialog, StandAlone, StandAlonePersistent
+}<li><b>CollateType</b> = {Collate, Uncollate
+}<li><b>ColorMode</b> = {GrayScale, Color
+}<li><b>Orientation</b> = {Portrait, Landscape
+}<li><b>PageOrder</b> = {FirstPageFirst, LastPageFirst
+}<li><b>PageSelectionType</b> = {ApplicationSide, SystemSide
+}<li><b>PageSetType</b> = {AllPages, OddPages, EvenPages
+}<li><b>PageSize</b> = {A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, NPageSize
+}<li><b>StandardPageType</b> = {CopiesPage, FilesPage, Custom
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPrinter</b> (restore = 1, m = QPrinter .ScreenResolution)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPrinter instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>restore</td><td>bool</td><td>1</td></tr>
+<tr><td>m</td><td>QPrinter.PrinterMode</td><td>QPrinter .ScreenResolution</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aborted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDialogPage</b> (_page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_page</td><td>KPrintDialogPage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStandardPage</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applicationType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.ApplicationType)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoConfigure</b> (prname = QString .null, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prname</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cmd</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>collate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.CollateType)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.ColorMode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>creator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doPreview</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docFileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorMessage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishPrinting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fullPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>implementation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (restore = 1, m = QPrinter .ScreenResolution)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>restore</td><td>bool</td><td>1</td></tr>
+<tr><td>m</td><td>QPrinter.PrinterMode</td><td>QPrinter .ScreenResolution</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>margins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>margins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>top (uint) left (uint) bottom (uint) right (uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metric</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numCopies</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>option</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outputFileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outputToFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageOrder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.PageOrder)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.PageSelectionType)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.PageSetType)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.PageSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preparePrinting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previewOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printFiles</b> (files, removeafter = 0, startviewer = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>files</td><td>QStringList</td><td></td></tr>
+<tr><td>removeafter</td><td>bool</td><td>0</td></tr>
+<tr><td>startviewer</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printProgram</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printerSelectionOption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>realDrawableArea</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>realPageSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeStandardPage</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resolution</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setApplicationType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KPrinter.ApplicationType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCollate</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KPrinter.CollateType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColorMode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter.ColorMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCreator</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentPage</b> (p = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDocDirectory</b> (dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDocFileName</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDocName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setErrorMessage</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFromTo</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFullPage</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMargins</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMargins</b> (top, left, bottom, right)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>top</td><td>uint</td><td></td></tr>
+<tr><td>left</td><td>uint</td><td></td></tr>
+<tr><td>bottom</td><td>uint</td><td></td></tr>
+<tr><td>right</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinMax</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNumCopies</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOption</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOption</b> (key, value, broadcast)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>broadcast</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (opts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opts</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrientation</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter.Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOutputFileName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOutputToFile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageOrder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter.PageOrder</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageSelection</b> (_mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_mode</td><td>KPrinter.PageSelectionType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPrinter.PageSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewOnly</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrintProgram</b> (cmd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinterName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrinterSelectionOption</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRealDrawableArea</b> (r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRealPageSize</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRealPageSize</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setResolution</b> (dpi)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dpi</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSearchName</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUsePrinterResolution</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setup</b> (parent = 0, caption = QString .null, forceExpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>forceExpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translateQtOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/index.html b/python/pykde/doc/classref/kdeprint/index.html
new file mode 100644
index 00000000..21dad9e6
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/index.html
@@ -0,0 +1,46 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kdeprint</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdeprint Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kdeprint-globals.html">kdeprint Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMJob - KMManager</th></tr>
+<tr ><td><a href="KMJob.html">KMJob</a></td></tr>
+<tr ><td><a href="KMJobManager.html">KMJobManager</a></td></tr>
+<tr ><td><a href="KMJobManager.JobFilter.html">KMJobManager.JobFilter</a></td></tr>
+<tr ><td><a href="KMManager.html">KMManager</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMObject - KPrintAction</th></tr>
+<tr ><td><a href="KMObject.html">KMObject</a></td></tr>
+<tr ><td><a href="KMPrinter.html">KMPrinter</a></td></tr>
+<tr ><td><a href="KPReloadObject.html"><i>KPReloadObject</i></a></td></tr>
+<tr ><td><a href="KPrintAction.html">KPrintAction</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KPrintDialog - KPrinter</th></tr>
+<tr ><td><a href="KPrintDialog.html">KPrintDialog</a></td></tr>
+<tr ><td><a href="KPrintDialogPage.html">KPrintDialogPage</a></td></tr>
+<tr ><td><a href="KPrinter.html">KPrinter</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeprint/kdeprint-globals.html b/python/pykde/doc/classref/kdeprint/kdeprint-globals.html
new file mode 100644
index 00000000..321a4f09
--- /dev/null
+++ b/python/pykde/doc/classref/kdeprint/kdeprint-globals.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kdeprint globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdeprint Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeprint Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>global methods</h3><ul>
+<li><b>pageNameToPageSize</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPrinter.PageSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageSizeToPageName</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KPrinter.PageSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rangeToSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutApplication.html b/python/pykde/doc/classref/kdeui/KAboutApplication.html
new file mode 100644
index 00000000..05cbc286
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutApplication.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutApplication</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutApplication</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutApplication</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAboutDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutApplication</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAboutApplication</b> (aboutData, parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutApplication instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buildDialog</b> (aboutData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutContainer.html b/python/pykde/doc/classref/kdeui/KAboutContainer.html
new file mode 100644
index 00000000..48913823
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutContainer.html
@@ -0,0 +1,111 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutContainer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutContainer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutContainer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutContainer</b> (parent = 0, name = 0, margin = 0, spacing = 0, childAlignment = AlignCenter, innerAlignment = AlignCenter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutContainer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>margin</td><td>int</td><td>0</td></tr>
+<tr><td>spacing</td><td>int</td><td>0</td></tr>
+<tr><td>childAlignment</td><td>int</td><td>AlignCenter</td></tr>
+<tr><td>innerAlignment</td><td>int</td><td>AlignCenter</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addImage</b> (fileName, alignment = AlignLeft)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>alignment</td><td>int</td><td>AlignLeft</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPerson</b> (name, email, url, task, showHeader = 0, showframe = 0, showBold = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>task</td><td>QString</td><td></td></tr>
+<tr><td>showHeader</td><td>bool</td><td>0</td></tr>
+<tr><td>showframe</td><td>bool</td><td>0</td></tr>
+<tr><td>showBold</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addTitle</b> (title, alignment = AlignLeft, showframe = 0, showBold = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>alignment</td><td>int</td><td>AlignLeft</td></tr>
+<tr><td>showframe</td><td>bool</td><td>0</td></tr>
+<tr><td>showBold</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QChildEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mailClick</b> (name, address)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>address</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlClick</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutContributor.html b/python/pykde/doc/classref/kdeui/KAboutContributor.html
new file mode 100644
index 00000000..5206b025
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutContributor.html
@@ -0,0 +1,133 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutContributor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutContributor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutContributor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutContributor</b> (parent = 0, name = 0, username = QString .null, email = QString .null, url = QString .null, work = QString .null, showHeader = 0, showFrame = 1, showBold = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutContributor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>username</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>email</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>url</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>work</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>showHeader</td><td>bool</td><td>0</td></tr>
+<tr><td>showFrame</td><td>bool</td><td>1</td></tr>
+<tr><td>showBold</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emailClickedSlot</b> (emailaddress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>emailaddress</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontChange</b> (oldFont)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldFont</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getEmail</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getWork</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendEmail</b> (name, email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEmail</b> (text, header = QString .null, update = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>update</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (text, header = QString .null, update = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>update</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (text, header = QString .null, update = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>update</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWork</b> (text, header = QString .null, update = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>update</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlClickedSlot</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutDialog.html b/python/pykde/doc/classref/kdeui/KAboutDialog.html
new file mode 100644
index 00000000..d49fe33e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutDialog.html
@@ -0,0 +1,263 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>LayoutType</b> = {AbtPlain, AbtTabbed, AbtTitle, AbtImageLeft, AbtImageRight, AbtImageOnly, AbtProduct, AbtKDEStandard, AbtAppStandard, AbtImageAndTitle
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KAboutDialog</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAboutDialog</b> (dialogLayout, caption, buttonMask, defaultButton, parent = 0, name = 0, modal = 0, separator = 0, user1 = QString .null, user2 = QString .null, user3 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogLayout</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonMask</td><td>int</td><td></td></tr>
+<tr><td>defaultButton</td><td>ButtonCode</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>separator</td><td>bool</td><td>0</td></tr>
+<tr><td>user1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>user2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>user3</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContainer</b> (childAlignment, innerAlignment)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutContainer)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>childAlignment</td><td>int</td><td></td></tr>
+<tr><td>innerAlignment</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContainerPage</b> (title, childAlignment = AlignCenter, innerAlignment = AlignCenter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutContainer)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>childAlignment</td><td>int</td><td>AlignCenter</td></tr>
+<tr><td>innerAlignment</td><td>int</td><td>AlignCenter</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContributor</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addLicensePage</b> (title, text, numLines = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>numLines</td><td>int</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addScrolledContainerPage</b> (title, childAlignment = AlignCenter, innerAlignment = AlignCenter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutContainer)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>childAlignment</td><td>int</td><td>AlignCenter</td></tr>
+<tr><td>innerAlignment</td><td>int</td><td>AlignCenter</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addTextPage</b> (title, text, richText = 0, numLines = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>richText</td><td>bool</td><td>0</td></tr>
+<tr><td>numLines</td><td>int</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adjust</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>imageURL</b> (parent, caption, path, imageColor, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>imageColor</td><td>QColor</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseTrackSlot</b> (mode, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLSlot</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendEmail</b> (name, email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendEmailSlot</b> (name, email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAuthor</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setImage</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setImageBackgroundColor</b> (color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setImageFrame</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLogo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaintainer</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProduct</b> (appName, version, author, year)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appName</td><td>QString</td><td></td></tr>
+<tr><td>version</td><td>QString</td><td></td></tr>
+<tr><td>author</td><td>QString</td><td></td></tr>
+<tr><td>year</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgramLogo</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgramLogo</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVersion</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> (centerParent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>centerParent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutKDE.html b/python/pykde/doc/classref/kdeui/KAboutKDE.html
new file mode 100644
index 00000000..cabbfb86
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutKDE.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutKDE</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutKDE</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutKDE</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAboutDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutKDE</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutKDE instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAboutWidget.html b/python/pykde/doc/classref/kdeui/KAboutWidget.html
new file mode 100644
index 00000000..7dddad2b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAboutWidget.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAboutWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAboutWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAboutWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAboutWidget</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAboutWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContributor</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adjust</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLSlot</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendEmail</b> (name, email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendEmailSlot</b> (name, email)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAuthor</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLogo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaintainer</b> (name, email, url, work)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>email</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>work</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVersion</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAction.html b/python/pykde/doc/classref/kdeui/KAction.html
new file mode 100644
index 00000000..c271759b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAction.html
@@ -0,0 +1,531 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ActivationReason</b> = {UnknownActivation, EmulatedActivation, AccelActivation, PopupMenuActivation, ToolBarActivation
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KAction</b> (text, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (item, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (reason, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reason</td><td>KAction.ActivationReason</td><td></td></tr>
+<tr><td>state</td><td>Qt.ButtonState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContainer</b> (parent, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addContainer</b> (parent, representative)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>representative</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>container</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>containerCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findContainer</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findContainer</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getToolButtonID</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasIconSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSet</b> (group, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPlugged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPlugged</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPlugged</b> (container, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPlugged</b> (container, _representative)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+<tr><td>_representative</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isShortcutConfigurable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemId</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kaccelCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuId</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plainText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugAccel</b> (accel, configurable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accel</td><td>KAccel</td><td></td></tr>
+<tr><td>configurable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugMainWindowAccel</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeContainer</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>representative</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccel</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (disable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>disable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGroup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSet</b> (iconSet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconSet</td><td>QIconSet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcutConfigurable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcutText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatusText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolTip</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWhatsThis</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotButtonClicked</b> (a0, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>Qt.ButtonState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotKeycodeChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPopupActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statusText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBar</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplug</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplugAccel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplugAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateEnabled</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateGroup</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateIcon</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateIconSet</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateShortcut</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateShortcut</b> (menu, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateText</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateToolTip</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateWhatsThis</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThisWithIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionCollection.html b/python/pykde/doc/classref/kdeui/KActionCollection.html
new file mode 100644
index 00000000..d9d8948c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionCollection.html
@@ -0,0 +1,574 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionCollection</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionCollection</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionCollection</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActionCollection</b> (a0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+<tr><td>a2</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (a0, a1, a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+<tr><td>a3</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (a0 = 0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+<tr><td>a2</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (parent, name = 0, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (watch, parent, name = 0, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>watch</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (copy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>copy</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (parent, name = 0, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionCollection</b> (name, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionCollection instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (a0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (name, classname = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>classname</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionHighlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionHighlighted</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionHighlighted</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionHighlighted</b> (action, highlight)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+<tr><td>highlight</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionStatusText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionStatusText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+<tr><td> In versions KDE 3.1.5 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+<tr><td> In versions KDE 3.1.5 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionPtrList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionPtrList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.2 only( D MANDRAKE only)</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.2 only( D MANDRAKE only)</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDocCollection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDocCollection</b> (pDoc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDoc</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>builderKAccel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>builderKAccel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearStatusText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearStatusText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectHighlight</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectHighlight</b> (container, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectHighlight</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectHighlight</b> (container, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inserted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inserted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAutoConnectShortcuts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAutoConnectShortcuts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kaccel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kaccel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentGUIClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIClient)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readShortcutSettings</b> (a0 = QString .null, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a1</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readShortcutSettings</b> (sConfigGroup = QString .null, pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoConnectShortcuts</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoConnectShortcuts</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHighlightingEnabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHighlightingEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXMLFile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXMLFile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>take</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>take</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeShortcutSettings</b> (a0 = QString .null, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a1</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeShortcutSettings</b> (sConfigGroup = QString .null, pConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xmlFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xmlFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator +</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td> In versions KDE 3.1.4 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td> In versions KDE 3.1.4 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionMenu.html b/python/pykde/doc/classref/kdeui/KActionMenu.html
new file mode 100644
index 00000000..de156fa0
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionMenu.html
@@ -0,0 +1,227 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionMenu</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActionMenu</b> (a0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td>0</td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (a0, a1, a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (a0, a1, a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (text, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (text, icon, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QIconSet</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (text, icon, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionMenu</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionMenu instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popup</b> (global)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayed</b> (_delayed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_delayed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStickyMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStickyMenu</b> (sticky)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sticky</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stickyMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stickyMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionPtrShortcutList.html b/python/pykde/doc/classref/kdeui/KActionPtrShortcutList.html
new file mode 100644
index 00000000..a244dff1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionPtrShortcutList.html
@@ -0,0 +1,119 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionPtrShortcutList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionPtrShortcutList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionPtrShortcutList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShortcutList </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActionPtrShortcutList</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionPtrShortcutList instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionPtrList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionPtrShortcutList</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionPtrShortcutList instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QValueList<KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOther</b> (a0, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOther</b> (a0, index, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionSelector.html b/python/pykde/doc/classref/kdeui/KActionSelector.html
new file mode 100644
index 00000000..1bffd748
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionSelector.html
@@ -0,0 +1,233 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ButtonIconSize</b> = {SmallIcon, Small, Medium, Large, XLarge
+}<li><b>InsertionPolicy</b> = {BelowCurrent, Sorted, AtTop, AtBottom
+}<li><b>MoveButton</b> = {ButtonAdd, ButtonRemove, ButtonUp, ButtonDown
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KActionSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionSelector instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>added</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availableInsertionPolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionSelector.InsertionPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availableLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availableListBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListBox)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonIconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionSelector.ButtonIconSize)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyboardEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveOnDoubleClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>movedDown</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>movedUp</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>polish</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedInsertionPolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionSelector.InsertionPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedListBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListBox)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAvailableInsertionPolicy</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>KActionSelector.InsertionPolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAvailableLabel</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonIcon</b> (icon, button)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>button</td><td>KActionSelector.MoveButton</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonIconSet</b> (iconset, button)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+<tr><td>button</td><td>KActionSelector.MoveButton</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KActionSelector.ButtonIconSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonTooltip</b> (tip, button)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tip</td><td>QString</td><td></td></tr>
+<tr><td>button</td><td>KActionSelector.MoveButton</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonWhatsThis</b> (text, button)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>button</td><td>KActionSelector.MoveButton</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeyboardEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMoveOnDoubleClick</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedInsertionPolicy</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>KActionSelector.InsertionPolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedLabel</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowUpDownButtons</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showUpDownButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionSeparator.html b/python/pykde/doc/classref/kdeui/KActionSeparator.html
new file mode 100644
index 00000000..773dc121
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionSeparator.html
@@ -0,0 +1,73 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionSeparator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionSeparator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionSeparator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActionSeparator</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionSeparator instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActionSeparator</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionSeparator instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActionShortcutList.html b/python/pykde/doc/classref/kdeui/KActionShortcutList.html
new file mode 100644
index 00000000..54ed8f57
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActionShortcutList.html
@@ -0,0 +1,121 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActionShortcutList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActionShortcutList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActionShortcutList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShortcutList </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActionShortcutList</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActionShortcutList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOther</b> (a0, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConfigurable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOther</b> (a0, index, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Other</td><td></td></tr>
+<tr><td>index</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcutDefault</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KActiveLabel.html b/python/pykde/doc/classref/kdeui/KActiveLabel.html
new file mode 100644
index 00000000..3d87f67a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KActiveLabel.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KActiveLabel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KActiveLabel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KActiveLabel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTextBrowser </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KActiveLabel</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActiveLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KActiveLabel</b> (text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KActiveLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openLink</b> (link)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>link</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAnimWidget.html b/python/pykde/doc/classref/kdeui/KAnimWidget.html
new file mode 100644
index 00000000..de796280
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAnimWidget.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAnimWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAnimWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAnimWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAnimWidget</b> (icons, size = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAnimWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icons</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAnimWidget</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcons</b> (icons)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icons</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTimerUpdate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.4.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.4.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateIcons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KArrowButton.html b/python/pykde/doc/classref/kdeui/KArrowButton.html
new file mode 100644
index 00000000..6aa9b8e0
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KArrowButton.html
@@ -0,0 +1,79 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KArrowButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KArrowButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KArrowButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KArrowButton</b> (parent = 0, arrow = Qt .UpArrow, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KArrowButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>arrow</td><td>Qt.ArrowType</td><td>Qt .UpArrow</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>arrowTp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>arrowType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Qt.ArrowType)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButton</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArrowTp</b> (tp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tp</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArrowType</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>Qt.ArrowType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KAuthIcon.html b/python/pykde/doc/classref/kdeui/KAuthIcon.html
new file mode 100644
index 00000000..f257dc4a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KAuthIcon.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAuthIcon</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAuthIcon</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAuthIcon <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAuthIcon</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAuthIcon instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authChanged</b> (authorized)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>authorized</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateStatus</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KBugReport.html b/python/pykde/doc/classref/kdeui/KBugReport.html
new file mode 100644
index 00000000..f611f30f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KBugReport.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KBugReport</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KBugReport</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KBugReport</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KBugReport</b> (parent = 0, modal = 1, aboutData = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KBugReport instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendBugReport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotConfigureEmail</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetFrom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUrlClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KButtonBox.html b/python/pykde/doc/classref/kdeui/KButtonBox.html
new file mode 100644
index 00000000..11592b31
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KButtonBox.html
@@ -0,0 +1,115 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KButtonBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KButtonBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KButtonBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KButtonBox</b> (parent, _orientation = Horizontal, border = 0, _autoborder = 6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KButtonBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>_orientation</td><td>Orientation</td><td>Horizontal</td></tr>
+<tr><td>border</td><td>int</td><td>0</td></tr>
+<tr><td>_autoborder</td><td>int</td><td>6</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (text, noexpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>noexpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (text, slot, noexpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>noexpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (guiitem, noexpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>guiitem</td><td>KGuiItem</td><td></td></tr>
+<tr><td>noexpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (guiitem, slot, noexpand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>guiitem</td><td>KGuiItem</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>noexpand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStretch</b> (scale = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>scale</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bestButtonSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonSizeHint</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPushButton</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>placeButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizePolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSizePolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCModule.html b/python/pykde/doc/classref/kdeui/KCModule.html
new file mode 100644
index 00000000..333e7901
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCModule.html
@@ -0,0 +1,162 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCModule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCModule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCModule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Button</b> = {Help, Default, Apply, Reset, Cancel, Ok, SysDefault
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KCModule</b> (parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModule</b> (instance, parent = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutData)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addConfig</b> (config, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigDialogManager)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigSkeleton</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KConfigDialogManager>)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>managedWidgetChangeState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quickHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quickHelpChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootOnlyMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAboutData</b> (about)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>about</td><td>KAboutData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtons</b> (btn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>btn</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setQuickHelp</b> (help)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>help</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRootOnlyMsg</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseRootOnlyMsg</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sysdefaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unmanagedWidgetChangeState</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useRootOnlyMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widgetChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCharSelect.html b/python/pykde/doc/classref/kdeui/KCharSelect.html
new file mode 100644
index 00000000..c085281f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCharSelect.html
@@ -0,0 +1,201 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCharSelect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCharSelect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCharSelect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QVBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCharSelect</b> (parent, name, font = QString .null, chr = ' ', tableNum = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCharSelect instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>font</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>chr</td><td>QChar</td><td>' '</td></tr>
+<tr><td>tableNum</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charActivated</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charFocusItemChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charFocusItemChanged</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charHighlighted</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charHighlighted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charTableDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charTableUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanupFontDatabase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableFontCombo</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableTableSpinBox</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillFontCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusItemChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusItemChanged</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontChanged</b> (_font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_font</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSelected</b> (_font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_font</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFontComboEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTableSpinBoxEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChar</b> (chr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>chr</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTableNum</b> (tableNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tableNum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDoubleClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUnicodeEntered</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUpdateUnicode</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableChanged</b> (_value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableNum</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCharSelectTable.html b/python/pykde/doc/classref/kdeui/KCharSelectTable.html
new file mode 100644
index 00000000..a29ee1af
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCharSelectTable.html
@@ -0,0 +1,167 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCharSelectTable</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCharSelectTable</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCharSelectTable</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QGridView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCharSelectTable</b> (parent, name, _font, _chr, _tableNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCharSelectTable instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>_font</td><td>QString</td><td></td></tr>
+<tr><td>_chr</td><td>QChar</td><td></td></tr>
+<tr><td>_tableNum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusItemChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusItemChanged</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoLeft</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoRight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCell</b> (p, row, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>row</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChar</b> (_chr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_chr</td><td>QChar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (_font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_font</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTableNum</b> (_tableNum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_tableNum</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColor.html b/python/pykde/doc/classref/kdeui/KColor.html
new file mode 100644
index 00000000..f8bda1ca
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColor.html
@@ -0,0 +1,87 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QColor </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColor instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>KColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hsv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>_h (int) _s (int) _v (int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rgb</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>_r (int) _g (int) _b (int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHsv</b> (_h, _s, _v)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_h</td><td>int</td><td></td></tr>
+<tr><td>_s</td><td>int</td><td></td></tr>
+<tr><td>_v</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRgb</b> (_r, _g, _b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_r</td><td>int</td><td></td></tr>
+<tr><td>_g</td><td>int</td><td></td></tr>
+<tr><td>_b</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColorCells.html b/python/pykde/doc/classref/kdeui/KColorCells.html
new file mode 100644
index 00000000..7d0ee7f6
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColorCells.html
@@ -0,0 +1,149 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColorCells</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColorCells</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColorCells</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QGridView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColorCells</b> (parent, rows, cols)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorCells instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>rows</td><td>int</td><td></td></tr>
+<tr><td>cols</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> (indx)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>indx</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorDoubleClicked</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorSelected</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSelected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numCells</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCell</b> (painter, row, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+<tr><td>row</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>posToCell</b> (pos, ignoreBorders = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>ignoreBorders</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptDrags</b> (_acceptDrags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_acceptDrags</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (colNum, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>colNum</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShading</b> (_shade)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_shade</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColorCombo.html b/python/pykde/doc/classref/kdeui/KColorCombo.html
new file mode 100644
index 00000000..0c528617
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColorCombo.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColorCombo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColorCombo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColorCombo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QComboBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColorCombo</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (re)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>re</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEmptyList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColorDialog.html b/python/pykde/doc/classref/kdeui/KColorDialog.html
new file mode 100644
index 00000000..3034ed59
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColorDialog.html
@@ -0,0 +1,117 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColorDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColorDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColorDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColorDialog</b> (parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorSelected</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (obj, ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+<tr><td>ev</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getColor</b> (theColor, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theColor</td><td>QColor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getColor</b> (theColor, defaultColor, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theColor</td><td>QColor</td><td></td></tr>
+<tr><td>defaultColor</td><td>QColor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>grabColor</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultColor</b> (defaultCol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultCol</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColorDrag.html b/python/pykde/doc/classref/kdeui/KColorDrag.html
new file mode 100644
index 00000000..5d66213b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColorDrag.html
@@ -0,0 +1,99 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColorDrag</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColorDrag</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColorDrag</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QStoredDrag </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColorDrag</b> (dragsource = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorDrag instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dragsource</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KColorDrag</b> (col, dragsource = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorDrag instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+<tr><td>dragsource</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canDecode</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMimeSource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decode</b> (e, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMimeSource</td><td></td></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodedData</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDrag</b> (a0, dragsource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KColorDrag)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+<tr><td>dragsource</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KColorPatch.html b/python/pykde/doc/classref/kdeui/KColorPatch.html
new file mode 100644
index 00000000..501df0e2
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KColorPatch.html
@@ -0,0 +1,83 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KColorPatch</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KColorPatch</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KColorPatch</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KColorPatch</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KColorPatch instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (painter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KComboBox.html b/python/pykde/doc/classref/kdeui/KComboBox.html
new file mode 100644
index 00000000..c9e93608
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KComboBox.html
@@ -0,0 +1,261 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KComboBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KComboBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KComboBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QComboBox, KCompletionBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KComboBox</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KComboBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KComboBox</b> (rw, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KComboBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rw</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowContextMenu</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeURL</b> (url, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeURL</b> (pixmap, url, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionBox</b> (create)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletionBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionModeChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KGlobalSettings.Completion</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (a0 = 0, initializeWindow = 1, destroyOldWindow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>WId</td><td>0</td></tr>
+<tr><td>initializeWindow</td><td>bool</td><td>1</td></tr>
+<tr><td>destroyOldWindow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cursorPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertURL</b> (url, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertURL</b> (pixmap, url, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isContextMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isURLDropsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>returnPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>returnPressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateText</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoCompletion</b> (autocomplete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autocomplete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedText</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setContextMenuEnabled</b> (showMenu)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showMenu</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (item, insert = 0, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+<tr><td>insert</td><td>bool</td><td>0</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLineEdit</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QLineEdit</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTrapReturnKey</b> (trap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>trap</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLDropsEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substringCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textRotation</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trapReturnKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCommand.html b/python/pykde/doc/classref/kdeui/KCommand.html
new file mode 100644
index 00000000..78de8f91
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCommand.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCommand</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCommand</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCommand <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCommand</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCommand instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>execute</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unexecute</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCommandHistory.html b/python/pykde/doc/classref/kdeui/KCommandHistory.html
new file mode 100644
index 00000000..830a7d56
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCommandHistory.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCommandHistory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCommandHistory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCommandHistory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCommandHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCommandHistory instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCommandHistory</b> (actionCollection, withMenus = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCommandHistory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actionCollection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>withMenus</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCommand</b> (command, execute = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>command</td><td>KCommand</td><td></td></tr>
+<tr><td>execute</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commandExecuted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commandExecuted</b> (command)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>command</td><td>KCommand</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentRestored</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentSaved</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redoLimit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRedoLimit</b> (limit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>limit</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUndoLimit</b> (limit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>limit</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedoAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedoActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUndoAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUndoActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undoLimit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCompletionBox.html b/python/pykde/doc/classref/kdeui/KCompletionBox.html
new file mode 100644
index 00000000..4c53ed17
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCompletionBox.html
@@ -0,0 +1,156 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCompletionBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCompletionBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCompletionBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCompletionBox</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCompletionBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateOnSelect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calculateGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelledText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>down</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>end</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>home</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItems</b> (items, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabHandling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActivateOnSelect</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCancelledText</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabHandling</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeAndPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>up</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userCancelled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KConfigDialog.html b/python/pykde/doc/classref/kdeui/KConfigDialog.html
new file mode 100644
index 00000000..478b4f57
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KConfigDialog.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KConfigDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KConfigDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KConfigDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KConfigDialog</b> (parent, name, config, dialogType = KDialogBase .IconList, dialogButtons = KDialogBase .Default | KDialogBase .Ok | KDialogBase .Apply | KDialogBase .Cancel | KDialogBase .Help, defaultButton = Ok, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KConfigDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>config</td><td>KConfigSkeleton</td><td></td></tr>
+<tr><td>dialogType</td><td>KDialogBase.DialogType</td><td>KDialogBase .IconList</td></tr>
+<tr><td>dialogButtons</td><td>int</td><td>KDialogBase .Default | KDialogBase .Ok | KDialogBase .Apply | KDialogBase .Cancel | KDialogBase .Help</td></tr>
+<tr><td>defaultButton</td><td>KDialogBase.ButtonCode</td><td>Ok</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (page, itemName, pixmapName, header = QString .null, manage = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>pixmapName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>manage</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (page, config, itemName, pixmapName, header = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+<tr><td>config</td><td>KConfigSkeleton</td><td></td></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>pixmapName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigDialog)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChanged</b> (dialogName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsChangedSlot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showDialog</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateWidgets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateWidgetsDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widgetModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KContextMenuManager.html b/python/pykde/doc/classref/kdeui/KContextMenuManager.html
new file mode 100644
index 00000000..af8f862f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KContextMenuManager.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KContextMenuManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KContextMenuManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KContextMenuManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KContextMenuManager</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KContextMenuManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (widget, popup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showOnButtonPress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KContextMenuManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KCursor.html b/python/pykde/doc/classref/kdeui/KCursor.html
new file mode 100644
index 00000000..e33d033d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KCursor.html
@@ -0,0 +1,136 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCursor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCursor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCursor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>Qt </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCursor instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>arrowCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoHideEventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blankCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>crossCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideCursorDelay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ibeamCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoHideCursor</b> (w, enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoHideCursor</b> (w, enable, customEventFilter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+<tr><td>customEventFilter</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHideCursorDelay</b> (ms)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ms</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeAllCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeBDiagCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeFDiagCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHorCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeVerCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upArrowCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThisCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>workingCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDCOPActionProxy.html b/python/pykde/doc/classref/kdeui/KDCOPActionProxy.html
new file mode 100644
index 00000000..994681fa
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDCOPActionProxy.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDCOPActionProxy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDCOPActionProxy</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDCOPActionProxy</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DCOPObjectProxy </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDCOPActionProxy</b> (actionCollection, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDCOPActionProxy instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actionCollection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>parent</td><td>DCOPObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDCOPActionProxy</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDCOPActionProxy instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>DCOPObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionMap</b> (appId = QCString ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QCString,DCOPRef>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appId</td><td>QCString</td><td>QCString ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionObjectId</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KAction)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (obj, fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processAction</b> (obj, fun, data, replyType, replyData, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QCString</td><td></td></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+<tr><td>action</td><td>KAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateInternalMonthPicker.html b/python/pykde/doc/classref/kdeui/KDateInternalMonthPicker.html
new file mode 100644
index 00000000..21f38430
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateInternalMonthPicker.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateInternalMonthPicker</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateInternalMonthPicker</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateInternalMonthPicker</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QGridView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateInternalMonthPicker</b> (date, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalMonthPicker instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateInternalMonthPicker</b> (a0, a1, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalMonthPicker instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QWidget</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeMe</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCell</b> (painter, row, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+<tr><td>row</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupPainter</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportResizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportResizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateInternalWeekSelector.html b/python/pykde/doc/classref/kdeui/KDateInternalWeekSelector.html
new file mode 100644
index 00000000..3e95c886
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateInternalWeekSelector.html
@@ -0,0 +1,87 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateInternalWeekSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateInternalWeekSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateInternalWeekSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateInternalWeekSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalWeekSelector instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateInternalWeekSelector</b> (a0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalWeekSelector instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeMe</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getWeek</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxWeek</b> (max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>max</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWeek</b> (week)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>week</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekEnteredSlot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateInternalYearSelector.html b/python/pykde/doc/classref/kdeui/KDateInternalYearSelector.html
new file mode 100644
index 00000000..41f6b99b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateInternalYearSelector.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateInternalYearSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateInternalYearSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateInternalYearSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateInternalYearSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalYearSelector instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateInternalYearSelector</b> (a0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateInternalYearSelector instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeMe</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getYear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setYear</b> (year)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>year</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yearEnteredSlot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDatePicker.html b/python/pykde/doc/classref/kdeui/KDatePicker.html
new file mode 100644
index 00000000..db1cf015
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDatePicker.html
@@ -0,0 +1,200 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDatePicker</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDatePicker</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDatePicker</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDatePicker</b> (parent = 0, a0 = QDate .currentDate (), name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDatePicker instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a0</td><td>QDate</td><td>QDate .currentDate ()</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDatePicker</b> (parent, a0, name, f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDatePicker instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>f</td><td>WFlags</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDatePicker</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDatePicker instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>date</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateChangedSlot</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateEntered</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateTable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDateTable)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasCloseButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineEnterPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthBackwardClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>monthForwardClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectMonthClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectWeekClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectYearClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCloseButton</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFontSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableClickedSlot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>todayButtonClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weekSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yearBackwardClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yearForwardClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateTable.html b/python/pykde/doc/classref/kdeui/KDateTable.html
new file mode 100644
index 00000000..cb748155
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateTable.html
@@ -0,0 +1,192 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateTable</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateTable</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateTable</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QGridView </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>BackgroundMode</b> = {NoBgMode, RectangleMode, CircleMode
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDateTable</b> (parent = 0, date = QDate .currentDate (), name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateTable instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>date</td><td>QDate</td><td>QDate .currentDate ()</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateTable</b> (parent, name, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateTable instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowContextMenu</b> (menu, date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>KPopupMenu</td><td></td></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateChanged</b> (cur, old)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cur</td><td>QDate</td><td></td></tr>
+<tr><td>old</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateFromPos</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCell</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+<tr><td>a2</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>posFromDate</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomDatePainting</b> (date, fgColor, bgMode = NoBgMode, bgColor = QColor ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>fgColor</td><td>QColor</td><td></td></tr>
+<tr><td>bgMode</td><td>BackgroundMode</td><td>NoBgMode</td></tr>
+<tr><td>bgColor</td><td>QColor</td><td>QColor ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFontSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPopupMenuEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tableClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsetCustomDatePainting</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportResizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateTimeWidget.html b/python/pykde/doc/classref/kdeui/KDateTimeWidget.html
new file mode 100644
index 00000000..238e6935
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateTimeWidget.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateTimeWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateTimeWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateTimeWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateTimeWidget</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateTimeWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateTimeWidget</b> (datetime, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateTimeWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>datetime</td><td>QDateTime</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateTime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDateTime</b> (datetime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>datetime</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (datetime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>datetime</td><td>QDateTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateValidator.html b/python/pykde/doc/classref/kdeui/KDateValidator.html
new file mode 100644
index 00000000..045becc2
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateValidator.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateValidator</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>date</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixup</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State) a1 (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDateWidget.html b/python/pykde/doc/classref/kdeui/KDateWidget.html
new file mode 100644
index 00000000..1448613c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDateWidget.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDateWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDateWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDateWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDateWidget</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDateWidget</b> (date, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDateWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>date</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDate)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDate</b> (date)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>date</td><td>QDate</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDateChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDialog.html b/python/pykde/doc/classref/kdeui/KDialog.html
new file mode 100644
index 00000000..0d2e79bf
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDialog.html
@@ -0,0 +1,125 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDialog</b> (parent = 0, name = 0, modal = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>avoidArea</b> (widget, area, screen = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>area</td><td>QRect</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>centerOnScreen</b> (widget, screen = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>screen</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layoutHintChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>polish</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeLayout</b> (widget, margin, spacing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>margin</td><td>int</td><td></td></tr>
+<tr><td>spacing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeLayout</b> (lay, margin, spacing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lay</td><td>QLayoutItem</td><td></td></tr>
+<tr><td>margin</td><td>int</td><td></td></tr>
+<tr><td>spacing</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPlainCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spacingHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDialogBase.html b/python/pykde/doc/classref/kdeui/KDialogBase.html
new file mode 100644
index 00000000..22d5221f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDialogBase.html
@@ -0,0 +1,706 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDialogBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDialogBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDialogBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialog </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ActionButtonStyle</b> = {ActionStyle0, ActionStyle1, ActionStyle2, ActionStyle3, ActionStyle4, ActionStyleMAX
+}<li><b>ButtonCode</b> = {Help, Default, Ok, Apply, Try, Cancel, Close, User1, User2, User3, No, Yes, Details, Filler, Stretch, NoDefault
+}<li><b>ButtonCode</b> = {Help, Default, Ok, Apply, Try, Cancel, Close, User1, User2, User3, No, Yes, Details, Filler, Stretch
+}<li><b>DialogType</b> = {TreeList, Tabbed, Plain, Swallow, IconList
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDialogBase</b> (parent = 0, name = 0, modal = 1, caption = QString .null, buttonMask = Ok | Apply | Cancel, defaultButton = Ok, separator = 0, user1 = KGuiItem (), user2 = KGuiItem (), user3 = KGuiItem ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialogBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonMask</td><td>int</td><td>Ok | Apply | Cancel</td></tr>
+<tr><td>defaultButton</td><td>KDialogBase.ButtonCode</td><td>Ok</td></tr>
+<tr><td>separator</td><td>bool</td><td>0</td></tr>
+<tr><td>user1</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user2</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user3</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDialogBase</b> (dialogFace, caption, buttonMask, defaultButton, parent = 0, name = 0, modal = 1, separator = 0, user1 = KGuiItem (), user2 = KGuiItem (), user3 = KGuiItem ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialogBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonMask</td><td>int</td><td></td></tr>
+<tr><td>defaultButton</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>separator</td><td>bool</td><td>0</td></tr>
+<tr><td>user1</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user2</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user3</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDialogBase</b> (dialogFace, f, parent = 0, name = 0, modal = 1, caption = QString .null, buttonMask = Ok | Apply | Cancel, defaultButton = Ok, separator = 0, user1 = KGuiItem (), user2 = KGuiItem (), user3 = KGuiItem ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialogBase instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>KDialogBase.DialogType</td><td></td></tr>
+<tr><td>f</td><td>WFlags</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonMask</td><td>int</td><td>Ok | Apply | Cancel</td></tr>
+<tr><td>defaultButton</td><td>KDialogBase.ButtonCode</td><td>Ok</td></tr>
+<tr><td>separator</td><td>bool</td><td>0</td></tr>
+<tr><td>user1</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user2</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>user3</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDialogBase</b> (caption, buttonMask = Yes | No | Cancel, defaultButton = Yes, escapeButton = Cancel, parent = 0, name = 0, modal = 1, separator = 0, yes = KStdGuiItem .yes (), no = KStdGuiItem .no (), cancel = KStdGuiItem .cancel ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialogBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonMask</td><td>int</td><td>Yes | No | Cancel</td></tr>
+<tr><td>defaultButton</td><td>KDialogBase.ButtonCode</td><td>Yes</td></tr>
+<tr><td>escapeButton</td><td>KDialogBase.ButtonCode</td><td>Cancel</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>separator</td><td>bool</td><td>0</td></tr>
+<tr><td>yes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>no</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>cancel</td><td>KGuiItem</td><td>KStdGuiItem .cancel ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowDetails</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowPage</b> (page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activePageIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButtonBelowList</b> (text, recv, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>recv</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButtonBelowList</b> (guiitem, recv, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>guiitem</td><td>KGuiItem</td><td></td></tr>
+<tr><td>recv</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGridPage</b> (n, dir, itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QGrid)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+<tr><td>dir</td><td>Qt.Orientation</td><td></td></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGridPage</b> (n, dir, items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QGrid)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+<tr><td>dir</td><td>Qt.Orientation</td><td></td></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addHBoxPage</b> (itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QHBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addHBoxPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QHBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVBoxPage</b> (itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVBoxPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWidgetBelowList</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adjustSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundTile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calculateSize</b> (w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configDialogSize</b> (groupName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>groupName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configDialogSize</b> (config, groupName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayedDestruct</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayedDestruct</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableButton</b> (id, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableButtonApply</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableButtonCancel</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableButtonOK</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableButtonSeparator</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableLinkedHelp</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getBackgroundTile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getBorderWidths</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>ulx (int) uly (int) lrx (int) lry (int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getContentsRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>haveBackgroundTile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>helpClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>helpClickedSlot</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>helpLinkText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hidden</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>incInitialSize</b> (s, noResize = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QSize</td><td></td></tr>
+<tr><td>noResize</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mainWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeGridMainWidget</b> (n, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QGrid)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+<tr><td>dir</td><td>Qt.Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeHBoxMainWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QHBox)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeMainWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeVBoxMainWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>okClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageIndex</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plainPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveDialogSize</b> (groupName, global = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>groupName</td><td>QString</td><td></td></tr>
+<tr><td>global</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveDialogSize</b> (config, groupName, global = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupName</td><td>QString</td><td></td></tr>
+<tr><td>global</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackgroundTile</b> (pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonApply</b> (item = KStdGuiItem .apply ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td>KStdGuiItem .apply ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonApplyText</b> (text = QString .null, tooltip = QString .null, quickhelp = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>tooltip</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>quickhelp</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonBoxOrientation</b> (orientation)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orientation</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonCancel</b> (item = KStdGuiItem .cancel ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td>KStdGuiItem .cancel ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonCancelText</b> (text = QString .null, tooltip = QString .null, quickhelp = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>tooltip</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>quickhelp</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonGuiItem</b> (id, item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>item</td><td>KGuiItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonOK</b> (item = KStdGuiItem .ok ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td>KStdGuiItem .ok ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonOKText</b> (text = QString .null, tooltip = QString .null, quickhelp = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>tooltip</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>quickhelp</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonText</b> (id, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonTip</b> (id, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonWhatsThis</b> (id, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDetails</b> (showDetails)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showDetails</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDetailsWidget</b> (detailsWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>detailsWidget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEscapeButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFolderIcon</b> (path, pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QStringList</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHelp</b> (anchor, appname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>anchor</td><td>QString</td><td></td></tr>
+<tr><td>appname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHelpLinkText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconListAllVisible</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInitialSize</b> (s, noResize = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QSize</td><td></td></tr>
+<tr><td>noResize</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRootIsDecorated</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowIconsInTreeList</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTreeListAutoResize</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showButton</b> (id, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KDialogBase.ButtonCode</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showButtonApply</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showButtonCancel</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showButtonOK</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPage</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTile</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotApply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDelayedDestruct</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDetails</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser1</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser2</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotYes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tryClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unfoldTreeList</b> (persist = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>persist</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateBackground</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user1Clicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user2Clicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user3Clicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yesClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDialogQueue.html b/python/pykde/doc/classref/kdeui/KDialogQueue.html
new file mode 100644
index 00000000..e2ef837f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDialogQueue.html
@@ -0,0 +1,55 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDialogQueue</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDialogQueue</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDialogQueue</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDialogQueue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDialogQueue instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queueDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDialogQueue)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockArea.html b/python/pykde/doc/classref/kdeui/KDockArea.html
new file mode 100644
index 00000000..92f6136a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockArea.html
@@ -0,0 +1,135 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockArea</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockArea</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockArea</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockArea</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockArea instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateDock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDockWidget</b> (name, pixmap, parent = 0, strCaption = 0, strTabPageLabel = " ")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>strCaption</td><td>QString</td><td>0</td></tr>
+<tr><td>strTabPageLabel</td><td>QString</td><td>" "</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockHideShowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockWidgetHasUndocked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getMainDockWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDockInvisible</b> (dock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDockVisible</b> (dock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeWidgetDockVisible</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockManager)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDockConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDockConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainDockWidget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDockWidgetUndocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDockConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDockConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockMainWindow.html b/python/pykde/doc/classref/kdeui/KDockMainWindow.html
new file mode 100644
index 00000000..63422504
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockMainWindow.html
@@ -0,0 +1,136 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockMainWindow</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockMainWindow</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockMainWindow</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMainWindow </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockMainWindow</b> (parent = 0, name = 0, f = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockMainWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateDock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDockWidget</b> (name, pixmap, parent = 0, strCaption = 0, strTabPageLabel = " ")
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>strCaption</td><td>QString</td><td>0</td></tr>
+<tr><td>strTabPageLabel</td><td>QString</td><td>" "</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockHideShowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockWidgetHasUndocked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getMainDockWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDockInvisible</b> (dock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDockVisible</b> (dock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeWidgetDockVisible</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockManager)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDockConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDockConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainDockWidget</b> (dockwidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dockwidget</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDockWidgetUndocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDockConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDockConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockManager.html b/python/pykde/doc/classref/kdeui/KDockManager.html
new file mode 100644
index 00000000..e78a1338
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockManager.html
@@ -0,0 +1,208 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>EnReadDockConfigMode</b> = {Unknown, WrapExistingWidgetsOnly, RestoreAllDockwidgets
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDockManager</b> (mainWindow, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mainWindow</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>change</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockHideShowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dumpDockWidgets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (object, event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findWidgetParentDock</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishReadDockConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDockWidgetFromName</b> (dockName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dockName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeWidgetDockVisible</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeFromAutoCreateList</b> (pDockWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pDockWidget</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceDock</b> (oldDock, newDock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldDock</td><td>KDockWidget</td><td></td></tr>
+<tr><td>newDock</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDockDefaultPos</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainDockWidget2</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadDockConfigMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialBottomDockContainer</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialLeftDockContainer</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialRightDockContainer</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialTopDockContainer</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSplitterHighResolution</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSplitterKeepSize</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSplitterOpaqueResize</b> (b = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitterHighResolution</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitterKeepSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitterOpaqueResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (c = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockTabGroup.html b/python/pykde/doc/classref/kdeui/KDockTabGroup.html
new file mode 100644
index 00000000..63bb856b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockTabGroup.html
@@ -0,0 +1,52 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockTabGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockTabGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockTabGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTabWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockTabGroup</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockTabGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transientTo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWidget.html b/python/pykde/doc/classref/kdeui/KDockWidget.html
new file mode 100644
index 00000000..74a11d02
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWidget.html
@@ -0,0 +1,320 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>DockPosition</b> = {DockNone, DockTop, DockLeft, DockRight, DockBottom, DockCenter, DockDesktop, DockToSpecialSites, DockCorner, DockFullSite, DockFullDocking
+}<li><b>DockPosition</b> = {DockNone, DockTop, DockLeft, DockRight, DockBottom, DockCenter, DockDesktop, DockCorner, DockFullSite, DockFullDocking
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDockWidget</b> (dockManager, name, pixmap, parent = 0, strCaption = 0, strTabPageLabel = " ", f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dockManager</td><td>KDockManager</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>strCaption</td><td>QString</td><td>0</td></tr>
+<tr><td>strTabPageLabel</td><td>QString</td><td>" "</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeHideShowState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDockPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget.DockPosition)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockBack</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockManager)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockSite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docking</b> (dw, dp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dw</td><td>KDockWidget</td><td></td></tr>
+<tr><td>dp</td><td>KDockWidget.DockPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableDocking</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findNearestDockWidget</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>KDockWidget.DockPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forcedFixedHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forcedFixedWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getHeader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidgetAbstractHeader)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasUndocked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>headerCloseButtonClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>headerDockbackButtonClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iMBeingClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDockBackPossible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>latestKDockContainer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loseFormerBrotherDockWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDockVisible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manualDock</b> (target, dockPos, spliPos = 50, pos = QPoint (0 ,0 ), check = 0, tabIndex = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>KDockWidget</td><td></td></tr>
+<tr><td>dockPos</td><td>KDockWidget.DockPosition</td><td></td></tr>
+<tr><td>spliPos</td><td>int</td><td>50</td></tr>
+<tr><td>pos</td><td>QPoint</td><td>QPoint (0 ,0 )</td></tr>
+<tr><td>check</td><td>bool</td><td>0</td></tr>
+<tr><td>tabIndex</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mayBeHide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mayBeShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentDockContainer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentDockTabGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockTabGroup)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreFromForcedFixedSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDockDefaultPos</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDockSite</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDockWindowTransient</b> (parent, transientEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>transientEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDockWindowType</b> (windowType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>windowType</td><td>NET.WindowType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableDocking</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setForcedFixedHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setForcedFixedWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFormerBrotherDockWidget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeader</b> (ah)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ah</td><td>KDockWidgetAbstractHeader</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLatestKDockContainer</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabPageLabel</b> (label)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolTipString</b> (ttStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ttStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidget</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabPageLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolTipString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transientTo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateHeader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widgetSet</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeader.html b/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeader.html
new file mode 100644
index 00000000..4ee31b85
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeader.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWidgetAbstractHeader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWidgetAbstractHeader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWidgetAbstractHeader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockWidgetAbstractHeader</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWidgetAbstractHeader instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KDockWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTopLevel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeaderDrag.html b/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeaderDrag.html
new file mode 100644
index 00000000..7776ce53
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWidgetAbstractHeaderDrag.html
@@ -0,0 +1,52 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWidgetAbstractHeaderDrag</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWidgetAbstractHeaderDrag</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWidgetAbstractHeaderDrag</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockWidgetAbstractHeaderDrag</b> (parent, dock, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWidgetAbstractHeaderDrag instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KDockWidgetAbstractHeader</td><td></td></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWidgetHeader.html b/python/pykde/doc/classref/kdeui/KDockWidgetHeader.html
new file mode 100644
index 00000000..fe4b340e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWidgetHeader.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWidgetHeader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWidgetHeader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWidgetHeader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDockWidgetAbstractHeader </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockWidgetHeader</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWidgetHeader instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KDockWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragPanel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDockWidgetHeaderDrag)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forceCloseButtonHidden</b> (enable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadConfig</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeButton</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveConfig</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDragEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDragPanel</b> (nd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nd</td><td>KDockWidgetHeaderDrag</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTopLevel</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showUndockButton</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStayClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWidgetHeaderDrag.html b/python/pykde/doc/classref/kdeui/KDockWidgetHeaderDrag.html
new file mode 100644
index 00000000..e6e7c964
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWidgetHeaderDrag.html
@@ -0,0 +1,55 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWidgetHeaderDrag</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWidgetHeaderDrag</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWidgetHeaderDrag</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDockWidgetAbstractHeaderDrag </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockWidgetHeaderDrag</b> (parent, dock, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWidgetHeaderDrag instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KDockWidgetAbstractHeader</td><td></td></tr>
+<tr><td>dock</td><td>KDockWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDockWindow.html b/python/pykde/doc/classref/kdeui/KDockWindow.html
new file mode 100644
index 00000000..bdb6532a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDockWindow.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDockWindow</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDockWindow</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDockWindow</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSystemTray </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDockWindow</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDockWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDoubleNumInput.html b/python/pykde/doc/classref/kdeui/KDoubleNumInput.html
new file mode 100644
index 00000000..e873cf0c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDoubleNumInput.html
@@ -0,0 +1,228 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDoubleNumInput</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDoubleNumInput</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDoubleNumInput</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KNumInput </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDoubleNumInput</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleNumInput</b> (value, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleNumInput</b> (lower, upper, value, step = 0.01, precision = 2, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleNumInput instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lower</td><td>double</td><td></td></tr>
+<tr><td>upper</td><td>double</td><td></td></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>step</td><td>double</td><td>0.01</td></tr>
+<tr><td>precision</td><td>int</td><td>2</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleNumInput</b> (below, value, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>below</td><td>KNumInput</td><td></td></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleNumInput</b> (below, lower, upper, value, step = 0.02, precision = 2, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleNumInput instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>below</td><td>KNumInput</td><td></td></tr>
+<tr><td>lower</td><td>double</td><td></td></tr>
+<tr><td>upper</td><td>double</td><td></td></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>step</td><td>double</td><td>0.02</td></tr>
+<tr><td>precision</td><td>int</td><td>2</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>precision</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prefix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>referencePoint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativeValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativeValueChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetEditBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (label, a = AlignLeft | AlignTop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>a</td><td>int</td><td>AlignLeft | AlignTop</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>max</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (min)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrecision</b> (precision)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>precision</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrefix</b> (prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prefix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (min, max, step = 1, slider = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>double</td><td></td></tr>
+<tr><td>max</td><td>double</td><td></td></tr>
+<tr><td>step</td><td>double</td><td>1</td></tr>
+<tr><td>slider</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReferencePoint</b> (ref)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ref</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRelativeValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialValueText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuffix</b> (suffix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>suffix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>specialValueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suffix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDoubleSpinBox.html b/python/pykde/doc/classref/kdeui/KDoubleSpinBox.html
new file mode 100644
index 00000000..de370b80
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDoubleSpinBox.html
@@ -0,0 +1,177 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDoubleSpinBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDoubleSpinBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDoubleSpinBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSpinBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDoubleSpinBox</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleSpinBox instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleSpinBox</b> (lower, upper, step, value, precision = 2, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleSpinBox instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lower</td><td>double</td><td></td></tr>
+<tr><td>upper</td><td>double</td><td></td></tr>
+<tr><td>step</td><td>double</td><td></td></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+<tr><td>precision</td><td>int</td><td>2</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptLocalizedNumbers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineStep</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mapTextToValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mapValueToText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>precision</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptLocalizedNumbers</b> (accept)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accept</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLineStep</b> (step)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>step</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrecision</b> (precision)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>precision</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrecision</b> (precision, force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>precision</td><td>int</td><td></td></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (lower, upper, step = 0.01, precision = 2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lower</td><td>double</td><td></td></tr>
+<tr><td>upper</td><td>double</td><td></td></tr>
+<tr><td>step</td><td>double</td><td>0.01</td></tr>
+<tr><td>precision</td><td>int</td><td>2</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValidator</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QValidator</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotValueChanged</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDoubleValidator.html b/python/pykde/doc/classref/kdeui/KDoubleValidator.html
new file mode 100644
index 00000000..9ed76101
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDoubleValidator.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDoubleValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDoubleValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDoubleValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QDoubleValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDoubleValidator</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleValidator instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDoubleValidator</b> (bottom, top, decimals, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDoubleValidator instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>double</td><td></td></tr>
+<tr><td>top</td><td>double</td><td></td></tr>
+<tr><td>decimals</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptLocalizedNumbers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptLocalizedNumbers</b> (accept)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accept</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValidator.State) pos (int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KDualColorButton.html b/python/pykde/doc/classref/kdeui/KDualColorButton.html
new file mode 100644
index 00000000..a4bd066f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KDualColorButton.html
@@ -0,0 +1,162 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDualColorButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDualColorButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDualColorButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>DualColor</b> = {Foreground, Background
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDualColorButton</b> (parent = 0, name = 0, dialogParent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDualColorButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>dialogParent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDualColorButton</b> (fgColor, bgColor, parent = 0, name = 0, dialogParent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDualColorButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fgColor</td><td>QColor</td><td></td></tr>
+<tr><td>bgColor</td><td>QColor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>dialogParent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>background</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgChanged</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>current</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDualColorButton.DualColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentChanged</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KDualColorButton.DualColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnterEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fgChanged</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>foreground</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metrics</b> (fgRect, bgRect)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fgRect</td><td>QRect</td><td></td></tr>
+<tr><td>bgRect</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackground</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrent</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KDualColorButton.DualColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentColor</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setForeground</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEdFind.html b/python/pykde/doc/classref/kdeui/KEdFind.html
new file mode 100644
index 00000000..d38b945b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEdFind.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEdFind</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEdFind</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEdFind</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEdFind</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEdFind instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>case_sensitive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get_direction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>search</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHistoryCombo)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaseSensitive</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirection</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser1</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textSearchChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEdGotoLine.html b/python/pykde/doc/classref/kdeui/KEdGotoLine.html
new file mode 100644
index 00000000..5a9acb73
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEdGotoLine.html
@@ -0,0 +1,58 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEdGotoLine</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEdGotoLine</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEdGotoLine</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEdGotoLine</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEdGotoLine instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getLineNumber</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEdReplace.html b/python/pykde/doc/classref/kdeui/KEdReplace.html
new file mode 100644
index 00000000..3137e5d3
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEdReplace.html
@@ -0,0 +1,112 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEdReplace</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEdReplace</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEdReplace</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEdReplace</b> (parent = 0, name = 0, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEdReplace instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>case_sensitive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getReplaceText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get_direction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHistoryCombo)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHistoryCombo)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser1</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser2</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textSearchChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEdit.html b/python/pykde/doc/classref/kdeui/KEdit.html
new file mode 100644
index 00000000..c3ff4e43
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEdit.html
@@ -0,0 +1,264 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEdit</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEdit</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEdit</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QMultiLineEdit </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {NONE, FORWARD, BACKWARD
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CursorPositionChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEdit</b> (_parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanWhiteSpace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>computePosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>corrected</b> (originalword, newword, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+<tr><td>newword</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (a0 = 0, initializeWindow = 1, destroyOldWindow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>WId</td><td>0</td></tr>
+<tr><td>initializeWindow</td><td>bool</td><td>1</td></tr>
+<tr><td>destroyOldWindow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentColumn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doGotoLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doReplace</b> (s_pattern, case_sensitive, regex, forward, line, col, replace)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s_pattern</td><td>QString</td><td></td></tr>
+<tr><td>case_sensitive</td><td>bool</td><td></td></tr>
+<tr><td>regex</td><td>bool</td><td></td></tr>
+<tr><td>forward</td><td>bool</td><td></td></tr>
+<tr><td>line</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+<tr><td>replace</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doSearch</b> (s_pattern, case_sensitive, regex, forward, line, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s_pattern</td><td>QString</td><td></td></tr>
+<tr><td>case_sensitive</td><td>bool</td><td></td></tr>
+<tr><td>regex</td><td>bool</td><td></td></tr>
+<tr><td>forward</td><td>bool</td><td></td></tr>
+<tr><td>line</td><td>int</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureCursorVisible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotUrlDrop</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTextStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>installRBPopup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>misspelling</b> (word, a0, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>posToRowCol</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>line (uint) col (uint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>repeatSearch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveText</b> (a0, softWrap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTextStream</td><td></td></tr>
+<tr><td>softWrap</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTextStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>search</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectWordUnderCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCursor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCursor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOverwriteEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spellcheck_start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spellcheck_stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggle_overwrite_signal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportPaintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEditListBox.CustomEditor.html b/python/pykde/doc/classref/kdeui/KEditListBox.CustomEditor.html
new file mode 100644
index 00000000..893e2e9f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEditListBox.CustomEditor.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEditListBox.CustomEditor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEditListBox.CustomEditor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEditListBox.CustomEditor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CustomEditor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CustomEditor instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CustomEditor</b> (repWidget, edit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CustomEditor instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>repWidget</td><td>QWidget</td><td></td></tr>
+<tr><td>edit</td><td>KLineEdit</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CustomEditor</b> (combo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CustomEditor instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>combo</td><td>KComboBox</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineEdit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>representationWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLineEdit</b> (edit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>edit</td><td>KLineEdit</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRepresentationWidget</b> (repWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>repWidget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEditListBox.html b/python/pykde/doc/classref/kdeui/KEditListBox.html
new file mode 100644
index 00000000..3735554b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEditListBox.html
@@ -0,0 +1,210 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEditListBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEditListBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEditListBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QGroupBox </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {All
+}<li><b>Button</b> = {Add, Remove, UpDown
+}<li><b>Button</b> = {Add, Remove, UpDown, All
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KEditListBox</b> (parent = 0, name = 0, checkAtEntering = 0, buttons = All)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditListBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>checkAtEntering</td><td>bool</td><td>0</td></tr>
+<tr><td>buttons</td><td>int</td><td>All</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditListBox</b> (title, parent = 0, name = 0, checkAtEntering = 0, buttons = All)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditListBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>checkAtEntering</td><td>bool</td><td>0</td></tr>
+<tr><td>buttons</td><td>int</td><td>All</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditListBox</b> (title, customEditor, parent = 0, name = 0, checkAtEntering = 0, buttons = All)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditListBox instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>customEditor</td><td>KEditListBox.CustomEditor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>checkAtEntering</td><td>bool</td><td>0</td></tr>
+<tr><td>buttons</td><td>int</td><td>All</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>added</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>downButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMoveButtons</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (text, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertStrList</b> (list, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStrList</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertStrList</b> (list, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStrList</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertStrList</b> (list, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>a Python list of strings</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertStringList</b> (list, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineEdit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListBox)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveItemDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveItemUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removed</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtons</b> (buttons)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buttons</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typedSomething</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEditToolbar.html b/python/pykde/doc/classref/kdeui/KEditToolbar.html
new file mode 100644
index 00000000..a8073ccf
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEditToolbar.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEditToolbar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEditToolbar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEditToolbar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEditToolbar</b> (collection, xmlfile = QString .null, global = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>collection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>global</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbar</b> (defaultToolbar, collection, xmlfile = QString .null, global = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbar instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultToolbar</td><td>QString</td><td></td></tr>
+<tr><td>collection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>global</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbar</b> (factory, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbar</b> (defaultToolbar, factory, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbar instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultToolbar</td><td>QString</td><td></td></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptOK</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newToolbarConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultToolbar</b> (toolbarName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toolbarName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotApply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KEditToolbarWidget.html b/python/pykde/doc/classref/kdeui/KEditToolbarWidget.html
new file mode 100644
index 00000000..65e87c03
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KEditToolbarWidget.html
@@ -0,0 +1,188 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEditToolbarWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEditToolbarWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEditToolbarWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget, KXMLGUIClient </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEditToolbarWidget</b> (collection, xmlfile = QString .null, global = 1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbarWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>collection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>global</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbarWidget</b> (defaultToolbar, collection, file = QString .null, global = 1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbarWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultToolbar</td><td>QString</td><td></td></tr>
+<tr><td>collection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>file</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>global</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbarWidget</b> (factory, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbarWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KEditToolbarWidget</b> (defaultToolbar, factory, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEditToolbarWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultToolbar</td><td>QString</td><td></td></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableOk</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initKPart</b> (factory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initNonKPart</b> (collection, file, global)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>collection</td><td>KActionCollection</td><td></td></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+<tr><td>global</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertActive</b> (item, before, prepend = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadActionList</b> (elem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elem</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadToolbarCombo</b> (defaultToolbar = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultToolbar</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadToolbarCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveActive</b> (item, before)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rebuildKXMLGUIClients</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeActive</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActiveSelected</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotChangeIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDownButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDropped</b> (list, e, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KListView</td><td></td></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInactiveSelected</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInsertButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRemoveButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToolbarSelected</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUpButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateLocal</b> (elem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elem</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFloatValidator.html b/python/pykde/doc/classref/kdeui/KFloatValidator.html
new file mode 100644
index 00000000..ae556a23
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFloatValidator.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFloatValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFloatValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFloatValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFloatValidator</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFloatValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFloatValidator</b> (bottom, top, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFloatValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>double</td><td></td></tr>
+<tr><td>top</td><td>double</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFloatValidator</b> (bottom, top, localeAware, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFloatValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>double</td><td></td></tr>
+<tr><td>top</td><td>double</td><td></td></tr>
+<tr><td>localeAware</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptLocalizedNumbers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bottom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptLocalizedNumbers</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (bottom, top)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>double</td><td></td></tr>
+<tr><td>top</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>top</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State) a1 (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontAction.html b/python/pykde/doc/classref/kdeui/KFontAction.html
new file mode 100644
index 00000000..6332ba53
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontAction.html
@@ -0,0 +1,252 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSelectAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFontAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (fontListCriteria, text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fontListCriteria</td><td>uint</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (fontListCriteria, text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fontListCriteria</td><td>uint</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (family)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>family</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontChooser.html b/python/pykde/doc/classref/kdeui/KFontChooser.html
new file mode 100644
index 00000000..48836d36
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontChooser.html
@@ -0,0 +1,147 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontChooser</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontChooser</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontChooser</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>FontColumn</b> = {FamilyList, StyleList, SizeList
+}<li><b>FontColumn</b> = {FamilyList, StyleList, SizeList, CharsetList
+}<li><b>FontDiff</b> = {FontDiffFamily, FontDiffStyle, FontDiffSize
+}<li><b>FontListCriteria</b> = {FixedWidthFonts, ScalableFonts, SmoothScalableFonts
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFontChooser</b> (parent = 0, name = "", onlyFixed = 0, fontList = QStringList(), makeFrame = 1, visibleListSize = 8, diff = 0, sizeIsRelativeState = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>,</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>string</td><td>""</td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+<tr><td>fontList</td><td>QStringList</td><td>QStringList()</td></tr>
+<tr><td>makeFrame</td><td>bool</td><td>1</td></tr>
+<tr><td>visibleListSize</td><td>int</td><td>8</td></tr>
+<tr><td>diff</td><td>bool</td><td>0</td></tr>
+<tr><td>sizeIsRelativeState</td><td>QButton.ToggleState</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableColumn</b> (column, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontDiffFlags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSelected</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFontList</b> (list, fontListCriteria)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>fontListCriteria</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getXLFD</b> (theFont)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theFont</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sampleText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackgroundColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (font, onlyFixed = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSampleBoxVisible</b> (visible)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>visible</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSampleText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSizeIsRelative</b> (relative)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>relative</td><td>QButton.ToggleState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeIsRelative</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QButton.ToggleState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontCombo.html b/python/pykde/doc/classref/kdeui/KFontCombo.html
new file mode 100644
index 00000000..2fbcf87d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontCombo.html
@@ -0,0 +1,136 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontCombo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontCombo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontCombo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KComboBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFontCombo</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontCombo</b> (fonts, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fonts</td><td>QStringList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bold</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayFonts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>italic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBold</b> (bold)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bold</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentFont</b> (family)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>family</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFonts</b> (fonts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fonts</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItalic</b> (italic)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>italic</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStrikeOut</b> (strikeOut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>strikeOut</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUnderline</b> (underline)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>underline</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotModified</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strikeOut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>underline</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateFonts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontDialog.html b/python/pykde/doc/classref/kdeui/KFontDialog.html
new file mode 100644
index 00000000..823f9e57
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontDialog.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFontDialog</b> (parent = 0, name = "", onlyFixed = 0, modal = 0, fontlist = QStringList(), makeFrame = 1, diff = 0, sizeIsRelativeState = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>string</td><td>""</td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>fontlist</td><td>QStringList</td><td>QStringList()</td></tr>
+<tr><td>makeFrame</td><td>bool</td><td>1</td></tr>
+<tr><td>diff</td><td>bool</td><td>0</td></tr>
+<tr><td>sizeIsRelativeState</td><td>QButton.ToggleState</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSelected</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFont</b> (theFont, onlyFixed = False, parent = 0, makeFrame = True, sizeIsRelative = QButton.Off)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) sizeIsRelative (QButton.ToggleState),</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theFont</td><td>QFont</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>False</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>makeFrame</td><td>bool</td><td>True</td></tr>
+<tr><td>sizeIsRelative</td><td>QButton.ToggleState</td><td>QButton.Off</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFontAndText</b> (theFont, theString, onlyFixed = False, parent = 0, makeFrame = true, sizeIsRelative = QButton.Off)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) sizeIsRelative (QButton.ToggleState),</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theFont</td><td>QFont</td><td></td></tr>
+<tr><td>theString</td><td>QString</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>False</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>makeFrame</td><td>bool</td><td>true</td></tr>
+<tr><td>sizeIsRelative</td><td>QButton.ToggleState</td><td>QButton.Off</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFontDiff</b> (theFont, diffFlags, onlyFixed = False, parent = 0, makeFrame = true, sizeIsRelative = QButton.Off)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) sizeIsRelative (QButton.ToggleState),</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>theFont</td><td>QFont</td><td></td></tr>
+<tr><td>diffFlags</td><td>int</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>False</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>makeFrame</td><td>bool</td><td>true</td></tr>
+<tr><td>sizeIsRelative</td><td>QButton.ToggleState</td><td>QButton.Off</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (font, onlyFixed = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSizeIsRelative</b> (relative)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>relative</td><td>QButton.ToggleState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeIsRelative</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QButton.ToggleState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontRequester.html b/python/pykde/doc/classref/kdeui/KFontRequester.html
new file mode 100644
index 00000000..26a1277e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontRequester.html
@@ -0,0 +1,115 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontRequester</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontRequester</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontRequester</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFontRequester</b> (parent = 0, name = 0, onlyFixed = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontRequester instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>button</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPushButton)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displaySampleText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>font</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFont)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSelected</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFixedOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QLabel)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sampleText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (font, onlyFixed = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+<tr><td>onlyFixed</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSampleText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KFontSizeAction.html b/python/pykde/doc/classref/kdeui/KFontSizeAction.html
new file mode 100644
index 00000000..04dddf27
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KFontSizeAction.html
@@ -0,0 +1,263 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFontSizeAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFontSizeAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFontSizeAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSelectAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFontSizeAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFontSizeAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFontSizeAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSizeChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontSizeChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFontSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFontSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KGradientSelector.html b/python/pykde/doc/classref/kdeui/KGradientSelector.html
new file mode 100644
index 00000000..50f0f4e9
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KGradientSelector.html
@@ -0,0 +1,115 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGradientSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGradientSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGradientSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSelector </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KGradientSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGradientSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KGradientSelector</b> (o, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGradientSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>Orientation</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>secondColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>secondText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColors</b> (col1, col2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col1</td><td>QColor</td><td></td></tr>
+<tr><td>col2</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFirstColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFirstText</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSecondColor</b> (col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSecondText</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (t1, t2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t1</td><td>QString</td><td></td></tr>
+<tr><td>t2</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KGuiItem.html b/python/pykde/doc/classref/kdeui/KGuiItem.html
new file mode 100644
index 00000000..8ff2fe02
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KGuiItem.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KGuiItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KGuiItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KGuiItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KGuiItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGuiItem instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KGuiItem</b> (text, iconName = QString .null, toolTip = QString .null, whatsThis = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGuiItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>iconName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>toolTip</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>whatsThis</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KGuiItem</b> (text, iconSet, toolTip = QString .null, whatsThis = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGuiItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>iconSet</td><td>QIconSet</td><td></td></tr>
+<tr><td>toolTip</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>whatsThis</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KGuiItem</b> (rhs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KGuiItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rhs</td><td>KGuiItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasIconSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSet</b> (a0, size = 0, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconSet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plainText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconName</b> (iconName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSet</b> (iconset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolTip</b> (tooltip)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tooltip</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWhatsThis</b> (whatsThis)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>whatsThis</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KHSSelector.html b/python/pykde/doc/classref/kdeui/KHSSelector.html
new file mode 100644
index 00000000..7adc4ba1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KHSSelector.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHSSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHSSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHSSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KXYSelector </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KHSSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHSSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (painter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawPalette</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KHelpMenu.html b/python/pykde/doc/classref/kdeui/KHelpMenu.html
new file mode 100644
index 00000000..2a2ee9d0
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KHelpMenu.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHelpMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHelpMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHelpMenu</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>MenuId</b> = {menuHelpContents, menuWhatsThis, menuAboutApp, menuAboutKDE, menuReportBug
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KHelpMenu</b> (parent = 0, aboutAppText = QString .null, showWhatsThis = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHelpMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>aboutAppText</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>showWhatsThis</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KHelpMenu</b> (parent, aboutData, showWhatsThis = 1, actions = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHelpMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td></td></tr>
+<tr><td>showWhatsThis</td><td>bool</td><td>1</td></tr>
+<tr><td>actions</td><td>KActionCollection</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutKDE</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appHelpActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextHelpActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportBug</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showAboutApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KHistoryCombo.html b/python/pykde/doc/classref/kdeui/KHistoryCombo.html
new file mode 100644
index 00000000..a5528dad
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KHistoryCombo.html
@@ -0,0 +1,124 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHistoryCombo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHistoryCombo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHistoryCombo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KComboBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KHistoryCombo</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHistoryCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KHistoryCombo</b> (useCompletion, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHistoryCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useCompletion</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addToHistory</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>historyItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmapProvider</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmapProvider)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeFromHistory</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHistoryItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHistoryItems</b> (items, setCompletionList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>setCompletionList</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmapProvider</b> (prov)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prov</td><td>KPixmapProvider</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIconView.html b/python/pykde/doc/classref/kdeui/KIconView.html
new file mode 100644
index 00000000..69476284
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIconView.html
@@ -0,0 +1,213 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QIconView </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Mode</b> = {Execute, Select
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KIconView</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelPendingHeldSignal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragLeaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragLeaveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitExecute</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>held</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconTextHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Mode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconTextHeight</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>KIconView.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoSelect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnViewport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSettingsChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>takeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateDragHoldItem</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIconViewItem.html b/python/pykde/doc/classref/kdeui/KIconViewItem.html
new file mode 100644
index 00000000..1da8b4b1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIconViewItem.html
@@ -0,0 +1,150 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QIconViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconViewItem</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>after</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, after, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>after</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, text, icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, after, text, icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>after</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, text, picture)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>picture</td><td>QPicture</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewItem</b> (parent, after, text, picture)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>after</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>picture</td><td>QPicture</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calcRect</b> (text_ = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text_</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintItem</b> (p, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>c</td><td>QColorGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintPixmap</b> (p, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>c</td><td>QColorGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintText</b> (p, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>c</td><td>QColorGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmapSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmapSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wordWrap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KWordWrap)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIconViewSearchLine.html b/python/pykde/doc/classref/kdeui/KIconViewSearchLine.html
new file mode 100644
index 00000000..40281728
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIconViewSearchLine.html
@@ -0,0 +1,131 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconViewSearchLine</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconViewSearchLine</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconViewSearchLine</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconViewSearchLine</b> (parent = 0, iconView = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewSearchLine instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>iconView</td><td>QIconView</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconViewSearchLine</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconViewSearchLine instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateSearch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caseSensitive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIconView)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (iconView = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconView</td><td>QIconView</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemMatches</b> (item, s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queueSearch</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaseSensitive</b> (cs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cs</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconView</b> (iv)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iv</td><td>QIconView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSearch</b> (s = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KInputDialog.html b/python/pykde/doc/classref/kdeui/KInputDialog.html
new file mode 100644
index 00000000..9863eca1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KInputDialog.html
@@ -0,0 +1,217 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KInputDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KInputDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KInputDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KInputDialog</b> (caption, label, value, parent, name, validator, mask)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInputDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>validator</td><td>QValidator</td><td></td></tr>
+<tr><td>mask</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInputDialog</b> (caption, label, value, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInputDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInputDialog</b> (caption, label, value, minValue, maxValue, step, base, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInputDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+<tr><td>minValue</td><td>int</td><td></td></tr>
+<tr><td>maxValue</td><td>int</td><td></td></tr>
+<tr><td>step</td><td>int</td><td></td></tr>
+<tr><td>base</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInputDialog</b> (caption, label, list, current, editable, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInputDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>int</td><td></td></tr>
+<tr><td>editable</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KInputDialog</b> (caption, label, list, select, editable, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KInputDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>select</td><td>QStringList</td><td></td></tr>
+<tr><td>editable</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDouble</b> (caption, label, value = 0, minValue = -2147483647, maxValue = 2147483647, step = 0.1, decimals = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>double</td><td>0</td></tr>
+<tr><td>minValue</td><td>double</td><td>-2147483647</td></tr>
+<tr><td>maxValue</td><td>double</td><td>2147483647</td></tr>
+<tr><td>step</td><td>double</td><td>0.1</td></tr>
+<tr><td>decimals</td><td>int</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getDouble</b> (caption, label, value = 0, minValue = -2147483647, maxValue = 2147483647, decimals = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getInteger</b> (caption, label, value = 0, minValue = -2147483647, maxValue = 2147483647, step = 1, base = 10, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>int</td><td>0</td></tr>
+<tr><td>minValue</td><td>int</td><td>-2147483647</td></tr>
+<tr><td>maxValue</td><td>int</td><td>2147483647</td></tr>
+<tr><td>step</td><td>int</td><td>1</td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getInteger</b> (caption, label, value = 0, minValue = -2147483647, maxValue = 2147483647, step = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getItem</b> (caption, label, list, current = 0, editable = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>current</td><td>int</td><td>0</td></tr>
+<tr><td>editable</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getItemList</b> (caption, label, list = QStringList (), select = QStringList (), multiple = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>select</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>multiple</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getMultiLineText</b> (caption, label, value = QString .null, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getText</b> (caption, label, value = QString .null, parent = 0, name = 0, validator = 0, mask = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>validator</td><td>QValidator</td><td>0</td></tr>
+<tr><td>mask</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> (caption, label, value = QString .null, parent = 0, name = 0, validator = 0, mask = QString .null, whatsThis = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>validator</td><td>QValidator</td><td>0</td></tr>
+<tr><td>mask</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>whatsThis</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KInputDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIntNumInput.html b/python/pykde/doc/classref/kdeui/KIntNumInput.html
new file mode 100644
index 00000000..4f58389a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIntNumInput.html
@@ -0,0 +1,190 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIntNumInput</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIntNumInput</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIntNumInput</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KNumInput </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIntNumInput</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIntNumInput</b> (value, parent = 0, base = 10, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIntNumInput</b> (below, value, parent = 0, base = 10, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>below</td><td>KNumInput</td><td></td></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prefix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>referencePoint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativeValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relativeValueChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditFocus</b> (mark = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mark</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (label, a = AlignLeft | AlignTop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>a</td><td>int</td><td>AlignLeft | AlignTop</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>max</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (min)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrefix</b> (prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prefix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (min, max, step = 1, slider = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>int</td><td></td></tr>
+<tr><td>max</td><td>int</td><td></td></tr>
+<tr><td>step</td><td>int</td><td>1</td></tr>
+<tr><td>slider</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReferencePoint</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRelativeValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpecialValueText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuffix</b> (suffix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>suffix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>specialValueText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suffix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIntSpinBox.html b/python/pykde/doc/classref/kdeui/KIntSpinBox.html
new file mode 100644
index 00000000..3700d2f5
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIntSpinBox.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIntSpinBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIntSpinBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIntSpinBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSpinBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIntSpinBox</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntSpinBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIntSpinBox</b> (lower, upper, step, value, base = 10, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntSpinBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lower</td><td>int</td><td></td></tr>
+<tr><td>upper</td><td>int</td><td></td></tr>
+<tr><td>step</td><td>int</td><td></td></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mapTextToValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mapValueToText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBase</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditFocus</b> (mark)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mark</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KIntValidator.html b/python/pykde/doc/classref/kdeui/KIntValidator.html
new file mode 100644
index 00000000..c399ab09
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KIntValidator.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIntValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIntValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIntValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIntValidator</b> (parent, base = 10, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIntValidator</b> (bottom, top, parent, base = 10, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIntValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>int</td><td></td></tr>
+<tr><td>top</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>base</td><td>int</td><td>10</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bottom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBase</b> (base)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (bottom, top)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bottom</td><td>int</td><td></td></tr>
+<tr><td>top</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>top</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State) a1 (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KJanusWidget.html b/python/pykde/doc/classref/kdeui/KJanusWidget.html
new file mode 100644
index 00000000..a68363a2
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KJanusWidget.html
@@ -0,0 +1,288 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KJanusWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KJanusWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KJanusWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Face</b> = {TreeList, Tabbed, Plain, Swallow, IconList
+}</ul>
+<h3>methods</h3><ul>
+<li><b>FindParent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>InsertTreeListItem</b> (items, pixmap, page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>page</td><td>QFrame</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KJanusWidget</b> (parent = 0, name = 0, face = Plain)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KJanusWidget instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>face</td><td>int</td><td>Plain</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowPage</b> (page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activePageIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButtonBelowList</b> (text, recv, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>recv</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButtonBelowList</b> (guiitem, recv, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>guiitem</td><td>KGuiItem</td><td></td></tr>
+<tr><td>recv</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGridPage</b> (n, dir, itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QGrid)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+<tr><td>dir</td><td>Qt.Orientation</td><td></td></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGridPage</b> (n, dir, items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QGrid)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+<tr><td>dir</td><td>Qt.Orientation</td><td></td></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addHBoxPage</b> (itemName, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QHBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>itemName</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addHBoxPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QHBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (item, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPageWidget</b> (page, items, header, pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QFrame</td><td></td></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVBoxPage</b> (item, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVBoxPage</b> (items, header = QString .null, pixmap = QPixmap ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>header</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td>QPixmap ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWidgetBelowList</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>face</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageIndex</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageTitle</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageWidget</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plainPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QFrame)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePage</b> (page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFocus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFolderIcon</b> (path, pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QStringList</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconListAllVisible</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRootIsDecorated</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowIconsInTreeList</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSwallowedWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTreeListAutoResize</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPage</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPage</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unfoldTreeList</b> (persist = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>persist</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KKeyButton.html b/python/pykde/doc/classref/kdeui/KKeyButton.html
new file mode 100644
index 00000000..1b87d009
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KKeyButton.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KKeyButton</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>captureShortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>capturedShortcut</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButton</b> (_painter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_painter</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (cut, bQtShortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>bQtShortcut</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KKeyChooser.html b/python/pykde/doc/classref/kdeui/KKeyChooser.html
new file mode 100644
index 00000000..03abf3c8
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KKeyChooser.html
@@ -0,0 +1,280 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyChooser</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyChooser</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyChooser</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ActionType</b> = {Application, ApplicationGlobal, Standard, Global
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KKeyChooser</b> (parent, type = Application, bAllowLetterShortcuts = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KKeyChooser.ActionType</td><td>Application</td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (coll, parent, bAllowLetterShortcuts = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>coll</td><td>KActionCollection</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (actions, parent, bAllowLetterShortcuts = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (actions, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KGlobalAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (a0, parent, type = Application, bAllowLetterShortcuts = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KKeyChooser.ActionType</td><td>Application</td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (actions, parent, bCheckAgainstStdKeys, bAllowLetterShortcuts, bAllowWinKey = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>bCheckAgainstStdKeys</td><td>bool</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+<tr><td>bAllowWinKey</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyChooser</b> (actions, parent, bCheckAgainstStdKeys, bAllowLetterShortcuts, bAllowWinKey = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyChooser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>actions</td><td>KGlobalAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>bCheckAgainstStdKeys</td><td>bool</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+<tr><td>bAllowWinKey</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>_warning</b> (seq, sAction, sTitle)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>seq</td><td>KKeySequence</td><td></td></tr>
+<tr><td>sAction</td><td>QString</td><td></td></tr>
+<tr><td>sTitle</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buildListView</b> (iList, title = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iList</td><td>uint</td><td></td></tr>
+<tr><td>title</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buildListView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>capturedShortcut</b> (cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkGlobalShortcutsConflict</b> (cut, warnUser, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>warnUser</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStandardShortcutsConflict</b> (cut, warnUser, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>warnUser</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commitChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontChange</b> (_font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initGUI</b> (type, bAllowLetterShortcuts)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KKeyChooser.ActionType</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KGlobalAccel</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KShortcutList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isKeyPresent</b> (cut, warnuser = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>warnuser</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isKeyPresentLocally</b> (cut, ignoreItem, warnText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyChange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listSync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readGlobalKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreferFourModifierKeys</b> (preferFourModifierKeys)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>preferFourModifierKeys</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (cut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCustomKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDefaultKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotListItemDoubleClicked</b> (ipoQListViewItem, ipoQPoint, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ipoQListViewItem</td><td>QListViewItem</td><td></td></tr>
+<tr><td>ipoQPoint</td><td>QPoint</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotListItemSelected</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNoKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSettingsChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>syncToConfig</b> (sConfigGroup, pConfig, bClearUnset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sConfigGroup</td><td>QString</td><td></td></tr>
+<tr><td>pConfig</td><td>KConfigBase</td><td></td></tr>
+<tr><td>bClearUnset</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KKeyDialog.html b/python/pykde/doc/classref/kdeui/KKeyDialog.html
new file mode 100644
index 00000000..8bea4582
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KKeyDialog.html
@@ -0,0 +1,170 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KKeyDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KKeyDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KKeyDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KKeyDialog</b> (bAllowLetterShortcuts = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KKeyDialog</b> (a0, bAllowLetterShortcuts = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KKeyDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KKeyChooser.ActionType</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commitChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (coll, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>coll</td><td>KActionCollection</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (keys, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (keys, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KGlobalAccel</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (coll, bAllowLetterShortcuts, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>coll</td><td>KActionCollection</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (keys, bAllowLetterShortcuts, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KAccel</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (keys, bAllowLetterShortcuts, parent = 0, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KGlobalAccel</td><td></td></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureKeys</b> (keys, save_settings = 1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KAccel</td><td></td></tr>
+<tr><td>save_settings</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureKeys</b> (keys, save_settings = 1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>KGlobalAccel</td><td></td></tr>
+<tr><td>save_settings</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureKeys</b> (coll, a0, save_settings = 1, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>coll</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>save_settings</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0, title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KActionCollection</td><td></td></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KLanguageButton.html b/python/pykde/doc/classref/kdeui/KLanguageButton.html
new file mode 100644
index 00000000..d212ca45
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KLanguageButton.html
@@ -0,0 +1,173 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLanguageButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLanguageButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLanguageButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLanguageButton</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLanguageButton instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLanguageButton</b> (text, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLanguageButton instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>current</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (icon, text, id, submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QIconSet</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (text, id, submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertLanguage</b> (path, name, sub = QString .null, submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>sub</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertSeparator</b> (submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertSubmenu</b> (icon, text, id, submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QIconSet</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertSubmenu</b> (text, id, submenu = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+<tr><td>submenu</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KLed.html b/python/pykde/doc/classref/kdeui/KLed.html
new file mode 100644
index 00000000..da8f7a6a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KLed.html
@@ -0,0 +1,162 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLed</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLed</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLed</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Look</b> = {Flat, Raised, Sunken
+}<li><b>Shape</b> = {Rectangular, Circular
+}<li><b>State</b> = {Off, On
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KLed</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLed instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLed</b> (col, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLed</b> (col, state, look, shape, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLed instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>col</td><td>QColor</td><td></td></tr>
+<tr><td>state</td><td>KLed.State</td><td></td></tr>
+<tr><td>look</td><td>KLed.Look</td><td></td></tr>
+<tr><td>shape</td><td>KLed.Shape</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>darkFactor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureRoundLed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>look</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Look)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>off</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>on</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCachedPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintFlat</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintRectFrame</b> (raised)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>raised</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintRound</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintSunken</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDarkFactor</b> (darkfactor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>darkfactor</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLook</b> (look)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>look</td><td>KLed.Look</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShape</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KLed.Shape</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>KLed.State</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shape</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Shape)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KLineEdit.html b/python/pykde/doc/classref/kdeui/KLineEdit.html
new file mode 100644
index 00000000..7ba2aa83
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KLineEdit.html
@@ -0,0 +1,329 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLineEdit</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLineEdit</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLineEdit</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLineEdit, KCompletionBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLineEdit</b> (string, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLineEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KLineEdit</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLineEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowContextMenu</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoSuggest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionBox</b> (create)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletionBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionBoxActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionModeChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KGlobalSettings.Completion</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QContextMenuEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (a0 = 0, initializeWindow = 1, destroyOldWindow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>WId</td><td>0</td></tr>
+<tr><td>initializeWindow</td><td>bool</td><td>1</td></tr>
+<tr><td>destroyOldWindow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cursorAtEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isContextMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSqueezedTextEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isURLDropsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>originalText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>returnPressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateText</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedItems</b> (items, autoSuggest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+<tr><td>autoSuggest</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletedText</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionBox</b> (box)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>box</td><td>KCompletionBox</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KGlobalSettings.Completion</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompletionObject</b> (a0, hsig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KCompletion</td><td></td></tr>
+<tr><td>hsig</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setContextMenuEnabled</b> (showMenu)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showMenu</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableSqueezedText</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSqueezedText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTrapReturnKey</b> (trap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>trap</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLDropsEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserSelection</b> (userSelection)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>userSelection</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancelled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substringCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textRotation</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KCompletionBase.KeyBindingType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trapReturnKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userCancelled</b> (cancelText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cancelText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KLineEditDlg.html b/python/pykde/doc/classref/kdeui/KLineEditDlg.html
new file mode 100644
index 00000000..9e85cd3d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KLineEditDlg.html
@@ -0,0 +1,85 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KLineEditDlg</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KLineEditDlg</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KLineEditDlg</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KLineEditDlg</b> (_text, _value, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KLineEditDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_text</td><td>QString</td><td></td></tr>
+<tr><td>_value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getText</b> (text, value, parent, validator = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>validator</td><td>QValidator</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getText</b> (caption, text, value = QString .null, parent = 0, validator = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString) ok (bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>validator</td><td>QValidator</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineEdit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTextChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListAction.html b/python/pykde/doc/classref/kdeui/KListAction.html
new file mode 100644
index 00000000..73284ada
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListAction.html
@@ -0,0 +1,221 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSelectAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KListAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListBox.html b/python/pykde/doc/classref/kdeui/KListBox.html
new file mode 100644
index 00000000..b4845e57
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListBox.html
@@ -0,0 +1,124 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KListBox</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitExecute</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoSelect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnViewport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSettingsChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListView.html b/python/pykde/doc/classref/kdeui/KListView.html
new file mode 100644
index 00000000..eb4f517e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListView.html
@@ -0,0 +1,712 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListView </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>SelectionModeExt</b> = {Single, Multi, Extended, NoSelection, FileManager
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KListView</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToMove</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptDrag</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateAutomaticSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addColumn</b> (label, width = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addColumn</b> (iconset, label, width = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alternateBackground</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ascendingSort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoOpen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>automaticSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>below</b> (rect, p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rect</td><td>QRect</td><td></td></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>below</b> (i, p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>QListViewItem</td><td></td></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanDropVisualizer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanItemHighlighter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>columnSorted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragLeaveEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDragLeaveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsMouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> (l, i, p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>l</td><td>KListView</td><td></td></tr>
+<tr><td>i</td><td>QListViewItem</td><td></td></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createChildren</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deactivateAutomaticSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>depthToPixels</b> (depth)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>depth</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAutoSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doneEditing</b> (item, row)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>row</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (item, pos, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.3.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a1</td><td>QPoint</td><td></td></tr>
+<tr><td>a2</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawDropVisualizer</b> (p, parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawItemHighlighter</b> (painter, item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropHighlighter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropVisualizer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropVisualizerWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (e, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (list, e, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KListView</td><td></td></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (list, e, parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KListView</td><td></td></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (e, parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitContextMenu</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a1</td><td>QPoint</td><td></td></tr>
+<tr><td>a2</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitContextMenu</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KListView</td><td></td></tr>
+<tr><td>a1</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitExecute</b> (item, pos, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executed</b> (item, pos, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileManagerKeyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findDrop</b> (pos, parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (fe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fe</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fullWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExecuteArea</b> (point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>point</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExecuteArea</b> (x)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRenameable</b> (column)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemAdded</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemAtIndex</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListViewItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemIndex</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemRemoved</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemRenamed</b> (item, str, col)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemRenamed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemsMovable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemsRenameable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListViewItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QListViewItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuShortCutPressed</b> (list, item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KListView</td><td></td></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>movableDropEvent</b> (parent, afterme)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>afterme</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveItem</b> (item, parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moved</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moved</b> (item, afterFirst, afterNow)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>afterFirst</td><td>QListViewItem</td><td></td></tr>
+<tr><td>afterNow</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moved</b> (items, afterFirst, afterNow)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QPtrList<QListViewItem></td><td></td></tr>
+<tr><td>afterFirst</td><td>QPtrList<QListViewItem></td><td></td></tr>
+<tr><td>afterNow</td><td>QPtrList<QListViewItem></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeColumn</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rename</b> (item, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>renameLineEdit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetAutoSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreLayout</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveLayout</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<QListViewItem>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedItems</b> (includeHiddenItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<QListViewItem>)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>includeHiddenItems</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionModeExt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(SelectionModeExt)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptDrops</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlternateBackground</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoOpen</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCreateChildren</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDragEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropHighlighter</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropVisualizer</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropVisualizerWidth</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFullWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFullWidth</b> (fullWidth)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fullWidth</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemsMovable</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemsRenameable</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRenameable</b> (column, yesno = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+<tr><td>yesno</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionModeExt</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KListView.SelectionModeExt</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShadeSortColumn</b> (shadeSortColumn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shadeSortColumn</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (column, ascending = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+<tr><td>ascending</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabOrderedRenaming</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTooltipColumn</b> (column)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shadeSortColumn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTooltip</b> (item, pos, column)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoSelect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDragExpand</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHeaderChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMouseButtonClicked</b> (btn, item, pos, c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>btn</td><td>int</td><td></td></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>c</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnViewport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSettingsChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startDrag</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabOrderedRenaming</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>takeItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tooltip</b> (item, column)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tooltipColumn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportPaintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportResizeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListViewItem.html b/python/pykde/doc/classref/kdeui/KListViewItem.html
new file mode 100644
index 00000000..aaf6079f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListViewItem.html
@@ -0,0 +1,162 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KListViewItem</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, a0, a1 = QString .null, a2 = QString .null, a3 = QString .null, a4 = QString .null, a5 = QString .null, a6 = QString .null, a7 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a4</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a5</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a6</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a7</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, a0, a1 = QString .null, a2 = QString .null, a3 = QString .null, a4 = QString .null, a5 = QString .null, a6 = QString .null, a7 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a4</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a5</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a6</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a7</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, after, a0, a1 = QString .null, a2 = QString .null, a3 = QString .null, a4 = QString .null, a5 = QString .null, a6 = QString .null, a7 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a4</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a5</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a6</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a7</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewItem</b> (parent, after, a0, a1 = QString .null, a2 = QString .null, a3 = QString .null, a4 = QString .null, a5 = QString .null, a6 = QString .null, a7 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListViewItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a4</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a5</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a6</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a7</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundColor</b> (column)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAlternate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintCell</b> (p, cg, column, width, alignment)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>cg</td><td>QColorGroup</td><td></td></tr>
+<tr><td>column</td><td>int</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>alignment</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>takeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListViewSearchLine.html b/python/pykde/doc/classref/kdeui/KListViewSearchLine.html
new file mode 100644
index 00000000..34024ae9
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListViewSearchLine.html
@@ -0,0 +1,132 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListViewSearchLine</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListViewSearchLine</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListViewSearchLine</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KListViewSearchLine</b> (parent = 0, listView = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewSearchLine instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>listView</td><td>KListView</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KListViewSearchLine</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewSearchLine instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateSearch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caseSensitive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemMatches</b> (item, s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keepParentsVisible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KListView)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queueSearch</b> (search)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>search</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchColumns</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<int>)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaseSensitive</b> (cs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cs</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeepParentsVisible</b> (v)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>v</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setListView</b> (lv)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lv</td><td>KListView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSearchColumns</b> (columns)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>columns</td><td>QValueList<int></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSearch</b> (s = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KListViewSearchLineWidget.html b/python/pykde/doc/classref/kdeui/KListViewSearchLineWidget.html
new file mode 100644
index 00000000..c746f468
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KListViewSearchLineWidget.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KListViewSearchLineWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KListViewSearchLineWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KListViewSearchLineWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QHBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KListViewSearchLineWidget</b> (listView = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KListViewSearchLineWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>listView</td><td>KListView</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createSearchLine</b> (listView)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KListViewSearchLine)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>listView</td><td>KListView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createWidgets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>searchLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KListViewSearchLine)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMacroCommand.html b/python/pykde/doc/classref/kdeui/KMacroCommand.html
new file mode 100644
index 00000000..aab58dbd
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMacroCommand.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMacroCommand</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMacroCommand</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMacroCommand</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KNamedCommand </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMacroCommand</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMacroCommand instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCommand</b> (command)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>command</td><td>KCommand</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>execute</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unexecute</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMainWindow.html b/python/pykde/doc/classref/kdeui/KMainWindow.html
new file mode 100644
index 00000000..89d56235
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMainWindow.html
@@ -0,0 +1,421 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMainWindow</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMainWindow</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMainWindow</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QMainWindow, KXMLGUIBuilder, KXMLGUIClient </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>CreationFlags</b> = {NoDCOPObject
+}<li><b>StandardWindowOptions</b> = {ToolBar, Keys, StatusBar, Save, Create
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMainWindow</b> (parent = 0, name = 0, f = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMainWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMainWindow</b> (cflags, parent = 0, name = 0, f = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMainWindow instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cflags</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAccel)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appHelpActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyMainWindowSettings</b> (config, groupName, force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupName</td><td>QString</td><td></td></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyMainWindowSettings</b> (config, groupName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoSaveGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoSaveSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canBeRestored</b> (number)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>number</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QChildEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>classNameOfToplevel</b> (number)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>number</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureToolbars</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createGUI</b> (xmlfile = QString .null, _conserveMemory = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>_conserveMemory</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createStandardStatusBarAction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customHelpMenu</b> (showWhatsThis = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showWhatsThis</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalizeGUI</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalizeGUI</b> (force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getMemberList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KMainWindow>)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIFactory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasMenuBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>helpMenu</b> (aboutAppText = QString .null, showWhatsThis = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aboutAppText</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>showWhatsThis</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreInitialGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialGeometrySet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHelpMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isStandardToolBarMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMenuBar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseGeometry</b> (parsewidth)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parsewidth</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryExit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readGlobalProperties</b> (sessionConfig)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sessionConfig</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readProperties</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readPropertiesInternal</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetAutoSaveSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restore</b> (number, show = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>number</td><td>int</td><td></td></tr>
+<tr><td>show</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreWindowSize</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAutoSaveSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveGlobalProperties</b> (sessionConfig)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sessionConfig</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveMainWindowSettings</b> (config, groupName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveNewToolbarConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveProperties</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>savePropertiesInternal</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveWindowSize</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoSaveSettings</b> (groupName = QString .fromLatin1 ("MainWindow" ), saveWindowSize = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>groupName</td><td>QString</td><td>QString .fromLatin1 ("MainWindow" )</td></tr>
+<tr><td>saveWindowSize</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (caption, modified)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>modified</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameBorderWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHelpMenuEnabled</b> (showHelpMenu = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showHelpMenu</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPlainCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSettingsDirty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStandardToolBarMenuEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsDirty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupGUI</b> (options = ToolBar | Keys | StatusBar | Save | Create, xmlfile = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td>ToolBar | Keys | StatusBar | Save | Create</td></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupGUI</b> (defaultSize, options = ToolBar | Keys | StatusBar | Save | Create, xmlfile = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultSize</td><td>QSize</td><td></td></tr>
+<tr><td>options</td><td>int</td><td>ToolBar | Keys | StatusBar | Save | Create</td></tr>
+<tr><td>xmlfile</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupToolbarMenuActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showAboutApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeForCentralWidgetSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStateChanged</b> (newstate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newstate</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStateChanged</b> (newstate, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newstate</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>KXMLGUIClient.ReverseStateChange</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statusBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStatusBar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBar</b> (name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBarIterator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBarMenuAction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>memberList</td><td>QPtrList<KMainWindow>*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMainWindowInterface.html b/python/pykde/doc/classref/kdeui/KMainWindowInterface.html
new file mode 100644
index 00000000..cc5c586b
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMainWindowInterface.html
@@ -0,0 +1,171 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMainWindowInterface</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMainWindowInterface</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMainWindowInterface</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMainWindowInterface</b> (mainWindow)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMainWindowInterface instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mainWindow</td><td>KMainWindow</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPRef)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionIsEnabled</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QCString,DCOPRef>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionToolTip</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateAction</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAction</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableAction</b> (action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functionsDynamic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getWinID</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>grabWindowToClipBoard</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfaces</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lower</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>move</b> (newX, newY)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newX</td><td>int</td><td></td></tr>
+<tr><td>newY</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processDynamic</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>raise_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' raise
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resize</b> (newWidth, newHeight)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newWidth</td><td>int</td><td></td></tr>
+<tr><td>newHeight</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restore</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGeometry</b> (newX, newY, newWidth, newHeight)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newX</td><td>int</td><td></td></tr>
+<tr><td>newY</td><td>int</td><td></td></tr>
+<tr><td>newWidth</td><td>int</td><td></td></tr>
+<tr><td>newHeight</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMenuBar.html b/python/pykde/doc/classref/kdeui/KMenuBar.html
new file mode 100644
index 00000000..9accbd49
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMenuBar.html
@@ -0,0 +1,158 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMenuBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMenuBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMenuBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QMenuBar </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMenuBar</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMenuBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTopLevelMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resize</b> (w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resize</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameStyle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGeometry</b> (r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGeometry</b> (x, y, w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLineWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMargin</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTopLevelMenu</b> (top_level = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>top_level</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReadConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x11Event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMessageBox.html b/python/pykde/doc/classref/kdeui/KMessageBox.html
new file mode 100644
index 00000000..b5b804c1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMessageBox.html
@@ -0,0 +1,677 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMessageBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMessageBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMessageBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ButtonCode</b> = {Ok, Cancel, Yes, No, Continue
+}<li><b>DialogType</b> = {QuestionYesNo, WarningYesNo, WarningContinueCancel, WarningYesNoCancel, Information, Sorry, Error, QuestionYesNoCancel
+}<li><b>OptionsType</b> = {Notify, AllowLink, Dangerous, PlainCaption, NoExec
+}<li><b>OptionsType</b> = {Notify, AllowLink, Dangerous
+}<li><b>OptionsType</b> = {Notify, AllowLink
+}</ul>
+<h3>methods</h3><ul>
+<li><b>about</b> (parent, text, caption = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createKMessageBox</b> (dialog, icon, text, strlist, ask, options, details = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) checkboxReturn (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialog</td><td>KDialogBase</td><td></td></tr>
+<tr><td>icon</td><td>QMessageBox.Icon</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>ask</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createKMessageBox</b> (dialog, icon, text, strlist, ask, options, details = QString .null, notifyType = QMessageBox .Information)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) checkboxReturn (bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialog</td><td>KDialogBase</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>ask</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>notifyType</td><td>QMessageBox.Icon</td><td>QMessageBox .Information</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detailedError</b> (parent, text, details, caption = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detailedErrorWId</b> (parent_id, text, details, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detailedSorry</b> (parent, text, details, caption = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detailedSorryWId</b> (parent_id, text, details, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableAllMessages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMessage</b> (dontShowAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (parent, text, caption = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorList</b> (parent, text, strlist, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorListWId</b> (parent_id, text, strlist, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorWId</b> (parent_id, text, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>information</b> (parent, text, caption = QString .null, dontShowAgainName = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>informationList</b> (parent, text, strlist, caption = QString .null, dontShowAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>informationListWId</b> (parent_id, text, strlist, caption = QString .null, dontShowAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>informationWId</b> (parent_id, text, caption = QString .null, dontShowAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (parent, type, text, caption, buttonYes, buttonNo, dontShowAskAgainName, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td></td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td></td></tr>
+<tr><td>dontShowAskAgainName</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (parent, type, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBoxWId</b> (parent_id, type, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontShowAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontShowAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNo</b> (parent, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNoCancel</b> (parent, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNoCancelWId</b> (parent_id, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNoList</b> (parent, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNoListWId</b> (parent_id, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>questionYesNoWId</b> (parent_id, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedDetailedError</b> (parent, text, details, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedDetailedErrorWId</b> (parent_id, text, details, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedMessageBox</b> (parent, type, text, caption, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedMessageBox</b> (parent, type, text, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedMessageBoxWId</b> (parent_id, type, text, caption, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queuedMessageBoxWId</b> (parent_id, type, text, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>type</td><td>KMessageBox.DialogType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveDontShowAgainContinue</b> (dontShowAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveDontShowAgainYesNo</b> (dontShowAgainName, result)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td></td></tr>
+<tr><td>result</td><td>KMessageBox.ButtonCode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDontShowAskAgainConfig</b> (cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cfg</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shouldBeShownContinue</b> (dontShowAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shouldBeShownYesNo</b> (dontShowAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) result (KMessageBox.ButtonCode)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dontShowAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sorry</b> (parent, text, caption = QString .null, options = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sorryWId</b> (parent_id, text, caption = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancel</b> (parent, text, caption = QString .null, buttonContinue = KStdGuiItem .cont (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonContinue</td><td>KGuiItem</td><td>KStdGuiItem .cont ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancelList</b> (parent, text, strlist, caption = QString .null, buttonContinue = KStdGuiItem .cont (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonContinue</td><td>KGuiItem</td><td>KStdGuiItem .cont ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancelList</b> (a0, a1, a2, a3 = QString .null, a4 = QString .null, a5 = QString .null, a6 = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancelList</b> (a0, a1, a2, a3 = QString .null, a4 = KGuiItem (), a5 = QString .null, a6 = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td> In versions KDE 3.0.3 and above, but <i>less than </i> KDE 3.1.0</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QStringList</td><td></td></tr>
+<tr><td>a3</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a4</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>a5</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a6</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancelListWId</b> (parent_id, text, strlist, caption = QString .null, buttonContinue = KStdGuiItem .cont (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonContinue</td><td>KGuiItem</td><td>KStdGuiItem .cont ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningContinueCancelWId</b> (parent_id, text, caption = QString .null, buttonContinue = KStdGuiItem .cont (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonContinue</td><td>KGuiItem</td><td>KStdGuiItem .cont ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNo</b> (parent, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoCancel</b> (parent, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoCancelList</b> (parent, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoCancelListWId</b> (parent_id, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoCancelWId</b> (parent_id, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoList</b> (parent, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify | Dangerous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify | Dangerous</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoListWId</b> (parent_id, text, strlist, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify | Dangerous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>strlist</td><td>QStringList</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify | Dangerous</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warningYesNoWId</b> (parent_id, text, caption = QString .null, buttonYes = KStdGuiItem .yes (), buttonNo = KStdGuiItem .no (), dontAskAgainName = QString .null, options = Notify | Dangerous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>KGuiItem</td><td>KStdGuiItem .yes ()</td></tr>
+<tr><td>buttonNo</td><td>KGuiItem</td><td>KStdGuiItem .no ()</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>options</td><td>int</td><td>Notify | Dangerous</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KMimeTypeValidator.html b/python/pykde/doc/classref/kdeui/KMimeTypeValidator.html
new file mode 100644
index 00000000..5254af99
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KMimeTypeValidator.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeTypeValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeTypeValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeTypeValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeTypeValidator</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeTypeValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixup</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State) pos (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KNamedCommand.html b/python/pykde/doc/classref/kdeui/KNamedCommand.html
new file mode 100644
index 00000000..6a5a8a41
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KNamedCommand.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNamedCommand</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNamedCommand</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNamedCommand</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KCommand </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KNamedCommand</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNamedCommand instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KNumInput.html b/python/pykde/doc/classref/kdeui/KNumInput.html
new file mode 100644
index 00000000..a7d15400
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KNumInput.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNumInput</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNumInput</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNumInput <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KNumInput</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KNumInput</b> (below, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNumInput instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>below</td><td>KNumInput</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doLayout</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layout</b> (deep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>deep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (label, a = AlignLeft | AlignTop)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>a</td><td>int</td><td>AlignLeft | AlignTop</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSteps</b> (minor, major)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minor</td><td>int</td><td></td></tr>
+<tr><td>major</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showSlider</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizePolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSizePolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPaletteTable.html b/python/pykde/doc/classref/kdeui/KPaletteTable.html
new file mode 100644
index 00000000..f4611c08
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPaletteTable.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPaletteTable</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPaletteTable</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPaletteTable</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPaletteTable</b> (parent, minWidth = 210, cols = 16)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPaletteTable instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>minWidth</td><td>int</td><td>210</td></tr>
+<tr><td>cols</td><td>int</td><td>16</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addToCustomColors</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addToRecentColors</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorDoubleClicked</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colorSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QColor</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>palette</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readNamedColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPalette</b> (paletteName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>paletteName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotColorCellDoubleClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotColorCellSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotColorTextSelected</b> (colorText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>colorText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetPalette</b> (_paletteName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_paletteName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotShowNamedColorReadError</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPanelAppMenu.html b/python/pykde/doc/classref/kdeui/KPanelAppMenu.html
new file mode 100644
index 00000000..f810b1f1
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPanelAppMenu.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPanelAppMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPanelAppMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPanelAppMenu</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPanelAppMenu</b> (title, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelAppMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPanelAppMenu</b> (icon, title, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelAppMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPanelAppMenu</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelAppMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (icon, title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (text, id = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (icon, text, id = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertMenu</b> (icon, text, id = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPanelAppMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, reply)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>reply</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPanelApplet.html b/python/pykde/doc/classref/kdeui/KPanelApplet.html
new file mode 100644
index 00000000..647540b7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPanelApplet.html
@@ -0,0 +1,197 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPanelApplet</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPanelApplet</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPanelApplet</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Action</b> = {About, Help, Preferences, ReportBug
+}<li><b>Alignment</b> = {LeftTop, Center, RightBottom
+}<li><b>Direction</b> = {Up, Down, Left, Right
+}<li><b>Position</b> = {pLeft, pRight, pTop, pBottom
+}<li><b>Type</b> = {Normal, Stretch
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPanelApplet</b> (configFile, t = Normal, actions = 0, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelApplet instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configFile</td><td>QString</td><td></td></tr>
+<tr><td>t</td><td>KPanelApplet.Type</td><td>Normal</td></tr>
+<tr><td>actions</td><td>int</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>about</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KPanelApplet.Action</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alignment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPanelApplet.Alignment)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alignmentChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPanelApplet.Alignment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>heightForWidth</b> (width)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>help</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needsFocus</b> (focus)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>focus</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientationChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupDirection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Direction)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupDirectionChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPanelApplet.Direction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>position</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPanelApplet.Position)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positionChange</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KPanelApplet.Position</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferences</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportBug</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestFocus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestFocus</b> (focus)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>focus</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlignment</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KPanelApplet.Alignment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPosition</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KPanelApplet.Position</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharedConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSharedConfig.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Type)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>watchForFocus</b> (widget, watch = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>watch</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widthForHeight</b> (height)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPanelExtension.html b/python/pykde/doc/classref/kdeui/KPanelExtension.html
new file mode 100644
index 00000000..447568be
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPanelExtension.html
@@ -0,0 +1,181 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPanelExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPanelExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPanelExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Action</b> = {About, Help, Preferences, ReportBug
+}<li><b>Alignment</b> = {LeftTop, Center, RightBottom
+}<li><b>Position</b> = {Left, Right, Top, Bottom, Floating
+}<li><b>Position</b> = {Left, Right, Top, Bottom
+}<li><b>Size</b> = {SizeTiny, SizeSmall, SizeNormal, SizeLarge, SizeCustom
+}<li><b>Type</b> = {Normal, Stretch
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPanelExtension</b> (configFile, t = Normal, actions = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelExtension instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configFile</td><td>QString</td><td></td></tr>
+<tr><td>t</td><td>KPanelExtension.Type</td><td>Normal</td></tr>
+<tr><td>actions</td><td>int</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>about</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KPanelExtension.Action</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alignment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPanelExtension.Alignment)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alignmentChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPanelExtension.Alignment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>help</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maintainFocus</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>position</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Position)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positionChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPanelExtension.Position</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferedPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Position)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferences</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportBug</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reserveStrut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlignment</b> (a)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>KPanelExtension.Alignment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPosition</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>KPanelExtension.Position</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReserveStrut</b> (shouldUseStrut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shouldUseStrut</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (size, customSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KPanelExtension.Size</td><td></td></tr>
+<tr><td>customSize</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> (a0, maxsize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPanelExtension.Position</td><td></td></tr>
+<tr><td>maxsize</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeInPixels</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPanelExtension.Size)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Type)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPanelMenu.html b/python/pykde/doc/classref/kdeui/KPanelMenu.html
new file mode 100644
index 00000000..9a4cbff5
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPanelMenu.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPanelMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPanelMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPanelMenu <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPopupMenu </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPanelMenu</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPanelMenu</b> (startDir, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPanelMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deinitialize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAutoClear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (path = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reinitialize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInitialized</b> (on)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPath</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotExec</b> (id) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPassivePopup.html b/python/pykde/doc/classref/kdeui/KPassivePopup.html
new file mode 100644
index 00000000..8676b330
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPassivePopup.html
@@ -0,0 +1,309 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPassivePopup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPassivePopup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPassivePopup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PopupStyle</b> = {Boxed, Balloon, CustomStyle
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPassivePopup</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPassivePopup instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPassivePopup</b> (parent, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPassivePopup instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>WId</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPassivePopup</b> (popupStyle, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPassivePopup instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPassivePopup</b> (popupStyle, parent, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPassivePopup instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>WId</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoDelete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultArea</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (caption, text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (caption, text, icon, parent, name = 0, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (caption, text, icon, parent, name = 0, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>WId</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (popupStyle, text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (popupStyle, caption, text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (popupStyle, caption, text, icon, parent, name = 0, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (popupStyle, caption, text, icon, parent, name = 0, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPassivePopup)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>popupStyle</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>WId</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveNear</b> (target)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (pe)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pe</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positionSelf</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAnchor</b> (anchor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>anchor</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (autoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimeout</b> (delay)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>delay</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (child)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (caption, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (caption, text, icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>standardView</b> (caption, text, icon, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVBox)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateMask</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPasswordDialog.html b/python/pykde/doc/classref/kdeui/KPasswordDialog.html
new file mode 100644
index 00000000..7bf173db
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPasswordDialog.html
@@ -0,0 +1,194 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPasswordDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPasswordDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPasswordDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Types</b> = {Password, NewPassword
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPasswordDialog</b> (type, enableKeep, extraBttn, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KPasswordDialog.Types</td><td></td></tr>
+<tr><td>enableKeep</td><td>bool</td><td></td></tr>
+<tr><td>extraBttn</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPasswordDialog</b> (type, prompt, enableKeep = 0, extraBttn = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+<tr><td>enableKeep</td><td>bool</td><td>0</td></tr>
+<tr><td>extraBttn</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPasswordDialog</b> (type, enableKeep, extraBttn, iconName, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KPasswordDialog.Types</td><td></td></tr>
+<tr><td>enableKeep</td><td>bool</td><td></td></tr>
+<tr><td>extraBttn</td><td>int</td><td></td></tr>
+<tr><td>iconName</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addLine</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowEmptyPasswords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkPassword</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearPassword</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableCoreDumps</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getNewPassword</b> (password, prompt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>password</td><td>QCString</td><td></td></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPassword</b> (password, prompt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) keep (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>password</td><td>QCString</td><td></td></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keep</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximumPasswordLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumPasswordLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>password</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>passwordStrengthWarningLevel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prompt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reasonablePasswordLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllowEmptyPasswords</b> (allowed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaximumPasswordLength</b> (maxLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinimumPasswordLength</b> (minLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPasswordStrengthWarningLevel</b> (warningLevel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>warningLevel</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrompt</b> (prompt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReasonablePasswordLength</b> (reasonableLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reasonableLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotKeep</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPasswordEdit.html b/python/pykde/doc/classref/kdeui/KPasswordEdit.html
new file mode 100644
index 00000000..4580668c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPasswordEdit.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPasswordEdit</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPasswordEdit</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPasswordEdit</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLineEdit </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>EchoModes</b> = {OneStar, ThreeStars, NoEcho
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPasswordEdit</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPasswordEdit</b> (echoMode, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>echoMode</td><td>EchoMode</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPasswordEdit</b> (echoMode, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordEdit instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>echoMode</td><td>KPasswordEdit.EchoModes</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPasswordEdit</b> (parent, name, echoMode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasswordEdit instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>echoMode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>erase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxPasswordLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>password</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxPasswordLength</b> (newLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>PassLen</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPasteTextAction.html b/python/pykde/doc/classref/kdeui/KPasteTextAction.html
new file mode 100644
index 00000000..03da4413
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPasteTextAction.html
@@ -0,0 +1,83 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPasteTextAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPasteTextAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPasteTextAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPasteTextAction</b> (text, icon, cut, slot, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPasteTextAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuItemActivated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMixedMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPixmapIO.html b/python/pykde/doc/classref/kdeui/KPixmapIO.html
new file mode 100644
index 00000000..5d7339b7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPixmapIO.html
@@ -0,0 +1,105 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapIO</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ShmPolicies</b> = {ShmDontKeep, ShmKeepAndGrow
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KPixmapIO</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmapIO instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertToImage</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertToPixmap</b> (image)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>image</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getImage</b> (src, sx, sy, sw, sh)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QPixmap</td><td></td></tr>
+<tr><td>sx</td><td>int</td><td></td></tr>
+<tr><td>sy</td><td>int</td><td></td></tr>
+<tr><td>sw</td><td>int</td><td></td></tr>
+<tr><td>sh</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getImage</b> (src, rect)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QPixmap</td><td></td></tr>
+<tr><td>rect</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preAllocShm</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putImage</b> (dst, dx, dy, src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dst</td><td>QPixmap</td><td></td></tr>
+<tr><td>dx</td><td>int</td><td></td></tr>
+<tr><td>dy</td><td>int</td><td></td></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putImage</b> (dst, offset, src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dst</td><td>QPixmap</td><td></td></tr>
+<tr><td>offset</td><td>QPoint</td><td></td></tr>
+<tr><td>src</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShmPolicy</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorDialog.html b/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorDialog.html
new file mode 100644
index 00000000..33fcb2e7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorDialog.html
@@ -0,0 +1,94 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapRegionSelectorDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapRegionSelectorDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapRegionSelectorDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPixmapRegionSelectorDialog</b> (parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmapRegionSelectorDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSelectedImage</b> (pixmap, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSelectedImage</b> (pixmap, aspectRatioWidth, aspectRatioHeight, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>aspectRatioWidth</td><td>int</td><td></td></tr>
+<tr><td>aspectRatioHeight</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSelectedRegion</b> (pixmap, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSelectedRegion</b> (pixmap, aspectRatioWidth, aspectRatioHeight, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>aspectRatioWidth</td><td>int</td><td></td></tr>
+<tr><td>aspectRatioHeight</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmapRegionSelectorWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPixmapRegionSelectorWidget)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorWidget.html b/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorWidget.html
new file mode 100644
index 00000000..5e0449fd
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPixmapRegionSelectorWidget.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPixmapRegionSelectorWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPixmapRegionSelectorWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPixmapRegionSelectorWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPixmapRegionSelectorWidget</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPixmapRegionSelectorWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotate</b> (direction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>direction</td><td>KImageEffect.RotateDirection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateClockwise</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rotateCounterclockwise</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedImage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QImage)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedRegion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFreeSelectionAspectRatio</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaximumWidgetSize</b> (width, height)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedRegion</b> (rect)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rect</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionAspectRatio</b> (width, height)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unzoomedSelectedRegion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPopupFrame.html b/python/pykde/doc/classref/kdeui/KPopupFrame.html
new file mode 100644
index 00000000..4e093787
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPopupFrame.html
@@ -0,0 +1,115 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPopupFrame</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPopupFrame</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPopupFrame</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPopupFrame</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupFrame instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> (r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exec_</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>Renamed: was <i>' exec
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exec_</b> (x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>Renamed: was <i>' exec
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popup</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainWidget</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPopupMenu.html b/python/pykde/doc/classref/kdeui/KPopupMenu.html
new file mode 100644
index 00000000..a28c4ea3
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPopupMenu.html
@@ -0,0 +1,244 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPopupMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPopupMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPopupMenu</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPopupMenu </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPopupMenu</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPopupMenu</b> (title, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToShowContextMenu</b> (menu, menuItem, ctxMenu)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>KPopupMenu</td><td></td></tr>
+<tr><td>menuItem</td><td>int</td><td></td></tr>
+<tr><td>ctxMenu</td><td>QPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateItemAt</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeTitle</b> (id, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeTitle</b> (id, icon, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QContextMenuEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuFocus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuFocusItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ctxMenuHideShowingMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ctxMenuHiding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusNextPrevChild</b> (next)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>next</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideContextMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTitle</b> (text, id = -1, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTitle</b> (icon, text, id = -1, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemHighlighted</b> (whichItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>whichItem</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetKeyboardVars</b> (noMatches = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>noMatches</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeyboardShortcutsEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeyboardShortcutsExecute</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showCtxMenu</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Qt.ButtonState)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> (id = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>titlePixmap</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>underlineText</b> (text, length)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>length</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPopupTitle.html b/python/pykde/doc/classref/kdeui/KPopupTitle.html
new file mode 100644
index 00000000..36c13f33
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPopupTitle.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPopupTitle</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPopupTitle</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPopupTitle</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPopupTitle</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupTitle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPopupTitle</b> (gradient, color, textColor, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupTitle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>gradient</td><td>KPixmapEffect.GradientType</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+<tr><td>textColor</td><td>QColor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPopupTitle</b> (background, color, textColor, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPopupTitle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>background</td><td>KPixmap</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+<tr><td>textColor</td><td>QColor</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calcSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (text, icon = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KProgress.html b/python/pykde/doc/classref/kdeui/KProgress.html
new file mode 100644
index 00000000..c814e7e0
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KProgress.html
@@ -0,0 +1,127 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProgress</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProgress</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProgress</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QProgressBar </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KProgress</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProgress instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProgress</b> (totalSteps, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProgress instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>totalSteps</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>advance</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>format</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>percentageChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFormat</b> (format)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIndicator</b> (indicator, progress, totalSteps)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>indicator</td><td>QString</td><td></td></tr>
+<tr><td>progress</td><td>int</td><td></td></tr>
+<tr><td>totalSteps</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgress</b> (progress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progress</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (min, max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>int</td><td></td></tr>
+<tr><td>max</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTextEnabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTotalSteps</b> (totalSteps)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>totalSteps</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (progress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progress</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KProgressDialog.html b/python/pykde/doc/classref/kdeui/KProgressDialog.html
new file mode 100644
index 00000000..c22c4687
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KProgressDialog.html
@@ -0,0 +1,133 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProgressDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProgressDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProgressDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KProgressDialog</b> (parent = 0, name = 0, caption = QString .null, text = QString .null, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProgressDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoReset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>labelText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumDuration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progressBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProgress)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllowCancel</b> (allowCancel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowCancel</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoClose</b> (close)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>close</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoReset</b> (autoReset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoReset</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinimumDuration</b> (ms)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ms</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showCancelButton</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoActions</b> (percentage)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percentage</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wasCancelled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KPushButton.html b/python/pykde/doc/classref/kdeui/KPushButton.html
new file mode 100644
index 00000000..b45451c7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KPushButton.html
@@ -0,0 +1,142 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPushButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPushButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPushButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPushButton</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPushButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPushButton</b> (text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPushButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPushButton</b> (icon, text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPushButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QIconSet</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPushButton</b> (item, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPushButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStdGuiItem.StdItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiItm</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDragEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDragEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGuiItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGuiItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KStdGuiItem.StdItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGuiItm</b> (itm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>itm</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSet</b> (iconSet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconSet</td><td>QIconSet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startDrag</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRadioAction.html b/python/pykde/doc/classref/kdeui/KRadioAction.html
new file mode 100644
index 00000000..e94f021e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRadioAction.html
@@ -0,0 +1,199 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRadioAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRadioAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRadioAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KToggleAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRadioAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRadioAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRadioAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRecentFilesAction.html b/python/pykde/doc/classref/kdeui/KRecentFilesAction.html
new file mode 100644
index 00000000..1afeef16
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRecentFilesAction.html
@@ -0,0 +1,380 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRecentFilesAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRecentFilesAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRecentFilesAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRecentFilesAction</b> (a0, a1, a2, a3 = 0, a4 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>a2</td><td>QObject</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+<tr><td>a4</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0, a1, slot, a4, a5 = 0, a6 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+<tr><td>a6</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, pix, cut, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, pix, cut, slot, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, pix, cut, slot, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (parent = 0, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0, a1, a2, a3, a4 = 0, a5 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>a3</td><td>QObject</td><td></td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+<tr><td>a5</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0, a1, a2, a3, a4 = 0, a5 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>a3</td><td>QObject</td><td></td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+<tr><td>a5</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0, a1, a2, slot, a5, a6 = 0, a7 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+<tr><td>a7</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0, a1, a2, slot, a5, a6 = 0, a7 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+<tr><td>a7</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (a0 = 0, a1 = 0, a2 = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+<tr><td>a2</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, cut, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, cut, slot, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRecentFilesAction</b> (text, pix, cut, parent, name = 0, maxItems = 10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRecentFilesAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>maxItems</td><td>uint</td><td>10</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addURL</b> (url, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearURLList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearURLList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completeItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemSelected</b> (string)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>string</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadEntries</b> (a0, a1 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadEntries</b> (config, groupname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuAboutToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuItemActivated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveEntries</b> (a0, a1 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveEntries</b> (config, groupname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>groupname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxItems</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxItems</b> (maxItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxItems</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlSelected</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRestrictedLine.html b/python/pykde/doc/classref/kdeui/KRestrictedLine.html
new file mode 100644
index 00000000..17efb11d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRestrictedLine.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRestrictedLine</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRestrictedLine</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRestrictedLine</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLineEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRestrictedLine</b> (parent = 0, name = 0, valid = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRestrictedLine instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>valid</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invalidChar</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValidChars</b> (valid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>valid</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validChars</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRootPermsIcon.html b/python/pykde/doc/classref/kdeui/KRootPermsIcon.html
new file mode 100644
index 00000000..fb992930
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRootPermsIcon.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRootPermsIcon</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRootPermsIcon</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRootPermsIcon</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAuthIcon </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRootPermsIcon</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRootPermsIcon instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateStatus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRootPixmap.html b/python/pykde/doc/classref/kdeui/KRootPixmap.html
new file mode 100644
index 00000000..bfb82786
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRootPixmap.html
@@ -0,0 +1,132 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRootPixmap</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRootPixmap</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRootPixmap</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRootPixmap</b> (target, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRootPixmap instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRootPixmap</b> (target, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRootPixmap instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundUpdated</b> (pm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pm</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkAvailable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDesktop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customPainting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableExports</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAvailable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>opacity</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmapName</b> (desk)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>repaint</b> (force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>repaint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomPainting</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFadeEffect</b> (opacity, color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>opacity</td><td>double</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateBackground</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KRuler.html b/python/pykde/doc/classref/kdeui/KRuler.html
new file mode 100644
index 00000000..8f11ffe9
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KRuler.html
@@ -0,0 +1,311 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRuler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRuler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRuler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>MetricStyle</b> = {Custom, Pixel, Inch, Millimetres, Centimetres, Metres
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KRuler</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRuler instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRuler</b> (orient, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRuler instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orient</td><td>Orientation</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRuler</b> (orient, widgetWidth, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRuler instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orient</td><td>Orientation</td><td></td></tr>
+<tr><td>widgetWidth</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bigMarkDistance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lengthFixed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>littleMarkDistance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mediumMarkDistance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixelPerMark</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBigMarkDistance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEndLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLength</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLengthFixed</b> (fix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fix</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLittleMarkDistance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMediumMarkDistance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOffset</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixelPerMark</b> (rate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rate</td><td>double</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (min, max)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>min</td><td>int</td><td></td></tr>
+<tr><td>max</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRulerMetricStyle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KRuler.MetricStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowBigMarks</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowEndLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowEndMarks</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowLittleMarks</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowMediumMarks</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowPointer</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowTinyMarks</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTinyMarkDistance</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValuePerBigMark</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValuePerLittleMark</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValuePerMediumMark</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showBigMarks</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEndLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEndMarks</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showLittleMarks</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMediumMarks</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPointer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTinyMarks</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slideDown</b> (count = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>count</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slideUp</b> (count = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>count</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEndOffset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNewOffset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNewValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tinyMarkDistance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KScrollView.html b/python/pykde/doc/classref/kdeui/KScrollView.html
new file mode 100644
index 00000000..bf82478c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KScrollView.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KScrollView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KScrollView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KScrollView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QScrollView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KScrollView</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KScrollView instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>Qt.WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrollBy</b> (dx, dy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dx</td><td>int</td><td></td></tr>
+<tr><td>dy</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrollTick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startScrolling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopScrolling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSelectAction.html b/python/pykde/doc/classref/kdeui/KSelectAction.html
new file mode 100644
index 00000000..022ff9b3
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSelectAction.html
@@ -0,0 +1,536 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSelectAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSelectAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSelectAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSelectAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelectAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelectAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeItem</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeItem</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeItem</b> (index, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeItem</b> (id, index, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comboItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comboItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comboWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comboWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEditable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEditable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isShortcutConfigurable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuAccelsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuAccelsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAmpersandsInCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAmpersandsInCombo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setComboWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setComboWidth</b> (width)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItems</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItems</b> (lst)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lst</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxComboViewCount</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMenuAccelsEnabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMenuAccelsEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRemoveAmpersandsInCombo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.5.3</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRemoveAmpersandsInCombo</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateClear</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateClear</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateComboWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateComboWidth</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateCurrentItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateItems</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateItems</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSelector.html b/python/pykde/doc/classref/kdeui/KSelector.html
new file mode 100644
index 00000000..8042a14c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSelector.html
@@ -0,0 +1,146 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget, QRangeControl </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSelector</b> (o, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>Orientation</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawArrow</b> (painter, show, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>indent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIndent</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSeparator.html b/python/pykde/doc/classref/kdeui/KSeparator.html
new file mode 100644
index 00000000..54cee76e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSeparator.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSeparator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSeparator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSeparator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSeparator</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSeparator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSeparator</b> (orientation, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSeparator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orientation</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawFrame</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrientation</b> (orient)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orient</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSharedPixmap.html b/python/pykde/doc/classref/kdeui/KSharedPixmap.html
new file mode 100644
index 00000000..de2b2389
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSharedPixmap.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSharedPixmap</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSharedPixmap</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href= "../../index.html">Table of contents</a></td></tr> <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSharedPixmap</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget, KPixmap </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSharedPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSharedPixmap instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (success)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>success</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAvailable</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAvailable</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadFromShared</b> (name, rect = QRect ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>rect</td><td>QRect</td><td>QRect ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadFromShared</b> (a0, a1 = QRect ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QRect</td><td>QRect ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x11Event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KShortcutDialog.html b/python/pykde/doc/classref/kdeui/KShortcutDialog.html
new file mode 100644
index 00000000..af5d6953
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KShortcutDialog.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShortcutDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShortcutDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShortcutDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KShortcutDialog</b> (shortcut, bQtShortcut, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShortcutDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+<tr><td>bQtShortcut</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShortcut</b> (shortcut)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shortcut</td><td>KShortcut</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KShortcut)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClearAlternate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClearPrimary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClearShortcut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDetails</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMultiKeyMode</b> (bOn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bOn</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectAlternate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectPrimary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSplashScreen.html b/python/pykde/doc/classref/kdeui/KSplashScreen.html
new file mode 100644
index 00000000..325c5444
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSplashScreen.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSplashScreen</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSplashScreen</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSplashScreen</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSplashScreen </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSplashScreen</b> (pixmap, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSplashScreen instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSqueezedTextLabel.html b/python/pykde/doc/classref/kdeui/KSqueezedTextLabel.html
new file mode 100644
index 00000000..ab23ae24
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSqueezedTextLabel.html
@@ -0,0 +1,85 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSqueezedTextLabel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSqueezedTextLabel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSqueezedTextLabel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLabel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSqueezedTextLabel</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSqueezedTextLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSqueezedTextLabel</b> (text, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSqueezedTextLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlignment</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>squeezeTextToLabel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KStatusBar.html b/python/pykde/doc/classref/kdeui/KStatusBar.html
new file mode 100644
index 00000000..b3494c1a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KStatusBar.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStatusBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStatusBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStatusBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QStatusBar </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>BarStatus</b> = {Toggle, Show, Hide
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KStatusBar</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStatusBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeItem</b> (text, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertFixedItem</b> (text, id, permanent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>permanent</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (text, id, stretch = 0, permanent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>stretch</td><td>int</td><td>0</td></tr>
+<tr><td>permanent</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>released</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemAlignment</b> (id, align)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>align</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemFixed</b> (id, width = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>width</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KStatusBarLabel.html b/python/pykde/doc/classref/kdeui/KStatusBarLabel.html
new file mode 100644
index 00000000..da425f3c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KStatusBarLabel.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStatusBarLabel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStatusBarLabel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStatusBarLabel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLabel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KStatusBarLabel</b> (text, _id, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStatusBarLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>_id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>KStatusBar</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemPressed</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemReleased</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (_event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_event</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (_event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_event</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KStdAction.html b/python/pykde/doc/classref/kdeui/KStdAction.html
new file mode 100644
index 00000000..ade4b02f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KStdAction.html
@@ -0,0 +1,579 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStdAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStdAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStdAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>StdAction</b> = {ActionNone, New, Open, OpenRecent, Save, SaveAs, Revert, Close, Print, PrintPreview, Mail, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, Find, FindNext, FindPrev, Replace, ActualSize, FitToPage, FitToWidth, FitToHeight, ZoomIn, ZoomOut, Zoom, Redisplay, Up, Back, Forward, Home, Prior, Next, Goto, GotoPage, GotoLine, FirstPage, LastPage, AddBookmark, EditBookmarks, Spelling, ShowMenubar, ShowToolbar, ShowStatusbar, SaveOptions, KeyBindings, Preferences, ConfigureToolbars, Help, HelpContents, WhatsThis, ReportBug, AboutApp, AboutKDE
+}<li><b>StdAction</b> = {ActionNone, New, Open, OpenRecent, Save, SaveAs, Revert, Close, Print, PrintPreview, Mail, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, Find, FindNext, FindPrev, Replace, ActualSize, FitToPage, FitToWidth, FitToHeight, ZoomIn, ZoomOut, Zoom, Redisplay, Up, Back, Forward, Home, Prior, Next, Goto, GotoPage, GotoLine, FirstPage, LastPage, AddBookmark, EditBookmarks, Spelling, ShowMenubar, ShowToolbar, ShowStatusbar, SaveOptions, KeyBindings, Preferences, ConfigureToolbars, Help, HelpContents, WhatsThis, ReportBug, AboutApp, AboutKDE
+}<li><b>StdAction</b> = {ActionNone, New, Open, OpenRecent, Save, SaveAs, Revert, Close, Print, PrintPreview, Mail, Quit, Undo, Redo, Cut, Copy, Paste, SelectAll, Deselect, Find, FindNext, FindPrev, Replace, ActualSize, FitToPage, FitToWidth, FitToHeight, ZoomIn, ZoomOut, Zoom, Redisplay, Up, Back, Forward, Home, Prior, Next, Goto, GotoPage, GotoLine, FirstPage, LastPage, AddBookmark, EditBookmarks, Spelling, ShowMenubar, ShowToolbar, ShowStatusbar, SaveOptions, KeyBindings, Preferences, ConfigureToolbars, Help, HelpContents, WhatsThis, ReportBug, AboutApp, AboutKDE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>aboutApp</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutKDE</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actualSize</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBookmark</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>back</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureNotifications</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureToolbars</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>create</b> (id, name, slot, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAction.StdAction</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cut</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deselect</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editBookmarks</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findNext</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findPrev</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstPage</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fitToHeight</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fitToPage</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fitToWidth</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forward</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fullScreen</b> (slot, parent, window, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToggleFullScreenAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>goTo</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoLine</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoPage</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>help</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>helpContents</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>home</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyBindings</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastPage</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mail</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KStdAction.StdAction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>next</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openNew</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openRecent</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRecentFilesAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paste</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteText</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferences</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>printPreview</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>Renamed: was <i>' print
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prior</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quit</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redisplay</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redo</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportBug</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>revert</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAs</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveOptions</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMenubar</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToggleAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showStatusbar</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToggleAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showToolbar</b> (toolBarName, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToggleToolBarAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toolBarName</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showToolbar</b> (toolBarName, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToggleToolBarAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toolBarName</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spelling</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stdNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tipOfDay</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undo</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>up</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatsThis</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoom</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomIn</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomOut</b> (slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KStdGuiItem.html b/python/pykde/doc/classref/kdeui/KStdGuiItem.html
new file mode 100644
index 00000000..1a1635d4
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KStdGuiItem.html
@@ -0,0 +1,213 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStdGuiItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStdGuiItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStdGuiItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>BidiMode</b> = {UseRTL, IgnoreRTL
+}<li><b>StdItem</b> = {Ok, Cancel, Yes, No, Discard, Save, DontSave, SaveAs, Apply, Clear, Help, Defaults, Close, Back, Forward, Print, Continue, Open, Quit, AdminMode, Reset, Delete, Insert, Configure, Find, Stop, Add, Remove, Test, Properties, Overwrite
+}<li><b>StdItem</b> = {Ok, Cancel, Yes, No, Discard, Save, DontSave, SaveAs, Apply, Clear, Help, Defaults, Close, Back, Forward, Print, Continue, Open, Quit, AdminMode, Reset, Delete, Insert, Configure, Find, Stop, Add, Remove, Test, Properties
+}<li><b>StdItem</b> = {Ok, Cancel, Yes, No, Discard, Save, DontSave, SaveAs, Apply, Clear, Help, Defaults, Close, Back, Forward, Print, Continue, Open, Quit, AdminMode, Reset, Delete, Insert
+}<li><b>StdItem</b> = {Ok, Cancel, Yes, No, Discard, Save, DontSave, SaveAs, Apply, Clear, Help, Defaults, Close, Back, Forward, Print, Continue, Open, Quit
+}<li><b>StdItem</b> = {Ok, Cancel, Yes, No, Discard, Save, DontSave, SaveAs, Apply, Clear, Help, Defaults, Close, Back, Forward, Print, Continue
+}</ul>
+<h3>methods</h3><ul>
+<li><b>add</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adminMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>back</b> (useBidi = IgnoreRTL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useBidi</td><td>KStdGuiItem.BidiMode</td><td>IgnoreRTL</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backAndForward</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPair<KGuiItem,KGuiItem>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cont</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>Renamed: was <i>' del'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>discard</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dontSave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forward</b> (useBidi = IgnoreRTL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useBidi</td><td>KStdGuiItem.BidiMode</td><td>IgnoreRTL</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiItem</b> (ui_enum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ui_enum</td><td>KStdGuiItem.StdItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>help</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>no</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ok</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>overwrite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>Renamed: was <i>' print'</i> in C++</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>properties</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stdItem</b> (ui_enum)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ui_enum</td><td>KStdGuiItem.StdItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KGuiItem)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KStringListValidator.html b/python/pykde/doc/classref/kdeui/KStringListValidator.html
new file mode 100644
index 00000000..36eadc9a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KStringListValidator.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KStringListValidator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KStringListValidator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KStringListValidator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QValidator </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KStringListValidator</b> (list = QStringList (), rejecting = 1, fixupEnabled = 0, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KStringListValidator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>rejecting</td><td>bool</td><td>1</td></tr>
+<tr><td>fixupEnabled</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixup</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFixupEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRejecting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFixupEnabled</b> (fixupEnabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fixupEnabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRejecting</b> (rejecting)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rejecting</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStringList</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stringList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validate</b> (input)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(State) pos (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>input</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KSystemTray.html b/python/pykde/doc/classref/kdeui/KSystemTray.html
new file mode 100644
index 00000000..f035e236
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KSystemTray.html
@@ -0,0 +1,129 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSystemTray</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSystemTray</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSystemTray</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLabel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSystemTray</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSystemTray instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuAboutToShow</b> (menu)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menu</td><td>KPopupMenu</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadIcon</b> (icon, instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quitSelected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInactive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTabBar.html b/python/pykde/doc/classref/kdeui/KTabBar.html
new file mode 100644
index 00000000..51f3532a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTabBar.html
@@ -0,0 +1,268 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTabBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTabBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTabBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTabBar </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTabBar</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTabBar instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateDragSwitchTab</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeButtonClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeRequest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableCloseButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hoverCloseButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hoverCloseButtonDelayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initiateDrag</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTab</b> (a0, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTab</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabReorderingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMiddleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveTab</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onLayoutChange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintLabel</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+<tr><td>a1</td><td>QRect</td><td></td></tr>
+<tr><td>a2</td><td>QTab</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedDropEvent</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeTab</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTab</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHoverCloseButton</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHoverCloseButtonDelayed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabCloseActivatePrevious</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabColor</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabEnabled</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabReorderingEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabCloseActivatePrevious</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testCanDecode</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelDelta</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTabCtl.html b/python/pykde/doc/classref/kdeui/KTabCtl.html
new file mode 100644
index 00000000..6caa3d81
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTabCtl.html
@@ -0,0 +1,128 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTabCtl</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTabCtl</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTabCtl</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTabCtl</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTabCtl instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addTab</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getChildRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabEnabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShape</b> (shape)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>shape</td><td>QTabBar.Shape</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSizes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabEnabled</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabFont</b> (font)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>font</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTab</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTabWidget.html b/python/pykde/doc/classref/kdeui/KTabWidget.html
new file mode 100644
index 00000000..29d57288
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTabWidget.html
@@ -0,0 +1,360 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTabWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTabWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTabWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTabWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTabWidget</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTabWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>automaticResizeTabs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeTab</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeTab</b> (child, iconset, label)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>QWidget</td><td></td></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeRequest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeRequest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenu</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hoverCloseButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hoverCloseButtonDelayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initiateDrag</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initiateDrag</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTab</b> (a0, a1, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTab</b> (child, iconset, label, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>QWidget</td><td></td></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertTab</b> (a0, a1, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QTab</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabBarHidden</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabReorderingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMiddleClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMiddleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMiddleClick</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveTab</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>movedTab</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedDropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedDropEvent</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedDropEvent</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePage</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutomaticResizeTabs</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHoverCloseButton</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHoverCloseButtonDelayed</b> (delayed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>delayed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabBarHidden</b> (hide)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hide</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabCloseActivatePrevious</b> (previous)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>previous</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabColor</b> (a0, color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>color</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabLabel</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabReorderingEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabBarWidthForMaxChars</b> (maxLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxLength</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabCloseActivatePrevious</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testCanDecode</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelDelta</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTextBrowser.html b/python/pykde/doc/classref/kdeui/KTextBrowser.html
new file mode 100644
index 00000000..7c7d9fbd
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTextBrowser.html
@@ -0,0 +1,102 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTextBrowser</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTextBrowser</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTextBrowser</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTextBrowser </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTextBrowser</b> (parent = 0, name = 0, notifyClick = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTextBrowser instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>notifyClick</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsWheelEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNotifyClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mailClick</b> (name, address)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>address</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNotifyClick</b> (notifyClick)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>notifyClick</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSource</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlClick</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportMouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTextEdit.html b/python/pykde/doc/classref/kdeui/KTextEdit.html
new file mode 100644
index 00000000..959bfd99
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTextEdit.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTextEdit</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTextEdit</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTextEdit</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QTextEdit </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTextEdit</b> (text, context = QString .null, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTextEdit instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>context</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTextEdit</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTextEdit instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkSpelling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkSpellingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsWheelEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPopupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteWordBack</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteWordForward</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highLightWord</b> (length, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>length</td><td>uint</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCheckSpellingEnabled</b> (check)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>check</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPalette</b> (palette)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>palette</td><td>QPalette</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (readOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>readOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTimeWidget.html b/python/pykde/doc/classref/kdeui/KTimeWidget.html
new file mode 100644
index 00000000..f5005834
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTimeWidget.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimeWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimeWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimeWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimeWidget</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimeWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTimeWidget</b> (time, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimeWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>QTime</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTime</b> (time)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>QTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>time</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTime)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (time)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>time</td><td>QTime</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTimezoneWidget.html b/python/pykde/doc/classref/kdeui/KTimezoneWidget.html
new file mode 100644
index 00000000..35bc6b02
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTimezoneWidget.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTimezoneWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTimezoneWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTimezoneWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTimezoneWidget</b> (parent = 0, name = 0, db = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTimezoneWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>db</td><td>KTimezones</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayName</b> (zone)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>zone</td><td>KTimezone</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (zone, selected)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>zone</td><td>QString</td><td></td></tr>
+<tr><td>selected</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTipDatabase.html b/python/pykde/doc/classref/kdeui/KTipDatabase.html
new file mode 100644
index 00000000..eacb3a98
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTipDatabase.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTipDatabase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTipDatabase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTipDatabase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTipDatabase</b> (tipFile = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTipDatabase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tipFile</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTipDatabase</b> (tipFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTipDatabase instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tipFiles</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KTipDialog.html b/python/pykde/doc/classref/kdeui/KTipDialog.html
new file mode 100644
index 00000000..2df26035
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KTipDialog.html
@@ -0,0 +1,100 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTipDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTipDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTipDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTipDialog</b> (db, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTipDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>db</td><td>KTipDatabase</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTipDialog</b> (a0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTipDialog instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KTipDatabase</td><td></td></tr>
+<tr><td>a1</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a2</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowOnStart</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMultiTip</b> (parent, tipFiles, force = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>tipFiles</td><td>QStringList</td><td></td></tr>
+<tr><td>force</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTip</b> (parent, tipFile = QString .null, force = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>tipFile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>force</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTip</b> (tipFile = QString .null, force = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tipFile</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>force</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToggleAction.html b/python/pykde/doc/classref/kdeui/KToggleAction.html
new file mode 100644
index 00000000..8652e1dc
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToggleAction.html
@@ -0,0 +1,298 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToggleAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToggleAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToggleAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToggleAction</b> (a0, a1 = KShortcut (), a2 = 0, a3 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a2</td><td>QObject</td><td>0</td></tr>
+<tr><td>a3</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0, a1, slot, a4, a5 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, pix, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QIconSet</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0, a1, a2, slot, a5, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (a0 = 0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, cut, slot, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleAction</b> (text, pix, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QIconSet</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exclusiveGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exclusiveGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isChecked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isChecked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCheckedState</b> (checkedItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>checkedItem</td><td>KGuiItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExclusiveGroup</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExclusiveGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateChecked</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToggleFullScreenAction.html b/python/pykde/doc/classref/kdeui/KToggleFullScreenAction.html
new file mode 100644
index 00000000..f1992ed0
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToggleFullScreenAction.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToggleFullScreenAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToggleFullScreenAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToggleFullScreenAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KToggleAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToggleFullScreenAction</b> (cut, slot, parent, window, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleFullScreenAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToggleToolBarAction.html b/python/pykde/doc/classref/kdeui/KToggleToolBarAction.html
new file mode 100644
index 00000000..1026940a
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToggleToolBarAction.html
@@ -0,0 +1,127 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToggleToolBarAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToggleToolBarAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToggleToolBarAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KToggleAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToggleToolBarAction</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleToolBarAction instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleToolBarAction</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleToolBarAction instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KToolBar</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleToolBarAction</b> (toolBarName, text, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleToolBarAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toolBarName</td><td>char</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToggleToolBarAction</b> (toolBar, text, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToggleToolBarAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toolBar</td><td>KToolBar</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBar.html b/python/pykde/doc/classref/kdeui/KToolBar.html
new file mode 100644
index 00000000..301cad66
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBar.html
@@ -0,0 +1,797 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QToolBar </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>BarPosition</b> = {Unmanaged, Floating, Top, Bottom, Right, Left, Flat
+}<li><b>BarStatus</b> = {Toggle, Show, Hide
+}<li><b>IconText</b> = {IconOnly, IconTextRight, TextOnly, IconTextBottom
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KToolBar</b> (parent, name = 0, honorStyle = 0, readConfig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>honorStyle</td><td>bool</td><td>0</td></tr>
+<tr><td>readConfig</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBar</b> (parentWindow, dock, newLine = 0, name = 0, honorStyle = 0, readConfig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBar</b> (parentWindow, dock, newLine = 0, name = 0, honorStyle = 0, readConfig = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWindow</td><td>QMainWindow</td><td></td></tr>
+<tr><td>dock</td><td>QWidget</td><td></td></tr>
+<tr><td>newLine</td><td>bool</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>honorStyle</td><td>bool</td><td>0</td></tr>
+<tr><td>readConfig</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addConnection</b> (id, signal, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alignItemRight</b> (id, right = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>right</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>animatedWidget</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAnimWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyAppearanceSettings</b> (config, _configGroup, forceGlobal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>_configGroup</td><td>QString</td><td></td></tr>
+<tr><td>forceGlobal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applySettings</b> (config, configGroup, force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>configGroup</td><td>QString</td><td></td></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applySettings</b> (config, configGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>configGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>barPos</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(BarPosition)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeComboItem</b> (id, text, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QChildEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearCombo</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enable</b> (stat)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stat</td><td>KToolBar.BarStatus</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableFloating</b> (flag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMoving</b> (flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fullSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBarButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCombo</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KComboBox)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getComboItem</b> (id, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getLined</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getLinedText</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getWidget</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (id, isHighlighted)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>isHighlighted</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSizeDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(IconText)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconTextSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar.IconText)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconTextSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>idAt</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertAnimatedWidget</b> (id, slot, icons, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>icons</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (icon, id, enabled = 1, text = QString .null, index = -1, _instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+<tr><td>_instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (icon, id, signal, slot, enabled = 1, text = QString .null, index = -1, _instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+<tr><td>_instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (pixmap, id, enabled = 1, text = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (pixmap, id, signal, slot, enabled = 1, text = QString .null, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (icon, id, popup, enabled, _text, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+<tr><td>_text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertButton</b> (pixmap, id, popup, enabled, _text, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+<tr><td>_text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertCombo</b> (list, id, writable, signal, slot, enabled = 1, tooltiptext = QString .null, size = 70, index = -1, policy = QComboBox .AtBottom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>writable</td><td>bool</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>tooltiptext</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>size</td><td>int</td><td>70</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+<tr><td>policy</td><td>QComboBox.Policy</td><td>QComboBox .AtBottom</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertCombo</b> (text, id, writable, signal, slot, enabled = 1, tooltiptext = QString .null, size = 70, index = -1, policy = QComboBox .AtBottom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>writable</td><td>bool</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>tooltiptext</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>size</td><td>int</td><td>70</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+<tr><td>policy</td><td>QComboBox.Policy</td><td>QComboBox .AtBottom</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertCombo</b> (a0, a1, a2, a3, a4, a5, a6 = 1, a7 = QString .null, a8 = 70, a9 = -1, a10 = QComboBox .AtBottom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+<tr><td>a2</td><td>bool</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td></td></tr>
+<tr><td>a4</td><td>QObject</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td></td></tr>
+<tr><td>a6</td><td>bool</td><td>1</td></tr>
+<tr><td>a7</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a8</td><td>int</td><td>70</td></tr>
+<tr><td>a9</td><td>int</td><td>-1</td></tr>
+<tr><td>a10</td><td>QComboBox.Policy</td><td>QComboBox .AtBottom</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertComboItem</b> (id, text, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertComboList</b> (id, list, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertLineSeparator</b> (index, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertLined</b> (text, id, signal, slot, enabled = 1, toolTipText = QString .null, size = 70, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td>1</td></tr>
+<tr><td>toolTipText</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>size</td><td>int</td><td>70</td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertSeparator</b> (index, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertWidget</b> (id, width, _widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>_widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isButtonOn</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemIndex</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadState</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modechange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moved</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KToolBar.BarPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>positionYourself</b> (force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>released</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeComboItem</b> (id, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItemDelayed</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveSettings</b> (config, configGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>configGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoRepeat</b> (id, flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBarPos</b> (bpos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bpos</td><td>KToolBar.BarPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButton</b> (id, flag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>flag</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonIcon</b> (id, _icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>_icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonIconSet</b> (id, iconset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setButtonPixmap</b> (id, _pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>_pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentComboItem</b> (id, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayedPopup</b> (id, _popup, toggle = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>_popup</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>toggle</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableContextMenu</b> (enable = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFlat</b> (flag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFullSize</b> (flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size, update)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+<tr><td>update</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconText</b> (it)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>it</td><td>KToolBar.IconText</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconText</b> (it, update)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>it</td><td>KToolBar.IconText</td><td></td></tr>
+<tr><td>update</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconText</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemAutoSized</b> (id, yes = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>yes</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemEnabled</b> (id, enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setItemNoStyle</b> (id, no_style = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>no_style</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLinedText</b> (id, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxHeight</b> (h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxWidth</b> (dw)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dw</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStretchableWidget</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (txt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>txt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (_title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_title</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToggle</b> (id, flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXMLGUIClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showItem</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizePolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSizePolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolbarDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transparentSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>transparentSetting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateRects</b> (a0 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBarButton.html b/python/pykde/doc/classref/kdeui/KToolBarButton.html
new file mode 100644
index 00000000..8f030533
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBarButton.html
@@ -0,0 +1,325 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBarButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBarButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBarButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QToolButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToolBarButton</b> (icon, id, parent, name = 0, txt = QString .null, _instance = KGlobal .instance ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>txt</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>_instance</td><td>KInstance</td><td>KGlobal .instance ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarButton</b> (pixmap, id, parent, name = 0, txt = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>txt</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarButton</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonClicked</b> (a0, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>Qt.ButtonState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doubleClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButton</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconTextMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRaised</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modeChange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>on</b> (flag = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paletteChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPalette</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>released</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultPixmap</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayedPopup</b> (p, unused = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>unused</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabledIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabledPixmap</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon, generate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>generate</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSet</b> (iconset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>iconset</td><td>QIconSet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoStyle</b> (no_style = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>no_style</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPixmap</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPopup</b> (p, unused)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>unused</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRadio</b> (f = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTextLabel</b> (a0, tipToo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>tipToo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToggle</b> (toggle = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toggle</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDelayTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReleased</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToggled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBarLabelAction.html b/python/pykde/doc/classref/kdeui/KToolBarLabelAction.html
new file mode 100644
index 00000000..0d7f22be
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBarLabelAction.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBarLabelAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBarLabelAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBarLabelAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KWidgetAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToolBarLabelAction</b> (text, cut, receiver, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarLabelAction instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarLabelAction</b> (buddy, text, cut, receiver, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarLabelAction instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buddy</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarLabelAction</b> (label, cut, receiver, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarLabelAction instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QLabel</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buddy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QLabel)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBuddy</b> (buddy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buddy</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBarPopupAction.html b/python/pykde/doc/classref/kdeui/KToolBarPopupAction.html
new file mode 100644
index 00000000..9f89e1ad
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBarPopupAction.html
@@ -0,0 +1,177 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBarPopupAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBarPopupAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBarPopupAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToolBarPopupAction</b> (a0, a1, a2 = KShortcut (), a3 = 0, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>a3</td><td>QObject</td><td>0</td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarPopupAction</b> (a0, a1, a2, slot, a5 = 0, a6 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>QObject</td><td>0</td></tr>
+<tr><td>a6</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarPopupAction</b> (a0, a1, slot, a4, a5)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KGuiItem</td><td></td></tr>
+<tr><td>a1</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a4</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a5</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarPopupAction</b> (text, icon, cut = KShortcut (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td>KShortcut ()</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarPopupAction</b> (text, icon, cut, slot, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KToolBarPopupAction</b> (item, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarPopupAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KGuiItem</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delayed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPopupMenu)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDelayed</b> (delayed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>delayed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStickyMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStickyMenu</b> (sticky)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sticky</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stickyMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stickyMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBarRadioGroup.html b/python/pykde/doc/classref/kdeui/KToolBarRadioGroup.html
new file mode 100644
index 00000000..69a6c03c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBarRadioGroup.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBarRadioGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBarRadioGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBarRadioGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToolBarRadioGroup</b> (_parent, _name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarRadioGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_parent</td><td>KToolBar</td><td></td></tr>
+<tr><td>_name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KToolBarSeparator.html b/python/pykde/doc/classref/kdeui/KToolBarSeparator.html
new file mode 100644
index 00000000..e5b638b2
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KToolBarSeparator.html
@@ -0,0 +1,81 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KToolBarSeparator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KToolBarSeparator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KToolBarSeparator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KToolBarSeparator</b> (a0, l, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KToolBarSeparator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Orientation</td><td></td></tr>
+<tr><td>l</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QToolBar</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrientation</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showLine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizePolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSizePolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KURLLabel.html b/python/pykde/doc/classref/kdeui/KURLLabel.html
new file mode 100644
index 00000000..30fb02a5
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KURLLabel.html
@@ -0,0 +1,263 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLLabel</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLLabel</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLLabel</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLabel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLLabel</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLLabel</b> (url, text = QString .null, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLLabel instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>altPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enteredURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enteredURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFloatEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isGlowEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftClickedURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftClickedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>middleClickedURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>middleClickedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rightClickedURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rightClickedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAltPixmap</b> (altPix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>altPix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCursor</b> (cursor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cursor</td><td>QCursor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFloat</b> (do_float = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>do_float</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFocusPolicy</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>FocusPolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFont</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setGlow</b> (glow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>glow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHighlightedColor</b> (highcolor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>highcolor</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHighlightedColor</b> (highcolor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>highcolor</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMargin</b> (margin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>margin</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedColor</b> (selcolor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selcolor</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedColor</b> (selcolor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selcolor</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSizePolicy</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QSizePolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTipText</b> (tip)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tip</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUnderline</b> (on = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseCursor</b> (on, cursor = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td></td></tr>
+<tr><td>cursor</td><td>QCursor</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseTips</b> (on = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>on</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tipText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsetCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useTips</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KValueSelector.html b/python/pykde/doc/classref/kdeui/KValueSelector.html
new file mode 100644
index 00000000..7a175a4e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KValueSelector.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KValueSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KValueSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KValueSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSelector </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KValueSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KValueSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KValueSelector</b> (o, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KValueSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>Orientation</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (painter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawPalette</b> (pixmap)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saturation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHue</b> (h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSaturation</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateContents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWidgetAction.html b/python/pykde/doc/classref/kdeui/KWidgetAction.html
new file mode 100644
index 00000000..0b94496e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWidgetAction.html
@@ -0,0 +1,133 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWidgetAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWidgetAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWidgetAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWidgetAction</b> (a0, a1, a2, slot, a5, a6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWidgetAction instance</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>a5</td><td>KActionCollection</td><td></td></tr>
+<tr><td>a6</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KWidgetAction</b> (widget, text, cut, slot, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWidgetAction instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>cut</td><td>KShortcut</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>parent</td><td>KActionCollection</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (a0, a1 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plug</b> (widget, index = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoSized</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoSized</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToolbarDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotToolbarDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplug</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplug</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td> In versions KDE 3.1.0 and above, but <i>less than </i> KDE 3.2.0</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWindowInfo.html b/python/pykde/doc/classref/kdeui/KWindowInfo.html
new file mode 100644
index 00000000..ce058f9e
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWindowInfo.html
@@ -0,0 +1,144 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWindowInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWindowInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWindowInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWindowInfo</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWindowInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoDelete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>display</b> (text, pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (text, pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (text, timeout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>message</b> (text, pix, timeout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanent</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanent</b> (text, pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restore</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMessage</b> (window, text, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMessage</b> (window, text, pix, timeout = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+<tr><td>timeout</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWindowListMenu.html b/python/pykde/doc/classref/kdeui/KWindowListMenu.html
new file mode 100644
index 00000000..fd96cc99
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWindowListMenu.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWindowListMenu</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWindowListMenu</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWindowListMenu</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPopupMenu </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWindowListMenu</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWindowListMenu instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectActiveWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCascadeWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotExec</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUnclutterWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWizard.html b/python/pykde/doc/classref/kdeui/KWizard.html
new file mode 100644
index 00000000..b2848868
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWizard.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWizard</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWizard</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWizard</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWizard </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWizard</b> (parent = 0, name = 0, modal = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWizard instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWordWrap.html b/python/pykde/doc/classref/kdeui/KWordWrap.html
new file mode 100644
index 00000000..6721f90c
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWordWrap.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWordWrap</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWordWrap</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWordWrap</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {FadeOut, Truncate
+}<li><b>(anonymous)</b> = {FadeOut
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KWordWrap</b> (r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWordWrap instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>boundingRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawFadeoutText</b> (p, x, y, maxW, t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>maxW</td><td>int</td><td></td></tr>
+<tr><td>t</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawText</b> (painter, x, y, flags = Qt .AlignAuto)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>painter</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td>Qt .AlignAuto</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawTruncateText</b> (p, x, y, maxW, t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+<tr><td>maxW</td><td>int</td><td></td></tr>
+<tr><td>t</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formatText</b> (fm, r, flags, str, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KWordWrap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fm</td><td>QFontMetrics</td><td></td></tr>
+<tr><td>r</td><td>QRect</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>truncatedString</b> (dots = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dots</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wrappedString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KWritePermsIcon.html b/python/pykde/doc/classref/kdeui/KWritePermsIcon.html
new file mode 100644
index 00000000..9c3ab08f
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KWritePermsIcon.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KWritePermsIcon</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KWritePermsIcon</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KWritePermsIcon</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAuthIcon </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KWritePermsIcon</b> (fileName, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KWritePermsIcon instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileName</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateStatus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KXMLGUIBuilder.html b/python/pykde/doc/classref/kdeui/KXMLGUIBuilder.html
new file mode 100644
index 00000000..b5d880bc
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KXMLGUIBuilder.html
@@ -0,0 +1,107 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KXMLGUIBuilder</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KXMLGUIBuilder</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KXMLGUIBuilder</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KXMLGUIBuilder</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KXMLGUIBuilder instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>builderClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIClient)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>builderInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>containerTags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createContainer</b> (parent, index, element)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCustomElement</b> (parent, index, element)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>element</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customTags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalizeGUI</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeContainer</b> (container, parent, element, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>element</td><td>QDomElement</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeCustomElement</b> (parent, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBuilderClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBuilderInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KXMLGUIClient.StateChange.html b/python/pykde/doc/classref/kdeui/KXMLGUIClient.StateChange.html
new file mode 100644
index 00000000..dc537279
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KXMLGUIClient.StateChange.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KXMLGUIClient.StateChange</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KXMLGUIClient.StateChange</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KXMLGUIClient.StateChange</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>actionsToDisable</td><td>QStringList</td></tr>
+<tr><td>actionsToEnable</td><td>QStringList</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KXMLGUIClient.html b/python/pykde/doc/classref/kdeui/KXMLGUIClient.html
new file mode 100644
index 00000000..40729f65
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KXMLGUIClient.html
@@ -0,0 +1,231 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KXMLGUIClient</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KXMLGUIClient</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KXMLGUIClient</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ReverseStateChange</b> = {StateNoReverse, StateReverse
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KXMLGUIClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KXMLGUIClient instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KXMLGUIClient</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KXMLGUIClient instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> (element)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>element</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStateActionDisabled</b> (state, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>QString</td><td></td></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStateActionEnabled</b> (state, action)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>QString</td><td></td></tr>
+<tr><td>action</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>beginXMLPlug</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childClients</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KXMLGUIClient>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientBuilder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIBuilder)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>conserveMemory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>domDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDomDocument)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endXMLPlug</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>factory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIFactory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findMostRecentXMLFile</b> (files, doc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>files</td><td>QStringList</td><td></td></tr>
+<tr><td>doc</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getActionsToChangeForState</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIClient.StateChange)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertChildClient</b> (child)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localXMLFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KXMLGUIClient)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugActionList</b> (name, actionList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>actionList</td><td>QPtrList<KAction></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareXMLUnplug</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reloadXML</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeChildClient</b> (child)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClientBuilder</b> (builder)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>builder</td><td>KXMLGUIBuilder</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDOMDocument</b> (document, merge = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>document</td><td>QDomDocument</td><td></td></tr>
+<tr><td>merge</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFactory</b> (factory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>factory</td><td>KXMLGUIFactory</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocalXMLFile</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXML</b> (document, merge = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>document</td><td>QString</td><td></td></tr>
+<tr><td>merge</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXMLFile</b> (file, merge = 0, setXMLDoc = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+<tr><td>merge</td><td>bool</td><td>0</td></tr>
+<tr><td>setXMLDoc</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXMLGUIBuildDocument</b> (doc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>doc</td><td>QDomDocument</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stateChanged</b> (newstate, reverse = StateNoReverse)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newstate</td><td>QString</td><td></td></tr>
+<tr><td>reverse</td><td>KXMLGUIClient.ReverseStateChange</td><td>StateNoReverse</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplugActionList</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xmlFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xmlguiBuildDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDomDocument)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KXMLGUIFactory.html b/python/pykde/doc/classref/kdeui/KXMLGUIFactory.html
new file mode 100644
index 00000000..4614b728
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KXMLGUIFactory.html
@@ -0,0 +1,188 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KXMLGUIFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KXMLGUIFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KXMLGUIFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KXMLGUIFactory</b> (builder, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KXMLGUIFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>builder</td><td>KXMLGUIBuilder</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionPropertiesElement</b> (doc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDomElement)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>doc</td><td>QDomDocument</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientAdded</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientRemoved</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clients</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KXMLGUIClient>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configureShortcuts</b> (bAllowLetterShortcuts = 1, bSaveSettings = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAllowLetterShortcuts</td><td>bool</td><td>1</td></tr>
+<tr><td>bSaveSettings</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>container</b> (containerName, client, useTagName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>containerName</td><td>QString</td><td></td></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>useTagName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>containers</b> (tagName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<QWidget>)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tagName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentToXML</b> (doc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>doc</td><td>QDomDocument</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>elementToXML</b> (elem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elem</td><td>QDomElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findActionByName</b> (elem, sName, create)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDomElement)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elem</td><td>QDomElement</td><td></td></tr>
+<tr><td>sName</td><td>QString</td><td></td></tr>
+<tr><td>create</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugActionList</b> (client, name, actionList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>actionList</td><td>QPtrList<KAction></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfigFile</b> (filename, never_null, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>never_null</td><td>bool</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfigFile</b> (filename, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeDOMComments</b> (node)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>node</td><td>QDomNode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetContainer</b> (containerName, useTagName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>containerName</td><td>QString</td><td></td></tr>
+<tr><td>useTagName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveConfigFile</b> (doc, filename, instance = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>doc</td><td>QDomDocument</td><td></td></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unplugActionList</b> (client, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/KXYSelector.html b/python/pykde/doc/classref/kdeui/KXYSelector.html
new file mode 100644
index 00000000..3152d992
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/KXYSelector.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KXYSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KXYSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KXYSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KXYSelector</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KXYSelector instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawCursor</b> (p, xp, yp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>xp</td><td>int</td><td></td></tr>
+<tr><td>yp</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRange</b> (minX, minY, maxX, maxY)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minX</td><td>int</td><td></td></tr>
+<tr><td>minY</td><td>int</td><td></td></tr>
+<tr><td>maxX</td><td>int</td><td></td></tr>
+<tr><td>maxY</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValues</b> (xPos, yPos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>xPos</td><td>int</td><td></td></tr>
+<tr><td>yPos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setXValue</b> (xPos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>xPos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setYValue</b> (yPos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>yPos</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueChanged</b> (x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valuesFromPosition</b> (x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>xVal (int) yVal (int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wheelEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/QXEmbed.html b/python/pykde/doc/classref/kdeui/QXEmbed.html
new file mode 100644
index 00000000..086a23eb
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/QXEmbed.html
@@ -0,0 +1,196 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class QXEmbed</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class QXEmbed</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kdeui</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>QXEmbed</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Protocol</b> = {XEMBED, XPLAIN
+}</ul>
+<h3>methods</h3><ul>
+<li><b>QXEmbed</b> (parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a QXEmbed instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoDelete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customWhatsThis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>embed</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>embedClientIntoWindow</b> (client, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>QWidget</td><td></td></tr>
+<tr><td>window</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>embeddedWinId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(WId)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>embeddedWindowDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterWhatsThisMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusNextPrevChild</b> (next)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>next</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processClientCmdline</b> (list (a Python list of strings))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>,</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list (a Python list of strings)</td><td>ndex (int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>protocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QXEmbed.Protocol)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reparent</b> (parent, f, p, showIt = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>f</td><td>WFlags</td><td></td></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+<tr><td>showIt</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendDelete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProtocol</b> (proto)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proto</td><td>QXEmbed.Protocol</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizePolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSizePolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowChanged</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>WId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x11Event</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/index.html b/python/pykde/doc/classref/kdeui/index.html
new file mode 100644
index 00000000..73b5c5a7
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/index.html
@@ -0,0 +1,213 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kdeui</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdeui Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kdeui-globals.html">kdeui Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KAboutApplication - KDualColorButton</th></tr>
+<tr ><td><a href="KAboutApplication.html">KAboutApplication</a></td></tr>
+<tr ><td><a href="KAboutContainer.html">KAboutContainer</a></td></tr>
+<tr ><td><a href="KAboutContributor.html">KAboutContributor</a></td></tr>
+<tr ><td><a href="KAboutDialog.html">KAboutDialog</a></td></tr>
+<tr ><td><a href="KAboutKDE.html">KAboutKDE</a></td></tr>
+<tr ><td><a href="KAboutWidget.html">KAboutWidget</a></td></tr>
+<tr ><td><a href="KAction.html">KAction</a></td></tr>
+<tr ><td><a href="KActionCollection.html">KActionCollection</a></td></tr>
+<tr ><td><a href="KActionMenu.html">KActionMenu</a></td></tr>
+<tr ><td><a href="KActionPtrShortcutList.html">KActionPtrShortcutList</a></td></tr>
+<tr ><td><a href="KActionSelector.html">KActionSelector</a></td></tr>
+<tr ><td><a href="KActionSeparator.html">KActionSeparator</a></td></tr>
+<tr ><td><a href="KActionShortcutList.html">KActionShortcutList</a></td></tr>
+<tr ><td><a href="KActiveLabel.html">KActiveLabel</a></td></tr>
+<tr ><td><a href="KAnimWidget.html">KAnimWidget</a></td></tr>
+<tr ><td><a href="KArrowButton.html">KArrowButton</a></td></tr>
+<tr ><td><a href="KAuthIcon.html"><i>KAuthIcon</i></a></td></tr>
+<tr ><td><a href="KBugReport.html">KBugReport</a></td></tr>
+<tr ><td><a href="KButtonBox.html">KButtonBox</a></td></tr>
+<tr ><td><a href="KCModule.html">KCModule</a></td></tr>
+<tr ><td><a href="KCharSelect.html">KCharSelect</a></td></tr>
+<tr ><td><a href="KCharSelectTable.html">KCharSelectTable</a></td></tr>
+<tr ><td><a href="KColor.html">KColor</a></td></tr>
+<tr ><td><a href="KColorCells.html">KColorCells</a></td></tr>
+<tr ><td><a href="KColorCombo.html">KColorCombo</a></td></tr>
+<tr ><td><a href="KColorDialog.html">KColorDialog</a></td></tr>
+<tr ><td><a href="KColorDrag.html">KColorDrag</a></td></tr>
+<tr ><td><a href="KColorPatch.html">KColorPatch</a></td></tr>
+<tr ><td><a href="KComboBox.html">KComboBox</a></td></tr>
+<tr ><td><a href="KCommand.html"><i>KCommand</i></a></td></tr>
+<tr ><td><a href="KCommandHistory.html">KCommandHistory</a></td></tr>
+<tr ><td><a href="KCompletionBox.html">KCompletionBox</a></td></tr>
+<tr ><td><a href="KConfigDialog.html">KConfigDialog</a></td></tr>
+<tr ><td><a href="KContextMenuManager.html">KContextMenuManager</a></td></tr>
+<tr ><td><a href="KCursor.html">KCursor</a></td></tr>
+<tr ><td><a href="KDCOPActionProxy.html">KDCOPActionProxy</a></td></tr>
+<tr ><td><a href="KDateInternalMonthPicker.html">KDateInternalMonthPicker</a></td></tr>
+<tr ><td><a href="KDateInternalWeekSelector.html">KDateInternalWeekSelector</a></td></tr>
+<tr ><td><a href="KDateInternalYearSelector.html">KDateInternalYearSelector</a></td></tr>
+<tr ><td><a href="KDatePicker.html">KDatePicker</a></td></tr>
+<tr ><td><a href="KDateTable.html">KDateTable</a></td></tr>
+<tr ><td><a href="KDateTimeWidget.html">KDateTimeWidget</a></td></tr>
+<tr ><td><a href="KDateValidator.html">KDateValidator</a></td></tr>
+<tr ><td><a href="KDateWidget.html">KDateWidget</a></td></tr>
+<tr ><td><a href="KDialog.html">KDialog</a></td></tr>
+<tr ><td><a href="KDialogBase.html">KDialogBase</a></td></tr>
+<tr ><td><a href="KDialogQueue.html">KDialogQueue</a></td></tr>
+<tr ><td><a href="KDockArea.html">KDockArea</a></td></tr>
+<tr ><td><a href="KDockMainWindow.html">KDockMainWindow</a></td></tr>
+<tr ><td><a href="KDockManager.html">KDockManager</a></td></tr>
+<tr ><td><a href="KDockTabGroup.html">KDockTabGroup</a></td></tr>
+<tr ><td><a href="KDockWidget.html">KDockWidget</a></td></tr>
+<tr ><td><a href="KDockWidgetAbstractHeader.html">KDockWidgetAbstractHeader</a></td></tr>
+<tr ><td><a href="KDockWidgetAbstractHeaderDrag.html">KDockWidgetAbstractHeaderDrag</a></td></tr>
+<tr ><td><a href="KDockWidgetHeader.html">KDockWidgetHeader</a></td></tr>
+<tr ><td><a href="KDockWidgetHeaderDrag.html">KDockWidgetHeaderDrag</a></td></tr>
+<tr ><td><a href="KDoubleNumInput.html">KDoubleNumInput</a></td></tr>
+<tr ><td><a href="KDoubleSpinBox.html">KDoubleSpinBox</a></td></tr>
+<tr ><td><a href="KDoubleValidator.html">KDoubleValidator</a></td></tr>
+<tr ><td><a href="KDualColorButton.html">KDualColorButton</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KEdFind - KPixmapIO</th></tr>
+<tr ><td><a href="KEdFind.html">KEdFind</a></td></tr>
+<tr ><td><a href="KEdGotoLine.html">KEdGotoLine</a></td></tr>
+<tr ><td><a href="KEdReplace.html">KEdReplace</a></td></tr>
+<tr ><td><a href="KEdit.html">KEdit</a></td></tr>
+<tr ><td><a href="KEditListBox.html">KEditListBox</a></td></tr>
+<tr ><td><a href="KEditListBox.CustomEditor.html">KEditListBox.CustomEditor</a></td></tr>
+<tr ><td><a href="KEditToolbar.html">KEditToolbar</a></td></tr>
+<tr ><td><a href="KEditToolbarWidget.html">KEditToolbarWidget</a></td></tr>
+<tr ><td><a href="KFloatValidator.html">KFloatValidator</a></td></tr>
+<tr ><td><a href="KFontAction.html">KFontAction</a></td></tr>
+<tr ><td><a href="KFontChooser.html">KFontChooser</a></td></tr>
+<tr ><td><a href="KFontCombo.html">KFontCombo</a></td></tr>
+<tr ><td><a href="KFontDialog.html">KFontDialog</a></td></tr>
+<tr ><td><a href="KFontRequester.html">KFontRequester</a></td></tr>
+<tr ><td><a href="KFontSizeAction.html">KFontSizeAction</a></td></tr>
+<tr ><td><a href="KGradientSelector.html">KGradientSelector</a></td></tr>
+<tr ><td><a href="KGuiItem.html">KGuiItem</a></td></tr>
+<tr ><td><a href="KHSSelector.html">KHSSelector</a></td></tr>
+<tr ><td><a href="KHelpMenu.html">KHelpMenu</a></td></tr>
+<tr ><td><a href="KHistoryCombo.html">KHistoryCombo</a></td></tr>
+<tr ><td><a href="KIconView.html">KIconView</a></td></tr>
+<tr ><td><a href="KIconViewItem.html">KIconViewItem</a></td></tr>
+<tr ><td><a href="KIconViewSearchLine.html">KIconViewSearchLine</a></td></tr>
+<tr ><td><a href="KInputDialog.html">KInputDialog</a></td></tr>
+<tr ><td><a href="KIntNumInput.html">KIntNumInput</a></td></tr>
+<tr ><td><a href="KIntSpinBox.html">KIntSpinBox</a></td></tr>
+<tr ><td><a href="KIntValidator.html">KIntValidator</a></td></tr>
+<tr ><td><a href="KJanusWidget.html">KJanusWidget</a></td></tr>
+<tr ><td><a href="KKeyButton.html">KKeyButton</a></td></tr>
+<tr ><td><a href="KKeyChooser.html">KKeyChooser</a></td></tr>
+<tr ><td><a href="KKeyDialog.html">KKeyDialog</a></td></tr>
+<tr ><td><a href="KLanguageButton.html">KLanguageButton</a></td></tr>
+<tr ><td><a href="KLed.html">KLed</a></td></tr>
+<tr ><td><a href="KLineEdit.html">KLineEdit</a></td></tr>
+<tr ><td><a href="KLineEditDlg.html">KLineEditDlg</a></td></tr>
+<tr ><td><a href="KListAction.html">KListAction</a></td></tr>
+<tr ><td><a href="KListBox.html">KListBox</a></td></tr>
+<tr ><td><a href="KListView.html">KListView</a></td></tr>
+<tr ><td><a href="KListViewItem.html">KListViewItem</a></td></tr>
+<tr ><td><a href="KListViewSearchLine.html">KListViewSearchLine</a></td></tr>
+<tr ><td><a href="KListViewSearchLineWidget.html">KListViewSearchLineWidget</a></td></tr>
+<tr ><td><a href="KMacroCommand.html">KMacroCommand</a></td></tr>
+<tr ><td><a href="KMainWindow.html">KMainWindow</a></td></tr>
+<tr ><td><a href="KMainWindowInterface.html">KMainWindowInterface</a></td></tr>
+<tr ><td><a href="KMenuBar.html">KMenuBar</a></td></tr>
+<tr ><td><a href="KMessageBox.html">KMessageBox</a></td></tr>
+<tr ><td><a href="KMimeTypeValidator.html">KMimeTypeValidator</a></td></tr>
+<tr ><td><a href="KNamedCommand.html">KNamedCommand</a></td></tr>
+<tr ><td><a href="KNumInput.html"><i>KNumInput</i></a></td></tr>
+<tr ><td><a href="KPaletteTable.html">KPaletteTable</a></td></tr>
+<tr ><td><a href="KPanelAppMenu.html">KPanelAppMenu</a></td></tr>
+<tr ><td><a href="KPanelApplet.html">KPanelApplet</a></td></tr>
+<tr ><td><a href="KPanelExtension.html">KPanelExtension</a></td></tr>
+<tr ><td><a href="KPanelMenu.html"><i>KPanelMenu</i></a></td></tr>
+<tr ><td><a href="KPassivePopup.html">KPassivePopup</a></td></tr>
+<tr ><td><a href="KPasswordDialog.html">KPasswordDialog</a></td></tr>
+<tr ><td><a href="KPasswordEdit.html">KPasswordEdit</a></td></tr>
+<tr ><td><a href="KPasteTextAction.html">KPasteTextAction</a></td></tr>
+<tr ><td><a href="KPixmapIO.html">KPixmapIO</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KPixmapRegionSelectorDialog - QXEmbed</th></tr>
+<tr ><td><a href="KPixmapRegionSelectorDialog.html">KPixmapRegionSelectorDialog</a></td></tr>
+<tr ><td><a href="KPixmapRegionSelectorWidget.html">KPixmapRegionSelectorWidget</a></td></tr>
+<tr ><td><a href="KPopupFrame.html">KPopupFrame</a></td></tr>
+<tr ><td><a href="KPopupMenu.html">KPopupMenu</a></td></tr>
+<tr ><td><a href="KPopupTitle.html">KPopupTitle</a></td></tr>
+<tr ><td><a href="KProgress.html">KProgress</a></td></tr>
+<tr ><td><a href="KProgressDialog.html">KProgressDialog</a></td></tr>
+<tr ><td><a href="KPushButton.html">KPushButton</a></td></tr>
+<tr ><td><a href="KRadioAction.html">KRadioAction</a></td></tr>
+<tr ><td><a href="KRecentFilesAction.html">KRecentFilesAction</a></td></tr>
+<tr ><td><a href="KRestrictedLine.html">KRestrictedLine</a></td></tr>
+<tr ><td><a href="KRootPermsIcon.html">KRootPermsIcon</a></td></tr>
+<tr ><td><a href="KRootPixmap.html">KRootPixmap</a></td></tr>
+<tr ><td><a href="KRuler.html">KRuler</a></td></tr>
+<tr ><td><a href="KScrollView.html">KScrollView</a></td></tr>
+<tr ><td><a href="KSelectAction.html">KSelectAction</a></td></tr>
+<tr ><td><a href="KSelector.html">KSelector</a></td></tr>
+<tr ><td><a href="KSeparator.html">KSeparator</a></td></tr>
+<tr ><td><a href="KShortcutDialog.html">KShortcutDialog</a></td></tr>
+<tr ><td><a href="KSplashScreen.html">KSplashScreen</a></td></tr>
+<tr ><td><a href="KSqueezedTextLabel.html">KSqueezedTextLabel</a></td></tr>
+<tr ><td><a href="KStatusBar.html">KStatusBar</a></td></tr>
+<tr ><td><a href="KStatusBarLabel.html">KStatusBarLabel</a></td></tr>
+<tr ><td><a href="KStdAction.html">KStdAction</a></td></tr>
+<tr ><td><a href="KStdGuiItem.html">KStdGuiItem</a></td></tr>
+<tr ><td><a href="KStringListValidator.html">KStringListValidator</a></td></tr>
+<tr ><td><a href="KSystemTray.html">KSystemTray</a></td></tr>
+<tr ><td><a href="KTabBar.html">KTabBar</a></td></tr>
+<tr ><td><a href="KTabCtl.html">KTabCtl</a></td></tr>
+<tr ><td><a href="KTabWidget.html">KTabWidget</a></td></tr>
+<tr ><td><a href="KTextBrowser.html">KTextBrowser</a></td></tr>
+<tr ><td><a href="KTextEdit.html">KTextEdit</a></td></tr>
+<tr ><td><a href="KTimeWidget.html">KTimeWidget</a></td></tr>
+<tr ><td><a href="KTimezoneWidget.html">KTimezoneWidget</a></td></tr>
+<tr ><td><a href="KTipDatabase.html">KTipDatabase</a></td></tr>
+<tr ><td><a href="KTipDialog.html">KTipDialog</a></td></tr>
+<tr ><td><a href="KToggleAction.html">KToggleAction</a></td></tr>
+<tr ><td><a href="KToggleFullScreenAction.html">KToggleFullScreenAction</a></td></tr>
+<tr ><td><a href="KToggleToolBarAction.html">KToggleToolBarAction</a></td></tr>
+<tr ><td><a href="KToolBar.html">KToolBar</a></td></tr>
+<tr ><td><a href="KToolBarButton.html">KToolBarButton</a></td></tr>
+<tr ><td><a href="KToolBarLabelAction.html">KToolBarLabelAction</a></td></tr>
+<tr ><td><a href="KToolBarPopupAction.html">KToolBarPopupAction</a></td></tr>
+<tr ><td><a href="KToolBarRadioGroup.html">KToolBarRadioGroup</a></td></tr>
+<tr ><td><a href="KToolBarSeparator.html">KToolBarSeparator</a></td></tr>
+<tr ><td><a href="KURLLabel.html">KURLLabel</a></td></tr>
+<tr ><td><a href="KValueSelector.html">KValueSelector</a></td></tr>
+<tr ><td><a href="KWidgetAction.html">KWidgetAction</a></td></tr>
+<tr ><td><a href="KWindowInfo.html">KWindowInfo</a></td></tr>
+<tr ><td><a href="KWindowListMenu.html">KWindowListMenu</a></td></tr>
+<tr ><td><a href="KWizard.html">KWizard</a></td></tr>
+<tr ><td><a href="KWordWrap.html">KWordWrap</a></td></tr>
+<tr ><td><a href="KWritePermsIcon.html">KWritePermsIcon</a></td></tr>
+<tr ><td><a href="KXMLGUIBuilder.html">KXMLGUIBuilder</a></td></tr>
+<tr ><td><a href="KXMLGUIClient.html">KXMLGUIClient</a></td></tr>
+<tr ><td><a href="KXMLGUIClient.StateChange.html">KXMLGUIClient.StateChange</a></td></tr>
+<tr ><td><a href="KXMLGUIFactory.html">KXMLGUIFactory</a></td></tr>
+<tr ><td><a href="KXYSelector.html">KXYSelector</a></td></tr>
+<tr ><td><a href="QXEmbed.html">QXEmbed</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kdeui/kdeui-globals.html b/python/pykde/doc/classref/kdeui/kdeui-globals.html
new file mode 100644
index 00000000..43aa5f2d
--- /dev/null
+++ b/python/pykde/doc/classref/kdeui/kdeui-globals.html
@@ -0,0 +1,36 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kdeui globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kdeui Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kdeui Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>global methods</h3><ul>
+<li><b>testKActionList</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KAction>),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QPtrList<KAction></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KAppTreeListItem.html b/python/pykde/doc/classref/kfile/KAppTreeListItem.html
new file mode 100644
index 00000000..c8149019
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KAppTreeListItem.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAppTreeListItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAppTreeListItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAppTreeListItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAppTreeListItem</b> (a0, a1, a2, a3, a4, a5, a6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAppTreeListItem instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KListView</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QPixmap</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td></td></tr>
+<tr><td>a4</td><td>bool</td><td></td></tr>
+<tr><td>a5</td><td>QString</td><td></td></tr>
+<tr><td>a6</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAppTreeListItem</b> (a0, a1, a2, a3, a4, a5, a6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAppTreeListItem instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QPixmap</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td></td></tr>
+<tr><td>a4</td><td>bool</td><td></td></tr>
+<tr><td>a5</td><td>QString</td><td></td></tr>
+<tr><td>a6</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (a0, a1, a2, a3, a4)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPixmap</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+<tr><td>a2</td><td>bool</td><td></td></tr>
+<tr><td>a3</td><td>QString</td><td></td></tr>
+<tr><td>a4</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOpen</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KApplicationPropsPlugin.html b/python/pykde/doc/classref/kfile/KApplicationPropsPlugin.html
new file mode 100644
index 00000000..5005f80f
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KApplicationPropsPlugin.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KApplicationPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KApplicationPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KApplicationPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KApplicationPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplicationPropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAddExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDelExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KApplicationTree.html b/python/pykde/doc/classref/kfile/KApplicationTree.html
new file mode 100644
index 00000000..650fff05
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KApplicationTree.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KApplicationTree</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KApplicationTree</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KApplicationTree</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KApplicationTree</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KApplicationTree instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDesktopGroup</b> (a0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>KAppTreeListItem</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirSel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotItemHighlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectionChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>it</td><td>KAppTreeListItem*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KBindingPropsPlugin.html b/python/pykde/doc/classref/kfile/KBindingPropsPlugin.html
new file mode 100644
index 00000000..21208629
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KBindingPropsPlugin.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KBindingPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KBindingPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KBindingPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KBindingPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KBindingPropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KCombiView.html b/python/pykde/doc/classref/kfile/KCombiView.html
new file mode 100644
index 00000000..77cb74ed
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KCombiView.html
@@ -0,0 +1,202 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCombiView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCombiView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCombiView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSplitter, KFileView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCombiView</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCombiView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureItemVisible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invertSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listingCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptDrops</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropOptions_impl</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRight</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KFileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionMode</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>KFile.SelectionMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSortingChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KCustomMenuEditor.html b/python/pykde/doc/classref/kfile/KCustomMenuEditor.html
new file mode 100644
index 00000000..0f8ce6e8
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KCustomMenuEditor.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCustomMenuEditor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCustomMenuEditor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCustomMenuEditor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCustomMenuEditor</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCustomMenuEditor instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfigBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>refreshButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfigBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMoveDown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMoveUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNewItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRemoveItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDesktopPropsPlugin.html b/python/pykde/doc/classref/kfile/KDesktopPropsPlugin.html
new file mode 100644
index 00000000..4179cc12
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDesktopPropsPlugin.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDesktopPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDesktopPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDesktopPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDesktopPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDesktopPropsPlugin instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAddFiletype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAdvanced</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotBrowseExec</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDelFiletype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectMimetype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDevicePropsPlugin.html b/python/pykde/doc/classref/kfile/KDevicePropsPlugin.html
new file mode 100644
index 00000000..d4c44408
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDevicePropsPlugin.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDevicePropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDevicePropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDevicePropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDevicePropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDevicePropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDirOperator.html b/python/pykde/doc/classref/kfile/KDirOperator.html
new file mode 100644
index 00000000..227fff1a
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDirOperator.html
@@ -0,0 +1,520 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirOperator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirOperator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirOperator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ActionTypes</b> = {SortActions, ViewActions, NavActions, FileActions, AllActions
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDirOperator</b> (urlName = KURL (), parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirOperator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urlName</td><td>KURL</td><td>KURL ()</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activatedMenu</b> (a0, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>back</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cdUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkPreviewSupport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> (alsoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>alsoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createView</b> (parent, view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileView)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>view</td><td>KFile.FileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (items, ask = 1, showProgress = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DeleteJob)</i></td></tr>
+<tr><td>Renamed: was <i>' del
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>ask</td><td>bool</td><td>1</td></tr>
+<tr><td>showProgress</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (items, parent, ask = 1, showProgress = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DeleteJob)</i></td></tr>
+<tr><td>Renamed: was <i>' del'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.0.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>ask</td><td>bool</td><td>1</td></tr>
+<tr><td>showProgress</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteSelected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirActivated</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirCompletionObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCompletion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirHighlighting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirLister</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDirLister)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirOnlyMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirOnlyMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (item, event, urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileHighlighted</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileSelected</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishedLoading</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forward</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightFile</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>home</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertNewFiles</b> (newone)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newone</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRoot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemDeleted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeDirCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (directory, enterDirectory = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>QString</td><td></td></tr>
+<tr><td>enterDirectory</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFile.Mode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nameFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numDirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onlyDoubleClickSelectsFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pathChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareCompletionObjects</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progressBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProgress)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rereadDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectDir</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectFile</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptDrops</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirLister</b> (lister)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lister</td><td>KDirLister</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableDirHighlighting</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeFilter</b> (mimetypes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetypes</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>KFile.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNameFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnlyDoubleClickSelectsFiles</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewWidget</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowHiddenFiles</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url, clearforward)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>clearforward</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KFileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setView</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KFile.FileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setViewConfig</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupMenu</b> (whichActions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>whichActions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showHiddenFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCompletionMatch</b> (match)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>match</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortByDate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortByName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortBySize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortReversed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sorting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDir.SortSpec)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleDirsFirst</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleIgnoreCase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trash</b> (items, parent, ask = 1, showProgress = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>ask</td><td>bool</td><td>1</td></tr>
+<tr><td>showProgress</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trashSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KAction.ActivationReason</td><td></td></tr>
+<tr><td>a1</td><td>Qt.ButtonState</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateInformation</b> (files, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>files</td><td>int</td><td></td></tr>
+<tr><td>dirs</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSelectionDependentActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSortActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateViewActions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlEntered</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewChanged</b> (newView)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newView</td><td>KFileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewConfigGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDirSelectDialog.html b/python/pykde/doc/classref/kfile/KDirSelectDialog.html
new file mode 100644
index 00000000..a8f802b9
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDirSelectDialog.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirSelectDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirSelectDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirSelectDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDirSelectDialog</b> (startDir = QString .null, localOnly = 0, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirSelectDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>localOnly</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectDirectory</b> (startDir = QString .null, localOnly = 0, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>localOnly</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser1</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDirSize.html b/python/pykde/doc/classref/kfile/KDirSize.html
new file mode 100644
index 00000000..186a1808
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDirSize.html
@@ -0,0 +1,128 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirSize</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirSize</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirSize</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDirSize</b> (directory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirSize instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDirSize</b> (lstItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirSize instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lstItems</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirSize</b> (directory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirSize64</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirSizeJob</b> (directory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDirSize)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirSizeJob</b> (lstItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDirSize)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lstItems</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSync</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEntries</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startNextJob</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize64</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSubdirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KDirSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KDiskFreeSp.html b/python/pykde/doc/classref/kfile/KDiskFreeSp.html
new file mode 100644
index 00000000..dbc3d06d
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KDiskFreeSp.html
@@ -0,0 +1,81 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDiskFreeSp</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDiskFreeSp</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDiskFreeSp</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDiskFreeSp</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDiskFreeSp instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findUsageInfo</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDiskFreeSp)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>foundMountPoint</b> (mountPoint, kBSize, kBUsed, kBAvail)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mountPoint</td><td>QString</td><td></td></tr>
+<tr><td>kBSize</td><td>ulong</td><td></td></tr>
+<tr><td>kBUsed</td><td>ulong</td><td></td></tr>
+<tr><td>kBAvail</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>foundMountPoint</b> (a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDF</b> (mountPoint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mountPoint</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KEncodingFileDialog.Result.html b/python/pykde/doc/classref/kfile/KEncodingFileDialog.Result.html
new file mode 100644
index 00000000..eb401c96
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KEncodingFileDialog.Result.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEncodingFileDialog.Result</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEncodingFileDialog.Result</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEncodingFileDialog.Result</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>URLs</td><td>KURL::List</td></tr>
+<tr><td>encoding</td><td>QString</td></tr>
+<tr><td>fileNames</td><td>QStringList</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KEncodingFileDialog.html b/python/pykde/doc/classref/kfile/KEncodingFileDialog.html
new file mode 100644
index 00000000..2603acab
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KEncodingFileDialog.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEncodingFileDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEncodingFileDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEncodingFileDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KFileDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KEncodingFileDialog</b> (startDir = QString .null, encoding = QString .null, filter = QString .null, caption = QString .null, type = KFileDialog .Opening, parent = 0, name = "", modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEncodingFileDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>type</td><td>KFileDialog.OperationMode</td><td>KFileDialog .Opening</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>""</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenFileNameAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenFileNamesAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenURLAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenURLsAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSaveFileNameAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSaveURLAndEncoding</b> (encoding = QString .null, startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEncodingFileDialog.Result)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>encoding</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedEncoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KExecPropsPlugin.html b/python/pykde/doc/classref/kfile/KExecPropsPlugin.html
new file mode 100644
index 00000000..2e5f55a4
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KExecPropsPlugin.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KExecPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KExecPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KExecPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KExecPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KExecPropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotBrowseExec</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFile.html b/python/pykde/doc/classref/kfile/KFile.html
new file mode 100644
index 00000000..92483306
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFile.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>FileView</b> = {Default, Simple, Detail, SeparateDirs, PreviewContents, PreviewInfo, FileViewMax
+}<li><b>FileView</b> = {Default, Simple, Detail, SeparateDirs, PreviewContents, PreviewInfo
+}<li><b>Mode</b> = {File, Directory, Files, ExistingOnly, LocalOnly, ModeMax
+}<li><b>Mode</b> = {File, Directory, Files, ExistingOnly, LocalOnly
+}<li><b>SelectionMode</b> = {Single, Multi, Extended, NoSelection
+}</ul>
+<h3>methods</h3><ul>
+<li><b>isDefaultView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDetailView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPreviewContents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPreviewInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSeparateDirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSimpleView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) view (KFile.FileView)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSortByDate</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSortByName</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSortBySize</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSortCaseInsensitive</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSortDirsFirst</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileDetailView.html b/python/pykde/doc/classref/kfile/KFileDetailView.html
new file mode 100644
index 00000000..6180498c
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileDetailView.html
@@ -0,0 +1,274 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileDetailView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileDetailView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileDetailView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListView, KFileView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileDetailView</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileDetailView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptDrag</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragLeaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragLeaveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>determineIcon</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (event, fileItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+<tr><td>fileItem</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (event, urls, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureItemVisible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invertSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listingCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypeDeterminationFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rightButtonPressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrollWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QScrollView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionMode</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>KFile.SelectionMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDoubleClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectionChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSortingChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileDialog.html b/python/pykde/doc/classref/kfile/KFileDialog.html
new file mode 100644
index 00000000..87ab88ce
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileDialog.html
@@ -0,0 +1,543 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>OperationMode</b> = {Other, Opening, Saving
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFileDialog</b> (startDir, filter, parent, name, modal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>modal</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileDialog</b> (startDir, filter, parent, name, modal, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>modal</td><td>bool</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDirEntry</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addToRecentDocuments</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFilterExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFilterMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentMimeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enterURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileHighlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileHighlighted</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileSelected</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterChanged</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCompleteURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getExistingDirectory</b> (startDir = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getExistingURL</b> (startDir = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getImageOpenURL</b> (startDir = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenFileName</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenFileNameWId</b> (startDir, filter, parent_id, caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenFileNames</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenURL</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOpenURLs</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSaveFileName</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSaveFileNameWId</b> (dir, filter, parent_id, caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+<tr><td>parent_id</td><td>WId</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSaveURL</b> (startDir = QString .null, filter = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>filter</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getStartURL</b> (startDir, recentDirClass)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>recentDirClass</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (startDir, filter, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startDir</td><td>QString</td><td></td></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initGUI</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initSpeedbar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keepsLocation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locationActivated</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFile.Mode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multiSelectionChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>okButton</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operationMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileDialog.OperationMode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseSelectedURLs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pathComboChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pathComboIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readRecentFiles</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveRecentFiles</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedURLs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilterMimeType</b> (label, types, defaultType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>types</td><td>KMimeType.List</td><td></td></tr>
+<tr><td>defaultType</td><td>KMimeType.Ptr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeepLocation</b> (keep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocationLabel</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeFilter</b> (types, defaultType = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>types</td><td>QStringList</td><td></td></tr>
+<tr><td>defaultType</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>KFile.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOperationMode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileDialog.OperationMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewWidget</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewWidget</b> (w)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>KPreviewWidgetBase</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelection</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStartDir</b> (directory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url, clearforward = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>clearforward</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoSelectExtClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFilterChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotLoadingFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStatResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speedBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLBar)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleBookmarks</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleSpeedbar</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tokenize</b> (line)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>line</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KToolBar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolbarCallback</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateAutoSelectExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateStatusLine</b> (dirs, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dirs</td><td>int</td><td></td></tr>
+<tr><td>files</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlEntered</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileFilterCombo.html b/python/pykde/doc/classref/kfile/KFileFilterCombo.html
new file mode 100644
index 00000000..e90d631f
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileFilterCombo.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileFilterCombo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileFilterCombo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileFilterCombo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KComboBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileFilterCombo</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileFilterCombo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeFilter</b> (types, defaultType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>types</td><td>QStringList</td><td></td></tr>
+<tr><td>defaultType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showsAllTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileIconView.html b/python/pykde/doc/classref/kfile/KFileIconView.html
new file mode 100644
index 00000000..da25fb18
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileIconView.html
@@ -0,0 +1,306 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileIconView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileIconView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileIconView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIconView, KFileView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileIconView</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileIconView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptDrag</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>arrangeItemsInGrid</b> (updated = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>updated</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragLeaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragLeaveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>determineIcon</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileIconViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (event, fileItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+<tr><td>fileItem</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (event, urls, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureItemVisible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invertSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listingCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypeDeterminationFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrollWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QScrollView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptDrops</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreMaximumSize</b> (ignoreSize = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ignoreSize</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionMode</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>KFile.SelectionMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreviews</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomIn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomOut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileIconViewItem.html b/python/pykde/doc/classref/kfile/KFileIconViewItem.html
new file mode 100644
index 00000000..937556e4
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileIconViewItem.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileIconViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileIconViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileIconViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIconViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileIconViewItem</b> (parent, text, pixmap, fi)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileIconViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pixmap</td><td>QPixmap</td><td></td></tr>
+<tr><td>fi</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileIconViewItem</b> (parent, fi)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileIconViewItem instance</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QIconView</td><td></td></tr>
+<tr><td>fi</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileListViewItem.html b/python/pykde/doc/classref/kfile/KFileListViewItem.html
new file mode 100644
index 00000000..bde63f7b
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileListViewItem.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileListViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileListViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileListViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileListViewItem</b> (parent, text, icon, fi)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>fi</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileListViewItem</b> (parent, fi)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileListViewItem instance</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>fi</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileListViewItem</b> (parent, text, icon, fi, after)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileListViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QListView</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QPixmap</td><td></td></tr>
+<tr><td>fi</td><td>KFileItem</td><td></td></tr>
+<tr><td>after</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKey</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileOpenWithHandler.html b/python/pykde/doc/classref/kfile/KFileOpenWithHandler.html
new file mode 100644
index 00000000..ef4b6f5f
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileOpenWithHandler.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileOpenWithHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileOpenWithHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileOpenWithHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KOpenWithHandler </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileOpenWithHandler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileOpenWithHandler instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayOpenWithDialog</b> (urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFilePermissionsPropsPlugin.html b/python/pykde/doc/classref/kfile/KFilePermissionsPropsPlugin.html
new file mode 100644
index 00000000..75115f3b
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFilePermissionsPropsPlugin.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilePermissionsPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilePermissionsPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilePermissionsPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PermissionsMode</b> = {PermissionsOnlyFiles, PermissionsOnlyDirs, PermissionsOnlyLinks, PermissionsMixed
+}<li><b>PermissionsTarget</b> = {PermissionsOwner, PermissionsGroup, PermissionsOthers
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFilePermissionsPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilePermissionsPropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFilePreview.html b/python/pykde/doc/classref/kfile/KFilePreview.html
new file mode 100644
index 00000000..915a377c
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFilePreview.html
@@ -0,0 +1,206 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilePreview</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilePreview</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilePreview</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSplitter, KFileView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFilePreview</b> (parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilePreview instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFilePreview</b> (view, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilePreview instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KFileView</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearPreview</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureItemVisible</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstFileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invertSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listingCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileView</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KFileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreviewWidget</b> (w, u)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>QWidget</td><td></td></tr>
+<tr><td>u</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionMode</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>KFile.SelectionMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreview</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHighlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFilePropsPlugin.html b/python/pykde/doc/classref/kfile/KFilePropsPlugin.html
new file mode 100644
index 00000000..acc5fb58
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFilePropsPlugin.html
@@ -0,0 +1,110 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilePropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilePropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilePropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFilePropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilePropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postApplyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileNameReadOnly</b> (ro)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ro</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCopyFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDirSizeFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDirSizeUpdate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEditFileType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFileRenamed</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>KURL</td><td></td></tr>
+<tr><td>a2</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFoundMountPoint</b> (mp, kBSize, kBUsed, kBAvail)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mp</td><td>QString</td><td></td></tr>
+<tr><td>kBSize</td><td>ulong</td><td></td></tr>
+<tr><td>kBUsed</td><td>ulong</td><td></td></tr>
+<tr><td>kBAvail</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSizeDetermine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSizeStop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileSharePropsPlugin.html b/python/pykde/doc/classref/kfile/KFileSharePropsPlugin.html
new file mode 100644
index 00000000..d6d6948d
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileSharePropsPlugin.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileSharePropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileSharePropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileSharePropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileSharePropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileSharePropsPlugin instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>page</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotConfigureFileSharing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotConfigureFileSharingDone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileTreeBranch.html b/python/pykde/doc/classref/kfile/KFileTreeBranch.html
new file mode 100644
index 00000000..55ed407d
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileTreeBranch.html
@@ -0,0 +1,157 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileTreeBranch</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileTreeBranch</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileTreeBranch</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDirLister </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileTreeBranch</b> (a0, url, name, pix, showHidden = 0, branchRoot = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileTreeBranch instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeView</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+<tr><td>showHidden</td><td>bool</td><td>0</td></tr>
+<tr><td>branchRoot</td><td>KFileTreeViewItem</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childRecurse</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTreeViewItem</b> (parent, fileItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KFileTreeViewItem</td><td></td></tr>
+<tr><td>fileItem</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directoryChildCount</b> (item, count)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileTreeViewItem</td><td></td></tr>
+<tr><td>count</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTVIByURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTVIByURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newTreeViewItems</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeBranch</td><td></td></tr>
+<tr><td>a1</td><td>KFileTreeViewItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>populate</b> (url, currItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>currItem</td><td>KFileTreeViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>populateFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>root</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootUrl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChildRecurse</b> (t = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOpen</b> (setopen = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>setopen</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOpenPixmap</b> (pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRoot</b> (r)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>r</td><td>KFileTreeViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowExtensions</b> (visible = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>visible</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showExtensions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileTreeView.html b/python/pykde/doc/classref/kfile/KFileTreeView.html
new file mode 100644
index 00000000..14be5659
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileTreeView.html
@@ -0,0 +1,265 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileTreeView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileTreeView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileTreeView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileTreeView</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileTreeView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptDrag</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBranch</b> (path, name, showHidden = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranch)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>KURL</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>showHidden</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBranch</b> (path, name, pix, showHidden = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranch)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>KURL</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+<tr><td>showHidden</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addBranch</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranch)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeBranch</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>branch</b> (searchName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranch)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>searchName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>branches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranchList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragLeaveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragLeaveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDragMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ev</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentKFileTreeViewItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a2</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL.List</td><td></td></tr>
+<tr><td>a1</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a2</td><td>KURL.List</td><td></td></tr>
+<tr><td>a3</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a1</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeView</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a2</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a1</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a2</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeView</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a2</td><td>QListViewItem</td><td></td></tr>
+<tr><td>a3</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findItem</b> (brnch, relUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>brnch</td><td>KFileTreeBranch</td><td></td></tr>
+<tr><td>relUrl</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findItem</b> (branchName, relUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeViewItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>branchName</td><td>QString</td><td></td></tr>
+<tr><td>relUrl</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemIcon</b> (a0, gap = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeViewItem</td><td></td></tr>
+<tr><td>gap</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeBranch</b> (branch)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>branch</td><td>KFileTreeBranch</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirOnlyMode</b> (branch, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>branch</td><td>KFileTreeBranch</td><td></td></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowFolderOpenPixmap</b> (showIt = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showIt</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showFolderOpenPixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNewTreeViewItems</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeBranch</td><td></td></tr>
+<tr><td>a1</td><td>KFileTreeViewItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOnItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetNextUrlToSelect</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startAnimation</b> (item, iconBaseName = "kde", iconCount = 6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileTreeViewItem</td><td></td></tr>
+<tr><td>iconBaseName</td><td>char</td><td>"kde"</td></tr>
+<tr><td>iconCount</td><td>uint</td><td>6</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopAnimation</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileTreeViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileTreeViewItem.html b/python/pykde/doc/classref/kfile/KFileTreeViewItem.html
new file mode 100644
index 00000000..41416042
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileTreeViewItem.html
@@ -0,0 +1,81 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileTreeViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileTreeViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileTreeViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileTreeViewItem</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileTreeViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeViewItem</td><td></td></tr>
+<tr><td>a1</td><td>KFileItem</td><td></td></tr>
+<tr><td>a2</td><td>KFileTreeBranch</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileTreeViewItem</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileTreeViewItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileTreeView</td><td></td></tr>
+<tr><td>a1</td><td>KFileItem</td><td></td></tr>
+<tr><td>a2</td><td>KFileTreeBranch</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alreadyListed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>branch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileTreeBranch)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setListed</b> (wasListed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>wasListed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileTreeViewToolTip.html b/python/pykde/doc/classref/kfile/KFileTreeViewToolTip.html
new file mode 100644
index 00000000..c4332763
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileTreeViewToolTip.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileTreeViewToolTip</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileTreeViewToolTip</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileTreeViewToolTip</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QToolTip </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileTreeViewToolTip</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileTreeViewToolTip instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>QListView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maybeTip</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileView.html b/python/pykde/doc/classref/kfile/KFileView.html
new file mode 100644
index 00000000..2e259c70
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileView.html
@@ -0,0 +1,301 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileView <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>DropOptions</b> = {AutoOpenDirs
+}<li><b>ViewMode</b> = {Files, Directories, All
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFileView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileView instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KActionCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemList</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoOpenDelay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearSelection</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearView</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFileItem</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ensureItemVisible</b> (i) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstFileItem</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>invertSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReversed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelected</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listingCompleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numDirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onlyDoubleClickSelectsFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevItem</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFile.SelectionMode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (item) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDropOptions_impl</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnlyDoubleClickSelectsFiles</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setParentView</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KFileView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0, enable) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionMode</b> (sm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sm</td><td>KFile.SelectionMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSorting</b> (sort)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sort</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setViewMode</b> (vm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>vm</td><td>KFileView.ViewMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setViewName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>signaler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileViewSignaler)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortReversed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sorting</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDir.SortSpec)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortingKey</b> (value, isDir, sortSpec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>isDir</td><td>bool</td><td></td></tr>
+<tr><td>sortSpec</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortingKey</b> (value, isDir, sortSpec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>isDir</td><td>bool</td><td></td></tr>
+<tr><td>sortSpec</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateNumbers</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (f = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ViewMode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (a0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KFileViewSignaler.html b/python/pykde/doc/classref/kfile/KFileViewSignaler.html
new file mode 100644
index 00000000..bbebe487
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KFileViewSignaler.html
@@ -0,0 +1,115 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileViewSignaler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileViewSignaler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileViewSignaler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>activate</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateMenu</b> (i, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activatedMenu</b> (i, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeSorting</b> (sorting)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sorting</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropURLs</b> (i, e, urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>QDropEvent</td><td></td></tr>
+<tr><td>a2</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileHighlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightFile</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sortingChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDir.SortSpec</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KIconButton.html b/python/pykde/doc/classref/kfile/KIconButton.html
new file mode 100644
index 00000000..282a7bd4
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KIconButton.html
@@ -0,0 +1,97 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconButton</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconButton</b> (loader, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>loader</td><td>KIconLoader</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconChanged</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconType</b> (group, context, user = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td></td></tr>
+<tr><td>user</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStrictIconSize</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strictIconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KIconCanvas.html b/python/pykde/doc/classref/kfile/KIconCanvas.html
new file mode 100644
index 00000000..fd655dd3
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KIconCanvas.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconCanvas</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconCanvas</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconCanvas</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIconView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconCanvas</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconCanvas instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCurrent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadFiles</b> (files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>files</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nameChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progress</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startLoading</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopLoading</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KIconDialog.html b/python/pykde/doc/classref/kfile/KIconDialog.html
new file mode 100644
index 00000000..a95965ef
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KIconDialog.html
@@ -0,0 +1,143 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIconDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIconDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIconDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KIconDialog</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KIconDialog</b> (loader, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KIconDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>loader</td><td>KIconLoader</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getIcon</b> (group = KIcon .Desktop, context = KIcon .Application, strictIconSize = 0, iconSize = 0, user = 0, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Desktop</td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Application</td></tr>
+<tr><td>strictIconSize</td><td>bool</td><td>0</td></tr>
+<tr><td>iconSize</td><td>int</td><td>0</td></tr>
+<tr><td>user</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newIconName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectIcon</b> (group = KIcon .Desktop, context = KIcon .Application, user = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Desktop</td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Application</td></tr>
+<tr><td>user</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomLocation</b> (location)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>location</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStrictIconSize</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setup</b> (group, context = KIcon .Application, strictIconSize = 0, iconSize = 0, user = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td>KIcon .Application</td></tr>
+<tr><td>strictIconSize</td><td>bool</td><td>0</td></tr>
+<tr><td>iconSize</td><td>int</td><td>0</td></tr>
+<tr><td>user</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setup</b> (group, context, strictIconSize, iconSize, user, lockUser, lockCustomDir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>context</td><td>KIcon.Context</td><td></td></tr>
+<tr><td>strictIconSize</td><td>bool</td><td></td></tr>
+<tr><td>iconSize</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>bool</td><td></td></tr>
+<tr><td>lockUser</td><td>bool</td><td></td></tr>
+<tr><td>lockCustomDir</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strictIconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KImageFilePreview.html b/python/pykde/doc/classref/kfile/KImageFilePreview.html
new file mode 100644
index 00000000..18b29361
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KImageFilePreview.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KImageFilePreview</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KImageFilePreview</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KImageFilePreview</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPreviewWidgetBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KImageFilePreview</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KImageFilePreview instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearPreview</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createJob</b> (url, w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.PreviewJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotPreview</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+<tr><td>a1</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreview</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreview</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreview</b> (url, force)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>force</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleAuto</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.Application.html b/python/pykde/doc/classref/kfile/KNotify.Application.html
new file mode 100644
index 00000000..580a489c
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.Application.html
@@ -0,0 +1,75 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify.Application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify.Application</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify.Application</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Application</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Application instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotify.EventList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reloadEvents</b> (revertToDefaults = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>revertToDefaults</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.ApplicationList.html b/python/pykde/doc/classref/kfile/KNotify.ApplicationList.html
new file mode 100644
index 00000000..6d635093
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.ApplicationList.html
@@ -0,0 +1,39 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify.ApplicationList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify.ApplicationList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify.ApplicationList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.Event.html b/python/pykde/doc/classref/kfile/KNotify.Event.html
new file mode 100644
index 00000000..6048b6c8
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.Event.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify.Event</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify.Event</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify.Event</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Event</b> (app)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Event instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>app</td><td>KNotify.Application</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>application</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotify.Application)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>commandline</td><td>QString</td></tr>
+<tr><td>dontShow</td><td>int</td></tr>
+<tr><td>logfile</td><td>QString</td></tr>
+<tr><td>presentation</td><td>int</td></tr>
+<tr><td>soundfile</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.KNotifyWidget.html b/python/pykde/doc/classref/kfile/KNotify.KNotifyWidget.html
new file mode 100644
index 00000000..76f55b89
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.KNotifyWidget.html
@@ -0,0 +1,150 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify.KNotifyWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify.KNotifyWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify.KNotifyWidget</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KNotifyWidgetBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KNotifyWidget</b> (a0 = 0, a1 = 0, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNotifyWidget instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td>0</td></tr>
+<tr><td>a1</td><td>char</td><td>0</td></tr>
+<tr><td>a2</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addApplicationEvents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotify.Application)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVisibleApp</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KNotify.Application</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allApps</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(a Python list of KNotify.Application),</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearVisible</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentEvent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotify.Event)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableAll</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventsView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KListView)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>playSound</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> (a0 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetDefaults</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showAdvanced</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sort</b> (a0 = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleAdvanced</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibleApps</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(a Python list of KNotify.Application),</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.ListViewItem.html b/python/pykde/doc/classref/kfile/KNotify.ListViewItem.html
new file mode 100644
index 00000000..183148b0
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.ListViewItem.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify.ListViewItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify.ListViewItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify.ListViewItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListViewItem </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ListViewItem</b> (view, event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ListViewItem instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>QListView</td><td></td></tr>
+<tr><td>event</td><td>KNotify.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compare</b> (i, col, ascending)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>QListViewItem</td><td></td></tr>
+<tr><td>col</td><td>int</td><td></td></tr>
+<tr><td>ascending</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNotify.Event)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotify.html b/python/pykde/doc/classref/kfile/KNotify.html
new file mode 100644
index 00000000..c43b05a2
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotify.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotify</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotify</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotify</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KNotify.Application.html">Application</a></b><li><b><a href="KNotify.ApplicationList.html">ApplicationList</a></b><li><b><a href="KNotify.Event.html">Event</a></b><li><b><a href="KNotify.KNotifyWidget.html">KNotifyWidget</a></b></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KNotifyDialog.html b/python/pykde/doc/classref/kfile/KNotifyDialog.html
new file mode 100644
index 00000000..7174ab52
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KNotifyDialog.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNotifyDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNotifyDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNotifyDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KNotifyDialog</b> (parent = 0, name = 0, modal = 1, aboutData = see note)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNotifyDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td>see note</td></tr>
+</table>
+</td><td width="50%"><table><tr><td>The default value for aboutData in C++ is KGlobal::instance()->aboutData()
+which sip is unable to parse. Since it's the last arg in the list, it has
+to have a default value, and since the C++ code will fail if the default
+value really is zero, the sip code silently substitutes the real default
+value for a default value of 0 supplied from Python.
+</td></tr></table></td></tr></table></li><hr>
+<li><b>addApplicationEvents</b> (appName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>appName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addApplicationEvents</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearApplicationEvents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configure</b> (parent = 0, name = "", aboutData = see note)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int),</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>a Python string</td><td>""</td></tr>
+<tr><td>aboutData</td><td>KAboutData</td><td>see note</td></tr>
+</table>
+</td><td width="50%"><table><tr><td>The default value for aboutData in C++ is KGlobal::instance()->aboutData()
+which sip is unable to parse. Since it's the last arg in the list, it has
+to have a default value, and since the C++ code will fail if the default
+value really is zero, the sip code silently substitutes the real default
+value for a default value of 0 supplied from Python.
+</td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KOpenWithDlg.html b/python/pykde/doc/classref/kfile/KOpenWithDlg.html
new file mode 100644
index 00000000..11bdb520
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KOpenWithDlg.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KOpenWithDlg</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KOpenWithDlg</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KOpenWithDlg</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QDialog </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KOpenWithDlg</b> (urls, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOpenWithDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KOpenWithDlg</b> (urls, text, value, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOpenWithDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KOpenWithDlg</b> (serviceType, value, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOpenWithDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KOpenWithDlg</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOpenWithDlg instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideNoCloseOnExit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideRunInTerminal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (text, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSaveNewApplications</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setServiceType</b> (_urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDbClick</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHighlighted</b> (_name, _exec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>_exec</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOK</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelected</b> (_name, _exec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>_exec</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTerminalToggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTextChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KPreviewWidgetBase.html b/python/pykde/doc/classref/kfile/KPreviewWidgetBase.html
new file mode 100644
index 00000000..f1cd4cbc
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KPreviewWidgetBase.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPreviewWidgetBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPreviewWidgetBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPreviewWidgetBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPreviewWidgetBase</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPreviewWidgetBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearPreview</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSupportedMimeTypes</b> (mimeTypes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeTypes</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPreview</b> (url) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KPropertiesDialog.html b/python/pykde/doc/classref/kfile/KPropertiesDialog.html
new file mode 100644
index 00000000..0cb6a164
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KPropertiesDialog.html
@@ -0,0 +1,223 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPropertiesDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPropertiesDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPropertiesDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPropertiesDialog</b> (item, parent = 0, name = 0, modal = 0, autoShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>autoShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPropertiesDialog</b> (_items, parent = 0, name = 0, modal = 0, autoShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>autoShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPropertiesDialog</b> (_url, _mode, parent = 0, name = 0, modal = 0, autoShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mode</td><td>mode_t</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>autoShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPropertiesDialog</b> (_url, parent = 0, name = 0, modal = 0, autoShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>autoShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPropertiesDialog</b> (_tempUrl, _currentDir, _defaultName, parent = 0, name = 0, modal = 0, autoShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_tempUrl</td><td>KURL</td><td></td></tr>
+<tr><td>_currentDir</td><td>KURL</td><td></td></tr>
+<tr><td>_defaultName</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+<tr><td>autoShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPropertiesDialog</b> (title, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropertiesDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abortApplying</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applied</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canDisplay</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canceled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDialogBase)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertPlugin</b> (plugin)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>plugin</td><td>KPropsDlgPlugin</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kurl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertiesClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rename</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAs</b> (oldUrl, newUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldUrl</td><td>KURL</td><td></td></tr>
+<tr><td>newUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileNameReadOnly</b> (ro)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ro</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileSharingPage</b> (page)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>page</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showDialog</b> (item, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showDialog</b> (_url, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showDialog</b> (_items, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showFileSharingPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateUrl</b> (_newUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_newUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KPropsDlgPlugin.html b/python/pykde/doc/classref/kfile/KPropsDlgPlugin.html
new file mode 100644
index 00000000..9498fa2b
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KPropsDlgPlugin.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPropsDlgPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPropsDlgPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPropsDlgPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPropsDlgPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPropsDlgPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDesktopFile</b> (_item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirty</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KRecentDirs.html b/python/pykde/doc/classref/kfile/KRecentDirs.html
new file mode 100644
index 00000000..c5509f72
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KRecentDirs.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRecentDirs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRecentDirs</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href= "../../index.html">Table of contents</a></td></tr> <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRecentDirs</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>add</b> (fileClass, directory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileClass</td><td>QString</td><td></td></tr>
+<tr><td>directory</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dir</b> (fileClass)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileClass</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>list</b> (fileClass)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileClass</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KRecentDocument.html b/python/pykde/doc/classref/kfile/KRecentDocument.html
new file mode 100644
index 00000000..5e03c247
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KRecentDocument.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRecentDocument</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRecentDocument</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRecentDocument</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>add</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> (url, desktopEntryName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>desktopEntryName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> (documentStr, isURL = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>documentStr</td><td>QString</td><td></td></tr>
+<tr><td>isURL</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximumItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>recentDocumentDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>recentDocuments</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLBar.html b/python/pykde/doc/classref/kfile/KURLBar.html
new file mode 100644
index 00000000..148a49bf
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLBar.html
@@ -0,0 +1,211 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLBar</b> (useGlobalItems, parent = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>useGlobalItems</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addNewItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLBarItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KURLBarItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertDynamicItem</b> (url, description, icon = QString .null, group = KIcon .Panel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLBarItem)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Panel</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertItem</b> (url, description, applicationLocal = 1, icon = QString .null, group = KIcon .Panel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLBarItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td></td></tr>
+<tr><td>applicationLocal</td><td>bool</td><td>1</td></tr>
+<tr><td>icon</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Panel</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isImmutable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isVertical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isVertical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.0.1 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLBarListBox)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumSizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Qt.Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paletteChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPalette</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> (config, itemGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>itemGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readItem</b> (i, config, applicationLocal)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>applicationLocal</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentItem</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setListBox</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURLBarListBox</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrientation</b> (orient)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orient</td><td>Qt.Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotContextMenuRequested</b> (a0, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBoxItem</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDropped</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBoxItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (config, itemGroup)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>itemGroup</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeItem</b> (item, i, a0, global)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KURLBarItem</td><td></td></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+<tr><td>a0</td><td>KConfig</td><td></td></tr>
+<tr><td>global</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLBarItem.html b/python/pykde/doc/classref/kfile/KURLBarItem.html
new file mode 100644
index 00000000..382c9040
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLBarItem.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLBarItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLBarItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLBarItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QListBoxPixmap </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLBarItem</b> (parent, url, persistent, description = QString .null, icon = QString .null, group = KIcon .Panel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLBarItem instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KURLBar</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>persistent</td><td>bool</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>icon</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Panel</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLBarItem</b> (parent, url, description = QString .null, icon = QString .null, group = KIcon .Panel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLBarItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KURLBar</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>icon</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Panel</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applicationLocal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBox</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIcon.Group)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPersistent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paint</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setApplicationLocal</b> (local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDescription</b> (desc)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desc</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon, group = KIcon .Panel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>KIcon.Group</td><td>KIcon .Panel</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolTip</b> (tip)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tip</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolTip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QListBox</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLBarItemDialog.html b/python/pykde/doc/classref/kfile/KURLBarItemDialog.html
new file mode 100644
index 00000000..82153e75
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLBarItemDialog.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLBarItemDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLBarItemDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLBarItemDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLBarItemDialog</b> (allowGlobal, url, description, icon, appLocal = 1, iconSize = KIcon .SizeMedium, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLBarItemDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowGlobal</td><td>bool</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>appLocal</td><td>bool</td><td>1</td></tr>
+<tr><td>iconSize</td><td>int</td><td>KIcon .SizeMedium</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applicationLocal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>description</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getInformation</b> (allowGlobal, url, description, icon, iconSize, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) appLocal (bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allowGlobal</td><td>bool</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>description</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+<tr><td>iconSize</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLBarListBox.html b/python/pykde/doc/classref/kfile/KURLBarListBox.html
new file mode 100644
index 00000000..0f9a2de8
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLBarListBox.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLBarListBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLBarListBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLBarListBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KListBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLBarListBox</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLBarListBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDragEnterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsDropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contextMenuEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QContextMenuEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDragObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropped</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isVertical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>orientation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Qt.Orientation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrientation</b> (orient)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>orient</td><td>Qt.Orientation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLComboBox.html b/python/pykde/doc/classref/kfile/KURLComboBox.html
new file mode 100644
index 00000000..69c4854c
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLComboBox.html
@@ -0,0 +1,148 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLComboBox</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLComboBox</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLComboBox</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KComboBox </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Mode</b> = {Files, Directories, Both
+}<li><b>OverLoadResolving</b> = {RemoveTop, RemoveBottom
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KURLComboBox</b> (mode, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLComboBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KURLComboBox.Mode</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLComboBox</b> (mode, rw, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLComboBox instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KURLComboBox.Mode</td><td></td></tr>
+<tr><td>rw</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDefaultURL</b> (url, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDefaultURL</b> (url, pix, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>pix</td><td>QPixmap</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPixmap</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KURLComboBox.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertURLItem</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeURL</b> (url, checkDefaultURLs = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>checkDefaultURLs</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxItems</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLs</b> (urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLs</b> (urls, remove)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>QStringList</td><td></td></tr>
+<tr><td>remove</td><td>KURLComboBox.OverLoadResolving</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateItem</b> (item, index, pix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlActivated</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urls</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLComboRequester.html b/python/pykde/doc/classref/kfile/KURLComboRequester.html
new file mode 100644
index 00000000..1f504ece
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLComboRequester.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLComboRequester</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLComboRequester</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLComboRequester</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KURLRequester </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLComboRequester</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLComboRequester instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLPropsPlugin.html b/python/pykde/doc/classref/kfile/KURLPropsPlugin.html
new file mode 100644
index 00000000..60e8cedc
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLPropsPlugin.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLPropsPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLPropsPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLPropsPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPropsDlgPlugin </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLPropsPlugin</b> (_props)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLPropsPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_props</td><td>KPropertiesDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supports</b> (_items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLRequester.html b/python/pykde/doc/classref/kfile/KURLRequester.html
new file mode 100644
index 00000000..9ed14a62
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLRequester.html
@@ -0,0 +1,171 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLRequester</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLRequester</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLRequester</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QHBox </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLRequester</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLRequester instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLRequester</b> (url, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLRequester instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLRequester</b> (editWidget, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLRequester instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>editWidget</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>button</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPushButton)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comboBox</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KComboBox)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completionObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLCompletion)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customEditor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KEditListBox.CustomEditor)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileDialog)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lineEdit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KLineEdit)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openFileDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURLRequester</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>returnPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>returnPressed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowLocalProtocol</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showLocalProtocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOpenDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/KURLRequesterDlg.html b/python/pykde/doc/classref/kfile/KURLRequesterDlg.html
new file mode 100644
index 00000000..68ae248e
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/KURLRequesterDlg.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLRequesterDlg</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLRequesterDlg</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kfile Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kfile</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLRequesterDlg</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURLRequesterDlg</b> (url, parent, name, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLRequesterDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLRequesterDlg</b> (url, text, parent, name, modal = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLRequesterDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileDialog)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getURL</b> (url = QString .null, parent = 0, caption = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlRequester</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURLRequester)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kfile/index.html b/python/pykde/doc/classref/kfile/index.html
new file mode 100644
index 00000000..1c3ac8d2
--- /dev/null
+++ b/python/pykde/doc/classref/kfile/index.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kfile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kfile Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KAppTreeListItem - KFileFilterCombo</th></tr>
+<tr ><td><a href="KAppTreeListItem.html">KAppTreeListItem</a></td></tr>
+<tr ><td><a href="KApplicationPropsPlugin.html">KApplicationPropsPlugin</a></td></tr>
+<tr ><td><a href="KApplicationTree.html">KApplicationTree</a></td></tr>
+<tr ><td><a href="KBindingPropsPlugin.html">KBindingPropsPlugin</a></td></tr>
+<tr ><td><a href="KCombiView.html">KCombiView</a></td></tr>
+<tr ><td><a href="KCustomMenuEditor.html">KCustomMenuEditor</a></td></tr>
+<tr ><td><a href="KDesktopPropsPlugin.html">KDesktopPropsPlugin</a></td></tr>
+<tr ><td><a href="KDevicePropsPlugin.html">KDevicePropsPlugin</a></td></tr>
+<tr ><td><a href="KDirOperator.html">KDirOperator</a></td></tr>
+<tr ><td><a href="KDirSelectDialog.html">KDirSelectDialog</a></td></tr>
+<tr ><td><a href="KDirSize.html">KDirSize</a></td></tr>
+<tr ><td><a href="KDiskFreeSp.html">KDiskFreeSp</a></td></tr>
+<tr ><td><a href="KEncodingFileDialog.html">KEncodingFileDialog</a></td></tr>
+<tr ><td><a href="KEncodingFileDialog.Result.html">KEncodingFileDialog.Result</a></td></tr>
+<tr ><td><a href="KExecPropsPlugin.html">KExecPropsPlugin</a></td></tr>
+<tr ><td><a href="KFile.html">KFile</a></td></tr>
+<tr ><td><a href="KFileDetailView.html">KFileDetailView</a></td></tr>
+<tr ><td><a href="KFileDialog.html">KFileDialog</a></td></tr>
+<tr ><td><a href="KFileFilterCombo.html">KFileFilterCombo</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KFileIconView - KNotify</th></tr>
+<tr ><td><a href="KFileIconView.html">KFileIconView</a></td></tr>
+<tr ><td><a href="KFileIconViewItem.html">KFileIconViewItem</a></td></tr>
+<tr ><td><a href="KFileListViewItem.html">KFileListViewItem</a></td></tr>
+<tr ><td><a href="KFileOpenWithHandler.html">KFileOpenWithHandler</a></td></tr>
+<tr ><td><a href="KFilePermissionsPropsPlugin.html">KFilePermissionsPropsPlugin</a></td></tr>
+<tr ><td><a href="KFilePreview.html">KFilePreview</a></td></tr>
+<tr ><td><a href="KFilePropsPlugin.html">KFilePropsPlugin</a></td></tr>
+<tr ><td><a href="KFileSharePropsPlugin.html">KFileSharePropsPlugin</a></td></tr>
+<tr ><td><a href="KFileTreeBranch.html">KFileTreeBranch</a></td></tr>
+<tr ><td><a href="KFileTreeView.html">KFileTreeView</a></td></tr>
+<tr ><td><a href="KFileTreeViewItem.html">KFileTreeViewItem</a></td></tr>
+<tr ><td><a href="KFileTreeViewToolTip.html">KFileTreeViewToolTip</a></td></tr>
+<tr ><td><a href="KFileView.html"><i>KFileView</i></a></td></tr>
+<tr ><td><a href="KFileViewSignaler.html">KFileViewSignaler</a></td></tr>
+<tr ><td><a href="KIconButton.html">KIconButton</a></td></tr>
+<tr ><td><a href="KIconCanvas.html">KIconCanvas</a></td></tr>
+<tr ><td><a href="KIconDialog.html">KIconDialog</a></td></tr>
+<tr ><td><a href="KImageFilePreview.html">KImageFilePreview</a></td></tr>
+<tr ><td><a href="KNotify.html">KNotify</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KNotify.Application - KURLRequesterDlg</th></tr>
+<tr ><td><a href="KNotify.Application.html">KNotify.Application</a></td></tr>
+<tr ><td><a href="KNotify.ApplicationList.html">KNotify.ApplicationList</a></td></tr>
+<tr ><td><a href="KNotify.Event.html">KNotify.Event</a></td></tr>
+<tr ><td><a href="KNotify.KNotifyWidget.html">KNotify.KNotifyWidget</a></td></tr>
+<tr ><td><a href="KNotifyDialog.html">KNotifyDialog</a></td></tr>
+<tr ><td><a href="KOpenWithDlg.html">KOpenWithDlg</a></td></tr>
+<tr ><td><a href="KPreviewWidgetBase.html"><i>KPreviewWidgetBase</i></a></td></tr>
+<tr ><td><a href="KPropertiesDialog.html">KPropertiesDialog</a></td></tr>
+<tr ><td><a href="KPropsDlgPlugin.html">KPropsDlgPlugin</a></td></tr>
+<tr ><td><a href="KRecentDocument.html">KRecentDocument</a></td></tr>
+<tr ><td><a href="KURLBar.html">KURLBar</a></td></tr>
+<tr ><td><a href="KURLBarItem.html">KURLBarItem</a></td></tr>
+<tr ><td><a href="KURLBarItemDialog.html">KURLBarItemDialog</a></td></tr>
+<tr ><td><a href="KURLBarListBox.html">KURLBarListBox</a></td></tr>
+<tr ><td><a href="KURLComboBox.html">KURLComboBox</a></td></tr>
+<tr ><td><a href="KURLComboRequester.html">KURLComboRequester</a></td></tr>
+<tr ><td><a href="KURLPropsPlugin.html">KURLPropsPlugin</a></td></tr>
+<tr ><td><a href="KURLRequester.html">KURLRequester</a></td></tr>
+<tr ><td><a href="KURLRequesterDlg.html">KURLRequesterDlg</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.AbstractView.html b/python/pykde/doc/classref/khtml/DOM.AbstractView.html
new file mode 100644
index 00000000..72349b83
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.AbstractView.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.AbstractView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.AbstractView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.AbstractView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AbstractView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AbstractView instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>AbstractView</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AbstractView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.AbstractView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>AbstractView</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>document</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getComputedStyle</b> (elt, pseudoElt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elt</td><td>DOM.Element</td><td></td></tr>
+<tr><td>pseudoElt</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Attr.html b/python/pykde/doc/classref/khtml/DOM.Attr.html
new file mode 100644
index 00000000..631082de
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Attr.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Attr</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Attr</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Attr</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Attr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Attr instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Attr</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Attr instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Attr</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Attr instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Attr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Attr</b> (_impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>specified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CDATASection.html b/python/pykde/doc/classref/khtml/DOM.CDATASection.html
new file mode 100644
index 00000000..d2519cae
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CDATASection.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CDATASection</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CDATASection</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CDATASection</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Text </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CDATASection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CDATASection instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CDATASection</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CDATASection instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CDATASection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CDATASection</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CDATASection instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CDATASection</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSCharsetRule.html b/python/pykde/doc/classref/khtml/DOM.CSSCharsetRule.html
new file mode 100644
index 00000000..34e716a2
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSCharsetRule.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSCharsetRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSCharsetRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSCharsetRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSCharsetRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSCharsetRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSCharsetRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSCharsetRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSCharsetRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSCharsetRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSCharsetRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSCharsetRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncoding</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSException.html b/python/pykde/doc/classref/khtml/DOM.CSSException.html
new file mode 100644
index 00000000..dac4e991
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSException.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSException</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSException</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSException</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ExceptionCode</b> = {SYNTAX_ERR, INVALID_MODIFICATION_ERR, _EXCEPTION_OFFSET
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CSSException</b> (_code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_code</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSException</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSException</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>code</td><td>ushort</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSFontFaceRule.html b/python/pykde/doc/classref/khtml/DOM.CSSFontFaceRule.html
new file mode 100644
index 00000000..3059e87a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSFontFaceRule.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSFontFaceRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSFontFaceRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSFontFaceRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSFontFaceRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSFontFaceRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSFontFaceRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSFontFaceRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSFontFaceRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSFontFaceRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSFontFaceRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSFontFaceRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>style</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSImportRule.html b/python/pykde/doc/classref/khtml/DOM.CSSImportRule.html
new file mode 100644
index 00000000..15245c4d
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSImportRule.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSImportRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSImportRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSImportRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSImportRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSImportRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSImportRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSImportRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSImportRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSImportRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSImportRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSImportRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>media</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.MediaList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSMediaRule.html b/python/pykde/doc/classref/khtml/DOM.CSSMediaRule.html
new file mode 100644
index 00000000..f7733aa6
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSMediaRule.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSMediaRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSMediaRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSMediaRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSMediaRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSMediaRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSMediaRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSMediaRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSMediaRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSMediaRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSMediaRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSMediaRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssRules</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRuleList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteRule</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertRule</b> (rule, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rule</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>media</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.MediaList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSPageRule.html b/python/pykde/doc/classref/khtml/DOM.CSSPageRule.html
new file mode 100644
index 00000000..5634a75c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSPageRule.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSPageRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSPageRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSPageRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSPageRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPageRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPageRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPageRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSPageRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPageRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPageRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPageRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectorText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectorText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>style</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSPrimitiveValue.html b/python/pykde/doc/classref/khtml/DOM.CSSPrimitiveValue.html
new file mode 100644
index 00000000..78a4f703
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSPrimitiveValue.html
@@ -0,0 +1,98 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSPrimitiveValue</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSPrimitiveValue</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSPrimitiveValue</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSValue </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>UnitTypes</b> = {CSS_UNKNOWN, CSS_NUMBER, CSS_PERCENTAGE, CSS_EMS, CSS_EXS, CSS_PX, CSS_CM, CSS_MM, CSS_IN, CSS_PT, CSS_PC, CSS_DEG, CSS_RAD, CSS_GRAD, CSS_MS, CSS_S, CSS_HZ, CSS_KHZ, CSS_DIMENSION, CSS_STRING, CSS_URI, CSS_IDENT, CSS_ATTR, CSS_COUNTER, CSS_RECT, CSS_RGBCOLOR, CSS_HTML_RELATIVE
+}<li><b>UnitTypes</b> = {CSS_UNKNOWN, CSS_NUMBER, CSS_PERCENTAGE, CSS_EMS, CSS_EXS, CSS_PX, CSS_CM, CSS_MM, CSS_IN, CSS_PT, CSS_PC, CSS_DEG, CSS_RAD, CSS_GRAD, CSS_MS, CSS_S, CSS_HZ, CSS_KHZ, CSS_DIMENSION, CSS_STRING, CSS_URI, CSS_IDENT, CSS_ATTR, CSS_COUNTER, CSS_RECT, CSS_RGBCOLOR
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CSSPrimitiveValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPrimitiveValue instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPrimitiveValue</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPrimitiveValue instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSPrimitiveValue</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPrimitiveValue</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSPrimitiveValue instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSValue</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSPrimitiveValue</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCounterValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Counter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getFloatValue</b> (unitType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(float)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>unitType</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getRGBColorValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.RGBColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getRectValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Rect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getStringValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>primitiveType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFloatValue</b> (unitType, floatValue)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>unitType</td><td>ushort</td><td></td></tr>
+<tr><td>floatValue</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStringValue</b> (stringType, stringValue)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stringType</td><td>ushort</td><td></td></tr>
+<tr><td>stringValue</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSRule.html b/python/pykde/doc/classref/khtml/DOM.CSSRule.html
new file mode 100644
index 00000000..4e891264
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSRule.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>RuleType</b> = {UNKNOWN_RULE, STYLE_RULE, CHARSET_RULE, IMPORT_RULE, MEDIA_RULE, FONT_FACE_RULE, PAGE_RULE, QUIRKS_RULE
+}<li><b>RuleType</b> = {UNKNOWN_RULE, STYLE_RULE, CHARSET_RULE, IMPORT_RULE, MEDIA_RULE, FONT_FACE_RULE, PAGE_RULE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CSSRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assignOther</b> (other, thisType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+<tr><td>thisType</td><td>DOM.CSSRule.RuleType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRule)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentStyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCssText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSRuleList.html b/python/pykde/doc/classref/khtml/DOM.CSSRuleList.html
new file mode 100644
index 00000000..1a0f8529
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSRuleList.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSRuleList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSRuleList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSRuleList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSRuleList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSRuleList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSRuleList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSRuleList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRuleList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSRuleList</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSRuleList</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRule)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSStyleDeclaration.html b/python/pykde/doc/classref/khtml/DOM.CSSStyleDeclaration.html
new file mode 100644
index 00000000..763ec61e
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSStyleDeclaration.html
@@ -0,0 +1,112 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSStyleDeclaration</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSStyleDeclaration</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSStyleDeclaration</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSStyleDeclaration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleDeclaration instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleDeclaration</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleDeclaration instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSStyleDeclaration</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleDeclaration</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPropertyCSSValue</b> (propertyName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSValue)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>propertyName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPropertyPriority</b> (propertyName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>propertyName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getPropertyValue</b> (propertyName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>propertyName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRule)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeProperty</b> (propertyName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>propertyName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCssText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProperty</b> (propertyName, value, priority)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>propertyName</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>priority</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSStyleRule.html b/python/pykde/doc/classref/khtml/DOM.CSSStyleRule.html
new file mode 100644
index 00000000..823498d2
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSStyleRule.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSStyleRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSStyleRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSStyleRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSStyleRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSStyleRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectorText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectorText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>style</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSStyleSheet.html b/python/pykde/doc/classref/khtml/DOM.CSSStyleSheet.html
new file mode 100644
index 00000000..83b4b8ba
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSStyleSheet.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSStyleSheet</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSStyleSheet</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSStyleSheet</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.StyleSheet </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSStyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleSheet instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleSheet</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleSheet instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSStyleSheet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleSheet</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSStyleSheet instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.StyleSheet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSStyleSheet</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssRules</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRuleList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteRule</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertRule</b> (rule, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rule</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSRule)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSUnknownRule.html b/python/pykde/doc/classref/khtml/DOM.CSSUnknownRule.html
new file mode 100644
index 00000000..963db0e1
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSUnknownRule.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSUnknownRule</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSUnknownRule</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSUnknownRule</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSRule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSUnknownRule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSUnknownRule instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSUnknownRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSUnknownRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSUnknownRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSUnknownRule</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSUnknownRule instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSRule</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSUnknownRule</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSValue.html b/python/pykde/doc/classref/khtml/DOM.CSSValue.html
new file mode 100644
index 00000000..b8bbec47
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSValue.html
@@ -0,0 +1,81 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSValue</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSValue</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSValue</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>UnitTypes</b> = {CSS_INHERIT, CSS_PRIMITIVE_VALUE, CSS_VALUE_LIST, CSS_CUSTOM, CSS_INITIAL
+}<li><b>UnitTypes</b> = {CSS_INHERIT, CSS_PRIMITIVE_VALUE, CSS_VALUE_LIST, CSS_CUSTOM
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CSSValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSValue instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSValue</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSValue instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSValue</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSValue</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cssValueType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCSSPrimitiveValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCSSValueList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCssText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CSSValueList.html b/python/pykde/doc/classref/khtml/DOM.CSSValueList.html
new file mode 100644
index 00000000..0b3e2266
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CSSValueList.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CSSValueList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CSSValueList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CSSValueList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CSSValue </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CSSValueList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSValueList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSValueList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSValueList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSValueList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSValueList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CSSValueList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CSSValue</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CSSValueList</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSValue)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CharacterData.html b/python/pykde/doc/classref/khtml/DOM.CharacterData.html
new file mode 100644
index 00000000..26e79518
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CharacterData.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CharacterData</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CharacterData</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CharacterData</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CharacterData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CharacterData instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CharacterData</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CharacterData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.CharacterData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CharacterData</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CharacterData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CharacterData</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendData</b> (arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arg</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteData</b> (offset, count)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>ulong</td><td></td></tr>
+<tr><td>count</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertData</b> (offset, arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>ulong</td><td></td></tr>
+<tr><td>arg</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceData</b> (offset, count, arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>ulong</td><td></td></tr>
+<tr><td>count</td><td>ulong</td><td></td></tr>
+<tr><td>arg</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substringData</b> (offset, count)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>ulong</td><td></td></tr>
+<tr><td>count</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Comment.html b/python/pykde/doc/classref/khtml/DOM.Comment.html
new file mode 100644
index 00000000..526f868c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Comment.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Comment</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Comment</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Comment</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CharacterData </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Comment instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Comment</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Comment instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Comment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Comment</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Comment instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Comment</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Counter.html b/python/pykde/doc/classref/khtml/DOM.Counter.html
new file mode 100644
index 00000000..1bc741c3
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Counter.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Counter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Counter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Counter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Counter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Counter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Counter</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Counter instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Counter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Counter</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listStyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>separator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.CustomNodeFilter.html b/python/pykde/doc/classref/khtml/DOM.CustomNodeFilter.html
new file mode 100644
index 00000000..e48c6172
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.CustomNodeFilter.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.CustomNodeFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.CustomNodeFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.CustomNodeFilter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.DomShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>CustomNodeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CustomNodeFilter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptNode</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(short)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customNodeFilterType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DOMException.html b/python/pykde/doc/classref/khtml/DOM.DOMException.html
new file mode 100644
index 00000000..cb254cbd
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DOMException.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DOMException</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DOMException</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DOMException</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ExceptionCode</b> = {INDEX_SIZE_ERR, DOMSTRING_SIZE_ERR, HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR, INVALID_CHARACTER_ERR, NO_DATA_ALLOWED_ERR, NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR, NOT_SUPPORTED_ERR, INUSE_ATTRIBUTE_ERR, INVALID_STATE_ERR, SYNTAX_ERR, INVALID_MODIFICATION_ERR, NAMESPACE_ERR, INVALID_ACCESS_ERR
+}</ul>
+<h3>methods</h3><ul>
+<li><b>DOMException</b> (_code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_code</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMException</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.DOMException</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>code</td><td>ushort</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DOMImplementation.html b/python/pykde/doc/classref/khtml/DOM.DOMImplementation.html
new file mode 100644
index 00000000..1ddd5033
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DOMImplementation.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DOMImplementation</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DOMImplementation</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DOMImplementation</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DOMImplementation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMImplementation instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMImplementation</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMImplementation instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.DOMImplementation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMImplementation</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCSSStyleSheet</b> (title, media)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleSheet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>media</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDocument</b> (namespaceURI, qualifiedName, doctype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>qualifiedName</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>doctype</td><td>DOM.DocumentType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDocumentType</b> (qualifiedName, publicId, systemId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentType)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>qualifiedName</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>publicId</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>systemId</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createHTMLDocument</b> (title)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLDocument)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>title</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getInterface</b> (feature)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMImplementation)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>feature</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasFeature</b> (feature, version)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>feature</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>version</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DOMString.html b/python/pykde/doc/classref/khtml/DOM.DOMString.html
new file mode 100644
index 00000000..8e9ad41a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DOMString.html
@@ -0,0 +1,158 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DOMString</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DOMString</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DOMString</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DOMString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMString instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMString</b> (str, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMString instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QChar</td><td></td></tr>
+<tr><td>len</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMString</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMString instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMString</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMString instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMString</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DOMString</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DOMString instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (c, start = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QChar</td><td></td></tr>
+<tr><td>start</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>implementation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (str, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lower</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>percentage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) _percentage (int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (pos, len = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>split</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>string</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toInt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>truncate</b> (len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>len</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unicode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upper</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator +</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator +=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator []</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QChar),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>in</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Document.html b/python/pykde/doc/classref/khtml/DOM.Document.html
new file mode 100644
index 00000000..dd12a983
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Document.html
@@ -0,0 +1,292 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Document</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Document</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Document</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Document</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Document instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Document</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Document instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Document</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Document instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Document</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Document</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Document instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Document</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Document</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStyleSheet</b> (sheet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sheet</td><td>DOM.StyleSheet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>async</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completeURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createAttribute</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createAttributeNS</b> (namespaceURI, qualifiedName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>qualifiedName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCDATASection</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CDATASection)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createComment</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Comment)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDocumentFragment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentFragment)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createElement</b> (tagName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tagName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createElementNS</b> (namespaceURI, qualifiedName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>qualifiedName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createEntityReference</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.EntityReference)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createEvent</b> (eventType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Event)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventType</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createNodeIterator</b> (root, whatToShow, filter, entityReferenceExpansion)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeIterator)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>root</td><td>DOM.Node</td><td></td></tr>
+<tr><td>whatToShow</td><td>ulong</td><td></td></tr>
+<tr><td>filter</td><td>DOM.NodeFilter</td><td></td></tr>
+<tr><td>entityReferenceExpansion</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createProcessingInstruction</b> (target, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.ProcessingInstruction)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>data</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createRange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Range)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTextNode</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Text)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTreeWalker</b> (root, whatToShow, filter, entityReferenceExpansion)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.TreeWalker)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>root</td><td>DOM.Node</td><td></td></tr>
+<tr><td>whatToShow</td><td>ulong</td><td></td></tr>
+<tr><td>filter</td><td>DOM.NodeFilter</td><td></td></tr>
+<tr><td>entityReferenceExpansion</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.AbstractView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>designMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doctype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentType)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementById</b> (elementId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elementId</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementsByTagName</b> (tagname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tagname</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementsByTagNameNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOverrideStyle</b> (elt, pseudoElt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elt</td><td>DOM.Element</td><td></td></tr>
+<tr><td>pseudoElt</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>implementation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMImplementation)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>importNode</b> (importedNode, deep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>importedNode</td><td>DOM.Node</td><td></td></tr>
+<tr><td>deep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHTMLDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (uri)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadXML</b> (source)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>source</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredStylesheetSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeStyleSheet</b> (sheet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sheet</td><td>DOM.StyleSheet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedStylesheetSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAsync</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDesignMode</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedStylesheetSet</b> (aString)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aString</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleSheets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheetList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateRendering</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DocumentFragment.html b/python/pykde/doc/classref/khtml/DOM.DocumentFragment.html
new file mode 100644
index 00000000..d35a07a8
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DocumentFragment.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DocumentFragment</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DocumentFragment</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DocumentFragment</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DocumentFragment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentFragment instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentFragment</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentFragment instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.DocumentFragment</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentFragment</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentFragment instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentFragment</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DocumentStyle.html b/python/pykde/doc/classref/khtml/DOM.DocumentStyle.html
new file mode 100644
index 00000000..1b2df6eb
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DocumentStyle.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DocumentStyle</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DocumentStyle</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DocumentStyle</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DocumentStyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentStyle instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentStyle</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentStyle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.DocumentStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredStylesheetSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedStylesheetSet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedStylesheetSet</b> (aString)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aString</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>styleSheets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheetList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DocumentType.html b/python/pykde/doc/classref/khtml/DOM.DocumentType.html
new file mode 100644
index 00000000..3c7911ed
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DocumentType.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DocumentType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DocumentType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DocumentType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DocumentType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentType instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentType</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.DocumentType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentType</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DocumentType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DocumentType</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entities</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NamedNodeMap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalSubset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notations</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NamedNodeMap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>publicId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.DomShared.html b/python/pykde/doc/classref/khtml/DOM.DomShared.html
new file mode 100644
index 00000000..885a8ac1
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.DomShared.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.DomShared</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.DomShared</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.DomShared</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DomShared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DomShared instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteMe</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasOneRef</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>refCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Element.html b/python/pykde/doc/classref/khtml/DOM.Element.html
new file mode 100644
index 00000000..c7fd5bed
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Element.html
@@ -0,0 +1,220 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Element</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Element</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Element</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Element</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Element instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Element</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Element instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Element</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Element instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Element</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Element</b> (_impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentEditable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Element)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAttribute</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAttributeNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAttributeNode</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getAttributeNodeNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementsByTagName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementsByTagNameNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasAttribute</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasAttributeNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHTMLElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMalformedPrefix</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMalformedQualifiedName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlValidAttrName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlValidPrefix</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlValidQualifiedName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>normalize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.2 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAttribute</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAttributeNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAttributeNode</b> (oldAttr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldAttr</td><td>DOM.Attr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttribute</b> (name, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributeNS</b> (namespaceURI, qualifiedName, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>qualifiedName</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributeNode</b> (newAttr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newAttr</td><td>DOM.Attr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributeNodeNS</b> (newAttr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Attr)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newAttr</td><td>DOM.Attr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setContentEditable</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>style</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSStyleDeclaration)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tagName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Entity.html b/python/pykde/doc/classref/khtml/DOM.Entity.html
new file mode 100644
index 00000000..c264e3c6
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Entity.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Entity</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Entity</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Entity</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Entity</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Entity instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Entity</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Entity instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Entity</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Entity</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Entity instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Entity</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notationName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>publicId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.EntityReference.html b/python/pykde/doc/classref/khtml/DOM.EntityReference.html
new file mode 100644
index 00000000..de2a1d73
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.EntityReference.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.EntityReference</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.EntityReference</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.EntityReference</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>EntityReference</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EntityReference instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>EntityReference</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EntityReference instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.EntityReference</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>EntityReference</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EntityReference instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>EntityReference</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Event.html b/python/pykde/doc/classref/khtml/DOM.Event.html
new file mode 100644
index 00000000..1dd15f6e
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Event.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Event</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Event</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Event</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>PhaseType</b> = {CAPTURING_PHASE, AT_TARGET, BUBBLING_PHASE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Event</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Event instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Event</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Event instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Event</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bubbles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentTarget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventModuleName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventPhase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initEvent</b> (eventTypeArg, canBubbleArg, cancelableArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventTypeArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>canBubbleArg</td><td>bool</td><td></td></tr>
+<tr><td>cancelableArg</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preventDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopPropagation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeStamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOMTimeStamp)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.EventException.html b/python/pykde/doc/classref/khtml/DOM.EventException.html
new file mode 100644
index 00000000..de6744ae
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.EventException.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.EventException</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.EventException</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.EventException</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>EventExceptionCode</b> = {UNSPECIFIED_EVENT_TYPE_ERR
+}</ul>
+<h3>methods</h3><ul>
+<li><b>EventException</b> (_code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EventException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_code</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>EventException</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EventException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.EventException</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>code</td><td>ushort</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.EventListener.html b/python/pykde/doc/classref/khtml/DOM.EventListener.html
new file mode 100644
index 00000000..54257ce3
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.EventListener.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.EventListener</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.EventListener</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.EventListener</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.DomShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>EventListener</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a EventListener instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventListenerType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleEvent</b> (evt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>evt</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLAnchorElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLAnchorElement.html
new file mode 100644
index 00000000..7ecfb866
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLAnchorElement.html
@@ -0,0 +1,173 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLAnchorElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLAnchorElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLAnchorElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLAnchorElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAnchorElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAnchorElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAnchorElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLAnchorElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAnchorElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAnchorElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAnchorElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>coords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hreflang</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rev</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCharset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCoords</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHref</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHreflang</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRev</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShape</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTarget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shape</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLAppletElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLAppletElement.html
new file mode 100644
index 00000000..b217715e
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLAppletElement.html
@@ -0,0 +1,180 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLAppletElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLAppletElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLAppletElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLAppletElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAppletElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAppletElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAppletElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLAppletElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAppletElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAppletElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAppletElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>archive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>code</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codeBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getHspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getVspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>object</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlt</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArchive</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCodeBase</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHspace</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setObject</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLAreaElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLAreaElement.html
new file mode 100644
index 00000000..9f7b5db7
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLAreaElement.html
@@ -0,0 +1,131 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLAreaElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLAreaElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLAreaElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLAreaElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAreaElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAreaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAreaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLAreaElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAreaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLAreaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLAreaElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>coords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noHref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlt</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCoords</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHref</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoHref</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShape</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTarget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shape</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLBRElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLBRElement.html
new file mode 100644
index 00000000..18b9b13c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLBRElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLBRElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLBRElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLBRElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLBRElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBRElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBRElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBRElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLBRElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBRElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBRElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBRElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClear</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLBaseElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLBaseElement.html
new file mode 100644
index 00000000..60ca3e9a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLBaseElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLBaseElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLBaseElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLBaseElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLBaseElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLBaseElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHref</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTarget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLBaseFontElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLBaseFontElement.html
new file mode 100644
index 00000000..3218d92b
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLBaseFontElement.html
@@ -0,0 +1,97 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLBaseFontElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLBaseFontElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLBaseFontElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLBaseFontElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseFontElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseFontElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseFontElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLBaseFontElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseFontElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBaseFontElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBaseFontElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>face</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLBlockquoteElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLBlockquoteElement.html
new file mode 100644
index 00000000..a34399d2
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLBlockquoteElement.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLBlockquoteElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLBlockquoteElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLBlockquoteElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLBlockquoteElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBlockquoteElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBlockquoteElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBlockquoteElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLBlockquoteElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBlockquoteElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBlockquoteElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBlockquoteElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBlockquoteElement</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCite</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLBodyElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLBodyElement.html
new file mode 100644
index 00000000..30686b4a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLBodyElement.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLBodyElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLBodyElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLBodyElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLBodyElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBodyElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBodyElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBodyElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLBodyElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBodyElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLBodyElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLBodyElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aLink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>background</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>link</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setALink</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackground</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBgColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLink</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVLink</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vLink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLButtonElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLButtonElement.html
new file mode 100644
index 00000000..5b3d3726
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLButtonElement.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLButtonElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLButtonElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLButtonElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLButtonElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLButtonElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLButtonElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLButtonElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLButtonElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLButtonElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLButtonElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLButtonElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLCollection.html b/python/pykde/doc/classref/khtml/DOM.HTMLCollection.html
new file mode 100644
index 00000000..475cb693
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLCollection.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLCollection</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLCollection</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLCollection</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLCollection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLCollection instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLCollection</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLCollection instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLCollection</b> (base, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>base</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>namedItem</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextNamedItem</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLDListElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLDListElement.html
new file mode 100644
index 00000000..ab14426e
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLDListElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLDListElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLDListElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLDListElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLDListElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDListElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLDListElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDListElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compact</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompact</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLDirectoryElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLDirectoryElement.html
new file mode 100644
index 00000000..1e5825fc
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLDirectoryElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLDirectoryElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLDirectoryElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLDirectoryElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLDirectoryElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDirectoryElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDirectoryElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDirectoryElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLDirectoryElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDirectoryElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDirectoryElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDirectoryElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compact</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompact</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLDivElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLDivElement.html
new file mode 100644
index 00000000..7b2cdcc7
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLDivElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLDivElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLDivElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLDivElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLDivElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDivElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDivElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDivElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLDivElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDivElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDivElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDivElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLDocument.html b/python/pykde/doc/classref/khtml/DOM.HTMLDocument.html
new file mode 100644
index 00000000..ae8d21b1
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLDocument.html
@@ -0,0 +1,156 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLDocument</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLDocument</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLDocument</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Document </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDocument instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDocument</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDocument instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KHTMLView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDocument</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDocument instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLDocument</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDocument</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLDocument instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLDocument</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>URL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>all</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>anchors</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applets</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>body</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completeURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cookie</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>domain</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forms</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getElementsByName</b> (elementName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>elementName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>images</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>links</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>referrer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBody</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.HTMLElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCookie</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>write</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeln</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLElement.html
new file mode 100644
index 00000000..07cf8547
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLElement.html
@@ -0,0 +1,150 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Element </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCSSProperty</b> (property, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>property</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>all</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assignOther</b> (other, elementId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.0.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+<tr><td>elementId</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>children</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>className</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>innerHTML</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>innerText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lang</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeCSSProperty</b> (property)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>property</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClassName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDir</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setId</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInnerHTML</b> (html)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>html</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInnerText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLang</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTitle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLFieldSetElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLFieldSetElement.html
new file mode 100644
index 00000000..86d49c49
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLFieldSetElement.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLFieldSetElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLFieldSetElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLFieldSetElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLFieldSetElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFieldSetElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFieldSetElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFieldSetElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLFieldSetElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFieldSetElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFieldSetElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFieldSetElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLFontElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLFontElement.html
new file mode 100644
index 00000000..8b793e71
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLFontElement.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLFontElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLFontElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLFontElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLFontElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFontElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFontElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFontElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLFontElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFontElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFontElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFontElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>face</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLFormElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLFormElement.html
new file mode 100644
index 00000000..04215c4c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLFormElement.html
@@ -0,0 +1,125 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLFormElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLFormElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLFormElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLFormElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFormElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFormElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFormElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLFormElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFormElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFormElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFormElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptCharset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>action</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>elements</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enctype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>method</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAcceptCharset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAction</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnctype</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMethod</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTarget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>submit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLFrameElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLFrameElement.html
new file mode 100644
index 00000000..2e53b4f6
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLFrameElement.html
@@ -0,0 +1,134 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLFrameElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLFrameElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLFrameElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLFrameElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLFrameElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameBorder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>longDesc</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrolling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLongDesc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoResize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScrolling</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSrc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>src</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLFrameSetElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLFrameSetElement.html
new file mode 100644
index 00000000..e88fb21d
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLFrameSetElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLFrameSetElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLFrameSetElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLFrameSetElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLFrameSetElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameSetElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameSetElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameSetElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLFrameSetElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameSetElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLFrameSetElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLFrameSetElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cols</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCols</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRows</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLHRElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLHRElement.html
new file mode 100644
index 00000000..abef8ca2
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLHRElement.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLHRElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLHRElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLHRElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLHRElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHRElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHRElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHRElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLHRElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHRElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHRElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHRElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noShade</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoShade</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLHeadElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLHeadElement.html
new file mode 100644
index 00000000..fe329273
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLHeadElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLHeadElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLHeadElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLHeadElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLHeadElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLHeadElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>profile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProfile</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLHeadingElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLHeadingElement.html
new file mode 100644
index 00000000..0d4f8241
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLHeadingElement.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLHeadingElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLHeadingElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLHeadingElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLHeadingElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadingElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadingElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadingElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLHeadingElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadingElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHeadingElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadingElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHeadingElement</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLHtmlElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLHtmlElement.html
new file mode 100644
index 00000000..66ff63e5
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLHtmlElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLHtmlElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLHtmlElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLHtmlElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLHtmlElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHtmlElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHtmlElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHtmlElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLHtmlElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHtmlElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLHtmlElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLHtmlElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVersion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>version</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLIFrameElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLIFrameElement.html
new file mode 100644
index 00000000..3d22a8ae
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLIFrameElement.html
@@ -0,0 +1,152 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLIFrameElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLIFrameElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLIFrameElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLIFrameElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIFrameElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIFrameElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIFrameElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLIFrameElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIFrameElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIFrameElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIFrameElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameBorder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>longDesc</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scrolling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLongDesc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScrolling</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSrc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>src</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLImageElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLImageElement.html
new file mode 100644
index 00000000..ed00f02a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLImageElement.html
@@ -0,0 +1,186 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLImageElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLImageElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLImageElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLImageElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLImageElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLImageElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLImageElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLImageElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLImageElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLImageElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLImageElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>border</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getBorder</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>longDesc</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlt</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIsMap</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLongDesc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSrc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseMap</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>src</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>x</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>y</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLInputElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLInputElement.html
new file mode 100644
index 00000000..5dfa038b
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLInputElement.html
@@ -0,0 +1,279 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLInputElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLInputElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLInputElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLInputElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLInputElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLInputElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLInputElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLInputElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLInputElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLInputElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLInputElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>alt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>click</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultChecked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>indeterminate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>select</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccept</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlt</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultChecked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIndeterminate</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaxLength</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionEnd</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionRange</b> (start, end)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>start</td><td>long</td><td></td></tr>
+<tr><td>end</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionStart</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSrc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseMap</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>src</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLIsIndexElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLIsIndexElement.html
new file mode 100644
index 00000000..24ba7a61
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLIsIndexElement.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLIsIndexElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLIsIndexElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLIsIndexElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLIsIndexElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIsIndexElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIsIndexElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIsIndexElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLIsIndexElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIsIndexElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLIsIndexElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLIsIndexElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prompt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrompt</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLLIElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLLIElement.html
new file mode 100644
index 00000000..aa868ad8
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLLIElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLLIElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLLIElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLLIElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLLIElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLIElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLIElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLIElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLLIElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLIElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLIElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLIElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLLabelElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLLabelElement.html
new file mode 100644
index 00000000..9e89da44
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLLabelElement.html
@@ -0,0 +1,81 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLLabelElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLLabelElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLLabelElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLLabelElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLabelElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLabelElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLabelElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLLabelElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLabelElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLabelElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLabelElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHtmlFor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLLayerElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLLayerElement.html
new file mode 100644
index 00000000..71c0a9fe
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLLayerElement.html
@@ -0,0 +1,107 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLLayerElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLLayerElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLLayerElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLLayerElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLayerElement instance</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLayerElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLayerElement instance</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLLayerElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLayerElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLayerElement instance</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>left</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBgColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLeft</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTop</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVisibility</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>top</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>visibility</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLLegendElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLLegendElement.html
new file mode 100644
index 00000000..d1fc7496
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLLegendElement.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLLegendElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLLegendElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLLegendElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLLegendElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLegendElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLegendElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLegendElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLLegendElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLegendElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLegendElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLegendElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLLinkElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLLinkElement.html
new file mode 100644
index 00000000..9facd146
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLLinkElement.html
@@ -0,0 +1,143 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLLinkElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLLinkElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLLinkElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLLinkElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLinkElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLinkElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLinkElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLLinkElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLinkElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLLinkElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLLinkElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hreflang</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>media</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rev</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCharset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHref</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHreflang</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMedia</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRev</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTarget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLMapElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLMapElement.html
new file mode 100644
index 00000000..4abbb147
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLMapElement.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLMapElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLMapElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLMapElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLMapElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMapElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMapElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMapElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLMapElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMapElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMapElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMapElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>areas</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLMenuElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLMenuElement.html
new file mode 100644
index 00000000..5df63036
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLMenuElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLMenuElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLMenuElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLMenuElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLMenuElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMenuElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMenuElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMenuElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLMenuElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMenuElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMenuElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMenuElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compact</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompact</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLMetaElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLMetaElement.html
new file mode 100644
index 00000000..e20d07ff
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLMetaElement.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLMetaElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLMetaElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLMetaElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLMetaElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMetaElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMetaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMetaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLMetaElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMetaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLMetaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLMetaElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>content</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>httpEquiv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scheme</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setContent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHttpEquiv</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScheme</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLModElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLModElement.html
new file mode 100644
index 00000000..5240472b
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLModElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLModElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLModElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLModElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLModElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLModElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLModElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLModElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLModElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLModElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLModElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLModElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dateTime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCite</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDateTime</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLOListElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLOListElement.html
new file mode 100644
index 00000000..b71ed54b
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLOListElement.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLOListElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLOListElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLOListElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLOListElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOListElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLOListElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOListElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compact</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompact</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStart</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLObjectElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLObjectElement.html
new file mode 100644
index 00000000..8c868c20
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLObjectElement.html
@@ -0,0 +1,240 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLObjectElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLObjectElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLObjectElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLObjectElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLObjectElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLObjectElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLObjectElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLObjectElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLObjectElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLObjectElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLObjectElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>archive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>border</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>code</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codeBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>codeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>declare</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getHspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getVspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArchive</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCodeBase</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCodeType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDeclare</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStandby</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUseMap</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVspace</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>standby</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vspace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLOptGroupElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLOptGroupElement.html
new file mode 100644
index 00000000..82de37f4
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLOptGroupElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLOptGroupElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLOptGroupElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLOptGroupElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLOptGroupElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptGroupElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptGroupElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptGroupElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLOptGroupElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptGroupElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptGroupElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptGroupElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLOptionElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLOptionElement.html
new file mode 100644
index 00000000..4da1c41c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLOptionElement.html
@@ -0,0 +1,119 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLOptionElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLOptionElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLOptionElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLOptionElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptionElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLOptionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLOptionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLOptionElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultSelected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>index</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>label</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLParagraphElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLParagraphElement.html
new file mode 100644
index 00000000..8cd2b7f5
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLParagraphElement.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLParagraphElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLParagraphElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLParagraphElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLParagraphElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParagraphElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParagraphElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParagraphElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLParagraphElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParagraphElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParagraphElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParagraphElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParagraphElement</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLParamElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLParamElement.html
new file mode 100644
index 00000000..1b06ca07
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLParamElement.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLParamElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLParamElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLParamElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLParamElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParamElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParamElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParamElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLParamElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParamElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLParamElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLParamElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValueType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>valueType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLPreElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLPreElement.html
new file mode 100644
index 00000000..0bd3a4f8
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLPreElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLPreElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLPreElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLPreElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLPreElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLPreElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLPreElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLPreElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLPreElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLPreElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLPreElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLPreElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLQuoteElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLQuoteElement.html
new file mode 100644
index 00000000..478c13de
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLQuoteElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLQuoteElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLQuoteElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLQuoteElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLQuoteElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLQuoteElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLQuoteElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLQuoteElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLQuoteElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLQuoteElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLQuoteElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLQuoteElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCite</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLScriptElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLScriptElement.html
new file mode 100644
index 00000000..82b2e08d
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLScriptElement.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLScriptElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLScriptElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLScriptElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLScriptElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLScriptElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLScriptElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLScriptElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLScriptElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLScriptElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLScriptElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLScriptElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCharset</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefer</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHtmlFor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSrc</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>src</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLSelectElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLSelectElement.html
new file mode 100644
index 00000000..e6492bfa
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLSelectElement.html
@@ -0,0 +1,153 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLSelectElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLSelectElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLSelectElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLSelectElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLSelectElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLSelectElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLSelectElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLSelectElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLSelectElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLSelectElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLSelectElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> (element, before)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>element</td><td>DOM.HTMLElement</td><td></td></tr>
+<tr><td>before</td><td>DOM.HTMLElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multiple</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMultiple</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLStyleElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLStyleElement.html
new file mode 100644
index 00000000..778ded7c
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLStyleElement.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLStyleElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLStyleElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLStyleElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLStyleElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLStyleElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLStyleElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLStyleElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLStyleElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLStyleElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLStyleElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLStyleElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>media</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMedia</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableCaptionElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableCaptionElement.html
new file mode 100644
index 00000000..66c0cf2a
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableCaptionElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableCaptionElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableCaptionElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableCaptionElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableCaptionElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCaptionElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCaptionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCaptionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableCaptionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCaptionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCaptionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCaptionElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableCellElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableCellElement.html
new file mode 100644
index 00000000..0a67afe7
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableCellElement.html
@@ -0,0 +1,194 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableCellElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableCellElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableCellElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableCellElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCellElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCellElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCellElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableCellElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCellElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableCellElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableCellElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abbr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>axis</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cellIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chOff</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>colSpan</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>headers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>height</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noWrap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rowSpan</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scope</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAbbr</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAxis</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBgColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCellIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCh</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChOff</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setColSpan</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeaders</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeight</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoWrap</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRowSpan</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setScope</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vAlign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableColElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableColElement.html
new file mode 100644
index 00000000..e8476ff8
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableColElement.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableColElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableColElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableColElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableColElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableColElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableColElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableColElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableColElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableColElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableColElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableColElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chOff</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCh</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChOff</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSpan</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>span</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vAlign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableElement.html
new file mode 100644
index 00000000..aab07f02
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableElement.html
@@ -0,0 +1,203 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>border</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLTableCaptionElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cellPadding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cellSpacing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCaption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTFoot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTHead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteCaption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteRow</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteTFoot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteTHead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frame</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertRow</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rules</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBgColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBorder</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.HTMLTableCaptionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCellPadding</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCellSpacing</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrame</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRules</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSummary</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTFoot</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.HTMLTableSectionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTHead</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.HTMLTableSectionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidth</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>summary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tBodies</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tFoot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLTableSectionElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tHead</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLTableSectionElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>width</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableRowElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableRowElement.html
new file mode 100644
index 00000000..2383f766
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableRowElement.html
@@ -0,0 +1,143 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableRowElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableRowElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableRowElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableRowElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableRowElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableRowElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableRowElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableRowElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableRowElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableRowElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableRowElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bgColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cells</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chOff</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteCell</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertCell</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rowIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sectionRowIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBgColor</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCells</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.HTMLCollection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCh</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChOff</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRowIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSectionRowIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vAlign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTableSectionElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTableSectionElement.html
new file mode 100644
index 00000000..d21647a3
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTableSectionElement.html
@@ -0,0 +1,110 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTableSectionElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTableSectionElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTableSectionElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTableSectionElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableSectionElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableSectionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableSectionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTableSectionElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableSectionElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTableSectionElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTableSectionElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>align</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chOff</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteRow</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertRow</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLElement)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLCollection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCh</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setChOff</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVAlign</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vAlign</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTextAreaElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTextAreaElement.html
new file mode 100644
index 00000000..ba158ad0
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTextAreaElement.html
@@ -0,0 +1,189 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTextAreaElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTextAreaElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTextAreaElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTextAreaElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTextAreaElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTextAreaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTextAreaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTextAreaElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTextAreaElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTextAreaElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTextAreaElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blur</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cols</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focus</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>form</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLFormElement)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>select</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccessKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCols</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRows</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionEnd</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionRange</b> (start, end)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>start</td><td>long</td><td></td></tr>
+<tr><td>end</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionStart</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabIndex</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabIndex</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textLength</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLTitleElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLTitleElement.html
new file mode 100644
index 00000000..1a08e650
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLTitleElement.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLTitleElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLTitleElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLTitleElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLTitleElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTitleElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTitleElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTitleElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLTitleElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTitleElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLTitleElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLTitleElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.HTMLUListElement.html b/python/pykde/doc/classref/khtml/DOM.HTMLUListElement.html
new file mode 100644
index 00000000..21e71d42
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.HTMLUListElement.html
@@ -0,0 +1,77 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.HTMLUListElement</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.HTMLUListElement</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.HTMLUListElement</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.HTMLElement </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HTMLUListElement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLUListElement instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLUListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLUListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.HTMLUListElement</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLUListElement</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HTMLUListElement instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>HTMLUListElement</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compact</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompact</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.LinkStyle.html b/python/pykde/doc/classref/khtml/DOM.LinkStyle.html
new file mode 100644
index 00000000..db3004ef
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.LinkStyle.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.LinkStyle</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.LinkStyle</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.LinkStyle</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>LinkStyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LinkStyle instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>LinkStyle</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LinkStyle instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.LinkStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.MediaList.html b/python/pykde/doc/classref/khtml/DOM.MediaList.html
new file mode 100644
index 00000000..4fe4224e
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.MediaList.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.MediaList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.MediaList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.MediaList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MediaList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MediaList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MediaList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MediaList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.MediaList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MediaList</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendMedium</b> (newMedium)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newMedium</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteMedium</b> (oldMedium)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldMedium</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mediaText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMediaText</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.MouseEvent.html b/python/pykde/doc/classref/khtml/DOM.MouseEvent.html
new file mode 100644
index 00000000..53414887
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.MouseEvent.html
@@ -0,0 +1,109 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.MouseEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.MouseEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.MouseEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.UIEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MouseEvent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MouseEvent instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MouseEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MouseEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.MouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MouseEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MouseEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MouseEvent</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>altKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>button</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clientY</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ctrlKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initMouseEvent</b> (typeArg, canBubbleArg, cancelableArg, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>typeArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>canBubbleArg</td><td>bool</td><td></td></tr>
+<tr><td>cancelableArg</td><td>bool</td><td></td></tr>
+<tr><td>viewArg</td><td>DOM.AbstractView</td><td></td></tr>
+<tr><td>detailArg</td><td>long</td><td></td></tr>
+<tr><td>screenXArg</td><td>long</td><td></td></tr>
+<tr><td>screenYArg</td><td>long</td><td></td></tr>
+<tr><td>clientXArg</td><td>long</td><td></td></tr>
+<tr><td>clientYArg</td><td>long</td><td></td></tr>
+<tr><td>ctrlKeyArg</td><td>bool</td><td></td></tr>
+<tr><td>altKeyArg</td><td>bool</td><td></td></tr>
+<tr><td>shiftKeyArg</td><td>bool</td><td></td></tr>
+<tr><td>metaKeyArg</td><td>bool</td><td></td></tr>
+<tr><td>buttonArg</td><td>ushort</td><td></td></tr>
+<tr><td>relatedTargetArg</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relatedTarget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>screenX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>screenY</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shiftKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.MutationEvent.html b/python/pykde/doc/classref/khtml/DOM.MutationEvent.html
new file mode 100644
index 00000000..9d5b60dc
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.MutationEvent.html
@@ -0,0 +1,99 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.MutationEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.MutationEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.MutationEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Event </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>attrChangeType</b> = {MODIFICATION, ADDITION, REMOVAL
+}</ul>
+<h3>methods</h3><ul>
+<li><b>MutationEvent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MutationEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MutationEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MutationEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.MutationEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MutationEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MutationEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MutationEvent</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attrChange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attrName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initMutationEvent</b> (typeArg, canBubbleArg, cancelableArg, relatedNodeArg, prevValueArg, newValueArg, attrNameArg, attrChangeArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>typeArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>canBubbleArg</td><td>bool</td><td></td></tr>
+<tr><td>cancelableArg</td><td>bool</td><td></td></tr>
+<tr><td>relatedNodeArg</td><td>DOM.Node</td><td></td></tr>
+<tr><td>prevValueArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>newValueArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>attrNameArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>attrChangeArg</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relatedNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.NamedNodeMap.html b/python/pykde/doc/classref/khtml/DOM.NamedNodeMap.html
new file mode 100644
index 00000000..6f377c90
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.NamedNodeMap.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.NamedNodeMap</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.NamedNodeMap</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.NamedNodeMap</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NamedNodeMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NamedNodeMap instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NamedNodeMap</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NamedNodeMap instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.NamedNodeMap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NamedNodeMap</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getNamedItem</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getNamedItemNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeNamedItem</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeNamedItemNS</b> (namespaceURI, localName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>namespaceURI</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>localName</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNamedItem</b> (arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arg</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNamedItemNS</b> (arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arg</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Node.html b/python/pykde/doc/classref/khtml/DOM.Node.html
new file mode 100644
index 00000000..f0bd2c9d
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Node.html
@@ -0,0 +1,221 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Node</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Node</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Node</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>NodeType</b> = {ELEMENT_NODE, ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, ENTITY_REFERENCE_NODE, ENTITY_NODE, PROCESSING_INSTRUCTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT_NODE, NOTATION_NODE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Node</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Node instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Node</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Node instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Node</b> (_impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addEventListener</b> (type, listener, useCapture)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>listener</td><td>DOM.EventListener</td><td></td></tr>
+<tr><td>useCapture</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendChild</b> (newChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newChild</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NamedNodeMap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childNodes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cloneNode</b> (deep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>deep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatchEvent</b> (evt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>evt</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>elementId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCursor</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>_x (int) _y (int) height (int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasAttributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasChildNodes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>index</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertBefore</b> (newChild, refChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newChild</td><td>DOM.Node</td><td></td></tr>
+<tr><td>refChild</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (feature, version)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>feature</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>version</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>namespaceURI</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextSibling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nodeName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nodeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nodeValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>normalize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prefix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previousSibling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeChild</b> (oldChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldChild</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeEventListener</b> (type, listener, useCapture)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>listener</td><td>DOM.EventListener</td><td></td></tr>
+<tr><td>useCapture</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceChild</b> (newChild, oldChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newChild</td><td>DOM.Node</td><td></td></tr>
+<tr><td>oldChild</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNodeValue</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrefix</b> (prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prefix</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toHTML</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.NodeFilter.html b/python/pykde/doc/classref/khtml/DOM.NodeFilter.html
new file mode 100644
index 00000000..8eed4a11
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.NodeFilter.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.NodeFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.NodeFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.NodeFilter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>AcceptCode</b> = {FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP
+}<li><b>ShowCode</b> = {SHOW_ALL, SHOW_ELEMENT, SHOW_ATTRIBUTE, SHOW_TEXT, SHOW_CDATA_SECTION, SHOW_ENTITY_REFERENCE, SHOW_ENTITY, SHOW_PROCESSING_INSTRUCTION, SHOW_COMMENT, SHOW_DOCUMENT, SHOW_DOCUMENT_TYPE, SHOW_DOCUMENT_FRAGMENT, SHOW_NOTATION
+}</ul>
+<h3>methods</h3><ul>
+<li><b>NodeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeFilter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeFilter</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeFilter instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.NodeFilter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeFilter</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeFilter</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptNode</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(short)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createCustom</b> (custom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeFilter)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>custom</td><td>DOM.CustomNodeFilter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customNodeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CustomNodeFilter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCustomNodeFilter</b> (custom)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>custom</td><td>DOM.CustomNodeFilter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.NodeIterator.html b/python/pykde/doc/classref/khtml/DOM.NodeIterator.html
new file mode 100644
index 00000000..10c7c515
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.NodeIterator.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.NodeIterator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.NodeIterator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.NodeIterator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NodeIterator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeIterator instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeIterator</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeIterator instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.NodeIterator</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeIterator</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandEntityReferences</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeFilter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previousNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>root</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.NodeList.html b/python/pykde/doc/classref/khtml/DOM.NodeList.html
new file mode 100644
index 00000000..3b089c81
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.NodeList.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.NodeList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.NodeList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.NodeList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NodeList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NodeList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.NodeList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>NodeList</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Notation.html b/python/pykde/doc/classref/khtml/DOM.Notation.html
new file mode 100644
index 00000000..6e333afc
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Notation.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Notation</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Notation</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Notation</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Notation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Notation instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Notation</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Notation instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Notation</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Notation</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Notation instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Notation</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>publicId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.ProcessingInstruction.html b/python/pykde/doc/classref/khtml/DOM.ProcessingInstruction.html
new file mode 100644
index 00000000..1ae2ff79
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.ProcessingInstruction.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.ProcessingInstruction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.ProcessingInstruction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.ProcessingInstruction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Node </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ProcessingInstruction</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ProcessingInstruction instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ProcessingInstruction</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ProcessingInstruction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.ProcessingInstruction</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ProcessingInstruction</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ProcessingInstruction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ProcessingInstruction</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>target</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.RGBColor.html b/python/pykde/doc/classref/khtml/DOM.RGBColor.html
new file mode 100644
index 00000000..c2c08db7
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.RGBColor.html
@@ -0,0 +1,80 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.RGBColor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.RGBColor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.RGBColor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>RGBColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RGBColor instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>RGBColor</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RGBColor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>RGBColor</b> (color)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RGBColor instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>color</td><td>QRgb</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>RGBColor</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RGBColor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.RGBColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRgb)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>color</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>green</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>red</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Range.html b/python/pykde/doc/classref/khtml/DOM.Range.html
new file mode 100644
index 00000000..56d53f40
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Range.html
@@ -0,0 +1,204 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Range</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Range</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Range</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>CompareHow</b> = {START_TO_START, START_TO_END, END_TO_END, END_TO_START
+}</ul>
+<h3>methods</h3><ul>
+<li><b>Range</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Range instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Range</b> (rootContainer)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Range instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rootContainer</td><td>DOM.Document</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Range</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Range instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Range</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Range</b> (startContainer, startOffset, endContainer, endOffset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Range instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startContainer</td><td>DOM.Node</td><td></td></tr>
+<tr><td>startOffset</td><td>long</td><td></td></tr>
+<tr><td>endContainer</td><td>DOM.Node</td><td></td></tr>
+<tr><td>endOffset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Range</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>boundaryPointsValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cloneContents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentFragment)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cloneRange</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Range)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>collapse</b> (toStart)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>toStart</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>collapsed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commonAncestorContainer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compareBoundaryPoints</b> (how, sourceRange)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(short)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>how</td><td>DOM.Range.CompareHow</td><td></td></tr>
+<tr><td>sourceRange</td><td>DOM.Range</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createContextualFragment</b> (html)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentFragment)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>html</td><td>DOM.DOMString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteContents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endContainer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>endOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extractContents</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DocumentFragment)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insertNode</b> (newNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDetached</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectNode</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectNodeContents</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnd</b> (refNode, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEndAfter</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEndBefore</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStart</b> (refNode, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStartAfter</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStartBefore</b> (refNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>refNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startContainer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>surroundContents</b> (newParent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newParent</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toHTML</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.RangeException.html b/python/pykde/doc/classref/khtml/DOM.RangeException.html
new file mode 100644
index 00000000..a660b957
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.RangeException.html
@@ -0,0 +1,60 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.RangeException</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.RangeException</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.RangeException</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>RangeExceptionCode</b> = {BAD_BOUNDARYPOINTS_ERR, INVALID_NODE_TYPE_ERR, _EXCEPTION_OFFSET, _EXCEPTION_MAX
+}</ul>
+<h3>methods</h3><ul>
+<li><b>RangeException</b> (_code)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RangeException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_code</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>RangeException</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RangeException instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.RangeException</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>code</td><td>ushort</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Rect.html b/python/pykde/doc/classref/khtml/DOM.Rect.html
new file mode 100644
index 00000000..b9149c7f
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Rect.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Rect</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Rect</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Rect</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Rect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Rect instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Rect</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Rect instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Rect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Rect</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>bottom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>left</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>right</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>top</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.CSSPrimitiveValue)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.StyleSheet.html b/python/pykde/doc/classref/khtml/DOM.StyleSheet.html
new file mode 100644
index 00000000..8a2317f0
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.StyleSheet.html
@@ -0,0 +1,89 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.StyleSheet</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.StyleSheet</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.StyleSheet</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StyleSheet instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>StyleSheet</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StyleSheet instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.StyleSheet</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>StyleSheet</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>href</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCSSStyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>media</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.MediaList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentStyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDisabled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>title</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.StyleSheetList.html b/python/pykde/doc/classref/khtml/DOM.StyleSheetList.html
new file mode 100644
index 00000000..4872d733
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.StyleSheetList.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.StyleSheetList</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.StyleSheetList</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.StyleSheetList</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StyleSheetList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StyleSheetList instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>StyleSheetList</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StyleSheetList instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.StyleSheetList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>StyleSheetList</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.StyleSheet)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>length</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.Text.html b/python/pykde/doc/classref/khtml/DOM.Text.html
new file mode 100644
index 00000000..6e741659
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.Text.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.Text</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.Text</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.Text</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.CharacterData </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Text instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Text</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Text instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Text</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Text</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Text instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Text</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitText</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Text)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.TextEvent.html b/python/pykde/doc/classref/khtml/DOM.TextEvent.html
new file mode 100644
index 00000000..6c161284
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.TextEvent.html
@@ -0,0 +1,113 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.TextEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.TextEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.TextEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.UIEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>TextEvent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TextEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TextEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TextEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.TextEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TextEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TextEvent instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TextEvent</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkModifier</b> (modifierArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modifierArg</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initModifier</b> (modifierArg, valueArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modifierArg</td><td>ulong</td><td></td></tr>
+<tr><td>valueArg</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initTextEvent</b> (typeArg, canBubbleArg, cancelableArg, viewArg, detailArg, outputStringArg, keyValArg, virtKeyValArg, inputGeneratedArg, numPadArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>typeArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>canBubbleArg</td><td>bool</td><td></td></tr>
+<tr><td>cancelableArg</td><td>bool</td><td></td></tr>
+<tr><td>viewArg</td><td>DOM.AbstractView</td><td></td></tr>
+<tr><td>detailArg</td><td>long</td><td></td></tr>
+<tr><td>outputStringArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>keyValArg</td><td>ulong</td><td></td></tr>
+<tr><td>virtKeyValArg</td><td>ulong</td><td></td></tr>
+<tr><td>inputGeneratedArg</td><td>bool</td><td></td></tr>
+<tr><td>numPadArg</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inputGenerated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyVal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numPad</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outputString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.DOMString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtKeyVal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.TreeWalker.html b/python/pykde/doc/classref/khtml/DOM.TreeWalker.html
new file mode 100644
index 00000000..a1d6a96b
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.TreeWalker.html
@@ -0,0 +1,109 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.TreeWalker</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.TreeWalker</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.TreeWalker</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>TreeWalker</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TreeWalker instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TreeWalker</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TreeWalker instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.TreeWalker</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TreeWalker</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandEntityReferences</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.NodeFilter)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>firstChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isNull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextSibling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previousNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>previousSibling</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>root</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentNode</b> (_currentNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_currentNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCurrentNode</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.1 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>whatToShow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.UIEvent.html b/python/pykde/doc/classref/khtml/DOM.UIEvent.html
new file mode 100644
index 00000000..1605f5cf
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.UIEvent.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM.UIEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM.UIEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM.UIEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DOM.Event </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>UIEvent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a UIEvent instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UIEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a UIEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.UIEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UIEvent</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a UIEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>DOM.Event</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>UIEvent</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>charCode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detail</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initUIEvent</b> (typeArg, canBubbleArg, cancelableArg, viewArg, detailArg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>typeArg</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>canBubbleArg</td><td>bool</td><td></td></tr>
+<tr><td>cancelableArg</td><td>bool</td><td></td></tr>
+<tr><td>viewArg</td><td>DOM.AbstractView</td><td></td></tr>
+<tr><td>detailArg</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyCode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layerX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layerY</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageX</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageY</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.AbstractView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>which</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/DOM.html b/python/pykde/doc/classref/khtml/DOM.html
new file mode 100644
index 00000000..89a13c92
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/DOM.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class DOM</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class DOM</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>DOM</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="DOM.AbstractView.html">AbstractView</a></b><li><b><a href="DOM.Attr.html">Attr</a></b><li><b><a href="DOM.CDATASection.html">CDATASection</a></b><li><b><a href="DOM.CSSCharsetRule.html">CSSCharsetRule</a></b><li><b><a href="DOM.CSSException.html">CSSException</a></b><li><b><a href="DOM.CSSFontFaceRule.html">CSSFontFaceRule</a></b><li><b><a href="DOM.CSSImportRule.html">CSSImportRule</a></b><li><b><a href="DOM.CSSMediaRule.html">CSSMediaRule</a></b><li><b><a href="DOM.CSSPageRule.html">CSSPageRule</a></b><li><b><a href="DOM.CSSPrimitiveValue.html">CSSPrimitiveValue</a></b><li><b><a href="DOM.CSSRule.html">CSSRule</a></b><li><b><a href="DOM.CSSRuleList.html">CSSRuleList</a></b><li><b><a href="DOM.CSSStyleDeclaration.html">CSSStyleDeclaration</a></b><li><b><a href="DOM.CSSStyleRule.html">CSSStyleRule</a></b><li><b><a href="DOM.CSSStyleSheet.html">CSSStyleSheet</a></b><li><b><a href="DOM.CSSUnknownRule.html">CSSUnknownRule</a></b><li><b><a href="DOM.CSSValue.html">CSSValue</a></b><li><b><a href="DOM.CSSValueList.html">CSSValueList</a></b><li><b><a href="DOM.CharacterData.html">CharacterData</a></b><li><b><a href="DOM.Comment.html">Comment</a></b><li><b><a href="DOM.Counter.html">Counter</a></b><li><b><a href="DOM.CustomNodeFilter.html">CustomNodeFilter</a></b><li><b><a href="DOM.DOMException.html">DOMException</a></b><li><b><a href="DOM.DOMImplementation.html">DOMImplementation</a></b><li><b><a href="DOM.DOMString.html">DOMString</a></b><li><b><a href="DOM.Document.html">Document</a></b><li><b><a href="DOM.DocumentFragment.html">DocumentFragment</a></b><li><b><a href="DOM.DocumentStyle.html">DocumentStyle</a></b><li><b><a href="DOM.DocumentType.html">DocumentType</a></b><li><b><a href="DOM.DomShared.html">DomShared</a></b><li><b><a href="DOM.Element.html">Element</a></b><li><b><a href="DOM.Entity.html">Entity</a></b><li><b><a href="DOM.EntityReference.html">EntityReference</a></b><li><b><a href="DOM.Event.html">Event</a></b><li><b><a href="DOM.EventException.html">EventException</a></b><li><b><a href="DOM.EventListener.html">EventListener</a></b><li><b><a href="DOM.HTMLAnchorElement.html">HTMLAnchorElement</a></b><li><b><a href="DOM.HTMLAppletElement.html">HTMLAppletElement</a></b><li><b><a href="DOM.HTMLAreaElement.html">HTMLAreaElement</a></b><li><b><a href="DOM.HTMLBRElement.html">HTMLBRElement</a></b><li><b><a href="DOM.HTMLBaseElement.html">HTMLBaseElement</a></b><li><b><a href="DOM.HTMLBaseFontElement.html">HTMLBaseFontElement</a></b><li><b><a href="DOM.HTMLBlockquoteElement.html">HTMLBlockquoteElement</a></b><li><b><a href="DOM.HTMLBodyElement.html">HTMLBodyElement</a></b><li><b><a href="DOM.HTMLButtonElement.html">HTMLButtonElement</a></b><li><b><a href="DOM.HTMLCollection.html">HTMLCollection</a></b><li><b><a href="DOM.HTMLDListElement.html">HTMLDListElement</a></b><li><b><a href="DOM.HTMLDirectoryElement.html">HTMLDirectoryElement</a></b><li><b><a href="DOM.HTMLDivElement.html">HTMLDivElement</a></b><li><b><a href="DOM.HTMLDocument.html">HTMLDocument</a></b><li><b><a href="DOM.HTMLElement.html">HTMLElement</a></b><li><b><a href="DOM.HTMLFieldSetElement.html">HTMLFieldSetElement</a></b><li><b><a href="DOM.HTMLFontElement.html">HTMLFontElement</a></b><li><b><a href="DOM.HTMLFormElement.html">HTMLFormElement</a></b><li><b><a href="DOM.HTMLFrameElement.html">HTMLFrameElement</a></b><li><b><a href="DOM.HTMLFrameSetElement.html">HTMLFrameSetElement</a></b><li><b><a href="DOM.HTMLHRElement.html">HTMLHRElement</a></b><li><b><a href="DOM.HTMLHeadElement.html">HTMLHeadElement</a></b><li><b><a href="DOM.HTMLHeadingElement.html">HTMLHeadingElement</a></b><li><b><a href="DOM.HTMLHtmlElement.html">HTMLHtmlElement</a></b><li><b><a href="DOM.HTMLIFrameElement.html">HTMLIFrameElement</a></b><li><b><a href="DOM.HTMLImageElement.html">HTMLImageElement</a></b><li><b><a href="DOM.HTMLInputElement.html">HTMLInputElement</a></b><li><b><a href="DOM.HTMLIsIndexElement.html">HTMLIsIndexElement</a></b><li><b><a href="DOM.HTMLLIElement.html">HTMLLIElement</a></b><li><b><a href="DOM.HTMLLabelElement.html">HTMLLabelElement</a></b><li><b><a href="DOM.HTMLLayerElement.html">HTMLLayerElement</a></b><li><b><a href="DOM.HTMLLegendElement.html">HTMLLegendElement</a></b><li><b><a href="DOM.HTMLLinkElement.html">HTMLLinkElement</a></b><li><b><a href="DOM.HTMLMapElement.html">HTMLMapElement</a></b><li><b><a href="DOM.HTMLMenuElement.html">HTMLMenuElement</a></b><li><b><a href="DOM.HTMLMetaElement.html">HTMLMetaElement</a></b><li><b><a href="DOM.HTMLModElement.html">HTMLModElement</a></b><li><b><a href="DOM.HTMLOListElement.html">HTMLOListElement</a></b><li><b><a href="DOM.HTMLObjectElement.html">HTMLObjectElement</a></b><li><b><a href="DOM.HTMLOptGroupElement.html">HTMLOptGroupElement</a></b><li><b><a href="DOM.HTMLOptionElement.html">HTMLOptionElement</a></b><li><b><a href="DOM.HTMLParagraphElement.html">HTMLParagraphElement</a></b><li><b><a href="DOM.HTMLParamElement.html">HTMLParamElement</a></b><li><b><a href="DOM.HTMLPreElement.html">HTMLPreElement</a></b><li><b><a href="DOM.HTMLQuoteElement.html">HTMLQuoteElement</a></b><li><b><a href="DOM.HTMLScriptElement.html">HTMLScriptElement</a></b><li><b><a href="DOM.HTMLSelectElement.html">HTMLSelectElement</a></b><li><b><a href="DOM.HTMLStyleElement.html">HTMLStyleElement</a></b><li><b><a href="DOM.HTMLTableCaptionElement.html">HTMLTableCaptionElement</a></b><li><b><a href="DOM.HTMLTableCellElement.html">HTMLTableCellElement</a></b><li><b><a href="DOM.HTMLTableColElement.html">HTMLTableColElement</a></b><li><b><a href="DOM.HTMLTableElement.html">HTMLTableElement</a></b><li><b><a href="DOM.HTMLTableRowElement.html">HTMLTableRowElement</a></b><li><b><a href="DOM.HTMLTableSectionElement.html">HTMLTableSectionElement</a></b><li><b><a href="DOM.HTMLTextAreaElement.html">HTMLTextAreaElement</a></b><li><b><a href="DOM.HTMLTitleElement.html">HTMLTitleElement</a></b><li><b><a href="DOM.HTMLUListElement.html">HTMLUListElement</a></b><li><b><a href="DOM.LinkStyle.html">LinkStyle</a></b><li><b><a href="DOM.MediaList.html">MediaList</a></b><li><b><a href="DOM.MouseEvent.html">MouseEvent</a></b><li><b><a href="DOM.MutationEvent.html">MutationEvent</a></b><li><b><a href="DOM.NamedNodeMap.html">NamedNodeMap</a></b><li><b><a href="DOM.Node.html">Node</a></b><li><b><a href="DOM.NodeFilter.html">NodeFilter</a></b><li><b><a href="DOM.NodeIterator.html">NodeIterator</a></b><li><b><a href="DOM.NodeList.html">NodeList</a></b><li><b><a href="DOM.Notation.html">Notation</a></b><li><b><a href="DOM.ProcessingInstruction.html">ProcessingInstruction</a></b><li><b><a href="DOM.RGBColor.html">RGBColor</a></b><li><b><a href="DOM.Range.html">Range</a></b><li><b><a href="DOM.RangeException.html">RangeException</a></b><li><b><a href="DOM.Rect.html">Rect</a></b><li><b><a href="DOM.StyleSheet.html">StyleSheet</a></b><li><b><a href="DOM.StyleSheetList.html">StyleSheetList</a></b><li><b><a href="DOM.Text.html">Text</a></b><li><b><a href="DOM.TextEvent.html">TextEvent</a></b><li><b><a href="DOM.TreeWalker.html">TreeWalker</a></b><li><b><a href="DOM.UIEvent.html">UIEvent</a></b></ul>
+<h3>methods</h3><ul>
+<li><b>strcasecmp</b> (a, b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>b</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strcasecmp</b> (a, b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a</td><td>DOM.DOMString</td><td></td></tr>
+<tr><td>b</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/KHTMLPart.html b/python/pykde/doc/classref/khtml/KHTMLPart.html
new file mode 100644
index 00000000..e87fb0ef
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/KHTMLPart.html
@@ -0,0 +1,807 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHTMLPart</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHTMLPart</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHTMLPart</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.ReadOnlyPart </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>CaretDisplayPolicy</b> = {CaretVisible, CaretInvisible, CaretBlink
+}<li><b>FindOptions</b> = {FindLinksOnly, FindNoPopups
+}<li><b>FormNotification</b> = {NoNotification = 0, Before, Only, Unused = 255
+}<li><b>GUIProfile</b> = {DefaultGUI, BrowserViewGUI
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KHTMLPart</b> (parentWidget = 0, widgetname = 0, parent = 0, name = 0, prof = DefaultGUI)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHTMLPart instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>widgetname</td><td>char</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>prof</td><td>KHTMLPart.GUIProfile</td><td>DefaultGUI</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KHTMLPart</b> (view, parent = 0, name = 0, prof = DefaultGUI)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHTMLPart instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>KHTMLView</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>prof</td><td>KHTMLPart.GUIProfile</td><td>DefaultGUI</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeNode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoloadImages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoloadImages</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>backgroundURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseTarget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>begin</b> (url = KURL (), xOffset = 0, yOffset = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td>KURL ()</td></tr>
+<tr><td>xOffset</td><td>int</td><td>0</td></tr>
+<tr><td>yOffset</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>browserExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserExtension)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>browserHostExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserHostExtension)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caretDisplayPolicyNonFocused</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart.CaretDisplayPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caretPositionChanged</b> (node, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>node</td><td>DOM.Node</td><td></td></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completeURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createJavaContext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPart</b> (parentWidget, widgetName, parent, name, mimetype, serviceName, serviceTypes, params)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadOnlyPart)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td></td></tr>
+<tr><td>widgetName</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+<tr><td>serviceName</td><td>QString</td><td></td></tr>
+<tr><td>serviceTypes</td><td>QStringList</td><td></td></tr>
+<tr><td>params</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentFrame</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadOnlyPart)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QCustomEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopObjectId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dndEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doCloseStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doOpenStream</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doWriteStream</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docCreated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>document</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Document)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>documentSource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableJScript</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableJava</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMetaRefresh</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enablePlugins</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>end</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executeScript</b> (n, script)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>DOM.Node</td><td></td></tr>
+<tr><td>script</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executeScript</b> (script)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>script</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executeScript</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFrame</b> (f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFrameParent</b> (callingPart, f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart) childFrame (khtml.ChildFrame)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>callingPart</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>f</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFramePart</b> (f)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadOnlyPart)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>f</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findText</b> (str, options, parent = 0, findDialog = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>findDialog</td><td>KFindDialog</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTextBegin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTextNext</b> (str, forward, caseSensitive, isRegExp)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+<tr><td>forward</td><td>bool</td><td></td></tr>
+<tr><td>caseSensitive</td><td>bool</td><td></td></tr>
+<tr><td>isRegExp</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTextNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findTextNext</b> (reverse)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reverse</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formNotification</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart.FormNotification)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>formSubmitNotification</b> (action, url, formData, target, contentType, boundary)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>char</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>formData</td><td>QByteArray</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>contentType</td><td>QString</td><td></td></tr>
+<tr><td>boundary</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameExists</b> (frameName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>frameName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>framejScript</b> (framePart)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KJSProxy)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>framePart</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KParts.ReadOnlyPart>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotoAnchor</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiActivateEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.GUIActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasSelection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlDocument</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.HTMLDocument)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>htmlError</b> (errorCode, text, reqUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>errorCode</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>reqUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inProgress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isCaretMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEditable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jScriptEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jScriptInterpreter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>javaContext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>javaEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jsDefaultStatusBarText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jsStatusBarText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlDrawContentsEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMouseDoubleClickEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMouseMoveEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMousePressEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>khtmlMouseReleaseEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>liveConnectExtension</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaRefreshEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextAnchor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nodeActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nodeUnderMouse</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nonSharedNodeUnderMouse</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Node)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onlyLocalReferences</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pageReferrer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paint</b> (a0, a1, a2 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a3 (bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+<tr><td>a1</td><td>QRect</td><td></td></tr>
+<tr><td>a2</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentPart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.PartManager)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginPageQuestionAsked</b> (mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (url, point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>point</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preloadScript</b> (url, script)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>script</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preloadStyleSheet</b> (url, stylesheet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>stylesheet</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevAnchor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>referrer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreState</b> (stream)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stream</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restored</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> (stream)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stream</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scheduleRedirection</b> (delay, url, lockHistory = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>delay</td><td>int</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>lockHistory</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedTextAsHTML</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DOM.Range)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selection</b> (startNode, endNode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>startOffset (long) endOffset (long)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>startNode</td><td>DOM.Node</td><td></td></tr>
+<tr><td>endNode</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveNode</b> (node)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>node</td><td>DOM.Node</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoloadImages</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaretDisplayPolicyNonFocused</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>KHTMLPart.CaretDisplayPolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaretMode</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaretPosition</b> (node, offset, extendSelection = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>node</td><td>DOM.Node</td><td></td></tr>
+<tr><td>offset</td><td>long</td><td></td></tr>
+<tr><td>extendSelection</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaretVisible</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCharset</b> (a0, a1 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDNDEnabled</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEditable</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncoding</b> (name, override = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>override</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFixedFont</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFormNotification</b> (fn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fn</td><td>KHTMLPart.FormNotification</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJSDefaultStatusBarText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJSStatusBarText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJScriptEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJavaEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMetaRefreshEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnlyLocalReferences</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageSecurity</b> (sec)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPluginPageQuestionAsked</b> (mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPluginsEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>DOM.Range</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStandardFont</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatusBarText</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatusMessagesEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuppressedPopupIndicator</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuppressedPopupIndicator</b> (enable, originPart)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+<tr><td>originPart</td><td>KHTMLPart</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLCursor</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QCursor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserStyleSheet</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserStyleSheet</b> (styleSheet)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>styleSheet</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setZoomFactor</b> (percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percent</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showError</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statusMessagesEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopAnimations</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>submitFormProxy</b> (action, url, formData, target, contentType = QString .null, boundary = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>action</td><td>char</td><td></td></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>formData</td><td>QByteArray</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>contentType</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>boundary</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toplevelURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCursor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlSelected</b> (url, button, state, _target, args = KParts .URLArgs ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>button</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+<tr><td>_target</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td>KParts .URLArgs ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>view</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>write</b> (str, len = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>write</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomFactor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/KHTMLSettings.html b/python/pykde/doc/classref/khtml/KHTMLSettings.html
new file mode 100644
index 00000000..731c17b6
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/KHTMLSettings.html
@@ -0,0 +1,318 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHTMLSettings</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHTMLSettings</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHTMLSettings</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>KAnimationAdvice</b> = {KAnimationDisabled, KAnimationLoopOnce, KAnimationEnabled
+}<li><b>KJSWindowFocusPolicy</b> = {KJSWindowFocusAllow, KJSWindowFocusIgnore
+}<li><b>KJSWindowMovePolicy</b> = {KJSWindowMoveAllow, KJSWindowMoveIgnore
+}<li><b>KJSWindowOpenPolicy</b> = {KJSWindowOpenAllow, KJSWindowOpenAsk, KJSWindowOpenDeny, KJSWindowOpenSmart
+}<li><b>KJSWindowResizePolicy</b> = {KJSWindowResizeAllow, KJSWindowResizeIgnore
+}<li><b>KJSWindowStatusPolicy</b> = {KJSWindowStatusAllow, KJSWindowStatusIgnore
+}<li><b>KJavaScriptAdvice</b> = {KJavaScriptDunno, KJavaScriptAccept, KJavaScriptReject
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KHTMLSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHTMLSettings instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KHTMLSettings</b> (other)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHTMLSettings instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>other</td><td>KHTMLSettings</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessKeysEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addAdFilter</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>adviceToStr</b> (_advice)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_advice</td><td>KHTMLSettings.KJavaScriptAdvice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowTabulation</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoLoadImages</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoSpellCheck</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availableFamilies</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changeCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cursiveFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fallbackAccessKeysAssignments</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QPair<QString,QChar>>)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fantasyFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fixedFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>followSystemColors</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hoverLink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (config, reset = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>reset</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAdFilterEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAdFiltered</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAutoDelayedActionsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isBackRightClickEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFormCompletionEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHideAdsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isJavaEnabled</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isJavaScriptDebugEnabled</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isJavaScriptEnabled</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isJavaScriptErrorReportingEnabled</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOpenMiddleClickEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPluginsEnabled</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jsErrorsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jsPopupBlockerPassivePopup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxFormCompletionItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mediumFontSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minFontSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readDomainSettings</b> (config, reset, global, pd_settings)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sansSerifFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serifFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFixedFontName</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJSErrorsEnabled</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJSPopupBlockerPassivePopup</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStdFontName</b> (n)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>n</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>settingsToCSS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showAnimations</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KAnimationAdvice)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>splitDomainAdvice</b> (configStr, domain)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stdFontName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>strToAdvice</b> (_str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KJavaScriptAdvice)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>underlineLink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unfinishedImageFrame</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userStyleSheet</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>vLinkColor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QColor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowFocusPolicy</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KJSWindowFocusPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowMovePolicy</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KJSWindowMovePolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowOpenPolicy</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KJSWindowOpenPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowResizePolicy</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KJSWindowResizePolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowStatusPolicy</b> (hostname = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLSettings.KJSWindowStatusPolicy)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/KHTMLView.html b/python/pykde/doc/classref/khtml/KHTMLView.html
new file mode 100644
index 00000000..62af9fa1
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/KHTMLView.html
@@ -0,0 +1,287 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KHTMLView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KHTMLView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>khtml</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KHTMLView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QScrollView </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KHTMLView</b> (part, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KHTMLView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KHTMLPart</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentsContextMenuEvent</b> (_ce)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ce</td><td>QContextMenuEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayAccessKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doAutoScroll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEnterEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDragEnterEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (p, clipx, clipy, clipw, cliph)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPainter</td><td></td></tr>
+<tr><td>clipx</td><td>int</td><td></td></tr>
+<tr><td>clipy</td><td>int</td><td></td></tr>
+<tr><td>clipw</td><td>int</td><td></td></tr>
+<tr><td>cliph</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawContents</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDropEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findAheadActive</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishedLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusNextPrevChild</b> (next)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>next</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideAccessKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyPressEvent</b> (_ke)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ke</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keyReleaseEvent</b> (_ke)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ke</td><td>QKeyEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>marginWidth</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>part</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KHTMLPart)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' print
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>print_</b> (quick)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' print'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>quick</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>repaintAccessKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHScrollBarMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>ScrollBarMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginHeight</b> (y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMarginWidth</b> (x)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setVScrollBarMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>ScrollBarMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPaletteChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotScrollBarMoved</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timerEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QTimerEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportMouseDoubleClickEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportMouseMoveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportMousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportMouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportResizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewportWheelEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWheelEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>zoomView</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/index.html b/python/pykde/doc/classref/khtml/index.html
new file mode 100644
index 00000000..601c9c1d
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/index.html
@@ -0,0 +1,153 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module khtml</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>khtml Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "khtml-globals.html">khtml Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DOM - DOM.HTMLAreaElement</th></tr>
+<tr ><td><a href="DOM.html">DOM</a></td></tr>
+<tr ><td><a href="DOM.AbstractView.html">DOM.AbstractView</a></td></tr>
+<tr ><td><a href="DOM.Attr.html">DOM.Attr</a></td></tr>
+<tr ><td><a href="DOM.CDATASection.html">DOM.CDATASection</a></td></tr>
+<tr ><td><a href="DOM.CSSCharsetRule.html">DOM.CSSCharsetRule</a></td></tr>
+<tr ><td><a href="DOM.CSSException.html">DOM.CSSException</a></td></tr>
+<tr ><td><a href="DOM.CSSFontFaceRule.html">DOM.CSSFontFaceRule</a></td></tr>
+<tr ><td><a href="DOM.CSSImportRule.html">DOM.CSSImportRule</a></td></tr>
+<tr ><td><a href="DOM.CSSMediaRule.html">DOM.CSSMediaRule</a></td></tr>
+<tr ><td><a href="DOM.CSSPageRule.html">DOM.CSSPageRule</a></td></tr>
+<tr ><td><a href="DOM.CSSPrimitiveValue.html">DOM.CSSPrimitiveValue</a></td></tr>
+<tr ><td><a href="DOM.CSSRule.html">DOM.CSSRule</a></td></tr>
+<tr ><td><a href="DOM.CSSRuleList.html">DOM.CSSRuleList</a></td></tr>
+<tr ><td><a href="DOM.CSSStyleDeclaration.html">DOM.CSSStyleDeclaration</a></td></tr>
+<tr ><td><a href="DOM.CSSStyleRule.html">DOM.CSSStyleRule</a></td></tr>
+<tr ><td><a href="DOM.CSSStyleSheet.html">DOM.CSSStyleSheet</a></td></tr>
+<tr ><td><a href="DOM.CSSUnknownRule.html">DOM.CSSUnknownRule</a></td></tr>
+<tr ><td><a href="DOM.CSSValue.html">DOM.CSSValue</a></td></tr>
+<tr ><td><a href="DOM.CSSValueList.html">DOM.CSSValueList</a></td></tr>
+<tr ><td><a href="DOM.CharacterData.html">DOM.CharacterData</a></td></tr>
+<tr ><td><a href="DOM.Comment.html">DOM.Comment</a></td></tr>
+<tr ><td><a href="DOM.Counter.html">DOM.Counter</a></td></tr>
+<tr ><td><a href="DOM.CustomNodeFilter.html">DOM.CustomNodeFilter</a></td></tr>
+<tr ><td><a href="DOM.DOMException.html">DOM.DOMException</a></td></tr>
+<tr ><td><a href="DOM.DOMImplementation.html">DOM.DOMImplementation</a></td></tr>
+<tr ><td><a href="DOM.DOMString.html">DOM.DOMString</a></td></tr>
+<tr ><td><a href="DOM.Document.html">DOM.Document</a></td></tr>
+<tr ><td><a href="DOM.DocumentFragment.html">DOM.DocumentFragment</a></td></tr>
+<tr ><td><a href="DOM.DocumentStyle.html">DOM.DocumentStyle</a></td></tr>
+<tr ><td><a href="DOM.DocumentType.html">DOM.DocumentType</a></td></tr>
+<tr ><td><a href="DOM.DomShared.html">DOM.DomShared</a></td></tr>
+<tr ><td><a href="DOM.Element.html">DOM.Element</a></td></tr>
+<tr ><td><a href="DOM.Entity.html">DOM.Entity</a></td></tr>
+<tr ><td><a href="DOM.EntityReference.html">DOM.EntityReference</a></td></tr>
+<tr ><td><a href="DOM.Event.html">DOM.Event</a></td></tr>
+<tr ><td><a href="DOM.EventException.html">DOM.EventException</a></td></tr>
+<tr ><td><a href="DOM.EventListener.html">DOM.EventListener</a></td></tr>
+<tr ><td><a href="DOM.HTMLAnchorElement.html">DOM.HTMLAnchorElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLAppletElement.html">DOM.HTMLAppletElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLAreaElement.html">DOM.HTMLAreaElement</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DOM.HTMLBRElement - DOM.HTMLParagraphElement</th></tr>
+<tr ><td><a href="DOM.HTMLBRElement.html">DOM.HTMLBRElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLBaseElement.html">DOM.HTMLBaseElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLBaseFontElement.html">DOM.HTMLBaseFontElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLBlockquoteElement.html">DOM.HTMLBlockquoteElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLBodyElement.html">DOM.HTMLBodyElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLButtonElement.html">DOM.HTMLButtonElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLCollection.html">DOM.HTMLCollection</a></td></tr>
+<tr ><td><a href="DOM.HTMLDListElement.html">DOM.HTMLDListElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLDirectoryElement.html">DOM.HTMLDirectoryElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLDivElement.html">DOM.HTMLDivElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLDocument.html">DOM.HTMLDocument</a></td></tr>
+<tr ><td><a href="DOM.HTMLElement.html">DOM.HTMLElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLFieldSetElement.html">DOM.HTMLFieldSetElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLFontElement.html">DOM.HTMLFontElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLFormElement.html">DOM.HTMLFormElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLFrameElement.html">DOM.HTMLFrameElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLFrameSetElement.html">DOM.HTMLFrameSetElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLHRElement.html">DOM.HTMLHRElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLHeadElement.html">DOM.HTMLHeadElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLHeadingElement.html">DOM.HTMLHeadingElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLHtmlElement.html">DOM.HTMLHtmlElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLIFrameElement.html">DOM.HTMLIFrameElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLImageElement.html">DOM.HTMLImageElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLInputElement.html">DOM.HTMLInputElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLIsIndexElement.html">DOM.HTMLIsIndexElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLLIElement.html">DOM.HTMLLIElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLLabelElement.html">DOM.HTMLLabelElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLLayerElement.html">DOM.HTMLLayerElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLLegendElement.html">DOM.HTMLLegendElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLLinkElement.html">DOM.HTMLLinkElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLMapElement.html">DOM.HTMLMapElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLMenuElement.html">DOM.HTMLMenuElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLMetaElement.html">DOM.HTMLMetaElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLModElement.html">DOM.HTMLModElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLOListElement.html">DOM.HTMLOListElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLObjectElement.html">DOM.HTMLObjectElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLOptGroupElement.html">DOM.HTMLOptGroupElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLOptionElement.html">DOM.HTMLOptionElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLParagraphElement.html">DOM.HTMLParagraphElement</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>DOM.HTMLParamElement - KHTMLView</th></tr>
+<tr ><td><a href="DOM.HTMLParamElement.html">DOM.HTMLParamElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLPreElement.html">DOM.HTMLPreElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLQuoteElement.html">DOM.HTMLQuoteElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLScriptElement.html">DOM.HTMLScriptElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLSelectElement.html">DOM.HTMLSelectElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLStyleElement.html">DOM.HTMLStyleElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableCaptionElement.html">DOM.HTMLTableCaptionElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableCellElement.html">DOM.HTMLTableCellElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableColElement.html">DOM.HTMLTableColElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableElement.html">DOM.HTMLTableElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableRowElement.html">DOM.HTMLTableRowElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTableSectionElement.html">DOM.HTMLTableSectionElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTextAreaElement.html">DOM.HTMLTextAreaElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLTitleElement.html">DOM.HTMLTitleElement</a></td></tr>
+<tr ><td><a href="DOM.HTMLUListElement.html">DOM.HTMLUListElement</a></td></tr>
+<tr ><td><a href="DOM.LinkStyle.html">DOM.LinkStyle</a></td></tr>
+<tr ><td><a href="DOM.MediaList.html">DOM.MediaList</a></td></tr>
+<tr ><td><a href="DOM.MouseEvent.html">DOM.MouseEvent</a></td></tr>
+<tr ><td><a href="DOM.MutationEvent.html">DOM.MutationEvent</a></td></tr>
+<tr ><td><a href="DOM.NamedNodeMap.html">DOM.NamedNodeMap</a></td></tr>
+<tr ><td><a href="DOM.Node.html">DOM.Node</a></td></tr>
+<tr ><td><a href="DOM.NodeFilter.html">DOM.NodeFilter</a></td></tr>
+<tr ><td><a href="DOM.NodeIterator.html">DOM.NodeIterator</a></td></tr>
+<tr ><td><a href="DOM.NodeList.html">DOM.NodeList</a></td></tr>
+<tr ><td><a href="DOM.Notation.html">DOM.Notation</a></td></tr>
+<tr ><td><a href="DOM.ProcessingInstruction.html">DOM.ProcessingInstruction</a></td></tr>
+<tr ><td><a href="DOM.RGBColor.html">DOM.RGBColor</a></td></tr>
+<tr ><td><a href="DOM.Range.html">DOM.Range</a></td></tr>
+<tr ><td><a href="DOM.RangeException.html">DOM.RangeException</a></td></tr>
+<tr ><td><a href="DOM.Rect.html">DOM.Rect</a></td></tr>
+<tr ><td><a href="DOM.StyleSheet.html">DOM.StyleSheet</a></td></tr>
+<tr ><td><a href="DOM.StyleSheetList.html">DOM.StyleSheetList</a></td></tr>
+<tr ><td><a href="DOM.Text.html">DOM.Text</a></td></tr>
+<tr ><td><a href="DOM.TextEvent.html">DOM.TextEvent</a></td></tr>
+<tr ><td><a href="DOM.TreeWalker.html">DOM.TreeWalker</a></td></tr>
+<tr ><td><a href="DOM.UIEvent.html">DOM.UIEvent</a></td></tr>
+<tr ><td><a href="KHTMLPart.html">KHTMLPart</a></td></tr>
+<tr ><td><a href="KHTMLSettings.html">KHTMLSettings</a></td></tr>
+<tr ><td><a href="KHTMLView.html">KHTMLView</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/khtml/khtml-globals.html b/python/pykde/doc/classref/khtml/khtml-globals.html
new file mode 100644
index 00000000..817eb1ea
--- /dev/null
+++ b/python/pykde/doc/classref/khtml/khtml-globals.html
@@ -0,0 +1,28 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>khtml globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>khtml Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">khtml Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KACL.html b/python/pykde/doc/classref/kio/KACL.html
new file mode 100644
index 00000000..7188e62c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KACL.html
@@ -0,0 +1,209 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KACL</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KACL</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KACL</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KACL</b> (aclString)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KACL instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aclString</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KACL</b> (rhs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KACL instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rhs</td><td>KACL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KACL</b> (basicPermissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KACL instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>basicPermissions</td><td>mode_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KACL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KACL instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allGroupPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ACLGroupPermissionsList)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allUserPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ACLUserPermissionsList)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>asString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>basePermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(mode_t)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExtended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maskPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort) exists (bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>namedGroupPermissions</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort) exists (bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>namedUserPermissions</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort) exists (bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>othersPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ownerPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>owningGroupPermissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setACL</b> (aclStr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>aclStr</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllGroupPermissions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ACLGroupPermissionsList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllUserPermissions</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>ACLUserPermissionsList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaskPermissions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNamedGroupPermissions</b> (name, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNamedUserPermissions</b> (name, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOthersPermissions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOwnerPermissions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOwningGroupPermissions</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KACL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KACL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KAr.html b/python/pykde/doc/classref/kio/KAr.html
new file mode 100644
index 00000000..ee776e4f
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KAr.html
@@ -0,0 +1,104 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAr</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAr</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAr</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchive </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAr</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAr instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KAr</b> (dev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAr instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeArchive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doneWriting</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openArchive</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KArchive.html b/python/pykde/doc/classref/kio/KArchive.html
new file mode 100644
index 00000000..99669d7f
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KArchive.html
@@ -0,0 +1,288 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KArchive</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KArchive</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KArchive <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KArchive</b> (dev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KArchive instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addLocalDirectory</b> (path, destName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>destName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addLocalFile</b> (fileName, destName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>destName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeArchive</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeSucceeded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KArchiveDirectory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doneWriting</b> (size) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findOrCreate</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KArchiveDirectory)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOpened</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openArchive</b> (mode) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting_impl</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KArchiveDirectory)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDevice</b> (dev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRootDir</b> (rootDir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rootDir</td><td>KArchiveDirectory</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeData</b> (data, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeData_impl</b> (data, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir_impl</b> (name, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeFile</b> (name, user, group, size, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeFile</b> (name, user, group, size, perm, atime, mtime, ctime, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeFile_impl</b> (name, user, group, size, perm, atime, mtime, ctime, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink_impl</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KArchive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KArchiveDirectory.html b/python/pykde/doc/classref/kio/KArchiveDirectory.html
new file mode 100644
index 00000000..fe68485a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KArchiveDirectory.html
@@ -0,0 +1,79 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KArchiveDirectory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KArchiveDirectory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KArchiveDirectory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchiveEntry </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KArchiveDirectory</b> (archive, name, access, date, user, group, symlink)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KArchiveDirectory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>archive</td><td>KArchive</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>access</td><td>int</td><td></td></tr>
+<tr><td>date</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>symlink</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addEntry</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KArchiveEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyTo</b> (dest, recursive = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dest</td><td>QString</td><td></td></tr>
+<tr><td>recursive</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entry</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KArchiveEntry)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KArchiveEntry.html b/python/pykde/doc/classref/kio/KArchiveEntry.html
new file mode 100644
index 00000000..d4a40e44
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KArchiveEntry.html
@@ -0,0 +1,83 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KArchiveEntry</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KArchiveEntry</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KArchiveEntry</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KArchiveEntry</b> (archive, name, access, date, user, group, symlink)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KArchiveEntry instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>archive</td><td>KArchive</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>access</td><td>int</td><td></td></tr>
+<tr><td>date</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>symlink</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>archive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KArchive)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>date</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>datetime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(mode_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symlink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KArchiveFile.html b/python/pykde/doc/classref/kio/KArchiveFile.html
new file mode 100644
index 00000000..6fcca35e
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KArchiveFile.html
@@ -0,0 +1,84 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KArchiveFile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KArchiveFile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KArchiveFile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchiveEntry </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KArchiveFile</b> (archive, name, access, date, user, group, symlink, pos, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KArchiveFile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>archive</td><td>KArchive</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>access</td><td>int</td><td></td></tr>
+<tr><td>date</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>symlink</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>int</td><td></td></tr>
+<tr><td>size</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyTo</b> (dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dest</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>position</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KAutoMount.html b/python/pykde/doc/classref/kio/KAutoMount.html
new file mode 100644
index 00000000..ad7d6507
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KAutoMount.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAutoMount</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAutoMount</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAutoMount</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAutoMount</b> (readonly, format, device, mountpoint, desktopFile, show_filemanager_window = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAutoMount instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>readonly</td><td>bool</td><td></td></tr>
+<tr><td>format</td><td>QString</td><td></td></tr>
+<tr><td>device</td><td>QString</td><td></td></tr>
+<tr><td>mountpoint</td><td>QString</td><td></td></tr>
+<tr><td>desktopFile</td><td>QString</td><td></td></tr>
+<tr><td>show_filemanager_window</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KAutoMount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KAutoUnmount.html b/python/pykde/doc/classref/kio/KAutoUnmount.html
new file mode 100644
index 00000000..6c2d5941
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KAutoUnmount.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KAutoUnmount</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KAutoUnmount</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KAutoUnmount</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KAutoUnmount</b> (mountpoint, desktopFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KAutoUnmount instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mountpoint</td><td>QString</td><td></td></tr>
+<tr><td>desktopFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KAutoUnmount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDCOPServiceStarter.html b/python/pykde/doc/classref/kio/KDCOPServiceStarter.html
new file mode 100644
index 00000000..da9e6b6a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDCOPServiceStarter.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDCOPServiceStarter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDCOPServiceStarter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDCOPServiceStarter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDCOPServiceStarter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDCOPServiceStarter instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findServiceFor</b> (serviceType, constraint = QString .null, preferences = QString .null, error = 0, dcopService = 0, flags = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>constraint</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>preferences</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>error</td><td>QString</td><td>0</td></tr>
+<tr><td>dcopService</td><td>QCString</td><td>0</td></tr>
+<tr><td>flags</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDCOPServiceStarter)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startServiceFor</b> (serviceType, constraint = QString .null, preferences = QString .null, error = 0, dcopService = 0, flags = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>constraint</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>preferences</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>error</td><td>QString</td><td>0</td></tr>
+<tr><td>dcopService</td><td>QCString</td><td>0</td></tr>
+<tr><td>flags</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KDCOPServiceStarter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDEDesktopMimeType.Service.html b/python/pykde/doc/classref/kio/KDEDesktopMimeType.Service.html
new file mode 100644
index 00000000..ece5ff0b
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDEDesktopMimeType.Service.html
@@ -0,0 +1,56 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDEDesktopMimeType.Service</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDEDesktopMimeType.Service</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDEDesktopMimeType.Service</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Service instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_display</td><td>bool</td></tr>
+<tr><td>m_strExec</td><td>QString</td></tr>
+<tr><td>m_strIcon</td><td>QString</td></tr>
+<tr><td>m_strName</td><td>QString</td></tr>
+<tr><td>m_type</td><td>KDEDesktopMimeType::ServiceType</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDEDesktopMimeType.html b/python/pykde/doc/classref/kio/KDEDesktopMimeType.html
new file mode 100644
index 00000000..cbb4b708
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDEDesktopMimeType.html
@@ -0,0 +1,196 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDEDesktopMimeType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDEDesktopMimeType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDEDesktopMimeType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMimeType </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ServiceType</b> = {ST_MOUNT, ST_UNMOUNT, ST_USER_DEFINED
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDEDesktopMimeType</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDEDesktopMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDEDesktopMimeType</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDEDesktopMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>builtinServices</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KDEDesktopMimeType.Service>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executeService</b> (path, service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>service</td><td>KDEDesktopMimeType.Service</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>executeService</b> (urls, service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>service</td><td>KDEDesktopMimeType.Service</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (_url, _group, _force_size = 0, _state = 0, _path = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>_force_size</td><td>int</td><td>0</td></tr>
+<tr><td>_state</td><td>int</td><td>0</td></tr>
+<tr><td>_path</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (group, force_size, state, path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>force_size</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>int</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runApplication</b> (_url, _serviceFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_serviceFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runFSDevice</b> (_url, cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>cfg</td><td>KSimpleConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runLink</b> (_url, cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>cfg</td><td>KSimpleConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runMimeType</b> (_url, cfg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>cfg</td><td>KSimpleConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userDefinedServices</b> (path, bLocalFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KDEDesktopMimeType.Service>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>bLocalFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userDefinedServices</b> (path, config, bLocalFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KDEDesktopMimeType.Service>)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>bLocalFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userDefinedServices</b> (path, config, bLocalFiles, file_list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KDEDesktopMimeType.Service>)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>bLocalFiles</td><td>bool</td><td></td></tr>
+<tr><td>file_list</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDataTool.html b/python/pykde/doc/classref/kio/KDataTool.html
new file mode 100644
index 00000000..5dc43dd8
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDataTool.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDataTool</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDataTool</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDataTool <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDataTool</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDataTool instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (command, data, datatype, mimetype) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>command</td><td>QString</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+<tr><td>datatype</td><td>QString</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDataToolAction.html b/python/pykde/doc/classref/kio/KDataToolAction.html
new file mode 100644
index 00000000..e290a267
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDataToolAction.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDataToolAction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDataToolAction</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDataToolAction</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KAction </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDataToolAction</b> (text, info, command, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDataToolAction instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>info</td><td>KDataToolInfo</td><td></td></tr>
+<tr><td>command</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataToolActionList</b> (tools, receiver, slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KAction>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>tools</td><td>QValueList<KDataToolInfo></td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotActivated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toolActivated</b> (info, command)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KDataToolInfo</td><td></td></tr>
+<tr><td>command</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDataToolInfo.html b/python/pykde/doc/classref/kio/KDataToolInfo.html
new file mode 100644
index 00000000..d4cc91d4
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDataToolInfo.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDataToolInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDataToolInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDataToolInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDataToolInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDataToolInfo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDataToolInfo</b> (service, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDataToolInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>service</td><td>KService.Ptr</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDataToolInfo</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDataToolInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KDataToolInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>commands</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTool</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDataTool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReadOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>miniIcon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>query</b> (datatype, mimetype, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KDataToolInfo>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>datatype</td><td>QString</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userCommands</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDirLister.html b/python/pykde/doc/classref/kio/KDirLister.html
new file mode 100644
index 00000000..9945d0eb
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDirLister.html
@@ -0,0 +1,356 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirLister</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirLister</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirLister</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>WhichItems</b> = {AllItems, FilteredItems
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDirLister</b> (_delayedMimeTypes = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirLister instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_delayedMimeTypes</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoErrorHandlingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoUpdate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canceled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canceled</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clearMimeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completed</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteItem</b> (_fileItem)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fileItem</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirOnlyMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directories</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doMimeExcludeFilter</b> (mimeExclude, filters)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeExclude</td><td>QString</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doMimeFilter</b> (mime, filters)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mime</td><td>QString</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doNameFilter</b> (name, filters)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>filters</td><td>QPtrList<QRegExp></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByURL</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleError</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>items</b> (which = FilteredItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>which</td><td>KDirLister.WhichItems</td><td>FilteredItems</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemsFilteredByMime</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemsForDir</b> (dir, which = FilteredItems)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItemList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+<tr><td>which</td><td>KDirLister.WhichItems</td><td>FilteredItems</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mainWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchesFilter</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchesFilter</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchesMimeFilter</b> (mime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mime</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>matchesMimeFilter</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeFilters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nameFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (_url, _keep = 0, _reload = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_keep</td><td>bool</td><td>0</td></tr>
+<tr><td>_reload</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>percent</b> (percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percent</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (oldUrl, newUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldUrl</td><td>KURL</td><td></td></tr>
+<tr><td>newUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>refreshItems</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileItem)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoErrorHandlingEnabled</b> (enable, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoUpdate</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirOnlyMode</b> (dirsOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dirsOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMainWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeExcludeFilter</b> (mimeList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeList</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeFilter</b> (mimeList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeList</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNameFilter</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowingDotFiles</b> (_showDotFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_showDotFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showingDotFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speed</b> (bytes_per_second)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bytes_per_second</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>started</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateDirectory</b> (_dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDirNotify.html b/python/pykde/doc/classref/kio/KDirNotify.html
new file mode 100644
index 00000000..b40fd0d4
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDirNotify.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirNotify</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirNotify</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirNotify <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>FileRenamed</b> (src, dst)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dst</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>FilesAdded</b> (directory) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>directory</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>FilesChanged</b> (fileList) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileList</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>FilesRemoved</b> (fileList) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileList</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KDirNotify</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirNotify instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfaces</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~KDirNotify</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KDirWatch.html b/python/pykde/doc/classref/kio/KDirWatch.html
new file mode 100644
index 00000000..cd9f2441
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KDirWatch.html
@@ -0,0 +1,168 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDirWatch</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDirWatch</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDirWatch</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Method</b> = {FAM, DNotify, Stat, INotify
+}<li><b>Method</b> = {FAM, DNotify, Stat
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KDirWatch</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDirWatch instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addDir</b> (path, watchFiles = 0, recursive = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>watchFiles</td><td>bool</td><td>0</td></tr>
+<tr><td>recursive</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addFile</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>created</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ctime</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleted</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dirty</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalMethod</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDirWatch.Method)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isStopped</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeDir</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeFile</b> (file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restartDirScan</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDirWatch)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCreated</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDeleted</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDirty</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startScan</b> (notify = 0, skippedToo = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>notify</td><td>bool</td><td>0</td></tr>
+<tr><td>skippedToo</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statistics</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopDirScan</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopScan</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KEMailSettings.html b/python/pykde/doc/classref/kio/KEMailSettings.html
new file mode 100644
index 00000000..0cf19bd8
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KEMailSettings.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KEMailSettings</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KEMailSettings</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KEMailSettings</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Extension</b> = {POP3, SMTP, OTHER
+}<li><b>Setting</b> = {ClientProgram, ClientTerminal, RealName, EmailAddress, ReplyToAddress, Organization, OutServer, OutServerLogin, OutServerPass, OutServerType, OutServerCommand, OutServerTLS, InServer, InServerLogin, InServerPass, InServerType, InServerMBXType, InServerTLS
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KEMailSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KEMailSettings instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>currentProfileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultProfileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getExtendedSetting</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getSetting</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KEMailSettings.Setting</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>profiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefault</b> (def)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>def</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtendedSetting</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProfile</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSetting</b> (s, v)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>KEMailSettings.Setting</td><td></td></tr>
+<tr><td>v</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KExecMimeType.html b/python/pykde/doc/classref/kio/KExecMimeType.html
new file mode 100644
index 00000000..a2c3cb63
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KExecMimeType.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KExecMimeType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KExecMimeType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KExecMimeType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMimeType </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KExecMimeType</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KExecMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KExecMimeType</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KExecMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileFilter.html b/python/pykde/doc/classref/kio/KFileFilter.html
new file mode 100644
index 00000000..df1e7ebb
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileFilter.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileFilter <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>passesFilter</b> (item) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileItem.html b/python/pykde/doc/classref/kio/KFileItem.html
new file mode 100644
index 00000000..d12aa2a2
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileItem.html
@@ -0,0 +1,326 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {Unknown
+}</ul>
+<h3>methods</h3><ul>
+<li><b>ACL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KACL)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileItem</b> (_entry, _url, _determineMimeTypeOnDemand = 0, _urlIsDirectory = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_entry</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_determineMimeTypeOnDemand</td><td>bool</td><td>0</td></tr>
+<tr><td>_urlIsDirectory</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileItem</b> (_mode, _permissions, _url, _determineMimeTypeOnDemand = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_mode</td><td>mode_t</td><td></td></tr>
+<tr><td>_permissions</td><td>mode_t</td><td></td></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_determineMimeTypeOnDemand</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileItem</b> (url, mimeType, mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>acceptsDrops</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assign</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cmp</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultACL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KACL)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>determineMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.UDSEntry)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraData</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getStatusBarInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getToolTipText</b> (maxcount = 6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxcount</td><td>int</td><td>6</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasExtendedACL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_determineMimeTypeOnDemand)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_determineMimeTypeOnDemand</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHidden</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLink</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isLocalFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMarked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMimeTypeKnown</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReadable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isWritable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkDest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mark</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaInfo</b> (autoget = 1, what = KFileMetaInfo .Fastest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>autoget</td><td>bool</td><td>1</td></tr>
+<tr><td>what</td><td>int</td><td>KFileMetaInfo .Fastest</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeComment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypePtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(mode_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mostLocalURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL) local (bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> (lowerCase = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lowerCase</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>overlays</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parsePermissions</b> (perm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permissions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(mode_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permissionsString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (_size, _state = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_size</td><td>int</td><td></td></tr>
+<tr><td>_state</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readUDSEntry</b> (_urlIsDirectory)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_urlIsDirectory</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>refresh</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>refreshMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeExtraData</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtraData</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFileMode</b> (m)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m</td><td>mode_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMetaInfo</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KFileMetaInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeType</b> (mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUDSEntry</b> (entry, url, determineMimeTypeOnDemand = 0, urlIsDirectory = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>entry</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>determineMimeTypeOnDemand</td><td>bool</td><td>0</td></tr>
+<tr><td>urlIsDirectory</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t) hasSize (bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>text</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>time</b> (which)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(time_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>which</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>time</b> (which)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(time_t) hasTime (bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>which</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeString</b> (which = KIO .UDS_MODIFICATION_TIME)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>which</td><td>uint</td><td>KIO .UDS_MODIFICATION_TIME</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unmark</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMetaInfo.html b/python/pykde/doc/classref/kio/KFileMetaInfo.html
new file mode 100644
index 00000000..5a403ccf
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMetaInfo.html
@@ -0,0 +1,197 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMetaInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMetaInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMetaInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>What</b> = {Fastest, DontCare, TechnicalInfo, ContentInfo, ExtenedAttr, Thumbnail, Preferred, Everything
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFileMetaInfo</b> (path, mimeType = QString .null, what = Fastest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>what</td><td>uint</td><td>Fastest</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfo</b> (url, mimeType = QString .null, what = Fastest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>what</td><td>uint</td><td>Fastest</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfo</b> (original)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>original</td><td>KFileMetaInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoGroup)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyChanges</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>containsGroup</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editableGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoGroup)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (hint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hint</td><td>Hint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilePlugin)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removedGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveItem</b> (key, preferredGroup = QString .null, createGroup = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>preferredGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>createGroup</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator []</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoGroup),</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMetaInfoGroup.html b/python/pykde/doc/classref/kio/KFileMetaInfoGroup.html
new file mode 100644
index 00000000..613f6d2b
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMetaInfoGroup.html
@@ -0,0 +1,153 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMetaInfoGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMetaInfoGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMetaInfoGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileMetaInfoGroup</b> (name, info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>info</td><td>KFileMimeTypeInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfoGroup</b> (original)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>original</td><td>KFileMetaInfoGroup</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfoGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoGroup instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItem</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendItem</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>item</b> (hint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hint</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removedItems</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAdded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsVariableKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translatedName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator []</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoItem),</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMetaInfoItem.html b/python/pykde/doc/classref/kio/KFileMetaInfoItem.html
new file mode 100644
index 00000000..628034e4
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMetaInfoItem.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMetaInfoItem</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMetaInfoItem</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMetaInfoItem</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileMetaInfoItem</b> (mti, key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mti</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfoItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoItem instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMetaInfoItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfoItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoItem instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isEditable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRemoved</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prefix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAdded</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRemoved</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setValue</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>string</b> (mangle = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mangle</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suffix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translatedKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant.Type)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>value</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMetaInfoProvider.html b/python/pykde/doc/classref/kio/KFileMetaInfoProvider.html
new file mode 100644
index 00000000..df9afade
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMetaInfoProvider.html
@@ -0,0 +1,95 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMetaInfoProvider</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMetaInfoProvider</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMetaInfoProvider</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileMetaInfoProvider</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMetaInfoProvider</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMetaInfoProvider instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypeInfo</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypeInfo</b> (mimeType, protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugin</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilePlugin)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>plugin</b> (mimeType, protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilePlugin)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredGroups</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredKeys</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoProvider)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMimeTypeInfo.GroupInfo.html b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.GroupInfo.html
new file mode 100644
index 00000000..5a6459a5
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.GroupInfo.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMimeTypeInfo.GroupInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMimeTypeInfo.GroupInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMimeTypeInfo.GroupInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>GroupInfo</b> (name, translatedName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a GroupInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>translatedName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemInfo</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.ItemInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsVariableKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translatedName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>variableItemInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.ItemInfo)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMimeTypeInfo.ItemInfo.html b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.ItemInfo.html
new file mode 100644
index 00000000..f465f90a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.ItemInfo.html
@@ -0,0 +1,87 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMimeTypeInfo.ItemInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMimeTypeInfo.ItemInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMimeTypeInfo.ItemInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ItemInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemInfo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ItemInfo</b> (key, translatedKey, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ItemInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>translatedKey</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>QVariant.Type</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attributes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isVariableItem</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>key</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prefix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>string</b> (value, mangle = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>QVariant</td><td></td></tr>
+<tr><td>mangle</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suffix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translatedKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant.Type)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileMimeTypeInfo.html b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.html
new file mode 100644
index 00000000..88b7fec5
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileMimeTypeInfo.html
@@ -0,0 +1,104 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileMimeTypeInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileMimeTypeInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileMimeTypeInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Attributes</b> = {Addable, Removable, Modifiable, Cumulative, Cummulative, Averaged, MultiLine, SqueezeText
+}<li><b>Attributes</b> = {Addable, Removable, Modifiable, Cummulative, Averaged, MultiLine, SqueezeText
+}<li><b>Attributes</b> = {Addable, Removable, Modifiable, Cummulative, Averaged
+}<li><b>Hint</b> = {NoHint, Name, Author, Description, Width, Height, Size, Bitrate, Length, Hidden, Thumbnail
+}<li><b>Unit</b> = {NoUnit, Seconds, MilliSeconds, BitsPerSecond, Pixels, Inches, Centimeters, Bytes, FramesPerSecond, DotsPerInch, BitsPerPixel, Hertz, KiloBytes, Millimeters
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFileMimeTypeInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMimeTypeInfo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFileMimeTypeInfo</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileMimeTypeInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGroupInfo</b> (name, translatedName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.GroupInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>translatedName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createValidator</b> (group, key, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValidator)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>groupInfo</b> (group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.GroupInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedKeys</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>translatedGroups</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_attr</td><td>uint</td></tr>
+<tr><td>m_itemDict</td><td>QDict<ItemInfo></td></tr>
+<tr><td>m_supportedKeys</td><td>QStringList</td></tr>
+<tr><td>m_translatedName</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFilePlugin.html b/python/pykde/doc/classref/kio/KFilePlugin.html
new file mode 100644
index 00000000..9a54b6ff
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFilePlugin.html
@@ -0,0 +1,161 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilePlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilePlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilePlugin <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFilePlugin</b> (parent, name, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilePlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addGroupInfo</b> (info, key, translatedKey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.GroupInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KFileMimeTypeInfo</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>translatedKey</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addItemInfo</b> (gi, key, translatedKey, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo.ItemInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>gi</td><td>KFileMimeTypeInfo.GroupInfo</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>translatedKey</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>QVariant.Type</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addMimeTypeInfo</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMimeTypeInfo)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addVariableInfo</b> (gi, type, attr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>gi</td><td>KFileMimeTypeInfo.GroupInfo</td><td></td></tr>
+<tr><td>type</td><td>QVariant.Type</td><td></td></tr>
+<tr><td>attr</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendGroup</b> (info, key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileMetaInfoGroup)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KFileMetaInfo</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendItem</b> (group, key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KFileMetaInfoGroup</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createValidator</b> (mimeType, group, key, parent, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValidator)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readInfo</b> (info, what = KFileMetaInfo .Fastest) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KFileMetaInfo</td><td></td></tr>
+<tr><td>what</td><td>uint</td><td>KFileMetaInfo .Fastest</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributes</b> (gi, attr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>gi</td><td>KFileMimeTypeInfo.GroupInfo</td><td></td></tr>
+<tr><td>attr</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAttributes</b> (item, attr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>attr</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHint</b> (item, hint)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>hint</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrefix</b> (item, prefix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>prefix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuffix</b> (item, suffix)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>suffix</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUnit</b> (item, unit)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileMimeTypeInfo.ItemInfo</td><td></td></tr>
+<tr><td>unit</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeInfo</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KFileMetaInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileShare.html b/python/pykde/doc/classref/kio/KFileShare.html
new file mode 100644
index 00000000..9bd48440
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileShare.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileShare</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileShare</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileShare</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Authorization</b> = {NotInitialized, ErrorNotFound, Authorized, UserNotAllowed
+}<li><b>ShareMode</b> = {Simple, Advanced
+}</ul>
+<h3>methods</h3><ul>
+<li><b>authorization</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileShare.Authorization)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileShareGroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findExe</b> (exeName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>exeName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectoryShared</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRestricted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nfsEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readShareList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sambaEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShared</b> (path, shared)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>shared</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShared</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shareMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileShare.ShareMode)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFileSharePrivate.html b/python/pykde/doc/classref/kio/KFileSharePrivate.html
new file mode 100644
index 00000000..4aadacbd
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFileSharePrivate.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFileSharePrivate</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFileSharePrivate</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFileSharePrivate</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFileSharePrivate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFileSharePrivate instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFileSharePrivate)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFileChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>_self</td><td>KFileSharePrivate*</td></tr>
+<tr><td>m_watchFile</td><td>KDirWatch*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFilterBase.html b/python/pykde/doc/classref/kio/KFilterBase.html
new file mode 100644
index 00000000..70f04d26
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFilterBase.html
@@ -0,0 +1,141 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilterBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilterBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilterBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Result</b> = {OK, END, ERROR
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFilterBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilterBase instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compress</b> (finish) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilterBase.Result)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>finish</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFilterByFileName</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilterBase)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFilterByMimeType</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFilterBase)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inBufferAvailable</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inBufferEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (mode) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outBufferAvailable</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outBufferFull</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readHeader</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDevice</b> (dev, autodelete = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+<tr><td>autodelete</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInBuffer</b> (data, size) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOutBuffer</b> (data, maxlen) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>maxlen</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>terminate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uncompress</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Result)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeHeader</b> (filename) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFilterDev.html b/python/pykde/doc/classref/kio/KFilterDev.html
new file mode 100644
index 00000000..d394f91e
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFilterDev.html
@@ -0,0 +1,149 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFilterDev</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFilterDev</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFilterDev</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QIODevice </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFilterDev</b> (filter, autoDeleteFilterBase)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFilterDev instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>KFilterBase</td><td></td></tr>
+<tr><td>autoDeleteFilterBase</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>at</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice.Offset)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>at</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QIODevice.Offset</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>atEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createFilterDevice</b> (base, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>base</td><td>KFilterBase</td><td></td></tr>
+<tr><td>file</td><td>QFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> (inDevice, mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>inDevice</td><td>QIODevice</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> (inDevice, mimetype, autoDeleteInDevice)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>inDevice</td><td>QIODevice</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+<tr><td>autoDeleteInDevice</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deviceForFile</b> (fileName, mimetype = QString .null, forceFilter = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>forceFilter</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flush</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putch</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readBlock</b> (data, maxlen)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrigFileName</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSkipHeaders</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>size</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice.Offset)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ungetch</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeBlock</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeBlock</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+<tr><td>a1</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KFolderType.html b/python/pykde/doc/classref/kio/KFolderType.html
new file mode 100644
index 00000000..e8a80a83
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KFolderType.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFolderType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFolderType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFolderType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMimeType </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KFolderType</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFolderType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFolderType</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFolderType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>QString</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (_url, _is_local)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_is_local</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.AuthInfo.html b/python/pykde/doc/classref/kio/KIO.AuthInfo.html
new file mode 100644
index 00000000..9d890ebc
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.AuthInfo.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.AuthInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.AuthInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.AuthInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AuthInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AuthInfo instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>AuthInfo</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a AuthInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModified</b> (flag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flag</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>caption</td><td>QString</td></tr>
+<tr><td>comment</td><td>QString</td></tr>
+<tr><td>commentLabel</td><td>QString</td></tr>
+<tr><td>digestInfo</td><td>QString</td></tr>
+<tr><td>keepPassword</td><td>bool</td></tr>
+<tr><td>password</td><td>QString</td></tr>
+<tr><td>prompt</td><td>QString</td></tr>
+<tr><td>readOnly</td><td>bool</td></tr>
+<tr><td>realmValue</td><td>QString</td></tr>
+<tr><td>url</td><td>KURL</td></tr>
+<tr><td>username</td><td>QString</td></tr>
+<tr><td>verifyPath</td><td>bool</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.ChmodJob.html b/python/pykde/doc/classref/kio/KIO.ChmodJob.html
new file mode 100644
index 00000000..bfb8c067
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.ChmodJob.html
@@ -0,0 +1,72 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.ChmodJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.ChmodJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.ChmodJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ChmodJob</b> (lstItems, permissions, mask, newOwner, newGroup, recursive, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ChmodJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lstItems</td><td>KFileItemList</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>mask</td><td>int</td><td></td></tr>
+<tr><td>newOwner</td><td>int</td><td></td></tr>
+<tr><td>newGroup</td><td>int</td><td></td></tr>
+<tr><td>recursive</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chmodNextFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEntries</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.Connection.html b/python/pykde/doc/classref/kio/KIO.Connection.html
new file mode 100644
index 00000000..7937064a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.Connection.html
@@ -0,0 +1,105 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.Connection</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.Connection</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.Connection</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Connection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Connection instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (receiver = 0, member = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>receiver</td><td>QObject</td><td>0</td></tr>
+<tr><td>member</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dequeue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fd_from</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fd_to</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (sock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sock</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (fd_in, fd_out)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fd_in</td><td>int</td><td></td></tr>
+<tr><td>fd_out</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inited</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>read</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>send</b> (cmd, arr = QByteArray ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>int</td><td></td></tr>
+<tr><td>arr</td><td>QByteArray</td><td>QByteArray ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendnow</b> (_cmd, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_cmd</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspend</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.CopyInfo.html b/python/pykde/doc/classref/kio/KIO.CopyInfo.html
new file mode 100644
index 00000000..6e7678f8
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.CopyInfo.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.CopyInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.CopyInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.CopyInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>ctime</td><td>time_t</td></tr>
+<tr><td>linkDest</td><td>QString</td></tr>
+<tr><td>mtime</td><td>time_t</td></tr>
+<tr><td>permissions</td><td>mode_t</td></tr>
+<tr><td>size</td><td>off_t</td></tr>
+<tr><td>uDest</td><td>KURL</td></tr>
+<tr><td>uSource</td><td>KURL</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.CopyJob.html b/python/pykde/doc/classref/kio/KIO.CopyJob.html
new file mode 100644
index 00000000..b772133f
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.CopyJob.html
@@ -0,0 +1,276 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.CopyJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.CopyJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.CopyJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>CopyMode</b> = {Copy, Move, Link
+}</ul>
+<h3>methods</h3><ul>
+<li><b>CopyJob</b> (src, dest, mode, asMethod, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a CopyJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>mode</td><td>KIO.CopyJob.CopyMode</td><td></td></tr>
+<tr><td>asMethod</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutToCreate</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>QValueList<KIO.CopyInfo></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyNextFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copying</b> (job, from, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyingDone</b> (job, from, to, directory, renamed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+<tr><td>directory</td><td>bool</td><td></td></tr>
+<tr><td>renamed</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyingLinkDone</b> (job, from, target, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createNextDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>creatingDir</b> (job, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteNextDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>destURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linking</b> (job, target, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moving</b> (job, from, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>renamed</b> (job, from, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultPermissions</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInteractive</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNextDirAttribute</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>skip</b> (sourceURL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sourceURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEntries</b> (a0, list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (a0, data_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data_size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultConflictCopyingFiles</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultConflictCreatingDirs</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultCopyingFiles</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultCreatingDirs</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultDeletingDirs</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultRenaming</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResultStating</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (a0, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>srcURLs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startListing</b> (src)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statCurrentSrc</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statNextSrc</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.DavJob.html b/python/pykde/doc/classref/kio/KIO.DavJob.html
new file mode 100644
index 00000000..4e1841c1
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.DavJob.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.DavJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.DavJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.DavJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.TransferJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DavJob</b> (url, method, request, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DavJob instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>method</td><td>int</td><td></td></tr>
+<tr><td>request</td><td>QString</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>response</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDomDocument)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.DefaultProgress.html b/python/pykde/doc/classref/kio/KIO.DefaultProgress.html
new file mode 100644
index 00000000..d93be7e3
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.DefaultProgress.html
@@ -0,0 +1,223 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.DefaultProgress</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.DefaultProgress</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.DefaultProgress</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.ProgressBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DefaultProgress</b> (showNow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DefaultProgress instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showNow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>DefaultProgress</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DefaultProgress instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkDestination</b> (dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keepOpen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makePercentString</b> (percent, totalSize, totalFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+<tr><td>totalSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>totalFiles</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDestVisible</b> (visible)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>visible</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showTotals</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCanResume</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClean</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCopying</b> (a0, src, dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCreatingDir</b> (a0, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDeleting</b> (a0, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInfoMessage</b> (job, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMounting</b> (a0, dev, point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dev</td><td>QString</td><td></td></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMoving</b> (a0, src, dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPercent</b> (a0, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedDirs</b> (a0, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedFiles</b> (a0, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (a0, bytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>bytes</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (a0, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStating</b> (a0, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalDirs</b> (a0, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalFiles</b> (a0, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (a0, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTransferring</b> (a0, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUnmounting</b> (a0, point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.DeleteJob.html b/python/pykde/doc/classref/kio/KIO.DeleteJob.html
new file mode 100644
index 00000000..6682f91c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.DeleteJob.html
@@ -0,0 +1,125 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.DeleteJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.DeleteJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.DeleteJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DeleteJob</b> (src, shred, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DeleteJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>shred</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteNextDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteNextFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleting</b> (job, file)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>file</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEntries</b> (a0, list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (a0, data_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data_size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReport</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startNextJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urls</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.DirectCopyJob.html b/python/pykde/doc/classref/kio/KIO.DirectCopyJob.html
new file mode 100644
index 00000000..0b4e1645
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.DirectCopyJob.html
@@ -0,0 +1,66 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.DirectCopyJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.DirectCopyJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.DirectCopyJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SimpleJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DirectCopyJob</b> (url, command, packedArgs, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DirectCopyJob instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canResume</b> (job, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.FileCopyJob.html b/python/pykde/doc/classref/kio/KIO.FileCopyJob.html
new file mode 100644
index 00000000..418e02d7
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.FileCopyJob.html
@@ -0,0 +1,152 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.FileCopyJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.FileCopyJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.FileCopyJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>FileCopyJob</b> (src, dest, permissions, move, overwrite, resume, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a FileCopyJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>move</td><td>bool</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>resume</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectSubjob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>destURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModificationTime</b> (mtime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSourceSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSourceSize64</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCanResume</b> (job, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotData</b> (a0, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDataReq</b> (a0, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPercent</b> (job, pct)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>pct</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>srcURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startCopyJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startCopyJob</b> (slave_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startDataPump</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startRenameJob</b> (slave_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.ForwardingSlaveBase.html b/python/pykde/doc/classref/kio/KIO.ForwardingSlaveBase.html
new file mode 100644
index 00000000..2d128f07
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.ForwardingSlaveBase.html
@@ -0,0 +1,166 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.ForwardingSlaveBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.ForwardingSlaveBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.ForwardingSlaveBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, KIO.SlaveBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ForwardingSlaveBase</b> (protocol, poolSocket, appSocket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ForwardingSlaveBase instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QCString</td><td></td></tr>
+<tr><td>poolSocket</td><td>QCString</td><td></td></tr>
+<tr><td>appSocket</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chmod</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, dest, permissions, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (url, isfile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' del'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>isfile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listDir</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareUDSEntry</b> (entry, listing = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>entry</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>listing</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>put</b> (url, permissions, overwrite, resume)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>resume</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rename</b> (src, dest, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestedURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rewriteURL</b> (url, newURL) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>newURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symlink</b> (target, dest, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.Job.html b/python/pykde/doc/classref/kio/KIO.Job.html
new file mode 100644
index 00000000..316aa499
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.Job.html
@@ -0,0 +1,307 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.Job</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.Job</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.Job</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Job</b> (showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Job instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addMetaData</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addMetaData</b> (values)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>values</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addSubjob</b> (job, inheritMetaData = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>inheritMetaData</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canceled</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connected</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detailedErrorStrings</b> (reqUrl = 0, method = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reqUrl</td><td>KURL</td><td>0</td></tr>
+<tr><td>method</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitPercent</b> (processedSize, totalSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>processedSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>totalSize</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitSpeed</b> (speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraFlags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraFlags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int),</i></td></tr>
+<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.2.2</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getProcessedSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (job, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAutoErrorHandlingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAutoWarningHandlingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isInteractive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kill</b> (quietly = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>quietly</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mergeMetaData</b> (values)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>values</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outgoingMetaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Job)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>percent</b> (job, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progressId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryMetaData</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeSubjob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeSubjob</b> (job, mergeMetaData, emitResultIfLast)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>mergeMetaData</td><td>bool</td><td></td></tr>
+<tr><td>emitResultIfLast</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>result</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoErrorHandlingEnabled</b> (enable, parentWidget = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoWarningHandlingEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInteractive</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMetaData</b> (metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setParentJob</b> (parentJob)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentJob</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProcessedSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindow</b> (window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showErrorDialog</b> (parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInfoMessage</b> (job, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (job, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeedTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speed</b> (job, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warning</b> (job, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>window</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.ListJob.html b/python/pykde/doc/classref/kio/KIO.ListJob.html
new file mode 100644
index 00000000..eceb6116
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.ListJob.html
@@ -0,0 +1,126 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.ListJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.ListJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.ListJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SimpleJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ListJob</b> (url, showProgressInfo, recursive = 0, prefix = QString .null, includeHidden = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ListJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+<tr><td>recursive</td><td>bool</td><td>0</td></tr>
+<tr><td>prefix</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>includeHidden</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> (job, list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotEntries</b> (subjob, list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>subjob</td><td>KIO.Job</td><td></td></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanentRedirection</b> (job, fromUrl, toUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>fromUrl</td><td>KURL</td><td></td></tr>
+<tr><td>toUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirectionURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.4.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUnrestricted</b> (unrestricted)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>unrestricted</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotListEntries</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMetaData</b> (_metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedirection</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.MetaInfoJob.html b/python/pykde/doc/classref/kio/KIO.MetaInfoJob.html
new file mode 100644
index 00000000..1d5ae907
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.MetaInfoJob.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.MetaInfoJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.MetaInfoJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.MetaInfoJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MetaInfoJob</b> (items, deleteItems = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MetaInfoJob instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>deleteItems</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availablePlugins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>failed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getMetaInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotMetaInfo</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.MimetypeJob.html b/python/pykde/doc/classref/kio/KIO.MimetypeJob.html
new file mode 100644
index 00000000..aa3e4807
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.MimetypeJob.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.MimetypeJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.MimetypeJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.MimetypeJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.TransferJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MimetypeJob</b> (url, command, packedArgs, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MimetypeJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.MkdirJob.html b/python/pykde/doc/classref/kio/KIO.MkdirJob.html
new file mode 100644
index 00000000..0f3d44ea
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.MkdirJob.html
@@ -0,0 +1,94 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.MkdirJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.MkdirJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.MkdirJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SimpleJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MkdirJob</b> (url, command, packedArgs, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MkdirJob instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanentRedirection</b> (job, fromUrl, toUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>fromUrl</td><td>KURL</td><td></td></tr>
+<tr><td>toUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedirection</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.MultiGetJob.html b/python/pykde/doc/classref/kio/KIO.MultiGetJob.html
new file mode 100644
index 00000000..b6cb0aa8
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.MultiGetJob.html
@@ -0,0 +1,103 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.MultiGetJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.MultiGetJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.MultiGetJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.TransferJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MultiGetJob</b> (url, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MultiGetJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>long</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (id, url, metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>long</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (id, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>long</td><td></td></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>result</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMimetype</b> (mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedirection</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.NetAccess.html b/python/pykde/doc/classref/kio/KIO.NetAccess.html
new file mode 100644
index 00000000..dbe03043
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.NetAccess.html
@@ -0,0 +1,323 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.NetAccess</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.NetAccess</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.NetAccess</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>NetAccess</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NetAccess instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, target, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, target)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (url, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>Renamed: was <i>' del'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>Renamed: was <i>' del'</i> in C++</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dircopy</b> (src, target, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dircopy</b> (src, target)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dircopy</b> (src, target, window = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>download</b> (src, target, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>download</b> (src, target)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> (url, source, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>source</td><td>bool</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> (url, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> (url, source)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>source</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file_copy</b> (src, dest, permissions = -1, overwrite = 0, resume = 0, window = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+<tr><td>overwrite</td><td>bool</td><td>0</td></tr>
+<tr><td>resume</td><td>bool</td><td>0</td></tr>
+<tr><td>window</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file_move</b> (src, target, permissions = -1, overwrite = 0, resume = 0, window = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+<tr><td>overwrite</td><td>bool</td><td>0</td></tr>
+<tr><td>resume</td><td>bool</td><td>0</td></tr>
+<tr><td>window</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fish_execute</b> (url, command, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>QString</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastError</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastErrorString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (url, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (url, window, permissions = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (url, permissions = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mostLocalURL</b> (url, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>move</b> (src, target, window = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>move</b> (src, target, window = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeTempFile</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url, entry, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>entry</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url, entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>entry</td><td>KIO.UDSEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>synchronousRun</b> (job, window, data = 0, finalURL = 0, metaData = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.1 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td>0</td></tr>
+<tr><td>finalURL</td><td>KURL</td><td>0</td></tr>
+<tr><td>metaData</td><td>QMap<QString,QString></td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upload</b> (src, target, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>upload</b> (src, target)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~NetAccess</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.NetRC.AutoLogin.html b/python/pykde/doc/classref/kio/KIO.NetRC.AutoLogin.html
new file mode 100644
index 00000000..a7ee15af
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.NetRC.AutoLogin.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.NetRC.AutoLogin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.NetRC.AutoLogin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.NetRC.AutoLogin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>login</td><td>QString</td></tr>
+<tr><td>macdef</td><td>KStringListMap</td></tr>
+<tr><td>machine</td><td>QString</td></tr>
+<tr><td>password</td><td>QString</td></tr>
+<tr><td>type</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.NetRC.html b/python/pykde/doc/classref/kio/KIO.NetRC.html
new file mode 100644
index 00000000..6f38e58d
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.NetRC.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.NetRC</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.NetRC</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.NetRC</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>LookUpMode</b> = {exactOnly, defaultOnly, presetOnly
+}</ul>
+<h3>methods</h3><ul>
+<li><b>NetRC</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a NetRC instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extract</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lookup</b> (url, login, userealnetrc = 0, type = QString .null, mode = 6)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>login</td><td>KIO.NetRC.AutoLogin</td><td></td></tr>
+<tr><td>userealnetrc</td><td>bool</td><td>0</td></tr>
+<tr><td>type</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>mode</td><td>int</td><td>6</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openf</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parse</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parse</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reload</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.NetRC)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~NetRC</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.PasswordDialog.html b/python/pykde/doc/classref/kio/KIO.PasswordDialog.html
new file mode 100644
index 00000000..da5d1718
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.PasswordDialog.html
@@ -0,0 +1,120 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.PasswordDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.PasswordDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.PasswordDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>PasswordDialog</b> (prompt, user, enableKeep = 0, modal = 1, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PasswordDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>enableKeep</td><td>bool</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addCommentLine</b> (label, comment)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>comment</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getNameAndPassword</b> (keep, prompt = QString .null, readOnly = 0, caption = QString .null, comment = QString .null, label = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) user (QString) pass (QString) keep (bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keep</td><td>bool</td><td></td></tr>
+<tr><td>prompt</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>readOnly</td><td>bool</td><td>0</td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>comment</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>label</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keepPassword</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>password</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableUserField</b> (enable, a0 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+<tr><td>a0</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeepPassword</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKnownLogins</b> (knownLogins)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>knownLogins</td><td>QMap<QString,QString></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPassword</b> (password)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>password</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPrompt</b> (prompt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUserReadOnly</b> (readOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>readOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>username</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.PreviewJob.html b/python/pykde/doc/classref/kio/KIO.PreviewJob.html
new file mode 100644
index 00000000..6be978dc
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.PreviewJob.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.PreviewJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.PreviewJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.PreviewJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>PreviewJob</b> (items, width, height, iconSize, iconAlpha, scale, save, enabledPlugins, deleteItems = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PreviewJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+<tr><td>iconSize</td><td>int</td><td></td></tr>
+<tr><td>iconAlpha</td><td>int</td><td></td></tr>
+<tr><td>scale</td><td>bool</td><td></td></tr>
+<tr><td>save</td><td>bool</td><td></td></tr>
+<tr><td>enabledPlugins</td><td>QStringList</td><td></td></tr>
+<tr><td>deleteItems</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>availablePlugins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createThumbnail</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>failed</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOrCreateThumbnail</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotPreview</b> (item, preview)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+<tr><td>preview</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kill</b> (quietly = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>quietly</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeItem</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreMaximumSize</b> (ignoreSize = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ignoreSize</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statResultThumbnail</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportedMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.ProgressBase.html b/python/pykde/doc/classref/kio/KIO.ProgressBase.html
new file mode 100644
index 00000000..dac64435
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.ProgressBase.html
@@ -0,0 +1,201 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.ProgressBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.ProgressBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.ProgressBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ProgressBase</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ProgressBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>onlyClean</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.CopyJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.DeleteJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOnlyClean</b> (onlyClean)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>onlyClean</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStopOnClose</b> (stopOnClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stopOnClose</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCanResume</b> (job, from)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClean</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCopying</b> (job, src, dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCreatingDir</b> (job, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDeleting</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMoving</b> (job, src, dest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPercent</b> (job, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (job, bytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>bytes</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (job, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalDirs</b> (job, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalFiles</b> (job, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopOnClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopped</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.Scheduler.html b/python/pykde/doc/classref/kio/KIO.Scheduler.html
new file mode 100644
index 00000000..2eb5c094
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.Scheduler.html
@@ -0,0 +1,267 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.Scheduler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.Scheduler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.Scheduler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Scheduler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Scheduler instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Scheduler</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Scheduler instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Scheduler</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>assignJobToSlave</b> (slave, job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancelJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkSlaveOnHold</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (signal, receiver, member)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>member</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (sender, signal, receiver, member)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QObject</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>member</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connect</b> (sender, signal, member)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QObject</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>member</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>debug_info</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnect</b> (sender, signal, receiver, member)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sender</td><td>QObject</td><td></td></tr>
+<tr><td>signal</td><td>char</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>member</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectSlave</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getConnectedSlave</b> (url, config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Slave)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>config</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td>There is no default value for config (KIO.MetaData) - pass an
+empty Python dict if you need the default value
+</td></tr></table></td></tr></table></li><hr>
+<li><b>jobFinished</b> (job, slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>publishSlaveOnHold</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putSlaveOnHold</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>registerWindow</b> (wid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>wid</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeSlaveOnHold</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scheduleJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.SimpleJob</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setupSlave</b> (slave, url, protocol, proxy, newSlave, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>proxy</td><td>QString</td><td></td></tr>
+<tr><td>newSlave</td><td>bool</td><td></td></tr>
+<tr><td>config</td><td>KIO.MetaData</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveConnected</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveError</b> (slave, error, errorMsg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+<tr><td>error</td><td>int</td><td></td></tr>
+<tr><td>errorMsg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCleanIdleSlaves</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotScheduleCoSlave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSlaveConnected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSlaveDied</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSlaveError</b> (error, errorMsg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>error</td><td>int</td><td></td></tr>
+<tr><td>errorMsg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSlaveStatus</b> (pid, protocol, host, connected)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pid</td><td>pid_t</td><td></td></tr>
+<tr><td>protocol</td><td>QCString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>connected</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUnregisterWindow</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startJobDirect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startJobScheduled</b> (protInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startStep</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unregisterWindow</b> (wid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>wid</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.SessionData.html b/python/pykde/doc/classref/kio/KIO.SessionData.html
new file mode 100644
index 00000000..befffc2c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.SessionData.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.SessionData</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.SessionData</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.SessionData</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>SessionData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SessionData instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configDataFor</b> (configData, proto, host)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configData</td><td>KIO.MetaData</td><td></td></tr>
+<tr><td>proto</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAuthData</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDelAuthData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.SimpleJob.html b/python/pykde/doc/classref/kio/KIO.SimpleJob.html
new file mode 100644
index 00000000..afbe23e7
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.SimpleJob.html
@@ -0,0 +1,148 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.SimpleJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.SimpleJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.SimpleJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.Job </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>SimpleJob</b> (url, command, packedArgs, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SimpleJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>command</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kill</b> (quietly = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>quietly</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>putOnHold</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeOnHold</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Slave)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveDone</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotConnected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotError</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInfoMessage</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMetaData</b> (_metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNeedProgressId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (data_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data_size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (data_size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data_size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotWarning</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>storeSSLSessionFromJob</b> (m_redirectionURL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>m_redirectionURL</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.Slave.html b/python/pykde/doc/classref/kio/KIO.Slave.html
new file mode 100644
index 00000000..101eb662
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.Slave.html
@@ -0,0 +1,200 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.Slave</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.Slave</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.Slave</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SlaveInterface </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Slave</b> (derived, unixdomain, protocol, socketname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Slave instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>derived</td><td>bool</td><td></td></tr>
+<tr><td>unixdomain</td><td>KServerSocket</td><td></td></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>socketname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Slave</b> (unixdomain, protocol, socketname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Slave instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>unixdomain</td><td>KServerSocket</td><td></td></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>socketname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> (socket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>socket</td><td>KSocket</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Connection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createSlave</b> (protocol, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Slave) error (int) error_text (QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotInput</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hold</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>holdSlave</b> (protocol, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Slave)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>host</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>idleTime</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(time_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAlive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConnected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kill</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>passwd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>protocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ref</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetHost</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>send</b> (cmd, data = QByteArray ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td>QByteArray ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConnected</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHost</b> (host, port, user, passwd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>port</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>passwd</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIdle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPID</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>pid_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveDied</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveProtocol</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slave_pid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspend</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlinkSocket</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>user</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.SlaveBase.html b/python/pykde/doc/classref/kio/KIO.SlaveBase.html
new file mode 100644
index 00000000..581d1bbd
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.SlaveBase.html
@@ -0,0 +1,631 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.SlaveBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.SlaveBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.SlaveBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>MessageBoxType</b> = {QuestionYesNo, WarningYesNo, WarningContinueCancel, WarningYesNoCancel, Information, SSLMessageBox
+}</ul>
+<h3>methods</h3><ul>
+<li><b>SlaveBase</b> (protocol, pool_socket, app_socket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SlaveBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QCString</td><td></td></tr>
+<tr><td>pool_socket</td><td>QCString</td><td></td></tr>
+<tr><td>app_socket</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allMetaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cacheAuthentication</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cacheAuthentication</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canResume</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canResume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkCachedAuthentication</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkCachedAuthentication</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chmod</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeConnection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfigBase)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectSlave</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectSlave</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Connection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, dest, permissions, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createAuthCacheKey</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createAuthCacheKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataReq</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPClient)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delCachedAuthentication</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delCachedAuthentication</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (url, isfile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' del
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>isfile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectSlave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disconnectSlave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatch</b> (command, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatchLoop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropNetwork</b> (host = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropNetwork</b> (a0 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (_errid, _text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_errid</td><td>int</td><td></td></tr>
+<tr><td>_text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exit</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasMetaData</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listDir</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listEntries</b> (_entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_entry</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listEntry</b> (_entry, ready)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_entry</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>ready</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listEntry</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.UDSEntry</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (type, text, caption = QString .null, buttonYes = QString .null, buttonNo = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>KIO.SlaveBase.MessageBoxType</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonNo</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (text, type, caption = QString .null, buttonYes = QString .null, buttonNo = QString .null, dontAskAgainName = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>type</td><td>KIO.SlaveBase.MessageBoxType</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonYes</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>buttonNo</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaData</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> (_type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multiGet</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multipleAuthCaching</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multipleAuthCaching</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needSubURLData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openConnection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (info, errorMsg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+<tr><td>errorMsg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pingCacheDaemon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pingCacheDaemon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedPercent</b> (percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percent</td><td>float</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> (_bytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_bytes</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyConnectTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>put</b> (url, permissions, overwrite, a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readData</b> (buffer)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buffer</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (_url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remoteEncoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRemoteEncoding)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rename</b> (src, dest, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reparseConfiguration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestNetwork</b> (host = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestNetwork</b> (a0 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>responseTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendAuthenticationKey</b> (gKey, key, keep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>gKey</td><td>QCString</td><td></td></tr>
+<tr><td>key</td><td>QCString</td><td></td></tr>
+<tr><td>keep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendAuthenticationKey</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendMetaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendMetaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConnection</b> (connection)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>connection</td><td>KIO.Connection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHost</b> (host, port, user, pass)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>port</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>pass</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKillFlag</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMetaData</b> (key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMultipleAuthCaching</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMultipleAuthCaching</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSubURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTimeoutSpecialCommand</b> (timeout, data = QByteArray ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>timeout</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td>QByteArray ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sigpipe_handler</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sigsegv_handler</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveStatus</b> (host, connected)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>connected</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slave_status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>special</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speed</b> (_bytes_per_second)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_bytes_per_second</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statEntry</b> (_entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_entry</td><td>KIO.UDSEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symlink</b> (target, dest, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize</b> (_bytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_bytes</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitForAnswer</b> (expected1, expected2, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) pCmd (int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>expected1</td><td>int</td><td></td></tr>
+<tr><td>expected2</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitForAnswer</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) a3 (int)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.1.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>int</td><td></td></tr>
+<tr><td>a2</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warning</b> (msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wasKilled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>mIncomingMetaData</td><td>KIO::MetaData</td></tr>
+<tr><td>mOutgoingMetaData</td><td>KIO::MetaData</td></tr>
+<tr><td>mProtocol</td><td>QCString</td></tr>
+<tr><td>m_pConnection</td><td>KIO::Connection*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.SlaveConfig.html b/python/pykde/doc/classref/kio/KIO.SlaveConfig.html
new file mode 100644
index 00000000..7a4a2d42
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.SlaveConfig.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.SlaveConfig</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.SlaveConfig</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.SlaveConfig</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>SlaveConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SlaveConfig instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configData</b> (protocol, host)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configData</b> (protocol, host, key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configNeeded</b> (protocol, host)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SlaveConfig)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigData</b> (protocol, host, key, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigData</b> (protocol, host, config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.SlaveInterface.html b/python/pykde/doc/classref/kio/KIO.SlaveInterface.html
new file mode 100644
index 00000000..1c9f36ba
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.SlaveInterface.html
@@ -0,0 +1,284 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.SlaveInterface</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.SlaveInterface</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.SlaveInterface</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>SlaveInterface</b> (connection)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SlaveInterface instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>connection</td><td>KIO.Connection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>authorizationKey</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QCString</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calcSpeed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canResume</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Connection)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataReq</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>delAuthorization</b> (grpkey)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>grpkey</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatch</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dispatch</b> (_cmd, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_cmd</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dropNetwork</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listEntries</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (type, text, caption, buttonYes, buttonNo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonYes</td><td>QString</td><td></td></tr>
+<tr><td>buttonNo</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (type, text, caption, buttonYes, buttonNo, dontAskAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonYes</td><td>QString</td><td></td></tr>
+<tr><td>buttonNo</td><td>QString</td><td></td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needProgressId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needSubURLData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.filesize_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (prompt, user, caption, comment, label, readOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>comment</td><td>QString</td><td></td></tr>
+<tr><td>label</td><td>QString</td><td></td></tr>
+<tr><td>readOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (prompt, user, readOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>readOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progressId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestNetwork</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendResumeAnswer</b> (resume)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resume</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConnection</b> (connection)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>connection</td><td>KIO.Connection</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOffset</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgressId</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sigpipe_handler</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveStatus</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>pid_t</td><td></td></tr>
+<tr><td>a1</td><td>QCString</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+<tr><td>a3</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statEntry</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.UDSEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>totalSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>warning</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.StatJob.html b/python/pykde/doc/classref/kio/KIO.StatJob.html
new file mode 100644
index 00000000..6076c924
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.StatJob.html
@@ -0,0 +1,109 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.StatJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.StatJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.StatJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SimpleJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StatJob</b> (url, command, packedArgs, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StatJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanentRedirection</b> (job, fromUrl, toUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>fromUrl</td><td>KURL</td><td></td></tr>
+<tr><td>toUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDetails</b> (details)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>details</td><td>short</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSide</b> (source)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>source</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMetaData</b> (_metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedirection</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStatEntry</b> (entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>entry</td><td>KIO.UDSEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.UDSEntry)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.StatusbarProgress.html b/python/pykde/doc/classref/kio/KIO.StatusbarProgress.html
new file mode 100644
index 00000000..b314b593
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.StatusbarProgress.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.StatusbarProgress</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.StatusbarProgress</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.StatusbarProgress</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.ProgressBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StatusbarProgress</b> (parent, button = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StatusbarProgress instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>button</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setJob</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClean</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPercent</b> (job, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (job, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (job, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.StoredTransferJob.html b/python/pykde/doc/classref/kio/KIO.StoredTransferJob.html
new file mode 100644
index 00000000..313bc745
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.StoredTransferJob.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.StoredTransferJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.StoredTransferJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.StoredTransferJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.TransferJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StoredTransferJob</b> (url, command, packedArgs, _staticData, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StoredTransferJob instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>_staticData</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (arr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arr</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.TCPSlaveBase.html b/python/pykde/doc/classref/kio/KIO.TCPSlaveBase.html
new file mode 100644
index 00000000..4d75e40c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.TCPSlaveBase.html
@@ -0,0 +1,230 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.TCPSlaveBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.TCPSlaveBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.TCPSlaveBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SlaveBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>AtEOF</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CleanSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>CloseDescriptor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ConnectToHost</b> (host, port, sendError)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>port</td><td>uint</td><td></td></tr>
+<tr><td>sendError</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>GetPort</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>InitializeSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Read</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ReadLine</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TCPSlaveBase</b> (defaultPort, protocol, poolSocket, appSocket)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TCPSlaveBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultPort</td><td>ushort</td><td></td></tr>
+<tr><td>protocol</td><td>QCString</td><td></td></tr>
+<tr><td>poolSocket</td><td>QCString</td><td></td></tr>
+<tr><td>appSocket</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>TCPSlaveBase</b> (defaultPort, protocol, poolSocket, appSocket, useSSL)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TCPSlaveBase instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>defaultPort</td><td>ushort</td><td></td></tr>
+<tr><td>protocol</td><td>QCString</td><td></td></tr>
+<tr><td>poolSocket</td><td>QCString</td><td></td></tr>
+<tr><td>appSocket</td><td>QCString</td><td></td></tr>
+<tr><td>useSSL</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>Write</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>atEnd</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canUseTLS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>certificatePrompt</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeDescriptor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectToHost</b> (host, port, sendError = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>host</td><td>QString</td><td></td></tr>
+<tr><td>port</td><td>uint</td><td></td></tr>
+<tr><td>sendError</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doConstructorStuff</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initializeSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isConnectionValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSSLTunnelEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>port</b> (_port)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ushort)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_port</td><td>ushort</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>read</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readLine</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBlockConnection</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBlockSize</b> (sz)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sz</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConnectTimeout</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableSSLTunnel</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRealHost</b> (realHost)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>realHost</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSSLMetaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startTLS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stopTLS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userAborted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usingSSL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>usingTLS</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>verifyCertificate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitForResponse</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>write</b> (data, len)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ssize_t)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+<tr><td>len</td><td>ssize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.Task.html b/python/pykde/doc/classref/kio/KIO.Task.html
new file mode 100644
index 00000000..3e13f17a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.Task.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.Task</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.Task</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.Task</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>cmd</td><td>int</td></tr>
+<tr><td>data</td><td>QByteArray</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.TransferJob.html b/python/pykde/doc/classref/kio/KIO.TransferJob.html
new file mode 100644
index 00000000..20138dcd
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.TransferJob.html
@@ -0,0 +1,198 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.TransferJob</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.TransferJob</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.TransferJob</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KIO.SimpleJob </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>TransferJob</b> (url, command, packedArgs, _staticData, showProgressInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a TransferJob instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>command</td><td>int</td><td></td></tr>
+<tr><td>packedArgs</td><td>QByteArray</td><td></td></tr>
+<tr><td>_staticData</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canResume</b> (job, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> (job, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dataReq</b> (job, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isErrorPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSuspended</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (job, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>permanentRedirection</b> (job, fromUrl, toUrl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>fromUrl</td><td>KURL</td><td></td></tr>
+<tr><td>toUrl</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirection</b> (job, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportDataSent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendAsyncData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAsyncDataEnabled</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReportDataSent</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCanResume</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDataReq</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotErrorPage</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMetaData</b> (_metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMimetype</b> (mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNeedSubURLData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPostRedirection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRedirection</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSubURLData</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>start</b> (slave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>slave</td><td>KIO.Slave</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suspend</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.UDSAtom.html b/python/pykde/doc/classref/kio/KIO.UDSAtom.html
new file mode 100644
index 00000000..d38dddb7
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.UDSAtom.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO.UDSAtom</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO.UDSAtom</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO.UDSAtom</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_long</td><td>long</td></tr>
+<tr><td>m_str</td><td>QString</td></tr>
+<tr><td>m_uds</td><td>uint</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KIO.html b/python/pykde/doc/classref/kio/KIO.html
new file mode 100644
index 00000000..7abaed1c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KIO.html
@@ -0,0 +1,645 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KIO</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KIO.AuthInfo.html">AuthInfo</a></b><li><b><a href="KIO.ChmodJob.html">ChmodJob</a></b><li><b><a href="KIO.Connection.html">Connection</a></b><li><b><a href="KIO.CopyInfo.html">CopyInfo</a></b><li><b><a href="KIO.CopyJob.html">CopyJob</a></b><li><b><a href="KIO.DavJob.html">DavJob</a></b><li><b><a href="KIO.DefaultProgress.html">DefaultProgress</a></b><li><b><a href="KIO.DeleteJob.html">DeleteJob</a></b><li><b><a href="KIO.DirectCopyJob.html">DirectCopyJob</a></b><li><b><a href="KIO.FileCopyJob.html">FileCopyJob</a></b><li><b><a href="KIO.ForwardingSlaveBase.html">ForwardingSlaveBase</a></b><li><b><a href="KIO.Job.html">Job</a></b><li><b><a href="KIO.ListJob.html">ListJob</a></b><li><b><a href="KIO.MetaInfoJob.html">MetaInfoJob</a></b><li><b><a href="KIO.MimetypeJob.html">MimetypeJob</a></b><li><b><a href="KIO.MkdirJob.html">MkdirJob</a></b><li><b><a href="KIO.MultiGetJob.html">MultiGetJob</a></b><li><b><a href="KIO.NetAccess.html">NetAccess</a></b><li><b><a href="KIO.NetRC.html">NetRC</a></b><li><b><a href="KIO.NetRC.AutoLogin.html">NetRC.AutoLogin</a></b><li><b><a href="KIO.PasswordDialog.html">PasswordDialog</a></b><li><b><a href="KIO.PreviewJob.html">PreviewJob</a></b><li><b><a href="KIO.ProgressBase.html">ProgressBase</a></b><li><b><a href="KIO.Scheduler.html">Scheduler</a></b><li><b><a href="KIO.SessionData.html">SessionData</a></b><li><b><a href="KIO.SimpleJob.html">SimpleJob</a></b><li><b><a href="KIO.Slave.html">Slave</a></b><li><b><a href="KIO.SlaveBase.html">SlaveBase</a></b><li><b><a href="KIO.SlaveConfig.html">SlaveConfig</a></b><li><b><a href="KIO.SlaveInterface.html">SlaveInterface</a></b><li><b><a href="KIO.StatJob.html">StatJob</a></b><li><b><a href="KIO.StatusbarProgress.html">StatusbarProgress</a></b><li><b><a href="KIO.StoredTransferJob.html">StoredTransferJob</a></b><li><b><a href="KIO.TCPSlaveBase.html">TCPSlaveBase</a></b><li><b><a href="KIO.Task.html">Task</a></b><li><b><a href="KIO.TransferJob.html">TransferJob</a></b><li><b><a href="KIO.UDSAtom.html">UDSAtom</a></b></ul>
+<h3>enums</h3><ul>
+<li><b>CacheControl</b> = {CC_CacheOnly, CC_Cache, CC_Verify, CC_Reload
+}<li><b>CacheControl</b> = {CC_CacheOnly, CC_Cache, CC_Verify, CC_Reload
+}<li><b>Command</b> = {CMD_HOST, CMD_CONNECT, CMD_DISCONNECT, CMD_SLAVE_STATUS, CMD_SLAVE_CONNECT, CMD_SLAVE_HOLD, CMD_NONE, CMD_TESTDIR, CMD_GET, CMD_PUT, CMD_STAT, CMD_MIMETYPE, CMD_LISTDIR, CMD_MKDIR, CMD_RENAME, CMD_COPY, CMD_DEL, CMD_CHMOD, CMD_SPECIAL, CMD_USERPASS, CMD_REPARSECONFIGURATION, CMD_META_DATA, CMD_SYMLINK, CMD_SUBURL, CMD_MESSAGEBOXANSWER, CMD_RESUMEANSWER, CMD_CONFIG, CMD_MULTI_GET
+}<li><b>Command</b> = {CMD_HOST, CMD_CONNECT, CMD_DISCONNECT, CMD_SLAVE_STATUS, CMD_SLAVE_CONNECT, CMD_SLAVE_HOLD, CMD_NONE, CMD_TESTDIR, CMD_GET, CMD_PUT, CMD_STAT, CMD_MIMETYPE, CMD_LISTDIR, CMD_MKDIR, CMD_RENAME, CMD_COPY, CMD_DEL, CMD_CHMOD, CMD_SPECIAL, CMD_USERPASS, CMD_REPARSECONFIGURATION, CMD_META_DATA, CMD_SYMLINK, CMD_SUBURL, CMD_MESSAGEBOXANSWER, CMD_RESUMEANSWER, CMD_CONFIG, CMD_MULTI_GET
+}<li><b>Error</b> = {ERR_CANNOT_OPEN_FOR_READING, ERR_CANNOT_OPEN_FOR_WRITING, ERR_CANNOT_LAUNCH_PROCESS, ERR_INTERNAL, ERR_MALFORMED_URL, ERR_UNSUPPORTED_PROTOCOL, ERR_NO_SOURCE_PROTOCOL, ERR_UNSUPPORTED_ACTION, ERR_IS_DIRECTORY, ERR_IS_FILE, ERR_DOES_NOT_EXIST, ERR_FILE_ALREADY_EXIST, ERR_DIR_ALREADY_EXIST, ERR_UNKNOWN_HOST, ERR_ACCESS_DENIED, ERR_WRITE_ACCESS_DENIED, ERR_CANNOT_ENTER_DIRECTORY, ERR_PROTOCOL_IS_NOT_A_FILESYSTEM, ERR_CYCLIC_LINK, ERR_USER_CANCELED, ERR_CYCLIC_COPY, ERR_COULD_NOT_CREATE_SOCKET, ERR_COULD_NOT_CONNECT, ERR_CONNECTION_BROKEN, ERR_NOT_FILTER_PROTOCOL, ERR_COULD_NOT_MOUNT, ERR_COULD_NOT_UNMOUNT, ERR_COULD_NOT_READ, ERR_COULD_NOT_WRITE, ERR_COULD_NOT_BIND, ERR_COULD_NOT_LISTEN, ERR_COULD_NOT_ACCEPT, ERR_COULD_NOT_LOGIN, ERR_COULD_NOT_STAT, ERR_COULD_NOT_CLOSEDIR, ERR_COULD_NOT_MKDIR, ERR_COULD_NOT_RMDIR, ERR_CANNOT_RESUME, ERR_CANNOT_RENAME, ERR_CANNOT_CHMOD, ERR_CANNOT_DELETE, ERR_SLAVE_DIED, ERR_OUT_OF_MEMORY, ERR_UNKNOWN_PROXY_HOST, ERR_COULD_NOT_AUTHENTICATE, ERR_ABORTED, ERR_INTERNAL_SERVER, ERR_SERVER_TIMEOUT, ERR_SERVICE_NOT_AVAILABLE, ERR_UNKNOWN, ERR_UNKNOWN_INTERRUPT, ERR_CANNOT_DELETE_ORIGINAL, ERR_CANNOT_DELETE_PARTIAL, ERR_CANNOT_RENAME_ORIGINAL, ERR_CANNOT_RENAME_PARTIAL, ERR_NEED_PASSWD, ERR_CANNOT_SYMLINK, ERR_NO_CONTENT, ERR_DISK_FULL, ERR_IDENTICAL_FILES, ERR_SLAVE_DEFINED
+}<li><b>Error</b> = {ERR_CANNOT_OPEN_FOR_READING, ERR_CANNOT_OPEN_FOR_WRITING, ERR_CANNOT_LAUNCH_PROCESS, ERR_INTERNAL, ERR_MALFORMED_URL, ERR_UNSUPPORTED_PROTOCOL, ERR_NO_SOURCE_PROTOCOL, ERR_UNSUPPORTED_ACTION, ERR_IS_DIRECTORY, ERR_IS_FILE, ERR_DOES_NOT_EXIST, ERR_FILE_ALREADY_EXIST, ERR_DIR_ALREADY_EXIST, ERR_UNKNOWN_HOST, ERR_ACCESS_DENIED, ERR_WRITE_ACCESS_DENIED, ERR_CANNOT_ENTER_DIRECTORY, ERR_PROTOCOL_IS_NOT_A_FILESYSTEM, ERR_CYCLIC_LINK, ERR_USER_CANCELED, ERR_CYCLIC_COPY, ERR_COULD_NOT_CREATE_SOCKET, ERR_COULD_NOT_CONNECT, ERR_CONNECTION_BROKEN, ERR_NOT_FILTER_PROTOCOL, ERR_COULD_NOT_MOUNT, ERR_COULD_NOT_UNMOUNT, ERR_COULD_NOT_READ, ERR_COULD_NOT_WRITE, ERR_COULD_NOT_BIND, ERR_COULD_NOT_LISTEN, ERR_COULD_NOT_ACCEPT, ERR_COULD_NOT_LOGIN, ERR_COULD_NOT_STAT, ERR_COULD_NOT_CLOSEDIR, ERR_COULD_NOT_MKDIR, ERR_COULD_NOT_RMDIR, ERR_CANNOT_RESUME, ERR_CANNOT_RENAME, ERR_CANNOT_CHMOD, ERR_CANNOT_DELETE, ERR_SLAVE_DIED, ERR_OUT_OF_MEMORY, ERR_UNKNOWN_PROXY_HOST, ERR_COULD_NOT_AUTHENTICATE, ERR_ABORTED, ERR_INTERNAL_SERVER, ERR_SERVER_TIMEOUT, ERR_SERVICE_NOT_AVAILABLE, ERR_UNKNOWN, ERR_UNKNOWN_INTERRUPT, ERR_CANNOT_DELETE_ORIGINAL, ERR_CANNOT_DELETE_PARTIAL, ERR_CANNOT_RENAME_ORIGINAL, ERR_CANNOT_RENAME_PARTIAL, ERR_NEED_PASSWD, ERR_CANNOT_SYMLINK, ERR_NO_CONTENT, ERR_DISK_FULL, ERR_IDENTICAL_FILES, ERR_SLAVE_DEFINED
+}<li><b>FileSystemFlag</b> = {SupportsChmod, SupportsChown, SupportsUTime, SupportsSymlinks, CaseInsensitive
+}<li><b>Info</b> = {INF_TOTAL_SIZE, INF_PROCESSED_SIZE, INF_SPEED, INF_REDIRECTION, INF_MIME_TYPE, INF_ERROR_PAGE, INF_WARNING, INF_GETTING_FILE, INF_NEED_PASSWD, INF_INFOMESSAGE, INF_META_DATA, INF_NETWORK_STATUS, INF_MESSAGEBOX
+}<li><b>Message</b> = {MSG_DATA, MSG_DATA_REQ, MSG_ERROR, MSG_CONNECTED, MSG_FINISHED, MSG_STAT_ENTRY, MSG_LIST_ENTRIES, MSG_RENAMED, MSG_RESUME, MSG_SLAVE_STATUS, MSG_SLAVE_ACK, MSG_NET_REQUEST, MSG_NET_DROP, MSG_NEED_SUBURL_DATA, MSG_CANRESUME, MSG_AUTH_KEY, MSG_DEL_AUTH_KEY
+}<li><b>Progress</b> = {DEFAULT, STATUSBAR, LIST
+}<li><b>RenameDlg_Mode</b> = {M_OVERWRITE, M_OVERWRITE_ITSELF, M_SKIP, M_SINGLE, M_MULTI, M_RESUME, M_NORENAME
+}<li><b>RenameDlg_Result</b> = {R_RESUME, R_RESUME_ALL, R_OVERWRITE, R_OVERWRITE_ALL, R_SKIP, R_AUTO_SKIP, R_RENAME, R_CANCEL
+}<li><b>SkipDlg_Result</b> = {S_SKIP, S_AUTO_SKIP, S_CANCEL
+}<li><b>UDSAtomTypes</b> = {UDS_STRING, UDS_LONG, UDS_TIME, UDS_SIZE, UDS_SIZE_LARGE, UDS_USER, UDS_GROUP, UDS_NAME, UDS_ACCESS, UDS_MODIFICATION_TIME, UDS_ACCESS_TIME, UDS_CREATION_TIME, UDS_FILE_TYPE, UDS_LINK_DEST, UDS_URL, UDS_MIME_TYPE, UDS_GUESSED_MIME_TYPE
+}<li><b>UDSAtomTypes</b> = {UDS_STRING, UDS_LONG, UDS_TIME, UDS_SIZE, UDS_SIZE_LARGE, UDS_USER, UDS_GROUP, UDS_NAME, UDS_ACCESS, UDS_MODIFICATION_TIME, UDS_ACCESS_TIME, UDS_CREATION_TIME, UDS_FILE_TYPE, UDS_LINK_DEST, UDS_URL, UDS_MIME_TYPE, UDS_GUESSED_MIME_TYPE
+}<li><b>UDSAtomTypes</b> = {UDS_STRING, UDS_LONG, UDS_TIME, UDS_SIZE, UDS_SIZE_LARGE, UDS_USER, UDS_GROUP, UDS_NAME, UDS_ACCESS, UDS_MODIFICATION_TIME, UDS_ACCESS_TIME, UDS_CREATION_TIME, UDS_FILE_TYPE, UDS_LINK_DEST, UDS_URL, UDS_MIME_TYPE, UDS_GUESSED_MIME_TYPE
+}<li><b>UDSAtomTypes</b> = {UDS_STRING, UDS_LONG, UDS_TIME, UDS_SIZE, UDS_SIZE_LARGE, UDS_USER, UDS_GROUP, UDS_NAME, UDS_ACCESS, UDS_MODIFICATION_TIME, UDS_ACCESS_TIME, UDS_CREATION_TIME, UDS_FILE_TYPE, UDS_LINK_DEST, UDS_URL, UDS_MIME_TYPE, UDS_GUESSED_MIME_TYPE
+}<li><b>UDSAtomTypes</b> = {UDS_STRING, UDS_LONG, UDS_TIME, UDS_SIZE, UDS_SIZE_LARGE, UDS_USER, UDS_GROUP, UDS_NAME, UDS_ACCESS, UDS_MODIFICATION_TIME, UDS_ACCESS_TIME, UDS_CREATION_TIME, UDS_FILE_TYPE, UDS_LINK_DEST, UDS_URL, UDS_MIME_TYPE, UDS_GUESSED_MIME_TYPE
+}</ul>
+<h3>methods</h3><ul>
+<li><b>buildErrorString</b> (errorCode, errorText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>errorCode</td><td>int</td><td></td></tr>
+<tr><td>errorText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buildHTMLErrorString</b> (errorCode, errorText, reqUrl = 0, method = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calculateRemaining</b> (totalSize, processedSize, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QTime)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>totalSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>processedSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>speed</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>calculateRemainingSeconds</b> (totalSize, processedSize, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>totalSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>processedSize</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>speed</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chmod</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chmod</b> (url, permissions)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertSeconds</b> (seconds)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>seconds</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertSize</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertSizeFromKB</b> (kbSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>kbSize</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>convertSizeWithBytes</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copy</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>copyAs</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>davPropFind</b> (url, properties, depth, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DavJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>properties</td><td>QDomDocument</td><td></td></tr>
+<tr><td>depth</td><td>QString</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>davPropPatch</b> (url, properties, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DavJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>properties</td><td>QDomDocument</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>davSearch</b> (url, nsURI, qName, query, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DavJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>nsURI</td><td>QString</td><td></td></tr>
+<tr><td>qName</td><td>QString</td><td></td></tr>
+<tr><td>query</td><td>QString</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decodeFileName</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (src, shred = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DeleteJob)</i></td></tr>
+<tr><td>Renamed: was <i>' del
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>shred</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>del_</b> (src, shred = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.DeleteJob)</i></td></tr>
+<tr><td>Renamed: was <i>' del
+'</i> in C++</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>shred</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodeFileName</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileMetaInfo</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaInfoJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileMetaInfo</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaInfoJob)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filePreview</b> (items, width, height = 0, iconSize = 0, iconAlpha = 70, scale = 1, save = 1, enabledPlugins = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.PreviewJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KURL.List</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td>0</td></tr>
+<tr><td>iconSize</td><td>int</td><td>0</td></tr>
+<tr><td>iconAlpha</td><td>int</td><td>70</td></tr>
+<tr><td>scale</td><td>bool</td><td>1</td></tr>
+<tr><td>save</td><td>bool</td><td>1</td></tr>
+<tr><td>enabledPlugins</td><td>QStringList</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filePreview</b> (items, width, height = 0, iconSize = 0, iconAlpha = 70, scale = 1, save = 1, enabledPlugins = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.PreviewJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KURL.List</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td>0</td></tr>
+<tr><td>iconSize</td><td>int</td><td>0</td></tr>
+<tr><td>iconAlpha</td><td>int</td><td>70</td></tr>
+<tr><td>scale</td><td>bool</td><td>1</td></tr>
+<tr><td>save</td><td>bool</td><td>1</td></tr>
+<tr><td>enabledPlugins</td><td>QStringList</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file_copy</b> (src, dest, permissions = -1, overwrite = 0, resume = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.FileCopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+<tr><td>overwrite</td><td>bool</td><td>0</td></tr>
+<tr><td>resume</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file_delete</b> (src, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>file_move</b> (src, dest, permissions = -1, overwrite = 0, resume = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.FileCopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+<tr><td>overwrite</td><td>bool</td><td>0</td></tr>
+<tr><td>resume</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findDeviceMountPoint</b> (device)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>device</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findPathMountPoint</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (url, reload = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.TransferJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>reload</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCacheControlString</b> (cacheControl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cacheControl</td><td>KIO.CacheControl</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>http_post</b> (url, postData, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.TransferJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>postData</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>http_update_cache</b> (url, no_cache, expireDate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>no_cache</td><td>bool</td><td></td></tr>
+<tr><td>expireDate</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isClipboardEmpty</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>itemsSummaryString</b> (items, files, dirs, size, showSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>uint</td><td></td></tr>
+<tr><td>files</td><td>uint</td><td></td></tr>
+<tr><td>dirs</td><td>uint</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>showSize</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>link</b> (src, destDir, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>destDir</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>link</b> (src, destDir, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>destDir</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkAs</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listDir</b> (url, showProgressInfo = 1, includeHidden = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.ListJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+<tr><td>includeHidden</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listRecursive</b> (url, showProgressInfo = 1, includeHidden = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.ListJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+<tr><td>includeHidden</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manually_mounted</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimetype</b> (url, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MimetypeJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mkdir</b> (url, permissions = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mount</b> (ro, fstype, dev, point, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ro</td><td>bool</td><td></td></tr>
+<tr><td>fstype</td><td>char</td><td></td></tr>
+<tr><td>dev</td><td>QString</td><td></td></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>move</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>move</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveAs</b> (src, dest, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>multi_get</b> (id, url, metaData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MultiGetJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>long</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>metaData</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>number</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open_RenameDlg</b> (a0, a1, a2, a3, a4, a5 = -1, a6 = -1, a7 = -1, a8 = -1, a9 = -1, a10 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open_RenameDlg</b> (a0, a1, a2, a3, a4, a5 = -1, a6 = -1, a7 = -1, a8 = -1, a9 = -1, a10 = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open_SkipDlg</b> (_multi, _error_text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseCacheControl</b> (cacheControl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CacheControl)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cacheControl</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteActionText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteClipboard</b> (destURL, move = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.Job)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+<tr><td>move</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteData</b> (destURL, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteDataAsync</b> (destURL, data, dialogText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>dialogText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteDataAsync</b> (destURL, data, dialogText)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>dialogText</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteMimeSource</b> (data, destURL, dialogText, widget, clipboard = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QMimeSource</td><td></td></tr>
+<tr><td>destURL</td><td>KURL</td><td></td></tr>
+<tr><td>dialogText</td><td>QString</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>clipboard</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>probably_slow_mounted</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>put</b> (url, permissions, overwrite, resume, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.TransferJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>resume</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rawErrorDetail</b> (errorCode, errorText, reqUrl = 0, method = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>errorCode</td><td>int</td><td></td></tr>
+<tr><td>errorText</td><td>QString</td><td></td></tr>
+<tr><td>reqUrl</td><td>KURL</td><td>0</td></tr>
+<tr><td>method</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rename</b> (src, dest, overwrite)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rmdir</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>special</b> (url, data, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url, sideIsSource, details, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.StatJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>sideIsSource</td><td>bool</td><td></td></tr>
+<tr><td>details</td><td>short</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stat</b> (url, sideIsSource, details, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.StatJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>sideIsSource</td><td>bool</td><td></td></tr>
+<tr><td>details</td><td>short</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>storedGet</b> (url, reload = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.StoredTransferJob)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>reload</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>storedPut</b> (arr, url, permissions, overwrite, resume, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.StoredTransferJob)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>arr</td><td>QByteArray</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>permissions</td><td>int</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>resume</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>symlink</b> (target, dest, overwrite, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>dest</td><td>KURL</td><td></td></tr>
+<tr><td>overwrite</td><td>bool</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testFileSystemFlag</b> (filename, flag)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>flag</td><td>KIO.FileSystemFlag</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trash</b> (src, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trash</b> (src, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CopyJob)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>src</td><td>KURL.List</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unmount</b> (point, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SimpleJob)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsupportedActionErrorString</b> (protocol, cmd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+<tr><td>cmd</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KImageIO.html b/python/pykde/doc/classref/kio/KImageIO.html
new file mode 100644
index 00000000..f7b8f639
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KImageIO.html
@@ -0,0 +1,120 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KImageIO</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KImageIO</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KImageIO</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Mode</b> = {Reading, Writing
+}</ul>
+<h3>methods</h3><ul>
+<li><b>canRead</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canWrite</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSupported</b> (_mimeType, _mode = Writing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_mimeType</td><td>QString</td><td></td></tr>
+<tr><td>_mode</td><td>KImageIO.Mode</td><td>Writing</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> (_filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypes</b> (mode = Writing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KImageIO.Mode</td><td>Writing</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pattern</b> (mode = Reading)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KImageIO.Mode</td><td>Reading</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>registerFormats</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suffix</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeForMime</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>types</b> (mode = Writing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KImageIO.Mode</td><td>Writing</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeMagic.html b/python/pykde/doc/classref/kio/KMimeMagic.html
new file mode 100644
index 00000000..71707d6c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeMagic.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeMagic</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeMagic</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeMagic</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeMagic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeMagic instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMimeMagic</b> (configFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeMagic instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findBufferFileType</b> (a0, filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeMagicResult)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QByteArray</td><td></td></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findBufferType</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeMagicResult)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFileType</b> (_filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeMagicResult)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initStatic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mergeBufConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mergeConfig</b> (configFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>configFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeMagic)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFollowLinks</b> (_enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeMagicResult.html b/python/pykde/doc/classref/kio/KMimeMagicResult.html
new file mode 100644
index 00000000..1480a4d6
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeMagicResult.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeMagicResult</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeMagicResult</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeMagicResult</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeMagicResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeMagicResult instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accuracy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAccuracy</b> (_accuracy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_accuracy</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInvalid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeType</b> (_mime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_mime</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeType.Format.html b/python/pykde/doc/classref/kio/KMimeType.Format.html
new file mode 100644
index 00000000..738029d4
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeType.Format.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeType.Format</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeType.Format</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeType.Format</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {NoCompression, GZipCompression
+}</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>compression</td><td>int</td></tr>
+<tr><td>dummy</td><td>int</td></tr>
+<tr><td>text</td><td>bool</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeType.html b/python/pykde/doc/classref/kio/KMimeType.html
new file mode 100644
index 00000000..4040e50e
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeType.html
@@ -0,0 +1,290 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KServiceType </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeType</b> (_fullpath, _type, _icon, _comment, _patterns)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+<tr><td>_type</td><td>QString</td><td></td></tr>
+<tr><td>_icon</td><td>QString</td><td></td></tr>
+<tr><td>_comment</td><td>QString</td><td></td></tr>
+<tr><td>_patterns</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMimeType</b> (_fullpath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMimeType</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMimeType</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buildDefaultType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkEssentialMimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultMimeTypePtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>diagnoseFileName</b> (file, pattern)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorMissingMimeType</b> (_type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>favIconForURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByContent</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr) accuracy (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByFileContent</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr) accuracy (int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByPath</b> (path, mode = 0, fast_mode = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>0</td></tr>
+<tr><td>fast_mode</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByURL</b> (_url, _mode = 0, _is_local_file = 0, _fast_mode = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mode</td><td>mode_t</td><td>0</td></tr>
+<tr><td>_is_local_file</td><td>bool</td><td>0</td></tr>
+<tr><td>_fast_mode</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findByURL</b> (_url, _mode, _is_local_file, _fast_mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr) accurate (bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mode</td><td>mode_t</td><td></td></tr>
+<tr><td>_is_local_file</td><td>bool</td><td></td></tr>
+<tr><td>_fast_mode</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFormatByFileContent</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconForURL</b> (_url, _mode = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mode</td><td>mode_t</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>is_</b> (mimeTypeName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>Renamed: was <i>' is'</i> in C++</td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeTypeName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (qs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>qs</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadInternal</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeType</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeType.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>patterns</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>patternsAccuracy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (group, force_size = 0, state = 0, path = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>force_size</td><td>int</td><td>0</td></tr>
+<tr><td>state</td><td>int</td><td>0</td></tr>
+<tr><td>path</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (_url, _group, _force_size = 0, _state = 0, _path = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>_force_size</td><td>int</td><td>0</td></tr>
+<tr><td>_state</td><td>int</td><td>0</td></tr>
+<tr><td>_path</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmapForURL</b> (_url, _mode = 0, _group = KIcon .Desktop, _force_size = 0, _state = 0, _path = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mode</td><td>mode_t</td><td>0</td></tr>
+<tr><td>_group</td><td>KIcon.Group</td><td>KIcon .Desktop</td></tr>
+<tr><td>_force_size</td><td>int</td><td>0</td></tr>
+<tr><td>_state</td><td>int</td><td>0</td></tr>
+<tr><td>_path</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (qs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>qs</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeTypeChooser.html b/python/pykde/doc/classref/kio/KMimeTypeChooser.html
new file mode 100644
index 00000000..48d38195
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeTypeChooser.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeTypeChooser</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeTypeChooser</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeTypeChooser</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QVBox </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Visuals</b> = {Comments, Patterns, EditButton
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMimeTypeChooser</b> (text = QString .null, selectedMimeTypes = 0, defaultGroup = QString .null, groupsToShow = QStringList (), visuals = Comments | Patterns | EditButton, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeTypeChooser instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>selectedMimeTypes</td><td>QStringList</td><td>0</td></tr>
+<tr><td>defaultGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>groupsToShow</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>visuals</td><td>int</td><td>Comments | Patterns | EditButton</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>editMimeType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>patterns</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KMimeTypeChooserDialog.html b/python/pykde/doc/classref/kio/KMimeTypeChooserDialog.html
new file mode 100644
index 00000000..9c88bc25
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KMimeTypeChooserDialog.html
@@ -0,0 +1,71 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMimeTypeChooserDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMimeTypeChooserDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMimeTypeChooserDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMimeTypeChooserDialog</b> (caption = QString .null, text = QString .null, selectedMimeTypes = QStringList (), defaultGroup = QString .null, groupsToShow = QStringList (), visuals = KMimeTypeChooser .Comments | KMimeTypeChooser .Patterns | KMimeTypeChooser .EditButton, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeTypeChooserDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>selectedMimeTypes</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>defaultGroup</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>groupsToShow</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>visuals</td><td>int</td><td>KMimeTypeChooser .Comments | KMimeTypeChooser .Patterns | KMimeTypeChooser .EditButton</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMimeTypeChooserDialog</b> (caption, text, selectedMimeTypes, defaultGroup, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMimeTypeChooserDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>selectedMimeTypes</td><td>QStringList</td><td></td></tr>
+<tr><td>defaultGroup</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>chooser</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMimeTypeChooser)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KNFSShare.html b/python/pykde/doc/classref/kio/KNFSShare.html
new file mode 100644
index 00000000..b599a5db
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KNFSShare.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KNFSShare</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KNFSShare</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KNFSShare</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KNFSShare</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KNFSShare instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exportsPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KNFSShare)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectoryShared</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharedDirectories</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KOCRDialog.html b/python/pykde/doc/classref/kio/KOCRDialog.html
new file mode 100644
index 00000000..8fc21307
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KOCRDialog.html
@@ -0,0 +1,73 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KOCRDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KOCRDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KOCRDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KOCRDialog</b> (dialogFace = Tabbed, buttonMask = Close | Help, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOCRDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>int</td><td>Tabbed</td></tr>
+<tr><td>buttonMask</td><td>int</td><td>Close | Help</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getOCRDialog</b> (parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KOCRDialog)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textRecognized</b> (text, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KOCRDialogFactory.html b/python/pykde/doc/classref/kio/KOCRDialogFactory.html
new file mode 100644
index 00000000..49bb0e67
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KOCRDialogFactory.html
@@ -0,0 +1,75 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KOCRDialogFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KOCRDialogFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KOCRDialogFactory <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLibFactory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KOCRDialogFactory</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOCRDialogFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDialog</b> (parent = 0, name = 0, modal = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KOCRDialog)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createObject</b> (parent = 0, name = 0, classname = "QObject", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"QObject"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (instanceName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KOpenWithHandler.html b/python/pykde/doc/classref/kio/KOpenWithHandler.html
new file mode 100644
index 00000000..33db6f57
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KOpenWithHandler.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KOpenWithHandler</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KOpenWithHandler</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KOpenWithHandler</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KOpenWithHandler</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KOpenWithHandler instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exists</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KProcessRunner.html b/python/pykde/doc/classref/kio/KProcessRunner.html
new file mode 100644
index 00000000..0be3ee5f
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KProcessRunner.html
@@ -0,0 +1,87 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProcessRunner</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProcessRunner</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProcessRunner</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KProcessRunner</b> (a0, binName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessRunner instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+<tr><td>binName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcessRunner</b> (a0, binName, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessRunner instance</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+<tr><td>binName</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProcessRunner</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcessRunner instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (a0, binName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+<tr><td>binName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (a0, binName, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+<tr><td>binName</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>KStartupInfoId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessExited</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KProtocolInfo.ExtraField.html b/python/pykde/doc/classref/kio/KProtocolInfo.ExtraField.html
new file mode 100644
index 00000000..ad48f933
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KProtocolInfo.ExtraField.html
@@ -0,0 +1,58 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProtocolInfo.ExtraField</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProtocolInfo.ExtraField</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProtocolInfo.ExtraField</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ExtraField</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ExtraField instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ExtraField</b> (_name, _type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ExtraField instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>_type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>name</td><td>QString</td></tr>
+<tr><td>type</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KProtocolInfo.html b/python/pykde/doc/classref/kio/KProtocolInfo.html
new file mode 100644
index 00000000..f9c2fc2a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KProtocolInfo.html
@@ -0,0 +1,466 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProtocolInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProtocolInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProtocolInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSycocaEntry </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>FileNameUsedForCopying</b> = {Name, FromURL
+}<li><b>Type</b> = {T_STREAM, T_FILESYSTEM, T_NONE, T_ERROR
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KProtocolInfo</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProtocolInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KProtocolInfo</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProtocolInfo instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canCopyFromFile</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canCopyFromFile</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canCopyToFile</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canCopyToFile</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canDeleteRecursive</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canDeleteRecursive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canRenameFromFile</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canRenameFromFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canRenameToFile</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canRenameToFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>capabilities</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultMimetype</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultMimetype</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>determineMimetypeFromExtension</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docPath</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exec_</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>Renamed: was <i>' exec'</i> in C++</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraFields</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo.ExtraFieldList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileNameUsedForCopying</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo.FileNameUsedForCopying)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileNameUsedForCopying</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo.FileNameUsedForCopying)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findProtocol</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inputType</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo.Type)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inputType</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Type)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFilterProtocol</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFilterProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHelperProtocol</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHelperProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isKnownProtocol</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isKnownProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSourceProtocol</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSourceProtocol</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listing</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>listing</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxSlaves</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outputType</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolInfo.Type)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>outputType</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Type)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>protocolClass</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>protocols</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxiedBy</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showFilePreview</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsDeleting</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsDeleting</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsLinking</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsLinking</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsListing</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsListing</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsMakeDir</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsMakeDir</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsMoving</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsMoving</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsReading</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsReading</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsWriting</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>supportsWriting</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uriParseMode</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL.URIMode)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KProtocolManager.html b/python/pykde/doc/classref/kio/KProtocolManager.html
new file mode 100644
index 00000000..c5851767
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KProtocolManager.html
@@ -0,0 +1,189 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KProtocolManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KProtocolManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KProtocolManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ProxyAuthMode</b> = {Prompt, Automatic
+}<li><b>ProxyType</b> = {NoProxy, ManualProxy, PACProxy, WPADProxy, EnvVarProxy
+}</ul>
+<h3>methods</h3><ul>
+<li><b>autoResume</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>badProxy</b> (proxy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>proxy</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cacheControl</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.CacheControl)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cacheDir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>connectTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultConnectTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultUserAgent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultUserAgent</b> (keys)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keys</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>markPartial</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxCacheAge</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maxCacheSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimumKeepSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noProxyFor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noProxyForRaw</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.1 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>persistentConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>persistentProxyConnection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyAuthMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolManager.ProxyAuthMode)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyConfigScript</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyConnectTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyFor</b> (protocol)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>protocol</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyForURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>proxyType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProtocolManager.ProxyType)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reparseConfiguration</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>responseTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slaveProtocol</b> (url, proxy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>proxy</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useCache</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useProxy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useReverseProxy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>userAgentForHost</b> (hostname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hostname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KRemoteEncoding.html b/python/pykde/doc/classref/kio/KRemoteEncoding.html
new file mode 100644
index 00000000..63cd6740
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KRemoteEncoding.html
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRemoteEncoding</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRemoteEncoding</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRemoteEncoding</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRemoteEncoding</b> (name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRemoteEncoding instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRemoteEncoding</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRemoteEncoding instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KRemoteEncoding</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>decode</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directory</b> (url, ignore_trailing_slash = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>ignore_trailing_slash</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encode</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encode</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encodingMib</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncoding</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KRun.html b/python/pykde/doc/classref/kio/KRun.html
new file mode 100644
index 00000000..403f973b
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KRun.html
@@ -0,0 +1,360 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRun</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRun</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRun</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KRun</b> (url, mode = 0, isLocalFile = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRun instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>0</td></tr>
+<tr><td>isLocalFile</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KRun</b> (url, window, mode = 0, isLocalFile = 0, showProgressInfo = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KRun instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>0</td></tr>
+<tr><td>isLocalFile</td><td>bool</td><td>0</td></tr>
+<tr><td>showProgressInfo</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abort</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>autoDelete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>binaryName</b> (execLine, removePath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>execLine</td><td>QString</td><td></td></tr>
+<tr><td>removePath</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkStartupNotify</b> (binName, service, wmclass_arg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) silent_arg (bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>binName</td><td>QString</td><td></td></tr>
+<tr><td>service</td><td>KService</td><td></td></tr>
+<tr><td>wmclass_arg</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayOpenWithDialog</b> (lst, tempFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lst</td><td>KURL.List</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayOpenWithDialog</b> (lst)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lst</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayOpenWithDialog</b> (lst, tempFiles, suggestedFileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lst</td><td>KURL.List</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+<tr><td>suggestedFileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>error</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>foundMimeType</b> (_type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasError</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasFinished</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExecutable</b> (serviceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExecutableFile</b> (url, mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>killJob</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processDesktopExec</b> (_service, _urls, has_shell, tempFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>has_shell</td><td>bool</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processDesktopExec</b> (_service, _urls, has_shell)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>has_shell</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processDesktopExec</b> (_service, _urls, has_shell, tempFiles, suggestedFileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>has_shell</td><td>bool</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+<tr><td>suggestedFileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_service, _urls, window, tempFiles = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_service, _urls, tempFiles)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_service, _urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_service, _urls, window, tempFiles, suggestedFileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>tempFiles</td><td>bool</td><td></td></tr>
+<tr><td>suggestedFileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>run</b> (_exec, _urls, _name = QString .null, _icon = QString .null, _obsolete1 = QString .null, _obsolete2 = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_exec</td><td>QString</td><td></td></tr>
+<tr><td>_urls</td><td>KURL.List</td><td></td></tr>
+<tr><td>_name</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>_icon</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>_obsolete1</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>_obsolete2</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runCommand</b> (cmd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runCommand</b> (cmd, execName, icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cmd</td><td>QString</td><td></td></tr>
+<tr><td>execName</td><td>QString</td><td></td></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runURL</b> (_url, _mimetype, tempFile, runExecutables)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mimetype</td><td>QString</td><td></td></tr>
+<tr><td>tempFile</td><td>bool</td><td></td></tr>
+<tr><td>runExecutables</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runURL</b> (_url, _mimetype, tempFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mimetype</td><td>QString</td><td></td></tr>
+<tr><td>tempFile</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runURL</b> (_url, _mimetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mimetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runURL</b> (_url, _mimetype, tempFile, runExecutables, suggestedFileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_url</td><td>KURL</td><td></td></tr>
+<tr><td>_mimetype</td><td>QString</td><td></td></tr>
+<tr><td>tempFile</td><td>bool</td><td></td></tr>
+<tr><td>runExecutables</td><td>bool</td><td></td></tr>
+<tr><td>suggestedFileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scanFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableExternalBrowser</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPreferredService</b> (desktopEntryName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktopEntryName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRunExecutables</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSuggestedFileName</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shellQuote</b> (_str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotScanFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotScanMimeType</b> (a0, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStatResult</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTimeout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSambaShare.html b/python/pykde/doc/classref/kio/KSambaShare.html
new file mode 100644
index 00000000..b6f8bed0
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSambaShare.html
@@ -0,0 +1,69 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSambaShare</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSambaShare</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSambaShare</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSambaShare</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSambaShare instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSambaShare)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDirectoryShared</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sharedDirectories</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>smbConfPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KScanDialog.html b/python/pykde/doc/classref/kio/KScanDialog.html
new file mode 100644
index 00000000..7e83299d
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KScanDialog.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KScanDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KScanDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KScanDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KScanDialog</b> (dialogFace = Tabbed, buttonMask = Close | Help, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KScanDialog instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>int</td><td>Tabbed</td></tr>
+<tr><td>buttonMask</td><td>int</td><td>Close | Help</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalImage</b> (img, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getScanDialog</b> (parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KScanDialog)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preview</b> (img, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textRecognized</b> (text, id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KScanDialogFactory.html b/python/pykde/doc/classref/kio/KScanDialogFactory.html
new file mode 100644
index 00000000..1f0fb92e
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KScanDialogFactory.html
@@ -0,0 +1,75 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KScanDialogFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KScanDialogFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KScanDialogFactory <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLibFactory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KScanDialogFactory</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KScanDialogFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createDialog</b> (parent = 0, name = 0, modal = 0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KScanDialog)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createObject</b> (parent = 0, name = 0, classname = "QObject", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"QObject"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (instanceName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KService.html b/python/pykde/doc/classref/kio/KService.html
new file mode 100644
index 00000000..e13cb2ec
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KService.html
@@ -0,0 +1,324 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KService</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KService</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KService</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSycocaEntry </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>DCOPServiceType_t</b> = {DCOP_None, DCOP_Unique, DCOP_Multi, DCOP_Wait
+}</ul>
+<h3>methods</h3><ul>
+<li><b>DCOPServiceType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(DCOPServiceType_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KService</b> (_name, _exec, _icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KService instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>_exec</td><td>QString</td><td></td></tr>
+<tr><td>_icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KService</b> (_fullpath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KService instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KService</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KService instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KService</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KService instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KService</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KService instance</i></td></tr>
+<tr><td>In versions KDE 3.1.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KService</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accessServiceTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allInitServices</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allServices</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowAsDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowMultipleFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>categories</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopEntryName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopEntryPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>exec_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>Renamed: was <i>' exec
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>genericName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasServiceType</b> (_service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialPreference</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialPreferenceForMimeType</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keywords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>library</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>locateLocal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>menuId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newServicePath</b> (showInMenu, suggestedName, menuId = 0, reservedMenuIds = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showInMenu</td><td>bool</td><td></td></tr>
+<tr><td>suggestedName</td><td>QString</td><td></td></tr>
+<tr><td>menuId</td><td>QString</td><td>0</td></tr>
+<tr><td>reservedMenuIds</td><td>QStringList</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noDisplay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentApp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pixmap</b> (_group, _force_size = 0, _state = 0, _path = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_group</td><td>KIcon.Group</td><td></td></tr>
+<tr><td>_force_size</td><td>int</td><td>0</td></tr>
+<tr><td>_state</td><td>int</td><td>0</td></tr>
+<tr><td>_path</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (_name, t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>t</td><td>QVariant.Type</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rebuildKSycoca</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceByDesktopName</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceByDesktopPath</b> (_path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceByMenuId</b> (_menuId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_menuId</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceByName</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceByStorageId</b> (_storageId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_storageId</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInitialPreference</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMenuId</b> (menuId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menuId</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTerminal</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTerminalOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>storageId</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>substituteUid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>terminal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>terminalOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>untranslatedGenericName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>username</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KServiceGroup.html b/python/pykde/doc/classref/kio/KServiceGroup.html
new file mode 100644
index 00000000..2de756f7
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KServiceGroup.html
@@ -0,0 +1,240 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServiceGroup</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServiceGroup</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServiceGroup</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSycocaEntry </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServiceGroup</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceGroup instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceGroup</b> (_fullpath, _relpath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+<tr><td>_relpath</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceGroup</b> (_str, offset, deep)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceGroup instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+<tr><td>deep</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addEntry</b> (entry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>entry</td><td>KSycocaEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowInline</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseGroup</b> (baseGroupName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>baseGroupName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>baseGroupName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childGroup</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>directoryEntryPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> (sorted, excludeNoDisplay, allowSeparators, sortByGenericName = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sorted</td><td>bool</td><td></td></tr>
+<tr><td>excludeNoDisplay</td><td>bool</td><td></td></tr>
+<tr><td>allowSeparators</td><td>bool</td><td></td></tr>
+<tr><td>sortByGenericName</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> (sorted, excludeNoDisplay)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaEntry.List)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sorted</td><td>bool</td><td></td></tr>
+<tr><td>excludeNoDisplay</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entries</b> (sorted = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.List)</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sorted</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>group</b> (relPath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>relPath</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inlineAlias</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inlineValue</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layoutInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noDisplay</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseAttribute</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>showEmptyMenu (bool) showInline (bool) showInlineHeader (bool) showInlineAlias (bool) inlineValue (int)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>relPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>root</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceGroup.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllowInline</b> (_b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInlineAlias</b> (_b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInlineValue</b> (_val)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_val</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLayoutInfo</b> (layout)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>layout</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowEmptyMenu</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowInlineHeader</b> (_b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEmptyMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showInlineHeader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suppressGenericNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KServiceOffer.html b/python/pykde/doc/classref/kio/KServiceOffer.html
new file mode 100644
index 00000000..630baa15
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KServiceOffer.html
@@ -0,0 +1,79 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServiceOffer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServiceOffer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServiceOffer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServiceOffer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceOffer instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceOffer</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceOffer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KServiceOffer</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceOffer</b> (_service, _pref, _default)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceOffer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>KService.Ptr</td><td></td></tr>
+<tr><td>_pref</td><td>int</td><td></td></tr>
+<tr><td>_default</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowAsDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preference</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator &lt;</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KServiceOffer</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KServiceSeparator.html b/python/pykde/doc/classref/kio/KServiceSeparator.html
new file mode 100644
index 00000000..f4bc2638
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KServiceSeparator.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServiceSeparator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServiceSeparator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServiceSeparator</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSycocaEntry </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServiceSeparator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceSeparator instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KServiceType.html b/python/pykde/doc/classref/kio/KServiceType.html
new file mode 100644
index 00000000..bd48ce61
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KServiceType.html
@@ -0,0 +1,169 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServiceType</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServiceType</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServiceType</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSycocaEntry </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServiceType</b> (_fullpath, _name, _icon, _comment)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+<tr><td>_icon</td><td>QString</td><td></td></tr>
+<tr><td>_comment</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceType</b> (_fullpath)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceType</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KServiceType</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceType instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addService</b> (service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>service</td><td>KService.Ptr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allServiceTypes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceType.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>desktopEntryPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>inherits</b> (servTypeName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>servTypeName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KDesktopFile</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDerived</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offers</b> (_servicetype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.List)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_servicetype</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentServiceType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceType.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyDef</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant.Type)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyDefNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyDefs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QVariant.Type>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>propertyNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceType</b> (_name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceType.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>services</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.List)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KServiceTypeProfile.html b/python/pykde/doc/classref/kio/KServiceTypeProfile.html
new file mode 100644
index 00000000..a53ffe84
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KServiceTypeProfile.html
@@ -0,0 +1,111 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KServiceTypeProfile</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KServiceTypeProfile</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KServiceTypeProfile</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KServiceTypeProfile</b> (serviceType, genericServiceType = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KServiceTypeProfile instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>genericServiceType</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addService</b> (_service, _preference = 1, _allow_as_default = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>QString</td><td></td></tr>
+<tr><td>_preference</td><td>int</td><td>1</td></tr>
+<tr><td>_allow_as_default</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowAsDefault</b> (_service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configurationMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceTypeProfile.OfferList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offers</b> (servicetype, genericServiceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceTypeProfile.OfferList)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>servicetype</td><td>QString</td><td></td></tr>
+<tr><td>genericServiceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preference</b> (_service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_service</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>preferredService</b> (serviceType, genericServiceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>genericServiceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceTypeProfile</b> (servicetype, genericServiceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KServiceTypeProfile)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>servicetype</td><td>QString</td><td></td></tr>
+<tr><td>genericServiceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serviceTypeProfiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KServiceTypeProfile>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfigurationMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KShellCompletion.html b/python/pykde/doc/classref/kio/KShellCompletion.html
new file mode 100644
index 00000000..6dac1a74
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KShellCompletion.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShellCompletion</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShellCompletion</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShellCompletion</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KURLCompletion </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KShellCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShellCompletion instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatch</b> (match)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>match</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>matches</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KShred.html b/python/pykde/doc/classref/kio/KShred.html
new file mode 100644
index 00000000..25edbc01
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KShred.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KShred</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KShred</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KShred</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KShred</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KShred instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fill0s</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fill1s</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillbyte</b> (byte)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>byte</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillpattern</b> (pattern, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>uchar</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillrandom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (message)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>message</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processedSize</b> (bytes)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bytes</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shred</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shred</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSimpleFileFilter.html b/python/pykde/doc/classref/kio/KSimpleFileFilter.html
new file mode 100644
index 00000000..6992f02a
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSimpleFileFilter.html
@@ -0,0 +1,104 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSimpleFileFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSimpleFileFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSimpleFileFilter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KFileFilter </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSimpleFileFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSimpleFileFilter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterDotFiles</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterSpecials</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mimeFilters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modeFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(mode_t)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nameFilters</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>passesFilter</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilterDotFiles</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilterSpecials</b> (filter)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filter</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMimeFilters</b> (mimeFilters)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeFilters</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModeFilter</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>mode_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNameFilters</b> (nameFilters, caseSensitive, separator = ' ')
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nameFilters</td><td>QString</td><td></td></tr>
+<tr><td>caseSensitive</td><td>bool</td><td></td></tr>
+<tr><td>separator</td><td>QChar</td><td>' '</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNameFilters</b> (nameFilters)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>nameFilters</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSycoca.html b/python/pykde/doc/classref/kio/KSycoca.html
new file mode 100644
index 00000000..db030226
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSycoca.html
@@ -0,0 +1,172 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSycoca</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSycoca</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSycoca</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSycoca</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycoca instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSycoca</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycoca instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addFactory</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KSycocaFactory</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allResourceDirs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkVersion</b> (abortOnError = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>abortOnError</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeDatabase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>databaseChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>determineRelativePath</b> (_fullpath, _resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_fullpath</td><td>QString</td><td></td></tr>
+<tr><td>_resource</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>disableAutoRebuild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findEntry</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDataStream) type (KSycocaType)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFactory</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDataStream)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>KSycocaFactoryId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flagError</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfaces</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isBuilding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isChanged</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kfsstnd_prefixes</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>language</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>notifyDatabaseChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openDatabase</b> (openDummyIfNotFound = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>openDummyIfNotFound</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readError</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycoca)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>timeStamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSignature</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>version</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>_self</td><td>KSycoca*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSycocaDict.html b/python/pykde/doc/classref/kio/KSycocaDict.html
new file mode 100644
index 00000000..578ef0aa
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSycocaDict.html
@@ -0,0 +1,96 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSycocaDict</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSycocaDict</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href= "../../index.html">Table of contents</a></td></tr> <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSycocaDict</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSycocaDict</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycocaDict instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSycocaDict</b> (str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycocaDict instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> (key, payload)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+<tr><td>payload</td><td>KSycocaEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>count</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(uint)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find_string</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hashKey</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Q_UINT32)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSycocaEntry.html b/python/pykde/doc/classref/kio/KSycocaEntry.html
new file mode 100644
index 00000000..eaad2a11
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSycocaEntry.html
@@ -0,0 +1,111 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSycocaEntry</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSycocaEntry</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSycocaEntry <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSycocaEntry</b> (path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycocaEntry instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSycocaEntry</b> (_str, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycocaEntry instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_str</td><td>QDataStream</td><td></td></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDeleted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isType</b> (t)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>t</td><td>KSycocaType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isValid</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>read</b> (s, str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QDataStream</td><td></td></tr>
+<tr><td>str</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>read</b> (s, list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QDataStream</td><td></td></tr>
+<tr><td>list</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sycocaType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaType)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KSycocaFactory.html b/python/pykde/doc/classref/kio/KSycocaFactory.html
new file mode 100644
index 00000000..5ac0af22
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KSycocaFactory.html
@@ -0,0 +1,104 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSycocaFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSycocaFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSycocaFactory <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSycocaFactory</b> (factory_id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSycocaFactory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>factory_id</td><td>KSycocaFactoryId</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addEntry</b> (newEntry, resource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newEntry</td><td>KSycocaEntry</td><td></td></tr>
+<tr><td>resource</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allEntries</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaEntry.List)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createEntry</b> (file, resource) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaEntry)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>file</td><td>QString</td><td></td></tr>
+<tr><td>resource</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createEntry</b> (offset) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaEntry)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>entryDict</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>factoryId</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSycocaFactoryId)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>offset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeEntry</b> (newEntry)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newEntry</td><td>KSycocaEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveHeader</b> (str)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>str</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KTar.html b/python/pykde/doc/classref/kio/KTar.html
new file mode 100644
index 00000000..ff8ae3a4
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KTar.html
@@ -0,0 +1,177 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchive </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTar</b> (filename, mimetype = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>mimetype</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KTar</b> (dev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeArchive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doneWriting</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openArchive</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting_impl</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOrigFileName</b> (fileName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fileName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir_impl</b> (name, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink_impl</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KTrader.html b/python/pykde/doc/classref/kio/KTrader.html
new file mode 100644
index 00000000..f6f26c0c
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KTrader.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KTrader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KTrader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KTrader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KTrader</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KTrader instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>query</b> (servicetype, constraint = QString .null, preferences = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTrader.OfferList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>servicetype</td><td>QString</td><td></td></tr>
+<tr><td>constraint</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>preferences</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>query</b> (servicetype, genericServiceType, constraint, preferences)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTrader.OfferList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>servicetype</td><td>QString</td><td></td></tr>
+<tr><td>genericServiceType</td><td>QString</td><td></td></tr>
+<tr><td>constraint</td><td>QString</td><td></td></tr>
+<tr><td>preferences</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTrader)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KURIFilter.html b/python/pykde/doc/classref/kio/KURIFilter.html
new file mode 100644
index 00000000..a7dc88ca
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KURIFilter.html
@@ -0,0 +1,93 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURIFilter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURIFilter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURIFilter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURIFilter</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilter instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterURI</b> (data, filters = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterURI</b> (uri, filters = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>KURL</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterURI</b> (uri, filters = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>QString</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filteredURI</b> (uri, filters = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>KURL</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filteredURI</b> (uri, filters = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>uri</td><td>QString</td><td></td></tr>
+<tr><td>filters</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginsIterator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURIFilter)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KURIFilterData.html b/python/pykde/doc/classref/kio/KURIFilterData.html
new file mode 100644
index 00000000..6bbcd414
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KURIFilterData.html
@@ -0,0 +1,137 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURIFilterData</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURIFilterData</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURIFilterData</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>URITypes</b> = {NET_PROTOCOL, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KURIFilterData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilterData instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURIFilterData</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilterData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURIFilterData</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilterData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURIFilterData</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilterData instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>absolutePath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>argsAndOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkForExecutables</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>errorMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasAbsolutePath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasArgsAndOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hasBeenFiltered</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (url = KURL(QString.null))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td>KURL(QString.null)</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAbsolutePath</b> (abs_path)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>abs_path</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCheckForExecutables</b> (check)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>check</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typedString</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uri</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>uriType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(URITypes)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KURIFilterPlugin.html b/python/pykde/doc/classref/kio/KURIFilterPlugin.html
new file mode 100644
index 00000000..d0a6b67f
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KURIFilterPlugin.html
@@ -0,0 +1,100 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURIFilterPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURIFilterPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURIFilterPlugin <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KURIFilterPlugin</b> (parent = 0, name = 0, pri = 1.0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURIFilterPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>pri</td><td>double</td><td>1.0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configModule</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>filterURI</b> (data) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>priority</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(double)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setArguments</b> (data, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+<tr><td>args</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setErrorMsg</b> (data, errmsg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+<tr><td>errmsg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFilteredURI</b> (data, uri)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+<tr><td>uri</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURIType</b> (data, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>KURIFilterData</td><td></td></tr>
+<tr><td>type</td><td>KURIFilterData.URITypes</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KURLCompletion.html b/python/pykde/doc/classref/kio/KURLCompletion.html
new file mode 100644
index 00000000..55977321
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KURLCompletion.html
@@ -0,0 +1,152 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLCompletion</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLCompletion</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLCompletion</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KCompletion </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Mode</b> = {ExeCompletion, FileCompletion, DirCompletion
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KURLCompletion</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLCompletion instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KURLCompletion</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KURLCompletion instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURLCompletion.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QCustomEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dir</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRunning</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>makeCompletion</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Mode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatch</b> (match)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>match</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>matches</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>postProcessMatches</b> (matches)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceEnv</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceHome</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacedPath</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacedPath</b> (text, replaceHome, replaceEnv = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>replaceHome</td><td>bool</td><td></td></tr>
+<tr><td>replaceEnv</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDir</b> (dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMode</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>KURLCompletion.Mode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReplaceEnv</b> (replace)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>replace</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReplaceHome</b> (replace)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>replace</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotEntries</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>a1</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotIOFinished</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KURLPixmapProvider.html b/python/pykde/doc/classref/kio/KURLPixmapProvider.html
new file mode 100644
index 00000000..58551725
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KURLPixmapProvider.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KURLPixmapProvider</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KURLPixmapProvider</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KURLPixmapProvider</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KPixmapProvider </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>pixmapFor</b> (url, size = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KZip.html b/python/pykde/doc/classref/kio/KZip.html
new file mode 100644
index 00000000..61d9d641
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KZip.html
@@ -0,0 +1,228 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KZip</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KZip</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KZip</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchive </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Compression</b> = {NoCompression, DeflateCompression
+}<li><b>ExtraField</b> = {NoExtraField, ModificationTime, DefaultExtraField
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KZip</b> (filename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KZip instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KZip</b> (dev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KZip instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dev</td><td>QIODevice</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeArchive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compression</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KZip.Compression)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doneWriting</b> (size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>extraField</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KZip.ExtraField)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openArchive</b> (mode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mode</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareWriting_impl</b> (name, user, group, size, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompression</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>KZip.Compression</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExtraField</b> (ef)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ef</td><td>KZip.ExtraField</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>virtual_hook</b> (id, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>void</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeData</b> (data, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeData_impl</b> (data, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeDir</b> (name, user, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeFile</b> (name, user, group, size, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeFile</b> (name, user, group, size, perm, atime, mtime, ctime, data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>size</td><td>uint</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+<tr><td>data</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeSymLink_impl</b> (name, target, user, group, perm, atime, mtime, ctime)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>target</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>perm</td><td>mode_t</td><td></td></tr>
+<tr><td>atime</td><td>time_t</td><td></td></tr>
+<tr><td>mtime</td><td>time_t</td><td></td></tr>
+<tr><td>ctime</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/KZipFileEntry.html b/python/pykde/doc/classref/kio/KZipFileEntry.html
new file mode 100644
index 00000000..e6124a21
--- /dev/null
+++ b/python/pykde/doc/classref/kio/KZipFileEntry.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KZipFileEntry</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KZipFileEntry</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KZipFileEntry</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KArchiveFile </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KZipFileEntry</b> (zip, name, access, date, user, group, symlink, path, start, uncompressedSize, encoding, compressedSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KZipFileEntry instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>zip</td><td>KZip</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>access</td><td>int</td><td></td></tr>
+<tr><td>date</td><td>int</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+<tr><td>symlink</td><td>QString</td><td></td></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>start</td><td>Q_LONG</td><td></td></tr>
+<tr><td>uncompressedSize</td><td>Q_LONG</td><td></td></tr>
+<tr><td>encoding</td><td>int</td><td></td></tr>
+<tr><td>compressedSize</td><td>Q_LONG</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>compressedSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Q_LONG)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>crc32</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>data</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QByteArray)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>device</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QIODevice)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>headerStart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Q_LONG)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>path</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCRC32</b> (crc32)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>crc32</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCompressedSize</b> (compressedSize)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>compressedSize</td><td>Q_LONG</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHeaderStart</b> (headerstart)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>headerstart</td><td>Q_LONG</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/Observer.html b/python/pykde/doc/classref/kio/Observer.html
new file mode 100644
index 00000000..b1717f94
--- /dev/null
+++ b/python/pykde/doc/classref/kio/Observer.html
@@ -0,0 +1,289 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class Observer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class Observer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>Observer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, DCOPObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Observer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Observer instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>functions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interfaces</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>jobFinished</b> (progressId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progressId</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>killJob</b> (progressId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progressId</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (progressId, type, text, caption, buttonYes, buttonNo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progressId</td><td>int</td><td></td></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonYes</td><td>QString</td><td></td></tr>
+<tr><td>buttonNo</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>messageBox</b> (progressId, type, text, caption, buttonYes, buttonNo, dontAskAgainName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progressId</td><td>int</td><td></td></tr>
+<tr><td>type</td><td>int</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>buttonYes</td><td>QString</td><td></td></tr>
+<tr><td>buttonNo</td><td>QString</td><td></td></tr>
+<tr><td>dontAskAgainName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metadata</b> (progressId)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>progressId</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mounting</b> (a0, dev, point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dev</td><td>QString</td><td></td></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newJob</b> (job, showProgress)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>showProgress</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (prompt, user, pass, readOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>prompt</td><td>QString</td><td></td></tr>
+<tr><td>user</td><td>QString</td><td></td></tr>
+<tr><td>pass</td><td>QString</td><td></td></tr>
+<tr><td>readOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openPassDlg</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KIO.AuthInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open_RenameDlg</b> (job, caption, src, dest, mode, newDest, sizeSrc = -1, sizeDest = -1, ctimeSrc = -1, ctimeDest = -1, mtimeSrc = -1, mtimeDest = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.RenameDlg_Result)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>src</td><td>QString</td><td></td></tr>
+<tr><td>dest</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>KIO.RenameDlg_Mode</td><td></td></tr>
+<tr><td>newDest</td><td>QString</td><td></td></tr>
+<tr><td>sizeSrc</td><td>KIO.filesize_t</td><td>-1</td></tr>
+<tr><td>sizeDest</td><td>KIO.filesize_t</td><td>-1</td></tr>
+<tr><td>ctimeSrc</td><td>time_t</td><td>-1</td></tr>
+<tr><td>ctimeDest</td><td>time_t</td><td>-1</td></tr>
+<tr><td>mtimeSrc</td><td>time_t</td><td>-1</td></tr>
+<tr><td>mtimeDest</td><td>time_t</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open_SkipDlg</b> (job, multi, error_text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.SkipDlg_Result)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>multi</td><td>bool</td><td></td></tr>
+<tr><td>error_text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>process</b> (fun, data, replyType, replyData)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.4 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fun</td><td>QCString</td><td></td></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+<tr><td>replyType</td><td>QCString</td><td></td></tr>
+<tr><td>replyData</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Observer)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCanResume</b> (a0, offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>offset</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCopying</b> (a0, from, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCreatingDir</b> (a0, dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dir</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDeleting</b> (a0, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotInfoMessage</b> (a0, msg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>msg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMoving</b> (a0, from, to)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>from</td><td>KURL</td><td></td></tr>
+<tr><td>to</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotPercent</b> (a0, percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>percent</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedDirs</b> (a0, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedFiles</b> (a0, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessedSize</b> (a0, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpeed</b> (a0, speed)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>speed</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalDirs</b> (a0, dirs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>dirs</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalFiles</b> (a0, files)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>files</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTotalSize</b> (a0, size)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>size</td><td>KIO.filesize_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotTransferring</b> (a0, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stating</b> (a0, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unmounting</b> (a0, point)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+<tr><td>point</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>~Observer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/RenameDlgPlugin.html b/python/pykde/doc/classref/kio/RenameDlgPlugin.html
new file mode 100644
index 00000000..97908398
--- /dev/null
+++ b/python/pykde/doc/classref/kio/RenameDlgPlugin.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class RenameDlgPlugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class RenameDlgPlugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>RenameDlgPlugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>RenameDlgPlugin</b> (dialog, name, a0 = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a RenameDlgPlugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialog</td><td>QDialog</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>a0</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.RenameDlg_Mode</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+<tr><td>a2</td><td>QString</td><td></td></tr>
+<tr><td>a3</td><td>QString</td><td></td></tr>
+<tr><td>a4</td><td>QString</td><td></td></tr>
+<tr><td>a5</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>a6</td><td>KIO.filesize_t</td><td></td></tr>
+<tr><td>a7</td><td>time_t</td><td></td></tr>
+<tr><td>a8</td><td>time_t</td><td></td></tr>
+<tr><td>a9</td><td>time_t</td><td></td></tr>
+<tr><td>a10</td><td>time_t</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/ThumbCreator.html b/python/pykde/doc/classref/kio/ThumbCreator.html
new file mode 100644
index 00000000..e75f3f9d
--- /dev/null
+++ b/python/pykde/doc/classref/kio/ThumbCreator.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class ThumbCreator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class ThumbCreator</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kio</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>ThumbCreator <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Flags</b> = {None, DrawFrame, BlendIcon
+}</ul>
+<h3>methods</h3><ul>
+<li><b>create</b> (path, width, height, img) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>path</td><td>QString</td><td></td></tr>
+<tr><td>width</td><td>int</td><td></td></tr>
+<tr><td>height</td><td>int</td><td></td></tr>
+<tr><td>img</td><td>QImage</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>flags</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(ThumbCreator.Flags)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/index.html b/python/pykde/doc/classref/kio/index.html
new file mode 100644
index 00000000..e573f530
--- /dev/null
+++ b/python/pykde/doc/classref/kio/index.html
@@ -0,0 +1,148 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kio</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kio Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kio-globals.html">kio Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KACL - KIO.DavJob</th></tr>
+<tr ><td><a href="KACL.html">KACL</a></td></tr>
+<tr ><td><a href="KAr.html">KAr</a></td></tr>
+<tr ><td><a href="KArchive.html"><i>KArchive</i></a></td></tr>
+<tr ><td><a href="KArchiveDirectory.html">KArchiveDirectory</a></td></tr>
+<tr ><td><a href="KArchiveEntry.html">KArchiveEntry</a></td></tr>
+<tr ><td><a href="KArchiveFile.html">KArchiveFile</a></td></tr>
+<tr ><td><a href="KDCOPServiceStarter.html">KDCOPServiceStarter</a></td></tr>
+<tr ><td><a href="KDEDesktopMimeType.html">KDEDesktopMimeType</a></td></tr>
+<tr ><td><a href="KDEDesktopMimeType.Service.html">KDEDesktopMimeType.Service</a></td></tr>
+<tr ><td><a href="KDataTool.html"><i>KDataTool</i></a></td></tr>
+<tr ><td><a href="KDataToolAction.html">KDataToolAction</a></td></tr>
+<tr ><td><a href="KDataToolInfo.html">KDataToolInfo</a></td></tr>
+<tr ><td><a href="KDirLister.html">KDirLister</a></td></tr>
+<tr ><td><a href="KDirNotify.html"><i>KDirNotify</i></a></td></tr>
+<tr ><td><a href="KDirWatch.html">KDirWatch</a></td></tr>
+<tr ><td><a href="KEMailSettings.html">KEMailSettings</a></td></tr>
+<tr ><td><a href="KExecMimeType.html">KExecMimeType</a></td></tr>
+<tr ><td><a href="KFileFilter.html"><i>KFileFilter</i></a></td></tr>
+<tr ><td><a href="KFileItem.html">KFileItem</a></td></tr>
+<tr ><td><a href="KFileMetaInfo.html">KFileMetaInfo</a></td></tr>
+<tr ><td><a href="KFileMetaInfoGroup.html">KFileMetaInfoGroup</a></td></tr>
+<tr ><td><a href="KFileMetaInfoItem.html">KFileMetaInfoItem</a></td></tr>
+<tr ><td><a href="KFileMetaInfoProvider.html">KFileMetaInfoProvider</a></td></tr>
+<tr ><td><a href="KFileMimeTypeInfo.html">KFileMimeTypeInfo</a></td></tr>
+<tr ><td><a href="KFileMimeTypeInfo.GroupInfo.html">KFileMimeTypeInfo.GroupInfo</a></td></tr>
+<tr ><td><a href="KFileMimeTypeInfo.ItemInfo.html">KFileMimeTypeInfo.ItemInfo</a></td></tr>
+<tr ><td><a href="KFilePlugin.html"><i>KFilePlugin</i></a></td></tr>
+<tr ><td><a href="KFileShare.html">KFileShare</a></td></tr>
+<tr ><td><a href="KFilterBase.html"><i>KFilterBase</i></a></td></tr>
+<tr ><td><a href="KFilterDev.html">KFilterDev</a></td></tr>
+<tr ><td><a href="KFolderType.html">KFolderType</a></td></tr>
+<tr ><td><a href="KIO.html">KIO</a></td></tr>
+<tr ><td><a href="KIO.AuthInfo.html">KIO.AuthInfo</a></td></tr>
+<tr ><td><a href="KIO.ChmodJob.html">KIO.ChmodJob</a></td></tr>
+<tr ><td><a href="KIO.Connection.html">KIO.Connection</a></td></tr>
+<tr ><td><a href="KIO.CopyInfo.html">KIO.CopyInfo</a></td></tr>
+<tr ><td><a href="KIO.CopyJob.html">KIO.CopyJob</a></td></tr>
+<tr ><td><a href="KIO.DavJob.html">KIO.DavJob</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KIO.DefaultProgress - KMimeTypeChooserDialog</th></tr>
+<tr ><td><a href="KIO.DefaultProgress.html">KIO.DefaultProgress</a></td></tr>
+<tr ><td><a href="KIO.DeleteJob.html">KIO.DeleteJob</a></td></tr>
+<tr ><td><a href="KIO.DirectCopyJob.html">KIO.DirectCopyJob</a></td></tr>
+<tr ><td><a href="KIO.FileCopyJob.html">KIO.FileCopyJob</a></td></tr>
+<tr ><td><a href="KIO.ForwardingSlaveBase.html"><i>KIO.ForwardingSlaveBase</i></a></td></tr>
+<tr ><td><a href="KIO.Job.html">KIO.Job</a></td></tr>
+<tr ><td><a href="KIO.ListJob.html">KIO.ListJob</a></td></tr>
+<tr ><td><a href="KIO.MetaInfoJob.html">KIO.MetaInfoJob</a></td></tr>
+<tr ><td><a href="KIO.MimetypeJob.html">KIO.MimetypeJob</a></td></tr>
+<tr ><td><a href="KIO.MkdirJob.html">KIO.MkdirJob</a></td></tr>
+<tr ><td><a href="KIO.MultiGetJob.html">KIO.MultiGetJob</a></td></tr>
+<tr ><td><a href="KIO.NetAccess.html">KIO.NetAccess</a></td></tr>
+<tr ><td><a href="KIO.NetRC.html">KIO.NetRC</a></td></tr>
+<tr ><td><a href="KIO.NetRC.AutoLogin.html">KIO.NetRC.AutoLogin</a></td></tr>
+<tr ><td><a href="KIO.PasswordDialog.html">KIO.PasswordDialog</a></td></tr>
+<tr ><td><a href="KIO.PreviewJob.html">KIO.PreviewJob</a></td></tr>
+<tr ><td><a href="KIO.ProgressBase.html">KIO.ProgressBase</a></td></tr>
+<tr ><td><a href="KIO.Scheduler.html">KIO.Scheduler</a></td></tr>
+<tr ><td><a href="KIO.SessionData.html">KIO.SessionData</a></td></tr>
+<tr ><td><a href="KIO.SimpleJob.html">KIO.SimpleJob</a></td></tr>
+<tr ><td><a href="KIO.Slave.html">KIO.Slave</a></td></tr>
+<tr ><td><a href="KIO.SlaveBase.html">KIO.SlaveBase</a></td></tr>
+<tr ><td><a href="KIO.SlaveConfig.html">KIO.SlaveConfig</a></td></tr>
+<tr ><td><a href="KIO.SlaveInterface.html">KIO.SlaveInterface</a></td></tr>
+<tr ><td><a href="KIO.StatJob.html">KIO.StatJob</a></td></tr>
+<tr ><td><a href="KIO.StatusbarProgress.html">KIO.StatusbarProgress</a></td></tr>
+<tr ><td><a href="KIO.StoredTransferJob.html">KIO.StoredTransferJob</a></td></tr>
+<tr ><td><a href="KIO.TCPSlaveBase.html">KIO.TCPSlaveBase</a></td></tr>
+<tr ><td><a href="KIO.Task.html">KIO.Task</a></td></tr>
+<tr ><td><a href="KIO.TransferJob.html">KIO.TransferJob</a></td></tr>
+<tr ><td><a href="KIO.UDSAtom.html">KIO.UDSAtom</a></td></tr>
+<tr ><td><a href="KImageIO.html">KImageIO</a></td></tr>
+<tr ><td><a href="KMimeMagic.html">KMimeMagic</a></td></tr>
+<tr ><td><a href="KMimeMagicResult.html">KMimeMagicResult</a></td></tr>
+<tr ><td><a href="KMimeType.html">KMimeType</a></td></tr>
+<tr ><td><a href="KMimeType.Format.html">KMimeType.Format</a></td></tr>
+<tr ><td><a href="KMimeTypeChooser.html">KMimeTypeChooser</a></td></tr>
+<tr ><td><a href="KMimeTypeChooserDialog.html">KMimeTypeChooserDialog</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KNFSShare - ThumbCreator</th></tr>
+<tr ><td><a href="KNFSShare.html">KNFSShare</a></td></tr>
+<tr ><td><a href="KOCRDialog.html">KOCRDialog</a></td></tr>
+<tr ><td><a href="KOCRDialogFactory.html"><i>KOCRDialogFactory</i></a></td></tr>
+<tr ><td><a href="KOpenWithHandler.html">KOpenWithHandler</a></td></tr>
+<tr ><td><a href="KProcessRunner.html">KProcessRunner</a></td></tr>
+<tr ><td><a href="KProtocolInfo.html">KProtocolInfo</a></td></tr>
+<tr ><td><a href="KProtocolInfo.ExtraField.html">KProtocolInfo.ExtraField</a></td></tr>
+<tr ><td><a href="KProtocolManager.html">KProtocolManager</a></td></tr>
+<tr ><td><a href="KRemoteEncoding.html">KRemoteEncoding</a></td></tr>
+<tr ><td><a href="KRun.html">KRun</a></td></tr>
+<tr ><td><a href="KSambaShare.html">KSambaShare</a></td></tr>
+<tr ><td><a href="KScanDialog.html">KScanDialog</a></td></tr>
+<tr ><td><a href="KScanDialogFactory.html"><i>KScanDialogFactory</i></a></td></tr>
+<tr ><td><a href="KService.html">KService</a></td></tr>
+<tr ><td><a href="KServiceGroup.html">KServiceGroup</a></td></tr>
+<tr ><td><a href="KServiceOffer.html">KServiceOffer</a></td></tr>
+<tr ><td><a href="KServiceSeparator.html">KServiceSeparator</a></td></tr>
+<tr ><td><a href="KServiceType.html">KServiceType</a></td></tr>
+<tr ><td><a href="KServiceTypeProfile.html">KServiceTypeProfile</a></td></tr>
+<tr ><td><a href="KShellCompletion.html">KShellCompletion</a></td></tr>
+<tr ><td><a href="KShred.html">KShred</a></td></tr>
+<tr ><td><a href="KSimpleFileFilter.html">KSimpleFileFilter</a></td></tr>
+<tr ><td><a href="KSycoca.html">KSycoca</a></td></tr>
+<tr ><td><a href="KSycocaEntry.html"><i>KSycocaEntry</i></a></td></tr>
+<tr ><td><a href="KSycocaFactory.html"><i>KSycocaFactory</i></a></td></tr>
+<tr ><td><a href="KTar.html">KTar</a></td></tr>
+<tr ><td><a href="KTrader.html">KTrader</a></td></tr>
+<tr ><td><a href="KURIFilter.html">KURIFilter</a></td></tr>
+<tr ><td><a href="KURIFilterData.html">KURIFilterData</a></td></tr>
+<tr ><td><a href="KURIFilterPlugin.html"><i>KURIFilterPlugin</i></a></td></tr>
+<tr ><td><a href="KURLCompletion.html">KURLCompletion</a></td></tr>
+<tr ><td><a href="KURLPixmapProvider.html">KURLPixmapProvider</a></td></tr>
+<tr ><td><a href="KZip.html">KZip</a></td></tr>
+<tr ><td><a href="KZipFileEntry.html">KZipFileEntry</a></td></tr>
+<tr ><td><a href="Observer.html">Observer</a></td></tr>
+<tr ><td><a href="RenameDlgPlugin.html">RenameDlgPlugin</a></td></tr>
+<tr ><td><a href="ThumbCreator.html"><i>ThumbCreator</i></a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kio/kio-globals.html b/python/pykde/doc/classref/kio/kio-globals.html
new file mode 100644
index 00000000..3c245a51
--- /dev/null
+++ b/python/pykde/doc/classref/kio/kio-globals.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kio globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kio Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kio Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>enums</h3><ul>
+<li><b><a href="sip/kio/all-globals.html#KSycocaFactoryId">KSycocaFactoryId</a></b> = {KST_KServiceFactory, KST_KServiceTypeFactory, KST_KServiceGroupFactory, KST_KImageIO, KST_KProtocolInfoFactory, KST_CTimeInfo
+}<li><b><a href="sip/kio/all-globals.html#KSycocaType">KSycocaType</a></b> = {KST_KSycocaEntry, KST_KService, KST_KServiceType, KST_KMimeType, KST_KFolderType, KST_KDEDesktopMimeType, KST_KExecMimeType, KST_KServiceGroup, KST_KImageIOFormat, KST_KProtocolInfo, KST_KServiceSeparator, KST_KCustom
+}<li><b><a href="sip/kio/all-globals.html#KSycocaType">KSycocaType</a></b> = {KST_KSycocaEntry, KST_KService, KST_KServiceType, KST_KMimeType, KST_KFolderType, KST_KDEDesktopMimeType, KST_KExecMimeType, KST_KServiceGroup, KST_KImageIOFormat, KST_KProtocolInfo, KST_KCustom
+}</ul>
+<h3>global methods</h3><ul>
+<li><b>testKIOMetaData</b> (dict)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.MetaData),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dict</td><td>KIO.MetaData</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testKIOUDSEntry</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.UDSEntry),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KIO.UDSEntry</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testKIOUDSEntryList</b> (list)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KIO.UDSEntryList),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>KIO.UDSEntryList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdi.html b/python/pykde/doc/classref/kmdi/KMdi.html
new file mode 100644
index 00000000..45f32a12
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdi.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdi</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdi</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdi</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>AddWindowFlags</b> = {StandardAdd, Maximize, Minimize, Hide, Detach, ToolWindow, UseKMdiSizeHint
+}<li><b>AddWindowFlags</b> = {StandardAdd, Maximize, Minimize, Hide, Detach, ToolWindow, UseKMdiSizeHint
+}<li><b>EventType</b> = {EV_Move, EV_DragBegin, EV_DragEnd, EV_ResizeBegin, EV_ResizeEnd
+}<li><b>MdiMode</b> = {UndefinedMode, ToplevelMode, ChildframeMode, TabPageMode, IDEAlMode
+}<li><b>TabWidgetVisibility</b> = {AlwaysShowTabs, ShowWhenMoreThanOneTab, NeverShowTabs
+}<li><b>ToolviewStyle</b> = {IconOnly, TextOnly, TextAndIcon
+}</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildArea.html b/python/pykde/doc/classref/kmdi/KMdiChildArea.html
new file mode 100644
index 00000000..1445e778
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildArea.html
@@ -0,0 +1,214 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildArea</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildArea</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildArea</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildArea</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildArea instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cascadeMaximized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cascadeWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childMinimized</b> (lpC, bWasMaximized)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lpC</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>bWasMaximized</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>destroyChild</b> (child, focusTopChild = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>focusTopChild</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>destroyChildButNotItsView</b> (lpC, bFocusTopChild = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lpC</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>bFocusTopChild</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandHorizontal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandVertical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusTopChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCaptionColors</b> (pal, activeBG, activeFG, inactiveBG, inactiveFG)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pal</td><td>QPalette</td><td></td></tr>
+<tr><td>activeBG</td><td>QColor</td><td></td></tr>
+<tr><td>activeFG</td><td>QColor</td><td></td></tr>
+<tr><td>inactiveBG</td><td>QColor</td><td></td></tr>
+<tr><td>inactiveFG</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getCascadePoint</b> (indexOfWindow = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPoint)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>indexOfWindow</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getVisibleChildCount</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChildFrmClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layoutMinimizedChildren</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manageChild</b> (lpC, bShow = 1, bCascade = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lpC</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>bShow</td><td>bool</td><td>1</td></tr>
+<tr><td>bCascade</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noMaximizedChildFrmLeft</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nowMaximized</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupWindowMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMdiCaptionActiveBackColor</b> (clr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>clr</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMdiCaptionActiveForeColor</b> (clr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>clr</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMdiCaptionFont</b> (fnt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fnt</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMdiCaptionInactiveBackColor</b> (clr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>clr</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMdiCaptionInactiveForeColor</b> (clr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>clr</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTopChild</b> (child, setFocus = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>child</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>setFocus</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sysButtonConnectionsMustChange</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>a1</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tileAllInternal</b> (maxWnds)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxWnds</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tileAnodine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tilePragma</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tileVertically</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>topChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildFrm)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_defaultChildFrmSize</td><td>QSize</td></tr>
+<tr><td>m_pZ</td><td>QPtrList<KMdiChildFrm>*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrm.html b/python/pykde/doc/classref/kmdi/KMdiChildFrm.html
new file mode 100644
index 00000000..9c92fd57
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrm.html
@@ -0,0 +1,254 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrm</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrm</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrm</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QFrame </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>MdiWindowState</b> = {Normal, Maximized, Minimized
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMdiChildFrm</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrm instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KMdiChildArea</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>captionHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closePressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doResize</b> (captionOnly)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>captionOnly</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableClose</b> (bEnable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bEnable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getResizeCorner</b> (ax, ay)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ax</td><td>int</td><td></td></tr>
+<tr><td>ay</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isInDrag</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isInResize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leaveEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkChildren</b> (pFocPolDict)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>linkChildren</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.2 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QDict<QWidget.FocusPolicy></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximizePressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mdiAreaContentsRect</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimizePressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveEvent</b> (me)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>me</td><td>QMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>raiseAndActivate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redecorateButtons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeWindow</b> (resizeCorner, x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resizeCorner</td><td>int</td><td></td></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restorePressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClient</b> (w, bAutomaticResize = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>bAutomaticResize</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (pxm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pxm</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinimumSize</b> (minw, minh)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minw</td><td>int</td><td></td></tr>
+<tr><td>minh</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setResizeCursor</b> (resizeCorner)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resizeCorner</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRestoreGeometry</b> (newRestGeo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newRestGeo</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (state, bAnimate = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>KMdiChildFrm.MdiWindowState</td><td></td></tr>
+<tr><td>bAnimate</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showSystemMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_resizeViaSystemMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>state</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildFrm.MdiWindowState)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchToMinimizeLayout</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>systemMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>undockPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unlinkChildren</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDict<QWidget.FocusPolicy>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsetClient</b> (positionOffset = QPoint (0 ,0 ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>positionOffset</td><td>QPoint</td><td>QPoint (0 ,0 )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unsetResizeCursor</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateRects</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_pClient</td><td>KMdiChildView*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmCaption.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmCaption.html
new file mode 100644
index 00000000..b6a2fce0
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmCaption.html
@@ -0,0 +1,106 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmCaption</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmCaption</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmCaption</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmCaption</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmCaption instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abbreviateText</b> (origStr, maxWidth)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>origStr</td><td>QString</td><td></td></tr>
+<tr><td>maxWidth</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>heightHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseDoubleClickEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseReleaseEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>paintEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QPaintEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActive</b> (bActive)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bActive</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_moveViaSystemMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_szCaption</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmDragBeginEvent.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmDragBeginEvent.html
new file mode 100644
index 00000000..ea23bf73
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmDragBeginEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmDragBeginEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmDragBeginEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmDragBeginEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmDragBeginEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmDragBeginEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmDragEndEvent.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmDragEndEvent.html
new file mode 100644
index 00000000..4482c675
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmDragEndEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmDragEndEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmDragEndEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmDragEndEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmDragEndEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmDragEndEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmMoveEvent.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmMoveEvent.html
new file mode 100644
index 00000000..1b5fb0d4
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmMoveEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmMoveEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmMoveEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmMoveEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmMoveEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmMoveEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMoveEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeBeginEvent.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeBeginEvent.html
new file mode 100644
index 00000000..8cbaa806
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeBeginEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmResizeBeginEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmResizeBeginEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmResizeBeginEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmResizeBeginEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmResizeBeginEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeEndEvent.html b/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeEndEvent.html
new file mode 100644
index 00000000..4559862b
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildFrmResizeEndEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildFrmResizeEndEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildFrmResizeEndEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildFrmResizeEndEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildFrmResizeEndEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildFrmResizeEndEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiChildView.html b/python/pykde/doc/classref/kmdi/KMdiChildView.html
new file mode 100644
index 00000000..2a98f366
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiChildView.html
@@ -0,0 +1,385 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiChildView</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiChildView</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiChildView</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiChildView</b> (caption, parentWidget = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMdiChildView</b> (parentWidget = 0, name = 0, f = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiChildView instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activate</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attachWindow</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>caption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>captionUpdated</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childWindowCloseRequest</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clickedInDockMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clickedInWindowMenu</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deactivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detach</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detachWindow</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>a1</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (obj, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>externalGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusInEventOccurs</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusOutEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QFocusEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>focusedChildWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getTimeStamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QDateTime)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>gotFocus</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconUpdated</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>internalGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAttached</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isAttachedNow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isDetachedNow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMaximized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMaximizedNow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMinimized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMinimizedNow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isRestoredNow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isToolView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lostFocus</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximize</b> (bAnimate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAnimate</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>maximize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mdiParent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildFrm)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mdiParentNowMaximized</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimize</b> (bAnimate)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bAnimate</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>minimize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>myIconPtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPixmap)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>raise_</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>Renamed: was <i>' raise
+'</i> in C++</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeEventFilterForAllChildren</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restore</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreGeometry</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QRect)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setCaption</b> (szCaption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>szCaption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setExternalGeometry</b> (newGeomety)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newGeomety</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFirstFocusableChildWidget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInternalGeometry</b> (newGeomety)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newGeomety</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLastFocusableChildWidget</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMDICaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMaximumSize</b> (maxw, maxh)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>maxw</td><td>int</td><td></td></tr>
+<tr><td>maxh</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinimumSize</b> (minw, minh)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minw</td><td>int</td><td></td></tr>
+<tr><td>minh</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRestoreGeometry</b> (newRestGeo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newRestGeo</td><td>QRect</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindowMenuID</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMaximized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showMinimized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showNormal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_childDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_clickedInDockMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_clickedInWindowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabCaption</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabCaptionChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>trackIconAndCaptionChanges</b> (view)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateTimeStamp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowCaptionChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>youAreAttached</b> (lpC)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lpC</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>youAreDetached</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiMainFrm.html b/python/pykde/doc/classref/kmdi/KMdiMainFrm.html
new file mode 100644
index 00000000..72c004f5
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiMainFrm.html
@@ -0,0 +1,580 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiMainFrm</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiMainFrm</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiMainFrm</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.DockMainWindow </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ExistsAs</b> = {DocumentView, ToolView, AnyView
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMdiMainFrm</b> (parentWidget, name = "", mdiMode = KMdi .ChildframeMode, flags = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiMainFrm instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>""</td></tr>
+<tr><td>mdiMode</td><td>KMdi.MdiMode</td><td>KMdi .ChildframeMode</td></tr>
+<tr><td>flags</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateFirstWin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateLastWin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateNextWin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activatePrevWin</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateView</b> (index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateView</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildView)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addToolWindow</b> (pWnd, pos = KDockWidget .DockNone, pTargetWnd = 0, percent = 50, tabToolTip = 0, tabCaption = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiToolViewAccessor)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>QWidget</td><td></td></tr>
+<tr><td>pos</td><td>KDockWidget.DockPosition</td><td>KDockWidget .DockNone</td></tr>
+<tr><td>pTargetWnd</td><td>QWidget</td><td>0</td></tr>
+<tr><td>percent</td><td>int</td><td>50</td></tr>
+<tr><td>tabToolTip</td><td>QString</td><td>0</td></tr>
+<tr><td>tabCaption</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWindow</b> (pWnd, flags = KMdi .StandardAdd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td>KMdi .StandardAdd</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWindow</b> (pWnd, flags, index)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWindow</b> (pWnd, pos, flags = KMdi .StandardAdd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>pos</td><td>QPoint</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td>KMdi .StandardAdd</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWindow</b> (pWnd, rectNormal, flags = KMdi .StandardAdd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>rectNormal</td><td>QRect</td><td></td></tr>
+<tr><td>flags</td><td>int</td><td>KMdi .StandardAdd</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>applyOptions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>attachWindow</b> (pWnd, bShow = 1, bAutomaticResize = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>bShow</td><td>bool</td><td>1</td></tr>
+<tr><td>bAutomaticResize</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>blockClearingOfWindowMenu</b> (bBlocked)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bBlocked</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cascadeMaximized</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cascadeWindows</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childFrameModeHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childViewIsDetachedNow</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childWindowCloseRequest</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeActiveView</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeAllViews</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeViewButtonPressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeWindow</b> (pWnd, layoutTaskBar = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>layoutTaskBar</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>collapseOverlapContainers</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createIterator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createMdiManager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createTaskBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createToolWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiToolViewAccessor)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createWrapper</b> (view, name, shortName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildView)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>view</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+<tr><td>shortName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaultChildFrmSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteIterator</b> (pIt)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteToolWindow</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteToolWindow</b> (accessor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>accessor</td><td>KMdiToolViewAccessor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>detachWindow</b> (pWnd, bShow = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>bShow</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockMenuItemActivated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dockToolViewsIntoContainers</b> (widgetsToReparent, container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widgetsToReparent</td><td>QPtrList<KDockWidget></td><td></td></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dragEndTimeOut</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>event</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (obj, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandHorizontal</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>expandVertical</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fakeSDIApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillWindowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findRootDockWidgets</b> (pRootDockWidgetList, pPositionList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pRootDockWidgetList</td><td>QPtrList<KDockWidget></td><td></td></tr>
+<tr><td>pPositionList</td><td>QValueList<QRect></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findToolViewsDockedToMain</b> (list, dprtmw)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QPtrList<KDockWidget></td><td></td></tr>
+<tr><td>dprtmw</td><td>KDockWidget.DockPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findWindow</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiChildView)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishChildframeMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishIDEAlMode</b> (full = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>full</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishTabPageMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finishToplevelMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameDecorOfAttachedViews</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideViewTaskBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>iconifyAllViews</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>idealToolViewsToStandardTabs</b> (widgetNames, pos, sizee)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widgetNames</td><td>QStringList</td><td></td></tr>
+<tr><td>pos</td><td>KDockWidget.DockPosition</td><td></td></tr>
+<tr><td>sizee</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isFakingSDIApplication</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isInMaximizedChildFrmMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isViewTaskBarOn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChildFrmClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastChildViewClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftTopLevelMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mdiMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdi.MdiMode)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mdiModeHasBeenChangedTo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdi.MdiMode</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>nextToolViewInDock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupWindowMenu</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prepareIdealToTabs</b> (container)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>container</td><td>KDockWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>prevToolViewInDock</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeWindowFromMdi</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackgroundColor</b> (c)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>c</td><td>QColor</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBackgroundPixmap</b> (pm)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pm</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDefaultChildFrmSize</b> (sz)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>sz</td><td>QSize</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEnableMaximizedChildFrmMode</b> (bEnable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bEnable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFrameDecorOfAttachedViews</b> (frameDecor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>frameDecor</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIDEAlModeStyle</b> (flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setManagedDockPositionModeEnabled</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMenuForSDIModeSysButtons</b> (menuBar = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>menuBar</td><td>KMenuBar</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setMinimumSize</b> (minw, minh)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>minw</td><td>int</td><td></td></tr>
+<tr><td>minh</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStandardMDIMenuEnabled</b> (showModeMenu = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>showModeMenu</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSwitching</b> (switching)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>switching</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSysButtonsAtMenuPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabWidgetVisibility</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdi.TabWidgetVisibility</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setToolviewStyle</b> (flags)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>flags</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUndockPositioningOffset</b> (offset)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>offset</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showViewTaskBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slot_toggleTaskBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchOffMaximizeModeForMenu</b> (oldChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldChild</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchToChildframeMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchToIDEAlMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchToTabPageMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchToToplevelMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switching</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KTabWidget)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabWidgetVisibility</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdi.TabWidgetVisibility)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>taskBarHeight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>taskBarPopup</b> (pWnd, bIncludeWindowPopup = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>bIncludeWindowPopup</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>taskbarButtonRightClicked</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tileAnodine</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tilePragma</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tileVertically</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleBottom</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleLeft</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleRight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>toggleTop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSysButtonConnections</b> (oldChild, newChild)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldChild</td><td>KMdiChildFrm</td><td></td></tr>
+<tr><td>newChild</td><td>KMdiChildFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewActivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>viewDeactivated</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowExists</b> (pWnd, as)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>as</td><td>KMdiMainFrm.ExistsAs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowMenu</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowMenuItemActivated</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>windowPopup</b> (pWnd, bIncludeTaskbarPopup = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPopupMenu)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>bIncludeTaskbarPopup</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiTaskBar.html b/python/pykde/doc/classref/kmdi/KMdiTaskBar.html
new file mode 100644
index 00000000..d454194c
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiTaskBar.html
@@ -0,0 +1,101 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiTaskBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiTaskBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiTaskBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KToolBar </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiTaskBar</b> (parent, dock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiTaskBar instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KMdiMainFrm</td><td></td></tr>
+<tr><td>dock</td><td>Qt.Dock</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWinButton</b> (win_ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiTaskBarButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getButton</b> (win_ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiTaskBarButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getNextWindowButton</b> (bRight, win_ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMdiTaskBarButton)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bRight</td><td>bool</td><td></td></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSwitchedOn</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>layoutTaskBar</b> (taskBarWidth = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>taskBarWidth</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeWinButton</b> (win_ptr, haveToLayoutTaskBar = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+<tr><td>haveToLayoutTaskBar</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QResizeEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveButton</b> (win_ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>switchOn</b> (bOn)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bOn</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiTaskBarButton.html b/python/pykde/doc/classref/kmdi/KMdiTaskBarButton.html
new file mode 100644
index 00000000..ffdbe574
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiTaskBarButton.html
@@ -0,0 +1,104 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiTaskBarButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiTaskBarButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiTaskBarButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiTaskBarButton</b> (pTaskBar, win_ptr)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiTaskBarButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pTaskBar</td><td>KMdiTaskBar</td><td></td></tr>
+<tr><td>win_ptr</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actualText</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttonTextChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fitText</b> (a0, newWidth)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>newWidth</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>leftMouseButtonClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rightMouseButtonClicked</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNewText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_pWindow</td><td>KMdiChildView*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiToolViewAccessor.html b/python/pykde/doc/classref/kmdi/KMdiToolViewAccessor.html
new file mode 100644
index 00000000..d9e1af88
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiToolViewAccessor.html
@@ -0,0 +1,99 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiToolViewAccessor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiToolViewAccessor</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiToolViewAccessor</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiToolViewAccessor</b> (parent, widgetToWrap, tabToolTip = 0, tabCaption = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiToolViewAccessor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KMdiMainFrm</td><td></td></tr>
+<tr><td>widgetToWrap</td><td>QWidget</td><td></td></tr>
+<tr><td>tabToolTip</td><td>QString</td><td>0</td></tr>
+<tr><td>tabCaption</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMdiToolViewAccessor</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiToolViewAccessor instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KMdiMainFrm</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>place</b> (pos = KDockWidget .DockNone, pTargetWnd = 0, percent = 50)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>KDockWidget.DockPosition</td><td>KDockWidget .DockNone</td></tr>
+<tr><td>pTargetWnd</td><td>QWidget</td><td>0</td></tr>
+<tr><td>percent</td><td>int</td><td>50</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>placeAndShow</b> (pos = KDockWidget .DockNone, pTargetWnd = 0, percent = 50)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>KDockWidget.DockPosition</td><td>KDockWidget .DockNone</td></tr>
+<tr><td>pTargetWnd</td><td>QWidget</td><td>0</td></tr>
+<tr><td>percent</td><td>int</td><td>50</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidgetToWrap</b> (widgetToWrap, tabToolTip = 0, tabCaption = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widgetToWrap</td><td>QWidget</td><td></td></tr>
+<tr><td>tabToolTip</td><td>QString</td><td>0</td></tr>
+<tr><td>tabCaption</td><td>QString</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wrappedWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>wrapperWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiViewCloseEvent.html b/python/pykde/doc/classref/kmdi/KMdiViewCloseEvent.html
new file mode 100644
index 00000000..a32968c4
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiViewCloseEvent.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiViewCloseEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiViewCloseEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiViewCloseEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiViewCloseEvent</b> (pWnd)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiViewCloseEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pWnd</td><td>KMdiChildView</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/KMdiWin32IconButton.html b/python/pykde/doc/classref/kmdi/KMdiWin32IconButton.html
new file mode 100644
index 00000000..382efc10
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/KMdiWin32IconButton.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMdiWin32IconButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMdiWin32IconButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kmdi</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMdiWin32IconButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QLabel </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMdiWin32IconButton</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMdiWin32IconButton instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mousePressEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QMouseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pressed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/index.html b/python/pykde/doc/classref/kmdi/index.html
new file mode 100644
index 00000000..6e69f64b
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/index.html
@@ -0,0 +1,51 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kmdi</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kmdi Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kmdi-globals.html">kmdi Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMdi - KMdiChildFrmDragEndEvent</th></tr>
+<tr ><td><a href="KMdi.html">KMdi</a></td></tr>
+<tr ><td><a href="KMdiChildArea.html">KMdiChildArea</a></td></tr>
+<tr ><td><a href="KMdiChildFrm.html">KMdiChildFrm</a></td></tr>
+<tr ><td><a href="KMdiChildFrmCaption.html">KMdiChildFrmCaption</a></td></tr>
+<tr ><td><a href="KMdiChildFrmDragBeginEvent.html">KMdiChildFrmDragBeginEvent</a></td></tr>
+<tr ><td><a href="KMdiChildFrmDragEndEvent.html">KMdiChildFrmDragEndEvent</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMdiChildFrmMoveEvent - KMdiMainFrm</th></tr>
+<tr ><td><a href="KMdiChildFrmMoveEvent.html">KMdiChildFrmMoveEvent</a></td></tr>
+<tr ><td><a href="KMdiChildFrmResizeBeginEvent.html">KMdiChildFrmResizeBeginEvent</a></td></tr>
+<tr ><td><a href="KMdiChildFrmResizeEndEvent.html">KMdiChildFrmResizeEndEvent</a></td></tr>
+<tr ><td><a href="KMdiChildView.html">KMdiChildView</a></td></tr>
+<tr ><td><a href="KMdiMainFrm.html">KMdiMainFrm</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KMdiTaskBar - KMdiWin32IconButton</th></tr>
+<tr ><td><a href="KMdiTaskBar.html">KMdiTaskBar</a></td></tr>
+<tr ><td><a href="KMdiTaskBarButton.html">KMdiTaskBarButton</a></td></tr>
+<tr ><td><a href="KMdiToolViewAccessor.html">KMdiToolViewAccessor</a></td></tr>
+<tr ><td><a href="KMdiViewCloseEvent.html">KMdiViewCloseEvent</a></td></tr>
+<tr ><td><a href="KMdiWin32IconButton.html">KMdiWin32IconButton</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kmdi/kmdi-globals.html b/python/pykde/doc/classref/kmdi/kmdi-globals.html
new file mode 100644
index 00000000..111b4e76
--- /dev/null
+++ b/python/pykde/doc/classref/kmdi/kmdi-globals.html
@@ -0,0 +1,28 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kmdi globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kmdi Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kmdi Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/ExtTerminalInterface.html b/python/pykde/doc/classref/kparts/ExtTerminalInterface.html
new file mode 100644
index 00000000..498cc1b4
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/ExtTerminalInterface.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class ExtTerminalInterface</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class ExtTerminalInterface</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>ExtTerminalInterface <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>sendInput</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDestroy</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoStartShell</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShellInDir</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startProgram</b> (a0, a1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QStrList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.BrowserExtension.html b/python/pykde/doc/classref/kparts/KParts.BrowserExtension.html
new file mode 100644
index 00000000..2342c414
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.BrowserExtension.html
@@ -0,0 +1,322 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.BrowserExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.BrowserExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.BrowserExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>(anonymous)</b> = {DefaultPopupItems, ShowNavigationItems, ShowUp, ShowReload, ShowBookmark, ShowCreateDirectory, ShowTextSelectionItems, NoDeletion
+}<li><b>(anonymous)</b> = {DefaultPopupItems, ShowNavigationItems, ShowUp, ShowReload, ShowBookmark, ShowCreateDirectory, ShowTextSelectionItems
+}<li><b>(anonymous)</b> = {DefaultPopupItems, ShowNavigationItems, ShowUp, ShowReload, ShowBookmark, ShowCreateDirectory
+}</ul>
+<h3>methods</h3><ul>
+<li><b>BrowserExtension</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a BrowserExtension instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionSlotMap</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserExtension.ActionSlotMap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionSlotMapPtr</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserExtension.ActionSlotMap)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>actionText</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addWebSideBar</b> (url, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>browserInterface</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserInterface)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childObject</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserExtension)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createNewWindow</b> (url, args = KParts .URLArgs ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td>KParts .URLArgs ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createNewWindow</b> (url, args, windowArgs, part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableAction</b> (name, enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>infoMessage</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActionEnabled</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isURLDropHandlingEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadingProgress</b> (percent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>percent</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>mouseOverInfo</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>KFileItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveTopLevelWidget</b> (x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLNotify</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLRequest</b> (url, args = KParts .URLArgs ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td>KParts .URLArgs ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLRequestDelayed</b> (url, args = KParts .URLArgs ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td>KParts .URLArgs ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pasteRequest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (global, items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (client, global, items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (client, global, items, args, i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+<tr><td>i</td><td>KParts.BrowserExtension.PopupFlags</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (global, url, mimeType, mode = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (client, global, url, mimeType, mode = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>popupMenu</b> (client, global, url, args, i, mode = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>global</td><td>QPoint</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+<tr><td>i</td><td>KParts.BrowserExtension.PopupFlags</td><td></td></tr>
+<tr><td>mode</td><td>mode_t</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>requestFocus</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.1 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resizeTopLevelWidget</b> (w, h)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>w</td><td>int</td><td></td></tr>
+<tr><td>h</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restoreState</b> (stream)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stream</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveState</b> (stream)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>stream</td><td>QDataStream</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionInfo</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>KFileItemList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionInfo</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionInfo</b> (urls)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>urls</td><td>KURL.List</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActionText</b> (name, text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setBrowserInterface</b> (impl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>impl</td><td>KParts.BrowserInterface</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIconURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLocationBarURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPageSecurity</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLArgs</b> (args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setURLDropHandlingEnabled</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>speedProgress</b> (bytesPerSecond)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bytesPerSecond</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>urlArgs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.URLArgs)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>yOffset</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.BrowserHostExtension.html b/python/pykde/doc/classref/kparts/KParts.BrowserHostExtension.html
new file mode 100644
index 00000000..5cab3906
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.BrowserHostExtension.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.BrowserHostExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.BrowserHostExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.BrowserHostExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>BrowserHostExtension</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a BrowserHostExtension instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childObject</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserHostExtension)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findFrameParent</b> (callingPart, frame)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserHostExtension)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>callingPart</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>frame</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frameNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>frames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KParts.ReadOnlyPart>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURLInFrame</b> (url, urlArgs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>urlArgs</td><td>KParts.URLArgs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.BrowserInterface.html b/python/pykde/doc/classref/kparts/KParts.BrowserInterface.html
new file mode 100644
index 00000000..369c378a
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.BrowserInterface.html
@@ -0,0 +1,55 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.BrowserInterface</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.BrowserInterface</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.BrowserInterface</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>BrowserInterface</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a BrowserInterface instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>callMethod</b> (name, argument)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>argument</td><td>QVariant</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.BrowserRun.html b/python/pykde/doc/classref/kparts/KParts.BrowserRun.html
new file mode 100644
index 00000000..aa769683
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.BrowserRun.html
@@ -0,0 +1,197 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.BrowserRun</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.BrowserRun</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.BrowserRun</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KRun </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>AskEmbedOrSaveFlags</b> = {InlineDisposition, AttachmentDisposition
+}<li><b>AskSaveResult</b> = {Save, Open, Cancel
+}</ul>
+<h3>methods</h3><ul>
+<li><b>BrowserRun</b> (url, args, part, window, removeReferrer, trustedSource)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a BrowserRun instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+<tr><td>part</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>removeReferrer</td><td>bool</td><td></td></tr>
+<tr><td>trustedSource</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>BrowserRun</b> (url, args, part, window, removeReferrer, trustedSource, hideErrorDialog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a BrowserRun instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+<tr><td>part</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+<tr><td>removeReferrer</td><td>bool</td><td></td></tr>
+<tr><td>trustedSource</td><td>bool</td><td></td></tr>
+<tr><td>hideErrorDialog</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowExecution</b> (serviceType, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>askEmbedOrSave</b> (url, mimeType, suggestedFilename = QString .null, flags = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserRun.AskSaveResult)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>suggestedFilename</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>flags</td><td>int</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>askSave</b> (url, offer, mimeType, suggestedFilename = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.BrowserRun.AskSaveResult)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>offer</td><td>KService.Ptr</td><td></td></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>suggestedFilename</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentDisposition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleError</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handleNonEmbeddable</b> (mimeType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideErrorDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isExecutable</b> (serviceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTextExecutable</b> (serviceType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (url, suggestedFilename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>suggestedFilename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>scanFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>serverSuggestsSave</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.2 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>simpleSave</b> (url, suggestedFilename, window)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>suggestedFilename</td><td>QString</td><td></td></tr>
+<tr><td>window</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>simpleSave</b> (url, suggestedFilename)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>suggestedFilename</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotBrowserMimetype</b> (job, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotBrowserScanFinished</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCopyToTempFileResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStatResult</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suggestedFilename</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.DockMainWindow.html b/python/pykde/doc/classref/kparts/KParts.DockMainWindow.html
new file mode 100644
index 00000000..97a943b1
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.DockMainWindow.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.DockMainWindow</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.DockMainWindow</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.DockMainWindow</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDockMainWindow, KParts.PartBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>DockMainWindow</b> (parent = 0, name = 0, f = WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a DockMainWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createGUI</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createShellGUI</b> (create = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetStatusBarText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.Event.html b/python/pykde/doc/classref/kparts/KParts.Event.html
new file mode 100644
index 00000000..072a6773
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.Event.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.Event</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.Event</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.Event</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QCustomEvent </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Event</b> (eventName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Event instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>eventName</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(char)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event, name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.Factory.html b/python/pykde/doc/classref/kparts/KParts.Factory.html
new file mode 100644
index 00000000..6f3b14aa
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.Factory.html
@@ -0,0 +1,91 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.Factory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.Factory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.Factory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLibFactory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Factory</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Factory instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createObject</b> (parent = 0, name = 0, classname = "QObject", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"QObject"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPart</b> (parentWidget = 0, widgetName = 0, parent = 0, name = 0, classname = "KParts.Part", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>widgetName</td><td>char</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"KParts.Part"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createPartObject</b> (parentWidget = 0, widgetName = 0, parent = 0, name = 0, classname = "KParts.Part", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>widgetName</td><td>char</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"KParts.Part"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partInstance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partInstanceFromLibrary</b> (libraryName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>libraryName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.GUIActivateEvent.html b/python/pykde/doc/classref/kparts/KParts.GUIActivateEvent.html
new file mode 100644
index 00000000..7fcac1ab
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.GUIActivateEvent.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.GUIActivateEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.GUIActivateEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.GUIActivateEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Event </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>GUIActivateEvent</b> (activated)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a GUIActivateEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>activated</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.HistoryProvider.html b/python/pykde/doc/classref/kparts/KParts.HistoryProvider.html
new file mode 100644
index 00000000..ad4ebb8f
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.HistoryProvider.html
@@ -0,0 +1,82 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.HistoryProvider</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.HistoryProvider</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.HistoryProvider</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>HistoryProvider</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a HistoryProvider instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clear</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleared</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contains</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>insert</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>remove</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.HistoryProvider)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updated</b> (items)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>items</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.LiveConnectExtension.html b/python/pykde/doc/classref/kparts/KParts.LiveConnectExtension.html
new file mode 100644
index 00000000..a405842e
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.LiveConnectExtension.html
@@ -0,0 +1,98 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.LiveConnectExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.LiveConnectExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.LiveConnectExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Type</b> = {TypeVoid, TypeBool, TypeFunction, TypeNumber, TypeObject, TypeString
+}</ul>
+<h3>methods</h3><ul>
+<li><b>LiveConnectExtension</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a LiveConnectExtension instance</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>call</b> (objid, func, args, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) type (KParts.LiveConnectExtension.Type) retobjid (ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objid</td><td>ulong</td><td></td></tr>
+<tr><td>func</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStringList</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childObject</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.LiveConnectExtension)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>get</b> (objid, field, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool) type (KParts.LiveConnectExtension.Type) retobjid (ulong)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objid</td><td>ulong</td><td></td></tr>
+<tr><td>field</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partEvent</b> (objid, event, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>put</b> (objid, field, value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objid</td><td>ulong</td><td></td></tr>
+<tr><td>field</td><td>QString</td><td></td></tr>
+<tr><td>value</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unregister</b> (objid)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>objid</td><td>ulong</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.MainWindow.html b/python/pykde/doc/classref/kparts/KParts.MainWindow.html
new file mode 100644
index 00000000..f6bf3659
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.MainWindow.html
@@ -0,0 +1,88 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.MainWindow</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.MainWindow</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.MainWindow</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMainWindow, KParts.PartBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>MainWindow</b> (parent, name = 0, f = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MainWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MainWindow</b> (name = 0, f = WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MainWindow instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>MainWindow</b> (cflags, parent, name = 0, f = WType_TopLevel | WDestructiveClose)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a MainWindow instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>cflags</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>f</td><td>WFlags</td><td>WType_TopLevel | WDestructiveClose</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createGUI</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createShellGUI</b> (create = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveNewToolbarConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSetStatusBarText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.OpenURLEvent.html b/python/pykde/doc/classref/kparts/KParts.OpenURLEvent.html
new file mode 100644
index 00000000..c280a6fc
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.OpenURLEvent.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.OpenURLEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.OpenURLEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.OpenURLEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Event </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>OpenURLEvent</b> (part, url, args = KParts .URLArgs ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a OpenURLEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td>KParts .URLArgs ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>args</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.URLArgs)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>part</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadOnlyPart)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.Part.html b/python/pykde/doc/classref/kparts/KParts.Part.html
new file mode 100644
index 00000000..9b6a4333
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.Part.html
@@ -0,0 +1,130 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.Part</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.Part</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.Part</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, KParts.PartBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Part</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Part instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>customEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QCustomEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>embed</b> (parentWidget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiActivateEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.GUIActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hitTest</b> (widget, globalPos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>globalPos</td><td>QPoint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hostContainer</b> (containerName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>containerName</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isSelectable</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>manager</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.PartManager)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partActivateEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.PartActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partSelectEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.PartSelectEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setManager</b> (manager)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>manager</td><td>KParts.PartManager</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectable</b> (selectable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selectable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatusBarText</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWidget</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWindowCaption</b> (caption)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.PartActivateEvent.html b/python/pykde/doc/classref/kparts/KParts.PartActivateEvent.html
new file mode 100644
index 00000000..e3b5cdfa
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.PartActivateEvent.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.PartActivateEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.PartActivateEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.PartActivateEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Event </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>PartActivateEvent</b> (activated, part, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PartActivateEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>activated</td><td>bool</td><td></td></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activated</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>part</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.PartBase.html b/python/pykde/doc/classref/kparts/KParts.PartBase.html
new file mode 100644
index 00000000..5634ba7c
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.PartBase.html
@@ -0,0 +1,78 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.PartBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.PartBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.PartBase</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KXMLGUIClient </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>PartBase</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PartBase instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> (parent, parentGUIClient, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>parentGUIClient</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partObject</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance, loadPlugins)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+<tr><td>loadPlugins</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPartObject</b> (object)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>object</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPluginLoadingMode</b> (loadingMode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.PartManager.html b/python/pykde/doc/classref/kparts/KParts.PartManager.html
new file mode 100644
index 00000000..d088af05
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.PartManager.html
@@ -0,0 +1,204 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.PartManager</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.PartManager</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.PartManager</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Reason</b> = {ReasonLeftClick, ReasonMidClick, ReasonRightClick, NoReason
+}<li><b>SelectionPolicy</b> = {Direct, TriState
+}</ul>
+<h3>methods</h3><ul>
+<li><b>PartManager</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PartManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>PartManager</b> (topLevel, parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PartManager instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>topLevel</td><td>QWidget</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activationButtonMask</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(short)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activePart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activePartChanged</b> (newPart)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newPart</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addManagedTopLevelWidget</b> (topLevel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>topLevel</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPart</b> (part, setActive = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+<tr><td>setActive</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>allowNestedParts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (obj, ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+<tr><td>ev</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreScrollBars</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partAdded</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>partRemoved</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KParts.Part>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reason</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeManagedTopLevelWidget</b> (topLevel)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>topLevel</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removePart</b> (part)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacePart</b> (oldPart, newPart, setActive = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>oldPart</td><td>KParts.Part</td><td></td></tr>
+<tr><td>newPart</td><td>KParts.Part</td><td></td></tr>
+<tr><td>setActive</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedPart</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectedWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selectionPolicy</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.PartManager.SelectionPolicy)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActivationButtonMask</b> (buttonMask)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buttonMask</td><td>short</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActiveInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActivePart</b> (part, widget = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAllowNestedParts</b> (allow)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>allow</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreScrollBars</b> (ignore)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>ignore</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectedPart</b> (part, widget = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSelectionPolicy</b> (policy)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>policy</td><td>KParts.PartManager.SelectionPolicy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotManagedTopLevelWidgetDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotObjectDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotWidgetDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.PartSelectEvent.html b/python/pykde/doc/classref/kparts/KParts.PartSelectEvent.html
new file mode 100644
index 00000000..c02a11c9
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.PartSelectEvent.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.PartSelectEvent</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.PartSelectEvent</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.PartSelectEvent</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Event </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>PartSelectEvent</b> (selected, part, widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a PartSelectEvent instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>selected</td><td>bool</td><td></td></tr>
+<tr><td>part</td><td>KParts.Part</td><td></td></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>part</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>test</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.Plugin.PluginInfo.html b/python/pykde/doc/classref/kparts/KParts.Plugin.PluginInfo.html
new file mode 100644
index 00000000..092f2142
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.Plugin.PluginInfo.html
@@ -0,0 +1,45 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.Plugin.PluginInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.Plugin.PluginInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.Plugin.PluginInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>m_absXMLFileName</td><td>QString</td></tr>
+<tr><td>m_document</td><td>QDomDocument</td></tr>
+<tr><td>m_relXMLFileName</td><td>QString</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.Plugin.html b/python/pykde/doc/classref/kparts/KParts.Plugin.html
new file mode 100644
index 00000000..ca899829
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.Plugin.html
@@ -0,0 +1,118 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.Plugin</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.Plugin</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.Plugin</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, KXMLGUIClient </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Plugin</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Plugin instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugin</b> (parent, libname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Plugin)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>libname</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> (parent, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> (parent, pluginInfos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>pluginInfos</td><td>QValueList<KParts.Plugin.PluginInfo></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> (parent, pluginInfos, instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>pluginInfos</td><td>QValueList<KParts.Plugin.PluginInfo></td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadPlugins</b> (parent, parentGUIClient, instance, enableNewPluginsByDefault = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>parentGUIClient</td><td>KXMLGUIClient</td><td></td></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+<tr><td>enableNewPluginsByDefault</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>localXMLFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginInfos</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<KParts.Plugin.PluginInfo>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginObjects</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QPtrList<KParts.Plugin>)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInstance</b> (instance)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>xmlFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.ReadOnlyPart.html b/python/pykde/doc/classref/kparts/KParts.ReadOnlyPart.html
new file mode 100644
index 00000000..766b454f
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.ReadOnlyPart.html
@@ -0,0 +1,131 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.ReadOnlyPart</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.ReadOnlyPart</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.ReadOnlyPart <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Part </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ReadOnlyPart</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ReadOnlyPart instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>abortLoad</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>canceled</b> (errMsg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>errMsg</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeStream</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>completed</b> (pendingAction)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pendingAction</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiActivateEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.GUIActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isProgressInfoEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openFile</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openStream</b> (mimeType, url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mimeType</td><td>QString</td><td></td></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgressInfoEnabled</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showProgressInfo</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotJobFinished</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>started</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>url</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KURL)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeStream</b> (data)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QByteArray</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.ReadWritePart.html b/python/pykde/doc/classref/kparts/KParts.ReadWritePart.html
new file mode 100644
index 00000000..38f2fa36
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.ReadWritePart.html
@@ -0,0 +1,112 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.ReadWritePart</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.ReadWritePart</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.ReadWritePart <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.ReadOnlyPart </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ReadWritePart</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ReadWritePart instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeURL</b> (promptToSave)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>promptToSave</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isReadWrite</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>queryClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveAs</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveFile</b> () = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveToURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModified</b> (modified)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modified</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setModified</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadWrite</b> (readwrite = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>readwrite</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sigQueryClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUploadFinished</b> (job)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>job</td><td>KIO.Job</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>waitSaveComplete</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.StatusBarExtension.html b/python/pykde/doc/classref/kparts/KParts.StatusBarExtension.html
new file mode 100644
index 00000000..4944b09a
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.StatusBarExtension.html
@@ -0,0 +1,92 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.StatusBarExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.StatusBarExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.StatusBarExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>StatusBarExtension</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a StatusBarExtension instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>KParts.ReadOnlyPart</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addStatusBarItem</b> (widget, stretch, permanent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+<tr><td>stretch</td><td>int</td><td></td></tr>
+<tr><td>permanent</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childObject</b> (obj)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.StatusBarExtension)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>obj</td><td>QObject</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (watched, ev)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>watched</td><td>QObject</td><td></td></tr>
+<tr><td>ev</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeStatusBarItem</b> (widget)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>widget</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStatusBar</b> (status)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>status</td><td>KStatusBar</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>statusBar</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KStatusBar)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.URLArgs.html b/python/pykde/doc/classref/kparts/KParts.URLArgs.html
new file mode 100644
index 00000000..de307bed
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.URLArgs.html
@@ -0,0 +1,134 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.URLArgs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.URLArgs</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.URLArgs</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>URLArgs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a URLArgs instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>URLArgs</b> (args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a URLArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>args</td><td>KParts.URLArgs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>URLArgs</b> (reload, xOffset, yOffset, serviceType = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a URLArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reload</td><td>bool</td><td></td></tr>
+<tr><td>xOffset</td><td>int</td><td></td></tr>
+<tr><td>yOffset</td><td>int</td><td></td></tr>
+<tr><td>serviceType</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>contentType</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doPost</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forcesNewWindow</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lockHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>metaData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QString,QString>)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newTab</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>redirectedRequest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setContentType</b> (contentType)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>contentType</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDoPost</b> (enable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setForcesNewWindow</b> (forcesNewWindow)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>forcesNewWindow</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLockHistory</b> (lock)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lock</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNewTab</b> (newTab)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>newTab</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRedirectedRequest</b> (redirected)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.3 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>redirected</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>d</td><td>URLArgsPrivate*</td></tr>
+<tr><td>docState</td><td>QStringList</td></tr>
+<tr><td>frameName</td><td>QString</td></tr>
+<tr><td>postData</td><td>QByteArray</td></tr>
+<tr><td>reload</td><td>bool</td></tr>
+<tr><td>serviceType</td><td>QString</td></tr>
+<tr><td>trustedSource</td><td>bool</td></tr>
+<tr><td>xOffset</td><td>int</td></tr>
+<tr><td>yOffset</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.WindowArgs.html b/python/pykde/doc/classref/kparts/KParts.WindowArgs.html
new file mode 100644
index 00000000..974aa5b4
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.WindowArgs.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts.WindowArgs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts.WindowArgs</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts.WindowArgs</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>WindowArgs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowArgs instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WindowArgs</b> (args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>args</td><td>KParts.WindowArgs</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WindowArgs</b> (_geometry, _fullscreen, _menuBarVisible, _toolBarsVisible, _statusBarVisible, _resizable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_geometry</td><td>QRect</td><td></td></tr>
+<tr><td>_fullscreen</td><td>bool</td><td></td></tr>
+<tr><td>_menuBarVisible</td><td>bool</td><td></td></tr>
+<tr><td>_toolBarsVisible</td><td>bool</td><td></td></tr>
+<tr><td>_statusBarVisible</td><td>bool</td><td></td></tr>
+<tr><td>_resizable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>WindowArgs</b> (_x, _y, _width, _height, _fullscreen, _menuBarVisible, _toolBarsVisible, _statusBarVisible, _resizable)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a WindowArgs instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_x</td><td>int</td><td></td></tr>
+<tr><td>_y</td><td>int</td><td></td></tr>
+<tr><td>_width</td><td>int</td><td></td></tr>
+<tr><td>_height</td><td>int</td><td></td></tr>
+<tr><td>_fullscreen</td><td>bool</td><td></td></tr>
+<tr><td>_menuBarVisible</td><td>bool</td><td></td></tr>
+<tr><td>_toolBarsVisible</td><td>bool</td><td></td></tr>
+<tr><td>_statusBarVisible</td><td>bool</td><td></td></tr>
+<tr><td>_resizable</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>d</td><td>WindowArgsPrivate*</td></tr>
+<tr><td>fullscreen</td><td>bool</td></tr>
+<tr><td>height</td><td>int</td></tr>
+<tr><td>lowerWindow</td><td>bool</td></tr>
+<tr><td>menuBarVisible</td><td>bool</td></tr>
+<tr><td>resizable</td><td>bool</td></tr>
+<tr><td>scrollBarsVisible</td><td>bool</td></tr>
+<tr><td>statusBarVisible</td><td>bool</td></tr>
+<tr><td>toolBarsVisible</td><td>bool</td></tr>
+<tr><td>width</td><td>int</td></tr>
+<tr><td>x</td><td>int</td></tr>
+<tr><td>y</td><td>int</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/KParts.html b/python/pykde/doc/classref/kparts/KParts.html
new file mode 100644
index 00000000..4256d83b
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/KParts.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KParts</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KParts</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KParts</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KParts.BrowserExtension.html">BrowserExtension</a></b><li><b><a href="KParts.BrowserHostExtension.html">BrowserHostExtension</a></b><li><b><a href="KParts.BrowserInterface.html">BrowserInterface</a></b><li><b><a href="KParts.BrowserRun.html">BrowserRun</a></b><li><b><a href="KParts.DockMainWindow.html">DockMainWindow</a></b><li><b><a href="KParts.Event.html">Event</a></b><li><b><a href="KParts.Factory.html">Factory</a></b><li><b><a href="KParts.GUIActivateEvent.html">GUIActivateEvent</a></b><li><b><a href="KParts.HistoryProvider.html">HistoryProvider</a></b><li><b><a href="KParts.LiveConnectExtension.html">LiveConnectExtension</a></b><li><b><a href="KParts.MainWindow.html">MainWindow</a></b><li><b><a href="KParts.OpenURLEvent.html">OpenURLEvent</a></b><li><b><a href="KParts.Part.html">Part</a></b><li><b><a href="KParts.PartActivateEvent.html">PartActivateEvent</a></b><li><b><a href="KParts.PartBase.html">PartBase</a></b><li><b><a href="KParts.PartManager.html">PartManager</a></b><li><b><a href="KParts.PartSelectEvent.html">PartSelectEvent</a></b><li><b><a href="KParts.Plugin.html">Plugin</a></b><li><b><a href="KParts.Plugin.PluginInfo.html">Plugin.PluginInfo</a></b><li><b><a href="KParts.ReadOnlyPart.html">ReadOnlyPart</a></b><li><b><a href="KParts.ReadWritePart.html">ReadWritePart</a></b><li><b><a href="KParts.StatusBarExtension.html">StatusBarExtension</a></b><li><b><a href="KParts.URLArgs.html">URLArgs</a></b><li><b><a href="KParts.WindowArgs.html">WindowArgs</a></b></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/TerminalInterface.html b/python/pykde/doc/classref/kparts/TerminalInterface.html
new file mode 100644
index 00000000..742a0a42
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/TerminalInterface.html
@@ -0,0 +1,63 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class TerminalInterface</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class TerminalInterface</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>TerminalInterface <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>sendInput</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShellInDir</b> (a0) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startProgram</b> (a0, a1) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QStrList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/index.html b/python/pykde/doc/classref/kparts/index.html
new file mode 100644
index 00000000..2ad94c29
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/index.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kparts</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kparts Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kparts-globals.html">kparts Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>ExtTerminalInterface - KParts.GUIActivateEvent</th></tr>
+<tr ><td><a href="ExtTerminalInterface.html"><i>ExtTerminalInterface</i></a></td></tr>
+<tr ><td><a href="KParts.html">KParts</a></td></tr>
+<tr ><td><a href="KParts.BrowserExtension.html">KParts.BrowserExtension</a></td></tr>
+<tr ><td><a href="KParts.BrowserHostExtension.html">KParts.BrowserHostExtension</a></td></tr>
+<tr ><td><a href="KParts.BrowserInterface.html">KParts.BrowserInterface</a></td></tr>
+<tr ><td><a href="KParts.BrowserRun.html">KParts.BrowserRun</a></td></tr>
+<tr ><td><a href="KParts.DockMainWindow.html">KParts.DockMainWindow</a></td></tr>
+<tr ><td><a href="KParts.Event.html">KParts.Event</a></td></tr>
+<tr ><td><a href="KParts.Factory.html">KParts.Factory</a></td></tr>
+<tr ><td><a href="KParts.GUIActivateEvent.html">KParts.GUIActivateEvent</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KParts.HistoryProvider - KParts.Plugin</th></tr>
+<tr ><td><a href="KParts.HistoryProvider.html">KParts.HistoryProvider</a></td></tr>
+<tr ><td><a href="KParts.LiveConnectExtension.html">KParts.LiveConnectExtension</a></td></tr>
+<tr ><td><a href="KParts.MainWindow.html">KParts.MainWindow</a></td></tr>
+<tr ><td><a href="KParts.OpenURLEvent.html">KParts.OpenURLEvent</a></td></tr>
+<tr ><td><a href="KParts.Part.html">KParts.Part</a></td></tr>
+<tr ><td><a href="KParts.PartActivateEvent.html">KParts.PartActivateEvent</a></td></tr>
+<tr ><td><a href="KParts.PartBase.html">KParts.PartBase</a></td></tr>
+<tr ><td><a href="KParts.PartManager.html">KParts.PartManager</a></td></tr>
+<tr ><td><a href="KParts.PartSelectEvent.html">KParts.PartSelectEvent</a></td></tr>
+<tr ><td><a href="KParts.Plugin.html">KParts.Plugin</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KParts.Plugin.PluginInfo - konsolePart</th></tr>
+<tr ><td><a href="KParts.Plugin.PluginInfo.html">KParts.Plugin.PluginInfo</a></td></tr>
+<tr ><td><a href="KParts.ReadOnlyPart.html"><i>KParts.ReadOnlyPart</i></a></td></tr>
+<tr ><td><a href="KParts.ReadWritePart.html"><i>KParts.ReadWritePart</i></a></td></tr>
+<tr ><td><a href="KParts.StatusBarExtension.html">KParts.StatusBarExtension</a></td></tr>
+<tr ><td><a href="KParts.URLArgs.html">KParts.URLArgs</a></td></tr>
+<tr ><td><a href="KParts.WindowArgs.html">KParts.WindowArgs</a></td></tr>
+<tr ><td><a href="TerminalInterface.html"><i>TerminalInterface</i></a></td></tr>
+<tr ><td><a href="konsoleBrowserExtension.html">konsoleBrowserExtension</a></td></tr>
+<tr ><td><a href="konsoleFactory.html">konsoleFactory</a></td></tr>
+<tr ><td><a href="konsolePart.html">konsolePart</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/konsoleBrowserExtension.html b/python/pykde/doc/classref/kparts/konsoleBrowserExtension.html
new file mode 100644
index 00000000..41229e38
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/konsoleBrowserExtension.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class konsoleBrowserExtension</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class konsoleBrowserExtension</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>konsoleBrowserExtension</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.BrowserExtension </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>emitOpenURLRequest</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>konsoleBrowserExtension</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a konsoleBrowserExtension instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>konsolePart</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/konsoleFactory.html b/python/pykde/doc/classref/kparts/konsoleFactory.html
new file mode 100644
index 00000000..e599d49c
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/konsoleFactory.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class konsoleFactory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class konsoleFactory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>konsoleFactory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.Factory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>createPartObject</b> (parentWidget = 0, widgetName = 0, parent = 0, name = 0, classname = "KParts.Part", args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.Part)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td>0</td></tr>
+<tr><td>widgetName</td><td>char</td><td>0</td></tr>
+<tr><td>parent</td><td>QObject</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>classname</td><td>char</td><td>"KParts.Part"</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>konsoleFactory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a konsoleFactory instance</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/konsolePart.html b/python/pykde/doc/classref/kparts/konsolePart.html
new file mode 100644
index 00000000..02c30d40
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/konsolePart.html
@@ -0,0 +1,237 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class konsolePart</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class konsolePart</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kparts</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>konsolePart</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KParts.ReadOnlyPart, TerminalInterface </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>closeURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeURL</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMasterModeConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>enableMasterModeConnections</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>forkedChild</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiActivateEvent</b> (event)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>event</td><td>KParts.GUIActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>guiActivateEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KParts.GUIActivateEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>konsolePart</b> (parentWidget, widgetName, parent, name, classname = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a konsolePart instance</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parentWidget</td><td>QWidget</td><td></td></tr>
+<tr><td>widgetName</td><td>char</td><td></td></tr>
+<tr><td>parent</td><td>QObject</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>classname</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>konsolePart</b> (a0, a1, a2, a3, a4 = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a konsolePart instance</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QWidget</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td></td></tr>
+<tr><td>a2</td><td>QObject</td><td></td></tr>
+<tr><td>a3</td><td>char</td><td></td></tr>
+<tr><td>a4</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newSession</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openFile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (url)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>url</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>openURL</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KURL</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processExited</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>processExited</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedData</b> (s)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>receivedData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendInput</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sendInput</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sessionDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sessionDestroyed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDestroy</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoStartShell</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShell</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShell</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShellInDir</b> (dir)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dir</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showShellInDir</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProcessExited</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReceivedData</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startProgram</b> (program, args)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>program</td><td>QString</td><td></td></tr>
+<tr><td>args</td><td>QStrList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startProgram</b> (a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QStrList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateTitle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.5.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kparts/kparts-globals.html b/python/pykde/doc/classref/kparts/kparts-globals.html
new file mode 100644
index 00000000..b765aee5
--- /dev/null
+++ b/python/pykde/doc/classref/kparts/kparts-globals.html
@@ -0,0 +1,110 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kparts globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kparts Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kparts Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>global methods</h3><ul>
+<li><b>createReadOnlyPart</b> (a0, a1 = 0, a2 = QString .null, a3 = "KParts.ReadOnlyPart", a4 = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadOnlyPart)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td>0</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>char</td><td>"KParts.ReadOnlyPart"</td></tr>
+<tr><td>a4</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td><para>
+This is a PyKDE-only function that handles the machinery necessary
+to create a KParts::ReadOnlyPart. It executes the following C++ code:
+</para>
+<pre class="PROGRAMLISTING">
+KParts::ReadOnlyPart *createReadOnlyPart (const QString&amp; lib, QObject *parent,
+ const QString&amp; name, const char *className,
+ const QStringList &amp;args)
+{
+ KLibFactory *factory = KLibLoader::self ()-&gt;factory ((const char *)lib);
+ if (factory)
+ return static_cast&lt;KParts::ReadOnlyPart*&gt; (factory-&gt;create (parent,
+ (const char *)name, className, args));
+ else
+ return NULL;
+</pre>
+<para>
+Notice that it takes care of creating the KLibFactory for you, and
+returns the part cast to type KParts::ReadOnlyPart. The actual
+part has a different class (derived from KParts::ReadOnlyPart),
+and calls to openURL or openFile will use the part's overloaded
+methods. Currently it isn't possible to call KParts::ReadOnlyPart::openURL
+if it has been overloaded.
+</para>
+<para>
+Usage: KParts.createReadOnlyPart (lib, parent, name, className, args)
+</para>
+</td></tr></table></td></tr></table></li><hr>
+<li><b>createReadWritePart</b> (a0, a1 = 0, a2 = QString .null, a3 = "KParts.ReadWritePart", a4 = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KParts.ReadWritePart)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>QObject</td><td>0</td></tr>
+<tr><td>a2</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>a3</td><td>char</td><td>"KParts.ReadWritePart"</td></tr>
+<tr><td>a4</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td><para>
+This is a PyKDE-only function that handles the machinery necessary
+to create a KParts::ReadWritePart. It executes the following C++ code:
+</para>
+<pre class="PROGRAMLISTING">
+KParts::ReadWritePart *createReadWritePart (const QString&amp; lib, QObject *parent,
+ const QString&amp; name, const char *className,
+ const QStringList &amp;args)
+{
+ KLibFactory *factory = KLibLoader::self ()-&gt;factory ((const char *)lib);
+ if (factory)
+ return static_cast&lt;KParts::ReadWritePart*&gt; (factory-&gt;create (parent,
+ (const char *)name, className, args));
+ else
+ return NULL;
+</pre>
+<para>
+Notice that it takes care of creating the KLibFactory for you, and
+returns the part cast to type KParts::ReadWritePart. The actual
+part has a different class (derived from KParts::ReadWritePart),
+and calls to openURL or openFile will use the part's overloaded
+methods. Currently it isn't possible to call KParts::ReadWritePart::openURL
+if it has been overloaded.
+</para>
+<para>
+Usage: KParts.createReadWritePart (lib, parent, name, className, args)
+</para>
+</td></tr></table></td></tr></table></li><hr>
+<li><b>testQMapQCStringInt</b> (dict)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QMap<QCString,int>),</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dict</td><td>QMap<QCString,int></td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.ConfigDialog.html b/python/pykde/doc/classref/kresources/KRES.ConfigDialog.html
new file mode 100644
index 00000000..be5e2212
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.ConfigDialog.html
@@ -0,0 +1,76 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.ConfigDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.ConfigDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.ConfigDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ConfigDialog</b> (parent, resourceFamily, resource, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ConfigDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>resourceFamily</td><td>QString</td><td></td></tr>
+<tr><td>resource</td><td>KRES.Resource</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>accept</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInEditMode</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotNameChanged</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.ConfigWidget.html b/python/pykde/doc/classref/kresources/KRES.ConfigWidget.html
new file mode 100644
index 00000000..a3ba41af
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.ConfigWidget.html
@@ -0,0 +1,79 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.ConfigWidget</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.ConfigWidget</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.ConfigWidget <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ConfigWidget</b> (parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ConfigWidget instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadSettings</b> (resource) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KRES.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>saveSettings</b> (resource) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resource</td><td>KRES.Resource</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setInEditMode</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.Factory.html b/python/pykde/doc/classref/kresources/KRES.Factory.html
new file mode 100644
index 00000000..3a3ce448
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.Factory.html
@@ -0,0 +1,90 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.Factory</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.Factory</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.Factory</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Factory</b> (resourceFamily)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Factory instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resourceFamily</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configWidget</b> (type, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.ConfigWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> (type, config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>self</b> (resourceFamily)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.Factory)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>resourceFamily</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeDescription</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeName</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>typeNames</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.PluginFactoryBase.html b/python/pykde/doc/classref/kresources/KRES.PluginFactoryBase.html
new file mode 100644
index 00000000..04ea2d33
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.PluginFactoryBase.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.PluginFactoryBase</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.PluginFactoryBase</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.PluginFactoryBase <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KLibFactory </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>configWidget</b> (parent) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.ConfigWidget)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>createObject</b> (a0, a1, a2, a3)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QObject)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QObject</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td></td></tr>
+<tr><td>a2</td><td>char</td><td></td></tr>
+<tr><td>a3</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> (config) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.Resource.html b/python/pykde/doc/classref/kresources/KRES.Resource.html
new file mode 100644
index 00000000..f0e33d4b
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.Resource.html
@@ -0,0 +1,134 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.Resource</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.Resource</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.Resource</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>Resource</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a Resource instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>close</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doClose</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>doOpen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dump</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>identifier</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isOpen</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>open</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readOnly</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resourceName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActive</b> (active)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>active</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIdentifier</b> (identifier)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>identifier</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReadOnly</b> (value)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>value</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setResourceName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setType</b> (type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>type</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>type</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeConfig</b> (config)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.ResourcePageInfo.html b/python/pykde/doc/classref/kresources/KRES.ResourcePageInfo.html
new file mode 100644
index 00000000..f7578e21
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.ResourcePageInfo.html
@@ -0,0 +1,50 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.ResourcePageInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.ResourcePageInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.ResourcePageInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KShared </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>ResourcePageInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a ResourcePageInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h3>variables</h3><ul type = ""><li>
+<a href = "../glossary.html#variables">variables</a><table><tr bgcolor="#fff0ff"><th>Variable</th><th>Type</th></tr>
+<tr><td>mConfig</td><td>KConfig*</td></tr>
+<tr><td>mManager</td><td>Manager<Resource>*</td></tr>
+</table></li></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.SelectDialog.html b/python/pykde/doc/classref/kresources/KRES.SelectDialog.html
new file mode 100644
index 00000000..5602f577
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.SelectDialog.html
@@ -0,0 +1,70 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES.SelectDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES.SelectDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES.SelectDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>SelectDialog</b> (list, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SelectDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QPtrList<KRES.Resource></td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>SelectDialog</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a SelectDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KRES.SelectDialog</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>getResource</b> (list, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>list</td><td>QPtrList<KRES.Resource></td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resource</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KRES.Resource)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/KRES.html b/python/pykde/doc/classref/kresources/KRES.html
new file mode 100644
index 00000000..ade3154f
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/KRES.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KRES</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KRES</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kresources Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kresources</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KRES</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td></td>
+ </tr>
+ </table>
+ <h3>classes</h3><ul>
+<li><b><a href="KRES.ConfigDialog.html">ConfigDialog</a></b><li><b><a href="KRES.ConfigWidget.html">ConfigWidget</a></b><li><b><a href="KRES.Factory.html">Factory</a></b><li><b><a href="KRES.PluginFactoryBase.html">PluginFactoryBase</a></b><li><b><a href="KRES.Resource.html">Resource</a></b><li><b><a href="KRES.ResourcePageInfo.html">ResourcePageInfo</a></b><li><b><a href="KRES.SelectDialog.html">SelectDialog</a></b></ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kresources/index.html b/python/pykde/doc/classref/kresources/index.html
new file mode 100644
index 00000000..9896b148
--- /dev/null
+++ b/python/pykde/doc/classref/kresources/index.html
@@ -0,0 +1,42 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kresources</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kresources Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KRES - KRES.ConfigWidget</th></tr>
+<tr ><td><a href="KRES.html">KRES</a></td></tr>
+<tr ><td><a href="KRES.ConfigDialog.html">KRES.ConfigDialog</a></td></tr>
+<tr ><td><a href="KRES.ConfigWidget.html"><i>KRES.ConfigWidget</i></a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KRES.Factory - KRES.Resource</th></tr>
+<tr ><td><a href="KRES.Factory.html">KRES.Factory</a></td></tr>
+<tr ><td><a href="KRES.PluginFactoryBase.html"><i>KRES.PluginFactoryBase</i></a></td></tr>
+<tr ><td><a href="KRES.Resource.html">KRES.Resource</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KRES.ResourcePageInfo - KRES.SelectDialog</th></tr>
+<tr ><td><a href="KRES.ResourcePageInfo.html">KRES.ResourcePageInfo</a></td></tr>
+<tr ><td><a href="KRES.SelectDialog.html">KRES.SelectDialog</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KDictSpellingHighlighter.html b/python/pykde/doc/classref/kspell/KDictSpellingHighlighter.html
new file mode 100644
index 00000000..65a4540c
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KDictSpellingHighlighter.html
@@ -0,0 +1,168 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KDictSpellingHighlighter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KDictSpellingHighlighter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KDictSpellingHighlighter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject, KSpellingHighlighter </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KDictSpellingHighlighter</b> (textEdit, spellCheckingActive = 1, autoEnable = 1, spellColor = Qt .red, colorQuoting = 0, QuoteColor0 = Qt .black, QuoteColor1 = QColor (0x00 ,0x80 ,0x00 ), QuoteColor2 = QColor (0x00 ,0x70 ,0x00 ), QuoteColor3 = QColor (0x00 ,0x60 ,0x00 ), spellConfig = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KDictSpellingHighlighter instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>textEdit</td><td>QTextEdit</td><td></td></tr>
+<tr><td>spellCheckingActive</td><td>bool</td><td>1</td></tr>
+<tr><td>autoEnable</td><td>bool</td><td>1</td></tr>
+<tr><td>spellColor</td><td>QColor</td><td>Qt .red</td></tr>
+<tr><td>colorQuoting</td><td>bool</td><td>0</td></tr>
+<tr><td>QuoteColor0</td><td>QColor</td><td>Qt .black</td></tr>
+<tr><td>QuoteColor1</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>QuoteColor2</td><td>QColor</td><td>QColor (0x00 ,0x70 ,0x00 )</td></tr>
+<tr><td>QuoteColor3</td><td>QColor</td><td>QColor (0x00 ,0x60 ,0x00 )</td></tr>
+<tr><td>spellConfig</td><td>KSpellConfig</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activeChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>automatic</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dictionaryChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>eventFilter</b> (o, e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>o</td><td>QObject</td><td></td></tr>
+<tr><td>e</td><td>QEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isActive</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMisspelled</b> (word)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>newSuggestions</b> (originalword, suggestions, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+<tr><td>suggestions</td><td>QStringList</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>restartBackgroundSpellCheck</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setActive</b> (active)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>active</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutomatic</b> (automatic)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>automatic</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotAutoDetection</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotCorrected</b> (originalWord, a0, a1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalWord</td><td>QString</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>a1</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDictionaryChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotKSpellNotResponding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotLocalSpellConfigChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotMisspelling</b> (originalWord, suggestions, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalWord</td><td>QString</td><td></td></tr>
+<tr><td>suggestions</td><td>QStringList</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotRehighlight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSpellReady</b> (spell)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>spell</td><td>KSpell</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>spellKey</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KSpell.html b/python/pykde/doc/classref/kspell/KSpell.html
new file mode 100644
index 00000000..9f013a3b
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KSpell.html
@@ -0,0 +1,408 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSpell</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSpell</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSpell</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>SpellerType</b> = {Text, HTML, TeX, Nroff
+}<li><b>spellStatus</b> = {Starting, Running, Cleaning, Finished, Error, Crashed, FinishedNoMisspellingsEncountered
+}<li><b>spellStatus</b> = {Starting, Running, Cleaning, Finished, Error, Crashed
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KSpell</b> (parent, caption, receiver, slot, kcs = 0, progressbar = 1, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpell instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+<tr><td>kcs</td><td>KSpellConfig</td><td>0</td></tr>
+<tr><td>progressbar</td><td>bool</td><td>1</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSpell</b> (parent, caption, receiver, slot, kcs, progressbar, modal, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpell instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>receiver</td><td>QObject</td><td></td></tr>
+<tr><td>slot</td><td>char</td><td></td></tr>
+<tr><td>kcs</td><td>KSpellConfig</td><td></td></tr>
+<tr><td>progressbar</td><td>bool</td><td></td></tr>
+<tr><td>modal</td><td>bool</td><td></td></tr>
+<tr><td>type</td><td>KSpell.SpellerType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSpell2</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPersonal</b> (word)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addword</b> (originalword)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>check</b> (_buffer, usedialog = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_buffer</td><td>QString</td><td></td></tr>
+<tr><td>usedialog</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>check2</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>check3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkList</b> (_wordlist, usedialog = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_wordlist</td><td>QStringList</td><td></td></tr>
+<tr><td>usedialog</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkList2</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkList3a</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkList4</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkListReplaceCurrent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkWord</b> (_buffer, usedialog = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_buffer</td><td>QString</td><td></td></tr>
+<tr><td>usedialog</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkWord</b> (buffer, _usedialog, suggest)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buffer</td><td>QString</td><td></td></tr>
+<tr><td>_usedialog</td><td>bool</td><td></td></tr>
+<tr><td>suggest</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkWord2</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>checkWord3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanFputs</b> (s, appendCR = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+<tr><td>appendCR</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanFputsWord</b> (s, appendCR = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>s</td><td>QString</td><td></td></tr>
+<tr><td>appendCR</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cleanUp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>corrected</b> (originalword, newword, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+<tr><td>newword</td><td>QString</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>death</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialog</b> (word, sugg, _slot)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+<tr><td>sugg</td><td>QStringList</td><td></td></tr>
+<tr><td>_slot</td><td>char</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialog2</b> (dlgresult)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dlgresult</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialog3</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dlgResult</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (buffer)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>buffer</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitDeath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitProgress</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>funnyWord</b> (word)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>heightDlg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hide</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignore</b> (word)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreall</b> (originalword)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreword</b> (originalword)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>initialize</b> (_parent, _caption, slot, _ksc, _progressbar, _modal, type)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_parent</td><td>QWidget</td><td></td></tr>
+<tr><td>_caption</td><td>QString</td><td></td></tr>
+<tr><td>slot</td><td><a href="../glossary.html#slots">SLOT</a> (Python callable)</td><td></td></tr>
+<tr><td>_ksc</td><td>KSpellConfig</td><td></td></tr>
+<tr><td>_progressbar</td><td>bool</td><td></td></tr>
+<tr><td>_modal</td><td>bool</td><td></td></tr>
+<tr><td>type</td><td>KSpell.SpellerType</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>intermediateBuffer</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ispellErrors</b> (a0, a1, a2)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+<tr><td>a1</td><td>char</td><td></td></tr>
+<tr><td>a2</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ispellExit</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcess</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ksConfig</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KSpellConfig)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>lastPosition</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>misspelling</b> (originalword, suggestions, pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>originalword</td><td>QString</td><td></td></tr>
+<tr><td>suggestions</td><td>QStringList</td><td></td></tr>
+<tr><td>pos</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modalCheck</b> (text)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>modalCheck</b> (text, kcs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>kcs</td><td>KSpellConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moveDlg</b> (x, y)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>x</td><td>int</td><td></td></tr>
+<tr><td>y</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parseOneResponse</b> (_buffer, word, sugg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_buffer</td><td>QString</td><td></td></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+<tr><td>sugg</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>progress</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ready</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KSpell</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceall</b> (origword, replacement)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>origword</td><td>QString</td><td></td></tr>
+<tr><td>replacement</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setAutoDelete</b> (_autoDelete)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_autoDelete</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreTitleCase</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreUpperWords</b> (b)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>b</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setProgressResolution</b> (res)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>res</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setUpDialog</b> (reallyusedialogbox = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>reallyusedialogbox</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotStopCancel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>startIspell</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>status</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(spellStatus)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suggestWord</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KProcIO</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suggestions</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>widthDlg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writePersonalDictionary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KSpellConfig.html b/python/pykde/doc/classref/kspell/KSpellConfig.html
new file mode 100644
index 00000000..e821792c
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KSpellConfig.html
@@ -0,0 +1,211 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSpellConfig</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSpellConfig</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSpellConfig</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSpellConfig</b> (parent = 0, name = 0, spellConfig = 0, addHelpButton = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpellConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>spellConfig</td><td>KSpellConfig</td><td>0</td></tr>
+<tr><td>addHelpButton</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KSpellConfig</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpellConfig instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KSpellConfig</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>activateHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>client</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dictFromList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dictionary</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>encoding</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillDicts</b> (box, dictionaries = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>box</td><td>QComboBox</td><td></td></tr>
+<tr><td>dictionaries</td><td>QStringList</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fillInDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>interpret</b> (fname, lname, hname)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>fname</td><td>QString</td><td></td></tr>
+<tr><td>lname</td><td>QString</td><td></td></tr>
+<tr><td>hname</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>noRootAffix</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readGlobalSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>readGlobalSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceAllList</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runTogether</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sChangeClient</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sChangeEncoding</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sDictionary</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sNoAff</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sPathDictionary</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sRunTogether</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sSetDictionary</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setClient</b> (client)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>client</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDictFromList</b> (dfl)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dfl</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDictionary</b> (qs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>qs</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setEncoding</b> (enctype)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enctype</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIgnoreList</b> (_ignorelist)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_ignorelist</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNoRootAffix</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReplaceAllList</b> (_replaceAllList)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.1.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_replaceAllList</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setRunTogether</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>writeGlobalSettings</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KSpellDlg.html b/python/pykde/doc/classref/kspell/KSpellDlg.html
new file mode 100644
index 00000000..33a87f3d
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KSpellDlg.html
@@ -0,0 +1,158 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSpellDlg</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSpellDlg</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSpellDlg</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSpellDlg</b> (parent, name, _progressbar = 0, _modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpellDlg instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>_progressbar</td><td>bool</td><td>0</td></tr>
+<tr><td>_modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>add</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>cancel</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeEvent</b> (e)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>e</td><td>QCloseEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>command</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>done</b> (i)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>i</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlighted</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignore</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ignoreAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_word, _sugg)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_word</td><td>QString</td><td></td></tr>
+<tr><td>_sugg</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (_word, _sugg, context)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>_word</td><td>QString</td><td></td></tr>
+<tr><td>_sugg</td><td>QStringList</td><td></td></tr>
+<tr><td>context</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>ready</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>selected</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotConfigChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotProgress</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>uint</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectionChanged</b> (item)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>item</td><td>QListViewItem</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>standby</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>stop</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>suggest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KSpellingHighlighter.html b/python/pykde/doc/classref/kspell/KSpellingHighlighter.html
new file mode 100644
index 00000000..91d39215
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KSpellingHighlighter.html
@@ -0,0 +1,86 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSpellingHighlighter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSpellingHighlighter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSpellingHighlighter <a href = "sip/glossary.html#abstract">(<i>abstract</i>)</a></td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KSyntaxHighlighter </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KSpellingHighlighter</b> (textEdit, spellColor = Qt .red, colorQuoting = 0, QuoteColor0 = Qt .black, QuoteColor1 = QColor (0x00 ,0x80 ,0x00 ), QuoteColor2 = QColor (0x00 ,0x80 ,0x00 ), QuoteColor3 = QColor (0x00 ,0x80 ,0x00 ))
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSpellingHighlighter instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>textEdit</td><td>QTextEdit</td><td></td></tr>
+<tr><td>spellColor</td><td>QColor</td><td>Qt .red</td></tr>
+<tr><td>colorQuoting</td><td>bool</td><td>0</td></tr>
+<tr><td>QuoteColor0</td><td>QColor</td><td>Qt .black</td></tr>
+<tr><td>QuoteColor1</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>QuoteColor2</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>QuoteColor3</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightParagraph</b> (text, endStateOfLastPara)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>endStateOfLastPara</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>intraWordEditing</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isMisspelled</b> (word) = 0
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><a href = "../glossary.html#purevirtual"><i>pure virtual</i></a></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>word</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>personalWords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIntraWordEditing</b> (editing)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>editing</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/KSyntaxHighlighter.html b/python/pykde/doc/classref/kspell/KSyntaxHighlighter.html
new file mode 100644
index 00000000..ba00bf1c
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/KSyntaxHighlighter.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KSyntaxHighlighter</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KSyntaxHighlighter</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kspell</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KSyntaxHighlighter</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QSyntaxHighlighter </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>SyntaxMode</b> = {PlainTextMode, RichTextMode
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KSyntaxHighlighter</b> (textEdit, colorQuoting = 0, QuoteColor0 = Qt .black, QuoteColor1 = QColor (0x00 ,0x80 ,0x00 ), QuoteColor2 = QColor (0x00 ,0x80 ,0x00 ), QuoteColor3 = QColor (0x00 ,0x80 ,0x00 ), mode = PlainTextMode)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KSyntaxHighlighter instance</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>textEdit</td><td>QTextEdit</td><td></td></tr>
+<tr><td>colorQuoting</td><td>bool</td><td>0</td></tr>
+<tr><td>QuoteColor0</td><td>QColor</td><td>Qt .black</td></tr>
+<tr><td>QuoteColor1</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>QuoteColor2</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>QuoteColor3</td><td>QColor</td><td>QColor (0x00 ,0x80 ,0x00 )</td></tr>
+<tr><td>mode</td><td>KSyntaxHighlighter.SyntaxMode</td><td>PlainTextMode</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlightParagraph</b> (text, endStateOfLastPara)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.2.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>endStateOfLastPara</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/index.html b/python/pykde/doc/classref/kspell/index.html
new file mode 100644
index 00000000..e9487c54
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/index.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kspell</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kspell Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <a href = "kspell-globals.html">kspell Global and Namespace members</a><p></p>
+<table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KDictSpellingHighlighter - KSpell</th></tr>
+<tr ><td><a href="KDictSpellingHighlighter.html">KDictSpellingHighlighter</a></td></tr>
+<tr ><td><a href="KSpell.html">KSpell</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KSpellConfig - KSpellDlg</th></tr>
+<tr ><td><a href="KSpellConfig.html">KSpellConfig</a></td></tr>
+<tr ><td><a href="KSpellDlg.html">KSpellDlg</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KSpellingHighlighter - KSyntaxHighlighter</th></tr>
+<tr ><td><a href="KSpellingHighlighter.html"><i>KSpellingHighlighter</i></a></td></tr>
+<tr ><td><a href="KSyntaxHighlighter.html">KSyntaxHighlighter</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kspell/kspell-globals.html b/python/pykde/doc/classref/kspell/kspell-globals.html
new file mode 100644
index 00000000..906321ca
--- /dev/null
+++ b/python/pykde/doc/classref/kspell/kspell-globals.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>kspell globals</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kspell Globals</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kspell Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <h3>enums</h3><ul>
+<li><b><a href="sip/kspell/all-globals.html#Encoding">Encoding</a></b> = {KS_E_ASCII, KS_E_LATIN1, KS_E_LATIN2, KS_E_LATIN3, KS_E_LATIN4, KS_E_LATIN5, KS_E_LATIN7, KS_E_LATIN8, KS_E_LATIN9, KS_E_LATIN13, KS_E_LATIN15, KS_E_UTF8, KS_E_KOI8R, KS_E_KOI8U, KS_E_CP1251, KS_E_CP1255
+}<li><b><a href="sip/kspell/all-globals.html#Encoding">Encoding</a></b> = {KS_E_ASCII, KS_E_LATIN1, KS_E_LATIN2, KS_E_LATIN3, KS_E_LATIN4, KS_E_LATIN5, KS_E_LATIN7, KS_E_LATIN8, KS_E_LATIN9, KS_E_LATIN13, KS_E_LATIN15, KS_E_UTF8, KS_E_KOI8R, KS_E_KOI8U, KS_E_CP1251
+}<li><b><a href="sip/kspell/all-globals.html#Encoding">Encoding</a></b> = {KS_E_ASCII, KS_E_LATIN1, KS_E_LATIN2, KS_E_LATIN3, KS_E_LATIN4, KS_E_LATIN5, KS_E_LATIN7, KS_E_LATIN8, KS_E_LATIN9, KS_E_LATIN15, KS_E_UTF8, KS_E_KOI8R, KS_E_KOI8U, KS_E_CP1251, KS_E_LATIN13
+}<li><b><a href="sip/kspell/all-globals.html#KS_RESULT">KS_RESULT</a></b> = {KS_CANCEL, KS_REPLACE, KS_REPLACEALL, KS_IGNORE, KS_IGNOREALL, KS_ADD, KS_STOP, KS_SUGGEST, KS_CONFIG
+}<li><b><a href="sip/kspell/all-globals.html#KS_RESULT">KS_RESULT</a></b> = {KS_CANCEL, KS_REPLACE, KS_REPLACEALL, KS_IGNORE, KS_IGNOREALL, KS_ADD, KS_STOP
+}<li><b><a href="sip/kspell/all-globals.html#KSpellClients">KSpellClients</a></b> = {KS_CLIENT_ISPELL, KS_CLIENT_ASPELL, KS_CLIENT_HSPELL, KS_CLIENT_ZEMBEREK
+}<li><b><a href="sip/kspell/all-globals.html#KSpellClients">KSpellClients</a></b> = {KS_CLIENT_ISPELL, KS_CLIENT_ASPELL, KS_CLIENT_HSPELL
+}<li><b><a href="sip/kspell/all-globals.html#KSpellClients">KSpellClients</a></b> = {KS_CLIENT_ISPELL, KS_CLIENT_ASPELL
+}</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KCModuleContainer.html b/python/pykde/doc/classref/kutils/KCModuleContainer.html
new file mode 100644
index 00000000..78e2b725
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KCModuleContainer.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCModuleContainer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCModuleContainer</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href= "../../index.html">Table of contents</a></td></tr> <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCModuleContainer</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KCModule </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCModuleContainer</b> (parent, name, mods)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleContainer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>mods</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleContainer</b> (parent, name, mods = QString ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleContainer instance</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>mods</td><td>QString</td><td>QString ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addModule</b> (module)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>finalize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KCModuleInfo.html b/python/pykde/doc/classref/kutils/KCModuleInfo.html
new file mode 100644
index 00000000..8b574981
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KCModuleInfo.html
@@ -0,0 +1,219 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCModuleInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCModuleInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCModuleInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCModuleInfo</b> (desktopFile)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>desktopFile</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleInfo</b> (moduleInfo)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>moduleInfo</td><td>KService.Ptr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleInfo</b> (rhs)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>rhs</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>docPath</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>factoryName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fileName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>handle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHiddenByDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>keywords</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>library</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moduleName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needsRootPrivileges</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needsTest</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setComment</b> (comment)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>comment</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setDocPath</b> (p)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>p</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHandle</b> (handle)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>handle</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (icon)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>icon</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIsHiddenByDefault</b> (isHiddenByDefault)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>isHiddenByDefault</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setKeywords</b> (keyword)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>keyword</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setLibrary</b> (lib)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>lib</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setName</b> (name)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>name</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNeedsRootPrivileges</b> (needsRootPrivileges)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>needsRootPrivileges</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setNeedsTest</b> (val)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>val</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setWeight</b> (weight)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>weight</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>weight</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator !=</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>operator ==</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KCModuleLoader.html b/python/pykde/doc/classref/kutils/KCModuleLoader.html
new file mode 100644
index 00000000..a96b45ae
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KCModuleLoader.html
@@ -0,0 +1,135 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCModuleLoader</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCModuleLoader</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCModuleLoader</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>ErrorReporting</b> = {None, Inline, Dialog, Both
+}</ul>
+<h3>methods</h3><ul>
+<li><b>loadModule</b> (module, withFallback = 1, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>KCModuleInfo</td><td></td></tr>
+<tr><td>withFallback</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadModule</b> (module, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadModule</b> (module, report, withFallback = 1, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>KCModuleInfo</td><td></td></tr>
+<tr><td>report</td><td>KCModuleLoader.ErrorReporting</td><td></td></tr>
+<tr><td>withFallback</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>loadModule</b> (module, report, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>QString</td><td></td></tr>
+<tr><td>report</td><td>KCModuleLoader.ErrorReporting</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>reportError</b> (report, text, details, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>report</td><td>KCModuleLoader.ErrorReporting</td><td></td></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>details</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showLastLoaderError</b> (parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testModule</b> (module)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>testModule</b> (module)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>unloadModule</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mod</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KCModuleProxy.html b/python/pykde/doc/classref/kutils/KCModuleProxy.html
new file mode 100644
index 00000000..2a8ceaab
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KCModuleProxy.html
@@ -0,0 +1,182 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCModuleProxy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCModuleProxy</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCModuleProxy</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCModuleProxy</b> (info, withFallback = 0, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleProxy instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KCModuleInfo</td><td></td></tr>
+<tr><td>withFallback</td><td>bool</td><td>0</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleProxy</b> (serviceName, withFallback = 1, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleProxy instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>serviceName</td><td>QString</td><td></td></tr>
+<tr><td>withFallback</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCModuleProxy</b> (service, withFallback = 1, parent = 0, name = 0, args = QStringList ())
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCModuleProxy instance</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>service</td><td>KService.Ptr</td><td></td></tr>
+<tr><td>withFallback</td><td>bool</td><td>1</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>args</td><td>QStringList</td><td>QStringList ()</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>aboutData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KAboutData)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (mod)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>mod</td><td>KCModuleProxy</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>childClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dcopName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QCString)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions <i>less than</i> KDE 3.4.0 only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>deleteClient</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>emitQuickHelpChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>init</b> (info)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>info</td><td>KCModuleInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>instance</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KInstance)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>moduleInfo</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModuleInfo)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quickHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>quickHelpChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>realModule</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KCModule)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootMode</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>rootOnlyMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>runAsRoot</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>useRootOnlyMsg</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KCMultiDialog.html b/python/pykde/doc/classref/kutils/KCMultiDialog.html
new file mode 100644
index 00000000..9e4863df
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KCMultiDialog.html
@@ -0,0 +1,135 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KCMultiDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KCMultiDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KCMultiDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KCMultiDialog</b> (parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCMultiDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCMultiDialog</b> (dialogFace, caption, parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCMultiDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>int</td><td></td></tr>
+<tr><td>caption</td><td>QString</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KCMultiDialog</b> (dialogFace, user2, user3 = KGuiItem (), buttonMask = User2, caption = i18n ("Configure" ), parent = 0, name = 0, modal = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KCMultiDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>dialogFace</td><td>int</td><td></td></tr>
+<tr><td>user2</td><td>KGuiItem</td><td></td></tr>
+<tr><td>user3</td><td>KGuiItem</td><td>KGuiItem ()</td></tr>
+<tr><td>buttonMask</td><td>int</td><td>User2</td></tr>
+<tr><td>caption</td><td>QString</td><td>i18n ("Configure" )</td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>modal</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addModule</b> (module, withfallback = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>module</td><td>QString</td><td></td></tr>
+<tr><td>withfallback</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addModule</b> (moduleinfo, parentmodulenames = QStringList (), withfallback = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>moduleinfo</td><td>KCModuleInfo</td><td></td></tr>
+<tr><td>parentmodulenames</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>withfallback</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>apply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configCommitted</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configCommitted</b> (instanceName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeAllModules</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>show</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotApply</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotHelp</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotUser1</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KFind.html b/python/pykde/doc/classref/kutils/KFind.html
new file mode 100644
index 00000000..317a5e37
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KFind.html
@@ -0,0 +1,222 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFind</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFind</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFind</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QObject </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Result</b> = {NoMatch, Match
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFind</b> (pattern, options, parent)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFind instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFind</b> (pattern, options, parent, findDialog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFind instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>findDialog</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeFindNextDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialogClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dialogsParent</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayFinalDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KFind.Result)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (text, pattern, index, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) matchedlength (int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>find</b> (text, pattern, index, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) matchedlength (int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QRegExp</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findNextDialog</b> (create = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDialogBase)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlight</b> (text, matchingIndex, matchedLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>matchingIndex</td><td>int</td><td></td></tr>
+<tr><td>matchedLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>highlight</b> (id, matchingIndex, matchedLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>matchingIndex</td><td>int</td><td></td></tr>
+<tr><td>matchedLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>index</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>needData</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numMatches</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>optionsChanged</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>parentWidget</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pattern</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetCounts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (data, startPos = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>data</td><td>QString</td><td></td></tr>
+<tr><td>startPos</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setData</b> (id, data, startPos = -1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>data</td><td>QString</td><td></td></tr>
+<tr><td>startPos</td><td>int</td><td>-1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPattern</b> (pattern)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shouldRestart</b> (forceAsking = 0, showNumMatches = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>forceAsking</td><td>bool</td><td>0</td></tr>
+<tr><td>showNumMatches</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotDialogClosed</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotFindNext</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>validateMatch</b> (text, index, matchedlength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>matchedlength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KFindDialog.html b/python/pykde/doc/classref/kutils/KFindDialog.html
new file mode 100644
index 00000000..72979b14
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KFindDialog.html
@@ -0,0 +1,188 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KFindDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KFindDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KFindDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KDialogBase </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Options</b> = {WholeWordsOnly, FromCursor, SelectedText, CaseSensitive, FindBackwards, RegularExpression, FindIncremental, MinimumUserOption
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KFindDialog</b> (parent = 0, name = 0, options = 0, findStrings = QStringList (), hasSelection = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFindDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>options</td><td>long</td><td>0</td></tr>
+<tr><td>findStrings</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>hasSelection</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFindDialog</b> (modal, parent = 0, name = 0, options = 0, findStrings = QStringList (), hasSelection = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFindDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>modal</td><td>bool</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>options</td><td>long</td><td>0</td></tr>
+<tr><td>findStrings</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>hasSelection</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KFindDialog</b> (parent, name, forReplace)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KFindDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td></td></tr>
+<tr><td>forReplace</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>findHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pattern</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setFindHistory</b> (history)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>history</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHasCursor</b> (hasCursor)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hasCursor</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setHasSelection</b> (hasSelection)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>hasSelection</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPattern</b> (pattern)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSupportsBackwardsFind</b> (supports)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supports</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSupportsCaseSensitiveFind</b> (supports)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supports</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSupportsRegularExpressionFind</b> (supports)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supports</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSupportsWholeWordsFind</b> (supports)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.4.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>supports</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPatterns</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showPlaceholders</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSelectedTextToggled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>textSearchChanged</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KMultiTabBar.html b/python/pykde/doc/classref/kutils/KMultiTabBar.html
new file mode 100644
index 00000000..8ffe1522
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KMultiTabBar.html
@@ -0,0 +1,163 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMultiTabBar</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMultiTabBar</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMultiTabBar</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>KMultiTabBarMode</b> = {Horizontal, Vertical
+}<li><b>KMultiTabBarPosition</b> = {Left, Right, Top, Bottom
+}<li><b>KMultiTabBarStyle</b> = {VSNET, KDEV3, KONQSBC, KDEV3ICON, STYLELAST
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KMultiTabBar</b> (bm, parent = 0, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMultiTabBar instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>bm</td><td>KMultiTabBar.KMultiTabBarMode</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendButton</b> (pic, id = -1, popup = 0, not_used_yet = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pic</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td>0</td></tr>
+<tr><td>not_used_yet</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>appendTab</b> (pic, id = -1, text = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pic</td><td>QPixmap</td><td></td></tr>
+<tr><td>id</td><td>int</td><td>-1</td></tr>
+<tr><td>text</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>button</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMultiTabBarButton)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>buttons</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fontChange</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QFont</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isTabRaised</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>position</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMultiTabBar.KMultiTabBarPosition)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeButton</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>removeTab</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPosition</b> (pos)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pos</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStyle</b> (style)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>style</td><td>KMultiTabBar.KMultiTabBarStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTab</b> (id, state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showActiveTabTexts</b> (show = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tab</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMultiTabBarTab)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabStyle</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KMultiTabBar.KMultiTabBarStyle)</i></td></tr>
+<tr><td>In versions KDE 3.5.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>tabs</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateSeparator</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KMultiTabBarButton.html b/python/pykde/doc/classref/kutils/KMultiTabBarButton.html
new file mode 100644
index 00000000..8db96814
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KMultiTabBarButton.html
@@ -0,0 +1,120 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMultiTabBarButton</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMultiTabBarButton</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMultiTabBarButton</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QPushButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMultiTabBarButton</b> (pic, a0, popup, id, parent, pos, style)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMultiTabBarButton instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pic</td><td>QPixmap</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>pos</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+<tr><td>style</td><td>KMultiTabBar.KMultiTabBarStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KMultiTabBarButton</b> (a0, popup, id, parent, pos, style)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMultiTabBarButton instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>popup</td><td>QPopupMenu</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>pos</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+<tr><td>style</td><td>KMultiTabBar.KMultiTabBarStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>clicked</b> (id)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>hideEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QHideEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>id</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPosition</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setStyle</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMultiTabBar.KMultiTabBarStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setText</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>sizeHint</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QSize)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KMultiTabBarTab.html b/python/pykde/doc/classref/kutils/KMultiTabBarTab.html
new file mode 100644
index 00000000..58ad75f6
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KMultiTabBarTab.html
@@ -0,0 +1,139 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KMultiTabBarTab</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KMultiTabBarTab</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KMultiTabBarTab</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KMultiTabBarButton </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KMultiTabBarTab</b> (pic, a0, id, parent, pos, style)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KMultiTabBarTab instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pic</td><td>QPixmap</td><td></td></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>id</td><td>int</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>pos</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+<tr><td>style</td><td>KMultiTabBar.KMultiTabBarStyle</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButton</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButtonClassic</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButtonLabel</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>drawButtonStyled</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPainter</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>neededSize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resize</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setIcon</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QPixmap</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setSize</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setState</b> (state)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>state</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setTabsPosition</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KMultiTabBar.KMultiTabBarPosition</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showActiveTabText</b> (show)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>show</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotClicked</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>updateState</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KPluginInfo.html b/python/pykde/doc/classref/kutils/KPluginInfo.html
new file mode 100644
index 00000000..1484271e
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KPluginInfo.html
@@ -0,0 +1,213 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPluginInfo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPluginInfo</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPluginInfo</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td> </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPluginInfo</b> (filename, resource = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPluginInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>filename</td><td>QString</td><td></td></tr>
+<tr><td>resource</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPluginInfo</b> (service)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPluginInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>service</td><td>KService.Ptr</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KPluginInfo</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPluginInfo instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>KPluginInfo</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>author</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>category</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>comment</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>config</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KConfig)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configgroup</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>dependencies</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>email</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromFiles</b> (files, config = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPluginInfo.List)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>files</td><td>QStringList</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromKPartsInstanceName</b> (a0, config = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPluginInfo.List)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QString</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>fromServices</b> (services, config = 0, group = QString .null)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPluginInfo.List)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>services</td><td>KService.List</td><td></td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+<tr><td>group</td><td>QString</td><td>QString .null</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>icon</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isHidden</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPluginEnabled</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>isPluginEnabledByDefault</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>kcmServices</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>license</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> (config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigGroup</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>name</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>pluginName</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>property</b> (key)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QVariant)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>key</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> (config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfigGroup</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>service</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KService.Ptr)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setConfig</b> (config, group)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>config</td><td>KConfig</td><td></td></tr>
+<tr><td>group</td><td>QString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setPluginEnabled</b> (enabled)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>enabled</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>specfile</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>version</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>website</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+<h2>operators</h2><ul>
+<li><b>operator []</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KPluginSelector.html b/python/pykde/doc/classref/kutils/KPluginSelector.html
new file mode 100644
index 00000000..a303c568
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KPluginSelector.html
@@ -0,0 +1,105 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KPluginSelector</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KPluginSelector</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KPluginSelector</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>QWidget </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KPluginSelector</b> (parent, name = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KPluginSelector instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPlugins</b> (instanceName, catname = QString .null, category = QString .null, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QString</td><td></td></tr>
+<tr><td>catname</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>category</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPlugins</b> (instance, catname = QString .null, category = QString .null, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instance</td><td>KInstance</td><td></td></tr>
+<tr><td>catname</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>category</td><td>QString</td><td>QString .null</td></tr>
+<tr><td>config</td><td>KConfig</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>addPlugins</b> (plugininfos, catname = QString .null, category = QString .null, config = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>changed</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>configCommitted</b> (instanceName)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>instanceName</td><td>QCString</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>defaults</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>load</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>save</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setShowEmptyConfigPage</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>bool</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KReplace.html b/python/pykde/doc/classref/kutils/KReplace.html
new file mode 100644
index 00000000..0f81d1fa
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KReplace.html
@@ -0,0 +1,143 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KReplace</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KReplace</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KReplace</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KFind </td>
+ </tr>
+ </table>
+ <h3>methods</h3><ul>
+<li><b>KReplace</b> (pattern, replacement, options, parent = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KReplace instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>replacement</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>KReplace</b> (pattern, replacement, options, parent, replaceDialog)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KReplace instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>replacement</td><td>QString</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+<tr><td>parent</td><td>QWidget</td><td></td></tr>
+<tr><td>replaceDialog</td><td>QWidget</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>closeReplaceNextDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>displayFinalDialog</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>numReplacements</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(Result)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> (text, pattern, replacement, index, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) replacedLength (int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QString</td><td></td></tr>
+<tr><td>replacement</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> (text, pattern, replacement, index, options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int) replacedLength (int)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+<tr><td><i>static</i></td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>pattern</td><td>QRegExp</td><td></td></tr>
+<tr><td>replacement</td><td>QString</td><td></td></tr>
+<tr><td>index</td><td>int</td><td></td></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replace</b> (text, replacementIndex, replacedLength, matchedLength)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>text</td><td>QString</td><td></td></tr>
+<tr><td>replacementIndex</td><td>int</td><td></td></tr>
+<tr><td>replacedLength</td><td>int</td><td></td></tr>
+<tr><td>matchedLength</td><td>int</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceNextDialog</b> (create = 0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KDialogBase)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>create</td><td>bool</td><td>0</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>resetCounts</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>shouldRestart</b> (forceAsking = 0, showNumMatches = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>forceAsking</td><td>bool</td><td>0</td></tr>
+<tr><td>showNumMatches</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReplace</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotReplaceAll</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotSkip</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/KReplaceDialog.html b/python/pykde/doc/classref/kutils/KReplaceDialog.html
new file mode 100644
index 00000000..89ed0430
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/KReplaceDialog.html
@@ -0,0 +1,97 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>class KReplaceDialog</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>class KReplaceDialog</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="index.html">kutils Classes</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table>
+ <tr><td width="10%" align=left>Module</td>
+ <td width="30%" align=left>kutils</td>
+ </tr>
+ <tr><td>Class</td>
+ <td>KReplaceDialog</td>
+ </tr>
+ <tr><td>Inherits</td>
+ <td>KFindDialog </td>
+ </tr>
+ </table>
+ <h3>enums</h3><ul>
+<li><b>Options</b> = {PromptOnReplace, BackReference
+}</ul>
+<h3>methods</h3><ul>
+<li><b>KReplaceDialog</b> (parent = 0, name = 0, options = 0, findStrings = QStringList (), replaceStrings = QStringList (), hasSelection = 1)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KReplaceDialog instance</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>parent</td><td>QWidget</td><td>0</td></tr>
+<tr><td>name</td><td>char</td><td>0</td></tr>
+<tr><td>options</td><td>long</td><td>0</td></tr>
+<tr><td>findStrings</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>replaceStrings</td><td>QStringList</td><td>QStringList ()</td></tr>
+<tr><td>hasSelection</td><td>bool</td><td>1</td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>options</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(long)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replaceExtension</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QWidget)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacement</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>replacementHistory</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QStringList)</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setOptions</b> (options)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>options</td><td>long</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>setReplacementHistory</b> (history)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>history</td><td>QStringList</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>showEvent</b> (a0)
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
+<tr><td>a0</td><td>QShowEvent</td><td></td></tr>
+</table>
+</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+<li><b>slotOk</b> ()
+<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
+<tr><td>In versions KDE 3.3.0 and above only</td></tr>
+</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
+</ul>
+
+</body>
+</html>
diff --git a/python/pykde/doc/classref/kutils/index.html b/python/pykde/doc/classref/kutils/index.html
new file mode 100644
index 00000000..020f293d
--- /dev/null
+++ b/python/pykde/doc/classref/kutils/index.html
@@ -0,0 +1,47 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>module kutils</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="wabbit dumphtml">
+</head>
+<body>
+<h4>PyKDE - Python Bindings for KDE</h4>
+<hr>
+<table width="100%"><tr>
+ <td width ="70%">
+ <h1>kutils Class Index</h1><hr>
+ </td>
+ <td width="30%" valign="top" align="right">
+ <table>
+ <tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
+ <tr><td align="right"><a href="../index.html">Modules</a></td></tr>
+ <tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
+ </table>
+ </td>
+ </tr></table>
+ <table width="100%" border="0"><tr>
+<td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KCModuleInfo - KFind</th></tr>
+<tr ><td><a href="KCModuleInfo.html">KCModuleInfo</a></td></tr>
+<tr ><td><a href="KCModuleLoader.html">KCModuleLoader</a></td></tr>
+<tr ><td><a href="KCModuleProxy.html">KCModuleProxy</a></td></tr>
+<tr ><td><a href="KCMultiDialog.html">KCMultiDialog</a></td></tr>
+<tr ><td><a href="KFind.html">KFind</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KFindDialog - KMultiTabBarTab</th></tr>
+<tr ><td><a href="KFindDialog.html">KFindDialog</a></td></tr>
+<tr ><td><a href="KMultiTabBar.html">KMultiTabBar</a></td></tr>
+<tr ><td><a href="KMultiTabBarButton.html">KMultiTabBarButton</a></td></tr>
+<tr ><td><a href="KMultiTabBarTab.html">KMultiTabBarTab</a></td></tr>
+</table></td><td valign="top"><table border="0">
+<tr bgcolor="#fff0ff"><th>KPluginInfo - KReplaceDialog</th></tr>
+<tr ><td><a href="KPluginInfo.html">KPluginInfo</a></td></tr>
+<tr ><td><a href="KPluginSelector.html">KPluginSelector</a></td></tr>
+<tr ><td><a href="KReplace.html">KReplace</a></td></tr>
+<tr ><td><a href="KReplaceDialog.html">KReplaceDialog</a></td></tr>
+</table></td></tr></table>
+</body>
+</html>
diff --git a/python/pykde/doc/dcopext.html b/python/pykde/doc/dcopext.html
new file mode 100644
index 00000000..b9eef077
--- /dev/null
+++ b/python/pykde/doc/dcopext.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>p
+<head>
+ <title>Examples</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Quanta Plus">
+</head>
+<p>
+<DIV
+CLASS="NAVHEADER"
+><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="examples.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="limits.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+
+<h1>DCOP and Extensions</h1>
+<p>
+DCOP is KDE's acronym for it's "Desktop Communications-Oriented Protocol" - basically a
+lightweight and simple mechanism for inter-process communications (IPC). DCOP allows two
+running applications to exchange messages or other information or exercise control over
+each other.
+</p>
+<p>
+While the DCOP implementation is convenient for C++ programmers, it presents some difficulties
+for Python programmers. The DCOP extensions that have been added to PyKDE should make most
+DCOP applications (either DCOP-client or DCOP-enabled applications) simple to write and
+reliable to run
+</p>
+<h2>What Extensions?</h2>
+There are three basic extensions added to PyKDE that are not part of KDE itself:
+<dl>
+<dt>Packing/Unpacking QByteArrays</dt>
+<dd>
+DCOP passes data between applications using QByteArrays. QByteArrays can be difficult to
+pack or unpack using PyQt or PyKDE, so PyKDE has additional methods (dcop_add and dcop_next)
+to make these operations simpler in Python
+</dd>
+<dt>Client Extensions</dt>
+<dd>
+PyKDE's DCOP client extensions make it easy and natural to call DCOP methods in other
+DCOP-enabled applications - the application or DCOP object being referenced look like
+Python classes, and the method being called looks to the programmer like a Python method.
+</dd>
+<dt>DCOP Enabling (Export) Extensions</dt>
+<dd>
+Another set of extensions makes it trivial to expose an application's methods via DCOP to
+other applications. All that is required is to subclass a pre-written Python class and
+provide a list of the methods to expose, along with a method signature listing the name
+of the method, it's return type, and the the types of its arguments.
+</dd>
+</dl>
+<p>
+The methods for packing/unpacking QByteArrays are available to the programmer, but are
+primarily used transparently by the other PyKDE DCOP extensions. The client and export extensions
+are two Python modules that are included and installed as part of PyKDE.
+</p>
+
+<h2>Calling DCOP Methods</h2>
+<p>
+Accessing a DCOP method in another application requires 3 pieces of information: the name of
+the application to be accessed, the name of the DCOP object which holds the method to be
+called, and the name of the method itself.
+</p>
+
+<h3>Collection the Information</h3>
+<p>
+The easiest way to collect the required information is to use the kdcop application that
+comes with PyKDE. kdcop is graphical application that looks like the image shown.
+</p>
+<IMG src="images/kdcop1.png" align="middle" border="0">
+<h3>Application/Object/Method Information</h3>
+<p>
+Look at the entry for kicker, which has been expanded in the image. Underneath kicker (the
+application name - kicker is the panel on the standard KDE screen) is a list of DCOP objects,
+for example, Panel. Under each object is a list of methods the application/object exposes, for
+example, "int panelPosition ()". This indicates the method panelPosition takes no arguments
+and returns an integer.
+</p>
+<h3>Writing the Code</h3>
+<p>
+There are two ways to use the DCOP extensions to call the panelPosition method. The first is
+from the application level, the second is from the object level. We can use the "application
+level" in this case, because the object name "Panel" can be valid Python identifier (not all
+object names have this property).
+</p>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+import dcopext
+# ! other imports not shown !
+
+app = KApplication ()
+dcop = app.dcopClient ()
+
+d = dcopext.DCOPApp ("kicker", dcop)
+ok, panelPos = d.Panel.panelPosition ()
+
+</PRE></TD></TR></TABLE>
+<p>
+That's all there's to it in this case. We import dcopext, which contains the client extension
+classes; from the KApplication instance, we "borrow" the DCOPClient instance (dcop); we create a
+DCOPApp instance, passing it the name of the app ("kicker") and the DCOPClient instance; we
+call kicker's Panel object's panelPosition method (d.Panel.panelPosition); lastly, the integer
+value is returned to our application (panelPos) as the second item in a tuple - the first element
+of the tuple (ok) is a boolean value indicating whether the call succeeded (True) or failed (False).
+</p>
+<p>
+Many of the DCOP object names can't be used as Python identifiers (for example,"0x8239ae0" or
+KIO::Scheduler in kicker, or EditInterface#1, which kwrite exports). In that case, it's
+necessary to write the code at the object level, constructing a DCOPObj instead of a
+DCOPApp (DCOPApp actually constructs a DCOPObj behind the scenese in the example above).
+</p>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+import dcopext
+# ! other imports not shown !
+
+o = dcopext.DCOPObj ("kicker", dcop, "Panel")
+ok, panelPos = o.panelPosition ()
+
+</PRE></TD></TR></TABLE>
+<p>
+In this example, 'o' is a DCOPObj. In constructing 'o', we add a string representation of
+the name of the object ("Panel") to the application name and DCOPClient object. We then
+use the DCOPObj 'o' to call the the method (panelPosition) that the object supports.
+</p>
+<h3>More on Application Names</h3>
+<p>
+In the example above, kicker was the name of the application and the id we used to reference
+the application as well. kicker is an example of a unique application - only one instance of
+kicker can be running at any time.
+</p>
+<p>
+Many applications (konqueror, for example) can have several instances running at the same
+time. kdcop would display multiple instances like this:
+</p>
+<IMG src="images/kdcop2.png" border="0">
+<p>
+kdcop shows 3 instances of konqueror running in the example above. To perform a DCOP call in
+this case, we'd need to know which instance of konqueror we want to send the call to. The
+suffix on each instance of konqueror is the PID of the instance running. We simply pass the
+full id (app name + pid - eg konqueror-14409) when constructing DCOPApp or DCOPObj.
+</p>
+<p>
+If you instantiate the application you want to communicate with from your own application (that
+will be making the DCOP calls), methods like KApplication.startServiceByDesktopName will
+let you start the app and also return both the PID of the started app and the complete
+identifier string needed to initiate DCOP communications. The identifier's name portion may or
+may not be the same as the name of the application (see the example_dcopexport.py example program,
+whose ID is "petshop-####" (#### is the PID of the application instance).
+</p>
+<h3>Data Types</h3>
+The DCOP extensions will support any of the following C++ data types:
+<table><TR><TD>char</TD><TD>short</TD><TD>int</TD></TR>
+<TR><TD>long</TD><TD>unsigned char</TD><TD>unsigned short</TD></TR>
+<TR><TD>unsigned int</TD><TD>unsigned long</TD><TD>uchar</TD></TR>
+<TR><TD>ushsort</TD><TD>uint</TD><TD>ulong</TD></TR>
+<TR><TD>Q_INT32</TD><TD>pid_t</TD><TD>float</TD></TR>
+<TR><TD>double</TD><TD>QString</TD><TD>QStringList</TD></TR>
+<TR><TD>QCString</TD><TD>KURL</TD><TD>KURL::List</TD></TR>
+<TR><TD>QSize</TD><TD>QRect</TD><TD>QRegion</TD></TR>
+<TR><TD>QFont</TD><TD>QCursor</TD><TD>QPixmap</TD></TR>
+<TR><TD>QColor</TD><TD>QColorGroup</TD><TD>QPalette</TD></TR>
+<TR><TD>QBrush</TD><TD>QWidget::FocusPolicy</TD><TD>DCOPRef</TD></TR>
+<TR><TD>QVariant</TD><TD>QDate</TD><TD>QTime</TD></TR>
+<TR><TD>QDateTime</TD><TD>QImage</TD><TD>QKeySequence</TD></TR>
+<TR><TD>QPen</TD><TD>QPicture</TD><TD>QPointArray</TD></TR>
+<TR><TD>QValueList&lt;DCOPRef&gt;</TD><TD>QValueList&lt;QCString&gt;</TD><TD>QMap&lt;QCString,DCOPRef&gt;</TD></TR>
+<TR><TD>QMap&lt;QCString,DCOPRef&gt;</TD><TD></TD><TD></TD></TR>
+</table>
+<p>
+Data conversion between C++ and Python types is done transparently. The integer types
+map to Python int or Python long, the decimal types to Python double. A Python string
+can be used for any argument that requires a QString or QCString (return types will
+always be the Qt object type). The QValueList types take or return a Python list of the
+indicated object. The QMap types take or return a Python dict with the first type as
+the key and the second type as data. All other types use the same object type in
+Python and Qt (for instance, QPoint or QStringList).
+</p>
+<p>
+It's possible to add support for more types in the future. To be added, a type requires
+a pair of overloaded QDataStream operators ("&lt;&lt;" and "&gt;&gt;"). Types must also
+exist in the libs that PyQt and PyKDE support - types specific to applications (like
+konqueror) cannot be supported at this time.
+</p>
+<h3>Other Extension Features</h3>
+<p>
+The dcopext module consists of 3 classes (DCOPApp, DCOPObj and DCOPMeth) corresponding to
+applications, objects and methods respectively. These classes have additional variables and methods:
+<ul>
+<li> DCOPApp.objects - returns a list of the applications DCOP objects. example: d.objects</li>
+<li> DCOPApp.object(objname) - returns a DCOPObj for the DCOPObject. example: d.object ("Panel")</li>
+<li> DCOPObj.methods - returns a list of the methods and object has. example: o.methods</li>
+<li> DCOPObj.method (methname) - returns an DCOPMeth instance corresponding to the method, which
+can be called. example: o.method("panelPosition")</li>
+<li> DCOPMeth.valid - returns whether the method is valid or not (True/False). example:
+d.Panel.panelPosition.valid</li>
+<li>DCOPMeth.rtype - a method's return type. example d.Panel.panelPosition.rtype</li>
+<li>DCOPMeth.argtypes - a list of the method's argument types. example d.Panel.panelPosition.argtypes</li>
+<li>DCOPMeth.argnames - a list of the method's argument names. example d.Panel.panelPosition.argnames</li>
+</ul>
+<p>
+If a method isn't valid, it's rtype, argtypes and argnames values will all be None.
+</p>
+</p>
+<h2>DCOP Enabling a Python Application</h2>
+<p>
+Enabling a Python application to handle DCOP calls is even simpler than making calls as a
+DCOP client. Suppose a Python application has two methods we want to appear as int getValue()
+and void setValue(int). The corresponding Python methods are get_value() set_value(i).
+ We want to export these methods under the object "Value". Here's the code:
+</p>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+from dcopexport import DCOPExObj
+# ! other imports not shown !
+
+class ValueObject (DCOPExObj):
+ def __init__ (self, id="Value"):
+ DCOPExObj.__init__ (self, id)
+ self.value = 0
+
+ self.addMethod ("int getValue()", self.get_value)
+ self.addMethod ("void setValue(int)", self.set_value)
+
+ def get_value(self):
+ return self.value
+
+ def set_value (self, i):
+ self.value = i
+
+</PRE></TD></TR></TABLE>
+<p>
+Note that the module for the DCOPExObj class is "dcopexport". The Python methods may be
+part of the DCOPExObj subclass, part of another class, or global Python functions. They
+must be callable from the DCOPExObj subclass being created. The dcopexport extension takes
+care of everything else, including the "functions()" method which applications (yours or
+kdcop, for example) can call to find out which methods are available and their return
+and argument types. You can have multiple instances of DCOPExObj in a program. All of
+the data types listed above are supported transparently - you don't have to pack or
+unpack QByteArrays.
+</p>
+<h2>Packing and Unpacking QByteArrays</h2>
+<p>
+NOTE: It isn't necessary to use the dcop_add and dcop_next functions or worry about
+QByteArrays at all when using dcopext or dcopexport as shown above. Those modules
+handle the packing and unpacking details automatically behind the scenes.
+</p>
+<p>
+The dcop_add and dcop_next functions are available in the PyKDE kdecore module (they
+may be relocated to a different module in the future). They use a QDataStream to operate
+on a QByteArray. The QByteArray can be thought of as a stack (a FIFO stack though) -
+dcop_add pushes objects onto the stack, dcop_next pops objects off the stack. The first
+object popped off will be the first object pushed on, etc.
+</p>
+<p>
+The dcop_add function is actually a group of overloaded functions, some of which take
+different argument counts. Here are some examples:
+</p>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+from kdecore import dcop_add, dcop_next
+from qt import QByteArray, QDataStream, IO_ReadOnly, IO_WriteOnly, QString,\
+ QCString, QValueList&lt;QCString&gt;
+from dcopext import numericTypes, stringTypes
+
+b = QByteArray ()
+s = QDataStream (b, IO_WriteOnly)
+
+i = 6
+d = 3.14
+t = QString ("Hello, World")
+x = QCString ("One")
+y = QCString ("Two")
+z = QCString ("Three")
+l = [x, y, z]
+
+dcop_add (s, i, "long")
+dcop_add (s, d, "double")
+dcop_add (s, t)
+dcop_add (s, x)
+dcop_add (s, l, "QValueList&lt;QCString&gt;")
+
+</PRE></TD></TR></TABLE>
+<p>
+Notice that for numeric types (integer or decimal) an additional string is needed to
+specify the C++ type of the object - that's because Python has only 3 basic numeric
+types, while C++ has at least 10 basic numeric types plus variations via typedefs.
+</p>
+<p>
+Also, the QValueList (and QMap - not shown) type needs a qualifier - a Python list
+type doesn't know (or care) what the type of its elements is.
+</p>
+<p>
+Other types (QString, QCString) are uniquely typed, so no modifier is needed.
+</p>
+<p>
+While it may change in the future, dcop_add right now retains the variable argument lists.
+You can handle this in your own code easily if you import "numericTypes" and
+"stringTypes" from dcopext as shown above. The following code will sort things out:
+</p>
+
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+# atype is the type of the argument being processed (as a string)
+# value is the object being packed into the QByteArray
+
+if atype in numericTypes:
+ dcop_add (s, value, atype)
+elif atype in stringTypes and isinstance (value, str):
+ dcop_add (s, eval ("%s('%s')" % (atype, value)))
+elif atype.startswith ("QMap") or atype.startswith ("QValueList"):
+ dcop_add (params, value, atype)
+else:
+ dcop_add (s, value)
+
+</PRE></TD></TR></TABLE>
+<p>
+At least in DCOP related applications, all of the necessary type information is always
+easily available. The first if clause above processes numeric types; the second if
+clause allows you to use Python strings in place of Qt's QString or QCString types; the
+third if clause handles QValueList and QMap based types; the else clause handles
+everything else.
+</p>
+<p>
+Unpacking a QByteArray is simpler - dcop_next always takes a QDataStream instance and
+a type name string. The code below assumes the same set of imports as above:
+</p>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR><TD><PRE CLASS="PROGRAMLISTING">
+
+# b is a QByteArray to be unpacked
+s = QDataStream (b, IO_ReadOnly)
+
+i1 = dcop_next (s, "long")
+d1 = dcop_next (s, "double")
+t1 = dcop_next (s, "QString")
+x1 = dcop_next (s, "QCString")
+l1 = dcop_next (s, "QValueList&lt;QCString&gt;")
+
+</PRE></TD></TR></TABLE>
+<p>
+Of course the type specified in dcop_next to unpack the object must match the type of
+the object originally packed, and must happen in the same order (you can't use this to cast or convert types). i1, d1, etc
+should contain the same values as i, d, etc above.
+</p>
+<p>
+The types that dcop_add/dcop_next can handle are the same types listed in the dcopext
+section above.
+</p>
+<h2>Thanks</h2>
+<p>
+The code for dcopext and dcopexport is based on pydcop.py and pcop.cpp written by Torben Weis
+and Julian Rockey. It's available in the dcoppython/ section of the kde-bindings source code,
+and can be used to implement DCOP communication without using PyQt or PyKDE.
+</p>
+
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="examples.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="limits.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Templates and Example Programs</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">General Limitations</TD>
+</TR>
+</TABLE>
+</DIV>
+
+</body>
+</html>
diff --git a/python/pykde/doc/examples.html b/python/pykde/doc/examples.html
new file mode 100644
index 00000000..33d3b3cf
--- /dev/null
+++ b/python/pykde/doc/examples.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>Examples</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Quanta Plus">
+</head>
+<body>
+<DIV
+CLASS="NAVHEADER"
+><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="switches.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="dcopext.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+<h1>Templates and Example programs</h1>
+<h2>Templates</h2>
+<p>
+PyKDE includes a number of examples or "templates" that you can use as frameworks for
+building your own apps or experimenting with PyKDE. The templates are executable
+programs which usually construct an application with a main window, and in some cases
+with menus, toolbar and status bar, but have no other functionality. You can use these
+to get a quick start on creating a program, for exploring PyKDE, or for testing various
+ideas using PyKDE.
+</p>
+<p>
+There are a number of template examples in the templates/ subdirectory. The same
+files a duplicated in templates/annotated/ and templates/basic/. The files in
+annotated/ have extensive comments, the files in basic/ have the comments stripped
+to make the templates easier to use in constructing your own programs.
+</p>
+<p>
+The current set of templates provide basic applications using different UI construction
+strategies, an panel applet template, and a systray program template.
+</p>
+
+<h2>Examples</h2>
+<p>
+Example programs are located in the examples/ directory (contributions are always welcome).
+All examples are run as "python &lt;example name&gt;.py", eg "python uisampler.py".
+</p>
+<h2>uisampler.py</h2>
+<p>
+uisampler.py demonstrates a number of widgets and UI features of PyKDE.
+</p>
+<img src="images/uisampler.png" border=0>
+<p>
+For widgets, the panel on the right displays sample widgets. The widgets or other items for
+display are selected from the tree view on the left. A number of the examples are UI related
+items like KAction, KXMLGUI releated things, etc.These use either menudemo.py or xmlmenudemo.py
+to display examples of usage.
+</p>
+<h3>menudemo.py</h3>
+<p>
+menudemo.py is a simple menu based example "application" that does nothing, but displays
+a UI (toolbar, status bar, menus) constructed using KAction and related classes. It runs
+as part of uisampler.py or will run stand-alone.
+</p>
+<h3>xmlmenudemo.py</h3>
+<p>
+xmlmenudemo.py is a simple menu based example "application" that does nothing, but displays
+a UI (toolbar, status bar, menus) constructed using an XML 'desktop' file. It runs
+as part of uisampler.py or will run stand-alone.
+</p>
+
+<h2>kurldemo.py</h2>
+<p>
+kurldemo.py displays the results of a number of KURL and KURL.List operations in a window.
+It's probably more instructive to look at the code for this example then to actually run
+it, but it is working code.
+</p>
+
+<h2>mimetype.py</h2>
+<p>
+mimetype.py displays several tabs of KMimeType/KService/KTrader related data
+</p>
+<img src="images/mimetype.png" border=0>
+<p>
+The output will vary with KDE version running or from machine to machine.
+</p>
+
+
+<h2>pyKHTMLPart.py</h2>
+<p>
+pyKHTMLPart.py demonstrates importing KHTMLPart as a KPart.
+</p>
+<img src="images/khtmlpart.png" border=0>
+<p>
+The program is hard-coded to display the KDE website's main page, and requires
+an active internet connection to do the display (it will be blank if no internet
+connection is active).
+</p>
+<p>
+The program is not designed as a complete browser example, and none of the links
+are "clickable" (it wouldn't be hard to extend it to do this however - see the
+KHTMLPart docs).
+</p>
+
+<h2>systray.py</h2>
+<p>
+systray.py is a simple example of a system tray based application.
+</p>
+
+
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="switches.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="dcopext.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">configure.py Options</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">DCOP and Extensions</TD>
+</TR>
+</TABLE>
+</DIV>
+
+</body>
+</html>
diff --git a/python/pykde/doc/images/kdcop1.png b/python/pykde/doc/images/kdcop1.png
new file mode 100644
index 00000000..b0e6e5e5
--- /dev/null
+++ b/python/pykde/doc/images/kdcop1.png
Binary files differ
diff --git a/python/pykde/doc/images/kdcop2.png b/python/pykde/doc/images/kdcop2.png
new file mode 100644
index 00000000..2920f385
--- /dev/null
+++ b/python/pykde/doc/images/kdcop2.png
Binary files differ
diff --git a/python/pykde/doc/images/khtmlpart.png b/python/pykde/doc/images/khtmlpart.png
new file mode 100644
index 00000000..a1bb08bc
--- /dev/null
+++ b/python/pykde/doc/images/khtmlpart.png
Binary files differ
diff --git a/python/pykde/doc/images/mimetype.png b/python/pykde/doc/images/mimetype.png
new file mode 100644
index 00000000..b0b88d39
--- /dev/null
+++ b/python/pykde/doc/images/mimetype.png
Binary files differ
diff --git a/python/pykde/doc/images/uisampler.png b/python/pykde/doc/images/uisampler.png
new file mode 100644
index 00000000..5eec69c6
--- /dev/null
+++ b/python/pykde/doc/images/uisampler.png
Binary files differ
diff --git a/python/pykde/doc/index.html b/python/pykde/doc/index.html
new file mode 100644
index 00000000..113aaee4
--- /dev/null
+++ b/python/pykde/doc/index.html
@@ -0,0 +1,139 @@
+<HTML
+><HEAD
+><TITLE
+>Python Bindings for KDE (PyKDE-3.15)</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="NEXT"
+TITLE="General Limitations"
+HREF="limits.html"></HEAD
+><BODY
+CLASS="ARTICLE"
+><DIV
+CLASS="ARTICLE"
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="TITLE"
+><A
+NAME="AEN2"
+>Python Bindings for KDE (PyKDE-3.16.0)</A
+></H1
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN4"
+>Jim Bublitz</A
+></H3
+><DIV
+><DIV
+CLASS="ABSTRACT"
+><A
+NAME="AEN7"
+></A
+><P
+></P
+><P>
+This document describes a set of Python bindings for the KDE core libraries..
+Contact the author at the PyKDE mailing list at
+<A HREF="mailto:PyKDE@mats.imk.fraunhofer.de"> PyKDE@mats.imk.fraunhofer.de </A>
+or subscribe to the list or view the archives at the
+<a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde"> PyKDE Mailing List</a>
+web site.
+</P
+><P
+></P
+></DIV
+></DIV
+><HR></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN10"
+>Table of Contents</A
+></H1
+><table>
+ <tr>
+ <td><a href="index1.html">Introduction</a></td>
+ </tr>
+ <tr>
+ <td><a href="install.html">Installation</a></td>
+ </tr>
+ <tr>
+ <td><a href="trouble.html">Troubleshooting</a></td>
+ </tr>
+ <tr>
+ <td><a href="switches.html">configure.py Options</a></td>
+ </tr>
+ <tr>
+ <td><a href="examples.html">Templates and Example Programs</a></td>
+ </tr>
+ <tr>
+ <td><a href="dcopext.html">DCOP and Extensions</a></td>
+ </tr>
+ <td><a href="limits.html">General Limitations</a></td>
+ </tr>
+ <tr>
+ <td><a href="signal.html">Signal and Slot Support</a></td>
+ </tr>
+ <tr>
+ <td><a href="static.html">Types and Related Topics</a></td>
+ </tr>
+ <tr>
+ <td><a href="classref/index.html">Class Reference Docs</a></td>
+ </tr>
+</table
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="limits.html"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>General Limitations</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
diff --git a/python/pykde/doc/index1.html b/python/pykde/doc/index1.html
new file mode 100644
index 00000000..f960ac58
--- /dev/null
+++ b/python/pykde/doc/index1.html
@@ -0,0 +1,82 @@
+<HTML>
+<HEAD>
+<TITLE>Python Bindings for KDE (PyKDE-3.16.0)</TITLE>
+</HEAD>
+<BODY>
+<DIV CLASS="NAVHEADER">
+<TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="index.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="install.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+<H1 CLASS="TITLE"><A NAME="AEN2"></A>Python Bindings for KDE (PyKDE-3.16.0)</H1>
+<H3 CLASS="AUTHOR"><A NAME="AEN4">Jim Bublitz</A></H3>
+<h1>Introduction</h1>
+<P>
+PyKDE is a set of Python bindings for the KDE toolkit. PyKDE makes nearly 700 KDE classes
+and over 10,000 associated methods available to Python programmers.
+</P>
+<P>
+The Python bindings for the Qt toolkit (PyQt) must also be installed. The sip library
+must also be installed. This version of PyKDE will support sip 4.2.x. or later. Earlier
+sip 4 versions may work, but are untested.
+</P>
+<P>
+The current bindings support KDE versions 3.0.0 through 3.5.3,
+and Python 2.2, 2.3 or 2.4. This fileset will work for any supported KDE version.
+This version will not work with Qt1/KDE1 or Qt2/KDE2.
+</P>
+<P>
+The bindings are implemented as a number of Python modules corresponding to
+the names of the separate KDE libraries, i.e.
+<TT CLASS="LITERAL">dcop</TT>,
+<TT CLASS="LITERAL">kdecore</TT>,
+<TT CLASS="LITERAL">kdefx</TT>,
+<TT CLASS="LITERAL">kdeui</TT>,
+<TT CLASS="LITERAL">kio</TT>,
+<TT CLASS="LITERAL">kresources</TT>,
+<TT CLASS="LITERAL">kabc</TT>,
+<TT CLASS="LITERAL">kfile</TT>,
+<TT CLASS="LITERAL">kparts</TT>,
+<TT CLASS="LITERAL">khtml</TT>,
+<TT CLASS="LITERAL">kspell</TT>,
+<TT CLASS="LITERAL">kdeprint</TT>,
+<TT CLASS="LITERAL">kmdi</TT>.
+</P>
+<H2>Changes</H2>
+<P>
+<p>
+Troy Melhase's "pykde_sampler" example application has been added to the examples/ directory. If
+you're interested in making a contribution to PyKDE, expanding pykde_sample to support additional
+widgets and PyKDE features would be a good place to start.
+</p>
+<p>
+This release also replaces the original dcopext.py module with an improved version authored by
+Matthias Panzenbock. The original version is available in extensions/dcopext.py.old, but is not
+installed.
+</p>
+<p>
+konsolepart support has been restored, but only for KDE >= 3.5.0. configure.py now detects lib64
+automatically. Also included are Matthias Panzenbock's DCOP extensions patch and Michael Franz
+Aigner's KConfigSkeleton patch, both of which have been in previous snapshots.
+
+</P>
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="index.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="install.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Table of Contents</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">Installation</TD>
+</TR>
+</TABLE>
+</DIV>
+</BODY>
+</HTML>
diff --git a/python/pykde/doc/install.html b/python/pykde/doc/install.html
new file mode 100644
index 00000000..d75bbbe7
--- /dev/null
+++ b/python/pykde/doc/install.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>Installation</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Quanta Plus">
+</head>
+<body>
+<DIV
+CLASS="NAVHEADER"
+><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="index1.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="trouble.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+<h1>Installation</h1>
+These docs only cover installing PyKDE from source (ie building and compiling PyKDE). You
+should read the "Testing" section at the end of this page even if installing from RPMs. RPM
+installs also have the same System Requirements as noted in the next section.
+<p>
+Before reporting bugs, please read the <a href="trouble.html">Troubleshooting</a> and
+<a href="switches.html">build.py Options</a> pages.
+</p>
+<h2>System Requirements</h2>
+<p>PyKDE only runs on Linux or other Unix-based systems. The usual tools (compiler,
+linker, make, etc) are required. In addition you need:
+</p>
+<dl>
+<dt>sip</dt>
+<dd>
+sip must be installed. sip is the bindings code generator and run-time lib for PyKDE. You can get it
+<a href="http://www.riverbankcomputing.co.uk/sip/download.php">here</a>
+</dd>
+<dt>PyQt</dt>
+<dd>
+PyQt must be installed Just as KDE depends on Qt, PyKDE depends on PyQt. If you don't already have
+PyQt installed, you can get it <a href="http://www.riverbankcomputing.co.uk/pyqt/download.php">here</a></dd>
+</dl>
+<p>
+<b>NOTE: sip, PyQt, and PyKDE must be compatible versions (the PyKDE build script will test
+for this). That means if you are installing PyKDE-3.16.0, you must have installed:</b>
+</p>
+<ul>
+<li><b>sip-x11-gpl-4.2.0 or later (earlier sip 4 versions may work, but are untested)</b></li>
+<li><b>PyQt-x11-gpl-@PyQt Version@ or later</b></li>
+</ul>
+<p>
+Of course you must also have Python (version 2.2 or later), KDE (any KDE 3.0 - 3.5.3 version)
+and Qt (any version from 3.0 through 3.3.x) installed. PyKDE no longer supports KDE1 or KDE2.
+These files only work with KDE and Qt 3.x.x - they don't work with Qt4 or the upcoming KDE 4.
+</p>
+<h4>If PyQt was installed from an RPM ---</h4>
+<p>
+If you have installed sip and PyQt from binaries, to build PyKDE you <b>must</b> have
+the sipconfig.py and pyqtconfig.py files (suitable for your environment) installed. These
+are in the same location as the PyQt files (usually python/site-packages). These config
+files are generated automatically if you build/compile sip and PyQt from source.
+</p>
+<p>
+PyKDE also requires the PyQt sip files to build and compile. If you installed PyQt from an
+RPM, you also need to have installed the corresponding "PyQt-devel" RPM, which contains the
+PyQt sip files.
+</p>
+<h2>Installing from source code</h2>
+<p>
+Unpack the PyKDE tarball to a directory you have write access to. /usr/local is a good choice
+if you have write access or can obtain it. Some place in your home directory is also a good
+choice. I'll assume /usr/local for these instructions.
+</p>
+<p>
+Change to the PyKDE directory (eg "cd /usr/local/PyKDE-3.16.0" or whatever the complete
+version of the downloaded PyKDE package was).
+</p>
+<p>
+At a command line prompt (as a user, not as root), enter:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ python configure.py
+</pre>
+</td>
+</tr>
+</table>
+<p>
+<i>configure.py</i> will check your system to locate Python and releated files, Qt, KDE, sip and PyQt. It
+will also run several tests, and then begin generating the C++ code and make files for PyKDE. The entire
+process should take about 2 to 10 minutes depending on your computer's speed and available memory.
+<i>configure.py</i> will report its progress throughout its run. If errors occur, see the sections on
+troubleshooting below.
+</p>
+<p>
+After <i>configure.py</i> has run to completion successfully, you next need to compile PyKDE. Simply
+type:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ make
+</pre>
+</td>
+</tr>
+</table>
+<p>
+PyKDE takes anywhere from 15 minutes to over an hour to compile, depending on the speed of your
+computer, available memory, and other tasks running. Once PyKDE has compiled, do:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ su -c"make install"
+</pre>
+</td>
+</tr>
+</table>
+<p>
+Your system will ask for your root password, and if entered correctly will proceed to install
+PyKDE.
+</p>
+<h2>File concatention</h2>
+<p>
+If your computer has 256MB or more of memory, you will probably benefit from "file concatenation".
+When generating C++ files, sip can generate either a single file for each class in a module, or a
+single huge file that contains all classes in the module. The latter is the "concatenated" version.
+</p>
+<p>
+As long as swapping doesn't occur and memory isn't exhausted, the concatenated files will compile
+up to 80% faster than individual files. However, some hardware and some gcc versions are not
+compatible with the large concatenated files. You can control whether sip concatenates files
+by passing either the -i switch (concatenation off) or -c switch (concatenation on) to configure.py.
+</p>
+<p>
+configure.py is currently programmed to detect the gcc version being used, and will turn on
+concatenation for gcc earlier than 4.0 and turn off concatentation for gcc 4.0 or later. You
+can override this automatic choice with -i or -c as needed.
+</p>
+<h2>Testing the installation</h2>
+<p>
+There are a number of things you can do to test your installation. The simplest test that also
+covers the most common errors is (still in the top level PyKDE directory):
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ python importTest.py
+</pre>
+</td>
+</tr>
+</table>
+<p>
+If you get errors running this test, see the troubleshooting section below.
+</p>
+<p>
+There are also sample programs you can run (which also test some of PyKDE's features) in the
+examples/ and templates/ subdirectories.
+</p>
+
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="index1.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="trouble.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Introduction</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">Troubleshooting</TD>
+</TR>
+</TABLE>
+</DIV>
+</body>
+</html>
diff --git a/python/pykde/doc/kde.css b/python/pykde/doc/kde.css
new file mode 100644
index 00000000..6206aac7
--- /dev/null
+++ b/python/pykde/doc/kde.css
@@ -0,0 +1,8 @@
+SPAN.ARTICLE, SPAN.EMPHASIS, SPAN.PROGRAMLISTING, SPAN.SECT1, SPAN.SECT2, SPAN.LITERAL, SPAN.EMAIL, SPAN.PARA, SPAN.ABSTRACT, SPAN.SURNAME, SPAN.FIRSTNAME, SPAN.TITLE {
+ font-family: Times New Roman,serif;
+ font-weight: 500;
+ font-style: normal;
+ font-size: 10pt;
+ color: #000000;
+}
+DIV { margin-top: 0pt; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt }
diff --git a/python/pykde/doc/libpythonize.html b/python/pykde/doc/libpythonize.html
new file mode 100644
index 00000000..58a3d124
--- /dev/null
+++ b/python/pykde/doc/libpythonize.html
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Pythonize class and libpythonize</title>
+</head>
+<body>
+<div class="NAVHEADER">
+<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
+<TR>
+<TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH>
+</TR>
+<tr>
+<td width="33%" align="left" valign="bottom">
+<a href="panapp5.html" accesskey="P" >Prev</a>
+</td>
+<td width="34%" align="center" valign="bottom"></td>
+<td width="33%" align="right" valign="bottom"></td>
+</tr>
+</table>
+</div>
+<hr align="LEFT" width="100%">
+<div align="center"><h1>Pythonize Class and libpythonize</h1></div>
+<p>
+libPythonize and the Pythonize class simplify embedding, loading and communicating with the Python
+interpreter. Pythonize is a class with methods for handling the interpreter and is included in libpythonize.
+Also in libpythonize is a C wrapper for the C++ Pythonize class. There is also a standalone C library
+libpythonizec, written completely in C. All 3 versions (C++, C and C wrapper) use the same methods/functions
+and the same args - the only major difference is in initialization and finalization.
+</p>
+<p>
+The method descriptions here apply to both C and C++ versions unless noted.
+</p>
+<p>
+Although libpythonize is used with (and installed with) PyKDE, it has no dependencies itself on
+PyKDE/KDE, PyQt/Qt or sip. It does require qmake from TrollTech (part of Qt) to build.
+</p>
+
+<h2>Initialization and Finalization</h2>
+In C++, the interpreter is loaded and initialized using the Pythonize () constructor, which takes
+no arguments. In C, the initialize() function call accomplishes the same thing.
+
+The interpreter is finalized in C++ using the destructor ~Pythonize (). In C, the finalize() function
+accomplishes the same thing.
+
+<h2>Threading and Locking</h2>
+<p>
+Pythonize obtains the Python global interpreter lock when it initializes Python. It is currently the
+programmer's responsibility to release the lock when C++ accesses to the interpreter are complete. If
+the lock is not released, access will be denied to Python code relying on the interpreter (for example
+bindings like PyQt or PyKDE).
+</p>
+<p>
+If a second instance of Pythonize is created (within the same parent process), that instance will acquire
+the lock automatically. In order to allow a second (and third or more) instance of Pythonize to be
+created and obtain the lock, it's necessary to have a related thread state (PyThreadState). This thread
+state is created by a call to PyThreadState_Get when the first instance of Pythonize is created. The
+thread state is stored in a global variable (declared in the cpp file) that is used by all subsequent
+instances of Pythonize. This means that applications using libpythonize are mormally single-threaded,
+at least in relation to the libpythonize interpreter instance. This is important for utilization with
+sip-based bindings like PyKDE and PyQt.
+</p>
+<p>
+The global thread state is accessible via the getThreadState/setThreadState methods.
+</p>
+<h2>Methods/Functions</h2>
+<p>
+Methods are either called directly in C or as class members in C++. In C, int variables/values are
+used instead of bool.
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+C++:
+ Pythonize *pyize = Pythonize ();
+ ...
+ bool result = pyize->appendToSysPath ("/usr/local/foo");
+
+C:
+ initialize ();
+ ...
+ int result = appendToSysPath ("/usr/local/foo");
+</pre>
+</td>
+</tr>
+</table>
+<hr>
+<h3>Pythonize () [C++] or initialize () [C]</h3>
+<p>
+Constructor/initializer - loads and initializaes the interpreter and acquires the global interpreter lock.
+Sets the value of pythonInit to <b>true</b> on success or <b>false</b> if construction/initialization fails
+Initializes the global thread state (first instance) or restores the global thread state (second and later
+instances). It is the programmer's resposibility to release the global interpreter lock to enable other
+code to access the interpreter. The lock and thread state are automatically acquired when any Pythonize
+instance is created..
+</p>
+<hr>
+<h3>bool getPythonInit ()</h3>
+<p>
+Returns the result of initializing/constructing the interpreter object. If the
+return value is <strong>true</strong>, the interpreter should be usable.
+If it returns <strong>false</strong>, an error occurred and the interpreter
+will not be useful. Most methods/functions check the value of pythonInit
+and won't run if it's <strong>false</strong>
+</p>
+<hr>
+<h3>~Pythonize () [C++] or finalize () [C]</h3>
+<p>
+Destructor/finalizer - shuts down the interpreter and destroys the class Sets pythonInit to <b>false</b>.
+</p>
+<hr>
+<h3>bool appendToSysPath (const char* newPath);</h3>
+<p>
+Appends newPath to sys.path
+</p>
+<hr>
+<h3>PyObject *importModule (char *moduleName);</h3>
+<p>
+Imports a module into the interpreter. Same as "import <moduleName>" in Python. moduleName
+must exist somewhere on sys.path. Returns a reference to the module imported. Returns <b>NULL</b> on failure.
+</p>
+<hr>
+<h3>PyObject *getNewObjectRef (PyObject *module, char *object)</h3>
+<p>
+Returns a reference to an object in an already loaded module (use importModule to load
+the module or get a reference to it) Returns <b>NULL</b> on failure.
+</p>
+<hr>
+<h3>PyObject *getSysModule ()</h3>
+<p>
+Returns a reference to the Python sys module. Returns <b>NULL</b> on failure.
+</p>
+<hr>
+<h3>PyObject *getMainModule ()</h3>
+<p>
+Returns a reference to the Python main module. Returns <b>NULL</b> on failure.
+</p>
+<hr>
+<h3>[internal] void *setMainModule ()</h3>
+<p>
+Sets internal value of main module
+</p>
+<hr>
+<h3>void decref (PyObject *object)</h3>
+<p>
+Uses Py_XDECREF to decrement the reference count of an object
+</p>
+<hr>
+<h3>bool runScript (char *scriptPath);</h3>
+<p>
+Runs an arbitrary script in the interpreter and returns Python's result.
+</p>
+<hr>
+<h3>bool runString (char *str);</h3>
+<p>
+Runs an arbitrary string in the interpreter (indentation required for mulit-line
+strings) and returns Python's result.
+</p>
+<hr>
+<h3>PyObject *runFunction (PyObject *object, PyObject *args);</h3>
+<p>
+If <em>object</em> is callable, runs <em>object</em> with <em>args</em> and
+returns the results of the function call as a PyObject. Returns <b>NULL</b> on failure.
+</p>
+<hr>
+<h3>void releaseLock ()</h3>
+<p>
+Releases the global interpreter lock using PyEval_SaveThread. Saves the global thread state.
+</p>
+<hr>
+<h3>void acquireLock ()</h3>
+<p>
+Acquires the global interpreter lock using PyEval_RestoreThread. Restores the global thread state.
+</p>
+<hr>
+<h3>PyThreadState *getThreadState ()</h3>
+<p>
+Retrieves the current value of the global thread state. Does not affect the global interpreter lock.
+</p>
+<hr>
+<h3>PyThreadState *setThreadState (PyThreadState *tstate)</h3>
+<p>
+Sets the global thread state to <i>tstate</i> and returns the previous global thread state. Does
+not affect the global interpreter lock.
+</p>
+<hr>
+<h2>Using libpythonize in an application</h2>
+<p>
+Include the pythonize.h header file (requires Python.h) and link to libpythonize.so - that's pretty much it. There are unit tests
+in both C and C++ in the pythonize/tests/ subdirectory. An example of libpythonize usage is in pykpanelapplet.cpp in the
+PyKDE distribution (pykpanelapplet/ directory).
+</p>
+<h2>Obtaining and building libpythonize</h2>
+<p>
+At present only the C++/C wrapper versions are available, and they're distributed with PyKDE.
+</p>
+<p>
+The build process for libpythonize uses TrollTech's qmake (available as part of Qt), but is simple enough
+to be included in most make files. See the pythonize.pro file for more information - most of the additional
+libs required are required by libpython, and may vary by platform.
+</p>
+<p>
+You can contact me at this address: <a href="mailto:jbublitz@nwinternet.com">Jim Bublitz &lt;jbublitz@nwinternet.com&gt;</a>
+</p>
+<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr>
+<td width="33%" align="left" valign="top">
+<a href="panapp5.html" accesskey="P" >Prev</a>
+</td>
+<td width="34%" align="center" valign="top">
+<a href="index.html" accesskey="H">Home</a>
+</td>
+<td width="33%" align="right" valign="top"></td>
+</tr>
+<tr>
+<td width="33%" align="left" valign="top">Applet Installer</td>
+<td width="34%" align="center" valign="top">&nbsp;</td>
+<td width="33%" align="right" valign="top"></td>
+</tr>
+</table>
+</div>
+</body>
+</html>
+
diff --git a/python/pykde/doc/limits.html b/python/pykde/doc/limits.html
new file mode 100644
index 00000000..3316c8c9
--- /dev/null
+++ b/python/pykde/doc/limits.html
@@ -0,0 +1,427 @@
+<HTML
+><HEAD
+><TITLE
+>General Limitations</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
+REL="HOME"
+TITLE="Python Bindings for KDE (PyKDE-3.16.0)"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Python Bindings for KDE (PyKDE-3.16.0)"
+HREF="index.html"><LINK
+REL="NEXT"
+TITLE="Signal and Slot Support"
+HREF="signal.html"></HEAD
+><BODY
+CLASS="SECT1"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>Python Bindings for KDE (PyKDE-3.3.16.0)</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="dcopext.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="signal.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN28"
+></A
+>General Limitations</H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN30"
+></A
+>Python Strings, Qt Strings and Unicode</H2
+><P
+>Unicode support was added to Qt in v2.0 and to Python in v1.6. In Qt, Unicode
+support is implemented using the <TT
+CLASS="LITERAL"
+>QString</TT
+> class. It is
+important to understand that <TT
+CLASS="LITERAL"
+>QString</TT
+>s, Python string objects
+and Python Unicode objects are all different but conversions between them are
+automatic in many cases and easy to achieve manually when needed.</P
+><P
+>Whenever PyKDE expects a <TT
+CLASS="LITERAL"
+>QString</TT
+> as a function argument, a
+Python string object or a Python Unicode object can be provided instead, and
+PyKDE will do the necessary conversion automatically.</P
+><P
+>You may also manually convert Python string and Unicode objects to
+<TT
+CLASS="LITERAL"
+>QString</TT
+>s by using the <TT
+CLASS="LITERAL"
+>QString</TT
+> constructor
+as demonstrated in the following code fragment.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>qs1 = QString('Converted Python string object')
+qs2 = QString(u'Converted Python Unicode object')</PRE
+></TD
+></TR
+></TABLE
+><P
+>In order to convert a <TT
+CLASS="LITERAL"
+>QString</TT
+> to a Python string object use
+the Python <TT
+CLASS="LITERAL"
+>str()</TT
+> function. Applying
+<TT
+CLASS="LITERAL"
+>str()</TT
+> to a null <TT
+CLASS="LITERAL"
+>QString</TT
+> and an empty
+<TT
+CLASS="LITERAL"
+>QString</TT
+> both result in an empty Python string object.</P
+><P
+>In order to convert a <TT
+CLASS="LITERAL"
+>QString</TT
+> to a Python Unicode object use
+the Python <TT
+CLASS="LITERAL"
+>unicode()</TT
+> function. Applying
+<TT
+CLASS="LITERAL"
+>unicode()</TT
+> to a null <TT
+CLASS="LITERAL"
+>QString</TT
+> and an empty
+<TT
+CLASS="LITERAL"
+>QString</TT
+> both result in an empty Python Unicode object.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN53"
+></A
+>Access to Protected Member Functions</H2
+><P
+>When an instance of a C++ class is not created from Python it is not possible
+to access the protected member functions, or emit the signals, of that
+instance. Attempts to do so will raise a Python exception. Also, any Python
+methods corresponding to the instance's virtual member functions will never be
+called.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN56"
+></A
+>Garbage Collection</H2
+><P
+>C++ does not garbage collect unreferenced class instances, whereas Python does.
+In the following C++ fragment both colours exist even though the first can no
+longer be referenced from within the program:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>c = QColor();
+c = QColor();</PRE
+></TD
+></TR
+></TABLE
+><P
+>In the corresponding Python fragment, the first colour is destroyed when
+the second is assigned to <TT
+CLASS="LITERAL"
+>c</TT
+>:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>c = QColor()
+c = QColor()</PRE
+></TD
+></TR
+></TABLE
+><P
+>In Python, each colour must be assigned to different names. Typically this
+is done within class definitions, so the code fragment would be something like:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>self.c1 = QColor()
+self.c2 = QColor()</PRE
+></TD
+></TR
+></TABLE
+><P
+>Sometimes a Qt class instance will maintain a pointer to another instance and
+will eventually call the destructor of that second instance. The most common
+example is that a <TT
+CLASS="LITERAL"
+>QObject</TT
+> (and any of its sub-classes) keeps
+pointers to its children and will automatically call their destructors. In
+these cases, the corresponding Python object will also keep a reference to the
+corresponding child objects.</P
+><P
+>So, in the following Python fragment, the first <TT
+CLASS="LITERAL"
+>QLabel</TT
+> is
+not destroyed when the second is assigned to <TT
+CLASS="LITERAL"
+>l</TT
+> because the
+parent <TT
+CLASS="LITERAL"
+>QWidget</TT
+> still has a reference to it.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>p = QWidget()
+l = QLabel('First label',p)
+l = QLabel('Second label',p)</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN72"
+></A
+>C++ Variables</H2
+><P
+>Access to C++ variables is supported. They are accessed as Python instance
+variables. For example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>tab = QTab()
+tab.label = "First Tab"
+tab.r = QRect(10,10,75,30)</PRE
+></TD
+></TR
+></TABLE
+><P
+>Global variables and static class variables are effectively read-only. They
+can be assigned to, but the underlying C++ variable will not be changed. This
+may change in the future.</P
+><P
+>Access to protected C++ class variables is not supported. This may change in
+the future.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN78"
+></A
+>Multiple Inheritance</H2
+><P
+>It is not possible to define a new Python class that sub-classes from more than
+one Qt class.</P
+></DIV
+></DIV>
+
+<H2 CLASS="SECT2">tr() methods</H2>
+<P>
+In a normal Qt installation, every descendant of QObject inherits two methods
+(tr (const char *) and tr (const char *, const char *) from QObject explicitly
+and also overloads these methods via the moc mechanism (by defining Q_OBJECT
+in the class declaration). KDE however is compiled with -DQT_NO_TRANSLATION,
+which prevents moc from creating the overloading tr() methods, and also produces
+side-effects with a normal Qt installation which was compiled without the
+-DQT_NO_TRANSLATION switch.
+</P>
+<P>
+PyKDE handles this situation by NOT providing tr() methods (either the inherited
+methods from QObject or the moc generated methods) for any KDE based QObject
+descendant. The tr() methods are static, so QObject::tr () methods are available
+via PyQt, as are tr() methods for any PyQt QObject descendant. PyKDE's handling
+of these methods has no effect on PyQt.
+</P>
+<P>Instead of the tr() methods, KDE uses corresponding i18n() methods for translating.
+These methods are available in the kdecore module of PyKDE. For compatibility with
+KDE, you should use the i18n methods.
+</P>
+<H2>Socket classes</H2>
+<P>
+The following classes (introduced in KDE2.2.0) are NOT yet implemented:
+</P>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR>
+<TD>
+<PRE CLASS="PROGRAMLISTING">
+KAddressInfo
+KExtendedSocket
+KInetSocketAddress
+KSocketAddress
+KUnixSocketAddress
+KSocks
+</PRE>
+</TD>
+</TR>
+</TABLE>
+<P>
+Most of their functionality already exists in the Python socket class or in the
+KSocket class (kdecore module). These classes may be implemented at a future date
+(they require support for C socket structures and careful handling to avoid buffer
+overflow problems/exploits)
+</P>
+
+<DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="dcopext.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="signal.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>DCOP and Extensions</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Signal and Slot Support</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
diff --git a/python/pykde/doc/signal.html b/python/pykde/doc/signal.html
new file mode 100644
index 00000000..ab5b3f9d
--- /dev/null
+++ b/python/pykde/doc/signal.html
@@ -0,0 +1,290 @@
+<HTML
+><HEAD
+><TITLE
+>Signal and Slot Support</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
+REL="HOME"
+TITLE="Python Bindings for KDE (PyKDE-3.16.0)"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="General Limitations"
+HREF="limits.html"><LINK
+REL="NEXT"
+TITLE="Static Member Functions"
+HREF="static.html"></HEAD
+><BODY
+CLASS="SECT1"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>Python Bindings for KDE (PyKDE-3.16.0)</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="limits.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="static.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN81"
+></A
+>Signal and Slot Support</H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN83"
+></A
+>General Signals and Slots</H2
+><P
+>A signal may be either a Qt signal (specified using
+<TT
+CLASS="LITERAL"
+>SIGNAL()</TT
+>) or a Python signal (specified using
+<TT
+CLASS="LITERAL"
+>PYSIGNAL()</TT
+>).</P
+><P
+>A slot can be either a Python callable object, a Qt signal (specified using
+<TT
+CLASS="LITERAL"
+>SIGNAL()</TT
+>), a Python signal (specified using
+<TT
+CLASS="LITERAL"
+>PYSIGNAL()</TT
+>), or a Qt slot (specified using
+<TT
+CLASS="LITERAL"
+>SLOT()</TT
+>).</P
+><P
+>You connect signals to slots (and other signals) as you would from C++. For
+example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>QObject.connect(a,SIGNAL("QtSig()"),pyFunction)
+QObject.connect(a,SIGNAL("QtSig()"),pyClass.pyMethod)
+QObject.connect(a,SIGNAL("QtSig()"),PYSIGNAL("PySig"))
+QObject.connect(a,SIGNAL("QtSig()"),SLOT("QtSlot()"))
+QObject.connect(a,PYSIGNAL("PySig"),pyFunction)
+QObject.connect(a,PYSIGNAL("PySig"),pyClass.pyMethod)
+QObject.connect(a,PYSIGNAL("PySig"),SIGNAL("QtSig()"))
+QObject.connect(a,PYSIGNAL("PySig"),SLOT("QtSlot()"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>When a slot is a Python method that corresponds to a Qt slot then a signal can
+be connected to either the Python method or the Qt slot. The following
+connections achieve the same effect.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>sbar = QScrollBar()
+lcd = QLCDNumber()
+
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd.display)
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>The difference is that the second connection is made at the C++ level and is
+more efficient.</P
+><P
+>Disconnecting signals works in exactly the same way.</P
+><P
+>Any instance of a class that is derived from the <TT
+CLASS="LITERAL"
+>QObject</TT
+>
+class can emit a signal using the <TT
+CLASS="LITERAL"
+>emit</TT
+> method. This takes
+two arguments. The first is the Python or Qt signal, the second is a Python
+tuple which are the arguments to the signal. For example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>a.emit(SIGNAL("clicked()"),())
+a.emit(PYSIGNAL("pySig"),("Hello","World"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>Qt allows a signal to be connected to a slot that requires fewer arguments than
+the signal passes. The extra arguments are quietly discarded. Python slots
+can be used in the same way.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN103"
+></A
+>Slots in Menus, Toolbars and Actions</H2
+><P
+>The C++ declarations for menu items or KActions are similar to these examples:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int QMenuData::insertItem (const QString &#38; text,
+ const QObject * receiver, const char * member,
+ int accel = 0, int id = -1, int index = -1 )
+
+KAction ( const QString&#38; text, int accel,
+ const QObject* receiver, const char* slot,
+ QObject* parent, const char* name = 0 )</PRE
+></TD
+></TR
+></TABLE
+><P
+>Notice the "const QObject* receiver, const char* slot" parameters for each declaration.</P
+><P
+>In PyKDE, these two parameters are replaced with a SINGLE parameter that specifies the
+slot to be connected to the menu item, toolbar button or KAction:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>p = insertItem ("Open", self.slotOpen, 0, -1, -1)
+
+action = KAction ("Open", 0, self.slotOpen, None, 0)</PRE
+></TD
+></TR
+></TABLE
+><P
+>This substitution applies to appropriate methods in KStdAction, KAction and related
+subclasses, KAccelMenu and KToolBar</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="limits.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="static.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>General Limitations</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Static Member Functions</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/python/pykde/doc/static.html b/python/pykde/doc/static.html
new file mode 100644
index 00000000..e68f13bd
--- /dev/null
+++ b/python/pykde/doc/static.html
@@ -0,0 +1,183 @@
+<HTML>
+<HEAD>
+<TITLE>Types and Related Topics</TITLE>
+</HEAD>
+<BODY CLASS="SECT1">
+<DIV CLASS="NAVHEADER">
+<TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR>
+<TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH>
+</TR>
+<TR>
+<TD WIDTH="10%" ALIGN="left" VALIGN="bottom">
+<A HREF="signal.html" ACCESSKEY="P">Prev</A>
+</TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom">
+<A HREF="classref/index.html" ACCESSKEY="N">Next</A>
+</TD>
+</TR>
+</TABLE>
+<HR ALIGN="LEFT" WIDTH="100%">
+</DIV>
+<H1>Types and Related Topics</H1>
+<H2>Static Member Functions</H2>
+<P>
+Static member functions are implemented as Python class functions.
+For example the C++ static member function
+<TT CLASS="LITERAL" >QObject::connect()</TT>
+is called from Python as
+<TT CLASS="LITERAL">QObject.connect()</TT> or
+<TT CLASS="LITERAL">self.connect()</TT>
+if called from a sub-class of
+<TT CLASS="LITERAL">QObject</TT>.
+</P>
+<h2>None and NULL</h2>
+<P>Throughout the bindings, the
+<TT CLASS="LITERAL">None</TT>
+value can be specified wherever
+<TT CLASS="LITERAL">NULL</TT>
+is acceptable to the underlying C++ code.</P>
+<P >Equally,
+<TT CLASS="LITERAL">NULL</TT>
+is converted to
+<TT CLASS="LITERAL">None</TT>
+whenever it is returned by the underlying C++ code
+</P>
+
+<h2>Enumerated Types</H2>
+<P>
+Enumerated types are implemented as a set of simple variables corresponding to
+the separate enumerated values.
+</P>
+<P>
+When using an enumerated value the name of the class (or a sub-class) in which
+the enumerated type was defined in must be included. For example:
+</P>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" >
+<TR>
+<TD>
+<PRE CLASS="PROGRAMLISTING">
+Qt.SolidPattern
+QWidget.TabFocus
+QFrame.TabFocus
+</PRE>
+</TD>
+</TR>
+</TABLE>
+
+<H2>Namespaces</H2>
+<P>
+The C++ code in KDE makes extensive use of namespaces (especially in the kio, kjs,
+khtml, kfile, and kparts modules). In PyKDE, namespaces are treated as a "superclass".
+For example, "from kparts import KParts" will import the KParts namespace and all
+its members. To reference a class in the namespace, use &lt;namespace name&gt;..&lt;classname&gt;,
+for example, KParts.ReadOnlyPart. It isn't necessary to import the &lt;classname&gt; (ReadOnlyPart
+in the example).
+</P>
+<h2>Return and Argument Types</h2>
+<p>
+Some return types or argument types may be different than those in the C++ KDE libs. This is
+done for convenience (eg returning/taking Python lists or dicts), because arguments are
+scalar (non-object) types passed by reference (eg int*, bool&), or because there is no
+way to express the C++ type in Python (eg template types)
+</p>
+<p>
+Please check the <a href="docs.html">Class Reference Docs</a> which list all classes
+and methods in Python format.
+</p>
+<h2>Version Information</h2><h4><i>New in PyKDE-3.11</i></h4>
+<p>
+PyKDE provides methods for determining both the KDE version being run and the PyKDE
+version being run. The version methods are:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<th align = "left" width = "20%"><u>return type</u></th>
+<th align = "left" width = "20%"><u>KDE</u></th>
+<th align = "center" width = "10%"><u>Example</u></th>
+<th></th>
+<th align = "left" width = "20%"><u>PyKDE</u></th>
+<th align = "center" width = "20%"><u>Example</u></th>
+</tr>
+<tr>
+<td>int</td>
+<td>KDE.versionMajor ()</td>
+<td align = "center">3</td>
+<td></td>
+<td>PyKDE.versionMajor ()</td>
+<td align = "center">3</td>
+</tr>
+<tr>
+<td>int</td>
+<td>KDE.versionMinor ()</td>
+<td align = "center">1</td>
+<td></td>
+<td>PyKDE.versionMinor ()</td>
+<td align = "center">8</td>
+</tr>
+<tr>
+<td>int</td>
+<td>KDE.versionRelease ()</td>
+<td align = "center">4</td>
+<td></td>
+<td>PyKDE.versionRelease ()</td>
+<td align = "center">0</td>
+</tr>
+<tr>
+<td>string</td>
+<td>KDE.versionString ()</td>
+<td align = "center">"3.1.4"</td>
+<td></td>
+<td>PyKDE.versionString ()</td>
+<td align = "center">"3.11.0"</td>
+</tr>
+</table>
+
+<h2>Abstract Classes and Pure Virtual Methods</h2>
+<P>
+C++ allows the use of abstract classes. Abstract classes cannot be used in programs
+(instantiated) directly; their only purpose is to serve as a base class from which
+programmers can derive other classes that can be used.
+</P>
+<P>
+An abstract class in C++ is defined as a class that has one or more 'pure virtual'
+methods. These can be identified in the C++ header files or C++ docs as methods set
+equal to 0, for example:
+</P>
+<TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%">
+<TR>
+<TD>
+<PRE CLASS="PROGRAMLISTING">
+virtual int somePureVirtualMethod (int a) = 0;
+</PRE>
+</TD>
+</TR>
+</TABLE>
+<P>
+To derive a useful class from the abstract class, the programmer has to write methods
+to overload each of the pure virtual methods. Following a suggestion on the mailing
+list, the docs attempt to flag all abstract classes and identify the pure virtual
+methods which must be overloaded in the derived class. Derived classes can be created
+in Python by writing Python methods to overload the pure virtual methods - no C++ code
+is required.
+</P>
+
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="signal.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="classref/index.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Signals and Slots</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">Class Reference</TD>
+</TR>
+</TABLE>
+</DIV>
+
+</BODY>
+</HTML>
diff --git a/python/pykde/doc/switches.html b/python/pykde/doc/switches.html
new file mode 100644
index 00000000..c589c7d9
--- /dev/null
+++ b/python/pykde/doc/switches.html
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>Switches</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Quanta Plus">
+</head>
+<body>
+<DIV
+CLASS="NAVHEADER"
+><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="trouble.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="examples.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+<h1>configure.py Options</h1>
+<p>
+PyKDE builds and installs in a lot of different environments and it isn't always possible to
+foresee where users or distributions will locate components that PyKDE depends on. There are
+a number of command line switches used to force configure.py to look in the correct locations for
+directories or files.
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+python configure.py -h
+
+Usage:
+ python configure.py [-h] [-c] [-d dir] [-g] [-j #] [-k] [-n dir] [-o dir] [-r] [-u] [-v dir] [-z file]
+where:
+ -h displays this help message
+ -c concatenates each module's C/C++ source files [default]
+ -d dir where the PyKDE modules will be installed [default /usr/lib/python2.3/site-packages]
+ -g always release the GIL (SIP v3.x behaviour)
+ -i no concatenation of each module's C/C++ source files
+ -j # splits the concatenated C++ source files into # pieces [default 1]
+ -k dir the KDE base directory
+ -n dir the directory containing the KDE lib files
+ -o dir the directory containing the KDE header files
+ -r generates code with tracing enabled [default disabled]
+ -u build with debugging symbols
+ -v dir where the PyKDE .sip files will be installed [default /usr/share/sip]
+ -w turn on KDE deprecated object warnings when compiling [default off]
+ -z file the name of a file containing command line flags
+
+If reporting errors, paste all of the output above into your
+message and post to the PyKDE mailing list at:
+
+ mailto: PyKDE@mats.imk.fraunhofer.de
+ subscribe: http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
+
+You can redirect the output into a file (> output.txt) if needed
+
+</pre>
+</td>
+</tr>
+</table>
+<p>
+NOTE: In the descriptions below "Default" is a "typical" value for common distributions <b>and
+may not be the complete path needed</b>. You should always specify the complete path.
+configure.py searches a number of locations in looking for the appropriate directories,
+which may depend on the distribution used, where the version of Python used to run
+configure.py is located, and other factors. For example, a default value of "python/site-packages"
+could be "/usr/lib/python/site-packages", "/usr/local/python2.3/site-packages" or other values
+depending on how and where Python is installed or which of several installed versions of Python
+is used to run configure.py. configure.py will not try to complete the path for switch specified paths -
+you <b>must</b> specifiy the complete path (eg /usr/lib/python/site-packages or ../kdecore)
+</p>
+<p>
+For "normal" installations, configure.py will automatically discover all of the information covered by
+the options below -- it is only necessary to use the options switches when configure.py can't discover
+a location by itself.
+</p>
+<hr>
+<dl>
+<dt><b>-c Concatenation</b></dt>
+<dd>
+Building PyKDE involves loading a large number of cpp and h files. The compile process can be speeded up
+considerably (by as much as 80%) by concatenating all of the cpp files into a one (or several - see -j) large
+cpp file. The price for this speed up is a large increase in memory usage. By default, the feature is
+'on' in configure.py. To turn this feature off, use '-i'. You may wish to turn this off if the system doing
+the compile has 128MB or less RAM.
+</dd>
+<hr>
+<dt><b>-d Installation directory</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> directory path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> python/site-packages/</td>
+<td width = "20%"> </td>
+</tr></table>
+Normally, the PyKDE modules are installed in python/site-packages. Writing to this directory requires
+root access. RPM builders sometimes need to build the modules to a different directory, or you may want
+to install the modules in a different location (for example, in a subdirectory of site-packages/). For this
+option to be useful, you need to ensure that Python can still locate and import the PyKDE modules from
+the specified destination.
+</dd>
+<hr>
+<dt><b>-g Always release GIL (sip 3.0 behaviour)</b></dt>
+<dd>
+This is a code generation option that only affects sip 4.0. It causes sip to generate C++
+whose threading behavior is more like sip 3.0.
+</dd>
+<hr>
+<dt><b>-i NO Concatenation</b></dt>
+<dd>
+This option causes configure.py to generate C++ code and makefiles that compile many small file
+one at a time (rather than one huge file for each module). This increase compile time by about
+80%, but reduces memory consumption. See -c above.
+</dd>
+<hr>
+<dt><b>-j # of splits of concatenated files</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> number of splits </td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> 1</td>
+<td width = "20%"> </td>
+</tr></table>
+Intended for use on multi-CPU systems. Splits the concatenated cpp file into the specified number
+of segments, each of which can be compiled concurrently in separate threads. On single processor
+systems, each "split" will compile in sequence. The kdeui module is (with concatenation active)
+is split into two pieces by default to reduce memory consumption. Values for 'j' greater than
+2 will be honored correctly.
+</dd>
+<hr>
+<dt><b>-k KDE base directory</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> directory path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> kde3/</td>
+<td width = "20%"> </td>
+</tr></table>
+The top level directory under which kde3/libs and kde3/include are located (these paths can also
+be specified independently see -n and -o) On SuSE distributions, this is typically /opt/kde3. On
+Red Hat and Mandrake, this is typically /usr. configure.py will find the typical locations automatically.
+configure .py will use the KDEDIR environment variable value if it is defined and the -k switch is NOT used.
+</dd>
+<hr>
+<dt><b>-n KDE library files</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> directory path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> kde3/libs</td>
+<td width = "20%"> </td>
+</tr></table>
+The path to KDE's library files (libkdecore.so, etc).
+</dd>
+<hr>
+<dt><b>-o KDE h files</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> directory path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> kde3/include</td>
+<td width = "20%"> </td>
+</tr></table>
+The path to KDE's h files. (May require installation of kdelibs3-devel rpm package)
+configure.py. PyKDE will locate h files in subdirectories of this path automatically (eg kde3/include/kio/*.h)
+</dd>
+<hr>
+<dt><b>-r generate code with tracing enabled</b></dt>
+<dd>
+For debugging
+</dd>
+<hr>
+<dt><b>-u debugging symbols</b></dt>
+<dd>
+For debugging
+</dd>
+<hr>
+<dt><b>-v PyKDE sip files</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> directory path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> /usr/share/sip/</td>
+<td width = "20%"> </td>
+</tr></table>
+The path where the PyKDE sip files will be copied (for use by programs that use sip binding
+dependent on PyKDE)
+</dd>
+<hr>
+<dt><b>-w KDE deprecation warnings</b></dt>
+<dd>
+KDE marks a number of methods as 'deprecated'. The methods marked will generate warnings
+at compile time. By default, PyKDE's configure.py turns these warnings off. -w will turn
+them on.
+</dd>
+<hr>
+<dt><b>-z Path to configure.py options file</b></dt>
+<dd>
+<table width = "100%"><tr>
+<td width = "20%"><u>Value:</u> filename or path</td>
+<td width = "20%"> </td>
+<td width = "40%"><u>configure.py Default:</u> none</td>
+<td width = "20%"> </td>
+</tr></table>
+If your site requires the use of more than one or two option switches, you can place all of the options
+in a text file and then reference only the text file's path and name on the command line. The options
+are placed in the text file just as they would be on the command line, with one option per line.
+For example, the options file for the command "python configure.py -c- -v /usr/local/PyQt/sip" would look
+like:
+<h4><u>options.txt</u></h4>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+-c
+-v /usr/local/PyQt/sip
+</pre>
+</td>
+</tr>
+</table>
+<p></p>
+and would be run as "python configure.py -z options.txt" (assuming options.txt is in the current directory).
+</dd>
+<hr>
+<dt><b>-l (lower case L) code gen control -- not displayed with -h</b></dt>
+<dd>
+If for some reason you need to rebuild a PyKDE module but not all of PyKDE, you can use -l.
+-l &lt;modulename&gt; (eg -l kdecore) will rebuild only the module specified; -l &lt;modulename&gt;:
+(eg -l kdecore:) will rebuild the module specified and all successive modules. If changes are
+made that affect linking (especially deleting methods or other symbols), you must use the
+":" form, since later modules depend on earlier modules.
+</dd>
+</dl>
+
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="trouble.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="examples.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Troubleshooting</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">Class Reference Documentation</TD>
+</TR>
+</TABLE>
+</DIV>
+
+</body>
+</html>
diff --git a/python/pykde/doc/trouble.html b/python/pykde/doc/trouble.html
new file mode 100644
index 00000000..e93592f7
--- /dev/null
+++ b/python/pykde/doc/trouble.html
@@ -0,0 +1,337 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
+ "http://www.w3.org/TR/html4/loose.dtd"">
+<html>
+<head>
+ <title>Troubleshooting</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Quanta Plus">
+</head>
+<body>
+<DIV
+CLASS="NAVHEADER"
+><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TH COLSPAN="3" ALIGN="center">Python Bindings for KDE (PyKDE-3.16.0)</TH></TR>
+<TR><TD WIDTH="10%" ALIGN="left" VALIGN="bottom"><A HREF="install.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="80%" ALIGN="center" VALIGN="bottom"></TD>
+<TD WIDTH="10%" ALIGN="right" VALIGN="bottom"><A HREF="switches.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+</TABLE><HR ALIGN="LEFT" WIDTH="100%"></DIV>
+<h1>Troubleshooting</h1>
+<h2>Introduction</h2>
+<p>
+(There are distribution-specific notes at the end of this page)
+</p>
+<p>
+Before each release, PyKDE is test built against SuSE, Red Hat and Mandrake Linux distributions,
+and various versions of Python, Qt and KDE. Even after performing test builds, errors still can
+occur with your installation. The most common sources of errors are (roughly in order of occurance):
+</p>
+<ul>
+<li>Differences in user environments</li>
+<li>Differences between distributions (or even between different builds of same version of the same distribution</li>
+<li>Bugs - in PyKDE or any of the software it's based on (KDE, Qt, PyQt, sip, or even Python)</li>
+</ul>
+<h2>Reporting errors -- PLEASE READ!</h2>
+<p>
+The people on the PyKDE mailing list are knowledgeable about Python, PyQt,and PyKDE and are
+genuinely helpful. You shouldn't hesitate to post a question or problem there (you may hear
+"RTFM" occasionally, but not often). Chances are that someone using your distribution is already
+posting to the list.
+</p>
+<p>
+The most important thing you can do when reporting an installation error is to include the
+configure.py output with your question, including the error message at the point of failure.
+All configure.py messages write to stdout, so if you can't cut and paste the output, you can do:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ python configure.py > output.txt
+</pre>
+</td>
+</tr>
+</table>
+<p>
+to capture the output and attach the file to your post. In many cases, if you don't include
+this info, the first response to your question will be to ask for the configure.py output. Including
+it with your original post will save several hours or days in the process of obtaining an answer.
+</p>
+<p>
+Bug reports are a vital part of any software development process. We generally try to provide
+an immediate fix or work-around for problems reported, and then incorporate the fix into
+future releases. Bug reports are always welcome (and always embarrassing).
+</p>
+<p>
+If you are reporting PyKDE run-time errors (not install errors), there's no need to include
+the configure.py output, but <b>at a minimum</b> you should indicate what PyKDE version the error
+occurred with and provide a <i>small</i> code sample that reproduces the error.
+</p>
+<h2>If you perform repairs ...</h2>
+<p>
+If you edit any of the sip files to repair bugs or modify PyKDE, you <b>must</b> re-run
+configure.py. configure.py includes code that generates the actual C++ code that compiles to PyKDE.
+If you don't re-run configure.py, changes to the sip files will have no effect.
+</p>
+<h2>configure.py and make errors</h2>
+<dl>
+<dt>"Can't find a file or directory"</dt>
+<dd>
+configure.py first checks to make sure that it can locate and access all of the components PyKDE
+depends on. If the directories or files aren't where configure.py thinks they should be, an error
+will result and configure.py will exit. Usually these kinds of problems can be solved by adding
+command line switches when running configure.py - see the <a href="switches.html">next page</a> for
+the available command line options
+</dd>
+<dt>"Can't write ..." or "Can't create ..."</dt>
+<dd>
+build.py creates a number of directories and generates Makefiles and a lot of C++ code
+(customized for your system). If the user running build.py doesn't have write access to
+the directories where PyKDE sources were installed, the build will fail. You need to either
+obtain write access, relocate PyKDE someplace where you have write access or (worst choice)
+build PyKDE as root.
+</dd>
+<dt>"Can't remove or create directory"</dt>
+<dd>
+This happens rarely, but is a quirk of the PyKDE build process. PyKDE will build and make
+as an unprivileged user BUT if you did a build of PyKDE previously as root and then attempt
+to build PyKDE again as a user, the build will fail. The reason is that configure.py creates a
+number of directories and a lot of files. The next time configure.py runs, it will try to delete
+these directories and files before re-creating them. If the original directories and files
+were owned by root, a user will be unable to delete them and configure.py will fail if run as
+a user in that case.
+</dd>
+<dt>"Can't find PyQt sip files"</dt>
+<dd>
+You did install them, right? If you build PyQt from sources, the sip files will be there
+somewhere (by default, PyQt installs the PyQt sip files in /usr/share/PyQt if built from
+source). When you find them, you can tell configure.py where they are with a switch (see
+<a href="switches.html">next page</a>). If you installed PyQt from RPMs (either downloaded or
+from your distribution), the sip files are usually in a "devel" RPM for PyQt, which also needs
+to be installed if you want to build PyKDE from sources.
+</dd>
+<dt>Code generation errors</dt>
+<dd>
+The PyKDE sources are mostly "sip" files which describe the interface to KDE's C++ libraries
+to the sip code generator. These files should be error free. If a sip or code generation error occurs,
+please report it to the PyKDE mailing list at <A HREF="mailto:PyKDE@mats.imk.fraunhofer.de">
+PyKDE@mats.imk.fraunhofer.de </A> Subscribe to the list
+<a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">here</a>
+</dd>
+<dt>Compile errors</dt>
+<dd>
+PyKDE should not experience any compile errors. Currently sip 4.0 based compiles will
+generate a number of warnings - these can be safely ignored. If errors occur, please report them
+to the PyKDE mailing list at <A HREF="mailto:PyKDE@mats.imk.fraunhofer.de"> PyKDE@mats.imk.fraunhofer.de </A>.
+Subscribe to the list <a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">here</a>
+</dd>
+</dl>
+<h2>Compile-time errors</h2>
+<p>
+PyKDE takes a long time to compile on some hardware, however no single module should take more than 25-30
+minutes on any but the slowest hardware. Some gcc versions (for example gcc 4.0.1 on SuSE 10) will hang
+if PyKDE C++ files have been generated in "concatenated" mode (see Installation and Switches pages for
+more info). If you are using concatenated mode (each module consists of a single large file, instead of
+many small files) and PyKDE's compilation hangs, re-run configure.py with the -i switch, then re-run make.
+</p>
+<p>
+PyKDE attempts to identify gcc versions that have problems and select the correct mode automatically.
+</p>
+<h2>Run-time errors</h2>
+<dl>
+<dt>importTest.py errors</dt>
+<dd>
+<p>
+All that importTest.py does is try to import each of the PyKDE modules. The most common error that
+occurs when running importTest.py is that an unresolved symbol in one of the modules prevents the
+module from loading. This can occur because not all KDE library versions contain all of the "official" KDE
+classes and members. Although it doesn't occur often, 1 missing method (out of over 10,000) will
+prevent a module from loading, and also prevent other modules that depend on the failing module
+from loading. The error message will normally print a "mangled" version of the missing method's name:
+</p>
+<table border="0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ &gt; ImportError: /usr/lib/python2.2/site-packages/libkdecorecmodule.so:
+ &gt; undefined symbol: _ZNK10KAboutData18copyrightStatementEv
+</pre>
+</td>
+</tr>
+</table>
+<p>
+You can decipher the mangled name to a class and method (in the example above,
+KAboutData::copyrightStatement) by running:
+</p>
+<table border="0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ c++filt &lt;symbolname&gt;
+
+ for example:
+
+ c++filt _ZNK10KAboutData18copyrightStatementEv
+</pre>
+</td>
+</tr>
+</table>
+<p>
+If you can locate the sip file for the class, you can comment out ("//") the missing method, and recompile
+(including re-running <i>configure.py</i>. If you can't solve the problem (and even if you do) you should
+report it on the PyKDE mailing list at <A HREF="mailto:PyKDE@mats.imk.fraunhofer.de">
+PyKDE@mats.imk.fraunhofer.de </A>. Subscribe to the list
+</p>
+<a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">here</a>
+</dd>
+<dt>Other run-time errors</dt>
+<dd>
+At present only the most likely failure modes of PyKDE are tested (contributions of tests/test code
+are greatly appreciated). Nearly all of PyKDE is completely machine generated from the KDE h files,
+so coding errors are rare but they do happen. PyKDE also uses some classes and methods differently
+because it's running from Python and not C++. If you suspect an error, please double-check your
+code and review the PyKDE docs to be sure the argument lists and expected return types are what you
+thought they were. If the problem persists, report it to the PyKDE mailing list at
+ <A HREF="mailto:PyKDE@mats.imk.fraunhofer.de"> PyKDE@mats.imk.fraunhofer.de </A>. Subscribe to the list
+<a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">here</a>. <b>When reporting errors to the
+list, it's always helpful if you provide:</b>
+<ul>
+<li>
+the version of PyKDE you're using
+</li>
+<li>
+ a <i>small</i> sample of code that produces the problem.
+</li>
+</ul>
+It's not particularly important whether the error is a PyKDE error or a user error (although
+I prefer seeing user errors rather than my own).
+</dd>
+</dl>
+<h2>Distribution-specific Notes</h2>
+<h3>SuSE 8.0/8.1</h3>
+<p>
+During testing of PyKDE for KDE 3.x.x on SuSE 8.0 and 8.1 I
+ran into problems with the kjs module insisting on linking to
+the KDE2 version of libkjs.so instead of the KDE3. The lib
+name/version is the same in both cases, but the libs aren't
+compatible. The only solution I found was to:
+</p>
+<p>
+1.Edit (as root) /etc/ld.so.conf from this:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ /opt/kde
+ /opt/kde2
+ /opt/kde3
+</pre>
+</td>
+</tr>
+</table>
+<p>
+ to this:
+</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ /opt/kde3
+ /opt/kde
+ /opt/kde2
+</pre>
+</td>
+</tr>
+</table>
+<p>
+2. Run (as root) ldconfig
+</p>
+<p>
+3. Re-link. You can save having to rebuild PyKDE and recompile
+by simply going into the PyKDE-3.x.x/kjs directory and deleteing
+kjshuge.o (or any *.o in the directory) and then rerunning make
+and make install (this forces a recompile/relink of the kjs module
+only, which is very fast) Don't run configure.py before trying this,
+or everything will recompile.
+</p>
+<p>
+Alternatively, if you don't plan on using kjs, you can simply
+ignore the fact that it's mis-linked - it won't affect any
+other module.
+</p>
+<h3>SuSE 8.2/9.0</h3>
+<p>
+Some (but by no means all) versions of the KDE rpms for recent SuSE distributions appear
+to have been built with a different version of kfileshare.h than what they ship with. This
+version is also in disagreement with the "official" KDE version (as found in the kdelib
+source files on kde.org, for example). The "incorrect" versions use a setShared(...) method
+with a different argument list that doesn't match the h files.
+</p>
+<p>
+To fix this problem, all versions of the setShared method should be commented out in
+kfileshare.sip.
+</p>
+<h3>Mandrake 9.1</h3><h4>(rpm install - PyKDE-3.8, not 3.11 so far)</h4>
+<p>
+Some people have had trouble with the Mandrake 9.1 rpms/KDE libs. All
+distributions modify KDE in some way and where feasible, PyKDE is
+set up to build with the least common denominator.
+</p>
+<p>
+The following exchange is from the PyKDE mailing list. The reply is
+from Simon Edwards:
+</p>
+<table border="0" width="100%">
+<tr>
+<td>
+<pre CLASS="PROGRAMLISTING">
+ &gt; I'm trying to setup PyKDE on my Mandrake 9.1/python 2.2 box but so far I
+
+ &gt; ImportError: /usr/lib/python2.2/site-packages/libkdecorecmodule.so:
+ &gt; undefined symbol: _ZNK10KAboutData18copyrightStatementEv
+
+ Let me guess. You are using the original KDE version that came with Mandrake
+ 9.1. :) yeah, there is a problem and the PyKDE rpms for mandrake don't work
+ with that version.
+
+ What you can do is update your KDE to 3.1.4. That should work. I'm using 3.1.2
+ here. You can go here:
+
+ <a href="http://plf.zarb.org/~nanardon/urpmiweb.php"> http://plf.zarb.org/~nanardon/urpmiweb.php</a>
+
+ and follow the directions and remember to select 'Texstar'. Now you will be
+ able to upgrade KDE using the Mandrake Install tool. Open up the Mandrake
+ Control Center and go to Install Software, do a search on "kde" and you
+ should get a big long list of KDE packages. Select the 3.1.4-tex2 ones and
+ when you are ready hit 'install'. and wait, and wait. :-)
+</pre>
+</td>
+</tr>
+</table>
+<p>
+</p>
+<h3>Mandrake 10.x</h3>
+<p>
+Some people have had trouble compiling with Mandrake 10.x. Mandrake provides a few "non-standard"
+h files. This only affects 3 or 4 methods, but is enough to prevent PyKDE from building. PyKDE 4.0
+includes patches that should eliminate this problem.
+</p>
+<DIV CLASS="NAVFOOTER">
+<HR ALIGN="LEFT" WIDTH="100%">
+<TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" >
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top"><A HREF="install.html" ACCESSKEY="P">Prev</A></TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top"><A HREF="index.html" ACCESSKEY="H">Home</A></TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top"><A HREF="switches.html" ACCESSKEY="N">Next</A></TD>
+</TR>
+<TR>
+<TD WIDTH="33%" ALIGN="left" VALIGN="top">Installation</TD>
+<TD WIDTH="34%" ALIGN="center" VALIGN="top">&nbsp;</TD>
+<TD WIDTH="33%" ALIGN="right" VALIGN="top">build.py Options</TD>
+</TR>
+</TABLE>
+</DIV>
+
+</body>
+</html>
diff --git a/python/pykde/examples/README b/python/pykde/examples/README
new file mode 100644
index 00000000..24a7ac3f
--- /dev/null
+++ b/python/pykde/examples/README
@@ -0,0 +1,17 @@
+This subdirectory contains a few executable Python
+programs that demonstrate or test some features of
+PyKDE:
+
+uisampler.py - demos of most of the kdeui widgets,
+ including dialogs, menus (KAction, KStdAction, etc)
+ widgets, and xml ui definition
+
+mimetest.py - tests KSharedPtr related classes/methods
+ such as KMimetype, KService, etc
+
+menudemo.py
+xmlmenudemo.py - demostrate the construction of a
+ menu based app (also run as part of uisampler.py)
+
+More demo programs are planned - contributions are
+welcome.
diff --git a/python/pykde/examples/aboutkde.png b/python/pykde/examples/aboutkde.png
new file mode 100644
index 00000000..2b4681c7
--- /dev/null
+++ b/python/pykde/examples/aboutkde.png
Binary files differ
diff --git a/python/pykde/examples/astron.png b/python/pykde/examples/astron.png
new file mode 100644
index 00000000..d2797ec3
--- /dev/null
+++ b/python/pykde/examples/astron.png
Binary files differ
diff --git a/python/pykde/examples/example_dcopexport.py b/python/pykde/examples/example_dcopexport.py
new file mode 100644
index 00000000..66aff6a0
--- /dev/null
+++ b/python/pykde/examples/example_dcopexport.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+
+"""
+Copyright 2004 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+# This is an example of a DCOP enabled application written in Python, using
+# PyKDE and the dcopexport module. Taken from server.py example in kde-bindings
+# which was written by Torben Weis and Julian Rockey
+
+import sys
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from dcopexport import DCOPExObj
+from qt import QString, QStringList
+
+"""
+DCOPExObj provides all of the necessary machinery to DCOP-enable
+an application: the 'process' method, marshalling/demarshalling,
+and the 'features' method
+
+To DCOP-enable an app,
+
+ 1. Add a class which subclasses DCOPExObj (ParrotObject in
+ this case). Call the DCOPExObj.__init__ method with 'id'.
+ If 'id' isn't specified, DCOP will assing a numerical id.
+ 'id' is the name of the object (eg, how it will be listed
+ in kdcop, or returned with a dcopClient.remoteObjects call)
+
+ 2. Identify the methods/functions that will be exposed via
+ DCOP - they don't have to be methods of the DCOPExObj
+ class, as long as the DCOPExObj class can call them. Make
+ sure they take/return types that DCOPExObj supports.
+
+ 3. For each method, call self.addMethod with the complete
+ method signature (return type, name, list of argument
+ types, but no argument names) as a string and the
+ Python method/function that corresponds.
+
+ 4. That's it.
+"""
+
+# the class which will expose methods to DCOP - the methods do NOT
+# need to be a member of this class.
+class DeadParrotObject (DCOPExObj):
+ def __init__ (self, id = 'dead parrot'):
+ DCOPExObj.__init__ (self, id)
+
+ # the methods available from this app via DCOP
+ # addMethod (<signature>, <Python method>)
+ self.addMethod ('QString getParrotType()', self.get_type)
+ self.addMethod ('void setParrotType (QString)', self.set_type)
+ self.addMethod ('QString squawk()', self.squawk)
+ self.addMethod ('QStringList adjectives()', self.adjectives)
+
+ # set up object variables
+ self.parrot_type = QString ("Norwegian Blue")
+
+ def get_type (self):
+ return self.parrot_type
+
+ def set_type (self, parrot_type):
+ self.parrot_type = parrot_type
+
+ def squawk (self):
+ return "This parrot, a %s, is pining for the fjords" % (self.parrot_type)
+
+ def adjectives (self):
+ adjList = ["passed on", "is no more", "ceased to be", "expired", "gone to meet his maker",
+ "a stiff", "bereft of life", "rests in peace", "metabolic processes are now history",
+ "off the twig", "kicked the bucket", "shuffled off his mortal coil",
+ "run down his curtain", "joined the bleedin' choir invisible", "THIS IS AN EX-PARROT"]
+ qadjList = QStringList ()
+ for adj in adjList:
+ qadjList.append (adj)
+
+ return qadjList
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("testdcopexport", "petshop",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+dcop = app.dcopClient ()
+appid = dcop.registerAs('petshop')
+print "DCOP Application: %s starting" % appid
+
+parrot = DeadParrotObject()
+another_parrot = DeadParrotObject('polly')
+
+print """
+Run kdcop and look for the 'petshop' application instance.
+
+This program exports the 'deadParrot' and 'polly' objects.
+Double-clicking those object's methods will allow you to get or set data.
+
+To end the application, in kdcop choose the MainApplication-Interface
+object and double-click the quit() method.
+"""
+
+app.exec_loop()
+
+
diff --git a/python/pykde/examples/example_dcopext.py b/python/pykde/examples/example_dcopext.py
new file mode 100644
index 00000000..8f3801a8
--- /dev/null
+++ b/python/pykde/examples/example_dcopext.py
@@ -0,0 +1,135 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys, time
+import dcop
+import dcopext
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from qt import QString, QCString
+
+
+
+def getAnyApplication (client, appName):
+ for qcstring_app in client.registeredApplications ():
+ app = str (qcstring_app)
+ if app == appName or app.startswith (appName + "-"):
+ print app
+ print
+ objList, ok = client.remoteObjects (app)
+ for obj in objList:
+ print " ", obj
+ funcs, ok = client.remoteFunctions (app, obj)
+ for f in funcs:
+ print " ", " ", f
+ break
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("testdcopext", "testdcopext",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+dcop = app.dcopClient ()
+
+#getAnyApplication (dcop, "konqueror")
+print "--------------------------"
+print "The DCOPObjects for kicker:"
+d = dcopext.DCOPApp ("kicker", dcop)
+objs = d.objects
+if objs:
+ for obj in objs:
+ print obj
+o = d.object ("Panel")
+methods = o.methods
+for method in methods:
+ print method
+m = o.method ("addNonKDEAppButton")
+
+print "--------------------------"
+print "The method"
+print o.method
+print "--------------------------"
+print "Find the method:"
+print m.findMethod ()
+print "--------------------------"
+print "The return type:"
+print m.rtype
+print "--------------------------"
+print "The argument types:"
+print m.argtypes
+print "--------------------------"
+print "The argument names:"
+print m.argnames
+print "--------------------------"
+
+print
+print "get kicker panel size via DCOP"
+res = d.Panel.panelSize()
+print res, d.Panel.panelSize.valid
+print "--------------------------"
+
+print "Call a method that doesn't exist"
+res = d.Panel.junk ()
+print res
+print "--------------------------"
+
+print "See if a non-existent method is valid"
+print d.Panel.junk.valid
+print
+print "--------------------------"
+
+print
+print
+print "Start a kwrite instance"
+errcode, error, dcopService, pid = KApplication.startServiceByDesktopName ("kwrite", "")
+dcopService = "kwrite-" + str (pid)
+print "errcode: %i error: %s dcopService: %s pid: %i" % (errcode, error, dcopService, pid)
+print "--------------------------"
+time.sleep (2)
+
+o1 = dcopext.DCOPObj (dcopService, dcop, "EditInterface#1")
+print "Check if insertLine is a valid function"
+print "valid", o1.insertLine.valid
+print "--------------------------"
+print "insertLine's arg types and names"
+print o1.insertLine.argtypes, o1.insertLine.argnames
+print "--------------------------"
+print "Insert a line into the kwrite instance we launched"
+print "call returns:", o1.insertLine (0, "Now is the time for all good men to come to the aid of their party")
diff --git a/python/pykde/examples/kdeform1.ui b/python/pykde/examples/kdeform1.ui
new file mode 100644
index 00000000..3d7a36e3
--- /dev/null
+++ b/python/pykde/examples/kdeform1.ui
@@ -0,0 +1,335 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>Form1</class>
+<comment>Python:#import all necessary widgets
+Python:from kfile import KURLRequester</comment>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>Form1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>497</width>
+ <height>485</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>6</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="KLed" row="0" column="0">
+ <property name="name">
+ <cstring>KLed1</cstring>
+ </property>
+ </widget>
+ <widget class="KLed" row="0" column="1">
+ <property name="name">
+ <cstring>KLed2</cstring>
+ </property>
+ <property name="color">
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ </widget>
+ <widget class="KLed" row="0" column="2">
+ <property name="name">
+ <cstring>KLed3</cstring>
+ </property>
+ <property name="color">
+ <color>
+ <red>255</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ </widget>
+ <widget class="KSqueezedTextLabel" row="0" column="3">
+ <property name="name">
+ <cstring>KSqueezedTextLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>KSqueezedTextLa...h a lot of text</string>
+ </property>
+ </widget>
+ <spacer row="0" column="4" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>Spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>231</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QFrame" row="1" column="0" rowspan="1" colspan="6">
+ <property name="name">
+ <cstring>Frame3</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Raised</enum>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="KURLLabel" row="0" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>KURLLabel1</cstring>
+ </property>
+ <property name="url" stdset="0">
+ <string>http://KURLLabel.org</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester" row="1" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>KURLRequester1</cstring>
+ </property>
+ </widget>
+ <widget class="KLineEdit" row="2" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>KLineEdit1</cstring>
+ </property>
+ <property name="text">
+ <string>KLineEdit1</string>
+ </property>
+ </widget>
+ <spacer row="3" column="0">
+ <property name="name">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>80</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KProgress" row="3" column="1">
+ <property name="name">
+ <cstring>KProgress1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>2</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <spacer row="3" column="2">
+ <property name="name">
+ <cstring>Spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>80</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QGroupBox" row="2" column="0" rowspan="1" colspan="4">
+ <property name="name">
+ <cstring>GroupBox1</cstring>
+ </property>
+ <property name="title">
+ <string>GroupBox1</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="KHistoryCombo" row="0" column="0">
+ <property name="name">
+ <cstring>KHistoryCombo1</cstring>
+ </property>
+ <property name="historyItems">
+ <stringlist>
+ <string>first, second, last</string>
+ </stringlist>
+ </property>
+ </widget>
+ <widget class="KDatePicker" row="1" column="0">
+ <property name="name">
+ <cstring>KDatePicker1</cstring>
+ </property>
+ <property name="date">
+ <date>
+ <year>2003</year>
+ <month>4</month>
+ <day>22</day>
+ </date>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox" row="3" column="0" rowspan="1" colspan="6">
+ <property name="name">
+ <cstring>GroupBox3</cstring>
+ </property>
+ <property name="title">
+ <string>GroupBox3</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="KComboBox" row="0" column="0">
+ <property name="name">
+ <cstring>KComboBox1</cstring>
+ </property>
+ <property name="contextMenuEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="urlDropsEnabled" stdset="0">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="0" column="1">
+ <property name="name">
+ <cstring>KIntSpinBox1</cstring>
+ </property>
+ <property name="value">
+ <number>7</number>
+ </property>
+ </widget>
+ <widget class="KFontCombo" row="0" column="2">
+ <property name="name">
+ <cstring>KFontCombo2</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox" row="2" column="4" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>GroupBox4</cstring>
+ </property>
+ <property name="title">
+ <string>GroupBox4</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="KListView" row="0" column="0">
+ <property name="name">
+ <cstring>KListView1</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QPushButton" row="5" column="5">
+ <property name="name">
+ <cstring>PushButton1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Close</string>
+ </property>
+ <property name="on">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <spacer row="5" column="0" rowspan="1" colspan="5">
+ <property name="name">
+ <cstring>Spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>372</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>PushButton1</sender>
+ <signal>clicked()</signal>
+ <receiver>Form1</receiver>
+ <slot>PushButton1_clicked()</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="local" impldecl="in implementation">kdeform1.ui.h</include>
+</includes>
+<slots>
+ <slot>PushButton1_clicked()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="6"/>
+</UI>
diff --git a/python/pykde/examples/kdeform1.ui.h b/python/pykde/examples/kdeform1.ui.h
new file mode 100644
index 00000000..96bc3266
--- /dev/null
+++ b/python/pykde/examples/kdeform1.ui.h
@@ -0,0 +1,13 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you wish to add, delete or rename slots use Qt Designer which will
+** update this file, preserving your code. Create an init() slot in place of
+** a constructor, and a destroy() slot in place of a destructor.
+*****************************************************************************/
+
+
+void Form1::PushButton1_clicked()
+{
+qApp.exit(0)
+}
diff --git a/python/pykde/examples/kpartgui.dtd b/python/pykde/examples/kpartgui.dtd
new file mode 100644
index 00000000..b3389641
--- /dev/null
+++ b/python/pykde/examples/kpartgui.dtd
@@ -0,0 +1,122 @@
+<!-- Originally Copyright (c) 2000 Federico David Sacerdoti <tech@slinuxmachines.com>
+ Modifications/Extensions by Simon Hausmann <hausmann@kde.org>
+
+ This DTD module is identified by the PUBLIC and SYSTEM
+ identifiers:
+ PUBLIC "-//KDE Project//KPartGUI DTD//EN"
+ SYSTEM "kpartgui.dtd"
+
+ This DTD should be included at the head of an xmlguibuilder XML file like this:
+ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+-->
+
+<!--The root element that must enclose all other tags in the document. -->
+<!ELEMENT kpartgui ((ActionProperties | MenuBar | ToolBar | Merge | DefineGroup | MainWindow | StatusBar | Menu)*)>
+<!ATTLIST kpartgui
+ name CDATA #REQUIRED
+ version CDATA #REQUIRED
+ library CDATA #IMPLIED
+>
+
+<!-- Allows standard actions to be customized -->
+<!ELEMENT ActionProperties (Action+)>
+
+<!-- A menu bar -->
+<!ELEMENT MenuBar ((Menu | Separator | Action | ActionList | Merge | DefineGroup )*)>
+<!ATTLIST MenuBar
+ name CDATA #IMPLIED
+ group CDATA #IMPLIED
+>
+
+<!-- A tool bar
+ -- Attributes: name: a unique name for the toolbar, use mainToolBar for the main one
+ -- fullWidth: if true (default), the toolbar extends to the full width of the window
+ -- position: the position of the toolbar in the window
+ -- iconText: whether to show icon or text or both
+ -- iconSize: the size of the icons (0 for default, or usually 22 or 32)
+ -- index: the index in the toolbar dock (see QMainWindow::moveToolBar)
+ -- offset: the X offset in the toolbar dock (see QMainWindow::moveToolBar)
+ -- newline: if true, this toolbar will start a new line (i.e. under the ones before it).
+ -- group: optional group name, for named merging (?)
+ -- hidden: if true, the toolbar is initially hidden. There should be a menu entry for showing it.
+ -- noEdit: if true, the toolbar won't appear in the toolbar editor
+ -->
+<!ELEMENT ToolBar ((Action | Separator | ActionList | Merge | DefineGroup)*)>
+<!ATTLIST ToolBar
+ name CDATA #REQUIRED
+ fullWidth (true|false) "true"
+ position (top|bottom|left|right) "top"
+ iconText (icononly|textonly|icontextright|icontextbottom) #IMPLIED
+ iconSize CDATA #IMPLIED
+ index CDATA #IMPLIED
+ offset CDATA #IMPLIED
+ newline (true|false) "false"
+ group CDATA #IMPLIED
+ hidden (true|false) "false"
+ noEdit (true|false) "false"
+>
+
+<!-- A Menu such as the "File" or "Edit" menu. Can be used to define popup menus as well. -->
+<!ELEMENT Menu (text?, (Action | ActionList | Separator | TearOffHandle | Merge | DefineGroup | Menu )*)>
+<!ATTLIST Menu
+ name CDATA #REQUIRED
+ group CDATA #IMPLIED
+ icon CDATA #IMPLIED
+>
+
+<!-- Defines both Standard and app-specific actions. An action can appear in a menu, a toolbar or in a
+ menubar . -->
+<!ELEMENT Action EMPTY>
+<!-- We defined only a few standard KAction properties here. Theoritically we can have
+ any property here -->
+<!ATTLIST Action
+ name CDATA #REQUIRED
+ group CDATA #IMPLIED
+ text CDATA #IMPLIED
+ whatsThis CDATA #IMPLIED
+ toolTip CDATA #IMPLIED
+ shortText CDATA #IMPLIED
+ icon CDATA #IMPLIED
+>
+
+<!-- Inserts a separator item into a menubar or toolbar -->
+<!ELEMENT Separator EMPTY>
+<!ATTLIST Separator
+ lineSeparator (true|false) "false"
+ group CDATA #IMPLIED
+>
+
+<!-- Inserts a tear-off handle into a menu -->
+<!ELEMENT TearOffHandle EMPTY>
+<!ATTLIST TearOffHandle
+ group CDATA #IMPLIED
+>
+
+<!-- Used to name a menu, the first letter in is generally preceded by an '&' to specify
+ the menu's shortcut key -->
+<!ELEMENT text (#PCDATA)>
+
+<!-- Specifies a dynamic list of actions, each of which can be changed by plugging/unplugging it -->
+<!ELEMENT ActionList EMPTY>
+<!ATTLIST ActionList
+ name CDATA #REQUIRED
+>
+
+<!-- Not explicitly defined or in widely used yet. -->
+<!ELEMENT MainWindow (ANY)>
+
+<!-- Not explicitly defined or in widely used yet. -->
+<!ELEMENT StatusBar (ANY)>
+
+<!-- Specifies the entry index for merging in a gui client -->
+<!ELEMENT Merge EMPTY>
+<!ATTLIST Merge
+ name CDATA #IMPLIED
+>
+
+<!-- Specifies a entry index for merging, similar to the Merge tag, but with a global scope and
+ accessible via the group attribute of other tags -->
+<!ELEMENT DefineGroup EMPTY>
+<!ATTLIST DefineGroup
+ name CDATA #REQUIRED
+>
diff --git a/python/pykde/examples/kurldemo.py b/python/pykde/examples/kurldemo.py
new file mode 100644
index 00000000..d224b344
--- /dev/null
+++ b/python/pykde/examples/kurldemo.py
@@ -0,0 +1,98 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+urls = ["http://slashdot.org", "http://www.kde.org", "http://www.riverbankcomputing.co.uk", "http://yahoo.com"]
+
+import sys
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, KURL
+from kdeui import KMainWindow, KEdit
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.setGeometry (0, 0, 400, 600)
+
+ self.edit = KEdit (self)
+ self.setCentralWidget (self.edit)
+
+ self.edit.insertLine ("KURL Demo\n")
+ self.edit.insertLine ("Adding these urls:\n")
+ for url in urls:
+ self.edit.insertLine (" %s" % url)
+
+ self.edit.insertLine ("\nCreating KURLs (iterating to print):\n")
+ urlList = KURL.List ()
+ for url in urls:
+ urlList.append (KURL (url))
+
+ for url in urlList:
+ self.edit.insertLine (" %s" % url.url ())
+
+ self.edit.insertLine ("\nFirst url -- urlList [0]:\n")
+ self.edit.insertLine (" " + str (urlList [0]))
+ self.edit.insertLine (" " + str (urlList [0].url ()))
+
+ self.edit.insertLine ("\nLast url -- urlList [-1]:\n")
+ self.edit.insertLine (" " + str (urlList [-1]))
+ self.edit.insertLine (" " + str (urlList [-1].url ()))
+
+ self.edit.insertLine ("\nMiddle urls -- urlList [2:4]:\n")
+ ulist = urlList [2:4]
+ for url in ulist:
+ self.edit.insertLine (" " + str (url))
+ self.edit.insertLine (" " + str (url.url ()))
+
+ self.edit.insertLine ("\nLength of urlList -- len (urlList):\n")
+ self.edit.insertLine (" Length = %i" % len (urlList))
+
+ self.edit.insertLine ('\nurl in urlList? -- KURL ("http://yahoo.com") in urlList\n')
+ self.edit.insertLine (' KURL ("http://yahoo.com") in urlList = %i' % (KURL ("http://yahoo.com") in urlList))
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/examples/menudemo.py b/python/pykde/examples/menudemo.py
new file mode 100644
index 00000000..61a591a8
--- /dev/null
+++ b/python/pykde/examples/menudemo.py
@@ -0,0 +1,291 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses KDE classes and methods that simplify the task of building and
+operating a GUI. It is recommended that this approach be used, rather
+than the primitive approach in menuapp1.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL, QLabel, QIconSet
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KIcon, KIconLoader, KShortcut
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction, KToggleAction, KFontSizeAction, KFontAction, KRadioAction,\
+ KActionSeparator, KActionMenu, KWindowListMenu
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initActions ()
+ self.initMenus ()
+ self.initToolBar ()
+ self.initStatusBar ()
+
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew, self.actionCollection ())
+ self.openAction = KStdAction.open (self.slotOpen, self.actionCollection ())
+ self.saveAction = KStdAction.save (self.slotSave, self.actionCollection ())
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, self.actionCollection ())
+ self.printAction = KStdAction.print_ (self.slotPrint, self.actionCollection ())
+ self.quitAction = KStdAction.quit (self.slotQuit, self.actionCollection ())
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo, self.actionCollection ())
+ self.redoAction = KStdAction.redo (self.slotRedo, self.actionCollection ())
+ self.cutAction = KStdAction.cut (self.slotCut, self.actionCollection ())
+ self.copyAction = KStdAction.copy (self.slotCopy, self.actionCollection ())
+ self.pasteAction = KStdAction.paste (self.slotPaste, self.actionCollection ())
+ self.findAction = KStdAction.find (self.slotFind, self.actionCollection ())
+ self.findNextAction = KStdAction.findNext (self.slotFindNext, self.actionCollection ())
+ self.replaceAction = KStdAction.replace (self.slotReplace, self.actionCollection ())
+ self.specialAction = KAction (i18n ("Special"), KShortcut.null (), self.slotSpecial, self.actionCollection (), "special")
+
+ # Demo menu items
+
+ # KToggleAction has an isChecked member and emits the "toggle" signal
+ self.toggle1Action = KToggleAction ("Toggle 1")
+ self.toggle2Action = KToggleAction ("Toggle 2", KShortcut.null (), self.slotToggle2, None)
+
+ # A separator - create once/use everywhere
+ self.separateAction = KActionSeparator ()
+
+ # Font stuff in menus or toolbar
+ self.fontAction = KFontAction ("Font")
+ self.fontSizeAction = KFontSizeAction ("Font Size")
+
+ # Need to assign an icon to actionMenu below
+ icons = KIconLoader ()
+ iconSet = QIconSet (icons.loadIcon ("viewmag", KIcon.Toolbar))
+
+ # Nested menus using KActions (also nested on toolbar)
+ self.actionMenu = KActionMenu ("Action Menu")
+ self.actionMenu.setIconSet (iconSet)
+ self.actionMenu.insert (KStdAction.zoomIn (self.slotZoomIn, self.actionCollection ()))
+ self.actionMenu.insert (KStdAction.zoomOut (self.slotZoomOut, self.actionCollection ()))
+
+ # Doesn't work in KDE 2.1.1
+# self.radio1Action = KRadioAction ("Radio 1")
+# self.radio1Action.setExclusiveGroup ("Radio")
+# self.radio2Action = KRadioAction ("Radio 2")
+# self.radio2Action.setExclusiveGroup ("Radio")
+# self.radio3Action = KRadioAction ("Radio 3")
+# self.radio3Action.setExclusiveGroup ("Radio")
+
+ def initMenus (self):
+ fileMenu = QPopupMenu (self)
+ self.newAction.plug (fileMenu)
+ self.openAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.saveAction.plug (fileMenu)
+ self.saveAsAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.printAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.quitAction.plug (fileMenu)
+ self.menuBar ().insertItem (i18n ("&File"), fileMenu)
+
+ editMenu = QPopupMenu (self)
+ self.undoAction.plug (editMenu)
+ self.redoAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.cutAction.plug (editMenu)
+ self.copyAction.plug (editMenu)
+ self.pasteAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.findAction.plug (editMenu)
+ self.findNextAction.plug (editMenu)
+ self.replaceAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.specialAction.plug (editMenu)
+ self.menuBar ().insertItem (i18n ("&Edit"), editMenu)
+
+ demoMenu = QPopupMenu (self)
+ self.toggle1Action.plug (demoMenu)
+ self.toggle2Action.plug (demoMenu)
+ self.separateAction.plug (demoMenu)
+ self.fontAction.plug (demoMenu)
+ self.fontSizeAction.plug (demoMenu)
+ self.actionMenu.plug (demoMenu)
+# self.radio1Action.plug (demoMenu)
+# self.radio2Action.plug (demoMenu)
+# self.radio3Action.plug (demoMenu)
+ self.menuBar ().insertItem (i18n ("&Demo"), demoMenu)
+
+ # This really belongs in Kicker, not here,
+ # but it actually works
+ wlMenu = KWindowListMenu (self)
+ wlMenu.init ()
+ self.menuBar ().insertItem (i18n ("&WindowListMenu"), wlMenu)
+
+
+
+ helpMenu = self.helpMenu ("")
+ self.menuBar ().insertItem (i18n ("&Help"), helpMenu)
+
+ def initToolBar (self):
+ self.newAction.plug (self.toolBar ())
+ self.openAction.plug (self.toolBar ())
+ self.saveAction.plug (self.toolBar ())
+ self.cutAction.plug (self.toolBar ())
+ self.copyAction.plug (self.toolBar ())
+ self.pasteAction.plug (self.toolBar ())
+
+ self.separateAction.plug (self.toolBar ())
+ self.separateAction.plug (self.toolBar ())
+ self.separateAction.plug (self.toolBar ())
+
+ self.fontAction.plug (self.toolBar ())
+ self.separateAction.plug (self.toolBar ())
+ self.fontAction.setComboWidth (150)
+
+ self.fontSizeAction.plug (self.toolBar ())
+ self.fontSizeAction.setComboWidth (75)
+
+ self.separateAction.plug (self.toolBar ())
+
+ # This works, but you have to hold down the
+ # button in the toolbar and wait a bit
+ self.actionMenu.plug (self.toolBar ())
+ # This appears to do nothing
+ self.actionMenu.setDelayed (False)
+
+ # Need this to keep the font comboboxes from stretching
+ # to the full width of the toolbar when the window is
+ # maximized (comment out the next two lines to see
+ # what happens)
+ stretchlbl = QLabel ("", self.toolBar ())
+ self.toolBar ().setStretchableWidget (stretchlbl)
+
+
+# self.toolBar ().setHorizontalStretchable (False)
+
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def slotToggle2 (self):
+ self.notImpl ("Toggle")
+
+ def slotZoomIn (self):
+ self.notImpl ("Zoom In")
+
+ def slotZoomOut (self):
+ self.notImpl ("Zoom Out")
+
+ def notImpl (self, item):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/examples/mimetype.py b/python/pykde/examples/mimetype.py
new file mode 100644
index 00000000..d1926b0b
--- /dev/null
+++ b/python/pykde/examples/mimetype.py
@@ -0,0 +1,269 @@
+"""
+This program tests/demos some of the KSharedPtr related classes and
+methods (KMimeType, KService, etc). It generally tests the *::List
+methods for these classes (eg KService::List) since that also tests
+the *::Ptr mapped type code (eg KService::Ptr) at the same time.
+
+This version is suitable for KDE >= 3.0.0 (some methods not available
+in earlier versions)
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QWidget, QButtonGroup, Qt, QLabel, QListView, QListViewItem
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, KURL
+from kdeui import KMainWindow, KTabCtl, KListBox
+from kio import KMimeType, KService, KServiceGroup, KServiceType, KTrader, KServiceTypeProfile, KServiceGroup
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ tabctl = KTabCtl (self)
+ self.setGeometry (0, 0, 600, 400)
+ tabctl.setGeometry (10, 10, 550, 380)
+
+ tabctl.addTab (KMimeTypeTab (tabctl), "KMimeType")
+ tabctl.addTab (KServiceTab (tabctl), "KService")
+ tabctl.addTab (KSycocaEntryTab (tabctl), "KSycocaEntry")
+ tabctl.addTab (KServiceTypeTab (tabctl), "KServiceType")
+ tabctl.addTab (OfferListTab (tabctl), "OfferList")
+
+ tabctl.show ()
+
+
+class OfferListTab (QWidget):
+ def __init__ (self, parent, name = ""):
+ QWidget.__init__ (self, parent, name)
+
+ self.setGeometry (0, 0, 500, 370)
+ lvLbl = QLabel ("Offers - text/html", self)
+ lvLbl.setGeometry (10, 10, 150, 20)
+
+ lv = QListView (self)
+ lv.setSorting (-1)
+ lv.addColumn ("type_", 75)
+ lv.addColumn ("name", 100)
+ lv.addColumn ("exec_", 200)
+ lv.addColumn ("library", 100)
+ lv.setGeometry (10, 30, 500, 300)
+ lv.setAllColumnsShowFocus (1)
+
+ # insert list items in reverse order
+
+ pref = KServiceTypeProfile.preferredService ("Application", "image/jpeg")
+ QListViewItem (lv, pref.type_ (), pref.name (), pref.exec_ (), pref.library ())
+ QListViewItem (lv, "Preferred", "--------", "", "")
+ QListViewItem (lv, "", "", "", "")
+
+ trader = KTrader.self ()
+ slist = trader.query ("image/jpeg", "Type == 'Application'")
+ print "KTrader returned:", slist
+ for s in slist:
+ lvi = QListViewItem (lv, s.type_ (), s.name (), s.exec_ (), s.library ())
+
+
+ lv.show ()
+
+class KServiceTypeTab (QWidget):
+ def __init__ (self, parent, name = ""):
+ QWidget.__init__ (self, parent, name)
+
+ self.setGeometry (0, 0, 500, 370)
+ lvLbl = QLabel ("All Service Types", self)
+ lvLbl.setGeometry (10, 10, 250, 20)
+
+ lv = QListView (self)
+ lv.addColumn ("name", 150)
+ lv.addColumn ("desktopEntryPath", 300)
+ lv.setGeometry (10, 30, 500, 300)
+ lv.setAllColumnsShowFocus (1)
+
+ slist = KServiceType.allServiceTypes ()
+
+ for s in slist:
+ lvi = QListViewItem (lv, s.name (), s.desktopEntryPath ())
+
+ lv.show ()
+
+class KSycocaEntryTab (QWidget):
+ def __init__ (self, parent, name = ""):
+ QWidget.__init__ (self, parent, name)
+
+ grp = KServiceGroup.baseGroup ("screensavers")
+ self.setGeometry (0, 0, 500, 370)
+ lvLbl = QLabel ("Entries - 'screensavers': " + grp.name ().latin1 (), self)
+ lvLbl.setGeometry (10, 10, 250, 20)
+
+ lv = QListView (self)
+ lv.addColumn ("name", 150)
+ lv.addColumn ("entryPath", 300)
+ lv.setGeometry (10, 30, 500, 300)
+ lv.setAllColumnsShowFocus (1)
+
+ slist = grp.entries (0, 0)
+
+ for s in slist:
+ lvi = QListViewItem (lv, s.name (), s.entryPath ())
+
+ lv.show ()
+
+class KServiceTab (QWidget):
+ def __init__ (self, parent, name = ""):
+ QWidget.__init__ (self, parent, name)
+
+ self.setGeometry (0, 0, 500, 370)
+ lvLbl = QLabel ("All Services", self)
+ lvLbl.setGeometry (10, 10, 150, 20)
+
+ lv = QListView (self)
+ lv.addColumn ("type_", 75)
+ lv.addColumn ("name", 100)
+ lv.addColumn ("exec_", 200)
+ lv.addColumn ("library", 100)
+ lv.setGeometry (10, 30, 500, 300)
+ lv.setAllColumnsShowFocus (1)
+
+ slist = KService.allServices ()
+ for s in slist:
+ lvi = QListViewItem (lv, s.type_ (), s.name (), s.exec_ (), s.library ())
+
+ lv.show ()
+
+
+# svc = KService.serviceByDesktopName ("kcookiejar")
+# print svc
+# print svc.type_ ()
+# print svc.name ().latin1 ()
+# print svc.exec_ ().latin1 ()
+# print svc.library ()
+
+
+class KMimeTypeTab (QWidget):
+ def __init__ (self, parent, name = ""):
+ QWidget.__init__ (self, parent, name)
+
+ self.setGeometry (0, 0, 500, 370)
+ lbLbl = QLabel ("All Mimetypes", self)
+ lbLbl.setGeometry (10, 10, 150, 20)
+ lb = KListBox (self)
+ lb.setGeometry (10, 30, 200, 300)
+ mlist = KMimeType.allMimeTypes ()
+ lblist = []
+ for mt in mlist:
+ lblist.append (mt.name ().latin1 ())
+
+ lblist.sort ()
+ lb.insertStrList (lblist)
+
+ lb.show ()
+
+ x = 250
+ y = 10
+
+ mt = KMimeType.mimeType ("text/plain")
+ mtlbl = QLabel ("KMimeType.mimeType ('text/plain')", self)
+ mtlbl.setGeometry (x, y, 250, 20)
+ mtnamelbl = QLabel ("name", self)
+ mtnamelbl.setGeometry (x + 15, y + 20, 100, 20)
+ mtname = QLabel (mt.name (), self)
+ mtname.setGeometry (x + 120, y + 20, 100, 20)
+ mtdesklbl = QLabel ("desktopEntryPath", self)
+ mtdesklbl.setGeometry (x + 15, y + 40, 100, 20)
+ mtdesk = QLabel (mt.desktopEntryPath (), self)
+ mtdesk.setGeometry (x + 120, y + 40, 150, 20)
+
+ y = y + 80
+
+ fp = KMimeType.findByPath ("mimetype.py")
+ fplbl = QLabel ("KMimeType.findByPath ('mimetype.py')", self)
+ fplbl.setGeometry (x, y, 250, 20)
+ fpnamelbl = QLabel ("name", self)
+ fpnamelbl.setGeometry (x + 15, y + 20, 100, 20)
+ fpname = QLabel (fp.name (), self)
+ fpname.setGeometry (x + 120, y + 20, 100, 20)
+ fpdesklbl = QLabel ("desktopEntryPath", self)
+ fpdesklbl.setGeometry (x + 15, y + 40, 100, 20)
+ fpdesk = QLabel (fp.desktopEntryPath (), self)
+ fpdesk.setGeometry (x + 120, y + 40, 150, 20)
+
+ y = y + 80
+
+ fu = KMimeType.findByURL (KURL ("file://mimetype.py"))
+ fulbl = QLabel ("KMimeType.findByURL ('file://mimetype.py')", self)
+ fulbl.setGeometry (x, y, 250, 20)
+ funamelbl = QLabel ("name", self)
+ funamelbl.setGeometry (x + 15, y + 20, 100, 20)
+ funame = QLabel (fu.name (), self)
+ funame.setGeometry (x + 120, y + 20, 100, 20)
+ fudesklbl = QLabel ("desktopEntryPath", self)
+ fudesklbl.setGeometry (x + 15, y + 40, 100, 20)
+ fudesk = QLabel (fu.desktopEntryPath (), self)
+ fudesk.setGeometry (x + 120, y + 40, 150, 20)
+
+ y = y + 80
+
+ fc, acc = KMimeType.findByFileContent ("mimetype.py")
+ fclbl = QLabel ("KMimeType.findByFileContent ('mimetype.py')", self)
+ fclbl.setGeometry (x, y, 250, 20)
+ fcnamelbl = QLabel ("name", self)
+ fcnamelbl.setGeometry (x + 15, y + 20, 100, 20)
+ fcname = QLabel (fc.name (), self)
+ fcname.setGeometry (x + 120, y + 20, 100, 20)
+ fcdesklbl = QLabel ("desktopEntryPath", self)
+ fcdesklbl.setGeometry (x + 15, y + 40, 100, 20)
+ fcdesk = QLabel (fc.desktopEntryPath (), self)
+ fcdesk.setGeometry (x + 120, y + 40, 100, 20)
+ fcacclbl = QLabel ("accuracy", self)
+ fcacclbl.setGeometry (x + 15, y + 60, 100, 20)
+ fcacc = QLabel (str (acc), self)
+ fcacc.setGeometry (x + 120, y + 60, 150, 20)
+
+
+
+#-------------------- main ------------------------------------------------
+
+description = "Test/demo KSharedPtr related methods/classes"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 Jim Bublitz")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/examples/pyKHTMLPart.py b/python/pykde/examples/pyKHTMLPart.py
new file mode 100644
index 00000000..7629c115
--- /dev/null
+++ b/python/pykde/examples/pyKHTMLPart.py
@@ -0,0 +1,214 @@
+#
+# pyParts.py (C) 2002 Jim Bublitz <jbublitz@nwinternet.com>
+#
+
+"""
+
+This is an extemely simple and crude example of using
+a KHTMLPart - I put it together mostly to make sure
+the openURL method worked correctly after some modifications
+done in KParts::ReadOnlyPart. It took exactly four lines
+added to a basic PyKDE app framework to display a URL
+via the 'net:
+
+ self.w = KHTMLPart (self, "HTMLPart", self);
+ self.w.openURL (KURL ("http://www.kde.org"));
+ self.w.view ().setGeometry (30, 55, 500, 400);
+ self.w.show ();
+
+(Actually 5 lines if you count the 'import' line)
+
+You can play around with the commented out lines or add
+additional code to make this do something useful. The
+.rc for khtnmlpart (sorry, I never looked it up), doesn't
+seem to provide much help. Also, to follow links, you
+probably need to connect some signals to slots. I
+haven't tried it, but this should work with a plain
+KMainWindow or other widget too.
+
+The KDE website also incorporates gifs, jpegs, and
+I believe CSS too. Playing around with some other
+sites, it appears the font defaults could use some
+improvement.
+
+NOTE!!! For this to work, you (obviously) need to have
+a route to the internet established or specify a local
+URL - PyKDE/KDE will take care of everything else.
+
+Perceptive users will notice the KHTMLPart code is
+lifted from the KDE classref.
+
+"""
+
+# If you import more classes, don't forget to add them here (some of these
+# are extras/not used)
+
+from kdecore import KCmdLineArgs, KURL, KApplication, i18n, KAboutData, BarIcon, KLibLoader
+
+from kdeui import KMainWindow, KMessageBox, KAction, KStdAction, KKeyDialog, KEditToolbar
+
+from qt import QString, QStringList
+
+from kio import KTrader
+
+from khtml import KHTMLPart, KHTMLView
+
+# Importing the KParts namespace gets us all of the KParts:: classes
+from kparts import KParts, createReadOnlyPart, createReadWritePart
+
+import sys, os
+
+FALSE = 0
+TRUE = not FALSE
+
+TOOLBAR_EXIT = 0
+TOOLBAR_OPEN = 1
+
+# Note that we use KParts.MainWindow, not KMainWindow as the superclass
+# (KParts.MainWindow subclasses KMainWindow). Also, be sure the 'apply'
+# clause references KParts.MainWindow - it's a hard bug to track down
+# if it doesn't.
+
+class pyPartsMW (KParts.MainWindow):
+ def __init__ (self, *args):
+ apply (KParts.MainWindow.__init__, (self,) + args)
+
+ # Create the actions for our menu/toolbar to use
+ # Keep in mind that the part loaded will provide its
+ # own menu/toolbar entries
+
+ # check out KParts.MainWindow's ancestry to see where
+ # some of this and later stuff (like self.actionCollection () )
+ # comes from
+
+ quitAction = KStdAction.quit (self.close, self.actionCollection ())
+
+ self.m_toolbarAction = KStdAction.showToolbar(self.optionsShowToolbar, self.actionCollection());
+ self.m_statusbarAction = KStdAction.showStatusbar(self.optionsShowStatusbar, self.actionCollection());
+
+ KStdAction.keyBindings(self.optionsConfigureKeys, self.actionCollection());
+ KStdAction.configureToolbars(self.optionsConfigureToolbars, self.actionCollection());
+
+ self.path = os.getcwd () + '/'
+ self.setGeometry (0, 0, 600, 500)
+
+ # point to our XML file
+ self.setXMLFile (self.path + "pyParts.rc", FALSE)
+
+ # The next few lines are all that's necessary to
+ # create a web browser (of course you have to edit
+ # this file to change url's)
+
+ self.w = KHTMLPart (self, "HTMLPart", self);
+ self.w.openURL (KURL ("http://www.kde.org"));
+
+ self.w.view ().setGeometry (30, 55, 500, 400);
+
+
+# self.v = KHTMLView (self.w, self)
+
+# self.setCentralWidget (self.v)
+
+# self.createGUI (self.w)
+
+ self.w.show ();
+
+
+
+
+ # slots for our actions
+ def optionsShowToolbar (self):
+ if self.m_toolbarAction.isChecked():
+ self.toolBar().show()
+ else:
+ self.toolBar().hide()
+
+ def optionsShowStatusbar (self):
+ if self.m_statusbarAction.isChecked ():
+ self.statusBar().show()
+ else:
+ self.statusBar().hide()
+
+
+ def optionsConfigureKeys (self):
+ KKeyDialog.configureActionKeys (self.actionCollection(), self.xmlFile ())
+
+
+ def optionsConfigureToolbars (self):
+ dlg = KEditToolbar (self.actionCollection(), self.xmlFile ())
+ if dlg.exec_loop ():
+ self.createGUI(self);
+
+
+ # some boilerplate left over from pyKLess/KLess
+ def queryClose(self):
+ res = KMessageBox.warningYesNoCancel(self,\
+ i18n("Save changes to Document?<br>(Does not make sense, we know, but it is just a programming example :-)"))
+ if res == KMessageBox.Yes:
+ #// save document here. If saving fails, return FALSE
+ return TRUE
+
+ elif res == KMessageBox.No:
+ return TRUE
+
+ else: #// cancel
+ return FALSE
+
+ def queryExit(self):
+ #// this slot is invoked in addition when the *last* window is going
+ #// to be closed. We could do some final cleanup here.
+ return TRUE #// accept
+
+ # I'm not sure the session mgmt stuff here works
+
+ # Session management: save data
+ def saveProperties(self, config):
+ # This is provided just as an example.
+ # It is generally not so good to save the raw contents of an application
+ # in its configuration file (as this example does).
+ # It is preferable to save the contents in a file on the application's
+ # data zone and save an URL to it in the configuration resource.
+ config.writeEntry("text", self.edit.text())
+
+
+ # Session management: read data again
+ def readProperties(self, config):
+ # See above
+ self.edit.setText(config.readEntry("text"))
+
+
+
+#------------- main ----------------------------
+
+# A Human readable description of your program
+description = "KHTMLPart - simple example"
+# The version
+version = "0.1"
+
+# stuff for the "About" menu
+aboutData = KAboutData ("pyKHTMLPart", "pyHTMLPart",\
+ version, description, KAboutData.License_GPL,\
+ "(c) 2002, Jim Bublitz")
+
+aboutData.addAuthor ("Jim Bublitz", "Example for PyKDE", "jbublitz@nwinternet.com")
+
+# This MUST go here (before KApplication () is called)
+KCmdLineArgs.init (sys.argv, aboutData)
+
+app = KApplication ()
+
+if (app.isRestored()):
+ RESTORE(KLess)
+else:
+ # no session management: just create one window
+ # this is our KParts::MainWindow derived class
+ parts = pyPartsMW (None, "pyParts")
+ if len(sys.argv) > 1:
+ # read kcmdlineargs.h for the full unabridged instructions
+ # on using KCmdLineArgs, it's pretty confusing at first, but it works
+ # This is pretty useless in this program - you might want to
+ # expand this in your app (to load a file, etc)
+ args = KCmdLineArgs.parsedArgs()
+
+parts.show()
+app.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/HOWTO.samples b/python/pykde/examples/pykde-sampler/HOWTO.samples
new file mode 100644
index 00000000..74180541
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/HOWTO.samples
@@ -0,0 +1,60 @@
+How to Write Samples for the PyKDE Sampler
+==========================================
+
+
+Create or locate a directory within the sampler application root directory.
+
+Add a module.
+
+In side the module, add the following:
+
+- iconName - string (optional)
+ default: 'filenew'
+ example: 'colorize'
+
+ When supplied, this should be the short name of a KDE icon, such as
+ 'stop', 'editclear', etc. If available, This icon will be used as
+ the list item's icon in the sampler. Not all icons are available in
+ all themes, so try to use the icons that are available in the
+ default KDE installation.
+
+
+- labelText - string (optional)
+ default: module name
+ example: 'KMessageBox'
+
+ When supplied, this value is used as the list item text for the
+ sample. If it's not supplied, the application will use the name of
+ the module instead.
+
+
+- docParts - two-tuple (optional)
+ default: None
+ example: ('kdeui', 'KAboutDialog')
+
+ If specified, this sequence should contain two items, first item
+ name of pykde module, second item name of class within the module.
+ These two values are used to form the URL to the documentation for
+ the sample.
+
+
+- one of buildWidget, buildDialog, buildApp, MainFrame - callable (required)
+ default: None
+ example: MainFrame(QFrame): ...
+
+ The sample module must contain a callable with one of these names.
+ The callable must accept a single positional parameter, the parent
+ widget.
+
+ In most cases, it is sufficient to define a subclass of QFrame named
+ 'MainFrame'. To construct a more complex sample, define a function
+ with one of the other names.
+
+ The callable should return (or instatiate) a widget for display in
+ the main sampler widget. The created frame is responsible for
+ displaying it's help text and for any providing any widgets
+ necessary to
+
+
+
+
diff --git a/python/pykde/examples/pykde-sampler/TODO b/python/pykde/examples/pykde-sampler/TODO
new file mode 100644
index 00000000..730cc02c
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/TODO
@@ -0,0 +1,12 @@
+Sampler App
+===========
+
+- Turn off word wrap in the source viewer
+- Add application icon
+- Enable hyperlink signal and slot in doc viewer
+
+
+Samples
+=======
+
+- More samples
diff --git a/python/pykde/examples/pykde-sampler/__init__.py b/python/pykde/examples/pykde-sampler/__init__.py
new file mode 100644
index 00000000..4265cc3e
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/__init__.py
@@ -0,0 +1 @@
+#!/usr/bin/env python
diff --git a/python/pykde/examples/pykde-sampler/about.py b/python/pykde/examples/pykde-sampler/about.py
new file mode 100644
index 00000000..61fdd8a3
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/about.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+""" About the PyKDE Sampler
+
+Defines the 'about' function to create a KAboutData instance for the
+sampler application.
+"""
+from os.path import dirname, join
+from kdecore import KAboutData
+
+
+appName = 'pykdesampler'
+progName = 'PyKDE Sampler'
+authorName = 'Troy Melhase'
+authorEmail = bugsEmailAddress = 'troy@gci.net'
+version = '0.1'
+shortDescription = 'The PyKDE Sampler'
+licenseType = KAboutData.License_GPL_V2
+copyrightStatement = '(c) 2006, %s' % (authorName, )
+homePageAddress = 'http://www.riverbankcomputing.co.uk/pykde/'
+aboutText = ("The application sampler for PyKDE.")
+contributors = [] # module-level global for keeping the strings around; intentional
+
+
+def about():
+ """ creates KAboutData instance for the app
+
+ """
+ about = KAboutData(
+ appName,
+ progName,
+ version,
+ shortDescription,
+ licenseType,
+ copyrightStatement,
+ aboutText,
+ homePageAddress,
+ bugsEmailAddress)
+ about.addAuthor(authorName, '', authorEmail)
+
+ try:
+ contrib = open(join(dirname(__file__), 'contributors.txt'))
+ contrib = [line.strip() for line in contrib]
+ contrib = [line for line in contrib if not line.startswith('#')]
+ for line in contrib:
+ try:
+ name, task, addr = [s.strip() for s in line.split(',')]
+ contributors.append((name, task, addr))
+ except:
+ pass
+ except:
+ pass
+
+ contributors.sort(lambda a, b:cmp(a[0], b[0]))
+ for name, task, addr in contributors:
+ about.addCredit(name, task, addr)
+
+ return about
diff --git a/python/pykde/examples/pykde-sampler/basic_widgets/__init__.py b/python/pykde/examples/pykde-sampler/basic_widgets/__init__.py
new file mode 100644
index 00000000..2442375d
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/basic_widgets/__init__.py
@@ -0,0 +1,17 @@
+labelText = 'Widgets'
+iconName = 'about_kde'
+
+helpText = """KDE provides a large set of basic widgets for application use.
+Select the children of this item to see for yourself."""
+
+from qt import QFrame, QVBoxLayout
+from kdeui import KTextEdit
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = KTextEdit(helpText, '', self)
+ layout.addWidget(self.text, 1)
+ layout.addStretch(1)
diff --git a/python/pykde/examples/pykde-sampler/basic_widgets/datepicker.py b/python/pykde/examples/pykde-sampler/basic_widgets/datepicker.py
new file mode 100644
index 00000000..aa36de52
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/basic_widgets/datepicker.py
@@ -0,0 +1,42 @@
+from qt import QFrame, QStringList, QVBoxLayout, SIGNAL, QLabel, QSizePolicy, Qt
+from qttable import QTable
+from kdeui import KTextEdit, KDatePicker, KDateWidget
+
+
+labelText = 'KDatePicker'
+iconName = 'date'
+helpText = """A date selection widget.
+
+Provides a widget for calendar date input.
+
+Different from the previous versions, it now emits two types of
+signals, either dateSelected() or dateEntered() (see documentation for
+both signals).
+
+A line edit has been added in the newer versions to allow the user to
+select a date directly by entering numbers like 19990101 or 990101.
+"""
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+ self.dateDisplay = KDateWidget(self)
+
+ self.dateDisplay.setSizePolicy(QSizePolicy(QSizePolicy.Maximum,
+ QSizePolicy.Maximum))
+
+ self.datePicker = KDatePicker(self)
+
+ layout = QVBoxLayout(self)
+ layout.addWidget(self.help, 1)
+ layout.addWidget(self.datePicker, 0, Qt.AlignHCenter)
+ layout.addStretch(1)
+
+ self.other = QLabel('Selected Date:', self)
+ layout.addWidget(self.other, 0)
+ layout.addWidget(self.dateDisplay, 2)
+
+ self.connect(self.datePicker, SIGNAL('dateChanged(QDate)'),
+ self.dateDisplay.setDate)
+
diff --git a/python/pykde/examples/pykde-sampler/basic_widgets/historycombo.py b/python/pykde/examples/pykde-sampler/basic_widgets/historycombo.py
new file mode 100644
index 00000000..aa35b53f
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/basic_widgets/historycombo.py
@@ -0,0 +1,53 @@
+from qt import Qt, QFrame, QHBoxLayout, QVBoxLayout, QStringList, QLabel, \
+ SIGNAL, SLOT
+from kdeui import KHistoryCombo, KTextEdit
+
+
+iconName = 'history'
+labelText = 'KHistoryCombo'
+docParts = ('kdeui', 'KHistoryCombo')
+helpText = ('An example of the KHistoryCombo widget.'
+ '\n\n'
+ 'Completion is enabled via the setHistoryItems call; when the second '
+ 'parameter is True, matching items from the list appear as you type.'
+ '\n\n'
+ 'The activated signal is connected to the addToHistory '
+ 'slot to automatically add new items.')
+
+
+historyText = 'a quick brown fox jumps over the lazy dog'
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+ self.historyCombo = KHistoryCombo(self)
+
+ self.historySelectionLabel = QLabel('Selected value: ', self)
+ self.historySelection = QLabel('(none)', self)
+
+ items = QStringList()
+ for item in historyText.split():
+ items.append(item)
+ self.historyCombo.setHistoryItems(items, True)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help, 3)
+ layout.addStretch(1)
+ selectionLayout = QHBoxLayout(layout, 4)
+ selectionLayout.addWidget(self.historySelectionLabel, 1)
+ selectionLayout.addWidget(self.historySelection, 10, Qt.AlignLeft)
+ layout.addWidget(self.historyCombo, 0)
+ layout.addStretch(10)
+
+ self.connect(self.historyCombo, SIGNAL('activated(const QString& )'),
+ self.historyCombo, SLOT('addToHistory(const QString&)'))
+ self.connect(self.historyCombo, SIGNAL('cleared()'),
+ self.historyCleared)
+ self.connect(self.historyCombo, SIGNAL('activated(const QString &)'),
+ self.historySelection.setText)
+
+ def historyCleared(self):
+ print 'History combo cleared.'
+
diff --git a/python/pykde/examples/pykde-sampler/contributors.txt b/python/pykde/examples/pykde-sampler/contributors.txt
new file mode 100644
index 00000000..18b9a81f
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/contributors.txt
@@ -0,0 +1,4 @@
+# author, contributions, email
+Phil Thompson, For PyQt and SIP, phil@riverbankcomputing.co.uk
+Jim Bublitz, For PyKDE, jbublitz@nwinternet.com
+
diff --git a/python/pykde/examples/pykde-sampler/dialogs/__init__.py b/python/pykde/examples/pykde-sampler/dialogs/__init__.py
new file mode 100644
index 00000000..c6f70f9c
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/__init__.py
@@ -0,0 +1,18 @@
+labelText = 'Dialog Boxes'
+iconName = 'launch'
+
+
+helpText = ("KDE provides a convenient set of dialog boxes for application use. "
+ "Select the children of this item to see for yourself.")
+
+
+from qt import QFrame, QVBoxLayout
+from kdeui import KTextEdit
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = KTextEdit(helpText, '', self)
+ layout.addWidget(self.text, 1)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/about/__init__.py b/python/pykde/examples/pykde-sampler/dialogs/about/__init__.py
new file mode 100644
index 00000000..4c40da7b
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/about/__init__.py
@@ -0,0 +1,16 @@
+labelText = 'About Dialogs'
+iconName = 'info'
+
+helpText = ("KDE has multiple dialog types to display information about your "
+"applicaiton and environment. They provide a tremendous amount of functionality "
+"and consistency. They're easy to use, and they're good for the environment!")
+
+from qt import QFrame, QVBoxLayout
+from kdeui import KTextEdit
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = KTextEdit(helpText, '', self)
+ layout.addWidget(self.text, 1)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/about/aboutapp.py b/python/pykde/examples/pykde-sampler/dialogs/about/aboutapp.py
new file mode 100644
index 00000000..afdd71a9
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/about/aboutapp.py
@@ -0,0 +1,29 @@
+iconName = 'about_kde'
+labelText = 'KAboutApplication'
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KAboutApplication, KPushButton, KTextEdit
+
+
+helpText = ("Typically available via the applications 'Help' menu, this "
+ "dialog presents the user with the applications About widget.")
+
+docParts = ('kdeui', 'KAboutDialog')
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('About Application'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showAboutDialog)
+
+ def showAboutDialog(self):
+ dlg = KAboutApplication(self)
+ dlg.show()
diff --git a/python/pykde/examples/pykde-sampler/dialogs/about/aboutkde.py b/python/pykde/examples/pykde-sampler/dialogs/about/aboutkde.py
new file mode 100644
index 00000000..9c73f9d4
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/about/aboutkde.py
@@ -0,0 +1,28 @@
+iconName = 'about_kde'
+labelText = 'KAboutKDE'
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KAboutKDE, KPushButton, KTextEdit
+
+
+helpText = ("Typically available via the applications 'Help' menu, this "
+ "dialog presents the user with the standard KDE About dialog.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('About KDE'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showAboutDialog)
+
+ def showAboutDialog(self):
+ dlg = KAboutKDE(self)
+ dlg.show()
diff --git a/python/pykde/examples/pykde-sampler/dialogs/bugreport.py b/python/pykde/examples/pykde-sampler/dialogs/bugreport.py
new file mode 100644
index 00000000..6c411650
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/bugreport.py
@@ -0,0 +1,34 @@
+iconName = 'core'
+labelText = 'KBugReport'
+
+##~ if we wanted to, we could define the name of a KDE class used for lookup of
+##~ the documentation url. The 'labelText' string above already
+##~ specifies what we want.
+##~ docItemName = 'KBugReport'
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KAboutDialog, KPushButton, KBugReport, KTextEdit
+
+
+helpText = ("KDE provides a way to report bugs from applications. This dialog"
+ "is typically available from the application 'Help' menu.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Bug Report Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showBugDialog)
+
+
+ def showBugDialog(self):
+ dlg = KBugReport(self)
+ dlg.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/dialogs/color.py b/python/pykde/examples/pykde-sampler/dialogs/color.py
new file mode 100644
index 00000000..b749cce4
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/color.py
@@ -0,0 +1,42 @@
+iconName = 'colorize'
+labelText = 'KColorDialog'
+
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KColorDialog, KColorPatch, KTextEdit
+
+
+helpText = ("KDE provides a nifty common color selection dialog."
+ "The color selection in the dialog is tracked via a SIGNAL "
+ "connected to the KColorPatch area below.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Color Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ self.patch = KColorPatch(self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addWidget(self.patch, 10)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showColorDialog)
+
+ def showColorDialog(self):
+ dlg = KColorDialog(self)
+
+ ## this connection is made so that there's a default color
+ self.connect(dlg, SIGNAL('colorSelected(const QColor &)'),
+ self.patch.setPaletteBackgroundColor)
+ dlg.setColor(self.patch.paletteBackgroundColor())
+
+ ## this connection is the one that changes the patch color to match
+ ## the color selected in the dialog
+ self.connect(dlg, SIGNAL('colorSelected(const QColor &)'),
+ self.patch.setColor)
+ dlg.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/dialogs/config.py b/python/pykde/examples/pykde-sampler/dialogs/config.py
new file mode 100644
index 00000000..74454ab0
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/config.py
@@ -0,0 +1,59 @@
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, QTimer, SIGNAL, QString
+from kdecore import i18n, KConfigSkeleton
+from kdeui import KPushButton, KConfigDialog, KTextEdit
+
+iconName = 'configure'
+labelText = 'KConfigDialog'
+docParts = ('kdeui', 'KConfigDialog')
+helpText = ("")
+
+
+class SampleSettings(KConfigSkeleton):
+ def __init__(self):
+ KConfigSkeleton.__init__(self)
+ self.anyString = QString()
+
+ self.setCurrentGroup("Strings")
+ self.addItemString("Test", self.anyString, "Default Value")
+
+ self.setCurrentGroup("Booleans")
+ self.addItemBool("Any Bool", False)
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Config Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showConfigDialog)
+
+
+ def showConfigDialog(self):
+ config = SampleSettings()
+ dlg = KConfigDialog(self, 'Sampler Config', config)
+ self.strings = StringsSettings(self)
+ self.bools = BoolSettings(self)
+ dlg.addPage(self.strings, 'Strings', 'Strings')
+ dlg.addPage(self.bools, 'Bools', 'Bools')
+ dlg.exec_loop()
+
+
+class StringsSettings(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.text = KTextEdit('A String', '', self)
+
+
+class BoolSettings(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.text = KTextEdit('A Bool', '', self)
+
diff --git a/python/pykde/examples/pykde-sampler/dialogs/edfind.py b/python/pykde/examples/pykde-sampler/dialogs/edfind.py
new file mode 100644
index 00000000..685902e0
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/edfind.py
@@ -0,0 +1,52 @@
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, QTimer, SIGNAL, QFont, QString
+from kdecore import i18n
+from kdeui import KPushButton, KEdFind, KTextEdit
+
+iconName = 'find'
+labelText = 'KEdFind'
+docParts = ('kdeui', 'KEdFind')
+helpText = ("An example of the KEdFind dialog.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Edit Find Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showEdFind)
+
+
+ def showEdFind(self):
+ dlg = self.dlg = KEdFind(self)
+ self.connect(dlg, SIGNAL('done()'),
+ self.doneClicked)
+ self.connect(dlg, SIGNAL('search()'),
+ self.searchClicked)
+ dlg.exec_loop()
+
+
+ def doneClicked(self):
+ print 'done searching'
+
+ def searchClicked(self):
+ print 'searching: ', self.dlg.getText(),
+ if self.dlg.get_direction():
+ print '(backwards) ',
+ else:
+ print '(forwards) ',
+ if self.dlg.case_sensitive():
+ print '(case-sensitive)'
+ else:
+ print '(case-insensitive)'
+
+
+
+
diff --git a/python/pykde/examples/pykde-sampler/dialogs/edreplace.py b/python/pykde/examples/pykde-sampler/dialogs/edreplace.py
new file mode 100644
index 00000000..df956141
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/edreplace.py
@@ -0,0 +1,52 @@
+from qt import QFrame, QHBoxLayout, QVBoxLayout, QTimer, SIGNAL, QFont, QString
+from kdecore import i18n
+from kdeui import KPushButton, KEdReplace, KTextEdit
+
+iconName = 'findreplace'
+labelText = 'KEdReplace'
+docParts = ('kdeui', 'KEdReplace')
+helpText = ("An example of the KEdReplace dialog.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Edit Find Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showEdReplace)
+
+
+ def showEdReplace(self):
+ dlg = self.dlg = KEdReplace(self)
+ self.connect(dlg, SIGNAL('done()'),
+ self.doneClicked)
+ self.connect(dlg, SIGNAL('replace()'),
+ self.replaceClicked)
+ dlg.exec_loop()
+
+
+ def doneClicked(self):
+ print 'done replacing'
+
+ def replaceClicked(self):
+ print 'replacing: ', self.dlg.getText()
+ return
+ if self.dlg.get_direction():
+ print '(backwards) ',
+ else:
+ print '(forwards) ',
+ if self.dlg.case_sensitive():
+ print '(case-sensitive)'
+ else:
+ print '(case-insensitive)'
+
+
+
+
diff --git a/python/pykde/examples/pykde-sampler/dialogs/font.py b/python/pykde/examples/pykde-sampler/dialogs/font.py
new file mode 100644
index 00000000..ae2189e5
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/font.py
@@ -0,0 +1,53 @@
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, QTimer, SIGNAL, QFont, QString
+from kdecore import i18n
+from kdeui import KPushButton, KFontDialog, KTextEdit
+
+iconName = 'fonts'
+labelText = 'KFontDialog'
+docParts = ('kdeui', 'KFontDialog')
+helpText = ("KDE provides a font dialog box for users to select (can you "
+ "guess??) fonts. The button below displays a font dialog box. "
+ "The font of this widget (the text widget you're reading) is used "
+ "as the default. If the dialog is accepted, the font of this "
+ "widget is change to match the selection.")
+
+
+fontText = """Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam
+ante. Nam in mauris. Vestibulum ante velit, condimentum vel, congue
+sit amet, lobortis a, dui. Fusce auctor, quam non pretium nonummy, leo
+ante imperdiet libero, id lobortis erat erat quis eros. Pellentesque
+habitant morbi tristique senectus et netus et malesuada fames ac
+turpis egestas. Cras ut metus. Vivamus suscipit, sapien id tempor
+elementum, nunc quam malesuada dolor, sit amet luctus sapien odio vel
+ligula. Integer scelerisque, risus a interdum vestibulum, felis ipsum
+pharetra eros, nec nonummy libero justo quis risus. Vestibulum
+tincidunt, augue vitae suscipit congue, sem dui adipiscing nulla, ut
+nonummy arcu quam ac sem. Nulla in metus. Phasellus neque.
+"""
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Font Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ self.example = KTextEdit(fontText, '', self)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addWidget(self.example, 10)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showFontDialog)
+
+
+ def showFontDialog(self):
+ font = QFont(self.example.font())
+ string = QString()
+ accepted, other = KFontDialog.getFontAndText(font, string, False, self)
+ if accepted:
+ self.example.setFont(font)
+ self.example.setText(string)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/input.py b/python/pykde/examples/pykde-sampler/dialogs/input.py
new file mode 100644
index 00000000..30edc6fb
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/input.py
@@ -0,0 +1,87 @@
+iconName = 'editclear'
+labelText = 'KInputDialog'
+
+from qt import QFrame, QGridLayout, QLabel, QStringList, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KInputDialog, KTextEdit
+
+
+helpText = ("KInputDialog allows the programmer to display a simple dialog to "
+ "request a bit of text, an integer value, a double value, or a "
+ "list item from the user.")
+
+
+class MainFrame(QFrame):
+ items = ['Apples', 'Bananas', 'Mangos', 'Oranges', 'Pears', ]
+
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+
+ layout = QGridLayout(self, 5, 2, 4) # five rows, two cols, four px spacing
+ layout.setRowStretch(0, 10)
+ layout.setColStretch(1, 10)
+ layout.addMultiCellWidget(self.help, 0, 1, 0, 1)
+
+ button = KPushButton(i18n('Get Text'), self)
+ self.connect(button, SIGNAL('clicked()'), self.getText)
+ self.getTextLabel = QLabel('text value', self)
+ layout.addWidget(button, 2, 0)
+ layout.addWidget(self.getTextLabel, 2, 1)
+ layout.setRowStretch(2, 0)
+
+ button = KPushButton(i18n('Get Integer'), self)
+ self.connect(button, SIGNAL('clicked()'), self.getInt)
+ self.getIntLabel = QLabel('0', self)
+ layout.addWidget(self.getIntLabel, 3, 1)
+ layout.addWidget(button, 3, 0)
+ layout.setRowStretch(3, 0)
+
+ button = KPushButton(i18n('Get Double'), self)
+ self.connect(button, SIGNAL('clicked()'), self.getDouble)
+ self.getDoubleLabel = QLabel('0.0', self)
+ layout.addWidget(self.getDoubleLabel, 4, 1)
+ layout.addWidget(button, 4, 0)
+ layout.setRowStretch(4, 0)
+
+ button = KPushButton(i18n('Get Item'), self)
+ self.connect(button, SIGNAL('clicked()'), self.getItem)
+ self.getItemLabel = QLabel(self.items[0], self)
+ layout.addWidget(button, 5, 0)
+ layout.addWidget(self.getItemLabel, 5, 1)
+ layout.setRowStretch(5, 0)
+
+ def getText(self):
+ title = 'KInputDialog.getText Dialog'
+ label = 'Enter some text:'
+ default = self.getTextLabel.text()
+ value, accepted = KInputDialog.getText(title, label, default)
+ if accepted:
+ self.getTextLabel.setText(value)
+
+ def getInt(self):
+ title = 'KInputDialog.getInteger Dialog'
+ label = 'Enter an integer:'
+ default = int('%s' % self.getIntLabel.text())
+ value, accepted = KInputDialog.getInteger(title, label, default)
+ if accepted:
+ self.getIntLabel.setText('%s' % value)
+
+ def getDouble(self):
+ title = 'KInputDialog.getDouble Dialog'
+ label = 'Enter a double:'
+ default = float('%s' % self.getDoubleLabel.text())
+ value, accepted = KInputDialog.getDouble(title, label, default, -10.0, 10.0)
+ if accepted:
+ self.getDoubleLabel.setText('%s' % value)
+
+ def getItem(self):
+ title = 'KInputDialog.getItem Dialog'
+ label = 'Select an item:'
+ current = self.items.index('%s' % self.getItemLabel.text())
+ selections = QStringList()
+ for item in self.items:
+ selections.append(item)
+ value, accepted = KInputDialog.getItem(title, label, selections, current)
+ if accepted:
+ self.getItemLabel.setText('%s' % value)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/key.py b/python/pykde/examples/pykde-sampler/dialogs/key.py
new file mode 100644
index 00000000..4c437da2
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/key.py
@@ -0,0 +1,29 @@
+iconName = 'configure_shortcuts'
+labelText = 'KKeyDialog'
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KKeyDialog, KTextEdit
+
+
+helpText = ("Configuring keystroke shortcuts is simple with KActions and the "
+ "KKeyDialog type. This sample starts the KKeyDialog for the "
+ "sampler application.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Key Configuration Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showKeysDialog)
+
+ def showKeysDialog(self):
+ top = self.topLevelWidget()
+ KKeyDialog.configure(top.actionCollection(), self)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/msgbox.py b/python/pykde/examples/pykde-sampler/dialogs/msgbox.py
new file mode 100644
index 00000000..a0b3c9a3
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/msgbox.py
@@ -0,0 +1,141 @@
+iconName = 'stop'
+labelText = 'KMessageBox'
+
+from random import random
+from traceback import print_exc
+from StringIO import StringIO
+
+from qt import QFrame, QGridLayout, QLabel, QStringList, SIGNAL
+from kdecore import i18n
+from kdeui import KGuiItem, KPushButton, KMessageBox, KTextEdit
+
+
+helpText = ("The KMessageBox Python class wraps the static methods of its C++ "
+ "counterpart. Some of these methods are used below. Refer to the "
+ "docs for KMessageBox for a full list.")
+
+
+class MainFrame(QFrame):
+ msg = 'Do you like food?'
+ caption = 'Simple Question'
+ err = 'Some kind of error happened, but it could be worse!'
+ info = 'Always wash your hands after eating.'
+ items = ['Apples', 'Bananas', 'Cantaloupe', 'Mangos', 'Oranges', 'Pears', ]
+
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ items = QStringList()
+ for item in self.items:
+ items.append(item)
+ self.items = items
+
+ responses = 'Ok Cancel Yes No Continue'.split()
+ responses = [(getattr(KMessageBox, res), res) for res in responses]
+ self.responses = dict(responses)
+
+ self.help = KTextEdit(helpText, '', self)
+
+ layout = QGridLayout(self, 5, 2, 4)
+ layout.setRowStretch(0, 10)
+ layout.setColStretch(1, 10)
+ layout.addMultiCellWidget(self.help, 0, 1, 0, 1)
+
+ button = KPushButton(i18n('Question Yes-No'), self)
+ self.connect(button, SIGNAL('clicked()'), self.questionYesNo)
+ layout.addWidget(button, 2, 0)
+ layout.setRowStretch(2, 0)
+
+ button = KPushButton(i18n('Warning Yes-No-Cancel'), self)
+ self.connect(button, SIGNAL('clicked()'), self.warningYesNoCancel)
+ layout.addWidget(button, 3, 0)
+ layout.setRowStretch(3, 0)
+
+ button = KPushButton(i18n('Warning Continue-Cancel-List'), self)
+ self.connect(button, SIGNAL('clicked()'), self.warningContinueCancelList)
+ layout.addWidget(button, 4, 0)
+ layout.setRowStretch(4, 0)
+
+ button = KPushButton(i18n('Error'), self)
+ self.connect(button, SIGNAL('clicked()'), self.error)
+ layout.addWidget(button, 5, 0)
+ layout.setRowStretch(5, 0)
+
+ button = KPushButton(i18n('Detailed Error'), self)
+ self.connect(button, SIGNAL('clicked()'), self.detailedError)
+ layout.addWidget(button, 6, 0)
+ layout.setRowStretch(6, 0)
+
+ button = KPushButton(i18n('Sorry'), self)
+ self.connect(button, SIGNAL('clicked()'), self.sorry)
+ layout.addWidget(button, 7, 0)
+ layout.setRowStretch(7, 0)
+
+ button = KPushButton(i18n('Detailed Sorry'), self)
+ self.connect(button, SIGNAL('clicked()'), self.detailedSorry)
+ layout.addWidget(button, 8, 0)
+ layout.setRowStretch(8, 0)
+
+ button = KPushButton(i18n('Information'), self)
+ self.connect(button, SIGNAL('clicked()'), self.information)
+ layout.addWidget(button, 9, 0)
+ layout.setRowStretch(9, 0)
+
+ button = KPushButton(i18n('Information List'), self)
+ self.connect(button, SIGNAL('clicked()'), self.informationList)
+ layout.addWidget(button, 10, 0)
+ layout.setRowStretch(10, 0)
+
+ def questionYesNo(self):
+ dlg = KMessageBox.questionYesNo(self, self.msg, self.caption)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def warningYesNoCancel(self):
+ dlg = KMessageBox.warningYesNoCancel(self, self.msg, self.caption)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def warningContinueCancelList(self):
+ uiitem = KGuiItem('Time to Eat', 'favorites')
+ ctor = KMessageBox.warningContinueCancelList
+ dlgid = '%s' % random()
+ args = self, self.msg, self.items, self.caption, uiitem, dlgid
+ dlg = ctor(*args)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def error(self):
+ dlg = KMessageBox.error(self, self.err)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def detailedError(self):
+ try:
+ x = self.thisAttributeDoesNotExist
+ except (AttributeError, ), ex:
+ handle = StringIO()
+ print_exc(0, handle)
+ details = handle.getvalue()
+ dlg = KMessageBox.detailedError(self, self.err, details)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def sorry(self):
+ dlg = KMessageBox.sorry(self, self.err)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def detailedSorry(self):
+ try:
+ x = self.thisAttributeDoesNotExist
+ except (AttributeError, ), ex:
+ handle = StringIO()
+ print_exc(0, handle)
+ details = handle.getvalue()
+ dlg = KMessageBox.detailedSorry(self, self.err, details)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def information(self):
+ dlgid = '%s' % random()
+ dlg = KMessageBox.information(self, self.info, '', dlgid)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
+
+ def informationList(self):
+ dlgid = '%s' % random()
+ ctor = KMessageBox.informationList
+ dlg = ctor(self, self.info, self.items, '', dlgid)
+ print 'You pressed "%s"' % (self.responses.get(dlg, dlg), )
diff --git a/python/pykde/examples/pykde-sampler/dialogs/passwd.py b/python/pykde/examples/pykde-sampler/dialogs/passwd.py
new file mode 100644
index 00000000..554093b9
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/passwd.py
@@ -0,0 +1,34 @@
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KPasswordDialog, KTextEdit
+
+iconName = 'password'
+labelText = 'KPasswordDialog'
+docParts = ('kdeui', 'KPasswordDialog')
+helpText = ("KDE provides two variations on the password dialog. The simple "
+ "one shown here prompts for a password. The other type allows the "
+ "user to enter a new password, and provides a second field to "
+ "confirm the first entry.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Password Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showPasswordDialog)
+
+
+ def showPasswordDialog(self):
+ old = 'foo bar baz'
+ prompt = "Enter your super-secret password (enter anything, it's just an example):"
+ result = KPasswordDialog.getPassword(old, prompt)
+ if result == KPasswordDialog.Accepted:
+ pass
+
diff --git a/python/pykde/examples/pykde-sampler/dialogs/progress.py b/python/pykde/examples/pykde-sampler/dialogs/progress.py
new file mode 100644
index 00000000..ba85b8eb
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/progress.py
@@ -0,0 +1,39 @@
+iconName = 'go'
+labelText = 'KProgressDialog'
+
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, QTimer, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KProgressDialog, KTextEdit
+
+
+helpText = """KDE provides a ready-built dialog to display a bit of text and a
+progress bar."""
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Progress Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showProgressDialog)
+
+ def showProgressDialog(self):
+ self.dlg = dlg = KProgressDialog(self, None, 'Sample Progress Dialog',
+ helpText)
+ dlg.progressBar().setTotalSteps(20)
+ dlg.progressBar().setFormat('% complete: %p - value: %v - maximum: %m')
+ timer = QTimer(self)
+ self.connect(timer, SIGNAL('timeout()'), self.updateProgress)
+ timer.start(250, False)
+ dlg.exec_loop()
+ timer.stop()
+
+ def updateProgress(self):
+ self.dlg.progressBar().advance(1)
diff --git a/python/pykde/examples/pykde-sampler/dialogs/tip.py b/python/pykde/examples/pykde-sampler/dialogs/tip.py
new file mode 100644
index 00000000..29ac66b7
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/tip.py
@@ -0,0 +1,31 @@
+iconName = 'idea'
+labelText = 'KTipDialog'
+
+import os
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KPushButton, KTipDatabase, KTipDialog, KTextEdit
+
+
+helpText = ("The KDE standard Tip-of-the-Day dialog.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Tip-of-the-Day Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showTipDialog)
+
+ def showTipDialog(self):
+ filename = os.path.abspath(os.path.join(os.path.dirname(__file__), 'tips'))
+ tips = KTipDatabase(filename)
+ dlg = KTipDialog(tips, self)
+ dlg.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/dialogs/tips b/python/pykde/examples/pykde-sampler/dialogs/tips
new file mode 100644
index 00000000..9f24457a
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/dialogs/tips
@@ -0,0 +1,24 @@
+
+<tip category="PyKDE Sampler|General">
+<html>
+<p>Don't tug on Superman's cape.</p>
+</html>
+</tip>
+
+<tip category="PyKDE Sampler|General">
+<html>
+<p>Don't spit into the wind.</p>
+</html>
+</tip>
+
+<tip category="PyKDE Sampler|General">
+<html>
+<p>Don't pull the mask off the Lone Ranger.</p>
+</html>
+</tip>
+
+<tip category="PyKDE Sampler|General">
+<html>
+<p>And don't mess around with <em>Jim</em>!</p>
+</html>
+</tip>
diff --git a/python/pykde/examples/pykde-sampler/gen_todo.py b/python/pykde/examples/pykde-sampler/gen_todo.py
new file mode 100644
index 00000000..02d73dec
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/gen_todo.py
@@ -0,0 +1,19 @@
+mods = ['dcop', 'kdecore', 'kdefx', 'kdeprint', 'kdesu', 'kdeui', 'kfile', 'khtml', 'kio', 'kmdi', 'kparts', 'kspell', ]
+all = []
+
+
+print 'Module,Item,Path,Contributor'
+for mod in mods:
+ module = __import__(mod)
+ items = dir(module)
+ items.sort()
+ items = [item for item in items if not item.startswith('_')]
+ items = [item for item in items if not item in all]
+
+ for item in items:
+ all.append(item)
+ print '%s,%s,,,' % (mod, item, )
+
+
+
+
diff --git a/python/pykde/examples/pykde-sampler/icon_handling/__init__.py b/python/pykde/examples/pykde-sampler/icon_handling/__init__.py
new file mode 100644
index 00000000..f25a8f09
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/icon_handling/__init__.py
@@ -0,0 +1,18 @@
+labelText = 'Icons'
+iconName = 'icons'
+
+
+helpText = ("KDE icons are nice. "
+ "Select the children of this item to see for yourself.")
+
+
+from qt import QFrame, QVBoxLayout
+from kdeui import KTextEdit
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = KTextEdit(helpText, '', self)
+ layout.addWidget(self.text, 1)
diff --git a/python/pykde/examples/pykde-sampler/icon_handling/misc.py b/python/pykde/examples/pykde-sampler/icon_handling/misc.py
new file mode 100644
index 00000000..4c7f4259
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/icon_handling/misc.py
@@ -0,0 +1,31 @@
+
+iconName = 'icons'
+labelText = 'Misc.'
+
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL, QPoint
+from kdecore import i18n
+from kdeui import KAboutDialog, KPushButton, KBugReport, KTextEdit
+from kdeui import KRootPermsIcon, KWritePermsIcon
+
+
+helpText = ("Samples for the KRootPermsIcon and KWritePermsIcon classes."
+ "These icons don't do anything.")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+
+ layout = QVBoxLayout(self, 4)
+ layout.setAutoAdd(True)
+
+ self.help = KTextEdit(helpText, '', self)
+ self.root = KRootPermsIcon(None)
+ self.root.reparent(self, 0, QPoint(0,0), True)
+
+ import os
+ fn = os.path.abspath('.')
+ print fn
+ self.write = KWritePermsIcon(fn)
+ self.write.reparent(self, 0, QPoint(0,0), True)
diff --git a/python/pykde/examples/pykde-sampler/icon_handling/sizes.py b/python/pykde/examples/pykde-sampler/icon_handling/sizes.py
new file mode 100644
index 00000000..b3f5e1c2
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/icon_handling/sizes.py
@@ -0,0 +1,30 @@
+
+iconName = 'icons'
+labelText = 'Icon Sizing'
+
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdecore import i18n
+from kdeui import KAboutDialog, KPushButton, KBugReport, KTextEdit
+
+
+helpText = ("")
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Bug Report Dialog'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showBugDialog)
+
+
+ def showBugDialog(self):
+ dlg = KBugReport(self)
+ dlg.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/lib.py b/python/pykde/examples/pykde-sampler/lib.py
new file mode 100644
index 00000000..875ae1ab
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/lib.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+"""
+
+"""
+import os
+import sys
+
+from os import listdir, walk
+from os.path import dirname, isdir, abspath, split, join, exists
+
+
+samplerpath = dirname(abspath(__file__))
+packagepath, packagename = split(samplerpath)
+
+samplerpath += os.path.sep
+packagepath += os.path.sep
+
+
+def namedimport(name):
+ """ import a module given a dotted package name
+
+ Taken directly from the Python library docs for __import __
+ """
+ mod = __import__(name)
+ components = name.split('.')
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
+
+def ispackage(path):
+ return isdir(path) and exists(join(path, '__init__.py'))
+
+
+def ismodule(path):
+ head, tail = os.path.split(path)
+ if tail in ('__init__.py', '__init__.pyc', '__init__.pyo'):
+ return False
+ head, tail = os.path.splitext(path)
+ return tail in ('.py', ) # don't use these, which filters them out dupes ( '.pyc', '.pyo')
+
+
+def listimports(top):
+ top = abspath(top)
+ yield top
+ for path in listdir(top):
+ path = join(top, path)
+ if ispackage(path):
+ yield path
+ for subpath in listimports(path):
+ yield subpath
+ elif ismodule(path):
+ yield path
+
+
+def listmodules():
+ if samplerpath not in sys.path:
+ sys.path.append(samplerpath)
+
+ dirs = [join(samplerpath, d) for d in listdir(samplerpath)]
+ dirs = [d for d in dirs if exists(join(d, '__init__.py'))]
+
+ modules = []
+ for dirname in dirs:
+ dirpath = join(samplerpath, dirname)
+ for path in listimports(dirpath):
+ path = path.replace('.py', '')
+ path = path.replace(samplerpath, '').replace(os.path.sep, '.')
+ try:
+ module = namedimport(path)
+ except (ValueError, ImportError, ), exc:
+ print 'Exception %s importing %s' % (exc, path, )
+ else:
+ modules.append((path, module))
+ modules.sort()
+ return [(path, SamplerModule(module)) for path, module in modules]
+
+
+class SamplerModule(object):
+ defaultIcon = 'filenew'
+
+
+ def __init__(self, module):
+ self.module = module
+
+
+ def name(self):
+ return self.module.__name__.split('.')[-1]
+
+
+ def labelText(self):
+ return getattr(self.module, 'labelText', self.name())
+
+
+ def icon(self):
+ return getattr(self.module, 'iconName', self.defaultIcon)
+
+
+ def builder(self):
+ for name in ('buildWidget', 'buildDialog', 'buildApp', 'MainFrame'):
+ try:
+ return getattr(self.module, name)
+ except (AttributeError, ):
+ pass
+ raise AttributeError('No builder found')
diff --git a/python/pykde/examples/pykde-sampler/misc/__init__.py b/python/pykde/examples/pykde-sampler/misc/__init__.py
new file mode 100644
index 00000000..b0c92086
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/misc/__init__.py
@@ -0,0 +1,16 @@
+labelText = 'Misc'
+iconName = 'misc'
+
+
+helpText = ("")
+
+from qt import QFrame, QVBoxLayout
+from kdeui import KTextEdit
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = KTextEdit(helpText, '', self)
+ layout.addWidget(self.text, 1)
diff --git a/python/pykde/examples/pykde-sampler/misc/gradientselect.py b/python/pykde/examples/pykde-sampler/misc/gradientselect.py
new file mode 100644
index 00000000..724dd52f
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/misc/gradientselect.py
@@ -0,0 +1,51 @@
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL, QColor, QSizePolicy, QLabel
+from kdecore import i18n
+from kdeui import KPushButton, KGradientSelector, KTextEdit, KDualColorButton, KColorPatch
+
+iconName = 'colors'
+labelText = 'KGradientSelector'
+docParts = ('kdeui', 'KGradientSelector')
+helpText = ("An example of the KGradientSelector widget."
+ "\n"
+ "Change the start and finish colors with the dual color button."
+ )
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+ self.selector = KGradientSelector(self)
+ self.dualLabel = QLabel('Select Colors:', self)
+
+ self.startColor = QColor('red')
+ self.finishColor = QColor('blue')
+
+ self.selector.setColors(self.startColor, self.finishColor)
+ self.selector.setText('Start', 'Finish')
+
+ self.dualButton = KDualColorButton(self.startColor, self.finishColor, self)
+ self.dualButton.setSizePolicy(QSizePolicy(QSizePolicy.Maximum,
+ QSizePolicy.Maximum))
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help, 20)
+
+ buttonLayout = QHBoxLayout(layout, 4)
+ buttonLayout.addWidget(self.dualLabel, 0)
+ buttonLayout.addWidget(self.dualButton, 1)
+
+ layout.addWidget(self.selector, 10)
+
+
+ self.connect(self.dualButton, SIGNAL('fgChanged(const QColor &)'),
+ self.selector.setFirstColor)
+ self.connect(self.dualButton, SIGNAL('bgChanged(const QColor &)'),
+ self.selector.setSecondColor)
+ self.connect(self.selector, SIGNAL('valueChanged(int)'),
+ self.updateValue)
+
+
+ def updateValue(self, value):
+ ## this should be extended to update a color swatch
+ pass
diff --git a/python/pykde/examples/pykde-sampler/misc/passivepop.py b/python/pykde/examples/pykde-sampler/misc/passivepop.py
new file mode 100644
index 00000000..81d383af
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/misc/passivepop.py
@@ -0,0 +1,43 @@
+from qt import Qt, QFrame, QHBoxLayout, QVBoxLayout, QLabel, SIGNAL
+from kdeui import KPassivePopup, KTextEdit, KPushButton
+from kdecore import KGlobal, KIcon
+
+iconName = 'popup'
+labelText = 'KPassivePopup'
+docParts = ('kdeui', 'KPassivePopup')
+helpText = ('Examples of the KPassivePopup widget.')
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+ self.button = KPushButton('Show Passive Popups', self)
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help, 10)
+ buttonLayout = QHBoxLayout(layout, 4)
+ buttonLayout.addWidget(self.button, 1)
+ buttonLayout.addStretch(10)
+ layout.addStretch(10)
+
+
+ self.connect(self.button, SIGNAL('clicked()'), self.showPopups)
+
+
+ def showPopups(self):
+ ## no support for all of the 3.5 calls
+ pop = KPassivePopup.message('Hello, <i>KPassivePopup</i>', self)
+ pop.setTimeout(3000)
+ pop.show()
+
+
+ pos = pop.pos()
+ pos.setY(pos.y() + pop.height() + 10)
+
+ ico = KGlobal.instance().iconLoader().loadIcon('help', KIcon.NoGroup,
+ KIcon.SizeSmall)
+ pop = KPassivePopup.message('<b>Hello</b>', 'With Icons', ico, self)
+ pop.setTimeout(3000)
+ pop.show()
+ pop.move(pos)
diff --git a/python/pykde/examples/pykde-sampler/misc/window_info.py b/python/pykde/examples/pykde-sampler/misc/window_info.py
new file mode 100644
index 00000000..08bff224
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/misc/window_info.py
@@ -0,0 +1,35 @@
+
+
+
+from qt import QFrame, QHBoxLayout, QVBoxLayout, SIGNAL
+from kdeui import KWindowInfo, KPushButton, KTextEdit
+from kdecore import i18n, KApplication
+
+iconName = 'misc'
+labelText = 'KWindowInfo'
+helpText = ''
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent):
+ QFrame.__init__(self, parent)
+ self.button = KPushButton(i18n('Show Message'), self)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ buttonlayout = QHBoxLayout(layout, 4)
+ buttonlayout.addWidget(self.button)
+ buttonlayout.addStretch(1)
+ layout.addStretch(1)
+ self.connect(self.button, SIGNAL('clicked()'), self.showWindowInfo)
+
+
+ def showWindowInfo(self):
+ main = KApplication.kApplication()
+ print main
+ print main.mainWidget()
+
+ info = KWindowInfo(main)
+ info.message('Updated Window Info', 3)
+
+
diff --git a/python/pykde/examples/pykde-sampler/qt_widgets/CONTRIB b/python/pykde/examples/pykde-sampler/qt_widgets/CONTRIB
new file mode 100644
index 00000000..e814d1ec
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/qt_widgets/CONTRIB
@@ -0,0 +1,537 @@
+Module,Item,Path,Contributor
+dcop,DCOPClient,,,
+dcop,DCOPClientTransaction,,,
+dcop,DCOPObject,,,
+dcop,DCOPObjectProxy,,,
+dcop,DCOPRef,,,
+dcop,DCOPReply,,,
+dcop,DCOPStub,,,
+kdecore,BarIcon,,,
+kdecore,BarIconSet,,,
+kdecore,DesktopIcon,,,
+kdecore,DesktopIconSet,,,
+kdecore,IconSize,,,
+kdecore,KAboutData,,,
+kdecore,KAboutPerson,,,
+kdecore,KAboutTranslator,,,
+kdecore,KAccel,,,
+kdecore,KAccelAction,,,
+kdecore,KAccelActions,,,
+kdecore,KAccelBase,,,
+kdecore,KAccelShortcutList,,,
+kdecore,KApplication,,,
+kdecore,KAsyncIO,,,
+kdecore,KAudioPlayer,,,
+kdecore,KBufferedIO,,,
+kdecore,KCalendarSystem,,,
+kdecore,KCalendarSystemFactory,,,
+kdecore,KCatalogue,,,
+kdecore,KCharsets,,,
+kdecore,KClipboardSynchronizer,,,
+kdecore,KCmdLineArgs,,,
+kdecore,KCmdLineOptions,,,
+kdecore,KCodecs,,,
+kdecore,KCompletion,,,
+kdecore,KCompletionBase,,,
+kdecore,KConfig,,,
+kdecore,KConfigBackEnd,,,
+kdecore,KConfigBase,,,
+kdecore,KConfigDialogManager,,,
+kdecore,KConfigGroup,,,
+kdecore,KConfigGroupSaver,,,
+kdecore,KConfigINIBackEnd,,,
+kdecore,KConfigSkeleton,,,
+kdecore,KConfigSkeletonItem,,,
+kdecore,KCrash,,,
+kdecore,KDCOPPropertyProxy,,,
+kdecore,KDE,,,
+kdecore,KDesktopFile,,,
+kdecore,KEntry,,,
+kdecore,KEntryKey,,,
+kdecore,KGlobal,,,
+kdecore,KGlobalAccel,,,
+kdecore,KGlobalSettings,,,
+kdecore,KIDNA,,,
+kdecore,KIPC,,,
+kdecore,KIcon,,,
+kdecore,KIconEffect,,,
+kdecore,KIconLoader,,,
+kdecore,KIconTheme,,,
+kdecore,KInstance,,,
+kdecore,KKey,,,
+kdecore,KKeyNative,,,
+kdecore,KKeySequence,,,
+kdecore,KKeyServer,,,
+kdecore,KLibFactory,,,
+kdecore,KLibLoader,,,
+kdecore,KLibrary,,,
+kdecore,KLocale,,,
+kdecore,KMD5,,,
+kdecore,KMacroExpander,,,
+kdecore,KMacroExpanderBase,,,
+kdecore,KMimeSourceFactory,,,
+kdecore,KMountPoint,,,
+kdecore,KMultipleDrag,,,
+kdecore,KNotifyClient,,,
+kdecore,KPalette,,,
+kdecore,KPixmapProvider,,,
+kdecore,KProcIO,,,
+kdecore,KProcess,,,
+kdecore,KProcessController,,,
+kdecore,KPty,,,
+kdecore,KRFCDate,,,
+kdecore,KRandomSequence,,,
+kdecore,KRegExp,,,
+kdecore,KRootProp,,,
+kdecore,KSaveFile,,,
+kdecore,KSelectionOwner,,,
+kdecore,KSelectionWatcher,,,
+kdecore,KServerSocket,,,
+kdecore,KSessionManaged,,,
+kdecore,KShared,,,
+kdecore,KSharedConfig,,,
+kdecore,KShell,,,
+kdecore,KShellProcess,,,
+kdecore,KShortcut,,,
+kdecore,KShortcutList,,,
+kdecore,KSimpleConfig,,,
+kdecore,KSocket,,,
+kdecore,KStandardDirs,,,
+kdecore,KStartupInfo,,,
+kdecore,KStartupInfoData,,,
+kdecore,KStartupInfoId,,,
+kdecore,KStaticDeleterBase,,,
+kdecore,KStdAccel,,,
+kdecore,KStringHandler,,,
+kdecore,KTempDir,,,
+kdecore,KTempFile,,,
+kdecore,KURL,,,
+kdecore,KURLDrag,,,
+kdecore,KUniqueApplication,,,
+kdecore,KWin,,,
+kdecore,KWinModule,,,
+kdecore,KZoneAllocator,,,
+kdecore,MainBarIcon,,,
+kdecore,MainBarIconSet,,,
+kdecore,NET,,,
+kdecore,NETIcon,,,
+kdecore,NETPoint,,,
+kdecore,NETRect,,,
+kdecore,NETRootInfo,,,
+kdecore,NETRootInfo2,,,
+kdecore,NETSize,,,
+kdecore,NETStrut,,,
+kdecore,NETWinInfo,,,
+kdecore,SmallIcon,,,
+kdecore,SmallIconSet,,,
+kdecore,UserIcon,,,
+kdecore,UserIconSet,,,
+kdecore,i18n,,,
+kdecore,locate,,,
+kdecore,locateLocal,,,
+kdecore,testKEntryMap,,,
+kdecore,urlcmp,,,
+kdefx,KCPUInfo,,,
+kdefx,KImageEffect,,,
+kdefx,KPixmap,,,
+kdefx,KPixmapEffect,,,
+kdefx,KPixmapSplitter,,,
+kdefx,KStyle,,,
+kdefx,kColorBitmaps,,,
+kdefx,kDrawBeButton,,,
+kdefx,kDrawNextButton,,,
+kdefx,kDrawRoundButton,,,
+kdefx,kDrawRoundMask,,,
+kdefx,kRoundMaskRegion,,,
+kdeprint,DrBase,,,
+kdeprint,DrBooleanOption,,,
+kdeprint,DrChoiceGroup,,,
+kdeprint,DrConstraint,,,
+kdeprint,DrFloatOption,,,
+kdeprint,DrGroup,,,
+kdeprint,DrIntegerOption,,,
+kdeprint,DrListOption,,,
+kdeprint,DrMain,,,
+kdeprint,DrPageSize,,,
+kdeprint,DrStringOption,,,
+kdeprint,KMJob,,,
+kdeprint,KMJobManager,,,
+kdeprint,KMManager,,,
+kdeprint,KMObject,,,
+kdeprint,KMPrinter,,,
+kdeprint,KPReloadObject,,,
+kdeprint,KPrintAction,,,
+kdeprint,KPrintDialog,,,
+kdeprint,KPrintDialogPage,,,
+kdeprint,KPrinter,,,
+kdeprint,pageNameToPageSize,,,
+kdeprint,pageSizeToPageName,,,
+kdeprint,rangeToSize,,,
+kdesu,KCookie,,,
+kdesu,KDEsuClient,,,
+kdesu,PTY,,,
+kdesu,PtyProcess,,,
+kdesu,SshProcess,,,
+kdesu,StubProcess,,,
+kdesu,SuProcess,,,
+kdeui,KAboutApplication,,,
+kdeui,KAboutContainer,,,
+kdeui,KAboutContributor,,,
+kdeui,KAboutDialog,,,
+kdeui,KAboutKDE,,,
+kdeui,KAboutWidget,,,
+kdeui,KAction,,,
+kdeui,KActionCollection,,,
+kdeui,KActionMenu,,,
+kdeui,KActionPtrShortcutList,,,
+kdeui,KActionSeparator,,,
+kdeui,KActionShortcutList,,,
+kdeui,KActiveLabel,,,
+kdeui,KAnimWidget,,,
+kdeui,KArrowButton,,,
+kdeui,KAuthIcon,,,
+kdeui,KBugReport,,,
+kdeui,KButtonBox,,,
+kdeui,KCModule,,,
+kdeui,KCharSelect,,,
+kdeui,KCharSelectTable,,,
+kdeui,KColor,,,
+kdeui,KColorButton,,,
+kdeui,KColorCells,,,
+kdeui,KColorCombo,,,
+kdeui,KColorDialog,,,
+kdeui,KColorDrag,,,
+kdeui,KColorPatch,,,
+kdeui,KComboBox,,,
+kdeui,KCommand,,,
+kdeui,KCommandHistory,,,
+kdeui,KCompletionBox,,,
+kdeui,KConfigDialog,,,
+kdeui,KContextMenuManager,,,
+kdeui,KCursor,,,
+kdeui,KDCOPActionProxy,,,
+kdeui,KDateInternalMonthPicker,,,
+kdeui,KDateInternalWeekSelector,,,
+kdeui,KDateInternalYearSelector,,,
+kdeui,KDatePicker,,,
+kdeui,KDateTable,,,
+kdeui,KDateTimeWidget,,,
+kdeui,KDateValidator,,,
+kdeui,KDateWidget,,,
+kdeui,KDialog,,,
+kdeui,KDialogBase,,,
+kdeui,KDialogQueue,,,
+kdeui,KDockArea,,,
+kdeui,KDockMainWindow,,,
+kdeui,KDockManager,,,
+kdeui,KDockTabGroup,,,
+kdeui,KDockWidget,,,
+kdeui,KDockWidgetAbstractHeader,,,
+kdeui,KDockWidgetAbstractHeaderDrag,,,
+kdeui,KDockWidgetHeader,,,
+kdeui,KDockWidgetHeaderDrag,,,
+kdeui,KDockWindow,,,
+kdeui,KDoubleNumInput,,,
+kdeui,KDoubleSpinBox,,,
+kdeui,KDoubleValidator,,,
+kdeui,KDualColorButton,,,
+kdeui,KEdFind,,,
+kdeui,KEdGotoLine,,,
+kdeui,KEdReplace,,,
+kdeui,KEdit,,,
+kdeui,KEditListBox,,,
+kdeui,KEditToolbar,,,
+kdeui,KEditToolbarWidget,,,
+kdeui,KFloatValidator,,,
+kdeui,KFontAction,,,
+kdeui,KFontChooser,,,
+kdeui,KFontCombo,,,
+kdeui,KFontDialog,,,
+kdeui,KFontRequester,,,
+kdeui,KFontSizeAction,,,
+kdeui,KGradientSelector,,,
+kdeui,KGuiItem,,,
+kdeui,KHSSelector,,,
+kdeui,KHelpMenu,,,
+kdeui,KHistoryCombo,,,
+kdeui,KIconView,,,
+kdeui,KIconViewItem,,,
+kdeui,KInputDialog,,,
+kdeui,KIntNumInput,,,
+kdeui,KIntSpinBox,,,
+kdeui,KIntValidator,,,
+kdeui,KJanusWidget,,,
+kdeui,KKeyButton,,,
+kdeui,KKeyChooser,,,
+kdeui,KKeyDialog,,,
+kdeui,KLed,,,
+kdeui,KLineEdit,,,
+kdeui,KLineEditDlg,,,
+kdeui,KListAction,,,
+kdeui,KListBox,,,
+kdeui,KListView,,,
+kdeui,KListViewItem,,,
+kdeui,KMacroCommand,,,
+kdeui,KMainWindow,,,
+kdeui,KMainWindowInterface,,,
+kdeui,KMenuBar,,,
+kdeui,KMessageBox,,,
+kdeui,KMimeTypeValidator,,,
+kdeui,KNamedCommand,,,
+kdeui,KNumInput,,,
+kdeui,KPaletteTable,,,
+kdeui,KPanelAppMenu,,,
+kdeui,KPanelApplet,,,
+kdeui,KPanelExtension,,,
+kdeui,KPanelMenu,,,
+kdeui,KPassivePopup,,,
+kdeui,KPasswordDialog,,,
+kdeui,KPasswordEdit,,,
+kdeui,KPasteTextAction,,,
+kdeui,KPixmapIO,,,
+kdeui,KPopupFrame,,,
+kdeui,KPopupMenu,,,
+kdeui,KPopupTitle,,,
+kdeui,KProgress,,,
+kdeui,KProgressDialog,,,
+kdeui,KPushButton,,,
+kdeui,KRadioAction,,,
+kdeui,KRecentFilesAction,,,
+kdeui,KRestrictedLine,,,
+kdeui,KRootPermsIcon,,,
+kdeui,KRootPixmap,,,
+kdeui,KRuler,,,
+kdeui,KSelectAction,,,
+kdeui,KSelector,,,
+kdeui,KSeparator,,,
+kdeui,KSplashScreen,,,
+kdeui,KSqueezedTextLabel,,,
+kdeui,KStatusBar,,,
+kdeui,KStatusBarLabel,,,
+kdeui,KStdAction,,,
+kdeui,KStdGuiItem,,,
+kdeui,KStringListValidator,,,
+kdeui,KSystemTray,,,
+kdeui,KTabBar,,,
+kdeui,KTabCtl,,,
+kdeui,KTabWidget,,,
+kdeui,KTextBrowser,,,
+kdeui,KTextEdit,,,
+kdeui,KTimeWidget,,,
+kdeui,KTipDatabase,,,
+kdeui,KTipDialog,,,
+kdeui,KToggleAction,,,
+kdeui,KToggleFullScreenAction,,,
+kdeui,KToggleToolBarAction,,,
+kdeui,KToolBar,,,
+kdeui,KToolBarButton,,,
+kdeui,KToolBarPopupAction,,,
+kdeui,KToolBarRadioGroup,,,
+kdeui,KToolBarSeparator,,,
+kdeui,KURLLabel,,,
+kdeui,KValueSelector,,,
+kdeui,KWidgetAction,,,
+kdeui,KWindowInfo,,,
+kdeui,KWindowListMenu,,,
+kdeui,KWizard,,,
+kdeui,KWordWrap,,,
+kdeui,KWritePermsIcon,,,
+kdeui,KXMLGUIBuilder,,,
+kdeui,KXMLGUIClient,,,
+kdeui,KXMLGUIFactory,,,
+kdeui,KXYSelector,,,
+kdeui,QXEmbed,,,
+kdeui,testKActionList,,,
+kfile,KApplicationPropsPlugin,,,
+kfile,KBindingPropsPlugin,,,
+kfile,KCombiView,,,
+kfile,KCustomMenuEditor,,,
+kfile,KDesktopPropsPlugin,,,
+kfile,KDevicePropsPlugin,,,
+kfile,KDirOperator,,,
+kfile,KDirSelectDialog,,,
+kfile,KDirSize,,,
+kfile,KDiskFreeSp,,,
+kfile,KEncodingFileDialog,,,
+kfile,KExecPropsPlugin,,,
+kfile,KFile,,,
+kfile,KFileDetailView,,,
+kfile,KFileDialog,,,
+kfile,KFileFilterCombo,,,
+kfile,KFileIconView,,,
+kfile,KFileIconViewItem,,,
+kfile,KFileListViewItem,,,
+kfile,KFileOpenWithHandler,,,
+kfile,KFilePermissionsPropsPlugin,,,
+kfile,KFilePreview,,,
+kfile,KFilePropsPlugin,,,
+kfile,KFileSharePropsPlugin,,,
+kfile,KFileTreeBranch,,,
+kfile,KFileTreeView,,,
+kfile,KFileTreeViewItem,,,
+kfile,KFileTreeViewToolTip,,,
+kfile,KFileView,,,
+kfile,KFileViewSignaler,,,
+kfile,KIconButton,,,
+kfile,KIconCanvas,,,
+kfile,KIconDialog,,,
+kfile,KImageFilePreview,,,
+kfile,KNotify,,,
+kfile,KNotifyDialog,,,
+kfile,KOpenWithDlg,,,
+kfile,KPreviewWidgetBase,,,
+kfile,KPropertiesDialog,,,
+kfile,KPropsDlgPlugin,,,
+kfile,KRecentDocument,,,
+kfile,KURLBar,,,
+kfile,KURLBarItem,,,
+kfile,KURLBarItemDialog,,,
+kfile,KURLBarListBox,,,
+kfile,KURLComboBox,,,
+kfile,KURLComboRequester,,,
+kfile,KURLPropsPlugin,,,
+kfile,KURLRequester,,,
+kfile,KURLRequesterDlg,,,
+khtml,DOM,,,
+khtml,KHTMLPart,,,
+khtml,KHTMLSettings,,,
+khtml,KHTMLView,,,
+kio,KAr,,,
+kio,KArchive,,,
+kio,KArchiveDirectory,,,
+kio,KArchiveEntry,,,
+kio,KArchiveFile,,,
+kio,KAutoMount,,,
+kio,KAutoUnmount,,,
+kio,KDCOPServiceStarter,,,
+kio,KDEDesktopMimeType,,,
+kio,KDataTool,,,
+kio,KDataToolAction,,,
+kio,KDataToolInfo,,,
+kio,KDirLister,,,
+kio,KDirNotify,,,
+kio,KDirWatch,,,
+kio,KEMailSettings,,,
+kio,KExecMimeType,,,
+kio,KFileFilter,,,
+kio,KFileItem,,,
+kio,KFileMetaInfo,,,
+kio,KFileMetaInfoGroup,,,
+kio,KFileMetaInfoItem,,,
+kio,KFileMetaInfoProvider,,,
+kio,KFileMimeTypeInfo,,,
+kio,KFilePlugin,,,
+kio,KFileShare,,,
+kio,KFileSharePrivate,,,
+kio,KFilterBase,,,
+kio,KFilterDev,,,
+kio,KFolderType,,,
+kio,KIO,,,
+kio,KImageIO,,,
+kio,KMimeMagic,,,
+kio,KMimeMagicResult,,,
+kio,KMimeType,,,
+kio,KOCRDialog,,,
+kio,KOCRDialogFactory,,,
+kio,KOpenWithHandler,,,
+kio,KProcessRunner,,,
+kio,KProtocolInfo,,,
+kio,KProtocolManager,,,
+kio,KRun,,,
+kio,KST_CTimeInfo,,,
+kio,KST_KCustom,,,
+kio,KST_KDEDesktopMimeType,,,
+kio,KST_KExecMimeType,,,
+kio,KST_KFolderType,,,
+kio,KST_KImageIO,,,
+kio,KST_KImageIOFormat,,,
+kio,KST_KMimeType,,,
+kio,KST_KProtocolInfo,,,
+kio,KST_KProtocolInfoFactory,,,
+kio,KST_KService,,,
+kio,KST_KServiceFactory,,,
+kio,KST_KServiceGroup,,,
+kio,KST_KServiceGroupFactory,,,
+kio,KST_KServiceType,,,
+kio,KST_KServiceTypeFactory,,,
+kio,KST_KSycocaEntry,,,
+kio,KScanDialog,,,
+kio,KScanDialogFactory,,,
+kio,KService,,,
+kio,KServiceGroup,,,
+kio,KServiceOffer,,,
+kio,KServiceSeparator,,,
+kio,KServiceType,,,
+kio,KServiceTypeProfile,,,
+kio,KShellCompletion,,,
+kio,KShred,,,
+kio,KSimpleFileFilter,,,
+kio,KSycoca,,,
+kio,KSycocaEntry,,,
+kio,KSycocaFactory,,,
+kio,KTar,,,
+kio,KTrader,,,
+kio,KURIFilter,,,
+kio,KURIFilterData,,,
+kio,KURIFilterPlugin,,,
+kio,KURLCompletion,,,
+kio,KURLPixmapProvider,,,
+kio,KZip,,,
+kio,KZipFileEntry,,,
+kio,Observer,,,
+kio,RenameDlgPlugin,,,
+kio,ThumbCreator,,,
+kio,testKIOMetaData,,,
+kio,testKIOUDSEntry,,,
+kio,testKIOUDSEntryList,,,
+kmdi,KMdi,,,
+kmdi,KMdiChildArea,,,
+kmdi,KMdiChildFrm,,,
+kmdi,KMdiChildFrmCaption,,,
+kmdi,KMdiChildFrmDragBeginEvent,,,
+kmdi,KMdiChildFrmDragEndEvent,,,
+kmdi,KMdiChildFrmMoveEvent,,,
+kmdi,KMdiChildFrmResizeBeginEvent,,,
+kmdi,KMdiChildFrmResizeEndEvent,,,
+kmdi,KMdiChildView,,,
+kmdi,KMdiMainFrm,,,
+kmdi,KMdiTaskBar,,,
+kmdi,KMdiTaskBarButton,,,
+kmdi,KMdiToolViewAccessor,,,
+kmdi,KMdiViewCloseEvent,,,
+kmdi,KMdiWin32IconButton,,,
+kparts,KParts,,,
+kparts,createReadOnlyPart,,,
+kparts,createReadWritePart,,,
+kparts,testQMapQCStringInt,,,
+kspell,KS_ADD,,,
+kspell,KS_CANCEL,,,
+kspell,KS_CLIENT_ASPELL,,,
+kspell,KS_CLIENT_HSPELL,,,
+kspell,KS_CLIENT_ISPELL,,,
+kspell,KS_CONFIG,,,
+kspell,KS_E_ASCII,,,
+kspell,KS_E_CP1251,,,
+kspell,KS_E_CP1255,,,
+kspell,KS_E_KOI8R,,,
+kspell,KS_E_KOI8U,,,
+kspell,KS_E_LATIN1,,,
+kspell,KS_E_LATIN13,,,
+kspell,KS_E_LATIN15,,,
+kspell,KS_E_LATIN2,,,
+kspell,KS_E_LATIN3,,,
+kspell,KS_E_LATIN4,,,
+kspell,KS_E_LATIN5,,,
+kspell,KS_E_LATIN7,,,
+kspell,KS_E_LATIN8,,,
+kspell,KS_E_LATIN9,,,
+kspell,KS_E_UTF8,,,
+kspell,KS_IGNORE,,,
+kspell,KS_IGNOREALL,,,
+kspell,KS_REPLACE,,,
+kspell,KS_REPLACEALL,,,
+kspell,KS_STOP,,,
+kspell,KS_SUGGEST,,,
+kspell,KSpell,,,
+kspell,KSpellConfig,,,
+kspell,KSpellDlg,,,
diff --git a/python/pykde/examples/pykde-sampler/qt_widgets/__init__.py b/python/pykde/examples/pykde-sampler/qt_widgets/__init__.py
new file mode 100644
index 00000000..ffe7bed6
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/qt_widgets/__init__.py
@@ -0,0 +1,17 @@
+labelText = 'Qt Widgets'
+iconName = 'designer'
+
+helpText = """Qt provides a rich set of widgets for application use.
+Select the children of this item to see for yourself."""
+
+from qt import QFrame, QVBoxLayout, SIGNAL
+from kdeui import KTextEdit
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ layout.addStretch(1)
diff --git a/python/pykde/examples/pykde-sampler/qt_widgets/table.py b/python/pykde/examples/pykde-sampler/qt_widgets/table.py
new file mode 100644
index 00000000..d6b6e3ed
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/qt_widgets/table.py
@@ -0,0 +1,42 @@
+labelText = 'QTable'
+iconName = 'inline_table'
+
+helpText = """From the docs: 'The QTable class provides a flexible
+editable table widget.'
+"""
+
+import csv
+import os
+
+from qt import QFrame, QStringList, QVBoxLayout, SIGNAL
+from qttable import QTable
+
+from kdeui import KTextEdit
+
+contrib = os.path.join(os.path.split(__file__)[0], 'CONTRIB')
+
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ self.help = KTextEdit(helpText, '', self)
+
+ data = csv.reader(open(contrib))
+ header = data.next()
+ items = [item for item in data]
+
+ self.table = table = QTable(len(items), len(header), self)
+ headers = QStringList()
+ for headertext in header:
+ headers.append(headertext)
+ table.setColumnLabels(headers)
+
+ cols = range(len(header))
+ for row, record in enumerate(items):
+ for col in cols:
+ table.setText(row, col, record[col])
+
+ layout = QVBoxLayout(self, 4)
+ layout.addWidget(self.help)
+ layout.addWidget(self.table)
+ layout.addStretch(1)
diff --git a/python/pykde/examples/pykde-sampler/runner.py b/python/pykde/examples/pykde-sampler/runner.py
new file mode 100644
index 00000000..8b1ad2c5
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/runner.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""
+
+"""
+import sys
+from kdecore import KApplication, KCmdLineArgs
+from kdeui import KMainWindow
+from qt import QVBoxLayout
+
+## relative import -- cry me a river!
+import about
+
+
+class SamplerRunnerWindow(KMainWindow):
+ def __init__(self, ctor):
+ KMainWindow.__init__(self)
+ layout = QVBoxLayout(self)
+ layout.setAutoAdd(True)
+ self.widget = ctor(self)
+
+
+def importItem(name):
+ """ importItem(name) -> import an item from a module by dotted name
+
+ """
+ def importName(name):
+ """ importName(name) -> import and return a module by name in dotted form
+
+ Copied from the Python lib docs.
+ """
+ mod = __import__(name)
+ for comp in name.split('.')[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
+ names = name.split('.')
+ modname, itemname = names[0:-1], names[-1]
+ mod = importName(str.join('.', modname))
+ return getattr(mod, itemname)
+
+
+
+if __name__ == '__main__':
+ options = [('+item', 'An item in the sys.path')]
+ KCmdLineArgs.init(sys.argv, about.about)
+ KCmdLineArgs.addCmdLineOptions(options)
+
+ args = KCmdLineArgs.parsedArgs()
+ if not args.count():
+ args.usage()
+ else:
+ pathitem = args.arg(0)
+ widget = importItem(pathitem)
+
+ app = KApplication()
+ mainWindow = SamplerRunnerWindow(widget)
+ mainWindow.show()
+ app.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/sampler.py b/python/pykde/examples/pykde-sampler/sampler.py
new file mode 100644
index 00000000..bacf6346
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/sampler.py
@@ -0,0 +1,423 @@
+#!/usr/bin/env python
+""" The PyKDE application sampler
+
+This module defines the top-level widgets for displaying the sampler
+application.
+
+
+"""
+import inspect
+import os
+import sys
+
+from qt import SIGNAL, SLOT, PYSIGNAL, Qt
+from qt import QVBoxLayout, QLabel, QPixmap, QSplitter, QFrame, QDialog
+from qt import QSizePolicy, QHBoxLayout, QSpacerItem, QPushButton
+
+from kdecore import i18n, KAboutData, KApplication, KCmdLineArgs, KGlobal
+from kdecore import KGlobalSettings, KWin, KWinModule, KURL, KIcon
+
+from kdeui import KComboBox, KListView, KListViewItem, KTabWidget, KTextEdit
+from kdeui import KMainWindow, KPushButton, KSplashScreen, KStdAction
+from kdeui import KKeyDialog, KEditToolbar
+
+from kio import KTrader
+from kparts import createReadOnlyPart, createReadWritePart
+from khtml import KHTMLPart
+
+import about
+import lib
+
+
+try:
+ __file__
+except (NameError, ):
+ __file__ = sys.argv[0]
+
+
+sigDoubleClicked = SIGNAL('doubleClicked(QListViewItem *)')
+sigViewItemSelected = SIGNAL('selectionChanged(QListViewItem *)')
+sigSampleSelected = PYSIGNAL('sample selected')
+
+blank = KURL('about:blank')
+
+
+def appConfig(group=None):
+ """ appConfig(group=None) -> returns the application KConfig
+
+ """
+ config = KGlobal.instance().config()
+ if group is not None:
+ config.setGroup(group)
+ return config
+
+
+def getIcon(name, group=KIcon.NoGroup, size=KIcon.SizeSmall):
+ """ returns a kde icon by name
+
+ """
+ return KGlobal.instance().iconLoader().loadIcon(name, group, size)
+
+
+def getIconSet(name, group=KIcon.NoGroup, size=KIcon.SizeSmall):
+ """ returns a kde icon set by name
+
+ """
+ return KGlobal.instance().iconLoader().loadIconSet(name, group, size)
+
+
+def buildPart(parent, query, constraint, writable=False):
+ """ builds the first available offered part on the parent
+
+ """
+ offers = KTrader.self().query(query, constraint)
+ for ptr in offers:
+ if writable:
+ builder = createReadWritePart
+ else:
+ builder = createReadOnlyPart
+ part = builder(ptr.library(), parent, ptr.name())
+ if part:
+ break
+ return part
+
+
+
+class CommonFrame(QFrame):
+ """ provides a modicum of reuse
+
+ """
+ def __init__(self, parent):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ layout.setAutoAdd(True)
+ layout.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
+
+
+class SamplerFrame(CommonFrame):
+ """ frame type that swaps out old widgets for new when told to do so
+
+ """
+ def __init__(self, parent):
+ CommonFrame.__init__(self, parent)
+ self.widget = None
+
+ def setWidget(self, widget):
+ self.layout().deleteAllItems()
+ previous = self.widget
+ if previous:
+ previous.close()
+ delattr(self, 'widget')
+ self.widget = widget
+
+ def showSample(self, item, module):
+ try:
+ frameType = module.builder()
+ except (AttributeError, ):
+ print 'No sample callable defined in %s' % (module.name(), )
+ else:
+ frame = frameType(self)
+ self.setWidget(frame)
+ frame.show()
+
+
+class SourceFrame(CommonFrame):
+ """ frame with part for displaying python source
+
+ """
+ def __init__(self, parent):
+ CommonFrame.__init__(self, parent)
+ query = ''
+ self.part = buildPart(self, 'application/x-python', query, False)
+
+ def showModuleSource(self, item, module):
+ if not self.part:
+ print 'No part available for displaying python source.'
+ return
+ try:
+ modulefile = inspect.getabsfile(module.module)
+ except:
+ return
+ self.part.openURL(blank)
+ if os.path.splitext(modulefile)[-1] == '.py':
+ self.part.openURL(KURL('file://%s' % modulefile))
+
+
+class WebFrame(CommonFrame):
+ """ frame with part for viewing web pages
+
+ """
+ docBase = 'http://www.riverbankcomputing.com/Docs/PyKDE3/classref/'
+
+ def __init__(self, parent):
+ CommonFrame.__init__(self, parent)
+ self.part = part = buildPart(self, 'text/html', "Type == 'Service'")
+ #part.connect(part, SIGNAL('khtmlMousePressEvent(a)'), self.onURL)
+
+ def onURL(self, a):
+ print '****', a
+
+ def showDocs(self, item, module):
+ try:
+ mod, cls = module.module.docParts
+ except (AttributeError, ):
+ url = blank
+ else:
+ url = KURL(self.docUrl(mod, cls))
+ self.part.openURL(url)
+
+
+ def docUrl(self, module, klass):
+ """ docUrl(name) -> return a doc url given a name from the kde libs
+
+ """
+ return '%s/%s/%s.html' % (self.docBase, module, klass, )
+
+
+class OutputFrame(KTextEdit):
+ """ text widget that acts (just enough) like a file
+
+ """
+ def __init__(self, parent, filehandle):
+ KTextEdit.__init__(self, parent)
+ self.filehandle = filehandle
+ self.setReadOnly(True)
+ self.setFont(KGlobalSettings.fixedFont())
+
+
+ def write(self, text):
+ self.insert(text)
+
+
+ def clear(self):
+ self.setText('')
+
+
+ def __getattr__(self, name):
+ return getattr(self.filehandle, name)
+
+
+class SamplerListView(KListView):
+ """ the main list view of samples
+
+ """
+ def __init__(self, parent):
+ KListView.__init__(self, parent)
+ self.addColumn(i18n('Sample'))
+ self.setRootIsDecorated(True)
+
+ modules = lib.listmodules()
+ modules.sort(lambda a, b: cmp(a[0], b[0]))
+
+ modmap = dict(modules)
+ modules = [(name.split('.'), name, mod) for name, mod in modules]
+ roots, cache = {}, {}
+
+ for names, modname, module in modules:
+ topname, subnames = names[0], names[1:]
+ item = roots.get(topname, None)
+ if item is None:
+ roots[topname] = item = KListViewItem(self, module.labelText())
+ item.module = module
+ item.setPixmap(0, getIcon(module.icon()))
+
+ bname = ''
+ subitem = item
+ for subname in subnames:
+ bname = '%s.%s' % (bname, subname, )
+ item = cache.get(bname, None)
+ if item is None:
+ subitem = cache[bname] = \
+ KListViewItem(subitem, module.labelText())
+ subitem.module = module
+ subitem.setPixmap(0, getIcon(module.icon()))
+ subitem = item
+
+ for root in roots.values():
+ self.setOpen(root, True)
+
+
+class SamplerMainWindow(KMainWindow):
+ """ the main window
+
+ """
+ def __init__(self, *args):
+ KMainWindow.__init__(self, *args)
+ self.hSplitter = hSplit = QSplitter(Qt.Horizontal, self)
+ self.samplesList = samplesList = SamplerListView(hSplit)
+ self.vSplitter = vSplit = QSplitter(Qt.Vertical, hSplit)
+ self.setCentralWidget(hSplit)
+ self.setIcon(getIcon('kmail'))
+
+ hSplit.setOpaqueResize(True)
+ vSplit.setOpaqueResize(True)
+
+ self.contentTabs = cTabs = KTabWidget(vSplit)
+ self.outputTabs = oTabs = KTabWidget(vSplit)
+
+ self.sampleFrame = SamplerFrame(cTabs)
+ self.sourceFrame = SourceFrame(cTabs)
+ self.webFrame = WebFrame(cTabs)
+
+ cTabs.insertTab(self.sampleFrame, getIconSet('exec'), i18n('Sample'))
+ cTabs.insertTab(self.sourceFrame, getIconSet('source'), i18n('Source'))
+ cTabs.insertTab(self.webFrame, getIconSet('help'), i18n('Docs'))
+
+ sys.stdout = self.stdoutFrame = OutputFrame(oTabs, sys.stdout)
+ sys.stderr = self.stderrFrame = OutputFrame(oTabs, sys.stderr)
+
+ termIcons = getIconSet('terminal')
+ oTabs.insertTab(self.stdoutFrame, termIcons, i18n('stdout'))
+ oTabs.insertTab(self.stderrFrame, termIcons, i18n('stderr'))
+
+ self.resize(640, 480)
+ height, width = self.height(), self.width()
+ hSplit.setSizes([width * 0.35, width * 0.65])
+ vSplit.setSizes([height * 0.80, height * 0.20])
+
+ self.xmlRcFileName = os.path.abspath(os.path.join(os.path.dirname(__file__), 'sampler.rc'))
+ self.setXMLFile(self.xmlRcFileName)
+ config = appConfig()
+ actions = self.actionCollection()
+ actions.readShortcutSettings("", config)
+ self.quitAction = KStdAction.quit(self.close, actions)
+
+ self.toggleMenubarAction = \
+ KStdAction.showMenubar(self.showMenubar, actions)
+ self.toggleToolbarAction = \
+ KStdAction.showToolbar(self.showToolbar, actions)
+ self.toggleStatusbarAction = \
+ KStdAction.showStatusbar(self.showStatusbar, actions)
+ self.configureKeysAction = \
+ KStdAction.keyBindings(self.showConfigureKeys, actions)
+ self.configureToolbarAction = \
+ KStdAction.configureToolbars(self.showConfigureToolbars, actions)
+ self.configureAppAction = \
+ KStdAction.preferences(self.showConfiguration, actions)
+
+ connect = self.connect
+ connect(samplesList, sigViewItemSelected, self.sampleSelected)
+ connect(self, sigSampleSelected, self.reloadModule)
+ connect(self, sigSampleSelected, self.sourceFrame.showModuleSource)
+ connect(self, sigSampleSelected, self.sampleFrame.showSample)
+ connect(self, sigSampleSelected, self.webFrame.showDocs)
+
+ self.restoreWindowSize(config)
+ self.createGUI(self.xmlRcFileName, 0)
+ self.sourceFrame.part.openURL(KURL('file://%s' % os.path.abspath(__file__)))
+
+
+ def showConfiguration(self):
+ """ showConfiguration() -> display the config dialog
+
+ """
+ return
+ ## not yet implemented
+ dlg = configdialog.ConfigurationDialog(self)
+ for obj in (self.stderrFrame, self.stdoutFrame, self.pythonShell):
+ call = getattr(obj, 'configChanged', None)
+ if call:
+ self.connect(dlg, util.sigConfigChanged, call)
+ dlg.show()
+
+
+ def senderCheckShow(self, widget):
+ """ senderCheckShow(widget) -> show or hide widget if sender is checked
+
+ """
+ if self.sender().isChecked():
+ widget.show()
+ else:
+ widget.hide()
+
+
+ def showMenubar(self):
+ """ showMenuBar() -> toggle the menu bar
+
+ """
+ self.senderCheckShow(self.menuBar())
+
+
+ def showToolbar(self):
+ """ showToolbar() -> toggle the tool bar
+
+ """
+ self.senderCheckShow(self.toolBar())
+
+
+ def showStatusbar(self):
+ """ showStatusbar() -> toggle the status bar
+
+ """
+ self.senderCheckShow(self.statusBar())
+
+
+ def showConfigureKeys(self):
+ """ showConfigureKeys() -> show the shortcut keys dialog
+
+ """
+ ret = KKeyDialog.configure(self.actionCollection(), self)
+ print ret
+ if ret == QDialog.Accepted:
+ actions = self.actionCollection()
+ actions.writeShortcutSettings(None, appConfig())
+
+
+ def showConfigureToolbars(self):
+ """ showConfigureToolbars() -> broken
+
+ """
+ dlg = KEditToolbar(self.actionCollection(), self.xmlRcFileName)
+ self.connect(dlg, SIGNAL('newToolbarConfig()'), self.rebuildGui)
+ #connect(self, sigSampleSelected, self.sourceFrame.showModuleSource)
+
+ dlg.exec_loop()
+
+
+ def rebuildGui(self):
+ """ rebuildGui() -> recreate the gui and refresh the palette
+
+ """
+ self.createGUI(self.xmlRcFileName, 0)
+ for widget in (self.toolBar(), self.menuBar(), ):
+ widget.setPalette(self.palette())
+
+
+ def sampleSelected(self):
+ """ sampleSelected() -> emit the current item and its module
+
+ """
+ self.stdoutFrame.clear()
+ self.stderrFrame.clear()
+ item = self.sender().currentItem()
+ self.emit(sigSampleSelected, (item, item.module))
+
+
+ def setSplashPixmap(self, pixmap):
+ """ setSplashPixmap(pixmap) -> assimilate the splash screen pixmap
+
+ """
+ target = self.sampleFrame
+ label = QLabel(target)
+ label.setPixmap(pixmap)
+ target.setWidget(label)
+
+
+ def reloadModule(self, item, module):
+ print >> sys.__stdout__, 'reload: ', reload(module.module)
+
+
+if __name__ == '__main__':
+ aboutdata = about.about()
+ KCmdLineArgs.init(sys.argv, aboutdata)
+ app = KApplication()
+
+ splashpix = QPixmap(os.path.join(lib.samplerpath, 'aboutkde.png'))
+ splash = KSplashScreen(splashpix)
+ splash.resize(splashpix.size())
+ splash.show()
+ mainWindow = SamplerMainWindow()
+ mainWindow.setSplashPixmap(splashpix)
+ mainWindow.show()
+ splash.finish(mainWindow)
+ app.exec_loop()
diff --git a/python/pykde/examples/pykde-sampler/sampler.rc b/python/pykde/examples/pykde-sampler/sampler.rc
new file mode 100644
index 00000000..fc068caf
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/sampler.rc
@@ -0,0 +1,13 @@
+<!DOCTYPE kpartgui>
+<kpartgui version="1" name="MainWindow" >
+ <MenuBar>
+ <Merge/>
+ </MenuBar>
+ <ToolBar noMerge="1" name="mainToolBar" >
+ <Action name="options_configure_toolbars" />
+ <Action name="options_configure_keybinding" />
+ <Action name="file_quit" />
+ <Action name="help_about_kde" />
+ </ToolBar>
+ <ActionProperties/>
+</kpartgui>
diff --git a/python/pykde/examples/pykde-sampler/wizards/__init__.py b/python/pykde/examples/pykde-sampler/wizards/__init__.py
new file mode 100644
index 00000000..63472b4e
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/wizards/__init__.py
@@ -0,0 +1,2 @@
+iconName = 'wizard'
+labelText = 'Wizards'
diff --git a/python/pykde/examples/pykde-sampler/wizards/wiz.py b/python/pykde/examples/pykde-sampler/wizards/wiz.py
new file mode 100644
index 00000000..1cb5544e
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/wizards/wiz.py
@@ -0,0 +1,2 @@
+iconName = 'wizard'
+labelText = 'Wizard'
diff --git a/python/pykde/examples/pykde-sampler/xwin/__init__.py b/python/pykde/examples/pykde-sampler/xwin/__init__.py
new file mode 100644
index 00000000..f9ff0b10
--- /dev/null
+++ b/python/pykde/examples/pykde-sampler/xwin/__init__.py
@@ -0,0 +1,18 @@
+labelText = 'X Windows Features'
+iconName = 'kcmx'
+
+helpText = """KDE and PyKDE allow interaction with the X Window system. Check
+out the nifty samples below."""
+
+from qt import QFrame, QLabel, QVBoxLayout
+
+class MainFrame(QFrame):
+ def __init__(self, parent=None):
+ QFrame.__init__(self, parent)
+ layout = QVBoxLayout(self)
+ self.text = QLabel(helpText, self)
+ layout.addWidget(self.text, 1)
+
+
+
+
diff --git a/python/pykde/examples/pytestimage.png b/python/pykde/examples/pytestimage.png
new file mode 100644
index 00000000..3bb4e688
--- /dev/null
+++ b/python/pykde/examples/pytestimage.png
Binary files differ
diff --git a/python/pykde/examples/qxembed_example.png b/python/pykde/examples/qxembed_example.png
new file mode 100644
index 00000000..55eb7295
--- /dev/null
+++ b/python/pykde/examples/qxembed_example.png
Binary files differ
diff --git a/python/pykde/examples/qxembedexample.py b/python/pykde/examples/qxembedexample.py
new file mode 100644
index 00000000..0e216315
--- /dev/null
+++ b/python/pykde/examples/qxembedexample.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'qxembedexample.ui'
+#
+# Created: Thu Apr 29 02:17:37 2004
+# by: The PyQt User Interface Compiler (pyuic) 3.11
+#
+# WARNING! All changes made in this file will be lost!
+
+
+from qt import *
+
+
+class QXEmbedExample(QWidget):
+ def __init__(self,parent = None,name = None,fl = 0):
+ QWidget.__init__(self,parent,name,fl)
+
+ if not name:
+ self.setName("QXEmbedExample")
+
+
+ QXEmbedExampleLayout = QVBoxLayout(self,11,6,"QXEmbedExampleLayout")
+
+ layout2 = QHBoxLayout(None,0,6,"layout2")
+
+ self.appNameCombo = KComboBox(0,self,"appNameCombo")
+ self.appNameCombo.setSizePolicy(QSizePolicy(QSizePolicy.Minimum,QSizePolicy.Fixed,0,0,self.appNameCombo.sizePolicy().hasHeightForWidth()))
+ layout2.addWidget(self.appNameCombo)
+
+ self.launchButton = KPushButton(self,"launchButton")
+ self.launchButton.setSizePolicy(QSizePolicy(QSizePolicy.Minimum,QSizePolicy.Fixed,0,0,self.launchButton.sizePolicy().hasHeightForWidth()))
+ layout2.addWidget(self.launchButton)
+ spacer1 = QSpacerItem(209,31,QSizePolicy.Expanding,QSizePolicy.Minimum)
+ layout2.addItem(spacer1)
+ QXEmbedExampleLayout.addLayout(layout2)
+
+ self.line1 = QFrame(self,"line1")
+ self.line1.setFrameShape(QFrame.HLine)
+ self.line1.setFrameShadow(QFrame.Sunken)
+ self.line1.setFrameShape(QFrame.HLine)
+ QXEmbedExampleLayout.addWidget(self.line1)
+
+ self.mainTabs = QTabWidget(self,"mainTabs")
+
+ self.tab = QWidget(self.mainTabs,"tab")
+ tabLayout = QHBoxLayout(self.tab,11,6,"tabLayout")
+
+ self.textLabel1 = QLabel(self.tab,"textLabel1")
+ tabLayout.addWidget(self.textLabel1)
+ self.mainTabs.insertTab(self.tab,QString(""))
+ QXEmbedExampleLayout.addWidget(self.mainTabs)
+
+ self.languageChange()
+
+ self.resize(QSize(471,499).expandedTo(self.minimumSizeHint()))
+ self.clearWState(Qt.WState_Polished)
+
+ self.connect(self.launchButton,SIGNAL("clicked()"),self.launchApp)
+
+
+ def languageChange(self):
+ self.setCaption(self.__tr("QXEmbed Example"))
+ self.appNameCombo.clear()
+ self.appNameCombo.insertItem(self.__tr("kcalc"))
+ self.appNameCombo.insertItem(self.__tr("konqueror"))
+ self.appNameCombo.insertItem(self.__tr("kedit"))
+ self.launchButton.setText(self.__tr("Launch and Embed"))
+ self.textLabel1.setText(self.__tr("<b>QXEmbed Example</b>\n"
+"<br><br>\n"
+"\n"
+"Select one of the app names from the combo list, then launch it with the button. Two seconds after launch, the window for the new process will get added as a new tab."))
+ self.mainTabs.changeTab(self.tab,self.__tr("Help"))
+
+
+ def launchApp(self):
+ print "QXEmbedExample.launchApp(): Not implemented yet"
+
+ def __tr(self,s,c = None):
+ return qApp.translate("QXEmbedExample",s,c)
diff --git a/python/pykde/examples/qxembedexample.ui b/python/pykde/examples/qxembedexample.ui
new file mode 100644
index 00000000..d3465162
--- /dev/null
+++ b/python/pykde/examples/qxembedexample.ui
@@ -0,0 +1,150 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>QXEmbedExample</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>QXEmbedExample</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>471</width>
+ <height>499</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>QXEmbed Example</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KComboBox">
+ <item>
+ <property name="text">
+ <string>kcalc</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>konqueror</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>kedit</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>appNameCombo</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KPushButton">
+ <property name="name">
+ <cstring>launchButton</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Launch and Embed</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>209</width>
+ <height>31</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="Line">
+ <property name="name">
+ <cstring>line1</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QTabWidget">
+ <property name="name">
+ <cstring>mainTabs</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>Help</string>
+ </attribute>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;b&gt;QXEmbed Example&lt;/b&gt;
+&lt;br&gt;&lt;br&gt;
+
+Select one of the app names from the combo list, then launch it with the button. Two seconds after launch, the window for the new process will get added as a new tab.</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>launchButton</sender>
+ <signal>clicked()</signal>
+ <receiver>QXEmbedExample</receiver>
+ <slot>launchApp()</slot>
+ </connection>
+</connections>
+<slots>
+ <slot>launchApp()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pykde/examples/systray.py b/python/pykde/examples/systray.py
new file mode 100644
index 00000000..7391c9ba
--- /dev/null
+++ b/python/pykde/examples/systray.py
@@ -0,0 +1,54 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QLabel
+from kdecore import KApplication, KIcon, KIconLoader
+from kdeui import KMainWindow, KSystemTray
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+#-------------------- main ------------------------------------------------
+
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+icons = KIconLoader ()
+
+systray = KSystemTray (mainWindow)
+systray.setPixmap (icons.loadIcon("stop", KIcon.Desktop))
+systray.show ()
+
+#mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pykde/examples/uikmdi.py b/python/pykde/examples/uikmdi.py
new file mode 100644
index 00000000..3a213bc8
--- /dev/null
+++ b/python/pykde/examples/uikmdi.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+"""
+This is a rough Python translation of the ideas presented in this KMDI tutorial:
+
+ http://web.tiscali.it/andreabergia/kmditutorial.html
+
+What does work:
+
+ IDEAlMode - yay!
+
+ Adding and closing child views
+
+ Two-way syncing between a tool widget and a matching child view
+
+All is not rosy, however:
+
+ Instances of the KmdiExample maintain a dictionary of child views. Values
+ cannot be deleted from this dictionary during a window close (causes an
+ immediate segfault).
+
+ Child views created after initialization aren't numbered correctly; given
+ the first problem, it's harder to do this than it's really worth.
+
+ The example segfaults at shutdown if the tool (on the left) is is open but
+ is not in overlap-mode.
+
+"""
+import os
+import sys
+
+from qt import SIGNAL, QVBoxLayout, QLabel
+from kdecore import i18n, KAboutData, KApplication, KGlobal, KIcon, KCmdLineArgs
+from kdeui import KDockWidget, KListBox, KStdAction
+
+try:
+ from kmdi import KMdi, KMdiMainFrm, KMdiChildView
+except (ImportError, ):
+ print 'Exception importing KMDI; check your PyKDE installation'
+ sys.exit(1)
+
+
+sigChildCloseRequest = SIGNAL('childWindowCloseRequest(KMdiChildView *)')
+sigChildViewActivated = SIGNAL('viewActivated(KMdiChildView *)')
+sigBoxSelectionChanged = SIGNAL('selectionChanged(QListBoxItem *)')
+
+
+def getIcon(name, group=KIcon.NoGroup, size=KIcon.SizeSmall):
+ """ returns a kde icon by name
+
+ """
+ return KGlobal.instance().iconLoader().loadIcon(name, group, size)
+
+
+class KmdiExample(KMdiMainFrm):
+ """ KmdiExample(parent=None) -> an example KMdiMainFrm window
+
+ """
+ uifilebase = 'uikmdi.rc'
+ viewIcons = ('network', 'email', 'stop', 'back', 'forward', )
+ toolIcons = ('view_icon', 'configure')
+
+ def __init__(self, parent=None):
+ KMdiMainFrm.__init__(self, parent, 'KmdiExample', KMdi.IDEAlMode)
+
+ xmlfile = os.path.join('.', self.uifilebase)
+ self.setXMLFile(os.path.abspath(xmlfile))
+ actions = self.actionCollection()
+ self.openNewAction = KStdAction.openNew(self.newView, actions)
+ self.quitAction = KStdAction.quit(self.close, actions)
+ self.closeAction = KStdAction.close(self.closeActiveChild, actions)
+ self.createGUI(None)
+ self.statusBar()
+ self.resize(400, 300)
+
+ self.tools = {}
+ for idx, ico in enumerate(self.toolIcons):
+ wid = KListBox(self, 'list%s' % idx)
+ self.makeTool(wid, 'Tool %s' % idx, ico)
+ ## smells
+ self.mainToolWidget = maintool = self.tools['Tool 0'][0]
+
+ self.childs = {}
+ for idx, ico in enumerate(self.viewIcons):
+ self.makeView('View %s' % idx, ico, ico)
+
+
+ self.connect(self, sigChildViewActivated, self.activatedMessage)
+ self.connect(self, sigChildViewActivated, self.syncFromChildView)
+ self.connect(maintool, sigBoxSelectionChanged, self.syncFromMainTool)
+ self.syncFromChildView(self.activeWindow())
+
+
+ def syncFromMainTool(self, item):
+ """ activate the view that matches the item text
+
+ """
+ try:
+ self.activateView(self.findWindow(item.text()))
+ except (RuntimeError, ):
+ pass
+
+ def syncFromChildView(self, child):
+ """ sync the main tool to the indicated child
+
+ """
+ maintool = self.mainToolWidget
+ item = maintool.findItem(child.tabCaption())
+ if item:
+ maintool.setSelected(item, True)
+
+ def makeTool(self, widget, caption, icon, percent=50):
+ """ makes a tool from the widget
+
+ """
+ tip = i18n('%s Tool Tip' % caption)
+ dock = KDockWidget.DockLeft
+ maindock = self.getMainDockWidget()
+ widget.setIcon(getIcon(icon))
+ tool = self.addToolWindow(widget, dock, maindock, percent, tip, caption)
+ self.tools[caption] = (widget, tool)
+
+ def makeView(self, label, icon, text):
+ """ makes a child view with a text label and a pixmap label
+
+ """
+ view = KMdiChildView(label, self)
+ self.childs[label] = view
+ view.setIcon(getIcon(icon))
+ layout = QVBoxLayout(view)
+ layout.setAutoAdd(True)
+
+ lbl = i18n('Label for a view with an icon named %s' % text)
+ lbl = QLabel(lbl, view)
+ pxm = QLabel('', view)
+ pxm.setPixmap(getIcon(icon, size=KIcon.SizeLarge))
+
+ self.addWindow(view)
+ self.mainToolWidget.insertItem(label)
+ self.connect(view, sigChildCloseRequest, self.closeChild)
+
+ def removeMainToolItem(self, view):
+ """ remove item from the main list tool that corresponds to the view
+
+ """
+ maintool = self.mainToolWidget
+ maintool.takeItem(maintool.findItem(view.tabCaption(), 0))
+
+ def newView(self):
+ """ make a view when the user invokes the new action
+
+ """
+ self.makeView('View %s' % len(self.childs), 'network', 'A Fresh View')
+ self.syncFromChildView(self.activeWindow())
+
+ def closeActiveChild(self):
+ """ close the current view
+
+ """
+ self.removeMainToolItem(self.activeWindow())
+ self.closeActiveView()
+ self.syncFromChildView(self.activeWindow())
+
+ def closeChild(self, which):
+ """ called to close a view from its tab close button
+
+ """
+ try:
+ caption = which.tabCaption()
+ except (AttributeError, ):
+ ## probably None; bug in kmdi?
+ return
+ self.removeMainToolItem(which)
+ which.close()
+ self.statusBar().message(i18n('%s closed' % caption))
+ self.syncFromChildView(self.activeWindow())
+
+ def activatedMessage(self, view):
+ """ updates the status bar with the caption of the current view
+
+ """
+ try:
+ self.statusBar().message(i18n('%s activated' % view.tabCaption()))
+ except (RuntimeError, ):
+ ## sometimes the status bar or the current object is already gone...
+ pass
+
+
+if __name__ == '__main__':
+ aname = 'PyKDE KMDI Sample'
+ desc = 'A Simple PyKDE KMDI Sample'
+ ver = '1.0'
+ lic = KAboutData.License_GPL
+ author = 'Troy Melhase'
+ authormail = 'troy@gci.net'
+
+ about = KAboutData(aname, aname, ver, desc, lic, '%s (c) 2004' % authormail)
+ about.addAuthor(author, 'hi, mom!', authormail)
+ about.addAuthor ('Jim Bublitz', 'For PyKDE', 'jbublitz@nwinternet.com')
+ KCmdLineArgs.init(sys.argv, about)
+ app = KApplication()
+ mainWindow = KmdiExample()
+ mainWindow.show()
+ app.exec_loop()
diff --git a/python/pykde/examples/uikmdi.rc b/python/pykde/examples/uikmdi.rc
new file mode 100644
index 00000000..a7e21969
--- /dev/null
+++ b/python/pykde/examples/uikmdi.rc
@@ -0,0 +1,11 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="testfoo" version="1">
+<MenuBar>
+
+<!-- <Menu name="custom"><text>C&amp;ustom</text>
+ <Action name="custom_action" />
+ </Menu>
+-->
+
+</MenuBar>
+</kpartgui>
diff --git a/python/pykde/examples/uimodules/uidialogs.py b/python/pykde/examples/uimodules/uidialogs.py
new file mode 100644
index 00000000..0f860728
--- /dev/null
+++ b/python/pykde/examples/uimodules/uidialogs.py
@@ -0,0 +1,232 @@
+from qt import QVBox, QLabel, QLineEdit, QString, QPixmap, QPushButton, QColor, SIGNAL, QButtonGroup,\
+ QRadioButton, Qt, QWidget
+
+from kdecore import KAccel, i18n
+
+from kdeui import KAboutDialog, KAboutKDE, KBugReport, KColorDialog, KDialog, KDialogBase, KFontDialog,\
+ KPasswordDialog, KMessageBox, KLineEditDlg, KKeyDialog, KWizard
+
+# despite what the docs say, there is no enum (in 2.1.1 anyway)
+# that contains these values
+QuestionYesNo = 0
+WarningYesNo = 1
+WarningContinueCancel = 2
+WarningYesNoCancel = 3
+Information = 4
+Sorry = 5
+Error = 6
+
+# Python 2.2.2 supplies these, but they're duplicated here
+# for backward compatibility
+False = 0
+True = 1
+
+class CustomDlg (KDialog):
+ def __init__ (self, parent, name = "custom dlg", modal = False):
+ KDialog.__init__ (self, parent, name, modal)
+
+ x = 20
+ y = 10
+
+ rLbl = QLabel ("r", self)
+ gLbl = QLabel ("g", self)
+ bLbl = QLabel ("b", self)
+ self.rEd = QLineEdit ("64", self)
+ self.gEd = QLineEdit ("64", self)
+ self.bEd = QLineEdit ("64", self)
+ self.dlgBtn = QPushButton ("Set/Get Color", self)
+ self.okBtn = QPushButton ("OK", self)
+ self.canBtn = QPushButton ("Cancel", self)
+
+ rLbl.setGeometry (x, y, 25, 20)
+ gLbl.setGeometry (x + 30, y, 25, 20)
+ bLbl.setGeometry (x + 60, y, 25, 20)
+ y = y + 20
+ self.rEd.setGeometry (x, y, 25, 20)
+ self.gEd.setGeometry (x + 30, y, 25, 20)
+ self.bEd.setGeometry (x + 60, y, 25, 20)
+ y = y + 30
+ self.dlgBtn.setGeometry (x, y, 90, 22)
+ y = y + 30
+ self.okBtn.setGeometry (x, y, 40, 22)
+ self.canBtn.setGeometry (x + 50, y, 40, 22)
+
+ self.connect (self.dlgBtn, SIGNAL ("clicked()"), self.dlgClicked)
+ self.connect (self.okBtn, SIGNAL ("clicked ()"), self.okClicked)
+ self.connect (self.canBtn, SIGNAL ("clicked ()"), self.cancelClicked)
+
+ def dlgClicked (self):
+ # get some (numerical) color values from the original dialog
+ red = int (self.rEd.text ().latin1 ())
+ green = int (self.gEd.text ().latin1 ())
+ blue = int (self.bEd.text ().latin1 ())
+
+ # convert the numbers to a QColor
+ color = QColor (red, green, blue)
+
+ # invoke the dialog (getColor is a 'static' call)
+ # initialize with the colors from above (in color)
+ # color will also hold the new value chosen in the
+ # KColorDialog
+ result = KColorDialog.getColor (color, self)
+
+ # get the numerical color values back
+ red, green, blue = color.rgb ()
+
+ # update the QLineEdits in the original dialog
+ self.rEd.setText (str (red))
+ self.gEd.setText (str (green))
+ self.bEd.setText (str (blue))
+
+ def okClicked (self):
+ self.done (1)
+
+ def cancelClicked (self):
+ self.done (0)
+
+class MessageDlg (KDialog):
+ def __init__ (self, parent, name = "message dlg", modal = False):
+ KDialog.__init__ (self, parent, name, modal)
+
+ buttons = ["QuestionYesNo", "WarningYesNo", "WarningContiueCancel", "WarningYesNoCancel",\
+ "Information", "Sorry", "Error"]
+
+ n = len (buttons)
+
+ grp = QButtonGroup (n, Qt.Vertical, "MessageBoxes", self, "button grp")
+ grp.setGeometry (10, 10, 200, 30*n)
+ for i in range (n):
+ QRadioButton (buttons [i], grp)
+
+ self.connect (grp, SIGNAL ("clicked (int)"), self.launch)
+
+ def launch (self, which):
+ if which == QuestionYesNo:
+ KMessageBox.questionYesNo (self, "This is a questionYesNo message box\nThere is also a list version of this dialog",\
+ "questionYesNo")
+
+ elif which == WarningYesNo:
+ KMessageBox.warningYesNo (self, "This is a warningYesNo message box", "warningYesNo")
+
+ elif which == WarningContinueCancel:
+ KMessageBox.warningContinueCancel (self, "This is a warningContinueCancel message box", "warningContinueCancel");
+
+ elif which == WarningYesNoCancel:
+ KMessageBox.warningYesNoCancel (self, "This is a warningYesNoCancel message box", "warningYesNoCancel")
+
+ elif which == Information:
+ KMessageBox.information (self, "This is an information message box", "Information")
+
+ elif which == Sorry:
+ KMessageBox.sorry (self, "This is a 'sorry' message box", "Sorry")
+
+ elif which == Error:
+ KMessageBox.error (self, "No - this isn't really an error\nIt's an error message box\n", "Error")
+
+
+def dlgKAboutDialog (parent):
+ dlg = KAboutDialog (parent, 'about dialog', False)
+ dlg.setLogo (QPixmap ("pytestimage.png"))
+ dlg.setTitle ("UISampler for PyKDE")
+ dlg.setAuthor ("Jim Bublitz", "jbublitz@nwinternet.com", "http://www.riverbankcomputing.co.uk",\
+ "\n\nPyKDE -- Python bindings\n\tfor KDE")
+ dlg.addContributor ("PyKDE list", "pykde@mats.gmd.de", QString.null, QString.null)
+
+ dlg.show ()
+
+
+def dlgKBugReport (parent):
+ dlg = KBugReport (parent)
+ dlg.exec_loop ()
+
+def dlgKAboutKDE (parent):
+ dlg = KAboutKDE (parent, "about kde", False)
+ dlg.show ()
+
+def dlgKColorDialog (parent):
+ dlg = KColorDialog (parent, "color dlg", False)
+ dlg.show ()
+
+def dlgKDialog (parent):
+ dlg = CustomDlg (parent)
+ dlg.show ()
+
+def dlgKDialogBase (parent):
+ caption = "KDialogBase sample"
+ text_ = "This is a KDialogBase example"
+ dlg = KDialogBase (parent, "sample_dialog", False, caption,\
+ KDialogBase.Ok | KDialogBase.Cancel, KDialogBase.Ok, True )
+
+ page = dlg.makeVBoxMainWidget();
+
+ # making 'page' the parent inserts the widgets in
+ # the VBox created above
+ label = QLabel( caption, page, "caption" );
+
+ lineedit = QLineEdit(text_, page, "lineedit" );
+ lineedit.setMinimumWidth(dlg.fontMetrics().maxWidth()*20);
+
+ # This tests some handwritten code in KDialogBase
+ label0 = QLabel ("Border widths", page)
+ a, b, c, d = dlg.getBorderWidths ()
+ labelA = QLabel ("Upper Left X: " + str (a), page)
+ labelB = QLabel ("Upper Left Y: " + str (b), page)
+ labelC = QLabel ("Lower Right X: " + str (c), page)
+ labelD = QLabel ("Lower Right Y: " + str (d), page)
+
+ dlg.show ()
+
+def dlgKFontDialog (parent):
+ dlg = KFontDialog (parent, "font dlg", False, False)
+ dlg.show ()
+
+def dlgKKeyDialog (parent):
+ # This really doesn't do anything except pop up the dlg
+ keys = KAccel (parent)
+ keys.insertItem( i18n( "Zoom in" ), "Zoom in", "+" );
+ keys.readSettings();
+ KKeyDialog.configureKeys (keys)
+
+def dlgKLineEditDlg (parent):
+ result, ok = KLineEditDlg.getText ("Enter text", "<Your input here>", parent)
+ print "result", result
+ print "ok", ok
+
+ # pop up another dlg to show what happened in the KLineEditDlg
+ if ok:
+ result = result.latin1 ()
+ KMessageBox.information (parent, "OK was pressed\nText: " + result, "KLineEditDlg result")
+ else:
+ result = ""
+ KMessageBox.information (parent, "Cancel pressed\nText: " + result, "KLineEditDlg result")
+
+def dlgKMessageBox (parent):
+ dlg = MessageDlg (parent)
+ dlg.show ()
+
+def dlgKPasswordDialog (parent):
+ dlg = KPasswordDialog (KPasswordDialog.Password, "Enter password (just a test)")
+ dlg.exec_loop ()
+
+def dlgKWizard (parent):
+ wiz = KWizard (parent)
+
+ page1 = QWidget (wiz)
+ p1Lbl = QLabel ("This is page 1", page1)
+ p1Lbl.setGeometry (20, 20, 100, 20)
+ page2 = QWidget (wiz)
+ p2Lbl = QLabel ("This is page 2", page2)
+ p2Lbl.setGeometry (50, 20, 100, 20)
+ page3 = QWidget (wiz)
+ p3Lbl = QLabel ("This is page 3", page3)
+ p3Lbl.setGeometry (80, 20, 100, 20)
+
+ wiz.addPage (page1, "Page 1")
+ wiz.addPage (page2, "Page 2")
+ wiz.addPage (page3, "Page 3")
+ wiz.show ()
+
+if __name__ == "__main__":
+ print
+ print "Please run uisampler.py"
+ print \ No newline at end of file
diff --git a/python/pykde/examples/uimodules/uimenus.py b/python/pykde/examples/uimodules/uimenus.py
new file mode 100644
index 00000000..19173b3c
--- /dev/null
+++ b/python/pykde/examples/uimodules/uimenus.py
@@ -0,0 +1,108 @@
+import os
+
+from qt import QLabel
+
+from kdecore import KApplication
+
+class PageLaunch:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ launchLbl = QLabel ("Launching application ... please wait\n\nClose launched application to continue", self.page)
+ launchLbl.setGeometry (x, y, 300, 80)
+ launchLbl.show ()
+
+ self.page.show ()
+
+ KApplication.kApplication ().processEvents ()
+
+
+class PageNotImpl:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ niLbl = QLabel ("Nothing is currently implemented for this widget", self.page)
+ niLbl.setGeometry (x, y, 300, 20)
+ niLbl.show ()
+
+
+def menuKAccelGen (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def menuKAccelMenu (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def menuKAction (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKActionMenu (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKActionSeparator (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKContextMenuManager (parent):
+ pass
+
+def menuKDCOPActionProxy (parent):
+ pass
+
+def menuKHelpMenu (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKMenuBar (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKPanelApplet (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def menuKPanelExtension (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def menuKPanelMenu (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def menuKPopupFrame (parent):
+ pass
+
+def menuKPopupMenu (parent):
+ pass
+
+def menuKPopupTitle (parent):
+ pass
+
+def menuKStatusBar (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKStatusBarLabel (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKStdAction (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKToolBar (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python menudemo.py")
+
+def menuKWindowListMenu (parent):
+ pass
+
+
+if __name__ == "__main__":
+ print
+ print "Please run uisampler.py"
+ print \ No newline at end of file
diff --git a/python/pykde/examples/uimodules/uimisc.py b/python/pykde/examples/uimodules/uimisc.py
new file mode 100644
index 00000000..31f7c181
--- /dev/null
+++ b/python/pykde/examples/uimodules/uimisc.py
@@ -0,0 +1,239 @@
+import os, time
+
+from qt import QImage, QLabel, QPixmap, QPushButton, SIGNAL, QColor, QValidator
+
+from kdeui import KMessageBox, KDateValidator, KFloatValidator, KIntValidator, KLineEdit, KLed
+
+
+
+class Page3:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 15
+
+ green = QColor (0, 255, 0)
+ yellow = QColor (255, 255, 0)
+ red = QColor (255, 0, 0)
+
+ ivLbl = QLabel ("KIntValidator", self.page)
+ ivLbl.setGeometry (x, y, 100, 20)
+ ivLbl.show ()
+
+ self.iv = KLineEdit (self.page)
+ self.iv.setGeometry (x, y + 20, 100, 20)
+ self.iv.show ()
+ self.page.connect (self.iv, SIGNAL("textChanged (const QString &)"), self.ivChanged)
+
+ self.ivVal = KIntValidator (self.page)
+ self.ivVal.setRange (20, 50)
+
+ ivRngLbl = QLabel ("Range is 20 - 50", self.page)
+ ivRngLbl.setGeometry (x, y + 45, 100, 20)
+ ivRngLbl.show ()
+
+ ivAccLbl = QLabel ("Acceptable", self.page)
+ ivAccLbl.setGeometry (x + 125, y + 45, 85, 20)
+ ivAccLbl.show ()
+ ivInterLbl = QLabel ("Intermediate", self.page)
+ ivInterLbl.setGeometry (x + 125, y + 20, 85, 20)
+ ivInterLbl.show ()
+ ivInvalLbl = QLabel ("Invalid", self.page)
+ ivInvalLbl.setGeometry (x + 125, y - 5, 85, 20)
+ ivInvalLbl.show ()
+ self.ivInvalLed = KLed (red, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.ivInvalLed.setGeometry (x + 215, y - 5, 18, 18)
+ self.ivInvalLed.show ()
+ self.ivInterLed = KLed (yellow, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.ivInterLed.setGeometry (x + 215, y + 20, 18, 18)
+ self.ivInterLed.show ()
+ self.ivAccLed = KLed (green, KLed.On, KLed.Sunken, KLed.Circular,self.page)
+ self.ivAccLed.setGeometry (x + 215, y + 45, 18, 18)
+ self.ivAccLed.show ()
+
+ y = y + 100
+
+ fvLbl = QLabel ("KFloatValidator", self.page)
+ fvLbl.setGeometry (x, y, 100, 20)
+ fvLbl.show ()
+
+ self.fv = KLineEdit (self.page)
+ self.fv.setGeometry (x, y + 20, 100, 20)
+ self.fv.show ()
+ self.page.connect (self.fv, SIGNAL("textChanged (const QString &)"), self.fvChanged)
+
+ self.fvVal = KFloatValidator (self.page)
+ self.fvVal.setRange (10.0, 40.0)
+
+ fvRngLbl = QLabel ("Range is 10.0 - 40.0", self.page)
+ fvRngLbl.setGeometry (x, y + 45, 100, 20)
+ fvRngLbl.show ()
+
+ fvAccLbl = QLabel ("Acceptable", self.page)
+ fvAccLbl.setGeometry (x + 125, y + 45, 85, 20)
+ fvAccLbl.show ()
+ fvInterLbl = QLabel ("Intermediate", self.page)
+ fvInterLbl.setGeometry (x + 125, y + 20, 95, 20)
+ fvInterLbl.show ()
+ fvInvalLbl = QLabel ("Invalid", self.page)
+ fvInvalLbl.setGeometry (x + 125, y - 5, 85, 20)
+ fvInvalLbl.show ()
+ self.fvInvalLed = KLed (red, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.fvInvalLed.setGeometry (x + 215, y - 5, 18, 18)
+ self.fvInvalLed.show ()
+ self.fvInterLed = KLed (yellow, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.fvInterLed.setGeometry (x + 215, y + 20, 18, 18)
+ self.fvInterLed.show ()
+ self.fvAccLed = KLed (green, KLed.On, KLed.Sunken, KLed.Circular,self.page)
+ self.fvAccLed.setGeometry (x + 215, y + 45, 18, 18)
+ self.fvAccLed.show ()
+
+ y = y + 100
+
+ dvLbl = QLabel ("KDateValidator", self.page)
+ dvLbl.setGeometry (x, y, 100, 20)
+ dvLbl.show ()
+
+ self.dv = KLineEdit (self.page)
+ self.dv.setGeometry (x, y + 20, 100, 20)
+ self.dv.show ()
+# self.page.connect (self.dv, SIGNAL("textChanged (const QString &)"), self.dvChanged)
+
+ self.dvVal = KDateValidator (self.page)
+# self.dvVal.setRange (10.0, 40.0)
+
+# dvRngLbl = QLabel ("Range is 10.0 - 40.0", self.page)
+# dvRngLbl.setGeometry (x, y + 45, 100, 20)
+# dvRngLbl.show ()
+
+ dvBtn = QPushButton ("Validate", self.page)
+ dvBtn.setGeometry (x, y + 45, 60, 22)
+ dvBtn.show ()
+ self.page.connect (dvBtn, SIGNAL ("clicked ()"), self.dvChanged)
+
+ dvNoteLbl = QLabel ("Format is locale dependent\nShort date only\nTry DD-MM-YY", self.page)
+ dvNoteLbl.setGeometry (x, y + 70, 150, 60)
+ dvNoteLbl.show ()
+
+ dvAccLbl = QLabel ("Acceptable", self.page)
+ dvAccLbl.setGeometry (x + 125, y + 45, 85, 20)
+ dvAccLbl.show ()
+ dvInterLbl = QLabel ("Intermediate", self.page)
+ dvInterLbl.setGeometry (x + 125, y + 20, 85, 20)
+ dvInterLbl.show ()
+ dvInvalLbl = QLabel ("Invalid", self.page)
+ dvInvalLbl.setGeometry (x + 125, y - 5, 85, 20)
+ dvInvalLbl.show ()
+ self.dvInvalLed = KLed (red, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.dvInvalLed.setGeometry (x + 215, y - 5, 18, 18)
+ self.dvInvalLed.show ()
+ self.dvInterLed = KLed (yellow, KLed.Off, KLed.Sunken, KLed.Circular,self.page)
+ self.dvInterLed.setGeometry (x + 215, y + 20, 18, 18)
+ self.dvInterLed.show ()
+ self.dvAccLed = KLed (green, KLed.On, KLed.Sunken, KLed.Circular,self.page)
+ self.dvAccLed.setGeometry (x + 215, y + 45, 18, 18)
+ self.dvAccLed.show ()
+
+ def ivChanged (self):
+ self.ivInvalLed.off ()
+ self.ivInterLed.off ()
+ self.ivAccLed.off ()
+
+ state, i = self.ivVal.validate (self.iv.text ())
+
+ if state == QValidator.Acceptable:
+ self.ivAccLed.on ()
+ elif state == QValidator.Intermediate:
+ self.ivInterLed.on ()
+ else:
+ self.ivInvalLed.on ()
+
+ def fvChanged (self):
+ self.fvInvalLed.off ()
+ self.fvInterLed.off ()
+ self.fvAccLed.off ()
+
+ state, i = self.fvVal.validate (self.fv.text ())
+
+ if state == QValidator.Acceptable:
+ self.fvAccLed.on ()
+ elif state == QValidator.Intermediate:
+ self.fvInterLed.on ()
+ else:
+ self.fvInvalLed.on ()
+
+ def dvChanged (self):
+ self.dvInvalLed.off ()
+ self.dvInterLed.off ()
+ self.dvAccLed.off ()
+
+ state, i = self.dvVal.validate (self.dv.text ())
+
+ if state == QValidator.Acceptable:
+ self.dvAccLed.on ()
+ elif state == QValidator.Intermediate:
+ self.dvInterLed.on ()
+ else:
+ self.dvInvalLed.on ()
+
+class PageNotImpl:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ niLbl = QLabel ("Nothing is currently implemented for this widget", self.page)
+ niLbl.setGeometry (x, y, 300, 20)
+ niLbl.show ()
+
+def miscKAlphaPainter (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKCModule (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKColor (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKColorDrag (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKCommand (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKCommandHistory (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKDockWindow (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKFloatValidator (parent):
+ parent.currentPageObj = Page3 (parent)
+
+def miscKDateValidator (parent):
+ parent.currentPageObj = Page3 (parent)
+
+def miscKIntValidator (parent):
+ parent.currentPageObj = Page3 (parent)
+
+def miscKPixmapIO (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKSharedPixmap (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscKSystemTray (parent):
+ KMessageBox.information (parent, "See the systray.py example in the templates/ subdirectories")
+
+def miscKThemeBase (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def miscQXEmbed (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+if __name__ == "__main__":
+ print
+ print "Please run uisampler.py"
+ print \ No newline at end of file
diff --git a/python/pykde/examples/uimodules/uiwidgets.py b/python/pykde/examples/uimodules/uiwidgets.py
new file mode 100644
index 00000000..b12df103
--- /dev/null
+++ b/python/pykde/examples/uimodules/uiwidgets.py
@@ -0,0 +1,754 @@
+import time, sys
+
+from qt import QLabel, QFrame, QColor, QPushButton, SIGNAL, QButtonGroup, QRadioButton, Qt, QString, QChar,\
+ QWidget, QTimer
+
+from kdecore import KApplication
+from kdeui import KEdit, KComboBox, KColorCombo, KEditListBox, KListBox, KLineEdit, KRestrictedLine,\
+ KSqueezedTextLabel, KFontChooser, KButtonBox, KColorButton, KColorCells,\
+ KColorPatch, KDualColorButton,\
+ KRootPermsIcon, KWritePermsIcon, KCharSelect, KDialog, KLed, KRootPixmap,\
+ KTabCtl, KProgress, KDatePicker, KDateTable, KGradientSelector, KHSSelector,\
+ KIntNumInput, KDoubleNumInput, KPasswordEdit, KURLLabel, KPaletteTable,\
+ KSeparator
+
+if sys.version [:6] < "2.2.2":
+ False = 0
+ True = 1
+
+class Page1:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ editLbl = QLabel ("KEdit", self.page)
+ editLbl.setGeometry (x, y, 50, 20)
+ editLbl.show ()
+
+ textList = ["Now is the winter of our discontent",\
+ "made glorious summer by this sun of York;",\
+ "and all the clouds that lour'd upon our house",\
+ "in the deep bosom of the ocean buried."]
+
+ parent.edit = KEdit (self.page)
+ parent.edit.setGeometry (x, y + 20, 300, 100)
+ for line in textList:
+ parent.edit.insertLine (line)
+ parent.edit.show ()
+
+ y = y + 125
+ searchBtn = QPushButton ("Search", self.page)
+ replaceBtn = QPushButton ("Replace", self.page)
+ gotoBtn = QPushButton ("GoTo Line", self.page)
+
+ searchBtn.setGeometry (x, y, 60, 22)
+ replaceBtn.setGeometry (x + 90, y, 60, 22)
+ gotoBtn.setGeometry (x + 180, y, 60, 22)
+
+ self.page.connect (searchBtn, SIGNAL ("clicked ()"), parent.edit.search)
+ self.page.connect (replaceBtn, SIGNAL ("clicked ()"), parent.edit.replace)
+ self.page.connect (gotoBtn, SIGNAL ("clicked ()"), parent.edit.doGotoLine)
+
+ searchBtn.show ()
+ replaceBtn.show ()
+ gotoBtn.show ()
+
+ y = y + 35
+
+ lineeditLbl = QLabel ("KLineEdit", self.page)
+ lineeditLbl.setGeometry (x, y, 70, 20)
+ lineeditLbl.show ()
+
+ lineedit = KLineEdit (self.page)
+ lineedit.setGeometry (x, y + 20, 100, 20)
+ lineedit.show ()
+
+ intLbl = QLabel ("KIntNumInput", self.page)
+ intLbl.setGeometry (x + 195, y + 35, 95, 20)
+ intLbl.show ()
+
+ intNum = KIntNumInput (5, self.page)
+ intNum.setGeometry (x + 195, y + 55, 175, 50)
+# intNum.setSuffix (" GB")
+# intNum.setPrefix ("hdc ")
+ intNum.setLabel ("Capacity")
+ intNum.setRange (0, 10, 1, True)
+ intNum.show ()
+
+ y = y + 50
+
+ dblLbl = QLabel ("KDoubleNumInput", self.page)
+ dblLbl.setGeometry (x + 195, y + 80, 115, 20)
+ dblLbl.show ()
+
+ dblNum = KDoubleNumInput (2.5, self.page)
+ dblNum.setGeometry (x + 195, y + 100, 175, 50)
+ dblNum.setLabel ("Variable")
+ dblNum.setRange (0.0, 10.0, 0.5, True)
+ dblNum.show ()
+
+ restricteditLbl = QLabel ("KRestrictedLine", self.page)
+ restricteditLbl.setGeometry (x, y, 95, 20)
+ restricteditLbl.show ()
+
+ self.restrictlineedit = KRestrictedLine (self.page)
+ self.restrictlineedit.setGeometry (x, y + 20, 100, 20)
+ self.restrictlineedit.show ()
+
+ buttons = ["Numbers Only", "Upper Case Only", "Lower Case Only"]
+
+ n = len (buttons)
+
+ self.validLbl = QLabel ("", self.page)
+ self.validLbl.setGeometry (x, y + 50, 250, 20)
+ self.validLbl.show ()
+
+ grp = QButtonGroup (n, Qt.Vertical, "Select valid chars", self.page, "button grp")
+ grp.setGeometry (x, y + 75, 150, 5+30*n)
+ for i in range (n):
+ QRadioButton (buttons [i], grp)
+
+ grp.connect (grp, SIGNAL ("clicked (int)"), self.restrict)
+
+ grp.find (0).setChecked (True)
+ self.restrict (0)
+
+ grp.show ()
+
+ self.page.show ()
+ kapp = KApplication.kApplication ()
+ kapp.processEvents ()
+
+ y = y + 195
+ sqzLbl = QLabel ("This text is too long to fit in the label below", self.page)
+ sqzLbl.setGeometry (x, y, 350, 20)
+ sqzLbl.show ()
+
+ sqzLbl1 = QLabel ("KSqueezedTxtLabel:", self.page)
+ sqzLbl1.setGeometry (x, y + 20, 120, 20)
+ sqzLbl1.show ()
+
+ squeeze = KSqueezedTextLabel ("This text is too long to fit in the label below", self.page)
+ squeeze.setGeometry (x + 125, y + 20, 125, 20)
+ squeeze.setBackgroundMode (QWidget.PaletteBase)
+ squeeze.show ()
+
+ def restrict (self, which):
+ r = {0: "0123456789", 1: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 2: "abcdefghijklmnopqrstuvwxyz"}
+ self.restrictlineedit.setValidChars (r [which])
+ self.validLbl.setText ("Valid: " + self.restrictlineedit.validChars ().latin1 ())
+
+
+class Page2:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x1 = 10
+ y1 = 10
+ x2 = 240
+ y2 = 100
+
+
+
+ cbLbl = QLabel ("KComboBox", self.page)
+ cbLbl.setGeometry (x1, y1, 75, 20)
+ cbLbl.show ()
+
+ combo = KComboBox (self.page)
+ combo.insertStrList (["One", "Two", "Three"])
+ combo.setGeometry (x1, y1 + 20, 100, 25)
+ combo.show ()
+
+ ccbLbl = QLabel ("KColorCombo", self.page)
+ ccbLbl.setGeometry (x2, y1, 100, 20)
+ ccbLbl.show ()
+
+ colorCombo = KColorCombo (self.page)
+ colorCombo.setGeometry (x2, y1 + 20, 100, 25)
+ colorCombo.show ()
+
+ editListBox = KEditListBox ("KEditListBox", self.page)
+ editListBox.setGeometry (x1, y2, 220, 175)
+ editListBox.insertStrList (["One", "Two", "Three"])
+ editListBox.show ()
+
+ lbLbl = QLabel ("KListBox", self.page)
+ lbLbl.setGeometry (x2, y2, 100, 20)
+ lbLbl.show ()
+
+ listBox = KListBox (self.page)
+ listBox.setGeometry (x2, y2 + 20, 100, 100)
+ listBox.insertStrList (["One", "Two", "Three"])
+ listBox.show ()
+
+class Page3:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ fontLbl = QLabel ("KFontChooser", self.page)
+ fontLbl.setGeometry (x, y, 95, 20)
+ fontLbl.show ()
+
+ fontChoose = KFontChooser (self.page)
+ fontChoose.setGeometry (x, y + 20, 375, 300)
+ fontChoose.show ()
+
+ y = y + 330
+
+class Page4:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ cbLbl = QLabel ("KColorButton", self.page)
+ cbLbl.setGeometry (x, y, 75, 20)
+ cbLbl.show ()
+
+ cb = KColorButton (self.page)
+ cb.setColor (QColor (255, 0, 0))
+ cb.setGeometry (x, y + 20, 30, 30)
+ cb.show ()
+
+ ccbLbl = QLabel ("KColorCombo", self.page)
+ ccbLbl.setGeometry (x + 150, y, 100, 20)
+ ccbLbl.show ()
+
+ colorCombo = KColorCombo (self.page)
+ colorCombo.setGeometry (x + 150, y + 20, 100, 25)
+ colorCombo.show ()
+
+ y = y + 60
+
+ cpLbl = QLabel ("KColorPatch", self.page)
+ cpLbl.setGeometry (x, y, 75, 20)
+ cpLbl.show ()
+
+ cp = KColorPatch (self.page)
+ cp.setColor (QColor (255, 0, 0))
+ cp.setGeometry (x, y + 20, 20, 20)
+ cp.show ()
+
+ x = x + 150
+
+ ccLbl = QLabel ("KColorCells", self.page)
+ ccLbl.setGeometry (x, y, 75, 20)
+ ccLbl.show ()
+
+ cc = KColorCells (self.page, 1, 5)
+ cc.setColor (0, QColor (0, 0, 0))
+ cc.setColor (1, QColor (255, 0, 0))
+ cc.setColor (2, QColor (0, 255, 0))
+ cc.setColor (3, QColor (0, 0, 255))
+ cc.setColor (4, QColor (255, 255, 255))
+ cc.setGeometry (x, y + 20, 100, 20)
+ cc.show ()
+
+ x = 10
+ y = y + 50
+
+ dcLbl = QLabel ("KDualColorButton", self.page)
+ dcLbl.setGeometry (x, y, 105, 20)
+ dcLbl.show ()
+
+ dc = KDualColorButton (QColor (255, 0, 0), QColor (0, 0, 0), self.page)
+ dc.setGeometry (x, y + 20, 40, 40)
+ dc.show ()
+
+ gsLbl = QLabel ("KGradientSelector", self.page)
+ gsLbl.setGeometry (x + 80, y + 30, 110, 20)
+ gsLbl.show ()
+
+ gs = KGradientSelector (self.page)
+ gs.setGeometry (x + 80, y + 50, 250, 20)
+ gs.setColors (QColor (255, 0, 0), QColor (255, 255, 0))
+ gs.show ()
+
+ y = y + 80
+
+ hsLbl = QLabel ("KHSSelector", self.page)
+ hsLbl.setGeometry (x, y, 95, 20)
+ hsLbl.show ()
+
+ hs = KHSSelector (self.page)
+ hs.setGeometry (x, y + 20, 350, 80)
+ hs.show ()
+
+ y = y + 110
+
+ ptLbl = QLabel ("KPaletteTable", self.page)
+ ptLbl.setGeometry (x, y, 95, 20)
+ ptLbl.show ()
+
+ pt = KPaletteTable (self.page, 340, 24)
+ pt.setPalette ("Royal")
+ pt.setGeometry (x, y + 20, 340, 40)
+ pt.show ()
+
+class Page5:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ rpLbl = QLabel ("KRootPermsIcon", self.page)
+ rpLbl.setGeometry (x, y, 95, 20)
+ rpLbl.show ()
+
+ rp = KRootPermsIcon (self.page)
+ rp.setGeometry (x, y + 20, 32, 32)
+ rp.show ()
+
+ wpLbl = QLabel ("KWritePermsIcon", self.page)
+ wpLbl.setGeometry (x + 125, y, 95, 20)
+ wpLbl.show ()
+
+ wp = KWritePermsIcon ("/usr/bin/gcc", self.page)
+ wp.setGeometry (x + 125, y + 20, 32, 32)
+ wp.show ()
+
+ y = y + 75
+
+ pw1Lbl = QLabel ("KPasswordEdit - echo *", self.page)
+ pw1Lbl.setGeometry (x, y, 150, 20)
+ pw1Lbl.show ()
+
+ pw1 = KPasswordEdit (self.page, "", KPasswordEdit.OneStar)
+ pw1.setGeometry (x, y + 20, 100, 20)
+ pw1.show ()
+
+ y = y + 50
+
+ pw2Lbl = QLabel ("KPasswordEdit - echo ***", self.page)
+ pw2Lbl.setGeometry (x, y, 150, 20)
+ pw2Lbl.show ()
+
+ pw2 = KPasswordEdit (self.page, "", KPasswordEdit.ThreeStars)
+ pw2.setGeometry (x, y + 20, 100, 20)
+ pw2.show ()
+
+ y = y + 50
+
+ pw3Lbl = QLabel ("KPasswordEdit - no echo", self.page)
+ pw3Lbl.setGeometry (x, y, 150, 20)
+ pw3Lbl.show ()
+
+ pw3 = KPasswordEdit (self.page, "", KPasswordEdit.NoEcho)
+ pw3.setGeometry (x, y + 20, 100, 20)
+ pw3.show ()
+
+ y = y + 50
+
+ urlLbl = QLabel ("KURLLabel", self.page)
+ urlLbl.setGeometry (x, y, 100, 20)
+ urlLbl.show ()
+
+ url = KURLLabel ("http://riverbankcomputing.co.uk", "PyKDE", self.page)
+ url.setGeometry (x, y + 20, 100, 20)
+ url.setUseTips (True)
+ url.setTipText ("http://riverbankcomputing.co.uk")
+ url.show ()
+
+ x = 70
+ y = y + 50
+
+ bbLbl = QLabel ("KButtonBox", self.page)
+ bbLbl.setGeometry (x, y, 75, 20)
+ bbLbl.show ()
+
+ bbox = KButtonBox (self.page, Qt.Horizontal)
+ bbox.setGeometry (x, y + 20, 300, 22)
+ bbox.addButton ("Button 1")
+ bbox.addButton ("Button 2")
+ bbox.addButton ("Button 3")
+ bbox.show ()
+
+ y = y + 50
+
+# dbLbl = QLabel ("KDirectionButton", self.page)
+# dbLbl.setGeometry (x, y, 95, 20)
+# dbLbl.show ()
+
+# dbUp = KDirectionButton (Qt.UpArrow, self.page)
+# dbDown = KDirectionButton (Qt.DownArrow, self.page)
+# dbRight = KDirectionButton (Qt.RightArrow, self.page)
+# dbLeft = KDirectionButton (Qt.LeftArrow, self.page)
+
+# dbUp.setGeometry (x, y + 20, 22, 22)
+# dbDown.setGeometry (x + 30, y + 20, 22, 22)
+# dbRight.setGeometry (x + 60, y + 20, 22, 22)
+# dbLeft.setGeometry (x + 90, y + 20, 22, 22)
+
+# dbUp.show ()
+# dbDown.show ()
+# dbRight.show ()
+# dbLeft.show ()
+
+ x = x + 150
+
+# kbLbl = QLabel ("KKeyButton", self.page)
+# kbLbl.setGeometry (x, y, 95, 20)
+# kbLbl.show ()
+
+# kb = KKeyButton (self.page)
+# kb.setText ("Enter")
+# kb.setGeometry (x, y + 20, 50, 32)
+# kb.show ()
+
+ x = 70
+ y = y + 50
+
+# tbLbl = QLabel ("KTabButton", self.page)
+# tbLbl.setGeometry (x, y, 95, 20)
+# tbLbl.show ()
+
+# tbUp = KTabButton (Qt.UpArrow, self.page)
+# tbDown = KTabButton (Qt.DownArrow, self.page)
+# tbRight = KTabButton (Qt.RightArrow, self.page)
+# tbLeft = KTabButton (Qt.LeftArrow, self.page)
+
+# tbUp.setGeometry (x, y + 20, 22, 25)
+# tbDown.setGeometry (x + 30, y + 20, 22, 25)
+# tbRight.setGeometry (x + 60, y + 20, 22, 25)
+# tbLeft.setGeometry (x + 90, y + 20, 22, 25)
+
+# tbUp.show ()
+# tbDown.show ()
+# tbRight.show ()
+# tbLeft.show ()
+
+class Page6:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 20
+ y = 10
+
+ red = QColor (255, 0, 0)
+ green = QColor (0, 255, 0)
+ yellow = QColor (255, 255, 0)
+ blue = QColor (0, 0, 255)
+
+ ledcolor = [red, green, yellow, blue]
+ ledshape = [KLed.Rectangular, KLed.Circular]
+ ledlook = [KLed.Flat, KLed.Raised, KLed.Sunken]
+ ledsize = [10, 18, 25]
+ self.ledlist = []
+
+ for look in ledlook:
+ for color in ledcolor:
+ for shape in ledshape:
+ for size in ledsize:
+ led = KLed(color, KLed.On, look, shape,self.page)
+ led.setGeometry (x, y, size, size)
+ self.ledlist.append (led)
+ led.show ()
+ x = x + 50
+ x = x + 50
+ x = 20
+ y = y + 30
+ y = y + 10
+
+ toggle = QPushButton ("Toggle", self.page)
+ toggle.setGeometry (150, 400, 60, 22)
+ toggle.show ()
+
+ self.page.connect (toggle, SIGNAL ("clicked ()"), self.toggleClicked)
+
+ self.page.show ()
+
+
+ def toggleClicked (self):
+ for led in self.ledlist:
+ led.toggle ()
+
+class Page7:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ tabLbl = QLabel ("KTabCtl", self.page)
+ tabLbl.setGeometry (x, y, 95, 20)
+ tabLbl.show ()
+
+ tab = KTabCtl (self.page)
+ tab.setGeometry (x, y + 20, 300, 100)
+
+ page1 = QWidget (tab)
+ p1Lbl = QLabel ("This is page 1", page1)
+ p1Lbl.setGeometry (20, 20, 100, 20)
+ page2 = QWidget (tab)
+ p2Lbl = QLabel ("This is page 2", page2)
+ p2Lbl.setGeometry (50, 20, 100, 20)
+ page3 = QWidget (tab)
+ p3Lbl = QLabel ("This is page 3", page3)
+ p3Lbl.setGeometry (20, 50, 100, 20)
+
+ tab.addTab (page1, "Tab 1")
+ tab.addTab (page2, "Tab 2")
+ tab.addTab (page3, "Tab 3")
+ tab.show ()
+
+ x = 10
+ y = 150
+
+ progLbl = QLabel ("KProgress", self.page)
+ progLbl.setGeometry (x, y + 50, 95, 20)
+ progLbl.show ()
+
+ self.p1 = KProgress (self.page)
+ self.p2 = KProgress (15, self.page)
+ self.p1.setRange (0, 25)
+ self.p2.setRange (0, 25)
+
+ self.p1.setGeometry (x, y + 80, 125, 20)
+ self.p2.setGeometry (x, y + 120, 125, 20)
+
+ self.p2.setPercentageVisible (0)
+
+ self.p1.show ()
+ self.p2.show ()
+
+ self.total = 0
+
+ y = y + 150
+ sepLbl = QLabel ("KSeparator", self.page)
+ sepLbl.setGeometry (x, y, 95, 20)
+ sepLbl.show ()
+
+ sep = KSeparator (QFrame.HLine, self.page)
+ sep.setGeometry (x, y + 20, 75, 10)
+ sep.show ()
+
+
+ self.page.show ()
+
+ self.add1 (self)
+
+ def add1 (self, junk = 0):
+ self.total = self.total + 1
+ self.p1.advance (1)
+ self.p2.advance (1)
+
+ if self.total < 26:
+ QTimer.singleShot (100, self.add1)
+
+
+
+class Page8:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 40
+ y = 10
+
+ dpLbl = QLabel ("KDatePicker", self.page)
+ dpLbl.setGeometry (x, y, 95, 20)
+ dpLbl.show ()
+
+ dp = KDatePicker (self.page)
+ dp.setGeometry (x, y + 20, 300, 170)
+ dp.show ()
+
+ y = y + 210
+
+ dtLbl = QLabel ("KDateTable", self.page)
+ dtLbl.setGeometry (x, y, 95, 20)
+ dtLbl.show ()
+
+ dt = KDateTable (self.page)
+ dt.setGeometry (x, y + 20, 300, 130)
+ dt.show ()
+
+class PageThisApp:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ taLbl = QLabel ("This application uses KMainWindow as its top level widget\n and KListView in the"\
+ " left-hand panel", self.page)
+ taLbl.setGeometry (x, y, 300, 60)
+ taLbl.show ()
+
+class PageNotImpl:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ niLbl = QLabel ("Nothing is currently implemented for this widget", self.page)
+ niLbl.setGeometry (x, y, 300, 20)
+ niLbl.show ()
+
+class CSDlg (KDialog):
+ def __init__ (self, parent, name = "char select dlg", modal = False):
+ KDialog.__init__ (self, parent, name, modal)
+
+ self.setGeometry (150, 50, 700, 320)
+ x = 10
+ y = 10
+
+ csLbl = QLabel ("KCharSelect", self)
+ csLbl.setGeometry (x, y, 95, 20)
+ csLbl.show ()
+
+ cs = KCharSelect (self, "chselect", QString.null, QChar (' '), 0)
+ cs.setGeometry (x, y + 20, 680, 250)
+ cs.show ()
+
+ closeBtn = QPushButton ("Close", self)
+ closeBtn.setGeometry ( 610, 280, 60, 22)
+ closeBtn.show ()
+
+ self.connect (closeBtn, SIGNAL ("clicked ()"), self.closeClicked)
+
+ def closeClicked (self):
+ self.done (1)
+
+def widKAnimWidget (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKAuthIcon (parent):
+ parent.currentPageObj = Page5 (parent)
+
+def widKButtonBox (parent):
+ parent.currentPageObj = Page5 (parent)
+
+def widKCharSelect (parent):
+ dlg = CSDlg (parent)
+ dlg.show ()
+
+def widKColorButton (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKColorCells (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKColorCombo (parent):
+ parent.currentPageObj = Page2 (parent)
+
+def widKColorPatch (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKComboBox (parent):
+ parent.currentPageObj = Page2 (parent)
+
+def widKCompletionBox (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKContainerLayout (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKCursor (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKDatePicker (parent):
+ parent.currentPageObj = Page8 (parent)
+
+def widKDateTable (parent):
+ parent.currentPageObj = Page8 (parent)
+
+def widKDirectionButton (parent):
+ parent.currentPageObj = Page5 (parent)
+
+def widKDualColorButton (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKEdit (parent):
+ parent.currentPageObj = Page1 (parent)
+
+def widKEditListBox (parent):
+ parent.currentPageObj = Page2 (parent)
+
+def widKFontChooser (parent):
+ parent.currentPageObj = Page3 (parent)
+
+def widKHSSelector (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKIconView (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKJanusWidget (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+#def widKKeyButton (parent):
+# parent.currentPageObj = Page5 (parent)
+
+def widKKeyChooser (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKLed (parent):
+ parent.currentPageObj = Page6 (parent)
+
+def widKLineEdit (parent):
+ parent.currentPageObj = Page1 (parent)
+
+def widKListBox (parent):
+ parent.currentPageObj = Page2 (parent)
+
+def widKListView (parent):
+ parent.currentPageObj = PageThisApp (parent)
+
+def widKNumInput (parent):
+ parent.currentPageObj = Page1 (parent)
+
+def widKPaletteTable (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKPasswordEdit (parent):
+ parent.currentPageObj = Page5 (parent)
+
+def widKProgress (parent):
+ parent.currentPageObj = Page7 (parent)
+
+def widKRootPixmap (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKMainWindow (parent):
+ parent.currentPageObj = PageThisApp (parent)
+
+def widKRestrictedLine (parent):
+ parent.currentPageObj = Page1 (parent)
+
+def widKRuler (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKSelector (parent):
+ parent.currentPageObj = Page4 (parent)
+
+def widKSeparator (parent):
+ parent.currentPageObj = Page7 (parent)
+
+def widKSqueezedTextLabel (parent):
+ parent.currentPageObj = Page1 (parent)
+
+def widKTabButton (parent):
+ parent.currentPageObj = Page5 (parent)
+
+def widKTabCtl (parent):
+ parent.currentPageObj = Page7 (parent)
+
+def widKTextBrowser (parent):
+ parent.currentPageObj = PageNotImpl (parent)
+
+def widKURLLabel (parent):
+ parent.currentPageObj = Page5 (parent)
+
+
+if __name__ == "__main__":
+ print
+ print "Please run uisampler.py"
+ print \ No newline at end of file
diff --git a/python/pykde/examples/uimodules/uixml.py b/python/pykde/examples/uimodules/uixml.py
new file mode 100644
index 00000000..baa6c866
--- /dev/null
+++ b/python/pykde/examples/uimodules/uixml.py
@@ -0,0 +1,45 @@
+import os
+
+from qt import QLabel
+
+from kdecore import KApplication
+
+class PageLaunch:
+ def __init__ (self, parent):
+ self.page = parent.addPage ()
+
+ x = 10
+ y = 10
+
+ launchLbl = QLabel ("Launching application ... please wait\n\nClose launched application to continue", self.page)
+ launchLbl.setGeometry (x, y, 300, 80)
+ launchLbl.show ()
+
+ self.page.show ()
+
+ KApplication.kApplication ().processEvents ()
+
+def xmlKActionCollection (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
+def xmlKEditToolbar (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
+def xmlKEditToolbarWidget (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
+def xmlKXMLGUIBuilder (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
+def xmlKXMLGUIClient (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
+def xmlKXMLGUIFactory (parent):
+ parent.currentPageObj = PageLaunch (parent)
+ os.system ("python xmlmenudemo.py")
+
diff --git a/python/pykde/examples/uiqxembed.py b/python/pykde/examples/uiqxembed.py
new file mode 100644
index 00000000..4f223b70
--- /dev/null
+++ b/python/pykde/examples/uiqxembed.py
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+"""
+
+"""
+import sys
+
+from qt import QIconSet, QProcess, QTimer, SIGNAL, SLOT
+
+from kdecore import KAboutData, KApplication, KCmdLineArgs, KGlobal, KIcon
+from kdecore import KWin, KWinModule
+from kdeui import KComboBox, KMainWindow, KPushButton, QXEmbed
+
+
+## add the missing items to the pyuic-generated module
+import qxembedexample
+qxembedexample.KComboBox = KComboBox
+qxembedexample.KPushButton = KPushButton
+
+from qxembedexample import QXEmbedExample
+
+
+def getIcon(name, group=KIcon.NoGroup, size=KIcon.SizeSmall):
+ """ returns a kde icon by name
+
+ """
+ return KGlobal.instance().iconLoader().loadIcon(name, group, size)
+
+def getIconSet(name, group=KIcon.NoGroup, size=KIcon.SizeSmall):
+ """ returns a kde icon set by name
+
+ """
+ return KGlobal.instance().iconLoader().loadIconSet(name, group, size)
+
+
+def getWindow(pid):
+ """ return a window info object for the process id (or None)
+
+ """
+ for winid in KWinModule().windows():
+ info = KWin.info(winid)
+ if pid == info.pid:
+ return info
+
+
+class ExampleForm(QXEmbedExample):
+ """ wraps the pyuic generated form class with our behavior
+
+ """
+ def __init__(self, parent):
+ QXEmbedExample.__init__(self, parent)
+ combo = self.appNameCombo
+ items = [(idx, '%s' % combo.text(idx)) for idx in range(combo.count())]
+ for idx, name in items:
+ combo.changeItem(getIcon(name), name, idx)
+ self.mainTabs.setTabIconSet(self.tab, getIconSet('help'))
+ self.launchButton.setIconSet(getIconSet('exec'))
+ self.launchButton.setText('Launch and Embed')
+
+ def launchApp(self):
+ """ launch the process selected in the combo
+
+ """
+ name = self.appNameCombo.currentText()
+ self.proc = proc = QProcess()
+ proc.addArgument(name)
+ code = proc.start()
+ if code:
+ pid = proc.processIdentifier()
+ self.launchPid = pid ## cheap
+ QTimer.singleShot(2000, self.embedLaunchedWindow)
+ else:
+ print 'failed to start %s' % name
+ return
+
+ def embedLaunchedWindow(self):
+ """ embed the window of the last launched pid
+
+ """
+ pid = self.launchPid
+ winobj = getWindow(pid)
+ if winobj:
+ tabs = self.mainTabs
+ embedded = QXEmbed(self)
+ caption = '%s (%s)' % (winobj.name, pid, )
+ tabs.insertTab(embedded, caption)
+ embedded.embed(winobj.win)
+ tabs.showPage(embedded)
+ pxm = KWin.icon(winobj.win)
+ tabs.setTabIconSet(embedded, QIconSet(pxm))
+
+
+class ExampleMain(KMainWindow):
+ """ an example main window
+
+ """
+ def __init__ (self, *args):
+ KMainWindow.__init__(self, *args)
+ self.setGeometry(0, 0, 400, 400)
+ self.embed = embed = ExampleForm(self)
+ self.setCentralWidget(embed)
+
+
+if __name__ == '__main__':
+ aname = 'PyKDE QXEmbed Sample'
+ desc = 'A Simple PyKDE QXEmbed Sample'
+ ver = '1.0'
+ lic = KAboutData.License_GPL
+ author = 'Troy Melhase'
+ authormail = 'troy@gci.net'
+
+ about = KAboutData(aname, aname, ver, desc, lic, '%s (c) 2004' % authormail)
+ about.addAuthor(author, 'hi, mom!', authormail)
+ about.addAuthor ('Jim Bublitz', 'For PyKDE', 'jbublitz@nwinternet.com')
+ KCmdLineArgs.init(sys.argv, about)
+ app = KApplication()
+ mainWindow = ExampleMain()
+ mainWindow.show()
+ app.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()'))
+ app.exec_loop()
diff --git a/python/pykde/examples/uisampler.py b/python/pykde/examples/uisampler.py
new file mode 100644
index 00000000..00dd006e
--- /dev/null
+++ b/python/pykde/examples/uisampler.py
@@ -0,0 +1,227 @@
+import sys
+sys.path.append ("./uimodules")
+
+from qt import QSplitter, QWidgetStack, QWidget, QListViewItem, SIGNAL, QCString , QScrollView, QRect, Qt
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from kdeui import KMainWindow, KListView
+
+from uidialogs import *
+from uiwidgets import *
+from uimenus import *
+from uixml import *
+from uimisc import *
+
+False = 0
+True = not False
+
+listItems = {"Dialogs":
+ {"KAboutDialog": ["KAboutApplication", "KAboutContainer", "KImageTrackLabel",\
+ "KAboutContainerBase", "KAboutContributor", "KAboutWidget"],\
+ "KAboutKDE": [],\
+ "KBugReport": [],\
+ "KColorDialog": [],\
+ "KDialog": [],\
+ "KDialogBase": ["KDialogBaseButton", "KDialogBase::SButton", "KDialogBaseTile"],\
+ "KFontDialog": [],\
+ "KKeyDialog": [],\
+ "KLineEditDlg": [],\
+ "KMessageBox": [],\
+ "KPasswordDialog": [],\
+ "KWizard": []},\
+ "Widgets":
+ {"KAnimWidget": [],\
+ "KAuthIcon": ["KRootPermsIcon", "KWritePermsIcon"],\
+ "KButtonBox": [],\
+ "KCharSelect": ["KCharSelectTable"],\
+ "KColorButton": [],\
+ "KColorCells": [],\
+ "KColorCombo": [],\
+ "KColorPatch": [],\
+ "KComboBox": [],\
+ "KCompletionBox": [],\
+ "KContainerLayout": ["KContainerLayout::KContainerLayoutItem"],\
+ "KCursor": [],\
+ "KDatePicker": ["KDateInternalMonthPicker", "KDateInternalYearSelector"],\
+ "KDateTable": [],\
+ "KDualColorButton": [],\
+ "KEdit": ["KEdFind", "KEdGotoLine", "KEdReplace"],\
+ "KEditListBox": [],\
+ "KFontChooser": [],\
+ "KHSSelector": [],\
+ "KIconView": [],\
+ "KJanusWidget": ["KJanusWidget::IconListBox"],\
+ "KKeyChooser": [],\
+ "KLed": [],\
+ "KLineEdit": [],\
+ "KListBox": [],\
+ "KListView": [],\
+ "KNumInput": ["KDoubleNumInput", "KIntNumInput"],\
+ "KPaletteTable": [],\
+ "KPasswordEdit": [],\
+ "KProgress": [],\
+ "KRootPixmap": [],\
+ "KMainWindow": [],\
+ "KRestrictedLine": [],\
+ "KRuler": [],\
+ "KSelector": ["KGradientSelector", "KValueSelector", "KHSSelector", "KXYSelector"],\
+ "KSeparator": [],\
+ "KSqueezedTextLabel": [],\
+ "KTabCtl": [],\
+ "KTextBrowser": [],\
+ "KURLLabel": []},\
+ "XML":
+ {"KActionCollection": [],\
+ "KEditToolbar": [],\
+ "KEditToolbarWidget": [],\
+ "KXMLGUIBuilder": [],\
+ "KXMLGUIClient": ["KXMLGUIClient::DocStruct"],\
+ "KXMLGUIFactory": []},\
+ "Menus/Toolbars":
+ {"KAccelMenu": [],\
+ "KAction": ["KFontAction", "KFontSizeAction", "KListAction", "KRecentFilesAction", "KRadioAction",\
+ "KSelectAction", "KToggleAction"],\
+ "KActionMenu": [],\
+ "KActionSeparator": [],\
+ "KContextMenuManager": [],\
+ "KDCOPActionProxy": [],\
+ "KHelpMenu": [],\
+ "KMenuBar": [],\
+ "KPanelApplet": [],\
+ "KPanelExtension": [],\
+ "KPanelMenu": [],\
+ "KPopupFrame": [],\
+ "KPopupMenu": [],\
+ "KPopupTitle": [],\
+ "KStatusBar": [],\
+ "KStatusBarLabel": [],\
+ "KStdAction": [],\
+ "KToolBar": ["KToolBarButton", "KToolBarButtonList", "KToolBarPopupAction",\
+ "KToolBarRadioGroup", "KToolBarSeparator"],\
+ "KWindowListMenu": []},\
+ "Other":
+ {"KAlphaPainter": [],\
+ "KCModule": [],\
+ "KColor": [],\
+ "KColorDrag": [],\
+ "KCommand": ["KMacroCommand"],\
+ "KCommandHistory": [],\
+ "KDateValidator": [],\
+ "KDockWindow": ["KDockButton_Private - KPanelMenu", "KDockButton_Private",\
+ "KDockSplitter", "KDockTabCtl_PrivateStruct", "KDockWidgetAbstractHeader",\
+ "KDockWidgetAbstractHeaderDrag", "KDockWidgetHeader",\
+ "KDockWidgetHeaderDrag", "KDockWidgetPrivate"],\
+ "KFloatValidator": [],\
+ "KIntValidator": [],\
+ "KPixmapIO": [],\
+ "KSharedPixmap": [],\
+ "KSystemTray": [],\
+ "KThemeBase": ["KThemeCache", "KThemePixmap", "KThemeStyle"],\
+ "QXEmbed": []}}
+
+prefix = {"Dialogs": "dlg", "Widgets": "wid", "XML": "xml", "Menus/Toolbars": "menu", "Other": "misc"}
+
+# The following leave about 375 x 390 for the rt hand panel
+mainGeom = QRect (0, 0, 640, 500)
+treeWidth = 220
+
+blankMsg = """ UISampler - provides examples of PyKDE widgets
+
+Select a dialog/widget/menu/etc example from the tree at left
+"""
+
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.setCaption ("Samples of PyKDE widget usage")
+ self.setGeometry (mainGeom)
+
+ # create the main view - list view on the left and an
+ # area to display frames on the right
+ self.mainView = QSplitter (self, "main view")
+ self.tree = KListView (self.mainView, "tree")
+ self.page = QWidgetStack (self.mainView, "page")
+ self.blankPage = QWidget (self.page, "blank")
+ self.blankPage.setGeometry (0, 0, 375, 390)
+ self.blankPage.setBackgroundMode (QWidget.PaletteBase)
+
+ blankLbl = QLabel (blankMsg, self.blankPage)
+ blankLbl.setGeometry (40, 10, 380, 150)
+ blankLbl.setBackgroundMode (QWidget.PaletteBase)
+
+ blankPM = QPixmap ("pytestimage.png")
+ pmLbl = QLabel ("", self.blankPage)
+ pmLbl.setPixmap (blankPM)
+ pmLbl.setGeometry (40, 160, 300, 200)
+ pmLbl.setBackgroundMode (QWidget.PaletteBase)
+
+ self.page.addWidget (self.blankPage, 1)
+ self.page.raiseWidget (1)
+
+ self.setCentralWidget (self.mainView)
+
+ self.initListView ()
+ self.connect (self.tree, SIGNAL ("clicked (QListViewItem *)"), self.lvClicked)
+
+ self.edit = None
+ self.currentPageObj = None
+
+ def initListView (self):
+ self.tree.addColumn ("Category", treeWidth - 21)
+# self.tree.setMaximumWidth (treeWidth)
+ self.mainView.setSizes ([treeWidth, 375])
+ self.tree.setRootIsDecorated (True)
+ self.tree.setVScrollBarMode (QScrollView.AlwaysOn)
+ topLevel = listItems.keys ()
+ for item_1 in topLevel:
+ parent = QListViewItem (self.tree, item_1)
+ secondLevel = listItems [item_1].keys ()
+ for item_2 in secondLevel:
+ child = QListViewItem (parent, item_2)
+ for item_3 in listItems [item_1][item_2]:
+ QListViewItem (child, item_3)
+
+ def lvClicked (self, lvItem):
+ if not lvItem:
+ return
+
+ if lvItem.text (0).latin1 () in listItems.keys ():
+ return
+
+ p = lvItem.parent ()
+ if p.text (0).latin1 () in listItems.keys ():
+ pfx = prefix [p.text (0).latin1 ()]
+ funcCall = pfx + lvItem.text (0).latin1 () + "(self)"
+ else:
+ pfx = prefix [p.parent ().text (0).latin1 ()]
+ funcCall = pfx + lvItem.parent ().text (0).latin1 () + "(self)"
+
+ eval (funcCall)
+
+ def addPage (self):
+ self.edit = None
+ self.currentPageObj = None
+ current = self.page.widget (2)
+ if current:
+ self.page.removeWidget (current)
+ del current
+
+ newPage = QWidget (self.page)
+ newPage.setGeometry (0, 0, 375, 390)
+# newPage.setBackgroundMode (QWidget.PaletteBase)
+ self.page.addWidget (newPage, 2)
+ self.page.raiseWidget (2)
+
+ return newPage
+
+
+#-------------------- main ------------------------------------------------
+
+appName = "UISampler"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
+
diff --git a/python/pykde/examples/xmlmenudemo.py b/python/pykde/examples/xmlmenudemo.py
new file mode 100644
index 00000000..ab91dd56
--- /dev/null
+++ b/python/pykde/examples/xmlmenudemo.py
@@ -0,0 +1,291 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses KDE classes and methods that simplify the task of building and
+operating a GUI. It is recommended that this approach be used, rather
+than the primitive approach in menuapp1.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys, os
+
+from qt import QPopupMenu, SIGNAL, QLabel, QIconSet
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KIcon, KIconLoader, KShortcut, KGlobal
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction, KToggleAction, KFontSizeAction, KFontAction, KRadioAction,\
+ KActionSeparator, KActionMenu, KWindowListMenu, KXMLGUIClient, KActionCollection
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initActions ()
+ self.setGeometry (0, 0, 350, 200)
+
+ # The second arg of createGUI needs to be 0 (or False)
+ # to enable XMLGUI features like ActionList (in 'dynamicActions')
+ # If the default is used (True), the dynamic actions will not
+ # appear in the menus
+ self.createGUI (os.path.join (mainpath, "xmlmenudemoui.rc"), 0)
+
+ self.dynamicActions()
+
+ # Can't do this until the toolBar has been created in createGUI
+ stretchlbl = QLabel ("", self.toolBar ())
+ self.toolBar ().setStretchableWidget (stretchlbl)
+
+ self.initStatusBar ()
+
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # This is used in all of the KAction/KStdAction constructors --
+ # Seems more efficient to only do the call once
+ acts = self.actionCollection ()
+
+ # This is used often enough, we just define it here
+ scNull = KShortcut.null ()
+
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew, acts)
+ self.openAction = KStdAction.open (self.slotOpen, acts)
+ self.saveAction = KStdAction.save (self.slotSave, acts)
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, acts)
+ self.printAction = KStdAction.print_ (self.slotPrint, acts)
+ self.quitAction = KStdAction.quit (self.slotQuit, acts)
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo, acts)
+ self.redoAction = KStdAction.redo (self.slotRedo, acts)
+ self.cutAction = KStdAction.cut (self.slotCut, acts)
+ self.copyAction = KStdAction.copy (self.slotCopy, acts)
+ self.pasteAction = KStdAction.paste (self.slotPaste, acts)
+ self.findAction = KStdAction.find (self.slotFind, acts)
+ self.findNextAction = KStdAction.findNext (self.slotFindNext, acts)
+ self.replaceAction = KStdAction.replace (self.slotReplace, acts)
+
+ # NOTE!!!! You must specify a parent and name for the action object in its constructor
+ # Normally in a constructor like
+ #
+ # someObject (QWidget *parent = 0, const char *name = 0)
+ #
+ # the parent may or may not be assigned, but widgets usually ignore the
+ # name argument. For an action of *any* type (other than KStdAction),
+ # the 'name' argument is what is used to load the action into the menus
+ # and toolBar (in the line below, "specialActionName"). The XMLGUI mechanism
+ # has no way to find out about the action objects except through their
+ # object names - the variable the object is assigned to ('self.specialAction')
+ # has no meaning in XNLGUI terms except through the objects 'name' member value
+
+ self.specialAction = KAction (i18n ("Special"), scNull, self.slotSpecial, acts, "specialActionName")
+
+ # Demo menu items
+
+ # KToggleAction has an isChecked member and emits the "toggle" signal
+ self.toggle1Action = KToggleAction ("Toggle 1", scNull, acts, "toggle1Action")
+ self.toggle2Action = KToggleAction ("Toggle 2", scNull, self.slotToggle2, acts, "toggle2Action")
+
+ # A separator - create once/use everywhere
+ self.separateAction = KActionSeparator (acts, "separateAction")
+
+ # Font stuff in menus or toolbar
+ self.fontAction = KFontAction ("Font", scNull, acts, "fontAction")
+ self.fontSizeAction = KFontSizeAction ("Font Size", scNull, acts, "fontSizeAction")
+
+ self.fontAction.setComboWidth (150)
+ self.fontSizeAction.setComboWidth (75)
+
+ # Need to assign an icon to actionMenu below
+ icons = KIconLoader ()
+ iconSet = QIconSet (icons.loadIcon ("viewmag", KIcon.Toolbar))
+
+ # Nested menus using KActions (also nested on toolbar)
+ self.actionMenu = KActionMenu ("Action Menu", acts, "actionMenu")
+ self.actionMenu.setIconSet (iconSet)
+
+ # By using KStdAction here, the XMLGUI mechanism will automatically
+ # create a 'View' menu and insert "Zoom In" and "Zoom Out" objects
+ # in it. This happens because before parsing our *ui.rc file,
+ # the standard KDE file config/ui/ui_standards.rc is parsed, and
+ # then our *ui.rc file is merged with the result - this gives KDE
+ # menus and toolBars a standard "look" and item placement (including
+ # separators). Creating the KStdActions alone is sufficient - you
+ # could delete their references from the *ui.rc file and the menu
+ # items would still be created via ui_standards.rc
+ self.actionMenu.insert (KStdAction.zoomIn (self.slotZoomIn, acts))
+ self.actionMenu.insert (KStdAction.zoomOut (self.slotZoomOut, acts))
+
+ self.radio1Action = KRadioAction ("Radio 1", scNull, self.slotRadio, acts, "radio1")
+ self.radio1Action.setExclusiveGroup ("Radio")
+ self.radio1Action.setChecked (1)
+ self.radio2Action = KRadioAction ("Radio 2", scNull, self.slotRadio, acts, "radio2")
+ self.radio2Action.setExclusiveGroup ("Radio")
+ self.radio3Action = KRadioAction ("Radio 3", scNull, self.slotRadio, acts, "radio3")
+ self.radio3Action.setExclusiveGroup ("Radio")
+
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+ def dynamicActions (self):
+ # This creates something like a 'recent files list' in the 'File' menu
+ # (There is a KRecentFilesAction that probably should be used instead,
+ # but this demos the use of action lists)
+ # The code here corresponds to the <ActionList name="recent"/> entry
+ # in the rc file
+
+ # Just fake some filenames for now
+ fakeFiles = ["kaction.sip", "kxmlguiclient.sip"]
+
+ # Clear the old entries, so we don't end up accumulating entries in the menu
+ self.unplugActionList("recent");
+ self.dynamicActionsList = []
+
+ # Create a KAction for each entry and store the KActions in a list
+ # Use 'None' for the KActionCollection argument in the KAction constructor
+ # in this case only
+ for i in range (len (fakeFiles)):
+ act = KAction (i18n (" ".join (["&" + str (i), fakeFiles [i]])), KShortcut.null (),\
+ self.slotFake, None, fakeFiles [i][:-4] + "open")
+ self.dynamicActionsList.append(act)
+
+ # Update the menu with the most recent KActions
+ self.plugActionList("recent", self.dynamicActionsList)
+
+
+#-------------------- slots -----------------------------------------------
+
+ def slotFake (self):
+ # sender () should be called before anything else
+ # (including "notImpl") so the correct sender
+ # value is returned
+ sender = self.sender ().name ()
+ self.notImpl ("Recent files (%s)" % sender)
+
+ # 'id' is for toolbar button signals - ignored for menu signals
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def slotToggle2 (self):
+ self.notImpl ("Toggle")
+
+ def slotZoomIn (self):
+ self.notImpl ("Zoom In")
+
+ def slotZoomOut (self):
+ self.notImpl ("Zoom Out")
+
+ def slotRadio (self):
+ sender = self.sender ().name ()
+ self.notImpl ("Radio %s" % sender [-1])
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+
+# The appName (xmlmenudemo - first argument) is required
+# if the program is to automatically locate it *ui.rc file
+aboutData = KAboutData ("xmlmenudemo", "xmlmenudemo",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+mainpath = os.path.dirname (os.path.abspath (sys.argv[0]))
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/examples/xmlmenudemoui.rc b/python/pykde/examples/xmlmenudemoui.rc
new file mode 100644
index 00000000..58f07cf6
--- /dev/null
+++ b/python/pykde/examples/xmlmenudemoui.rc
@@ -0,0 +1,49 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd" ><kpartgui name="xmlmenudemo" version="1">
+<MenuBar>
+ <Menu name="file"><text>&amp;File</text>
+ <Action name="newAction"/>
+ <Action name="openAction"/>
+ <Action name="saveAction"/>
+ <Action name="saveAsAction"/>
+ <Action name="printAction"/>
+ <Action name="quitAction"/>
+ <ActionList name="recent" />
+ </Menu>
+ <Menu name="edit"><text>&amp;Edit</text>
+ <Action name="undoAction"/>
+ <Action name="redoAction"/>
+ <Action name="cutAction"/>
+ <Action name="copyAction"/>
+ <Action name="pasteAction"/>
+ <Action name="findAction"/>
+ <Action name="findNextAction"/>
+ <Action name="replaceAction"/>
+ <Action name="specialActionName"/>
+ </Menu>
+ <Menu name="demo"><text>&amp;Demo</text>
+ <Action name="toggle1Action"/>
+ <Action name="toggle2Action"/>
+ <Action name="separateAction"/>
+ <Action name="fontAction"/>
+ <Action name="fontSizeAction"/>
+ <Action name="separateAction"/>
+ <Action name="actionMenu"/>
+ <Action name="radio1"/>
+ <Action name="radio2"/>
+ <Action name="radio3"/>
+ </Menu>
+</MenuBar>
+<ToolBar name="mainToolBar">
+ <Action name="actionMenu"/>
+ <Action name="separateAction"/>
+ <Action name="separateAction"/>
+ <Action name="fontAction"/>
+ <Action name="separateAction"/>
+ <Action name="fontSizeAction" comboWidth="75"/>
+ <Action name="radio1"/>
+ <Action name="radio2"/>
+ <Action name="radio3"/>
+ <Merge/>
+</ToolBar>
+<ActionProperties />
+</kpartgui>
diff --git a/python/pykde/extensions/dcopexport.py b/python/pykde/extensions/dcopexport.py
new file mode 100644
index 00000000..d724adef
--- /dev/null
+++ b/python/pykde/extensions/dcopexport.py
@@ -0,0 +1,196 @@
+"""
+Copyright 2004 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+"""
+This is a re-implementation in Python of pcop.cpp written by Torben Weis
+and Julian Rockey, modified for Python and PyKDE.
+
+To "DCOP-enable" an application, subclass DCOPExObj (be sure to call the
+base class' __init__ method) and use 'addMethod' to identify the methods
+which will be exposed via DCOP along with names of the Python methods that
+implement the exposed methods.
+
+A DCOP client application when doing DCOPCLient.call (...) will end up
+running the 'process' method which demarshalls the arguments, calls the
+specified Python method with the arg values passed in, and marshalls the
+return value to be returned to the caller.
+
+DCOPExMeth is basically a data structure to hold the parsed method info
+(name, arg list, return type, signature)
+
+This module requires the dcopext module, but only for the numericTypes and
+stringTypes lists
+"""
+
+
+from dcop import DCOPObject, DCOPClient
+from kdecore import dcop_add, dcop_next
+from qt import QString, QCString, QDataStream, IO_ReadOnly, IO_WriteOnly
+
+numericTypes = ["char", "bool", "short", "int", "long", "uchar", "ushort", "uint", "ulong",
+ "unsigned char", "unsigned short", "unsigned int", "unsigned long",
+ "Q_INT32", "pid_t", "float", "double"]
+stringTypes = ["QString", "QCString"]
+
+class DCOPExObj (DCOPObject):
+ def __init__ (self, objid = None):
+ if isinstance (objid, str):
+ DCOPObject.__init__ (self, objid)
+ else:
+ DCOPObject.__init__ (self)
+
+ self.methods = {}
+
+ def process (self, meth, data, replyType, replyData):
+ # normalize the method signature received
+ meth = str (DCOPClient.normalizeFunctionSignature (meth)).replace (">", "> ")
+
+ # see if this method is available from us via DCOP
+ # if we don't have it, maybe DCOPObject already provides it (eg - qt object)
+ if not self.matchMethod (meth):
+ return DCOPObject.process(self, meth, data, replyType, replyData);
+
+ # demarshall the arg list for the actual method call and call the method
+ s = QDataStream (data, IO_ReadOnly)
+ arglist = []
+ count = len (self.method.argtypes)
+ if count == 0:
+ result = self.method.pymethod ()
+ else:
+ for i in range (len (self.method.argtypes)):
+ arglist.append (dcop_next (s, QCString (self.method.argtypes [i])))
+
+ result = self.method.pymethod (*arglist)
+
+ # marshall the result as 'replyData'
+ if self.method.rtype != "void":
+ s = QDataStream (replyData, IO_WriteOnly)
+ if self.method.rtype in numericTypes:
+ dcop_add (s, result, self.method.rtype)
+ elif self.method.rtype in stringTypes and isinstance (result, str):
+ dcop_add (s, eval ("%s('''%s''')" % (self.method.rtype, result)))
+ elif self.method.rtype.startswith ("QMap") or self.method.rtype.startswith ("QValueList"):
+ dcop_add (params, args [i], self.argtypes [i])
+ else:
+ dcop_add (s, result)
+
+ # use append because we want to return the replyType reference,
+ # not a new QCString
+ replyType.append (self.method.rtype)
+
+ # success
+ return True
+
+ def addMethod (self, signature, pymethod):
+ """
+ add a method to the dict - makes it available to DCOP
+ signature - a string representing the C++ form of the method declaration
+ with arg names removed (eg
+ pymethod - the Python method corresponding to the method in signature
+
+ example:
+ def someMethod (a, b):
+ return str (a + b)
+
+ signature = "QString someMethod (int, int)"
+ pymethod = someMethod
+ self.addMethod (signature, pymethod)
+
+ note that in this case you could add a second entry:
+
+ self.addMethod ("QString someMethod (float, float)", someMethod)
+
+ pymethod can also be a class method, for example - self.someMethod or
+ someClass.someMethod. In the second case, someClass has to be an instance
+ of a class (perhaps SomeClass), not the class itself.
+
+ self.methods is a dict holding all of the methods exposed, indexed by
+ method signature. In the example above, the signature would be:
+
+ someMethod(QString,QString)
+
+ or everything but the return type, which is stored in the dict entry.
+ The dict entry is a DCOPExMeth instance.
+ """
+ method = DCOPExMeth (signature, pymethod)
+ if method.sig:
+ self.methods [method.sig] = method
+ return method.sig != None
+
+ def matchMethod (self, meth):
+ # find the method in the dict if it's there
+ self.method = None
+ if meth in self.methods:
+ self.method = self.methods [meth]
+ return self.method != None
+
+ def functions (self):
+ # build the list of methods exposed for 'remoteFunctions' calls
+ # from the entries in the self.methods dict
+ funcs = DCOPObject.functions (self)
+ for func in self.methods.keys ():
+ funcs.append (" ".join ([self.methods [func].rtype, func]))
+ return funcs;
+
+class DCOPExMeth:
+ """
+ Encapsulates all of the method data - signature, arg list, return type
+ and corresponding Python method to be called
+ """
+ def __init__ (self, method, pymethod):
+ self.pymethod = pymethod
+ if not self.parseMethod (method):
+ self.fcnname = self.sig = self.rtype = self.argtypes = None
+
+ def parseMethod (self, method):
+ # strip whitespace
+ method = str (DCOPClient.normalizeFunctionSignature (method)).replace (">", "> ")
+
+ # the return type (rtype) and signature (sig)
+ self.rtype, tail = method.split (" ", 1)
+ self.sig = tail
+ if not tail:
+ return False
+ self.rtype = self.rtype.strip ()
+
+ i = tail.find ("(")
+ if i < 1:
+ return False
+
+ # the name of the method
+ self.fcnname = tail [:i].strip () + "("
+
+ # the list of arg types
+ self.argtypes = []
+ args = tail [i + 1 : -1].split (",")
+ if args and args != [""]:
+ for arg in args:
+ self.argtypes.append (arg.strip ())
+
+ return True
diff --git a/python/pykde/extensions/dcopext.py b/python/pykde/extensions/dcopext.py
new file mode 100644
index 00000000..539c4d6c
--- /dev/null
+++ b/python/pykde/extensions/dcopext.py
@@ -0,0 +1,721 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+
+"""
+Copyright 2004 Jim Bublitz (original author)
+ 2006 Mathias Panzenböck (panzi) <grosser.meister.morti@gmx.net>
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import re
+from dcop import DCOPClient
+from qt import QString, QCString, QByteArray, QDataStream, IO_ReadOnly, IO_WriteOnly
+from kdecore import dcop_add, dcop_next
+
+# XXX: 64 bit integers might be handeld wrong! pythons int is AFAIK 32 bit,
+# but pythons long is a arbitrary-precision integer. how to handle that?
+#
+# I think 64 bit types would be:
+# long long, unsigned long long, long long int, unsigned long long int,
+# Q_LLONG, Q_ULLONG, Q_INT64, Q_UINT64
+#
+# and on some (most?) systems:
+# QtOffset
+
+# add complex? complex is c99, not c++
+# but python has a complex type
+POD = set(['char','short','int','long','float','double'])
+typedefIntTypes = set(["uchar", "ushort", "uint", "ulong",
+ "Q_INT8", "Q_INT16", "Q_INT32", "Q_LONG",
+ "Q_UINT8", "Q_UINT16", "Q_UINT32", "Q_ULONG",
+ "sitze_t", "ssize_t", "int8_t", "int16_t", "int32_t",
+ "uint8_t", "uint16_t", "uint32_t", "pid_t", "uid_t",
+ "off_t"])
+# XXX string and std::string too?
+stringTypes = set(["QString", "QCString"])
+pythonStringTypes = set([QString, QCString, str])
+stringTypesDict = {"QString":QString,"QCString":QCString,"str":str,"unicode":unicode}
+
+VOID = 0
+BOOLEAN = 1 # XXX bool is not supported by dcop_add, but maybe some time...
+INTEGER = 2
+FLOAT = 3
+STRING = 4
+CLASS = 5
+
+"""
+(Most of this code is adapted from pydcop in kde-bindings, written by
+Torben Weis and Julian Rockey)
+
+The three classes below (DCOPApp, DCOPObj and DCOPMeth)
+allow transparent Python calls to DCOP methods. For example:
+
+ d = DCOPApp ("kicker", dcop)
+
+(where "kicker" is the complete name of an application and 'dcop' is
+the dcopClient instance owned by the KApplication creating the DCOPApp
+instance) creates a DCOPApp instance. All of the classes in this
+file "borrow" a DCOPClient instance from the calling application.
+
+ d.objects
+
+will return a list of the DCOP objects the application supplies.
+
+ o = d.object ("Panel")
+
+will return a DCOPObj corresponding to applications "Panel" DCOP object.
+
+Similarly:
+
+ o.methods
+
+will return a list of the methods the object supplies and
+
+ m = o.method ("panelSize")
+
+will return a DCOPMeth corresponding to Panel's panelSize() method.
+The m instance also holds the methods return type, list of argument types
+(argtypes) and argument names (argnames).
+
+ m.valid
+
+is a boolean which indicates if the method encapsulated by m is a valid
+method for the application/object specified.
+
+However it isn't necessary to explicitly create the DCOPObj and DCOPMeth.
+
+ d.Panel.panelSize.valid
+
+for example, will also indicate if the method is valid without creating the
+intermediate 'o' and 'm' instances explicitly.
+
+ d = DCOPApp ("kicker", dcop)
+ ok, res = d.Panel.panelSize ()
+
+is all the code necessary to perform the indicated DCOP call and return the
+value the call returns. In this case, panelSize takes no arguments and
+returns an int. 'ok' returns the status of the DCOP call (success = True,
+failure = False).
+
+ ok = d.Panel.addURLButton (QString ("http://www.kde.org"))
+
+would call addURLButton with the required argument, and return nothing but the DCOP call
+status(since its return type is 'void').
+
+Note that to instantiate a DCOPObj directly, you need to have a valid DCOPApp
+to pass to DCOPObj's __init__ method. Similarly, DCOPMeth requires a valid DCOPOBject.
+For example:
+
+ d = DCOPApp ("kicker", dcop)
+ o = DCOPObj (d, "Panel")
+ m = DCOPMeth (o, "panelSize")
+
+or
+
+ m = DCOPMeth (DCOPObj (DCOPApp ("kicker", dcop), "Panel"), "panelSize")
+
+"""
+
+# support stuff:
+def _xiter(*seqences):
+ iters = [iter(seq) for seq in seqences]
+
+ try:
+ while True:
+ yield [it.next() for it in iters]
+
+ except StopIteration:
+ pass
+
+def isStringType(s):
+ for stringType in pythonStringTypes:
+ if isinstance(s,stringType):
+ return True
+ return False
+
+# method syntax:
+# --------------
+# method ::= rtype identifier( args )
+# rtype ::= "void" | type
+# identifier ::= [_a-zA-Z][_a-zA-Z0-9]*
+# args ::= ( arg ("," arg)* )?
+# arg ::= type identifier?
+# type ::= namespace typespec | POD
+# POD ::= ( "unsigned" | "signed" )? identifier
+# namespace ::= (identifier "::")* | "::"
+# typespec ::= identifier ( "<" tpyelist ">" )?
+# typelist ::= (type | int) ("," (type | int) )*
+# int ::= "0x" [0-9a-fA-F]+ | [0-9]+
+
+class MethodParser(object):
+ ident_r = re.compile("[_a-zA-Z][_a-zA-Z0-9]*")
+ num_r = re.compile("0x[0-0a-fA-F]+|[0-9]+")
+
+ def __init__(self,method):
+ self.method = str(method)
+ self.rtype = None
+ self.name = None
+ self.args = []
+
+ self.parseMethod()
+
+ def __repr__(self):
+ return "%s(%s)" % (self.__class__.__name__, repr(self.method))
+
+ def getDecl(self):
+ return ''.join([self.name, '(', ','.join(argtp for (argtp, kind), argname in self.args), ')'])
+
+ def parseMethod(self):
+ i = self.parseRtype(self.method,0)
+ i, self.name = self.parseIdentifier(self.method,i)
+ i = self.parseArgs(self.method,i)
+
+ if i != len(self.method):
+ raise SyntaxError, "invalid function definition: %s" % self.method
+
+ @staticmethod
+ def skipws(s,i):
+ while s[i:i+1].isspace():
+ i += 1
+ return i
+
+ def parseArg(self,s,i):
+ i, tp = self.parseType(s,i)
+ name = self.parseIdentifier(s,i)
+
+ if name:
+ i, name = name
+ else:
+ name = None
+
+ return i, (tp, name)
+
+ def parseIdentifier(self,s,i):
+ i = MethodParser.skipws(s,i)
+ m = MethodParser.ident_r.match(s,i)
+
+ if m:
+ return m.end(), s[i:m.end()]
+ else:
+ return False
+
+ def parseInteger(self,s,i):
+ i = MethodParser.skipws(s,i)
+ m = MethodParser.num_r.match(s,i)
+
+ if m:
+ return m.end(), s[i:m.end()]
+ else:
+ return False
+
+ def parseArgs(self,s,i):
+ i = MethodParser.skipws(s,i)
+
+ if s[i:i+1] == '(':
+ i += 1
+ i = MethodParser.skipws(s,i)
+
+ while i < len(s) and s[i:i+1] != ')':
+ i, arg = self.parseArg(s,i)
+ i = MethodParser.skipws(s,i)
+
+ self.args.append(arg)
+
+ if s[i:i+1] == ',':
+ i += 1
+
+ else:
+ break
+
+ if s[i:i+1] == ')':
+ i += 1
+ else:
+ raise SyntaxError, "missing ')'."
+ else:
+ raise SyntaxError, "missing '('."
+
+ return i
+
+ def parseType(self,s,i):
+ num = self.parseNumberType(s,i)
+
+ if num:
+ return num
+
+ i, ns = self.parseNamespace(s,i)
+ i, tp = self.parseTypespec(s,i)
+
+ tp = ns + tp
+
+ if tp in stringTypes:
+ return i, (tp, STRING)
+
+ else:
+ return i, (tp, CLASS)
+
+ def parseTypespec(self,s,i):
+ i, tp = self.parseIdentifier(s,i)
+ i, tplst = self.parseTypelist(s,i)
+
+ return i, tp + tplst
+
+ def parseTypelist(self,s,i):
+ L = []
+ newi = MethodParser.skipws(s,i)
+
+ if s[newi:newi+1] == '<':
+ i = newi + 1
+ i = MethodParser.skipws(s,i)
+
+ L.append('<')
+
+ while i < len(s) and s[i:i+1] != '>':
+ # template-parameter can be integers!!
+
+ num = self.parseInteger(s,i)
+
+ if num:
+ i, tp = num
+
+ else:
+ i, (tp, kind) = self.parseType(s,i)
+
+ i = MethodParser.skipws(s,i)
+
+ L.append(tp)
+
+ if s[i:i+1] == ',':
+ i += 1
+ L.append(',')
+
+ else:
+ break
+
+
+ if s[i:i+1] == '>':
+ i += 1
+ L.append('>')
+
+ else:
+ raise SyntaxError, "missing '>'."
+
+ return i, ''.join(L)
+
+ def parseNumberType(self,s,i):
+ i, tp = self.parseIdentifier(s,i)
+ L = []
+
+ if tp == 'bool':
+ return i, (tp, BOOLEAN)
+
+ elif tp in typedefIntTypes:
+ return i, (tp, INTEGER)
+
+ elif tp in ('signed','unsigned'):
+ L.append(tp)
+ next = self.parseIdentifier(s,i)
+
+ if next and next[1] in POD:
+ i, tp = next
+
+ else:
+ # type can be fully quallyfied here!
+ return i, (tp, INTEGER)
+
+ if tp in POD:
+ L.append(tp)
+
+ else:
+ # else no number-type at all!
+
+ return False
+
+ # long
+ # long int
+ # long long
+ # long long int
+ # long double
+ # short
+ # short int
+
+ if tp == 'short':
+ # short
+
+ next = self.parseIdentifier(s,i)
+
+ if next and next[1] == 'int':
+ # short int
+
+ i, tp = next
+ L.append(tp)
+
+ elif tp == 'long':
+ # long
+
+ next = self.parseIdentifier(s,i)
+
+ if next:
+ if next[1] in ('int', 'double'):
+ # long int
+ # long double
+
+ i, tp = next
+ L.append(tp)
+
+ elif next[1] == 'long':
+ # long long
+ # XXX: this is 64bit! how should I handle this?
+
+ i, tp = next
+ L.append(tp)
+
+ next = self.parseIdentifier(s,i)
+
+ if next and next[1] == 'int':
+ # long long int
+
+ i, tp = next
+ L.append(tp)
+
+ if tp in ('float', 'double'):
+ return i, (' '.join(L), FLOAT)
+
+ else:
+ return i, (' '.join(L), INTEGER)
+
+ #
+ # ::
+ # foo::
+ # ::foo::
+ # foo::bar::
+ # ::foo::bar::
+ # ...
+ def parseNamespace(self,s,i):
+ L = []
+ i = MethodParser.skipws(s,i)
+
+ if s[i:i+2] == "::":
+ i += 2
+ L.append("::")
+
+ while i < len(s):
+ ns = self.parseIdentifier(s,i)
+
+ if not ns:
+ break
+
+ newi, ns = ns
+ newi = MethodParser.skipws(s,newi)
+
+ if s[newi:newi+2] != "::":
+ break
+
+ i = newi + 2
+
+ L.append( ns )
+ L.append( "::" )
+
+ return i, ''.join(L)
+
+
+ def parseRtype(self,s,i):
+ tp = self.parseIdentifier(s,i)
+
+ if tp and tp[1] == 'void':
+ i, tp = tp
+ self.rtype = (tp,VOID)
+
+ else:
+ i, self.rtype = self.parseType(s,i)
+
+ return i
+
+def DCOPAppsIter(client):
+ for app in client.registeredApplications():
+ yield str(app)
+
+class DCOPApp(object):
+ """
+ An object corresponding to an application with a DCOP interface
+
+ Can return a list of the DCOP objects the application exposes,
+ or create and return an instance of a specific DCOP object.
+ """
+ def __init__ (self, name, client):
+ self.appname = name
+ self.appclient = client
+
+ def __getattr__ (self, item ):
+ if item == "objects":
+ objs, ok = self.appclient.remoteObjects(self.appname)
+
+ if ok:
+ return objs
+ else:
+ return None
+
+ return DCOPObj(self, item)
+
+ def __iter__(self):
+ objs, ok = self.appclient.remoteObjects(self.appname)
+
+ if ok:
+ for obj in objs:
+ yield str(obj)
+
+ # sometimes a object-name is not a valid python identifier.
+ # in that case you can use dcopapp['non-valid::object/name']
+ def __getitem__(self,name):
+ return DCOPObj(self, name)
+
+ def object (self, object):
+ return DCOPObj (self, object)
+
+ def __repr__(self):
+ return '%s(%s,%s)' % (self.__class__.__name__,repr(self.appname),repr(self.appclient))
+
+ def __str__(self):
+ return repr(self)
+
+class DCOPObj(object):
+ """
+ An object corresponding to a specific DCOP object owned by a
+ specific application with a DCOP interface
+
+ Can return a list of the DCOP methods the object exposes,
+ or create and return an instance of a specific DCOP method.
+ """
+
+ def __init__ (self, *args):
+ if isStringType(args[0]):
+ self.appname = args [0]
+ self.objclient = args [1]
+ self.objname = args [2]
+ else:
+ self.appname = args [0].appname
+ self.objname = args [1]
+ self.objclient = args [0].appclient
+
+ self.objmethods = self.getMethods()
+
+ def __repr__( self ):
+ return "%s(%s,%s)" % (self.__class__.__name__,repr(self.appname), repr(self.objname))
+
+ def __str__( self ):
+ return repr(self)
+
+ def __getattr__( self, item ):
+ if item == "methods":
+ return self.objmethods
+
+ return DCOPMeth(self, item)
+
+ def __getitem__(self,name):
+ return DCOPMeth(self, name)
+
+ def getMethods(self):
+ flist, ok = self.objclient.remoteFunctions(self.appname, self.objname)
+
+ if ok:
+ return flist
+ else:
+ return None
+
+ def __iter__(self):
+ flist, ok = self.objclient.remoteFunctions(self.appname, self.objname)
+
+ if ok:
+ for meth in flist:
+ yield str(meth)
+
+ def getMethodNames(self):
+ return [MethodParser(meth).name for meth in self.objmethods]
+
+ def getParsedMethods(self):
+ return [MethodParser(meth) for meth in self.objmethods]
+
+ def method(self, method):
+ return DCOPMeth(self, method)
+
+class DCOPMeth(object):
+ """
+ An object corresponding to a specific DCOP method owned by a
+ specific DCOP object.
+ """
+ def __init__(self, dcopObj, name):
+ self.argtypes = []
+ self.argnames = []
+ self.fcnname = []
+ self.rtype = []
+ self.appname = dcopObj.appname
+ self.objname = dcopObj.objname
+ self.methname = name
+ self.client = dcopObj.objclient
+ self.methods = [str(meth) for meth in dcopObj.objmethods]
+ self.valid = self.findMethod()
+#
+# if not self.valid:
+# self.fcnname = self.rtype = self.argtypes = self.argnames = None
+
+ def __repr__( self ):
+ return "%s(%s,%s,%s)" % (self.__class__.__name__,repr(self.appname),repr(self.objname),repr(self.methname))
+
+ def __str__(self):
+ return repr(self)
+
+ def __call__(self, *args):
+ return self.dcop_call(args)
+
+ def __iter__(self):
+ return iter(self.fcnname)
+
+ def dcop_call(self, args):
+ # method valid?
+ if not self.valid:
+ return False, None
+
+ found = self.getMatchingMethod(args)
+
+ if found is None:
+ return False, None
+
+ meth, argtypes = found
+
+ ok, replyType, replyData = self.client.call(self.appname, self.objname, meth, self.__marshall(args,argtypes))
+
+ if ok:
+ return ok, self.__unmarshall(replyData, replyType)
+ else:
+ return ok, None
+
+ def getMatchingMethod(self,args):
+ count = len(args)
+
+ for funct, argtypes in _xiter(self.fcnname, self.argtypes):
+ if len(argtypes) == count:
+ match = True
+
+ for (wanttp, wantkind), have in _xiter(argtypes,args):
+ if wantkind == BOOLEAN:
+ if not isinstance(have, bool):
+ match = False
+ break
+
+ elif wantkind == INTEGER:
+ if not isinstance(have, int):
+ match = False
+ break
+
+ elif wantkind == FLOAT:
+ if not isinstance(have, float):
+ match = False
+ break
+
+ elif wantkind == STRING:
+ if not isStringType(have):
+ match = False
+ break
+
+ elif wanttp != have.__class__.__name__:
+ match = False
+ break
+
+ if match:
+ return funct, argtypes
+ return None
+
+ def findMethod(self):
+ has = False
+
+ for meth in self.methods:
+ fun = MethodParser(meth)
+
+ if fun.name == self.methname:
+ self.argtypes.append([argtp for argtp, argname in fun.args])
+ self.argnames.append([argname for argtp, argname in fun.args])
+ self.rtype.append(fun.rtype)
+ self.fcnname.append(fun.getDecl())
+
+ has = True
+
+ return has
+
+ def __marshall(self, args, argtypes):
+ data = QByteArray()
+ if argtypes == []:
+ return data
+
+ params = QDataStream (data, IO_WriteOnly)
+
+ for arg, (argtype, argkind) in _xiter(args, argtypes):
+ if argkind == BOOLEAN:
+ # XXX for now, let bools be handelt like int
+ dcop_add(params, int(arg), 'int')
+
+ elif argkind in (INTEGER, FLOAT):
+ dcop_add(params, arg, argtype)
+
+ elif argkind == STRING:
+ # convert it to the right string type:
+ if argtype != arg.__class__.__name__:
+ arg = stringTypesDict[argtype](arg)
+
+ dcop_add(params, arg)
+
+ elif argtype.startswith("QMap") or argtype.startswith("QValueList"):
+ dcop_add(params, arg, argtype)
+
+ # XXX:
+ # Is 'isinstance(arg, eval(argtype))' really good?
+ # What if 'argtype' is located in some modul? Like 'qt.QString'.
+ # Then this will fail (but it should not!).
+ # And the worst thing: the eval() will raise a NameError!
+ #
+ # On the other hand 'arg.__class__.__name__ == argtype' has the
+ # disadvantage that it can't be a derived class!
+ #
+ # Would no check at all be better??
+ #
+ # But I doubt a derived class would be ok anyway. I have to check
+ # this in the DCOP-docu, but I think a derived class would not be
+ # correctly unmarshalled, because a derived class could be marshalled
+ # in a total different way to it's super-class.
+ elif arg.__class__.__name__ == argtype:
+ dcop_add(params, arg)
+
+ else:
+ raise TypeError, "expected type %s, got type %s." % (argtype, arg.__class__.__name__)
+
+ return data
+
+ def __unmarshall(self, data, type_):
+ s = QDataStream(data, IO_ReadOnly)
+
+ if str(type_) in stringTypes:
+ return str(dcop_next(s, type_))
+ else:
+ return dcop_next(s, type_)
diff --git a/python/pykde/extra/kde300/kaccelaction.h b/python/pykde/extra/kde300/kaccelaction.h
new file mode 100644
index 00000000..a5689e45
--- /dev/null
+++ b/python/pykde/extra/kde300/kaccelaction.h
@@ -0,0 +1,202 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/*
+ KAccelAction holds information an a given action, such as "Execute Command"
+
+ 1) KAccelAction = "Execute Command"
+ Default3 = "Alt+F2"
+ Default4 = "Meta+Enter;Alt+F2"
+ 1) KShortcut = "Meta+Enter"
+ 1) KKeySequence = "Meta+Enter"
+ 1) KKey = "Meta+Enter"
+ 1) Meta+Enter
+ 2) Meta+Keypad_Enter
+ 2) KShortcut = "Alt+F2"
+ 1) KKeySequence = "Alt+F2"
+ 1) Alt+F2
+ 2) KAccelAction = "Something"
+ Default3 = ""
+ Default4 = ""
+ 1) KShortcut = "Meta+X,Asterisk"
+ 1) KKeySequence = "Meta+X,Asterisk"
+ 1) KKey = "Meta+X"
+ 1) Meta+X
+ 2) KKey = "Asterisk"
+ 1) Shift+8 (English layout)
+ 2) Keypad_Asterisk
+*/
+
+//---------------------------------------------------------------------
+// KAccelAction
+//---------------------------------------------------------------------
+
+class KAccelAction
+{
+ public:
+ KAccelAction();
+ KAccelAction( const KAccelAction& );
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ void clear();
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ KAccelAction& operator=( const KAccelAction& );
+
+ const QString& name() const { return m_sName; }
+ const QString& label() const { return m_sLabel; }
+ const QString& whatsThis() const { return m_sWhatsThis; }
+ const KShortcut& shortcut() const { return m_cut; }
+ const KShortcut& shortcutDefault() const;
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+ bool isConfigurable() const { return m_bConfigurable; }
+ bool isEnabled() const { return m_bEnabled; }
+
+ void setName( const QString& );
+ void setLabel( const QString& );
+ void setWhatsThis( const QString& );
+ bool setShortcut( const KShortcut& rgCuts );
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+ void setConfigurable( bool );
+ void setEnabled( bool );
+
+ int getID() const { return m_nIDAccel; }
+ void setID( int n ) { m_nIDAccel = n; }
+ bool isConnected() const;
+
+ bool setKeySequence( uint i, const KKeySequence& );
+ void clearShortcut();
+ bool contains( const KKeySequence& );
+
+ QString toString() const;
+ QString toStringInternal() const;
+
+ static bool useFourModifierKeys();
+ static void useFourModifierKeys( bool );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+class KAccelActions
+{
+ public:
+ KAccelActions();
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ void clear();
+ bool init( const KAccelActions& );
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ void updateShortcuts( KAccelActions& );
+
+ int actionIndex( const QString& sAction ) const;
+ KAccelAction* actionPtr( uint );
+ const KAccelAction* actionPtr( uint ) const;
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( KKeySequence cut );
+ KAccelAction& operator []( uint );
+ const KAccelAction& operator []( uint ) const;
+
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+ bool remove( const QString& sAction );
+
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ void emitKeycodeChanged();
+
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde300/kaccelbase.h b/python/pykde/extra/kde300/kaccelbase.h
new file mode 100644
index 00000000..2deb5b6c
--- /dev/null
+++ b/python/pykde/extra/kde300/kaccelbase.h
@@ -0,0 +1,233 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+class KAccelBasePrivate;
+/**
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.20 2002/03/03 21:20:25 lunakl Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+ protected:
+ virtual void virtual_hook( int id, void* data );
+ private:
+ KAccelBasePrivate* d;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde300/kicontheme.h b/python/pykde/extra/kde300/kicontheme.h
new file mode 100644
index 00000000..78fc8f15
--- /dev/null
+++ b/python/pykde/extra/kde300/kicontheme.h
@@ -0,0 +1,217 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.19 2002/03/05 23:13:26 rich Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ enum Context { Any, Action, Application, Device, FileSystem, MimeType };
+ enum Type { Fixed, Scalable, Threshold };
+ enum MatchType { MatchExact, MatchBest };
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+ enum StdSizes { SizeSmall=16, SizeMedium=32, SizeLarge=48 };
+ enum States { DefaultState, ActiveState, DisabledState, LastState };
+ enum Overlays { LockOverlay=0x100, ZipOverlay=0x200, LinkOverlay=0x400,
+ HiddenOverlay=0x800, OverlayMask = ~0xff };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon.
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the toplevel theme directory.
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ */
+ bool isValid() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @ref #KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ */
+ static QString current();
+
+ static void reconfigure();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde300/kkeyserver_x11.h b/python/pykde/extra/kde300/kkeyserver_x11.h
new file mode 100644
index 00000000..faeb99ca
--- /dev/null
+++ b/python/pykde/extra/kde300/kkeyserver_x11.h
@@ -0,0 +1,131 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+namespace KKeyServer
+{
+ struct CodeMod { int code, mod; };
+
+ struct Sym
+ {
+ public:
+ uint m_sym;
+
+ Sym()
+ { m_sym = 0; }
+ Sym( uint sym )
+ { m_sym = sym; }
+ Sym( const QString& s )
+ { init( s ); }
+
+ bool initQt( int keyQt );
+ bool init( const QString& );
+
+ int qt() const;
+ QString toStringInternal() const;
+ QString toString() const;
+
+ uint getModsRequired() const;
+ uint getSymVariation() const;
+
+ operator uint() const { return m_sym; }
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ struct Key
+ {
+ enum { CODE_FOR_QT = 256 };
+
+ uint m_code;
+ uint m_mod;
+ uint m_sym;
+
+ bool init( const KKey& key, bool bQt );
+
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ uint code() const { return m_code; }
+ uint mod() const { return m_mod; }
+ uint sym() const { return m_sym; }
+ int keyCodeQt() const { return (int) m_sym; }
+
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ Key& operator =( const KKeyNative& key );
+ int compare( const Key& ) const;
+
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ KKey key() const;
+ };
+
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ */
+ uint modX( KKey::ModFlag );
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ */
+ bool keyboardHasWinKey();
+ uint modXShift();
+ uint modXLock();
+ uint modXCtrl();
+ uint modXAlt();
+ uint modXNumLock();
+ uint modXWin();
+ uint modXScrollLock();
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ */
+ uint accelModMaskX();
+
+ bool keyQtToSym( int keyQt, uint& sym );
+ bool keyQtToMod( int keyQt, uint& mod );
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ bool modToModQt( uint mod, int& modQt );
+ bool modToModX( uint mod, uint& modX );
+ bool modXToModQt( uint modX, int& modQt );
+ bool modXToMod( uint modX, uint& mod );
+
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ QString modToStringInternal( uint mod );
+ QString modToStringUser( uint mod );
+
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde300/konsole_part.h b/python/pykde/extra/kde300/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde300/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde300/krecentdirs.h b/python/pykde/extra/kde300/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde300/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde300/ksycocafactory.h b/python/pykde/extra/kde300/ksycocafactory.h
new file mode 100644
index 00000000..7aa6353e
--- /dev/null
+++ b/python/pykde/extra/kde300/ksycocafactory.h
@@ -0,0 +1,135 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.12 2002/03/03 21:20:26 lunakl Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+// This, instead of a typedef, allows to declare "class ..." in header files
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde300/ktoolbarbutton.h b/python/pykde/extra/kde300/ktoolbarbutton.h
new file mode 100644
index 00000000..3c630a84
--- /dev/null
+++ b/python/pykde/extra/kde300/ktoolbarbutton.h
@@ -0,0 +1,306 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.21 2002/03/04 00:51:52 lunakl Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself. Use @ref
+ * toggle for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.21 2002/03/04 00:51:52 lunakl Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde300/kurifilter.h b/python/pykde/extra/kde300/kurifilter.h
new file mode 100644
index 00000000..66d61add
--- /dev/null
+++ b/python/pykde/extra/kde300/kurifilter.h
@@ -0,0 +1,593 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.23 2002/03/04 04:17:37 lunakl Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A breif description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde301/kaccelaction.h b/python/pykde/extra/kde301/kaccelaction.h
new file mode 100644
index 00000000..a5689e45
--- /dev/null
+++ b/python/pykde/extra/kde301/kaccelaction.h
@@ -0,0 +1,202 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/*
+ KAccelAction holds information an a given action, such as "Execute Command"
+
+ 1) KAccelAction = "Execute Command"
+ Default3 = "Alt+F2"
+ Default4 = "Meta+Enter;Alt+F2"
+ 1) KShortcut = "Meta+Enter"
+ 1) KKeySequence = "Meta+Enter"
+ 1) KKey = "Meta+Enter"
+ 1) Meta+Enter
+ 2) Meta+Keypad_Enter
+ 2) KShortcut = "Alt+F2"
+ 1) KKeySequence = "Alt+F2"
+ 1) Alt+F2
+ 2) KAccelAction = "Something"
+ Default3 = ""
+ Default4 = ""
+ 1) KShortcut = "Meta+X,Asterisk"
+ 1) KKeySequence = "Meta+X,Asterisk"
+ 1) KKey = "Meta+X"
+ 1) Meta+X
+ 2) KKey = "Asterisk"
+ 1) Shift+8 (English layout)
+ 2) Keypad_Asterisk
+*/
+
+//---------------------------------------------------------------------
+// KAccelAction
+//---------------------------------------------------------------------
+
+class KAccelAction
+{
+ public:
+ KAccelAction();
+ KAccelAction( const KAccelAction& );
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ void clear();
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ KAccelAction& operator=( const KAccelAction& );
+
+ const QString& name() const { return m_sName; }
+ const QString& label() const { return m_sLabel; }
+ const QString& whatsThis() const { return m_sWhatsThis; }
+ const KShortcut& shortcut() const { return m_cut; }
+ const KShortcut& shortcutDefault() const;
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+ bool isConfigurable() const { return m_bConfigurable; }
+ bool isEnabled() const { return m_bEnabled; }
+
+ void setName( const QString& );
+ void setLabel( const QString& );
+ void setWhatsThis( const QString& );
+ bool setShortcut( const KShortcut& rgCuts );
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+ void setConfigurable( bool );
+ void setEnabled( bool );
+
+ int getID() const { return m_nIDAccel; }
+ void setID( int n ) { m_nIDAccel = n; }
+ bool isConnected() const;
+
+ bool setKeySequence( uint i, const KKeySequence& );
+ void clearShortcut();
+ bool contains( const KKeySequence& );
+
+ QString toString() const;
+ QString toStringInternal() const;
+
+ static bool useFourModifierKeys();
+ static void useFourModifierKeys( bool );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+class KAccelActions
+{
+ public:
+ KAccelActions();
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ void clear();
+ bool init( const KAccelActions& );
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ void updateShortcuts( KAccelActions& );
+
+ int actionIndex( const QString& sAction ) const;
+ KAccelAction* actionPtr( uint );
+ const KAccelAction* actionPtr( uint ) const;
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( KKeySequence cut );
+ KAccelAction& operator []( uint );
+ const KAccelAction& operator []( uint ) const;
+
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+ bool remove( const QString& sAction );
+
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ void emitKeycodeChanged();
+
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde301/kaccelbase.h b/python/pykde/extra/kde301/kaccelbase.h
new file mode 100644
index 00000000..2deb5b6c
--- /dev/null
+++ b/python/pykde/extra/kde301/kaccelbase.h
@@ -0,0 +1,233 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+class KAccelBasePrivate;
+/**
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.20 2002/03/03 21:20:25 lunakl Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+ protected:
+ virtual void virtual_hook( int id, void* data );
+ private:
+ KAccelBasePrivate* d;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde301/kicontheme.h b/python/pykde/extra/kde301/kicontheme.h
new file mode 100644
index 00000000..78fc8f15
--- /dev/null
+++ b/python/pykde/extra/kde301/kicontheme.h
@@ -0,0 +1,217 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.19 2002/03/05 23:13:26 rich Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ enum Context { Any, Action, Application, Device, FileSystem, MimeType };
+ enum Type { Fixed, Scalable, Threshold };
+ enum MatchType { MatchExact, MatchBest };
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+ enum StdSizes { SizeSmall=16, SizeMedium=32, SizeLarge=48 };
+ enum States { DefaultState, ActiveState, DisabledState, LastState };
+ enum Overlays { LockOverlay=0x100, ZipOverlay=0x200, LinkOverlay=0x400,
+ HiddenOverlay=0x800, OverlayMask = ~0xff };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon.
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the toplevel theme directory.
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ */
+ bool isValid() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @ref #KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ */
+ static QString current();
+
+ static void reconfigure();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde301/kkeyserver_x11.h b/python/pykde/extra/kde301/kkeyserver_x11.h
new file mode 100644
index 00000000..faeb99ca
--- /dev/null
+++ b/python/pykde/extra/kde301/kkeyserver_x11.h
@@ -0,0 +1,131 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+namespace KKeyServer
+{
+ struct CodeMod { int code, mod; };
+
+ struct Sym
+ {
+ public:
+ uint m_sym;
+
+ Sym()
+ { m_sym = 0; }
+ Sym( uint sym )
+ { m_sym = sym; }
+ Sym( const QString& s )
+ { init( s ); }
+
+ bool initQt( int keyQt );
+ bool init( const QString& );
+
+ int qt() const;
+ QString toStringInternal() const;
+ QString toString() const;
+
+ uint getModsRequired() const;
+ uint getSymVariation() const;
+
+ operator uint() const { return m_sym; }
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ struct Key
+ {
+ enum { CODE_FOR_QT = 256 };
+
+ uint m_code;
+ uint m_mod;
+ uint m_sym;
+
+ bool init( const KKey& key, bool bQt );
+
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ uint code() const { return m_code; }
+ uint mod() const { return m_mod; }
+ uint sym() const { return m_sym; }
+ int keyCodeQt() const { return (int) m_sym; }
+
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ Key& operator =( const KKeyNative& key );
+ int compare( const Key& ) const;
+
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ KKey key() const;
+ };
+
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ */
+ uint modX( KKey::ModFlag );
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ */
+ bool keyboardHasWinKey();
+ uint modXShift();
+ uint modXLock();
+ uint modXCtrl();
+ uint modXAlt();
+ uint modXNumLock();
+ uint modXWin();
+ uint modXScrollLock();
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ */
+ uint accelModMaskX();
+
+ bool keyQtToSym( int keyQt, uint& sym );
+ bool keyQtToMod( int keyQt, uint& mod );
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ bool modToModQt( uint mod, int& modQt );
+ bool modToModX( uint mod, uint& modX );
+ bool modXToModQt( uint modX, int& modQt );
+ bool modXToMod( uint modX, uint& mod );
+
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ QString modToStringInternal( uint mod );
+ QString modToStringUser( uint mod );
+
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde301/konsole_part.h b/python/pykde/extra/kde301/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde301/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde301/krecentdirs.h b/python/pykde/extra/kde301/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde301/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde301/ksycocafactory.h b/python/pykde/extra/kde301/ksycocafactory.h
new file mode 100644
index 00000000..7aa6353e
--- /dev/null
+++ b/python/pykde/extra/kde301/ksycocafactory.h
@@ -0,0 +1,135 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.12 2002/03/03 21:20:26 lunakl Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+// This, instead of a typedef, allows to declare "class ..." in header files
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde301/ktoolbarbutton.h b/python/pykde/extra/kde301/ktoolbarbutton.h
new file mode 100644
index 00000000..2bf6a5b3
--- /dev/null
+++ b/python/pykde/extra/kde301/ktoolbarbutton.h
@@ -0,0 +1,313 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.21.2.1 2002/04/28 20:59:16 wtrobin Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ virtual void setIcon( const QPixmap &pixmap )
+ { return QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself. Use @ref
+ * toggle for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ bool isRaised() const;
+ bool isActive() const;
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.21.2.1 2002/04/28 20:59:16 wtrobin Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde301/kurifilter.h b/python/pykde/extra/kde301/kurifilter.h
new file mode 100644
index 00000000..66d61add
--- /dev/null
+++ b/python/pykde/extra/kde301/kurifilter.h
@@ -0,0 +1,593 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.23 2002/03/04 04:17:37 lunakl Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A breif description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde303/kaccelaction.h b/python/pykde/extra/kde303/kaccelaction.h
new file mode 100644
index 00000000..a5689e45
--- /dev/null
+++ b/python/pykde/extra/kde303/kaccelaction.h
@@ -0,0 +1,202 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/*
+ KAccelAction holds information an a given action, such as "Execute Command"
+
+ 1) KAccelAction = "Execute Command"
+ Default3 = "Alt+F2"
+ Default4 = "Meta+Enter;Alt+F2"
+ 1) KShortcut = "Meta+Enter"
+ 1) KKeySequence = "Meta+Enter"
+ 1) KKey = "Meta+Enter"
+ 1) Meta+Enter
+ 2) Meta+Keypad_Enter
+ 2) KShortcut = "Alt+F2"
+ 1) KKeySequence = "Alt+F2"
+ 1) Alt+F2
+ 2) KAccelAction = "Something"
+ Default3 = ""
+ Default4 = ""
+ 1) KShortcut = "Meta+X,Asterisk"
+ 1) KKeySequence = "Meta+X,Asterisk"
+ 1) KKey = "Meta+X"
+ 1) Meta+X
+ 2) KKey = "Asterisk"
+ 1) Shift+8 (English layout)
+ 2) Keypad_Asterisk
+*/
+
+//---------------------------------------------------------------------
+// KAccelAction
+//---------------------------------------------------------------------
+
+class KAccelAction
+{
+ public:
+ KAccelAction();
+ KAccelAction( const KAccelAction& );
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ void clear();
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ KAccelAction& operator=( const KAccelAction& );
+
+ const QString& name() const { return m_sName; }
+ const QString& label() const { return m_sLabel; }
+ const QString& whatsThis() const { return m_sWhatsThis; }
+ const KShortcut& shortcut() const { return m_cut; }
+ const KShortcut& shortcutDefault() const;
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+ bool isConfigurable() const { return m_bConfigurable; }
+ bool isEnabled() const { return m_bEnabled; }
+
+ void setName( const QString& );
+ void setLabel( const QString& );
+ void setWhatsThis( const QString& );
+ bool setShortcut( const KShortcut& rgCuts );
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+ void setConfigurable( bool );
+ void setEnabled( bool );
+
+ int getID() const { return m_nIDAccel; }
+ void setID( int n ) { m_nIDAccel = n; }
+ bool isConnected() const;
+
+ bool setKeySequence( uint i, const KKeySequence& );
+ void clearShortcut();
+ bool contains( const KKeySequence& );
+
+ QString toString() const;
+ QString toStringInternal() const;
+
+ static bool useFourModifierKeys();
+ static void useFourModifierKeys( bool );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+class KAccelActions
+{
+ public:
+ KAccelActions();
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ void clear();
+ bool init( const KAccelActions& );
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ void updateShortcuts( KAccelActions& );
+
+ int actionIndex( const QString& sAction ) const;
+ KAccelAction* actionPtr( uint );
+ const KAccelAction* actionPtr( uint ) const;
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( KKeySequence cut );
+ KAccelAction& operator []( uint );
+ const KAccelAction& operator []( uint ) const;
+
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+ bool remove( const QString& sAction );
+
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ void emitKeycodeChanged();
+
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde303/kaccelbase.h b/python/pykde/extra/kde303/kaccelbase.h
new file mode 100644
index 00000000..2deb5b6c
--- /dev/null
+++ b/python/pykde/extra/kde303/kaccelbase.h
@@ -0,0 +1,233 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+class KAccelBasePrivate;
+/**
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.20 2002/03/03 21:20:25 lunakl Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+ protected:
+ virtual void virtual_hook( int id, void* data );
+ private:
+ KAccelBasePrivate* d;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde303/kicontheme.h b/python/pykde/extra/kde303/kicontheme.h
new file mode 100644
index 00000000..78fc8f15
--- /dev/null
+++ b/python/pykde/extra/kde303/kicontheme.h
@@ -0,0 +1,217 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.19 2002/03/05 23:13:26 rich Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ enum Context { Any, Action, Application, Device, FileSystem, MimeType };
+ enum Type { Fixed, Scalable, Threshold };
+ enum MatchType { MatchExact, MatchBest };
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+ enum StdSizes { SizeSmall=16, SizeMedium=32, SizeLarge=48 };
+ enum States { DefaultState, ActiveState, DisabledState, LastState };
+ enum Overlays { LockOverlay=0x100, ZipOverlay=0x200, LinkOverlay=0x400,
+ HiddenOverlay=0x800, OverlayMask = ~0xff };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon.
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the toplevel theme directory.
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ */
+ bool isValid() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @ref #KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ */
+ static QString current();
+
+ static void reconfigure();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde303/kkeyserver_x11.h b/python/pykde/extra/kde303/kkeyserver_x11.h
new file mode 100644
index 00000000..faeb99ca
--- /dev/null
+++ b/python/pykde/extra/kde303/kkeyserver_x11.h
@@ -0,0 +1,131 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+namespace KKeyServer
+{
+ struct CodeMod { int code, mod; };
+
+ struct Sym
+ {
+ public:
+ uint m_sym;
+
+ Sym()
+ { m_sym = 0; }
+ Sym( uint sym )
+ { m_sym = sym; }
+ Sym( const QString& s )
+ { init( s ); }
+
+ bool initQt( int keyQt );
+ bool init( const QString& );
+
+ int qt() const;
+ QString toStringInternal() const;
+ QString toString() const;
+
+ uint getModsRequired() const;
+ uint getSymVariation() const;
+
+ operator uint() const { return m_sym; }
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ struct Key
+ {
+ enum { CODE_FOR_QT = 256 };
+
+ uint m_code;
+ uint m_mod;
+ uint m_sym;
+
+ bool init( const KKey& key, bool bQt );
+
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ uint code() const { return m_code; }
+ uint mod() const { return m_mod; }
+ uint sym() const { return m_sym; }
+ int keyCodeQt() const { return (int) m_sym; }
+
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ Key& operator =( const KKeyNative& key );
+ int compare( const Key& ) const;
+
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ KKey key() const;
+ };
+
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ */
+ uint modX( KKey::ModFlag );
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ */
+ bool keyboardHasWinKey();
+ uint modXShift();
+ uint modXLock();
+ uint modXCtrl();
+ uint modXAlt();
+ uint modXNumLock();
+ uint modXWin();
+ uint modXScrollLock();
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ */
+ uint accelModMaskX();
+
+ bool keyQtToSym( int keyQt, uint& sym );
+ bool keyQtToMod( int keyQt, uint& mod );
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ bool modToModQt( uint mod, int& modQt );
+ bool modToModX( uint mod, uint& modX );
+ bool modXToModQt( uint modX, int& modQt );
+ bool modXToMod( uint modX, uint& mod );
+
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ QString modToStringInternal( uint mod );
+ QString modToStringUser( uint mod );
+
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde303/konsole_part.h b/python/pykde/extra/kde303/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde303/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde303/krecentdirs.h b/python/pykde/extra/kde303/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde303/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde303/ksycocafactory.h b/python/pykde/extra/kde303/ksycocafactory.h
new file mode 100644
index 00000000..7aa6353e
--- /dev/null
+++ b/python/pykde/extra/kde303/ksycocafactory.h
@@ -0,0 +1,135 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.12 2002/03/03 21:20:26 lunakl Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+// This, instead of a typedef, allows to declare "class ..." in header files
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde303/ktoolbarbutton.h b/python/pykde/extra/kde303/ktoolbarbutton.h
new file mode 100644
index 00000000..68bc3109
--- /dev/null
+++ b/python/pykde/extra/kde303/ktoolbarbutton.h
@@ -0,0 +1,313 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.21.2.2 2002/05/26 13:09:06 carewolf Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself. Use @ref
+ * toggle for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ bool isRaised() const;
+ bool isActive() const;
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.21.2.2 2002/05/26 13:09:06 carewolf Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde303/kurifilter.h b/python/pykde/extra/kde303/kurifilter.h
new file mode 100644
index 00000000..66d61add
--- /dev/null
+++ b/python/pykde/extra/kde303/kurifilter.h
@@ -0,0 +1,593 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.23 2002/03/04 04:17:37 lunakl Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A breif description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde310/kaccelaction.h b/python/pykde/extra/kde310/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde310/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde310/kaccelbase.h b/python/pykde/extra/kde310/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde310/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde310/kicontheme.h b/python/pykde/extra/kde310/kicontheme.h
new file mode 100644
index 00000000..837f7a49
--- /dev/null
+++ b/python/pykde/extra/kde310/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26 2002/10/26 22:08:38 tjansen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde310/kkeyserver_x11.h b/python/pykde/extra/kde310/kkeyserver_x11.h
new file mode 100644
index 00000000..dfb7445d
--- /dev/null
+++ b/python/pykde/extra/kde310/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde310/konsole_part.h b/python/pykde/extra/kde310/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde310/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde310/kpanelmenu.h b/python/pykde/extra/kde310/kpanelmenu.h
new file mode 100644
index 00000000..7901df30
--- /dev/null
+++ b/python/pykde/extra/kde310/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+//#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+// K_EXPORT_COMPONENT_FACTORY( \
+// kickermenu_##libname, \
+// KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde310/krecentdirs.h b/python/pykde/extra/kde310/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde310/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde310/ksycocafactory.h b/python/pykde/extra/kde310/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde310/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde310/ktoolbarbutton.h b/python/pykde/extra/kde310/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde310/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde310/kurifilter.h b/python/pykde/extra/kde310/kurifilter.h
new file mode 100644
index 00000000..9258373b
--- /dev/null
+++ b/python/pykde/extra/kde310/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27 2002/10/30 09:37:39 neil Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde311/kaccelaction.h b/python/pykde/extra/kde311/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde311/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde311/kaccelbase.h b/python/pykde/extra/kde311/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde311/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde311/kicontheme.h b/python/pykde/extra/kde311/kicontheme.h
new file mode 100644
index 00000000..837f7a49
--- /dev/null
+++ b/python/pykde/extra/kde311/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26 2002/10/26 22:08:38 tjansen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde311/kkeyserver_x11.h b/python/pykde/extra/kde311/kkeyserver_x11.h
new file mode 100644
index 00000000..dfb7445d
--- /dev/null
+++ b/python/pykde/extra/kde311/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde311/konsole_part.h b/python/pykde/extra/kde311/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde311/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde311/kpanelmenu.h b/python/pykde/extra/kde311/kpanelmenu.h
new file mode 100644
index 00000000..bda89385
--- /dev/null
+++ b/python/pykde/extra/kde311/kpanelmenu.h
@@ -0,0 +1,177 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+
+#endif
diff --git a/python/pykde/extra/kde311/krecentdirs.h b/python/pykde/extra/kde311/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde311/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde311/ksycocafactory.h b/python/pykde/extra/kde311/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde311/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde311/ktoolbarbutton.h b/python/pykde/extra/kde311/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde311/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde311/kurifilter.h b/python/pykde/extra/kde311/kurifilter.h
new file mode 100644
index 00000000..9258373b
--- /dev/null
+++ b/python/pykde/extra/kde311/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27 2002/10/30 09:37:39 neil Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde312/kaccelaction.h b/python/pykde/extra/kde312/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde312/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde312/kaccelbase.h b/python/pykde/extra/kde312/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde312/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde312/kicontheme.h b/python/pykde/extra/kde312/kicontheme.h
new file mode 100644
index 00000000..837f7a49
--- /dev/null
+++ b/python/pykde/extra/kde312/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26 2002/10/26 22:08:38 tjansen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde312/kkeyserver_x11.h b/python/pykde/extra/kde312/kkeyserver_x11.h
new file mode 100644
index 00000000..dfb7445d
--- /dev/null
+++ b/python/pykde/extra/kde312/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde312/konsole_part.h b/python/pykde/extra/kde312/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde312/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde312/kpanelmenu.h b/python/pykde/extra/kde312/kpanelmenu.h
new file mode 100644
index 00000000..7901df30
--- /dev/null
+++ b/python/pykde/extra/kde312/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+//#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+// K_EXPORT_COMPONENT_FACTORY( \
+// kickermenu_##libname, \
+// KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde312/krecentdirs.h b/python/pykde/extra/kde312/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde312/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde312/ksycocafactory.h b/python/pykde/extra/kde312/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde312/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde312/ktoolbarbutton.h b/python/pykde/extra/kde312/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde312/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde312/kurifilter.h b/python/pykde/extra/kde312/kurifilter.h
new file mode 100644
index 00000000..9258373b
--- /dev/null
+++ b/python/pykde/extra/kde312/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27 2002/10/30 09:37:39 neil Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde313/kaccelaction.h b/python/pykde/extra/kde313/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde313/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde313/kaccelbase.h b/python/pykde/extra/kde313/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde313/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde313/kicontheme.h b/python/pykde/extra/kde313/kicontheme.h
new file mode 100644
index 00000000..837f7a49
--- /dev/null
+++ b/python/pykde/extra/kde313/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26 2002/10/26 22:08:38 tjansen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde313/kkeyserver_x11.h b/python/pykde/extra/kde313/kkeyserver_x11.h
new file mode 100644
index 00000000..dfb7445d
--- /dev/null
+++ b/python/pykde/extra/kde313/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+};
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde313/konsole_part.h b/python/pykde/extra/kde313/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde313/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde313/kpanelmenu.h b/python/pykde/extra/kde313/kpanelmenu.h
new file mode 100644
index 00000000..7901df30
--- /dev/null
+++ b/python/pykde/extra/kde313/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+//#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+// K_EXPORT_COMPONENT_FACTORY( \
+// kickermenu_##libname, \
+// KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde313/krecentdirs.h b/python/pykde/extra/kde313/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde313/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde313/ksycocafactory.h b/python/pykde/extra/kde313/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde313/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde313/ktoolbarbutton.h b/python/pykde/extra/kde313/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde313/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde313/kurifilter.h b/python/pykde/extra/kde313/kurifilter.h
new file mode 100644
index 00000000..9258373b
--- /dev/null
+++ b/python/pykde/extra/kde313/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27 2002/10/30 09:37:39 neil Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde314/kaccelaction.h b/python/pykde/extra/kde314/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde314/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde314/kaccelbase.h b/python/pykde/extra/kde314/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde314/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde314/kicontheme.h b/python/pykde/extra/kde314/kicontheme.h
new file mode 100644
index 00000000..837f7a49
--- /dev/null
+++ b/python/pykde/extra/kde314/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26 2002/10/26 22:08:38 tjansen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=Desktop, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde314/kkeyserver_x11.h b/python/pykde/extra/kde314/kkeyserver_x11.h
new file mode 100644
index 00000000..d4589224
--- /dev/null
+++ b/python/pykde/extra/kde314/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde314/konsole_part.h b/python/pykde/extra/kde314/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde314/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde314/kpanelmenu.h b/python/pykde/extra/kde314/kpanelmenu.h
new file mode 100644
index 00000000..1857f5df
--- /dev/null
+++ b/python/pykde/extra/kde314/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde314/krecentdirs.h b/python/pykde/extra/kde314/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde314/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde314/ksycocafactory.h b/python/pykde/extra/kde314/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde314/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde314/ktoolbarbutton.h b/python/pykde/extra/kde314/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde314/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde314/kurifilter.h b/python/pykde/extra/kde314/kurifilter.h
new file mode 100644
index 00000000..54b2fb9e
--- /dev/null
+++ b/python/pykde/extra/kde314/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27.2.1 2003/06/06 09:12:16 mueller Exp $"
+
+#include <qstringlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde315/kaccelaction.h b/python/pykde/extra/kde315/kaccelaction.h
new file mode 100644
index 00000000..23f704ba
--- /dev/null
+++ b/python/pykde/extra/kde315/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a @ref KShortcut. The user can configure and
+ * enable/disable them using @ref KKeyDialog.
+ *
+ * <pre>
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * </pre>
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using @ref setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see @ref getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of @ref KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by @ref setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde315/kaccelbase.h b/python/pykde/extra/kde315/kaccelbase.h
new file mode 100644
index 00000000..8c6e8478
--- /dev/null
+++ b/python/pykde/extra/kde315/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * @ref KKeyChooser GUI.
+ *
+ * A @ref KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * @ref KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for @ref insertItem() is used only
+ * in the configuration dialog.
+ *<pre>
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *</pre>
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the @ref KStdAccel::Print from above.
+ *
+ * <pre>
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * </pre>
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * <pre>
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * </pre>
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> @ref readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.22 2002/10/06 18:19:39 ellis Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * @ref KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with @ref setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde315/kicontheme.h b/python/pykde/extra/kde315/kicontheme.h
new file mode 100644
index 00000000..faf34ab9
--- /dev/null
+++ b/python/pykde/extra/kde315/kicontheme.h
@@ -0,0 +1,331 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.26.2.1 2003/09/21 20:10:28 mcamen Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48 };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See @ref #KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde315/kkeyserver_x11.h b/python/pykde/extra/kde315/kkeyserver_x11.h
new file mode 100644
index 00000000..d4589224
--- /dev/null
+++ b/python/pykde/extra/kde315/kkeyserver_x11.h
@@ -0,0 +1,435 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ struct CodeMod { int code, mod; };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if succesful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if succesful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed @ref KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required @ref KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a @ref KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a @ref KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param the mask of @ref KKey::ModFlag modifiers
+ * @param the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed @ref KKey::ModFlag modifiers.
+ * @param the mask of X11 modifiers
+ * @param the mask of @ref KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param sym if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed @ref KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed @ref KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde315/konsole_part.h b/python/pykde/extra/kde315/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde315/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde315/kpanelmenu.h b/python/pykde/extra/kde315/kpanelmenu.h
new file mode 100644
index 00000000..1857f5df
--- /dev/null
+++ b/python/pykde/extra/kde315/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and @ref slotExec(). You also have to provide a factory
+ * object in your library, see @ref KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * @ref slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call @ref setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde315/krecentdirs.h b/python/pykde/extra/kde315/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde315/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde315/ksycocafactory.h b/python/pykde/extra/kde315/ksycocafactory.h
new file mode 100644
index 00000000..33ba1cf6
--- /dev/null
+++ b/python/pykde/extra/kde315/ksycocafactory.h
@@ -0,0 +1,137 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.13 2002/09/21 15:07:27 tjansen Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde315/ktoolbarbutton.h b/python/pykde/extra/kde315/ktoolbarbutton.h
new file mode 100644
index 00000000..503a4859
--- /dev/null
+++ b/python/pykde/extra/kde315/ktoolbarbutton.h
@@ -0,0 +1,317 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by @ref KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use @ref setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap);
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap);
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over @ref setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if @ref #generate is
+ * true. This function is preferred over @ref setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon);
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon);
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use @ref toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use @ref setDelayedPopup if you want that
+ * behavior. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p The new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setPopup (QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second. You can also make the popup-menu
+ * "sticky", i.e. visible until a selection is made or the mouse is
+ * clikced elsewhere, by simply setting the second argument to true.
+ * This "sticky" button feature allows you to make a selection without
+ * having to press and hold down the mouse while making a selection.
+ *
+ * @param p the new popup menu
+ * @param toggle if true, makes the button "sticky" (toggled)
+ */
+ void setDelayedPopup(QPopupMenu *p, bool toggle = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitely turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of @ref KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.26 2002/09/28 15:16:22 tjansen Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde315/kurifilter.h b/python/pykde/extra/kde315/kurifilter.h
new file mode 100644
index 00000000..54b2fb9e
--- /dev/null
+++ b/python/pykde/extra/kde315/kurifilter.h
@@ -0,0 +1,602 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.27.2.1 2003/06/06 09:12:16 mueller Exp $"
+
+#include <qstringlist.h>
+#include <qobject.h>
+
+#include <kurl.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class QStringList;
+class KCModule;
+
+/**
+* This is a basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* whenever the application requires more information about the
+* URI than just a filtered version of it. Any application can
+* create an instance of this class and send it to @ref KURIFilter
+* to have the filter plugins fill the necessary information.
+*
+* @sect Example
+* <pre>
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* if( filtered )
+* print ( "URI: %s\n"Filtered URI: %s\n URI Type: %i\n"Was Filtered: %i"
+* text.latin1(), d.uri().url().latin1(), d.uriType(), filtered );
+* </pre>
+*
+* The above code should yield the following output:
+* <pre>
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* </pre>
+*
+* @short A message object for exchanging filtering URI info.
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of URI to be filtered.
+ *
+ * This enumerator prvoides the return value for
+ * @ref uriType. A brief description for each value:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& /*data*/);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * TRUE. You should instead use the result from the
+ * @ref KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ bool hasBeenFiltered() const { return m_bFiltered; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins sucessfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See @ref #hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function works only for a local resource and
+ * expects the absolute path to the relative URL set in this
+ * meta object. If you are extracting the absolute path from
+ * a KURL object, make sure you always set the argument below
+ * using KURL::path() instead of KURL::url() so that "file:/"
+ * would not be appended! Otherwise, the filter might not be
+ * able to make correct determination whether the relative URL
+ * locally exists!
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& /* abs_path */ );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ */
+ QString absolutePath() const;
+
+ /**
+ * Returns true if the supplied data has an absolute path.
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Returns true if the current data is a local resource with
+ * command line options and arguments.
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource
+ */
+ QString iconName();
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ */
+ void init( const KURL& url = QString::null );
+
+private:
+ bool m_bFiltered;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All
+ * plugins designed to provide URI filtering functionalities
+ * should inherit from this abstract class and provide a
+ * specific filtering implementation.
+ *
+ * All inheriting classes need to implement the pure
+ * virtual function @ref filterURI. Otherwise, they
+ * would also become abstract.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object.
+ * @param name the name of the plugin.
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsability of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, @p null if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or @p null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of a URI.
+ *
+ * The intention of this plugin class is to allow people to extend
+ * the functionality of KURL without modifying it directly. This
+ * way KURL will remain a generic parser capable of parsing any
+ * generic URL that adheres to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI,
+ * and returns the filtered version whenever possible. The filters
+ * are implemented using plugins to provide easy extensibility
+ * of the filtering mechanism. That is, new filters can be added in
+ * the future by simply inheriting from @ref KURIFilterPlugin and
+ * implementing the @ref KURIFilterPlugin::filterURI method.
+ *
+ * Use of this plugin-manager class is straight forward. Since
+ * it is a singleton object, all you have to do is obtain an instance
+ * by doing @p KURIFilter::self() and use any of the public member
+ * functions to preform the filtering.
+ *
+ * @sect Example
+ *
+ * To simply filter a given string:
+ * <pre>
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * </pre>
+ *
+ * You can alternatively use a KURL:
+ * <pre>
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * </pre>
+ *
+ * If you have a constant string or a constant URL,
+ * simply invoke the corresponding function to obtain
+ * the filtered string or URL instead of a boolean flag:
+ * <pre>
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * </pre>
+ *
+ * You can also specify only specific filter(s) to be applied
+ * by supplying the name(s) of the filter(s). By defualt all
+ * filters that are found are loaded when the KURIFilter object
+ * is created will be used. These names are taken from the
+ * enteries in the \".desktop\" files. Here are a couple of
+ * examples:
+ * <pre>
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "KShortURIFilter" );
+ *
+ * QStringList list;
+ * list << "KShortURIFilter" << "MyFilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * </pre>
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See @ref KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Return a static instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * This filters the given data based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * This filters the given string based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * This filters the given URL based on the specified
+ * filter list. If the list is empty all avaliable
+ * filter plugins would be used. If not, only those
+ * given in the list are used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list filters to be used
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins
+ *
+ * @since 3.1
+ *
+ * @return a QStringList of plugin names
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * @ref loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been dis
+ */
+ void loadPlugins();
+
+private:
+
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+
+};
+
+#endif
+
diff --git a/python/pykde/extra/kde320/configwidget.h b/python/pykde/extra/kde320/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde320/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde320/kaccelaction.h b/python/pykde/extra/kde320/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde320/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde320/kaccelbase.h b/python/pykde/extra/kde320/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde320/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde320/kicontheme.h b/python/pykde/extra/kde320/kicontheme.h
new file mode 100644
index 00000000..a360a15d
--- /dev/null
+++ b/python/pykde/extra/kde320/kicontheme.h
@@ -0,0 +1,334 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.29 2003/11/02 14:50:34 carewolf Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/kkeyserver_x11.h b/python/pykde/extra/kde320/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde320/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde320/konsole_part.h b/python/pykde/extra/kde320/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde320/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/kpanelmenu.h b/python/pykde/extra/kde320/kpanelmenu.h
new file mode 100644
index 00000000..83c32680
--- /dev/null
+++ b/python/pykde/extra/kde320/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde320/krecentdirs.h b/python/pykde/extra/kde320/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde320/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/ksharedptr.h b/python/pykde/extra/kde320/ksharedptr.h
new file mode 100644
index 00000000..d74ee73f
--- /dev/null
+++ b/python/pykde/extra/kde320/ksharedptr.h
@@ -0,0 +1,171 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers perfectly. So just
+ * use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->KShared::_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->KShared::_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->KShared::_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->KShared::_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->KShared::_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->KShared::_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->KShared::_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->KShared::_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/ksycocafactory.h b/python/pykde/extra/kde320/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde320/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/ktoolbarbutton.h b/python/pykde/extra/kde320/ktoolbarbutton.h
new file mode 100644
index 00000000..cb126552
--- /dev/null
+++ b/python/pykde/extra/kde320/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/kurifilter.h b/python/pykde/extra/kde320/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde320/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde320/selectdialog.h b/python/pykde/extra/kde320/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde320/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde321/configwidget.h b/python/pykde/extra/kde321/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde321/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde321/kaccelaction.h b/python/pykde/extra/kde321/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde321/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde321/kaccelbase.h b/python/pykde/extra/kde321/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde321/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde321/kicontheme.h b/python/pykde/extra/kde321/kicontheme.h
new file mode 100644
index 00000000..a360a15d
--- /dev/null
+++ b/python/pykde/extra/kde321/kicontheme.h
@@ -0,0 +1,334 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.29 2003/11/02 14:50:34 carewolf Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/kkeyserver_x11.h b/python/pykde/extra/kde321/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde321/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde321/konsole_part.h b/python/pykde/extra/kde321/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde321/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/kpanelmenu.h b/python/pykde/extra/kde321/kpanelmenu.h
new file mode 100644
index 00000000..83c32680
--- /dev/null
+++ b/python/pykde/extra/kde321/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde321/krecentdirs.h b/python/pykde/extra/kde321/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde321/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/ksharedptr.h b/python/pykde/extra/kde321/ksharedptr.h
new file mode 100644
index 00000000..aa071164
--- /dev/null
+++ b/python/pykde/extra/kde321/ksharedptr.h
@@ -0,0 +1,171 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers perfectly. So just
+ * use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/ksycocafactory.h b/python/pykde/extra/kde321/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde321/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/ktoolbarbutton.h b/python/pykde/extra/kde321/ktoolbarbutton.h
new file mode 100644
index 00000000..cb126552
--- /dev/null
+++ b/python/pykde/extra/kde321/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/kurifilter.h b/python/pykde/extra/kde321/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde321/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde321/selectdialog.h b/python/pykde/extra/kde321/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde321/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde322/configwidget.h b/python/pykde/extra/kde322/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde322/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde322/kaccelaction.h b/python/pykde/extra/kde322/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde322/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde322/kaccelbase.h b/python/pykde/extra/kde322/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde322/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde322/kicontheme.h b/python/pykde/extra/kde322/kicontheme.h
new file mode 100644
index 00000000..a360a15d
--- /dev/null
+++ b/python/pykde/extra/kde322/kicontheme.h
@@ -0,0 +1,334 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.29 2003/11/02 14:50:34 carewolf Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/kkeyserver_x11.h b/python/pykde/extra/kde322/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde322/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde322/konsole_part.h b/python/pykde/extra/kde322/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde322/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/kpanelmenu.h b/python/pykde/extra/kde322/kpanelmenu.h
new file mode 100644
index 00000000..83c32680
--- /dev/null
+++ b/python/pykde/extra/kde322/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde322/krecentdirs.h b/python/pykde/extra/kde322/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde322/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/ksharedptr.h b/python/pykde/extra/kde322/ksharedptr.h
new file mode 100644
index 00000000..aa071164
--- /dev/null
+++ b/python/pykde/extra/kde322/ksharedptr.h
@@ -0,0 +1,171 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers perfectly. So just
+ * use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/ksycocafactory.h b/python/pykde/extra/kde322/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde322/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/ktoolbarbutton.h b/python/pykde/extra/kde322/ktoolbarbutton.h
new file mode 100644
index 00000000..cb126552
--- /dev/null
+++ b/python/pykde/extra/kde322/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/kurifilter.h b/python/pykde/extra/kde322/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde322/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde322/selectdialog.h b/python/pykde/extra/kde322/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde322/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde323/configwidget.h b/python/pykde/extra/kde323/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde323/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde323/kaccelaction.h b/python/pykde/extra/kde323/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde323/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde323/kaccelbase.h b/python/pykde/extra/kde323/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde323/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde323/kicontheme.h b/python/pykde/extra/kde323/kicontheme.h
new file mode 100644
index 00000000..a360a15d
--- /dev/null
+++ b/python/pykde/extra/kde323/kicontheme.h
@@ -0,0 +1,334 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.29 2003/11/02 14:50:34 carewolf Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/kkeyserver_x11.h b/python/pykde/extra/kde323/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde323/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde323/konsole_part.h b/python/pykde/extra/kde323/konsole_part.h
new file mode 100644
index 00000000..624b74eb
--- /dev/null
+++ b/python/pykde/extra/kde323/konsole_part.h
@@ -0,0 +1,223 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/kpanelmenu.h b/python/pykde/extra/kde323/kpanelmenu.h
new file mode 100644
index 00000000..83c32680
--- /dev/null
+++ b/python/pykde/extra/kde323/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <goffioul@imec.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <goffioul@imec.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde323/krecentdirs.h b/python/pykde/extra/kde323/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde323/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/ksharedptr.h b/python/pykde/extra/kde323/ksharedptr.h
new file mode 100644
index 00000000..aa071164
--- /dev/null
+++ b/python/pykde/extra/kde323/ksharedptr.h
@@ -0,0 +1,171 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers perfectly. So just
+ * use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.22 2003/08/20 08:01:42 coolo Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/ksycocafactory.h b/python/pykde/extra/kde323/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde323/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/ktoolbarbutton.h b/python/pykde/extra/kde323/ktoolbarbutton.h
new file mode 100644
index 00000000..cb126552
--- /dev/null
+++ b/python/pykde/extra/kde323/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.34 2003/09/09 12:40:58 bhards Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/kurifilter.h b/python/pykde/extra/kde323/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde323/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde323/selectdialog.h b/python/pykde/extra/kde323/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde323/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde330/configwidget.h b/python/pykde/extra/kde330/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde330/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde330/kaccelaction.h b/python/pykde/extra/kde330/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde330/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde330/kaccelbase.h b/python/pykde/extra/kde330/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde330/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde330/kicontheme.h b/python/pykde/extra/kde330/kicontheme.h
new file mode 100644
index 00000000..15792928
--- /dev/null
+++ b/python/pykde/extra/kde330/kicontheme.h
@@ -0,0 +1,336 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.30 2004/01/25 21:50:41 aseigo Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/kkeyserver_x11.h b/python/pykde/extra/kde330/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde330/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde330/konsole_part.h b/python/pykde/extra/kde330/konsole_part.h
new file mode 100644
index 00000000..83998884
--- /dev/null
+++ b/python/pykde/extra/kde330/konsole_part.h
@@ -0,0 +1,229 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};
+
+//////////////////////////////////////////////////////////////////////
+*/
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/kpanelmenu.h b/python/pykde/extra/kde330/kpanelmenu.h
new file mode 100644
index 00000000..57f77a45
--- /dev/null
+++ b/python/pykde/extra/kde330/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <kdeprint@swing.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde330/krecentdirs.h b/python/pykde/extra/kde330/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde330/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/ksharedptr.h b/python/pykde/extra/kde330/ksharedptr.h
new file mode 100644
index 00000000..d951f39b
--- /dev/null
+++ b/python/pykde/extra/kde330/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/ksycocafactory.h b/python/pykde/extra/kde330/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde330/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/ktoolbarbutton.h b/python/pykde/extra/kde330/ktoolbarbutton.h
new file mode 100644
index 00000000..39907a75
--- /dev/null
+++ b/python/pykde/extra/kde330/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.36 2004/03/18 02:50:16 bmeyer Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/kurifilter.h b/python/pykde/extra/kde330/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde330/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde330/selectdialog.h b/python/pykde/extra/kde330/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde330/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde331/configwidget.h b/python/pykde/extra/kde331/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde331/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde331/kaccelaction.h b/python/pykde/extra/kde331/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde331/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde331/kaccelbase.h b/python/pykde/extra/kde331/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde331/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde331/kicontheme.h b/python/pykde/extra/kde331/kicontheme.h
new file mode 100644
index 00000000..9569800e
--- /dev/null
+++ b/python/pykde/extra/kde331/kicontheme.h
@@ -0,0 +1,338 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.31 2004/05/31 17:18:02 montanaro Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous (ugh!) sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/kkeyserver_x11.h b/python/pykde/extra/kde331/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde331/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde331/konsole_part.h b/python/pykde/extra/kde331/konsole_part.h
new file mode 100644
index 00000000..83998884
--- /dev/null
+++ b/python/pykde/extra/kde331/konsole_part.h
@@ -0,0 +1,229 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};
+
+//////////////////////////////////////////////////////////////////////
+*/
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/kpanelmenu.h b/python/pykde/extra/kde331/kpanelmenu.h
new file mode 100644
index 00000000..57f77a45
--- /dev/null
+++ b/python/pykde/extra/kde331/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <kdeprint@swing.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde331/krecentdirs.h b/python/pykde/extra/kde331/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde331/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/ksharedptr.h b/python/pykde/extra/kde331/ksharedptr.h
new file mode 100644
index 00000000..d951f39b
--- /dev/null
+++ b/python/pykde/extra/kde331/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/ksycocafactory.h b/python/pykde/extra/kde331/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde331/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/ktoolbarbutton.h b/python/pykde/extra/kde331/ktoolbarbutton.h
new file mode 100644
index 00000000..39907a75
--- /dev/null
+++ b/python/pykde/extra/kde331/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.36 2004/03/18 02:50:16 bmeyer Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/kurifilter.h b/python/pykde/extra/kde331/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde331/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde331/selectdialog.h b/python/pykde/extra/kde331/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde331/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde332/configwidget.h b/python/pykde/extra/kde332/configwidget.h
new file mode 100644
index 00000000..4eb9c4f9
--- /dev/null
+++ b/python/pykde/extra/kde332/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde332/kaccelaction.h b/python/pykde/extra/kde332/kaccelaction.h
new file mode 100644
index 00000000..30823a88
--- /dev/null
+++ b/python/pykde/extra/kde332/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde332/kaccelbase.h b/python/pykde/extra/kde332/kaccelbase.h
new file mode 100644
index 00000000..c5433e04
--- /dev/null
+++ b/python/pykde/extra/kde332/kaccelbase.h
@@ -0,0 +1,230 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver_x11.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ * @version $Id: kaccelbase.h,v 1.26 2003/08/16 19:44:57 coolo Exp $
+ */
+
+class KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde332/kicontheme.h b/python/pykde/extra/kde332/kicontheme.h
new file mode 100644
index 00000000..5eabf75b
--- /dev/null
+++ b/python/pykde/extra/kde332/kicontheme.h
@@ -0,0 +1,338 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * $Id: kicontheme.h,v 1.31 2004/05/31 17:18:02 montanaro Exp $
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group an an icon.
+ */
+ enum Group { NoGroup=-1, Desktop=0, FirstGroup=0, Toolbar,
+ MainToolbar, Small, Panel, LastGroup, User };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous (ugh!) sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a fileis a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+// KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/kkeyserver_x11.h b/python/pykde/extra/kde332/kkeyserver_x11.h
new file mode 100644
index 00000000..cf1b360a
--- /dev/null
+++ b/python/pykde/extra/kde332/kkeyserver_x11.h
@@ -0,0 +1,433 @@
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system (X11) specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde332/konsole_part.h b/python/pykde/extra/kde332/konsole_part.h
new file mode 100644
index 00000000..83998884
--- /dev/null
+++ b/python/pykde/extra/kde332/konsole_part.h
@@ -0,0 +1,229 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};
+
+//////////////////////////////////////////////////////////////////////
+*/
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/kpanelmenu.h b/python/pykde/extra/kde332/kpanelmenu.h
new file mode 100644
index 00000000..57f77a45
--- /dev/null
+++ b/python/pykde/extra/kde332/kpanelmenu.h
@@ -0,0 +1,181 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ * @author The kicker maintainer, Michael Goffioul <kdeprint@swing.be>
+ */
+class KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde332/krecentdirs.h b/python/pykde/extra/kde332/krecentdirs.h
new file mode 100644
index 00000000..71f771b1
--- /dev/null
+++ b/python/pykde/extra/kde332/krecentdirs.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/ksharedptr.h b/python/pykde/extra/kde332/ksharedptr.h
new file mode 100644
index 00000000..d951f39b
--- /dev/null
+++ b/python/pykde/extra/kde332/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+class KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ * @version $Id: ksharedptr.h,v 1.23 2004/02/04 12:16:03 raabe Exp $
+ */
+template< class T >
+struct KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/ksycocafactory.h b/python/pykde/extra/kde332/ksycocafactory.h
new file mode 100644
index 00000000..3a422957
--- /dev/null
+++ b/python/pykde/extra/kde332/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__ "$Id: ksycocafactory.h,v 1.14 2003/10/29 17:59:18 waba Exp $"
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/ktoolbarbutton.h b/python/pykde/extra/kde332/ktoolbarbutton.h
new file mode 100644
index 00000000..39907a75
--- /dev/null
+++ b/python/pykde/extra/kde332/ktoolbarbutton.h
@@ -0,0 +1,315 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ void clicked(int);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.36 2004/03/18 02:50:16 bmeyer Exp $
+*/
+class KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/kurifilter.h b/python/pykde/extra/kde332/kurifilter.h
new file mode 100644
index 00000000..51d040a3
--- /dev/null
+++ b/python/pykde/extra/kde332/kurifilter.h
@@ -0,0 +1,644 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__ "$Id: kurifilter.h,v 1.41 2003/08/30 08:56:21 raabe Exp $"
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+#include <kdemacros.h>
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde332/selectdialog.h b/python/pykde/extra/kde332/selectdialog.h
new file mode 100644
index 00000000..e366e492
--- /dev/null
+++ b/python/pykde/extra/kde332/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde340/configwidget.h b/python/pykde/extra/kde340/configwidget.h
new file mode 100644
index 00000000..5be40925
--- /dev/null
+++ b/python/pykde/extra/kde340/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class KRESOURCES_EXPORT ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde340/kaccelaction.h b/python/pykde/extra/kde340/kaccelaction.h
new file mode 100644
index 00000000..ff1e9a38
--- /dev/null
+++ b/python/pykde/extra/kde340/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde340/kaccelbase.h b/python/pykde/extra/kde340/kaccelbase.h
new file mode 100644
index 00000000..95ec2f51
--- /dev/null
+++ b/python/pykde/extra/kde340/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde340/kicontheme.h b/python/pykde/extra/kde340/kicontheme.h
new file mode 100644
index 00000000..95fbd8f4
--- /dev/null
+++ b/python/pykde/extra/kde340/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+// KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/kkeyserver.h b/python/pykde/extra/kde340/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde340/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde340/kkeyserver_x11.h b/python/pykde/extra/kde340/kkeyserver_x11.h
new file mode 100644
index 00000000..37ce773b
--- /dev/null
+++ b/python/pykde/extra/kde340/kkeyserver_x11.h
@@ -0,0 +1,461 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde340/konsole_part.h b/python/pykde/extra/kde340/konsole_part.h
new file mode 100644
index 00000000..b0fe20a8
--- /dev/null
+++ b/python/pykde/extra/kde340/konsole_part.h
@@ -0,0 +1,228 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/kpanelmenu.h b/python/pykde/extra/kde340/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde340/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde340/krecentdirs.h b/python/pykde/extra/kde340/krecentdirs.h
new file mode 100644
index 00000000..078efcc5
--- /dev/null
+++ b/python/pykde/extra/kde340/krecentdirs.h
@@ -0,0 +1,70 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KIO_EXPORT KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/ksharedptr.h b/python/pykde/extra/kde340/ksharedptr.h
new file mode 100644
index 00000000..2d444c95
--- /dev/null
+++ b/python/pykde/extra/kde340/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/ksycocafactory.h b/python/pykde/extra/kde340/ksycocafactory.h
new file mode 100644
index 00000000..4ec685bc
--- /dev/null
+++ b/python/pykde/extra/kde340/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/ktoolbarbutton.h b/python/pykde/extra/kde340/ktoolbarbutton.h
new file mode 100644
index 00000000..96a3d2cf
--- /dev/null
+++ b/python/pykde/extra/kde340/ktoolbarbutton.h
@@ -0,0 +1,329 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.39 2004/12/22 14:08:36 faure Exp $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/kurifilter.h b/python/pykde/extra/kde340/kurifilter.h
new file mode 100644
index 00000000..6d01fa76
--- /dev/null
+++ b/python/pykde/extra/kde340/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde340/selectdialog.h b/python/pykde/extra/kde340/selectdialog.h
new file mode 100644
index 00000000..3188d345
--- /dev/null
+++ b/python/pykde/extra/kde340/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class KRESOURCES_EXPORT SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde341/configwidget.h b/python/pykde/extra/kde341/configwidget.h
new file mode 100644
index 00000000..5be40925
--- /dev/null
+++ b/python/pykde/extra/kde341/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class KRESOURCES_EXPORT ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde341/kaccelaction.h b/python/pykde/extra/kde341/kaccelaction.h
new file mode 100644
index 00000000..ff1e9a38
--- /dev/null
+++ b/python/pykde/extra/kde341/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde341/kaccelbase.h b/python/pykde/extra/kde341/kaccelbase.h
new file mode 100644
index 00000000..95ec2f51
--- /dev/null
+++ b/python/pykde/extra/kde341/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde341/kicontheme.h b/python/pykde/extra/kde341/kicontheme.h
new file mode 100644
index 00000000..95fbd8f4
--- /dev/null
+++ b/python/pykde/extra/kde341/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+// KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/kkeyserver.h b/python/pykde/extra/kde341/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde341/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde341/kkeyserver_x11.h b/python/pykde/extra/kde341/kkeyserver_x11.h
new file mode 100644
index 00000000..37ce773b
--- /dev/null
+++ b/python/pykde/extra/kde341/kkeyserver_x11.h
@@ -0,0 +1,461 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde341/konsole_part.h b/python/pykde/extra/kde341/konsole_part.h
new file mode 100644
index 00000000..b0fe20a8
--- /dev/null
+++ b/python/pykde/extra/kde341/konsole_part.h
@@ -0,0 +1,228 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/kpanelmenu.h b/python/pykde/extra/kde341/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde341/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde341/krecentdirs.h b/python/pykde/extra/kde341/krecentdirs.h
new file mode 100644
index 00000000..078efcc5
--- /dev/null
+++ b/python/pykde/extra/kde341/krecentdirs.h
@@ -0,0 +1,70 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KIO_EXPORT KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/ksharedptr.h b/python/pykde/extra/kde341/ksharedptr.h
new file mode 100644
index 00000000..2d444c95
--- /dev/null
+++ b/python/pykde/extra/kde341/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/ksycocafactory.h b/python/pykde/extra/kde341/ksycocafactory.h
new file mode 100644
index 00000000..4ec685bc
--- /dev/null
+++ b/python/pykde/extra/kde341/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/ktoolbarbutton.h b/python/pykde/extra/kde341/ktoolbarbutton.h
new file mode 100644
index 00000000..96a3d2cf
--- /dev/null
+++ b/python/pykde/extra/kde341/ktoolbarbutton.h
@@ -0,0 +1,329 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h,v 1.39 2004/12/22 14:08:36 faure Exp $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/kurifilter.h b/python/pykde/extra/kde341/kurifilter.h
new file mode 100644
index 00000000..6d01fa76
--- /dev/null
+++ b/python/pykde/extra/kde341/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde341/selectdialog.h b/python/pykde/extra/kde341/selectdialog.h
new file mode 100644
index 00000000..3188d345
--- /dev/null
+++ b/python/pykde/extra/kde341/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class KRESOURCES_EXPORT SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde342/configwidget.h b/python/pykde/extra/kde342/configwidget.h
new file mode 100644
index 00000000..5be40925
--- /dev/null
+++ b/python/pykde/extra/kde342/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class KRESOURCES_EXPORT ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde342/kaccelaction.h b/python/pykde/extra/kde342/kaccelaction.h
new file mode 100644
index 00000000..ff1e9a38
--- /dev/null
+++ b/python/pykde/extra/kde342/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde342/kaccelbase.h b/python/pykde/extra/kde342/kaccelbase.h
new file mode 100644
index 00000000..95ec2f51
--- /dev/null
+++ b/python/pykde/extra/kde342/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde342/kicontheme.h b/python/pykde/extra/kde342/kicontheme.h
new file mode 100644
index 00000000..0079e71c
--- /dev/null
+++ b/python/pykde/extra/kde342/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+// KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/kkeyserver.h b/python/pykde/extra/kde342/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde342/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde342/kkeyserver_x11.h b/python/pykde/extra/kde342/kkeyserver_x11.h
new file mode 100644
index 00000000..f1674014
--- /dev/null
+++ b/python/pykde/extra/kde342/kkeyserver_x11.h
@@ -0,0 +1,469 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde342/konsole_part.h b/python/pykde/extra/kde342/konsole_part.h
new file mode 100644
index 00000000..b0fe20a8
--- /dev/null
+++ b/python/pykde/extra/kde342/konsole_part.h
@@ -0,0 +1,228 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/kpanelmenu.h b/python/pykde/extra/kde342/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde342/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde342/krecentdirs.h b/python/pykde/extra/kde342/krecentdirs.h
new file mode 100644
index 00000000..078efcc5
--- /dev/null
+++ b/python/pykde/extra/kde342/krecentdirs.h
@@ -0,0 +1,70 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KIO_EXPORT KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/ksharedptr.h b/python/pykde/extra/kde342/ksharedptr.h
new file mode 100644
index 00000000..2d444c95
--- /dev/null
+++ b/python/pykde/extra/kde342/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/ksycocafactory.h b/python/pykde/extra/kde342/ksycocafactory.h
new file mode 100644
index 00000000..4ec685bc
--- /dev/null
+++ b/python/pykde/extra/kde342/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/ktoolbarbutton.h b/python/pykde/extra/kde342/ktoolbarbutton.h
new file mode 100644
index 00000000..84a34980
--- /dev/null
+++ b/python/pykde/extra/kde342/ktoolbarbutton.h
@@ -0,0 +1,329 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 372745 2004-12-22 14:08:36Z dfaure $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/kurifilter.h b/python/pykde/extra/kde342/kurifilter.h
new file mode 100644
index 00000000..6d01fa76
--- /dev/null
+++ b/python/pykde/extra/kde342/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde342/selectdialog.h b/python/pykde/extra/kde342/selectdialog.h
new file mode 100644
index 00000000..3188d345
--- /dev/null
+++ b/python/pykde/extra/kde342/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class KRESOURCES_EXPORT SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde343/configwidget.h b/python/pykde/extra/kde343/configwidget.h
new file mode 100644
index 00000000..5be40925
--- /dev/null
+++ b/python/pykde/extra/kde343/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class KRESOURCES_EXPORT ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde343/kaccelaction.h b/python/pykde/extra/kde343/kaccelaction.h
new file mode 100644
index 00000000..ff1e9a38
--- /dev/null
+++ b/python/pykde/extra/kde343/kaccelaction.h
@@ -0,0 +1,564 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param configurable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName,
+ m_sLabel,
+ m_sWhatsThis;
+ KShortcut m_cut;
+ KShortcut m_cutDefault3, m_cutDefault4;
+ const QObject* m_pObjSlot;
+ const char* m_psMethodSlot;
+ bool m_bConfigurable,
+ m_bEnabled;
+ int m_nIDAccel;
+ uint m_nConnections;
+
+ void incConnections();
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param aAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ KAccelBase* m_pKAccelBase;
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated, m_nSize;
+
+ void resize( uint );
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde343/kaccelbase.h b/python/pykde/extra/kde343/kaccelbase.h
new file mode 100644
index 00000000..95ec2f51
--- /dev/null
+++ b/python/pykde/extra/kde343/kaccelbase.h
@@ -0,0 +1,229 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+ enum Signal { KEYCODE_CHANGED };
+
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ uint actionCount() const;
+ KAccelActions& actions();
+ bool isEnabled() const;
+
+ KAccelAction* actionPtr( const QString& sAction );
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ KAccelAction* actionPtr( const KKey& key );
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ const QString& configGroup() const { return m_sConfigGroup; }
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ // return value of AutoUpdate flag before this call.
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde343/kicontheme.h b/python/pykde/extra/kde343/kicontheme.h
new file mode 100644
index 00000000..0079e71c
--- /dev/null
+++ b/python/pykde/extra/kde343/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+// KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/kkeyserver.h b/python/pykde/extra/kde343/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde343/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde343/kkeyserver_x11.h b/python/pykde/extra/kde343/kkeyserver_x11.h
new file mode 100644
index 00000000..f1674014
--- /dev/null
+++ b/python/pykde/extra/kde343/kkeyserver_x11.h
@@ -0,0 +1,469 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde343/konsole_part.h b/python/pykde/extra/kde343/konsole_part.h
new file mode 100644
index 00000000..b0fe20a8
--- /dev/null
+++ b/python/pykde/extra/kde343/konsole_part.h
@@ -0,0 +1,228 @@
+/*
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __KONSOLE_PART_H__
+#define __KONSOLE_PART_H__
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited();
+ void receivedData( const QString& s );
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+ void slotProcessExited();
+ void slotReceivedData( const QString& s );
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+ void updateTitle();
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int,int);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotWordSeps();
+ void fontNotFound();
+ void slotSetEncoding();
+ void slotFontChanged();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+ void setFont(int fontno);
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+// ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectFont;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+ QString fontNotFound_par;
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_font;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/kpanelmenu.h b/python/pykde/extra/kde343/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde343/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde343/krecentdirs.h b/python/pykde/extra/kde343/krecentdirs.h
new file mode 100644
index 00000000..078efcc5
--- /dev/null
+++ b/python/pykde/extra/kde343/krecentdirs.h
@@ -0,0 +1,70 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KIO_EXPORT KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/ksharedptr.h b/python/pykde/extra/kde343/ksharedptr.h
new file mode 100644
index 00000000..2d444c95
--- /dev/null
+++ b/python/pykde/extra/kde343/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/ksycocafactory.h b/python/pykde/extra/kde343/ksycocafactory.h
new file mode 100644
index 00000000..4ec685bc
--- /dev/null
+++ b/python/pykde/extra/kde343/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/ktoolbarbutton.h b/python/pykde/extra/kde343/ktoolbarbutton.h
new file mode 100644
index 00000000..84a34980
--- /dev/null
+++ b/python/pykde/extra/kde343/ktoolbarbutton.h
@@ -0,0 +1,329 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 372745 2004-12-22 14:08:36Z dfaure $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/kurifilter.h b/python/pykde/extra/kde343/kurifilter.h
new file mode 100644
index 00000000..6d01fa76
--- /dev/null
+++ b/python/pykde/extra/kde343/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *m_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde343/selectdialog.h b/python/pykde/extra/kde343/selectdialog.h
new file mode 100644
index 00000000..3188d345
--- /dev/null
+++ b/python/pykde/extra/kde343/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class KRESOURCES_EXPORT SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde350/configwidget.h b/python/pykde/extra/kde350/configwidget.h
new file mode 100644
index 00000000..ae763978
--- /dev/null
+++ b/python/pykde/extra/kde350/configwidget.h
@@ -0,0 +1,58 @@
+/*
+ This file is part of libkresources.
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KRESOURCES_CONFIGWIDGET_H
+#define KRESOURCES_CONFIGWIDGET_H
+
+#include "resource.h"
+
+#include <kconfig.h>
+
+#include <qwidget.h>
+
+namespace KRES {
+
+class KRESOURCES_EXPORT ConfigWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ ConfigWidget( QWidget *parent = 0, const char *name = 0 );
+
+ /**
+ Sets the widget to 'edit' mode. Reimplement this method if you are
+ interested in the mode change (to disable some GUI element for
+ example). By default the widget is in 'create new' mode.
+ */
+ virtual void setInEditMode( bool value );
+
+ public slots:
+ virtual void loadSettings( Resource *resource ) = 0;
+ virtual void saveSettings( Resource *resource ) = 0;
+
+ signals:
+ void setReadOnly( bool value );
+
+ protected:
+ Resource *mResource;
+};
+
+}
+#endif
diff --git a/python/pykde/extra/kde350/kaccelaction.h b/python/pykde/extra/kde350/kaccelaction.h
new file mode 100644
index 00000000..4164ca51
--- /dev/null
+++ b/python/pykde/extra/kde350/kaccelaction.h
@@ -0,0 +1,576 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param enable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName /**< Name of accel. @sa setName() */,
+ m_sLabel /**< Label of accel. User-visible. */,
+ m_sWhatsThis /**< WhatsThis help for accel. User-visible. */;
+ KShortcut m_cut /**< Shortcut actually assigned. */;
+ KShortcut m_cutDefault3 /**< Default shortcut in 3-modifier layout */,
+ m_cutDefault4 /**< Default shortcur in 4-modifier layout */;
+ const QObject* m_pObjSlot /**< Object we will send signals to. */;
+ const char* m_psMethodSlot /**< Slot we send signals to, in m_pObjSlot */;
+ bool m_bConfigurable /**< Can this accel be configured by the user? */,
+ m_bEnabled /**< Is this accel enabled? */;
+ int m_nIDAccel /**< Id of this accel, from the list of IDs */;
+ uint m_nConnections /**< Number of connections to this accel. */ ;
+
+ /** @internal Increment the number of connections to this accel. */
+ void incConnections();
+ /** @internal Decrement the number of connections to this accel (bouded by zero). */
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sAction the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param rgCutDefaults3 the default shortcut for 3 modifier systems
+ * @param rgCutDefaults4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled if true the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ /** Base object that proxies signals from us. */
+ KAccelBase* m_pKAccelBase;
+ /** Array of actions we're hanging on to. */
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated /**< Allocated size of the array. */,
+ m_nSize /**< Amount in use. */ ;
+
+ /**
+ * Resize the list to the given number @p new_size of entries.
+ * @todo Can you make it smaller?
+ * @todo Implementation seems to break m_nSize.
+ */
+ void resize( uint new_size );
+ /** Add a action to this collection. @todo Document ownership. */
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde350/kaccelbase.h b/python/pykde/extra/kde350/kaccelbase.h
new file mode 100644
index 00000000..0becbe0a
--- /dev/null
+++ b/python/pykde/extra/kde350/kaccelbase.h
@@ -0,0 +1,260 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ /** Initialization mode of the KAccelBase, used in constructor. */
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+
+ /** Enum for kinds of signals which may be emitted. */
+ enum Signal { KEYCODE_CHANGED };
+
+ /** Constructor. @p fInitCode should be a bitwise OR of
+ * values from the Init enum.
+ */
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ /** Returns number of actions in this handler. */
+ uint actionCount() const;
+ /** Returns a list of all the actions in this handler. */
+ KAccelActions& actions();
+ /** Returns whether this accelerator handler is enabled or not. */
+ bool isEnabled() const;
+
+ /** Returns a pointer to the KAccelAction named @p sAction. */
+ KAccelAction* actionPtr( const QString& sAction );
+ /** Const version of the above. */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ /** Returns a pointer to the KAccelAction associated with
+ * the key @p key. This function takes into account the
+ * key mapping defined in the constructor.
+ *
+ * May return 0 if no (or more than one)
+ * action is associated with the key.
+ */
+ KAccelAction* actionPtr( const KKey& key );
+ /** Basically the same as above, except a KKeyServer::Key
+ * already has a key mapping defined (either NATIVE_KEYS or not).
+ */
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ /** Returns the name of the configuration group these
+ * accelerators are stored in. The default is "Shortcuts".
+ */
+ const QString& configGroup() const { return m_sConfigGroup; }
+ /** Set the group (in the configuration file) for storing
+ * accelerators.
+ */
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ /** Returns whether autoupdate is enabled for these accelerators. */
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ /** Enables (or disables) autoupdate for these accelerators.
+ * @return the value of autoupdate before the call.
+ */
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ virtual bool isEnabledInternal() const;
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde350/kicontheme.h b/python/pykde/extra/kde350/kicontheme.h
new file mode 100644
index 00000000..a339ecfc
--- /dev/null
+++ b/python/pykde/extra/kde350/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/kkeyserver.h b/python/pykde/extra/kde350/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde350/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde350/kkeyserver_x11.h b/python/pykde/extra/kde350/kkeyserver_x11.h
new file mode 100644
index 00000000..73c800db
--- /dev/null
+++ b/python/pykde/extra/kde350/kkeyserver_x11.h
@@ -0,0 +1,477 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * Converts the modifier given as user-readable string
+ * to KKey::ModFlag modifier, or 0.
+ * @internal
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint stringUserToMod( const QString& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde350/konsole_part.h b/python/pykde/extra/kde350/konsole_part.h
new file mode 100644
index 00000000..16028ea5
--- /dev/null
+++ b/python/pykde/extra/kde350/konsole_part.h
@@ -0,0 +1,241 @@
+/* -*- C++ -*-
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KONSOLE_PART_H
+#define KONSOLE_PART_H
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class KActionMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface, public ExtTerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited( KProcess * );
+ void receivedData( const QString& s );
+ void forkedChild();
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+// void updateTitle(TESession*);
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+ void applyProperties();
+ void setSettingsMenuEnabled( bool );
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int /*columns*/, int /*lines*/);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotUseKonsoleSettings();
+ void slotWordSeps();
+ void slotSetEncoding();
+ void biggerFont();
+ void smallerFont();
+
+ void autoShowShell();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+ // ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KActionCollection* actions;
+ KActionCollection* settingsActions;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+ KToggleAction* m_useKonsoleSettings;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KActionMenu* m_fontsizes;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+ bool b_useKonsoleSettings:1;
+ bool b_autoDestroy:1;
+ bool b_autoStartShell:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void newSession();
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+ void setAutoDestroy( bool );
+ void setAutoStartShell( bool );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/kpanelmenu.h b/python/pykde/extra/kde350/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde350/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde350/krecentdirs.h b/python/pykde/extra/kde350/krecentdirs.h
new file mode 100644
index 00000000..078efcc5
--- /dev/null
+++ b/python/pykde/extra/kde350/krecentdirs.h
@@ -0,0 +1,70 @@
+/* -*- c++ -*-
+ * Copyright (C)2000 Waldo Bastian <bastian@kde.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef __KRECENTDIRS_H
+#define __KRECENTDIRS_H
+
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * The goal of this class is to make sure that, when the user needs to
+ * specify a file via the file selection dialog, this dialog will start
+ * in the directory most likely to contain the desired files.
+ *
+ * This works as follows: Each time the file selection dialog is
+ * shown, the programmer can specify a "file-class". The file-dialog will
+ * then start with the directory associated with this file-class. When
+ * the dialog closes, the directory currently shown in the file-dialog
+ * will be associated with the file-class.
+ *
+ * A file-class can either start with ':' or with '::'. If it starts with
+ * a single ':' the file-class is specific to the current application.
+ * If the file-class starts with '::' it is global to all applications.
+ */
+class KIO_EXPORT KRecentDirs
+{
+public:
+ /**
+ * Returns a list of directories associated with this file-class.
+ * The most recently used directory is at the front of the list.
+ */
+ static QStringList list(const QString &fileClass);
+
+ /**
+ * Returns the most recently used directory accociated with this file-class.
+ */
+ static QString dir(const QString &fileClass);
+
+ /**
+ * Associates @p directory with @p fileClass
+ */
+ static void add(const QString &fileClass, const QString &directory);
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/ksharedptr.h b/python/pykde/extra/kde350/ksharedptr.h
new file mode 100644
index 00000000..ada08413
--- /dev/null
+++ b/python/pykde/extra/kde350/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/ksycocafactory.h b/python/pykde/extra/kde350/ksycocafactory.h
new file mode 100644
index 00000000..65bb9d98
--- /dev/null
+++ b/python/pykde/extra/kde350/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/ktoolbarbutton.h b/python/pykde/extra/kde350/ktoolbarbutton.h
new file mode 100644
index 00000000..7526f025
--- /dev/null
+++ b/python/pykde/extra/kde350/ktoolbarbutton.h
@@ -0,0 +1,330 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ bool event(QEvent *e);
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 465272 2005-09-29 09:47:40Z mueller $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/kurifilter.h b/python/pykde/extra/kde350/kurifilter.h
new file mode 100644
index 00000000..355ce38a
--- /dev/null
+++ b/python/pykde/extra/kde350/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *s_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde350/selectdialog.h b/python/pykde/extra/kde350/selectdialog.h
new file mode 100644
index 00000000..20b899ab
--- /dev/null
+++ b/python/pykde/extra/kde350/selectdialog.h
@@ -0,0 +1,87 @@
+/*
+ This file is part of libkresources.
+
+ Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
+ Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KRESOURCES_SELECTDIALOG_H
+#define KRESOURCES_SELECTDIALOG_H
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qmap.h>
+
+#include <kdialog.h>
+
+class KListBox;
+
+namespace KRES {
+
+class Resource;
+
+/**
+ * Dialog for selecting a resource.
+ *
+ * Example:
+ *
+ * \code
+ *
+ * QPtrList<Resource> list = ... // can be retrived from KRES::Manager (e.g. KABC::AddressBook)
+ *
+ * KABC::Resource *res = KABC::SelectDialog::getResource( list, parentWdg );
+ * if ( !res ) {
+ * // no resource selected
+ * } else {
+ * // do something with resource
+ * }
+ * \endcode
+ */
+class KRESOURCES_EXPORT SelectDialog
+{
+ public:
+ /**
+ * Constructor.
+ * @param list The list of available resources
+ * @param parent The parent widget
+ * @param name The name of the dialog
+ */
+ SelectDialog( QPtrList<Resource> list, QWidget *parent = 0,
+ const char *name = 0);
+
+ /**
+ * Returns selected resource.
+ */
+ Resource *resource();
+
+ /**
+ * Opens a dialog showing the available resources and returns the resource the
+ * user has selected. Returns 0, if the dialog was canceled.
+ */
+ static Resource *getResource( QPtrList<Resource> list, QWidget *parent = 0 );
+
+ private:
+ KListBox *mResourceId;
+
+ QMap<int, Resource*> mResourceMap;
+};
+
+}
+
+#endif
diff --git a/python/pykde/extra/kde351/kaccelaction.h b/python/pykde/extra/kde351/kaccelaction.h
new file mode 100644
index 00000000..4164ca51
--- /dev/null
+++ b/python/pykde/extra/kde351/kaccelaction.h
@@ -0,0 +1,576 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param enable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName /**< Name of accel. @sa setName() */,
+ m_sLabel /**< Label of accel. User-visible. */,
+ m_sWhatsThis /**< WhatsThis help for accel. User-visible. */;
+ KShortcut m_cut /**< Shortcut actually assigned. */;
+ KShortcut m_cutDefault3 /**< Default shortcut in 3-modifier layout */,
+ m_cutDefault4 /**< Default shortcur in 4-modifier layout */;
+ const QObject* m_pObjSlot /**< Object we will send signals to. */;
+ const char* m_psMethodSlot /**< Slot we send signals to, in m_pObjSlot */;
+ bool m_bConfigurable /**< Can this accel be configured by the user? */,
+ m_bEnabled /**< Is this accel enabled? */;
+ int m_nIDAccel /**< Id of this accel, from the list of IDs */;
+ uint m_nConnections /**< Number of connections to this accel. */ ;
+
+ /** @internal Increment the number of connections to this accel. */
+ void incConnections();
+ /** @internal Decrement the number of connections to this accel (bouded by zero). */
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sAction the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param rgCutDefaults3 the default shortcut for 3 modifier systems
+ * @param rgCutDefaults4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled if true the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ /** Base object that proxies signals from us. */
+ KAccelBase* m_pKAccelBase;
+ /** Array of actions we're hanging on to. */
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated /**< Allocated size of the array. */,
+ m_nSize /**< Amount in use. */ ;
+
+ /**
+ * Resize the list to the given number @p new_size of entries.
+ * @todo Can you make it smaller?
+ * @todo Implementation seems to break m_nSize.
+ */
+ void resize( uint new_size );
+ /** Add a action to this collection. @todo Document ownership. */
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde351/kaccelbase.h b/python/pykde/extra/kde351/kaccelbase.h
new file mode 100644
index 00000000..0becbe0a
--- /dev/null
+++ b/python/pykde/extra/kde351/kaccelbase.h
@@ -0,0 +1,260 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ /** Initialization mode of the KAccelBase, used in constructor. */
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+
+ /** Enum for kinds of signals which may be emitted. */
+ enum Signal { KEYCODE_CHANGED };
+
+ /** Constructor. @p fInitCode should be a bitwise OR of
+ * values from the Init enum.
+ */
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ /** Returns number of actions in this handler. */
+ uint actionCount() const;
+ /** Returns a list of all the actions in this handler. */
+ KAccelActions& actions();
+ /** Returns whether this accelerator handler is enabled or not. */
+ bool isEnabled() const;
+
+ /** Returns a pointer to the KAccelAction named @p sAction. */
+ KAccelAction* actionPtr( const QString& sAction );
+ /** Const version of the above. */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ /** Returns a pointer to the KAccelAction associated with
+ * the key @p key. This function takes into account the
+ * key mapping defined in the constructor.
+ *
+ * May return 0 if no (or more than one)
+ * action is associated with the key.
+ */
+ KAccelAction* actionPtr( const KKey& key );
+ /** Basically the same as above, except a KKeyServer::Key
+ * already has a key mapping defined (either NATIVE_KEYS or not).
+ */
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ /** Returns the name of the configuration group these
+ * accelerators are stored in. The default is "Shortcuts".
+ */
+ const QString& configGroup() const { return m_sConfigGroup; }
+ /** Set the group (in the configuration file) for storing
+ * accelerators.
+ */
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ /** Returns whether autoupdate is enabled for these accelerators. */
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ /** Enables (or disables) autoupdate for these accelerators.
+ * @return the value of autoupdate before the call.
+ */
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ virtual bool isEnabledInternal() const;
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde351/kicontheme.h b/python/pykde/extra/kde351/kicontheme.h
new file mode 100644
index 00000000..b7764447
--- /dev/null
+++ b/python/pykde/extra/kde351/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde351/kkeyserver.h b/python/pykde/extra/kde351/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde351/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde351/kkeyserver_x11.h b/python/pykde/extra/kde351/kkeyserver_x11.h
new file mode 100644
index 00000000..73c800db
--- /dev/null
+++ b/python/pykde/extra/kde351/kkeyserver_x11.h
@@ -0,0 +1,477 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * Converts the modifier given as user-readable string
+ * to KKey::ModFlag modifier, or 0.
+ * @internal
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint stringUserToMod( const QString& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde351/konsole_part.h b/python/pykde/extra/kde351/konsole_part.h
new file mode 100644
index 00000000..16028ea5
--- /dev/null
+++ b/python/pykde/extra/kde351/konsole_part.h
@@ -0,0 +1,241 @@
+/* -*- C++ -*-
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KONSOLE_PART_H
+#define KONSOLE_PART_H
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class KActionMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface, public ExtTerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited( KProcess * );
+ void receivedData( const QString& s );
+ void forkedChild();
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+// void updateTitle(TESession*);
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+ void applyProperties();
+ void setSettingsMenuEnabled( bool );
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int /*columns*/, int /*lines*/);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotUseKonsoleSettings();
+ void slotWordSeps();
+ void slotSetEncoding();
+ void biggerFont();
+ void smallerFont();
+
+ void autoShowShell();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+ // ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KActionCollection* actions;
+ KActionCollection* settingsActions;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+ KToggleAction* m_useKonsoleSettings;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KActionMenu* m_fontsizes;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+ bool b_useKonsoleSettings:1;
+ bool b_autoDestroy:1;
+ bool b_autoStartShell:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void newSession();
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+ void setAutoDestroy( bool );
+ void setAutoStartShell( bool );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde351/kpanelmenu.h b/python/pykde/extra/kde351/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde351/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde351/ksharedptr.h b/python/pykde/extra/kde351/ksharedptr.h
new file mode 100644
index 00000000..ada08413
--- /dev/null
+++ b/python/pykde/extra/kde351/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde351/ksycocafactory.h b/python/pykde/extra/kde351/ksycocafactory.h
new file mode 100644
index 00000000..65bb9d98
--- /dev/null
+++ b/python/pykde/extra/kde351/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde351/ktoolbarbutton.h b/python/pykde/extra/kde351/ktoolbarbutton.h
new file mode 100644
index 00000000..7526f025
--- /dev/null
+++ b/python/pykde/extra/kde351/ktoolbarbutton.h
@@ -0,0 +1,330 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ bool event(QEvent *e);
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 465272 2005-09-29 09:47:40Z mueller $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde351/kurifilter.h b/python/pykde/extra/kde351/kurifilter.h
new file mode 100644
index 00000000..355ce38a
--- /dev/null
+++ b/python/pykde/extra/kde351/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *s_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/kaccelaction.h b/python/pykde/extra/kde352/kaccelaction.h
new file mode 100644
index 00000000..4164ca51
--- /dev/null
+++ b/python/pykde/extra/kde352/kaccelaction.h
@@ -0,0 +1,576 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param enable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName /**< Name of accel. @sa setName() */,
+ m_sLabel /**< Label of accel. User-visible. */,
+ m_sWhatsThis /**< WhatsThis help for accel. User-visible. */;
+ KShortcut m_cut /**< Shortcut actually assigned. */;
+ KShortcut m_cutDefault3 /**< Default shortcut in 3-modifier layout */,
+ m_cutDefault4 /**< Default shortcur in 4-modifier layout */;
+ const QObject* m_pObjSlot /**< Object we will send signals to. */;
+ const char* m_psMethodSlot /**< Slot we send signals to, in m_pObjSlot */;
+ bool m_bConfigurable /**< Can this accel be configured by the user? */,
+ m_bEnabled /**< Is this accel enabled? */;
+ int m_nIDAccel /**< Id of this accel, from the list of IDs */;
+ uint m_nConnections /**< Number of connections to this accel. */ ;
+
+ /** @internal Increment the number of connections to this accel. */
+ void incConnections();
+ /** @internal Decrement the number of connections to this accel (bouded by zero). */
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sAction the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param rgCutDefaults3 the default shortcut for 3 modifier systems
+ * @param rgCutDefaults4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled if true the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ /** Base object that proxies signals from us. */
+ KAccelBase* m_pKAccelBase;
+ /** Array of actions we're hanging on to. */
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated /**< Allocated size of the array. */,
+ m_nSize /**< Amount in use. */ ;
+
+ /**
+ * Resize the list to the given number @p new_size of entries.
+ * @todo Can you make it smaller?
+ * @todo Implementation seems to break m_nSize.
+ */
+ void resize( uint new_size );
+ /** Add a action to this collection. @todo Document ownership. */
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde352/kaccelbase.h b/python/pykde/extra/kde352/kaccelbase.h
new file mode 100644
index 00000000..0becbe0a
--- /dev/null
+++ b/python/pykde/extra/kde352/kaccelbase.h
@@ -0,0 +1,260 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ /** Initialization mode of the KAccelBase, used in constructor. */
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+
+ /** Enum for kinds of signals which may be emitted. */
+ enum Signal { KEYCODE_CHANGED };
+
+ /** Constructor. @p fInitCode should be a bitwise OR of
+ * values from the Init enum.
+ */
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ /** Returns number of actions in this handler. */
+ uint actionCount() const;
+ /** Returns a list of all the actions in this handler. */
+ KAccelActions& actions();
+ /** Returns whether this accelerator handler is enabled or not. */
+ bool isEnabled() const;
+
+ /** Returns a pointer to the KAccelAction named @p sAction. */
+ KAccelAction* actionPtr( const QString& sAction );
+ /** Const version of the above. */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ /** Returns a pointer to the KAccelAction associated with
+ * the key @p key. This function takes into account the
+ * key mapping defined in the constructor.
+ *
+ * May return 0 if no (or more than one)
+ * action is associated with the key.
+ */
+ KAccelAction* actionPtr( const KKey& key );
+ /** Basically the same as above, except a KKeyServer::Key
+ * already has a key mapping defined (either NATIVE_KEYS or not).
+ */
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ /** Returns the name of the configuration group these
+ * accelerators are stored in. The default is "Shortcuts".
+ */
+ const QString& configGroup() const { return m_sConfigGroup; }
+ /** Set the group (in the configuration file) for storing
+ * accelerators.
+ */
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ /** Returns whether autoupdate is enabled for these accelerators. */
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ /** Enables (or disables) autoupdate for these accelerators.
+ * @return the value of autoupdate before the call.
+ */
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ virtual bool isEnabledInternal() const;
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde352/kicontheme.h b/python/pykde/extra/kde352/kicontheme.h
new file mode 100644
index 00000000..b7764447
--- /dev/null
+++ b/python/pykde/extra/kde352/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/kkeyserver.h b/python/pykde/extra/kde352/kkeyserver.h
new file mode 100644
index 00000000..41bf5d71
--- /dev/null
+++ b/python/pykde/extra/kde352/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde352/kkeyserver_x11.h b/python/pykde/extra/kde352/kkeyserver_x11.h
new file mode 100644
index 00000000..73c800db
--- /dev/null
+++ b/python/pykde/extra/kde352/kkeyserver_x11.h
@@ -0,0 +1,477 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * Converts the modifier given as user-readable string
+ * to KKey::ModFlag modifier, or 0.
+ * @internal
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint stringUserToMod( const QString& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde352/konsole_part.h b/python/pykde/extra/kde352/konsole_part.h
new file mode 100644
index 00000000..16028ea5
--- /dev/null
+++ b/python/pykde/extra/kde352/konsole_part.h
@@ -0,0 +1,241 @@
+/* -*- C++ -*-
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KONSOLE_PART_H
+#define KONSOLE_PART_H
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class KActionMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface, public ExtTerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited( KProcess * );
+ void receivedData( const QString& s );
+ void forkedChild();
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+// void updateTitle(TESession*);
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+ void applyProperties();
+ void setSettingsMenuEnabled( bool );
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int /*columns*/, int /*lines*/);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotUseKonsoleSettings();
+ void slotWordSeps();
+ void slotSetEncoding();
+ void biggerFont();
+ void smallerFont();
+
+ void autoShowShell();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+ // ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KActionCollection* actions;
+ KActionCollection* settingsActions;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+ KToggleAction* m_useKonsoleSettings;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KActionMenu* m_fontsizes;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+ bool b_useKonsoleSettings:1;
+ bool b_autoDestroy:1;
+ bool b_autoStartShell:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void newSession();
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+ void setAutoDestroy( bool );
+ void setAutoStartShell( bool );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/kpanelmenu.h b/python/pykde/extra/kde352/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde352/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde352/ksharedptr.h b/python/pykde/extra/kde352/ksharedptr.h
new file mode 100644
index 00000000..ada08413
--- /dev/null
+++ b/python/pykde/extra/kde352/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/ksycocafactory.h b/python/pykde/extra/kde352/ksycocafactory.h
new file mode 100644
index 00000000..65bb9d98
--- /dev/null
+++ b/python/pykde/extra/kde352/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/ktoolbarbutton.h b/python/pykde/extra/kde352/ktoolbarbutton.h
new file mode 100644
index 00000000..7526f025
--- /dev/null
+++ b/python/pykde/extra/kde352/ktoolbarbutton.h
@@ -0,0 +1,330 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ bool event(QEvent *e);
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 465272 2005-09-29 09:47:40Z mueller $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde352/kurifilter.h b/python/pykde/extra/kde352/kurifilter.h
new file mode 100644
index 00000000..355ce38a
--- /dev/null
+++ b/python/pykde/extra/kde352/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *s_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/kaccelaction.h b/python/pykde/extra/kde353/kaccelaction.h
new file mode 100644
index 00000000..4164ca51
--- /dev/null
+++ b/python/pykde/extra/kde353/kaccelaction.h
@@ -0,0 +1,576 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001,2002 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELACTION_H
+#define _KACCELACTION_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+
+#include <kshortcut.h>
+
+class KAccelBase;
+
+class QObject;
+class KConfig;
+class KConfigBase;
+
+/**
+ * @internal
+ * A KAccelAction prepresents an action that can be executed using
+ * an accelerator key. Each KAccelAction has a name, a label, a
+ * "What's this" string and a KShortcut. The user can configure and
+ * enable/disable them using KKeyDialog.
+ *
+ * \code
+ * 1) KAccelAction = "Run Command"
+ * Default3 = "Alt+F2"
+ * Default4 = "Meta+Enter;Alt+F2"
+ * 1) KShortcut = "Meta+Enter"
+ * 1) KKeySequence = "Meta+Enter"
+ * 1) KKey = "Meta+Enter"
+ * 1) Meta+Enter
+ * 2) Meta+Keypad_Enter
+ * 2) KShortcut = "Alt+F2"
+ * 1) KKeySequence = "Alt+F2"
+ * 1) Alt+F2
+ * 2) KAccelAction = "Something"
+ * Default3 = ""
+ * Default4 = ""
+ * 1) KShortcut = "Meta+X,Asterisk"
+ * 1) KKeySequence = "Meta+X,Asterisk"
+ * 1) KKey = "Meta+X"
+ * 1) Meta+X
+ * 2) KKey = "Asterisk"
+ * 1) Shift+8 (English layout)
+ * 2) Keypad_Asterisk
+ * \endcode
+ * @short An accelerator action
+ * @see KAccel
+ * @see KGlobalAccel
+ * @see KKeyChooser
+ * @see KKeyDialog
+ */
+class KDECORE_EXPORT KAccelAction
+{
+ public:
+ /**
+ * Creates an empty KAccelAction.
+ * @see clear()
+ */
+ KAccelAction();
+
+ /**
+ * Copy constructor.
+ */
+ KAccelAction( const KAccelAction& );
+
+ /**
+ * Creates a new KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ */
+ KAccelAction( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+ ~KAccelAction();
+
+ /**
+ * Clears the accelerator.
+ */
+ void clear();
+
+ /**
+ * Re-initialized the KAccelAction.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param cutDef3 the default shortcut for 3 modifier systems
+ * @param cutDef4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled true if the accelerator should be enabled
+ * @return true if successful, false otherwise
+ */
+ bool init( const QString& sName, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& cutDef3, const KShortcut& cutDef4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable, bool bEnabled );
+
+ /**
+ * Copies this KAccelAction.
+ */
+ KAccelAction& operator=( const KAccelAction& );
+
+ /**
+ * Returns the name of the accelerator action.
+ * @return the name of the accelerator action, can be null if not
+ * set
+ */
+ const QString& name() const { return m_sName; }
+
+ /**
+ * Returns the label of the accelerator action.
+ * @return the label of the accelerator action, can be null if
+ * not set
+ */
+ const QString& label() const { return m_sLabel; }
+
+ /**
+ * Returns the What's This text of the accelerator action.
+ * @return the What's This text of the accelerator action, can be
+ * null if not set
+ */
+ const QString& whatsThis() const { return m_sWhatsThis; }
+
+ /**
+ * The shortcut that is actually used (may be used configured).
+ * @return the shortcut of the KAccelAction, can be null if not set
+ * @see shortcutDefault()
+ */
+ const KShortcut& shortcut() const { return m_cut; }
+
+ /**
+ * The default shortcut for this system.
+ * @return the default shortcut on this system, can be null if not set
+ * @see shortcut()
+ * @see shortcutDefault3()
+ * @see shortcutDefault4()
+ */
+ const KShortcut& shortcutDefault() const;
+
+ /**
+ * The default shortcut for 3 modifier systems.
+ * @return the default shortcut for 3 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault4()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault3() const { return m_cutDefault3; }
+
+ /**
+ * The default shortcut for 4 modifier systems.
+ * @return the default shortcut for 4 modifier systems, can be null
+ * if not set
+ * @see shortcutDefault()
+ * @see shortcutDefault3()
+ * @see useFourModifierKeys()
+ */
+ const KShortcut& shortcutDefault4() const { return m_cutDefault4; }
+
+ /**
+ * Returns the receiver of signals.
+ * @return the receiver of signals (can be 0 if not set)
+ */
+ const QObject* objSlotPtr() const { return m_pObjSlot; }
+
+ /**
+ * Returns the slot for the signal.
+ * @return the slot for the signal
+ */
+ const char* methodSlotPtr() const { return m_psMethodSlot; }
+
+ /**
+ * Checks whether the user can configure the action.
+ * @return true if configurable, false otherwise
+ */
+ bool isConfigurable() const { return m_bConfigurable; }
+
+ /**
+ * Checks whether the action is enabled.
+ * @return true if enabled, false otherwise
+ */
+ bool isEnabled() const { return m_bEnabled; }
+
+ /**
+ * Sets the name of the accelerator action.
+ * @param name the new name
+ */
+ void setName( const QString& name );
+
+ /**
+ * Sets the user-readable label of the accelerator action.
+ * @param label the new label (i18n!)
+ */
+ void setLabel( const QString& label );
+
+ /**
+ * Sets the What's This text for the accelerator action.
+ * @param whatsThis the new What's This text (i18n!)
+ */
+ void setWhatsThis( const QString& whatsThis );
+
+ /**
+ * Sets the new shortcut of the accelerator action.
+ * @param rgCuts the shortcut to set
+ * @return true if successful, false otherwise
+ */
+ bool setShortcut( const KShortcut& rgCuts );
+
+ /**
+ * Sets the slot of the accelerator action.
+ * @param pObjSlot the receiver object of the signal
+ * @param psMethodSlot the slot for the signal
+ */
+ void setSlot( const QObject* pObjSlot, const char* psMethodSlot );
+
+ /**
+ * Enables or disabled configuring the action.
+ * @param configurable true to enable configurability, false to disable
+ */
+ void setConfigurable( bool configurable );
+
+ /**
+ * Enables or disabled the action.
+ * @param enable true to enable the action, false to disable
+ */
+ void setEnabled( bool enable );
+
+ /**
+ * Retrieves the id set using setID.
+ * @return the id of the accelerator action
+ */
+ int getID() const { return m_nIDAccel; }
+
+ /**
+ * Allows you to set an id that will be used as the action
+ * signal's argument.
+ *
+ * @param n the new id
+ * @see getID()
+ */
+ void setID( int n ) { m_nIDAccel = n; }
+
+ /**
+ * Checkes whether the action is connected (emits signals).
+ * @return true if connected, false otherwise
+ */
+ bool isConnected() const;
+
+ /**
+ * Sets a key sequence of the action's shortcut.
+ * @param i the position of the sequence
+ * @param keySeq the new new sequence
+ * @return true if successful, false otherwise
+ * @see KShortcut::setSeq()
+ */
+ bool setKeySequence( uint i, const KKeySequence &keySeq );
+
+ /**
+ * Clears the action's shortcut. It will not contain any sequences after
+ * calling this method.
+ * @see KShortcut::clear()
+ */
+ void clearShortcut();
+
+ /**
+ * Checks whether the action's shortcut contains the given key sequence.
+ * @param keySeq the key sequence to check
+ * @return true if the shortcut contains the given sequence
+ * @see KShortcut::contains()
+ */
+ bool contains( const KKeySequence &keySeq );
+
+ /**
+ * Returns the string representation of the action's shortcut.
+ * @return the string representation of the action's shortcut.
+ * @see KShortcut::toString()
+ */
+ QString toString() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns true if four modifier keys will be used.
+ * @return true if four modifier keys will be used.
+ */
+ static bool useFourModifierKeys();
+
+ /**
+ * Selects 3 or 4 modifier default shortcuts.
+ * @param use true to use 4 modifier shortcuts, false to use
+ * 3 modifier shortcuts
+ */
+ static void useFourModifierKeys( bool use );
+
+ protected:
+ QString m_sName /**< Name of accel. @sa setName() */,
+ m_sLabel /**< Label of accel. User-visible. */,
+ m_sWhatsThis /**< WhatsThis help for accel. User-visible. */;
+ KShortcut m_cut /**< Shortcut actually assigned. */;
+ KShortcut m_cutDefault3 /**< Default shortcut in 3-modifier layout */,
+ m_cutDefault4 /**< Default shortcur in 4-modifier layout */;
+ const QObject* m_pObjSlot /**< Object we will send signals to. */;
+ const char* m_psMethodSlot /**< Slot we send signals to, in m_pObjSlot */;
+ bool m_bConfigurable /**< Can this accel be configured by the user? */,
+ m_bEnabled /**< Is this accel enabled? */;
+ int m_nIDAccel /**< Id of this accel, from the list of IDs */;
+ uint m_nConnections /**< Number of connections to this accel. */ ;
+
+ /** @internal Increment the number of connections to this accel. */
+ void incConnections();
+ /** @internal Decrement the number of connections to this accel (bouded by zero). */
+ void decConnections();
+
+ private:
+ static int g_bUseFourModifierKeys;
+ class KAccelActionPrivate* d;
+
+ friend class KAccelActions;
+ friend class KAccelBase;
+};
+
+//---------------------------------------------------------------------
+// KAccelActions
+//---------------------------------------------------------------------
+
+/**
+ * @internal
+ * This class represents a collection of KAccelAction objects.
+ *
+ * @short A collection of accelerator actions
+ * @see KAccelAction
+ */
+class KDECORE_EXPORT KAccelActions
+{
+ public:
+ /**
+ * Creates a new, empty KAccelActions object.
+ */
+ KAccelActions();
+
+ /**
+ * Copy constructor (deep copy).
+ */
+ KAccelActions( const KAccelActions& );
+ virtual ~KAccelActions();
+
+ /**
+ * Removes all items from this collection.
+ */
+ void clear();
+
+ /**
+ * Initializes this object with the given actions.
+ * It will make a deep copy of all actions.
+ * @param actions the actions to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KAccelActions &actions );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param config the configuration file to load from
+ * @param sGroup the group in the configuration file
+ * @return true if successful, false otherwise
+ */
+ bool init( KConfigBase& config, const QString& sGroup );
+
+ /**
+ * Updates the shortcuts of all actions in this object
+ * with the shortcuts from the given object.
+ * @param shortcuts the collection that contains the new
+ * shortcuts
+ */
+ void updateShortcuts( KAccelActions &shortcuts );
+
+ /**
+ * Retrieves the index of the action with the given name.
+ * @param sAction the action to search
+ * @return the index of the action, or -1 if not found
+ */
+ int actionIndex( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ KAccelAction* actionPtr( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see count()
+ */
+ const KAccelAction* actionPtr( uint index ) const;
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( const QString& sAction );
+
+ /**
+ * Returns the action with the given name.
+ * @param sAction the name of the action to search
+ * @return the KAccelAction with the given name, or 0
+ * if not found
+ */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+
+ /**
+ * Returns the action with the given key sequence.
+ * @param cut the sequence to search for
+ * @return the KAccelAction with the given sequence, or 0
+ * if not found
+ */
+ KAccelAction* actionPtr( KKeySequence cut );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ KAccelAction& operator []( uint index );
+
+ /**
+ * Returns the action with the given @p index.
+ * @param index the index of an action. You must not
+ * use an index that is too high.
+ * @return the KAccelAction with the given index
+ * @see actionPtr()
+ * @see count()
+ */
+ const KAccelAction& operator []( uint index ) const;
+
+ /**
+ * Inserts an action into the collection.
+ * @param sAction the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @param sWhatsThis the What's This text (18n!)
+ * @param rgCutDefaults3 the default shortcut for 3 modifier systems
+ * @param rgCutDefaults4 the default shortcut for 4 modifier systems
+ * @param pObjSlot the receiver of a signal when the key has been
+ * pressed
+ * @param psMethodSlot the slot to connect for key presses. Receives
+ * an int, as set by setID(), as only argument
+ * @param bConfigurable if true the user can configure the shortcut
+ * @param bEnabled if true the accelerator should be enabled
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sAction, const QString& sLabel, const QString& sWhatsThis,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot = 0, const char* psMethodSlot = 0,
+ bool bConfigurable = true, bool bEnabled = true );
+
+ /**
+ * Inserts an action into the collection.
+ * @param sName the name of the accelerator
+ * @param sLabel the label of the accelerator (i18n!)
+ * @return the new action
+ */
+ KAccelAction* insert( const QString& sName, const QString& sLabel );
+
+ /**
+ * Removes the given action.
+ * @param sAction the name of the action.
+ * @return true if successful, false otherwise
+ */
+ bool remove( const QString& sAction );
+
+ /**
+ * Loads the actions from the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to load from
+ * @return true if successful, false otherwise
+ */
+ bool readActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0 );
+
+ /**
+ * Writes the actions to the given configuration file.
+ *
+ * @param sConfigGroup the group in the configuration file
+ * @param pConfig the configuration file to save to
+ * @param bWriteAll true to write all actions
+ * @param bGlobal true to write to the global configuration file
+ * @return true if successful, false otherwise
+ */
+ bool writeActions( const QString& sConfigGroup = "Shortcuts", KConfigBase* pConfig = 0,
+ bool bWriteAll = false, bool bGlobal = false ) const;
+
+ /**
+ * Emit a keycodeChanged signal.
+ */
+ void emitKeycodeChanged();
+
+ /**
+ * Returns the number of actions in the collection.
+ * @return the number of actions
+ */
+ uint count() const;
+
+ protected:
+ /** Base object that proxies signals from us. */
+ KAccelBase* m_pKAccelBase;
+ /** Array of actions we're hanging on to. */
+ KAccelAction** m_prgActions;
+ uint m_nSizeAllocated /**< Allocated size of the array. */,
+ m_nSize /**< Amount in use. */ ;
+
+ /**
+ * Resize the list to the given number @p new_size of entries.
+ * @todo Can you make it smaller?
+ * @todo Implementation seems to break m_nSize.
+ */
+ void resize( uint new_size );
+ /** Add a action to this collection. @todo Document ownership. */
+ void insertPtr( KAccelAction* );
+
+ private:
+ class KAccelActionsPrivate* d;
+
+ KAccelActions( KAccelBase* );
+ void initPrivate( KAccelBase* );
+ KAccelActions& operator =( KAccelActions& );
+
+ friend class KAccelBase;
+};
+
+#endif // _KACCELACTION_H
diff --git a/python/pykde/extra/kde353/kaccelbase.h b/python/pykde/extra/kde353/kaccelbase.h
new file mode 100644
index 00000000..0becbe0a
--- /dev/null
+++ b/python/pykde/extra/kde353/kaccelbase.h
@@ -0,0 +1,260 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KACCELBASE_H
+#define _KACCELBASE_H
+
+#include <qmap.h>
+#include <qptrvector.h>
+#include <qstring.h>
+#include <qvaluevector.h>
+#include <qvaluelist.h>
+
+#include "kaccelaction.h"
+#include "kkeyserver.h"
+
+class QPopupMenu;
+class QWidget;
+
+//----------------------------------------------------
+
+/**
+ * @internal
+ * Handle keyboard accelerators.
+ *
+ * Allow an user to configure
+ * key bindings through application configuration files or through the
+ * KKeyChooser GUI.
+ *
+ * A KAccel contains a list of accelerator items. Each accelerator item
+ * consists of an action name and a keyboard code combined with modifiers
+ * (Shift, Ctrl and Alt.)
+ *
+ * For example, "Ctrl+P" could be a shortcut for printing a document. The key
+ * codes are listed in ckey.h. "Print" could be the action name for printing.
+ * The action name identifies the key binding in configuration files and the
+ * KKeyChooser GUI.
+ *
+ * When pressed, an accelerator key calls the slot to which it has been
+ * connected. Accelerator items can be connected so that a key will activate
+ * two different slots.
+ *
+ * A KAccel object handles key events sent to its parent widget and to all
+ * children of this parent widget.
+ *
+ * Key binding reconfiguration during run time can be prevented by specifying
+ * that an accelerator item is not configurable when it is inserted. A special
+ * group of non-configurable key bindings are known as the
+ * standard accelerators.
+ *
+ * The standard accelerators appear repeatedly in applications for
+ * standard document actions such as printing and saving. Convenience methods are
+ * available to insert and connect these accelerators which are configurable on
+ * a desktop-wide basis.
+ *
+ * It is possible for a user to choose to have no key associated with
+ * an action.
+ *
+ * The translated first argument for insertItem() is used only
+ * in the configuration dialog.
+ *\code
+ * KAccel *a = new KAccel( myWindow );
+ * // Insert an action "Scroll Up" which is associated with the "Up" key:
+ * a->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
+ * // Insert an action "Scroll Down" which is not associated with any key:
+ * a->insertItem( i18n("Scroll Down"), "Scroll Down", 0);
+ * a->connectItem( "Scroll up", myWindow, SLOT( scrollUp() ) );
+ * // a->insertStdItem( KStdAccel::Print ); //not necessary, since it
+ * // is done automatially with the
+ * // connect below!
+ * a->connectItem(KStdAccel::Print, myWindow, SLOT( printDoc() ) );
+ *
+ * a->readSettings();
+ *\endcode
+ *
+ * If a shortcut has a menu entry as well, you could insert them like
+ * this. The example is again the KStdAccel::Print from above.
+ *
+ * \code
+ * int id;
+ * id = popup->insertItem("&Print",this, SLOT(printDoc()));
+ * a->changeMenuAccel(popup, id, KStdAccel::Print );
+ * \endcode
+ *
+ * If you want a somewhat "exotic" name for your standard print action, like
+ * id = popup->insertItem(i18n("Print &Document"),this, SLOT(printDoc()));
+ * it might be a good idea to insert the standard action before as
+ * a->insertStdItem( KStdAccel::Print, i18n("Print Document") )
+ * as well, so that the user can easily find the corresponding function.
+ *
+ * This technique works for other actions as well. Your "scroll up" function
+ * in a menu could be done with
+ *
+ * \code
+ * id = popup->insertItem(i18n"Scroll &up",this, SLOT(scrollUp()));
+ * a->changeMenuAccel(popup, id, "Scroll Up" );
+ * \endcode
+ *
+ * Please keep the order right: First insert all functions in the
+ * acceleratior, then call a -> readSettings() and @em then build your
+ * menu structure.
+ *
+ * @short Configurable key binding support.
+ */
+
+class KDECORE_EXPORT KAccelBase
+{
+ public:
+ /** Initialization mode of the KAccelBase, used in constructor. */
+ enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
+
+ /** Enum for kinds of signals which may be emitted. */
+ enum Signal { KEYCODE_CHANGED };
+
+ /** Constructor. @p fInitCode should be a bitwise OR of
+ * values from the Init enum.
+ */
+ KAccelBase( int fInitCode );
+ virtual ~KAccelBase();
+
+ /** Returns number of actions in this handler. */
+ uint actionCount() const;
+ /** Returns a list of all the actions in this handler. */
+ KAccelActions& actions();
+ /** Returns whether this accelerator handler is enabled or not. */
+ bool isEnabled() const;
+
+ /** Returns a pointer to the KAccelAction named @p sAction. */
+ KAccelAction* actionPtr( const QString& sAction );
+ /** Const version of the above. */
+ const KAccelAction* actionPtr( const QString& sAction ) const;
+ /** Returns a pointer to the KAccelAction associated with
+ * the key @p key. This function takes into account the
+ * key mapping defined in the constructor.
+ *
+ * May return 0 if no (or more than one)
+ * action is associated with the key.
+ */
+ KAccelAction* actionPtr( const KKey& key );
+ /** Basically the same as above, except a KKeyServer::Key
+ * already has a key mapping defined (either NATIVE_KEYS or not).
+ */
+ KAccelAction* actionPtr( const KKeyServer::Key& key );
+
+ /** Returns the name of the configuration group these
+ * accelerators are stored in. The default is "Shortcuts".
+ */
+ const QString& configGroup() const { return m_sConfigGroup; }
+ /** Set the group (in the configuration file) for storing
+ * accelerators.
+ */
+ void setConfigGroup( const QString& group );
+ void setConfigGlobal( bool global );
+ virtual void setEnabled( bool bEnabled ) = 0;
+ /** Returns whether autoupdate is enabled for these accelerators. */
+ bool getAutoUpdate() { return m_bAutoUpdate; }
+ /** Enables (or disables) autoupdate for these accelerators.
+ * @return the value of autoupdate before the call.
+ */
+ bool setAutoUpdate( bool bAuto );
+
+// Procedures for manipulating Actions.
+ //void clearActions();
+
+ KAccelAction* insert( const QString& sName, const QString& sDesc );
+ KAccelAction* insert(
+ const QString& sAction, const QString& sDesc, const QString& sHelp,
+ const KShortcut& rgCutDefaults3, const KShortcut& rgCutDefaults4,
+ const QObject* pObjSlot, const char* psMethodSlot,
+ bool bConfigurable = true, bool bEnabled = true );
+ bool remove( const QString& sAction );
+ bool setActionSlot( const QString& sAction, const QObject* pObjSlot, const char* psMethodSlot );
+
+ bool updateConnections();
+
+ bool setShortcut( const QString& sAction, const KShortcut& cut );
+
+// Modify individual Action sub-items
+ bool setActionEnabled( const QString& sAction, bool bEnable );
+
+ /**
+ * Read all key associations from @p config, or (if @p config
+ * is zero) from the application's configuration file
+ * KGlobal::config().
+ *
+ * The group in which the configuration is stored can be
+ * set with setConfigGroup().
+ */
+ void readSettings( KConfigBase* pConfig = 0 );
+
+ /**
+ * Write the current configurable associations to @p config,
+ * or (if @p config is zero) to the application's
+ * configuration file.
+ */
+ void writeSettings( KConfigBase* pConfig = 0 ) const;
+
+ QPopupMenu* createPopupMenu( QWidget* pParent, const KKeySequence& );
+
+ // Protected methods
+ protected:
+ void slotRemoveAction( KAccelAction* );
+
+ struct X;
+ void createKeyList( QValueVector<struct X>& rgKeys );
+ bool insertConnection( KAccelAction* );
+ bool removeConnection( KAccelAction* );
+
+ virtual bool emitSignal( Signal ) = 0;
+ virtual bool connectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool connectKey( const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( KAccelAction&, const KKeyServer::Key& ) = 0;
+ virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
+
+ protected:
+ virtual bool isEnabledInternal() const;
+ struct ActionInfo
+ {
+ KAccelAction* pAction;
+ uint iSeq, iVariation;
+ //ActionInfo* pInfoNext; // nil if only one action uses this key.
+
+ ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
+ ActionInfo( KAccelAction* _pAction, uint _iSeq, uint _iVariation )
+ { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
+ };
+ typedef QMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
+
+ KAccelActions m_rgActions;
+ KKeyToActionMap m_mapKeyToAction;
+ QValueList<KAccelAction*> m_rgActionsNonUnique;
+ bool m_bNativeKeys; // Use native key codes instead of Qt codes
+ bool m_bEnabled;
+ bool m_bConfigIsGlobal;
+ QString m_sConfigGroup;
+ bool m_bAutoUpdate;
+ KAccelAction* mtemp_pActionRemoving;
+
+ private:
+ KAccelBase& operator =( const KAccelBase& );
+
+ friend class KAccelActions;
+};
+
+#endif // _KACCELBASE_H
diff --git a/python/pykde/extra/kde353/kicontheme.h b/python/pykde/extra/kde353/kicontheme.h
new file mode 100644
index 00000000..b7764447
--- /dev/null
+++ b/python/pykde/extra/kde353/kicontheme.h
@@ -0,0 +1,355 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module kdecore.
+ * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
+ * Antonio Larrosa <larrosa@kde.org>
+ *
+ * This is free software; it comes under the GNU Library General
+ * Public License, version 2. See the file "COPYING.LIB" for the
+ * exact licensing terms.
+ *
+ */
+
+#ifndef __KIconTheme_h_Included__
+#define __KIconTheme_h_Included__
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include "kdelibs_export.h"
+
+class KConfig;
+//class KIconThemeDir;
+
+class KIconThemePrivate;
+
+class KIconPrivate;
+
+/**
+ * One icon as found by KIconTheme. Also serves as a namespace containing
+ * icon related constants.
+ * @see KIconEffect
+ * @see KIconTheme
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIcon
+{
+public:
+ KIcon() { size = 0; }
+
+ /**
+ * Return true if this icon is valid, false otherwise.
+ */
+ bool isValid() const { return size != 0; }
+
+ /**
+ * Defines the context of the icon.
+ */
+ enum Context {
+ Any, ///< Some icon with unknown purpose.
+ Action, ///< An action icon (e.g. 'save', 'print').
+ Application, ///< An icon that represents an application.
+ Device, ///< An icon that represents a device.
+ FileSystem, ///< An icon that represents a file system.
+ MimeType ///< An icon that represents a mime type (or file type).
+ };
+
+ /**
+ * The type of the icon.
+ */
+ enum Type {
+ Fixed, ///< Fixed-size icon.
+ Scalable, ///< Scalable-size icon.
+ Threshold ///< A threshold icon.
+ };
+
+ /**
+ * The type of a match.
+ */
+ enum MatchType {
+ MatchExact, ///< Only try to find an exact match.
+ MatchBest ///< Take the best match if there is no exact match.
+
+ };
+
+ // if you add a group here, make sure to change the config reading in
+ // KIconLoader too
+ /**
+ * The group of the icon.
+ */
+ enum Group {
+ /// No group
+ NoGroup=-1,
+ /// Desktop icons
+ Desktop=0,
+ /// First group
+ FirstGroup=0,
+ /// Toolbar icons
+ Toolbar,
+ /// Main toolbar icons
+ MainToolbar,
+ /// Small icons
+ Small,
+ /// Panel (Kicker) icons
+ Panel,
+ /// Last group
+ LastGroup,
+ /// User icons
+ User
+ };
+
+ /**
+ * These are the standard sizes for icons.
+ */
+ enum StdSizes {
+ /// small icons for menu entries
+ SizeSmall=16,
+ /// slightly larger small icons for toolbars, panels, etc
+ SizeSmallMedium=22,
+ /// medium sized icons for the desktop
+ SizeMedium=32,
+ /// large sized icons for the panel
+ SizeLarge=48,
+ /// huge sized icons for iconviews
+ SizeHuge=64,
+ /// enormous sized icons for iconviews
+ SizeEnormous=128
+ };
+
+ /**
+ * Defines the possible states of an icon.
+ */
+ enum States { DefaultState, ///< The default state.
+ ActiveState, ///< Icon is active.
+ DisabledState, ///< Icon is disabled.
+ LastState ///< Last state (last constant)
+ };
+
+ /**
+ * This defines an overlay, a semi-transparent image that is
+ * projected onto the icon. They are used to show that the file
+ * represented by the icon is, for example, locked, zipped or hidden.
+ */
+ enum Overlays {
+ LockOverlay=0x100, ///< a file is locked
+ ZipOverlay=0x200, ///< a file is zipped
+ LinkOverlay=0x400, ///< a file is a link
+ HiddenOverlay=0x800, ///< a file is hidden
+ ShareOverlay=0x1000, ///< a file is shared
+ OverlayMask = ~0xff
+ };
+
+ /**
+ * The size in pixels of the icon.
+ */
+ int size;
+
+ /**
+ * The context of the icon.
+ */
+ Context context;
+
+ /**
+ * The type of the icon: Fixed, Scalable or Threshold.
+ **/
+ Type type;
+
+ /**
+ * The threshold in case type == Threshold
+ */
+ int threshold;
+
+ /**
+ * The full path of the icon.
+ */
+ QString path;
+
+private:
+ KIconPrivate *d;
+};
+
+inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast<KIcon::Group>(group+1); return group; }
+inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; }
+
+/**
+ * Class to use/access icon themes in KDE. This class is used by the
+ * iconloader but can be used by others too.
+ * @see KIconLoader
+ */
+class KDECORE_EXPORT KIconTheme
+{
+public:
+ /**
+ * Load an icon theme by name.
+ * @param name the name of the theme (e.g. "hicolor" or "keramik")
+ * @param appName the name of the application. Can be null. This argument
+ * allows applications to have themed application icons.
+ */
+ KIconTheme(const QString& name, const QString& appName=QString::null);
+ ~KIconTheme();
+
+ /**
+ * The stylized name of the icon theme.
+ * @return the (human-readable) name of the theme
+ */
+ QString name() const { return mName; }
+
+ /**
+ * A description for the icon theme.
+ * @return a human-readable description of the theme, QString::null
+ * if there is none
+ */
+ QString description() const { return mDesc; }
+
+ /**
+ * Return the name of the "example" icon. This can be used to
+ * present the theme to the user.
+ * @return the name of the example icon, QString::null if there is none
+ */
+ QString example() const;
+
+ /**
+ * Return the name of the screenshot.
+ * @return the name of the screenshot, QString::null if there is none
+ */
+ QString screenshot() const;
+
+ /**
+ * Returns the name of this theme's link overlay.
+ * @return the name of the link overlay
+ */
+ QString linkOverlay() const;
+
+ /**
+ * Returns the name of this theme's zip overlay.
+ * @return the name of the zip overlay
+ */
+ QString zipOverlay() const;
+
+ /**
+ * Returns the name of this theme's lock overlay.
+ * @return the name of the lock overlay
+ */
+ QString lockOverlay() const;
+
+ /**
+ * Returns the name of this theme's share overlay.
+ * @return the name of the share overlay
+ * @since 3.1
+ */
+ QString shareOverlay () const;
+
+ /**
+ * Returns the toplevel theme directory.
+ * @return the directory of the theme
+ */
+ QString dir() const { return mDir; }
+
+ /**
+ * The themes this icon theme falls back on.
+ * @return a list of icon themes that are used as fall-backs
+ */
+ QStringList inherits() const { return mInherits; }
+
+ /**
+ * The icon theme exists?
+ * @return true if the icon theme is valid
+ */
+ bool isValid() const;
+
+ /**
+ * The icon theme should be hidden to the user?
+ * @return true if the icon theme is hidden
+ * @since 3.1
+ */
+ bool isHidden() const;
+
+ /**
+ * The minimum display depth required for this theme. This can either
+ * be 8 or 32.
+ * @return the minimum bpp (8 or 32)
+ */
+ int depth() const { return mDepth; }
+
+ /**
+ * The default size of this theme for a certain icon group.
+ * @param group The icon group. See KIcon::Group.
+ * @return The default size in pixels for the given icon group.
+ */
+ int defaultSize(KIcon::Group group) const;
+
+ /**
+ * Query available sizes for a group.
+ * @param group The icon group. See KIcon::Group.
+ * @return a list of available sized for the given group
+ */
+ QValueList<int> querySizes(KIcon::Group group) const;
+
+ /**
+ * Query available icons for a size and context.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const;
+
+ /**
+ * Query available icons for a context and preferred size.
+ * @param size the size of the icons
+ * @param context the context of the icons
+ * @return the list of icon names
+ */
+ QStringList queryIconsByContext(int size, KIcon::Context context = KIcon::Any) const;
+
+
+ /**
+ * Lookup an icon in the theme.
+ * @param name The name of the icon, without extension.
+ * @param size The desired size of the icon.
+ * @param match The matching mode. KIcon::MatchExact returns an icon
+ * only if matches exactly. KIcon::MatchBest returns the best matching
+ * icon.
+ * @return A KIcon class that describes the icon. If an icon is found,
+ * @see KIcon::isValid will return true, and false otherwise.
+ */
+ KIcon iconPath(const QString& name, int size, KIcon::MatchType match) const;
+
+ /**
+ * List all icon themes installed on the system, global and local.
+ * @return the list of all icon themes
+ */
+ static QStringList list();
+
+ /**
+ * Returns the current icon theme.
+ * @return the name of the current theme
+ */
+ static QString current();
+
+ /**
+ * Reconfigure the theme.
+ */
+ static void reconfigure();
+
+ /**
+ * Returns the default icon theme.
+ * @return the name of the default theme name
+ * @since 3.1
+ */
+ static QString defaultThemeName();
+
+private:
+ int mDefSize[8];
+ QValueList<int> mSizes[8];
+
+ int mDepth;
+ QString mDir, mName, mDesc;
+ QStringList mInherits;
+// QPtrList<KIconThemeDir> mDirs;
+ KIconThemePrivate *d;
+
+ static QString *_theme;
+ static QStringList *_theme_list;
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/kkeyserver.h b/python/pykde/extra/kde353/kkeyserver.h
new file mode 100644
index 00000000..ef673ea9
--- /dev/null
+++ b/python/pykde/extra/kde353/kkeyserver.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KKEYSERVER_H
+#define _KKEYSERVER_H
+
+//FOR COMPATIBILITY
+#include "kkeyserver_x11.h"
+
+#endif // !_KKEYSERVER_H
diff --git a/python/pykde/extra/kde353/kkeyserver_x11.h b/python/pykde/extra/kde353/kkeyserver_x11.h
new file mode 100644
index 00000000..73c800db
--- /dev/null
+++ b/python/pykde/extra/kde353/kkeyserver_x11.h
@@ -0,0 +1,477 @@
+/*
+ Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KKEYSERVER_X11_H
+#define _KKEYSERVER_X11_H
+
+#include "kshortcut.h"
+#include "kkeynative.h"
+
+/**
+ * A collection of functions for the conversion of key presses and
+ * their modifiers from the window system specific format
+ * to the generic format and vice-versa.
+ */
+namespace KKeyServer
+{
+ /**
+ * Supplement enum KKey::ModFlag
+ * @since 3.1
+ */
+ enum ExtraModFlag { MODE_SWITCH = 0x2000 };
+
+ /**
+ * Represents a key symbol.
+ * @see KKey
+ * @see KKeyServer
+ */
+ struct KDECORE_EXPORT Sym
+ {
+ public:
+ /// the actual value of the symbol
+ uint m_sym;
+
+ /// Creates a null symbol.
+ Sym()
+ { m_sym = 0; }
+ /**
+ * Creates asymbol with the given value.
+ * @param sym the value
+ */
+ Sym( uint sym )
+ { m_sym = sym; }
+ /**
+ * Creates a symbol from the given string description.
+ * @param s the description of the symbol
+ * @see toString()
+ */
+ Sym( const QString& s )
+ { init( s ); }
+
+ /**
+ * Initializes the symbol with the given Qt key code.
+ * @param keyQt the qt key code
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ bool initQt( int keyQt );
+
+ /**
+ * Initializes the key with the given string description.
+ * @param s the string description
+ * @return true if successful, false otherwise
+ * @see toString()
+ */
+ bool init( const QString &s );
+
+ /**
+ * Returns the qt key code of the symbol.
+ * @return the qt key code
+ */
+ int qt() const;
+
+ /**
+ * @internal
+ */
+ QString toStringInternal() const;
+
+ /**
+ * Returns the string representation of the symbol.
+ * @return the string representation of the symbol
+ */
+ QString toString() const;
+
+ /**
+ * Returns the mods that are required for this symbol as
+ * ORed KKey::ModFlag's. For example, Break requires a
+ * Ctrl to be valid.
+ * @return the required KKey::ModFlag's
+ * @see KKey::ModFlag
+ */
+ uint getModsRequired() const;
+
+ /**
+ * TODO: please find out what this method does and document it
+ */
+ uint getSymVariation() const;
+
+ /**
+ * Casts the symbol to its integer representation.
+ */
+ operator uint() const { return m_sym; }
+
+ /**
+ * Overloaded operator to convert ints to Sym.
+ */
+ Sym& operator =( uint sym ) { m_sym = sym; return *this; }
+
+ private:
+ QString toString( bool bUserSpace ) const;
+
+ static void capitalizeKeyname( QString& );
+ };
+
+ /**
+ * Represents a key press.
+ * @see KKey
+ */
+ struct KDECORE_EXPORT Key
+ {
+ /// Code for native Keys in Qt
+ enum { CODE_FOR_QT = 256 };
+
+ /// The code of the key
+ uint m_code;
+
+ /// The modifiers of the key
+ uint m_mod;
+
+ /// The symbol of the key
+ uint m_sym;
+
+ /**
+ * Initializes the key with a KKey.
+ * @param key the key to get the data from
+ * @param bQt true to take the Qt keycode, false
+ * for the native key code
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool init( const KKey& key, bool bQt );
+
+ /**
+ * Checks whether the key code is a native code.
+ * @return true if native code of the window system,
+ * false if it is a Qt keycode
+ * @see Qt::Key
+ * @see KKeyNative
+ */
+ bool isNative() const { return m_code != CODE_FOR_QT; }
+
+ /**
+ * Returns the code of the key.
+ * @return the code of the key
+ */
+ uint code() const { return m_code; }
+
+ /**
+ * Returns the modifiers of the key.
+ * @return the modifiers of the key
+ */
+ uint mod() const { return m_mod; }
+
+ /**
+ * Returns the symbol of the key.
+ * @return the symbol of the key
+ */
+ uint sym() const { return m_sym; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code
+ */
+ int keyCodeQt() const { return (int) m_sym; }
+
+ /**
+ * Sets the qt key code.
+ * @param keyQt the qt key code
+ */
+ void setKeycodeQt( int keyQt )
+ { m_code = CODE_FOR_QT; m_sym = keyQt; }
+
+ /**
+ * Initializes this key with a KKeyNative.
+ * @return this key
+ */
+ Key& operator =( const KKeyNative& key );
+
+ /**
+ * Compares this key with the given Key object. Returns a
+ * negative number if the given Key is larger, 0 if they
+ * are equal and a positive number this Key is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given Key is larger, 0 if
+ * they are equal and a positive number this Key is larger
+ */
+ int compare( const Key& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator ==( const Key& b ) const
+ { return compare( b ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator <( const Key& b ) const
+ { return compare( b ) < 0; }
+
+ /**
+ * Converts this Key to a KKey.
+ * @return the KKey
+ */
+ KKey key() const;
+ };
+
+ /**
+ * TODO: please document this class
+ */
+ struct KDECORE_EXPORT Variations
+ {
+ enum { MAX_VARIATIONS = 4 };
+
+ Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+
+ Variations() { m_nVariations = 0; }
+
+ void init( const KKey&, bool bQt );
+
+ uint count() const { return m_nVariations; }
+ const Key& key( uint i ) const { return m_rgkey[i]; }
+ };
+
+ /// TODO: please document
+ KDECORE_EXPORT bool initializeMods();
+
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the generic flags to check
+ * @return the window system specific flags
+ */
+ KDECORE_EXPORT uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns true if the current keyboard layout supports the Win key.
+ * Specifically, whether the Super or Meta keys are assigned to an X modifier.
+ * @return true if the keyboard has a Win key
+ * @see modXWin()
+ */
+ KDECORE_EXPORT bool keyboardHasWinKey();
+
+ /**
+ * Returns the X11 Shift modifier mask/flag.
+ * @return the X11 Shift modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXShift();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXLock();
+
+ /**
+ * Returns the X11 Ctrl modifier mask/flag.
+ * @return the X11 Ctrl modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXCtrl();
+
+ /**
+ * Returns the X11 Alt (Mod1) modifier mask/flag.
+ * @return the X11 Alt (Mod1) modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXAlt();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXNumLock();
+
+ /**
+ * Returns the X11 Win (Mod3) modifier mask/flag.
+ * @return the X11 Win (Mod3) modifier mask/flag.
+ * @see keyboardHasWinKey()
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXWin();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ KDECORE_EXPORT uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint modXModeSwitch();
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @see modXShift()
+ * @see modXLock()
+ * @see modXCtrl()
+ * @see modXAlt()
+ * @see modXNumLock()
+ * @see modXWin()
+ * @see modXScrollLock()
+ */
+ KDECORE_EXPORT uint accelModMaskX();
+
+ /**
+ * Extracts the symbol from the given Qt key and
+ * converts it to a symbol.
+ * @param keyQt the qt key code
+ * @param sym if successful, the symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool keyQtToSym( int keyQt, uint& sym );
+
+ /**
+ * Extracts the modifiers from the given Qt key and
+ * converts them in a mask of ORed KKey::ModFlag modifiers.
+ * @param keyQt the qt key code
+ * @param mod if successful, the modifiers will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ KDECORE_EXPORT bool keyQtToMod( int keyQt, uint& mod );
+
+ /**
+ * Converts the given symbol to a Qt key code.
+ * @param sym the symbol
+ * @param keyQt if successful, the qt key code will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool symToKeyQt( uint sym, int& keyQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModQt( uint mod, int& modQt );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to
+ * a mask of ORed X11 modifiers.
+ * @param mod the mask of KKey::ModFlag modifiers
+ * @param modX the mask of X11 modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modToModX( uint mod, uint& modX );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed Qt key code modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param modQt the mask of Qt key code modifiers will be written here
+ * if successful
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ */
+ //wrapped for win32
+ KDECORE_EXPORT bool modXToModQt( uint modX, int& modQt );
+
+ /**
+ * Converts the Qt-compatible button state to x11 modifier.
+ */
+ KDECORE_EXPORT int qtButtonStateToMod( Qt::ButtonState s );
+
+ /**
+ * Converts the mask of ORed X11 modifiers to
+ * a mask of ORed KKey::ModFlag modifiers.
+ * @param modX the mask of X11 modifiers
+ * @param mod the mask of KKey::ModFlag modifiers will be written here,
+ * if successful
+ * @return true if successful, false otherwise
+ * @see KKey
+ */
+ KDECORE_EXPORT bool modXToMod( uint modX, uint& mod );
+
+ /**
+ * Converts a X11 key code and a mask of ORed X11 modifiers
+ * into a X11 symbol.
+ * converts it to a symbol.
+ * @param codeX the X11 key code
+ * @param modX the mask of ORed X11 modifiers
+ * @param symX if successful, the X11 symbol will be written here
+ * @return true if successful, false otherwise
+ * @see Qt::Key
+ * @see Sym
+ */
+ KDECORE_EXPORT bool codeXToSym( uchar codeX, uint modX, uint& symX );
+
+ /**
+ * @internal
+ */
+ KDECORE_EXPORT QString modToStringInternal( uint mod );
+
+ /**
+ * Converts the mask of ORed KKey::ModFlag modifiers to a
+ * user-readable string.
+ * @param mod the mask of ORed KKey::ModFlag modifiers
+ * @return the user-readable string
+ */
+ KDECORE_EXPORT QString modToStringUser( uint mod );
+
+ /**
+ * Converts the modifier given as user-readable string
+ * to KKey::ModFlag modifier, or 0.
+ * @internal
+ * @since 3.5
+ */
+ KDECORE_EXPORT uint stringUserToMod( const QString& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT bool stringToSymMod( const QString&, uint& sym, uint& mod );
+
+ /**
+ * @internal
+ * Unimplemented?
+ */
+ KDECORE_EXPORT void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
+}
+
+#endif // !_KKEYSERVER_X11_H
diff --git a/python/pykde/extra/kde353/konsole_part.h b/python/pykde/extra/kde353/konsole_part.h
new file mode 100644
index 00000000..16028ea5
--- /dev/null
+++ b/python/pykde/extra/kde353/konsole_part.h
@@ -0,0 +1,241 @@
+/* -*- C++ -*-
+ This file is part of the KDE system
+ Copyright (C) 1999,2000 Boloni Laszlo
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KONSOLE_PART_H
+#define KONSOLE_PART_H
+
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+
+#include <kdialogbase.h>
+
+#include <kde_terminal_interface.h>
+
+//#include "schema.h"
+//#include "session.h"
+
+class KInstance;
+class konsoleBrowserExtension;
+class QPushButton;
+class QSpinBox;
+class KPopupMenu;
+class KActionMenu;
+class QCheckBox;
+class KRootPixmap;
+class KToggleAction;
+class KSelectAction;
+
+namespace KParts { class GUIActivateEvent; }
+
+class konsoleFactory : public KParts::Factory
+{
+ Q_OBJECT
+public:
+ konsoleFactory();
+ virtual ~konsoleFactory();
+
+ virtual KParts::Part* createPartObject(QWidget *parentWidget = 0, const char *widgetName = 0,
+ QObject* parent = 0, const char* name = 0,
+ const char* classname = "KParts::Part",
+ const QStringList &args = QStringList());
+
+ static KInstance *instance();
+
+ private:
+ static KInstance *s_instance;
+ static KAboutData *s_aboutData;
+};
+
+//////////////////////////////////////////////////////////////////////
+
+class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface, public ExtTerminalInterface
+{
+ Q_OBJECT
+ public:
+ konsolePart(QWidget *parentWidget, const char *widgetName, QObject * parent, const char *name, const char *classname = 0);
+ virtual ~konsolePart();
+
+signals:
+ void processExited( KProcess * );
+ void receivedData( const QString& s );
+ void forkedChild();
+ protected:
+ virtual bool openURL( const KURL & url );
+ virtual bool openFile() {return false;} // never used
+ virtual bool closeURL() {return true;}
+ virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
+
+ protected slots:
+ void showShell();
+
+// void doneSession(TESession*);
+ void sessionDestroyed();
+// void configureRequest(TEWidget*,int,int x,int y);
+// void updateTitle(TESession*);
+ void enableMasterModeConnections();
+
+ private slots:
+ void emitOpenURLRequest(const QString &url);
+
+ void readProperties();
+ void saveProperties();
+ void applyProperties();
+ void setSettingsMenuEnabled( bool );
+
+ void sendSignal(int n);
+ void closeCurrentSession();
+
+ void notifySize(int /*columns*/, int /*lines*/);
+
+ void slotToggleFrame();
+ void slotSelectScrollbar();
+ void slotSelectFont();
+ void schema_menu_check();
+ void keytab_menu_activated(int item);
+ void updateSchemaMenu();
+ void setSchema(int n);
+ void pixmap_menu_activated(int item);
+ void schema_menu_activated(int item);
+ void slotHistoryType();
+ void slotSelectBell();
+ void slotSelectLineSpacing();
+ void slotBlinkingCursor();
+ void slotUseKonsoleSettings();
+ void slotWordSeps();
+ void slotSetEncoding();
+ void biggerFont();
+ void smallerFont();
+
+ void autoShowShell();
+
+ private:
+ konsoleBrowserExtension *m_extension;
+ KURL currentURL;
+
+ void makeGUI();
+ void applySettingsToGUI();
+
+// void setSchema(ColorSchema* s);
+ void updateKeytabMenu();
+
+ bool doOpenStream( const QString& );
+ bool doWriteStream( const QByteArray& );
+ bool doCloseStream();
+
+ QWidget* parentWidget;
+// TEWidget* te;
+// TESession* se;
+ // ColorSchemaList* colors;
+ KRootPixmap* rootxpm;
+
+ KActionCollection* actions;
+ KActionCollection* settingsActions;
+
+ KToggleAction* blinkingCursor;
+ KToggleAction* showFrame;
+ KToggleAction* m_useKonsoleSettings;
+
+ KSelectAction* selectBell;
+ KSelectAction* selectLineSpacing;
+ KSelectAction* selectScrollbar;
+ KSelectAction* selectSetEncoding;
+
+ KActionMenu* m_fontsizes;
+
+ KPopupMenu* m_keytab;
+ KPopupMenu* m_schema;
+ KPopupMenu* m_signals;
+ KPopupMenu* m_options;
+ KPopupMenu* m_popupMenu;
+
+ QFont defaultFont;
+
+ QString pmPath; // pixmap path
+ QString s_schema;
+ QString s_kconfigSchema;
+ QString s_word_seps; // characters that are considered part of a word
+
+ bool b_framevis:1;
+ bool b_histEnabled:1;
+ bool b_useKonsoleSettings:1;
+ bool b_autoDestroy:1;
+ bool b_autoStartShell:1;
+
+ int curr_schema; // current schema no
+ int n_bell;
+ int n_keytab;
+ int n_render;
+ int n_scroll;
+ unsigned m_histSize;
+ bool m_runningShell;
+ bool m_streamEnabled;
+ int n_encoding;
+
+public:
+ // these are the implementations for the TermEmuInterface
+ // functions...
+ void startProgram( const QString& program,
+ const QStrList& args );
+ void newSession();
+ void showShellInDir( const QString& dir );
+ void sendInput( const QString& text );
+ void setAutoDestroy( bool );
+ void setAutoStartShell( bool );
+};
+
+//////////////////////////////////////////////////////////////////////
+
+/*class HistoryTypeDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ HistoryTypeDialog(const HistoryType& histType,
+ unsigned int histSize,
+ QWidget *parent);
+
+public slots:
+ void slotDefault();
+ void slotSetUnlimited();
+ void slotHistEnable(bool);
+
+ unsigned int nbLines() const;
+ bool isOn() const;
+
+protected:
+ QCheckBox* m_btnEnable;
+ QSpinBox* m_size;
+ QPushButton* m_setUnlimited;
+};*/
+
+//////////////////////////////////////////////////////////////////////
+
+class konsoleBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class konsolePart;
+ public:
+ konsoleBrowserExtension(konsolePart *parent);
+ virtual ~konsoleBrowserExtension();
+
+ void emitOpenURLRequest(const KURL &url);
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/kpanelmenu.h b/python/pykde/extra/kde353/kpanelmenu.h
new file mode 100644
index 00000000..61ec7f13
--- /dev/null
+++ b/python/pykde/extra/kde353/kpanelmenu.h
@@ -0,0 +1,182 @@
+/*****************************************************************
+
+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS.
+ (c) 2001 Michael Goffioul <kdeprint@swing.be>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef __KPANELMENU_H__
+#define __KPANELMENU_H__
+
+#include <qstring.h>
+#include <kpopupmenu.h>
+#include <kgenericfactory.h>
+
+class KPanelMenuPrivate;
+
+/**
+ * @short Base class to build dynamically loaded menu entries for the K-menu, or the panel.
+ *
+ * This class allows to build menu entries that will be dynamically added either to
+ * the K-menu, or to the panel as a normal button. These dynamic menus are located
+ * in shared libraries that will be loaded at runtime by Kicker (the %KDE panel).
+ *
+ * To build such a menu, you have to inherit this class and implement the pure virtual
+ * functions #initialize() and slotExec(). You also have to provide a factory
+ * object in your library, see KLibFactory. This factory is only used to construct
+ * the menu object.
+ *
+ * Finally, you also have to provide a desktop file describing your dynamic menu. The
+ * relevant entries are: Name, Comment, Icon and X-KDE-Library (which contains the
+ * library name without any extension). This desktop file has to be installed in
+ * $KDEDIR/share/apps/kicker/menuext/.
+ *
+ * @author The kicker maintainers, Michael Goffioul <kdeprint@swing.be>
+ */
+class KDEUI_EXPORT KPanelMenu : public KPopupMenu
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a KPanelMenu object. This is the normal constructor to use when
+ * building extrernal menu entries.
+ */
+ KPanelMenu(QWidget *parent=0, const char *name=0);
+ /**
+ * Constructor used internally by Kicker. You don't really want to use it.
+ * @param startDir a directory to associate with this menu
+ * @param parent parent object
+ * @param name name of the object
+ * @see path(), setPath()
+ */
+ KPanelMenu(const QString &startDir, QWidget *parent=0, const char *name=0);
+ /**
+ * Destructor.
+ */
+ virtual ~KPanelMenu();
+
+ /**
+ * Get the directory path associated with this menu, or QString::null if
+ * there's no such associated path.
+ * @return the associated directory path
+ * @see setPath()
+ */
+ const QString& path() const;
+ /**
+ * Set a directory path to be associated with this menu.
+ * @param p the directory path
+ * @see path()
+ */
+ void setPath(const QString &p);
+ /**
+ * Tell if the menu has been initialized, that is it already contains items.
+ * This is useful when you need to know if you have to clear the menu, or to
+ * fill it.
+ * @return the initial state
+ * @see setInitialized(), initialize()
+ */
+ bool initialized() const;
+ /**
+ * Set the initial state. Set it to true when you menu is filled with the items
+ * you want.
+ * @param on the initial state
+ * @see initialized(), initialize()
+ */
+ void setInitialized(bool on);
+
+ /**
+ * Disable the automatic clearing of the menu. Kicker uses a cache system for
+ * its menus. After a specific configurable delay, the menu will be cleared.
+ * Use this function if you want to disable kicker's cache system, and avoid
+ * the clearing of your menu.
+ */
+ void disableAutoClear();
+
+public slots:
+ /**
+ * Reinitialize the menu: the menu is first cleared, the initial state is set
+ * to false, and finally #initialize() is called. Use this if you want to
+ * refill your menu immediately.
+ */
+ void reinitialize();
+ /**
+ * Deinitialize the menu: the menu is cleared and the initialized state is set to
+ * false. #initialize() is NOT called. It will be called before the menu is
+ * next shown, however. Use this slot if you want a delayed reinitialization.
+ * @since 3.1
+ */
+ void deinitialize();
+
+protected slots:
+ /**
+ * This slot is called just before the menu is shown. This allows your menu
+ * to update itself if needed. However you should instead re-implement
+ * #initialize to provide this feature. This function is responsible for
+ * the cache system handling, so if you re-implement it, you should call
+ * the base function also. Calls #initialize().
+ * @see disableAutoClear()
+ */
+ virtual void slotAboutToShow();
+ /**
+ * This is slot is called when an item from the menu has been selected. Your
+ * applet is then supposed to perform some action. You must re-implement this
+ * function.
+ * @param id the ID associated with the selected item
+ */
+ virtual void slotExec(int id) = 0;
+ /**
+ * This slots is called to initialize the menu. It is called automatically by
+ * slotAboutToShow(). By re-implementing this functions, you can reconstruct
+ * the menu before it is being shown. At the end of this function, you should
+ * call setInitialize() with true to tell the system that the menu is OK.
+ * You applet must re-implement this function.
+ * @see slotAboutToShow(), initialized(), setInitialized()
+ */
+ virtual void initialize() = 0;
+ /**
+ * Clears the menu, and update the initial state accordingly.
+ * @see initialized()
+ */
+ void slotClear();
+
+protected:
+ /**
+ * Re-implemented for internal reasons.
+ */
+ virtual void hideEvent(QHideEvent *ev);
+ /**
+ * For internal use only. Used by constructors.
+ */
+ void init(const QString& path = QString::null);
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ void internalInitialize();
+ KPanelMenuPrivate *d;
+};
+
+#define K_EXPORT_KICKER_MENUEXT( libname, classname ) \
+ K_EXPORT_COMPONENT_FACTORY( \
+ kickermenu_##libname, \
+ KGenericFactory<classname>("libkickermenu_" #libname) )
+
+#endif
diff --git a/python/pykde/extra/kde353/ksharedptr.h b/python/pykde/extra/kde353/ksharedptr.h
new file mode 100644
index 00000000..ada08413
--- /dev/null
+++ b/python/pykde/extra/kde353/ksharedptr.h
@@ -0,0 +1,175 @@
+/* This file is part of the KDE libraries
+ Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+#ifndef KSharedPTR_H
+#define KSharedPTR_H
+
+#include "kdelibs_export.h"
+
+/**
+ * Reference counting for shared objects. If you derive your object
+ * from this class, then you may use it in conjunction with
+ * KSharedPtr to control the lifetime of your object.
+ *
+ * Specifically, all classes that derive from KShared have an internal
+ * counter keeping track of how many other objects have a reference to
+ * their object. If used with KSharedPtr, then your object will
+ * not be deleted until all references to the object have been
+ * released.
+ *
+ * You should probably not ever use any of the methods in this class
+ * directly -- let the KSharedPtr take care of that. Just derive
+ * your class from KShared and forget about it.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+class KDECORE_EXPORT KShared {
+public:
+ /**
+ * Standard constructor. This will initialize the reference count
+ * on this object to 0.
+ */
+ KShared() : count(0) { }
+
+ /**
+ * Copy constructor. This will @em not actually copy the objects
+ * but it will initialize the reference count on this object to 0.
+ */
+ KShared( const KShared & ) : count(0) { }
+
+ /**
+ * Overloaded assignment operator.
+ */
+ KShared &operator=(const KShared & ) { return *this; }
+
+ /**
+ * Increases the reference count by one.
+ */
+ void _KShared_ref() const { count++; }
+
+ /**
+ * Releases a reference (decreases the reference count by one). If
+ * the count goes to 0, this object will delete itself.
+ */
+ void _KShared_unref() const { if (!--count) delete this; }
+
+ /**
+ * Return the current number of references held.
+ *
+ * @return Number of references
+ */
+ int _KShared_count() const { return count; }
+
+protected:
+ virtual ~KShared() { }
+private:
+ mutable int count;
+};
+
+/**
+ * Can be used to control the lifetime of an object that has derived
+ * KShared. As long a someone holds a KSharedPtr on some KShared
+ * object it won't become deleted but is deleted once its reference
+ * count is 0. This struct emulates C++ pointers virtually perfectly.
+ * So just use it like a simple C++ pointer.
+ *
+ * KShared and KSharedPtr are preferred over QShared / QSharedPtr
+ * since they are more safe.
+ *
+ * WARNING: Please note that this class template provides an implicit
+ * conversion to T*. Do *not* change this pointer or the pointee (don't
+ * call delete on it, for instance) behind KSharedPtr's back.
+ *
+ * @author Waldo Bastian <bastian@kde.org>
+ */
+template< class T >
+class KSharedPtr
+{
+public:
+/**
+ * Creates a null pointer.
+ */
+ KSharedPtr()
+ : ptr(0) { }
+ /**
+ * Creates a new pointer.
+ * @param t the pointer
+ */
+ KSharedPtr( T* t )
+ : ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Copies a pointer.
+ * @param p the pointer to copy
+ */
+ KSharedPtr( const KSharedPtr& p )
+ : ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
+
+ /**
+ * Unreferences the object that this pointer points to. If it was
+ * the last reference, the object will be deleted.
+ */
+ ~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
+
+ KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
+ if ( ptr == p.ptr ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p.ptr;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ KSharedPtr<T>& operator= ( T* p ) {
+ if ( ptr == p ) return *this;
+ if ( ptr ) ptr->_KShared_unref();
+ ptr = p;
+ if ( ptr ) ptr->_KShared_ref();
+ return *this;
+ }
+ bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
+ bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
+ bool operator== ( const T* p ) const { return ( ptr == p ); }
+ bool operator!= ( const T* p ) const { return ( ptr != p ); }
+ bool operator!() const { return ( ptr == 0 ); }
+ operator T*() const { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ T* data() { return ptr; }
+
+ /**
+ * Returns the pointer.
+ * @return the pointer
+ */
+ const T* data() const { return ptr; }
+
+ const T& operator*() const { return *ptr; }
+ T& operator*() { return *ptr; }
+ const T* operator->() const { return ptr; }
+ T* operator->() { return ptr; }
+
+ /**
+ * Returns the number of references.
+ * @return the number of references
+ */
+ int count() const { return ptr->_KShared_count(); } // for debugging purposes
+private:
+ T* ptr;
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/ksycocafactory.h b/python/pykde/extra/kde353/ksycocafactory.h
new file mode 100644
index 00000000..65bb9d98
--- /dev/null
+++ b/python/pykde/extra/kde353/ksycocafactory.h
@@ -0,0 +1,143 @@
+/* This file is part of the KDE libraries
+ * Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __ksycocafactory_h__
+#define __ksycocafactory_h__
+
+#include "ksycocatype.h"
+#include "ksycocaentry.h"
+
+#include <qdict.h>
+#include <qptrlist.h>
+class KSycoca;
+class QStringList;
+class QString;
+class KSycocaDict;
+class KSycocaResourceList;
+
+typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
+
+/**
+ * @internal
+ * Base class for sycoca factories
+ */
+class KDECORE_EXPORT KSycocaFactory
+{
+public:
+ virtual KSycocaFactoryId factoryId() const = 0;
+
+protected: // virtual class
+ /**
+ * Create a factory which can be used to lookup from/create a database
+ * (depending on KSycoca::isBuilding())
+ */
+ KSycocaFactory( KSycocaFactoryId factory_id );
+
+public:
+ virtual ~KSycocaFactory();
+
+ /**
+ * @return the position of the factory in the sycoca file
+ */
+ int offset() { return mOffset; }
+
+ /**
+ * @return the dict, for special use by KBuildSycoca
+ */
+ KSycocaEntryDict * entryDict() { return m_entryDict; }
+
+ /**
+ * Construct an entry from a config file.
+ * To be implemented in the real factories.
+ */
+ virtual KSycocaEntry *createEntry(const QString &file, const char *resource) = 0;
+
+ /**
+ * Add an entry
+ */
+ virtual void addEntry(KSycocaEntry *newEntry, const char *resource);
+
+ /**
+ * Remove an entry
+ * Not very fast, use with care. O(N)
+ */
+ void removeEntry(KSycocaEntry *newEntry);
+
+ /**
+ * Read an entry from the database
+ */
+ virtual KSycocaEntry *createEntry(int offset)=0;
+
+ /**
+ * Get a list of all entries from the database.
+ */
+ KSycocaEntry::List allEntries();
+
+ /**
+ * Saves all entries it maintains as well as index files
+ * for these entries to the stream 'str'.
+ *
+ * Also sets mOffset to the starting position.
+ *
+ * The stream is positioned at the end of the last index.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void save(QDataStream &str);
+
+ /**
+ * Writes out a header to the stream 'str'.
+ * The baseclass positions the stream correctly.
+ *
+ * Don't forget to call the parent first when you override
+ * this function.
+ */
+ virtual void saveHeader(QDataStream &str);
+
+ /**
+ * @return the resources for which this factory is responsible.
+ */
+ virtual const KSycocaResourceList * resourceList() const { return m_resourceList; }
+
+private:
+ int mOffset;
+
+protected:
+ int m_sycocaDictOffset;
+ int m_beginEntryOffset;
+ int m_endEntryOffset;
+ QDataStream *m_str;
+
+ KSycocaResourceList *m_resourceList;
+ KSycocaEntryDict *m_entryDict;
+ KSycocaDict *m_sycocaDict;
+protected:
+ virtual void virtual_hook( int id, void* data );
+};
+
+/** This, instead of a typedef, allows to declare "class ..." in header files
+ * @internal
+ */
+class KDECORE_EXPORT KSycocaFactoryList : public QPtrList<KSycocaFactory>
+{
+public:
+ KSycocaFactoryList() { }
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/ktoolbarbutton.h b/python/pykde/extra/kde353/ktoolbarbutton.h
new file mode 100644
index 00000000..7526f025
--- /dev/null
+++ b/python/pykde/extra/kde353/ktoolbarbutton.h
@@ -0,0 +1,330 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org)
+ (C) 1997, 1998 Sven Radej (radej@kde.org)
+ (C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
+ (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
+ (C) 2000 Kurt Granroth (granroth@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _KTOOLBARBUTTON_H
+#define _KTOOLBARBUTTON_H
+
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+#include <qintdict.h>
+#include <qstring.h>
+#include <kglobal.h>
+
+class KToolBar;
+class KToolBarButtonPrivate;
+class KInstance;
+class QEvent;
+class QPopupMenu;
+class QPainter;
+
+/**
+ * A toolbar button. This is used internally by KToolBar, use the
+ * KToolBar methods instead.
+ * @internal
+ */
+class KDEUI_EXPORT KToolBarButton : public QToolButton
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a button with an icon loaded by the button itself.
+ * This will trust the button to load the correct icon with the
+ * correct size.
+ *
+ * @param icon Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ * @param _instance the instance to use for this button
+ */
+ KToolBarButton(const QString& icon, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null,
+ KInstance *_instance = KGlobal::instance());
+
+ /**
+ * Construct a button with an existing pixmap. It is not
+ * recommended that you use this as the internal icon loading code
+ * will almost always get it "right".
+ *
+ * @param pixmap Name of icon to load (may be absolute or relative)
+ * @param id Id of this button
+ * @param parent This button's parent
+ * @param name This button's internal name
+ * @param txt This button's text (in a tooltip or otherwise)
+ */
+ KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent,
+ const char *name=0L, const QString &txt=QString::null);
+
+ /**
+ * Construct a separator button
+ *
+ * @param parent This button's parent
+ * @param name This button's internal name
+ */
+ KToolBarButton(QWidget *parent=0L, const char *name=0L);
+
+ /**
+ * Standard destructor
+ */
+ ~KToolBarButton();
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the pixmap directly for this button. This pixmap should be
+ * the active one... the dimmed and disabled pixmaps are constructed
+ * based on this one. However, don't use this function unless you
+ * are positive that you don't want to use setIcon.
+ *
+ * @param pixmap The active pixmap
+ */
+ // this one is from QButton, so #ifdef-ing it out doesn't break BC
+ virtual void setPixmap(const QPixmap &pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap as the default one rather
+ * then generating it using effects.
+ *
+ * @param pixmap The pixmap to use as the default (normal) one
+ */
+ void setDefaultPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this pixmap when disabled one rather then
+ * generating it using effects.
+ *
+ * @param pixmap The pixmap to use when disabled
+ */
+ void setDisabledPixmap(const QPixmap& pixmap) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Set the text for this button. The text will be either used as a
+ * tooltip (IconOnly) or will be along side the icon
+ *
+ * @param text The button (or tooltip) text
+ */
+ virtual void setText(const QString &text);
+
+ /**
+ * Set the icon for this button. The icon will be loaded internally
+ * with the correct size. This function is preferred over setIconSet
+ *
+ * @param icon The name of the icon
+ */
+ virtual void setIcon(const QString &icon);
+
+ /// @since 3.1
+ virtual void setIcon( const QPixmap &pixmap )
+ { QToolButton::setIcon( pixmap ); }
+
+ /**
+ * Set the pixmaps for this toolbar button from a QIconSet.
+ * If you call this you don't need to call any of the other methods
+ * that set icons or pixmaps.
+ * @param iconset The iconset to use
+ */
+ virtual void setIconSet( const QIconSet &iconset );
+
+#ifndef KDE_NO_COMPAT
+ /**
+ * @deprecated
+ * Set the active icon for this button. The pixmap itself is loaded
+ * internally based on the icon size... .. the disabled and default
+ * pixmaps, however will only be constructed if generate is
+ * true. This function is preferred over setPixmap
+ *
+ * @param icon The name of the active icon
+ * @param generate If true, then the other icons are automagically
+ * generated from this one
+ */
+ KDE_DEPRECATED void setIcon(const QString &icon, bool generate ) { Q_UNUSED(generate); setIcon( icon ); }
+
+ /**
+ * @deprecated
+ * Force the button to use this icon as the default one rather
+ * then generating it using effects.
+ *
+ * @param icon The icon to use as the default (normal) one
+ */
+ void setDefaultIcon(const QString& icon) KDE_DEPRECATED;
+
+ /**
+ * @deprecated
+ * Force the button to use this icon when disabled one rather then
+ * generating it using effects.
+ *
+ * @param icon The icon to use when disabled
+ */
+ void setDisabledIcon(const QString& icon) KDE_DEPRECATED;
+#endif
+
+ /**
+ * Turn this button on or off
+ *
+ * @param flag true or false
+ */
+ void on(bool flag = true);
+
+ /**
+ * Toggle this button
+ */
+ void toggle();
+
+ /**
+ * Turn this button into a toggle button or disable the toggle
+ * aspects of it. This does not toggle the button itself.
+ * Use toggle() for that.
+ *
+ * @param toggle true or false
+ */
+ void setToggle(bool toggle = true);
+
+ /**
+ * Return a pointer to this button's popup menu (if it exists)
+ */
+ QPopupMenu *popup();
+
+ /**
+ * Returns the button's id.
+ * @since 3.2
+ */
+ int id() const;
+
+ /**
+ * Give this button a popup menu. There will not be a delay when
+ * you press the button. Use setDelayedPopup if you want that
+ * behavior.
+ *
+ * @param p The new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setPopup (QPopupMenu *p, bool unused = false);
+
+ /**
+ * Gives this button a delayed popup menu.
+ *
+ * This function allows you to add a delayed popup menu to the button.
+ * The popup menu is then only displayed when the button is pressed and
+ * held down for about half a second.
+ *
+ * @param p the new popup menu
+ * @param unused Has no effect - ignore it.
+ */
+ void setDelayedPopup(QPopupMenu *p, bool unused = false);
+
+ /**
+ * Turn this button into a radio button
+ *
+ * @param f true or false
+ */
+ void setRadio(bool f = true);
+
+ /**
+ * Toolbar buttons naturally will assume the global styles
+ * concerning icons, icons sizes, etc. You can use this function to
+ * explicitly turn this off, if you like.
+ *
+ * @param no_style Will disable styles if true
+ */
+ void setNoStyle(bool no_style = true);
+
+signals:
+ /**
+ * Emitted when the toolbar button is clicked (with LMB or MMB)
+ */
+ void clicked(int);
+ /**
+ * Emitted when the toolbar button is clicked (with any mouse button)
+ * @param state makes it possible to find out which button was pressed,
+ * and whether any keyboard modifiers were held.
+ * @since 3.4
+ */
+ void buttonClicked(int, Qt::ButtonState state);
+ void doubleClicked(int);
+ void pressed(int);
+ void released(int);
+ void toggled(int);
+ void highlighted(int, bool);
+
+public slots:
+ /**
+ * This slot should be called whenever the toolbar mode has
+ * potentially changed. This includes such events as text changing,
+ * orientation changing, etc.
+ */
+ void modeChange();
+ virtual void setTextLabel(const QString&, bool tipToo);
+
+protected:
+ bool event(QEvent *e);
+ void paletteChange(const QPalette &);
+ void leaveEvent(QEvent *e);
+ void enterEvent(QEvent *e);
+ void drawButton(QPainter *p);
+ bool eventFilter (QObject *o, QEvent *e);
+ /// @since 3.4
+ void mousePressEvent( QMouseEvent * );
+ /// @since 3.4
+ void mouseReleaseEvent( QMouseEvent * );
+ void showMenu();
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSize minimumSize() const;
+
+ /// @since 3.1
+ bool isRaised() const;
+ /// @since 3.1
+ bool isActive() const;
+ /// @since 3.1
+ int iconTextMode() const;
+
+protected slots:
+ void slotClicked();
+ void slotPressed();
+ void slotReleased();
+ void slotToggled();
+ void slotDelayTimeout();
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KToolBarButtonPrivate *d;
+};
+
+/**
+* List of KToolBarButton objects.
+* @internal
+* @version $Id: ktoolbarbutton.h 465272 2005-09-29 09:47:40Z mueller $
+*/
+class KDEUI_EXPORT KToolBarButtonList : public QIntDict<KToolBarButton>
+{
+public:
+ KToolBarButtonList();
+ ~KToolBarButtonList() {}
+};
+
+#endif
diff --git a/python/pykde/extra/kde353/kurifilter.h b/python/pykde/extra/kde353/kurifilter.h
new file mode 100644
index 00000000..355ce38a
--- /dev/null
+++ b/python/pykde/extra/kde353/kurifilter.h
@@ -0,0 +1,647 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2000-2001,2003 Dawit Alemayehu <adawit at kde.org>
+ *
+ * Original author
+ * Copyright (C) 2000 Yves Arrouye <yves@realnames.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef __kurifilter_h__
+#define __kurifilter_h__
+
+#include <qptrlist.h>
+#include <qobject.h>
+#include <qstringlist.h>
+
+#include <kurl.h>
+
+#ifdef Q_OS_WIN
+#undef ERROR
+#endif
+
+class KURIFilterPrivate;
+class KURIFilterDataPrivate;
+
+class KCModule;
+
+/**
+* A basic message object used for exchanging filtering
+* information between the filter plugins and the application
+* requesting the filtering service.
+*
+* Use this object if you require a more detailed information
+* about the URI you want to filter. Any application can create
+* an instance of this class and send it to KURIFilter to
+* have the plugins fill out all possible information about the
+* URI.
+*
+* \b Example
+*
+* \code
+* QString text = "kde.org";
+* KURIFilterData d = text;
+* bool filtered = KURIFilter::self()->filter( d );
+* cout << "URL: " << text.latin1() << endl
+* << "Filtered URL: " << d.uri().url().latin1() << endl
+* << "URI Type: " << d.uriType() << endl
+* << "Was Filtered: " << filtered << endl;
+* \endcode
+*
+* The above code should yield the following output:
+* \code
+* URI: kde.org
+* Filtered URI: http://kde.org
+* URI Type: 0 <== means NET_PROTOCOL
+* Was Filtered: 1 <== means the URL was successfully filtered
+* \endcode
+*
+* @short A message object for exchanging filtering URI info.
+* @author Dawit Alemayehu <adawit at kde.org>
+*/
+
+class KIO_EXPORT KURIFilterData
+{
+friend class KURIFilterPlugin;
+
+public:
+ /**
+ * Describes the type of the URI that was filtered.
+ * Here is a brief description of the types:
+ *
+ * @li NET_PROTOCOL - Any network protocol: http, ftp, nttp, pop3, etc...
+ * @li LOCAL_FILE - A local file whose executable flag is not set
+ * @li LOCAL_DIR - A local directory
+ * @li EXECUTABLE - A local file whose executable flag is set
+ * @li HELP - A man or info page
+ * @li SHELL - A shell executable (ex: echo "Test..." >> ~/testfile)
+ * @li BLOCKED - A URI that should be blocked/filtered (ex: ad filtering)
+ * @li ERROR - An incorrect URI (ex: "~johndoe" when user johndoe
+ * does not exist in that system )
+ * @li UNKNOWN - A URI that is not identified. Default value when
+ * a KURIFilterData is first created.
+ */
+ enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
+
+ /**
+ * Default constructor.
+ *
+ * Creates a URIFilterData object.
+ */
+ KURIFilterData() { init(); }
+
+ /**
+ * Creates a URIFilterData object from the given URL.
+ *
+ * @param url is the URL to be filtered.
+ */
+ KURIFilterData( const KURL& url ) { init( url); }
+
+ /**
+ * Creates a URIFilterData object from the given string.
+ *
+ * @param url is the string to be filtered.
+ */
+ KURIFilterData( const QString& url ) { init( url ); }
+
+ /**
+ * Copy constructor.
+ *
+ * Creates a URIFilterData object from another
+ * URI filter data object.
+ *
+ * @param data the uri filter data to be copied.
+ */
+ KURIFilterData( const KURIFilterData& data);
+
+ /**
+ * Destructor.
+ */
+ ~KURIFilterData();
+
+ /**
+ * This method has been deprecated and will always return
+ * true. You should instead use the result from the
+ * KURIFilter::filterURI() calls.
+ *
+ * @deprecated
+ */
+ KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
+
+ /**
+ * Returns the filtered or the original URL.
+ *
+ * This function returns the filtered url if one
+ * of the plugins successfully filtered the original
+ * URL. Otherwise, it returns the original URL.
+ * See hasBeenFiltered() and
+ *
+ * @return the filtered or original url.
+ */
+ KURL uri() const { return m_pURI; }
+
+ /**
+ * Returns an error message.
+ *
+ * This functions returns the error message set
+ * by the plugin whenever the uri type is set to
+ * KURIFilterData::ERROR. Otherwise, it returns
+ * a QString::null.
+ *
+ * @return the error message or a NULL when there is none.
+ */
+ QString errorMsg() const { return m_strErrMsg; }
+
+ /**
+ * Returns the URI type.
+ *
+ * This method always returns KURIFilterData::UNKNOWN
+ * if the given URL was not filtered.
+ * @return the type of the URI
+ */
+ URITypes uriType() const { return m_iType; }
+
+ /**
+ * Sets the URL to be filtered.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the string to be filtered.
+ */
+ void setData( const QString& url ) { init( url ); }
+
+ /**
+ * Same as above except the argument is a URL.
+ *
+ * Use this function to set the string to be
+ * filtered when you construct an empty filter
+ * object.
+ *
+ * @param url the URL to be filtered.
+ */
+ void setData( const KURL& url ) { init( url ); }
+
+ /**
+ * Sets the absolute path to be used whenever the supplied
+ * data is a relative local URL.
+ *
+ * NOTE: This function should only be used for local resources,
+ * i.e. the "file:/" protocol. It is useful for specifying the
+ * absolute path in cases where the actual URL might be relative.
+ * meta object. If deriving the path from a KURL, make sure you
+ * set the argument for this function to the result of calling
+ * path () instead of url ().
+ *
+ * @param abs_path the abolute path to the local resource.
+ * @return true if absolute path is successfully set. Otherwise, false.
+ */
+ bool setAbsolutePath( const QString& abs_path );
+
+ /**
+ * Returns the absolute path if one has already been set.
+ * @return the absolute path, or QString::null
+ * @see hasAbsolutePath()
+ */
+ QString absolutePath() const;
+
+ /**
+ * Checks whether the supplied data had an absolute path.
+ * @return true if the supplied data has an absolute path
+ * @see absolutePath()
+ */
+ bool hasAbsolutePath() const;
+
+ /**
+ * Returns the command line options and arguments for a
+ * local resource when present.
+ *
+ * @return options and arguments when present, otherwise QString::null
+ */
+ QString argsAndOptions() const;
+
+ /**
+ * Checks whether the current data is a local resource with
+ * command line options and arguments.
+ * @return true if the current data has command line options and arguments
+ */
+ bool hasArgsAndOptions() const;
+
+ /**
+ * Returns the name of the icon that matches
+ * the current filtered URL.
+ *
+ * NOTE that this function will return a NULL
+ * string by default and when no associated icon
+ * is found.
+ *
+ * @return the name of the icon associated with the resource,
+ * or QString::null if not found
+ */
+ QString iconName();
+
+ /**
+ * Check whether the provided uri is executable or not.
+ *
+ * Setting this to false ensures that typing the name of
+ * an executable does not start that application. This is
+ * useful in the location bar of a browser. The default
+ * value is true.
+ *
+ * @since 3.2
+ */
+ void setCheckForExecutables (bool check);
+
+ /**
+ * @return true if the filters should attempt to check whether the
+ * supplied uri is an executable. False otherwise.
+ *
+ * @since 3.2
+ */
+ bool checkForExecutables() const { return m_bCheckForExecutables; }
+
+ /**
+ * @return the string as typed by the user, before any URL processing is done
+ * @since 3.2
+ */
+ QString typedString() const;
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a KURL
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
+
+ /**
+ * Overloaded assigenment operator.
+ *
+ * This function allows you to easily assign a QString
+ * to a KURIFilterData object.
+ *
+ * @return an instance of a KURIFilterData object.
+ */
+ KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
+
+protected:
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const KURL& url);
+
+ /**
+ * Initializes the KURIFilterData on construction.
+ * @param url the URL to initialize the object with
+ */
+ void init( const QString& url = QString::null );
+
+private:
+ bool m_bCheckForExecutables;
+ bool m_bChanged;
+
+ QString m_strErrMsg;
+ QString m_strIconName;
+
+ KURL m_pURI;
+ URITypes m_iType;
+ KURIFilterDataPrivate *d;
+};
+
+
+/**
+ * Base class for URI filter plugins.
+ *
+ * This class applies a single filter to a URI. All plugins designed
+ * to provide URI filtering service should inherit from this abstract
+ * class and provide a concrete implementation.
+ *
+ * All inheriting classes need to implement the pure virtual function
+ * filterURI.
+ *
+ * @short Abstract class for URI filter plugins.
+ */
+class KIO_EXPORT KURIFilterPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructs a filter plugin with a given name and
+ * priority.
+ *
+ * @param parent the parent object, or 0 for no parent
+ * @param name the name of the plugin, or 0 for no name
+ * @param pri the priority of the plugin.
+ */
+ KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
+
+ /**
+ * Returns the filter's name.
+ *
+ * @return A string naming the filter.
+ */
+ virtual QString name() const { return m_strName; }
+
+ /**
+ * Returns the filter's priority.
+ *
+ * Each filter has an assigned priority, a float from 0 to 1. Filters
+ * with the lowest priority are first given a chance to filter a URI.
+ *
+ * @return The priority of the filter.
+ */
+ virtual double priority() const { return m_dblPriority; }
+
+ /**
+ * Filters a URI.
+ *
+ * @param data the URI data to be filtered.
+ * @return A boolean indicating whether the URI has been changed.
+ */
+ virtual bool filterURI( KURIFilterData& data ) const = 0;
+
+ /**
+ * Creates a configuration module for the filter.
+ *
+ * It is the responsibility of the caller to delete the module
+ * once it is not needed anymore.
+ *
+ * @return A configuration module, 0 if the filter isn't configurable.
+ */
+ virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
+
+ /**
+ * Returns the name of the configuration module for the filter.
+ *
+ * @return the name of a configuration module or QString::null if none.
+ */
+ virtual QString configName() const { return name(); }
+
+protected:
+
+ /**
+ * Sets the the URL in @p data to @p uri.
+ */
+ void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
+
+ /**
+ * Sets the error message in @p data to @p errormsg.
+ */
+ void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
+ data.m_strErrMsg = errmsg;
+ }
+
+ /**
+ * Sets the URI type in @p data to @p type.
+ */
+ void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
+ data.m_iType = type;
+ data.m_bChanged = true;
+ }
+
+ /**
+ * Sets the arguments and options string in @p data
+ * to @p args if any were found during filterting.
+ */
+ void setArguments( KURIFilterData& data, const QString& args ) const;
+
+ QString m_strName;
+ double m_dblPriority;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KURIFilterPluginPrivate *d;
+};
+
+
+/**
+ * A list of filter plugins.
+ */
+class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
+{
+public:
+ virtual int compareItems(Item a, Item b)
+ {
+ double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
+ return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
+ }
+
+private:
+ KURIFilterPrivate *d;
+
+};
+
+/**
+ * Manages the filtering of URIs.
+ *
+ * The intention of this plugin class is to allow people to extend the
+ * functionality of KURL without modifying it directly. This way KURL will
+ * remain a generic parser capable of parsing any generic URL that adheres
+ * to specifications.
+ *
+ * The KURIFilter class applies a number of filters to a URI and returns the
+ * filtered version whenever possible. The filters are implemented using
+ * plugins to provide easy extensibility of the filtering mechanism. New
+ * filters can be added in the future by simply inheriting from
+ * KURIFilterPlugin and implementing the KURIFilterPlugin::filterURI
+ * method.
+ *
+ * Use of this plugin-manager class is straight forward. Since it is a
+ * singleton object, all you have to do is obtain an instance by doing
+ * @p KURIFilter::self() and use any of the public member functions to
+ * preform the filtering.
+ *
+ * \b Example
+ *
+ * To simply filter a given string:
+ *
+ * \code
+ * bool filtered = KURIFilter::self()->filterURI( "kde.org" );
+ * \endcode
+ *
+ * You can alternatively use a KURL:
+ *
+ * \code
+ * KURL url = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( url );
+ * \endcode
+ *
+ * If you have a constant string or a constant URL, simply invoke the
+ * corresponding function to obtain the filtered string or URL instead
+ * of a boolean flag:
+ *
+ * \code
+ * QString u = KURIFilter::self()->filteredURI( "kde.org" );
+ * \endcode
+ *
+ * You can also restrict the filter(s) to be used by supplying
+ * the name of the filter(s) to use. By defualt all available
+ * filters will be used. To use specific filters, add the names
+ * of the filters you want to use to a QStringList and invoke
+ * the appropriate filtering function. The examples below show
+ * the use of specific filters. The first one uses a single
+ * filter called kshorturifilter while the second example uses
+ * multiple filters:
+ *
+ * \code
+ * QString text = "kde.org";
+ * bool filtered = KURIFilter::self()->filterURI( text, "kshorturifilter" );
+ * \endcode
+ *
+ * \code
+ * QStringList list;
+ * list << "kshorturifilter" << "localdomainfilter";
+ * bool filtered = KURIFilter::self()->filterURI( text, list );
+ * \endcode
+ *
+ * KURIFilter also allows richer data exchange through a simple
+ * meta-object called @p KURIFilterData. Using this meta-object
+ * you can find out more information about the URL you want to
+ * filter. See KURIFilterData for examples and details.
+ *
+ * @short Filters a given URL into its proper format whenever possible.
+ */
+
+class KIO_EXPORT KURIFilter
+{
+public:
+ /**
+ * Destructor
+ */
+ ~KURIFilter ();
+
+ /**
+ * Returns an instance of KURIFilter.
+ */
+ static KURIFilter* self();
+
+ /**
+ * Filters the URI given by the object URIFilterData.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param data object that contains the URI to be filtered.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters the URI given by the URL.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Filters a string representing a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return a boolean indicating whether the URI has been changed
+ */
+ bool filterURI( QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Returns the filtered URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri The URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return a filtered string representation of a URI.
+ *
+ * The given URL is filtered based on the specified list of filters.
+ * If the list is empty all available filters would be used.
+ *
+ * @param uri the URI to filter.
+ * @param filters specify the list of filters to be used.
+ *
+ * @return the filtered URI or null if it cannot be filtered
+ */
+ QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
+
+ /**
+ * Return an iterator to iterate over all loaded
+ * plugins.
+ *
+ * @return a plugin iterator.
+ */
+ QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
+
+ /**
+ * Return a list of the names of all loaded plugins.
+ *
+ * @return a QStringList of plugin names
+ * @since 3.1
+ */
+ QStringList pluginNames() const;
+
+protected:
+
+ /**
+ * A protected constructor.
+ *
+ * This constructor creates a KURIFilter and
+ * initializes all plugins it can find by invoking
+ * loadPlugins.
+ */
+ KURIFilter();
+
+ /**
+ * Loads all allowed plugins.
+ *
+ * This function loads all filters that have not
+ * been disbled.
+ */
+ void loadPlugins();
+
+private:
+ static KURIFilter *s_self;
+ KURIFilterPluginList m_lstPlugins;
+ KURIFilterPrivate *d;
+};
+
+#endif
diff --git a/python/pykde/importTest.py b/python/pykde/importTest.py
new file mode 100644
index 00000000..9f457719
--- /dev/null
+++ b/python/pykde/importTest.py
@@ -0,0 +1,22 @@
+print "\nTesting PyKDE module imports\n"
+try:
+ import pykdeconfig
+except:
+ print "Can't find pykdeconfig.py - please check installation"
+ raise
+
+pykdecfg = pykdeconfig.Configuration ()
+
+#modules = ["dcop", "kdecore", "kdesu", "kdefx", "kdeui", "kio", "kfile", "kparts", "khtml", "kjs", "kspell", "kdeprint"]
+print "Modules built:"
+print " ",pykdecfg.pykde_modules
+print
+print "Importing:"
+print
+
+for mod in pykdecfg.pykde_modules.split():
+ print mod
+ if mod != "kdesu":
+ exec ("import " + mod)
+
+print
diff --git a/python/pykde/postproc b/python/pykde/postproc
new file mode 100755
index 00000000..db795ca6
--- /dev/null
+++ b/python/pykde/postproc
@@ -0,0 +1,520 @@
+#!/usr/bin/python
+
+import sys, getopt, os, os.path, fnmatch, string, StringIO
+
+#---------- globals ----------
+
+FALSE = 0
+TRUE = not FALSE
+
+ops = ['tr', 'qtNoTr', 'shpix', 'notify', 'varhier', 'appQuit', "kjsfix", "fixQVariant", "fixSignal"]
+operation = ''
+opPath = ''
+pattern = ''
+
+
+# --------- support functions ----------
+
+def getOptions ():
+ global pattern
+ arglist = sys.argv [1:]
+ shortOptions = "p:o:"
+ longOptions = "path= op="
+
+ try:
+ optlist, args = getopt.getopt (arglist, shortOptions, longOptions)
+ except getopt.GetoptError:
+ optlist = []
+ args = []
+
+ if (optlist == []) or (len (args) != 1):
+ print '\nUsage: postproc -p<path> -o<operation> <filespec>\n'
+ return FALSE
+
+ pattern = args [0]
+ return checkOptions (optlist)
+
+def checkOptions (optlist):
+ havePath = FALSE
+ haveOp = FALSE
+
+ for pair in optlist:
+ if (pair [0] == '--path') or (pair [0] == '-p'):
+ if not checkPath (pair [1]):
+ print '\nPath ' + pair [1] + ' does not exist\n'
+ else:
+ havePath = TRUE
+
+ elif (pair [0] == '--op') or (pair [0] == '-o'):
+ if not checkOp (pair [1]):
+ print '\nOperation ' + pair [1] + ' does not exist\n'
+ else:
+ haveOp = TRUE
+
+ return havePath and haveOp
+
+def checkPath (path):
+ global opPath
+ if not os.path.exists (path):
+ return FALSE
+
+ opPath = path
+ if not (opPath [-1] == '/'):
+ opPath = opPath + '/'
+
+ return TRUE
+
+
+def checkOp (op):
+ global operation
+ if not op in ops:
+ return FALSE
+
+ operation = op
+ return TRUE
+
+def getFilelist ():
+ filelist = []
+ tmpfilelist = os.listdir (opPath)
+ for fn in tmpfilelist:
+ if fnmatch.fnmatchcase (fn, pattern):
+ filelist.append (fn)
+
+ return filelist
+
+# --------- operations ----------
+
+# removes sipDo_<classname>_tr and table reference ('sipName_qt_tr')
+# because KDE2 is compiled with QT_NO_TRANSLATION defined (which also
+# makes QObject::tr methods invisible to any KDE2 QObject descendants)
+
+def trFix (filelist):
+ for fn in filelist:
+ m = open (opPath + fn, 'r')
+ tmpname = os.path.splitext (fn) [0] + '.tmp'
+ tmp = StringIO.StringIO ()
+
+ buff = m.readlines ()
+ m.close ()
+
+ i = 0
+ nLines = len (buff)
+
+ # skip leading comments
+ while (i < nLines) and (buff [i][0:1] == '//'):
+ tmp.write (buff [i])
+ i = i + 1
+
+ # find classname
+ while (i < nLines) and (not string.find (buff [i], 'PyObject *sipClass_') == 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ if i >= nLines: # no classname - don't bother
+ tmp.close ()
+ continue
+
+ classname = buff [i][19:-2]
+
+ trStr = 'static PyObject *sipDo_' + classname + '_tr(PyObject *sipThisObj,PyObject *sipArgs)\n'
+
+ while (i < nLines) and (buff [i] != trStr):
+ tmp.write (buff [i])
+ i = i + 1
+
+ if i >= nLines: # no sipDo_*_tr - done
+ tmp.close ()
+ continue
+
+ # skip over this method without writing it out
+ while (i < nLines) and (buff [i][0] != '}'):
+ i = i + 1
+
+ i = i + 1 # skip the '}' too
+
+
+ while (i < nLines):
+ # skip sipName_qt_tr table entry/write out everything else
+ if string.find (buff [i], '{sipName_qt_tr') < 0:
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmpfile = open (opPath + tmpname, 'w')
+ tmpfile.write (tmp.getvalue ())
+ tmpfile.close ()
+ tmp.close ()
+ os.unlink (opPath + fn)
+ os.rename (opPath + tmpname, opPath + fn)
+
+ return TRUE
+
+def qtNoTr (filelist):
+ for fn in filelist:
+ m = open (opPath + fn, 'r')
+ tmpname = os.path.splitext (fn) [0] + '.tmp'
+ tmp = StringIO.StringIO ()
+
+ buff = m.readlines ()
+ m.close ()
+
+ i = 0
+ nLines = len (buff)
+
+ while (i < nLines) and (string.find (buff [i], 'Q_OBJECT') < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmp.write ("#define QT_NO_TRANSLATION\n")
+
+ while (i < nLines):
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmpfile = open (opPath + tmpname, 'w')
+ tmpfile.write (tmp.getvalue ())
+ tmpfile.close ()
+ tmp.close ()
+ os.unlink (opPath + fn)
+ os.rename (opPath + tmpname, opPath + fn)
+
+ return TRUE
+
+# changes QPaintDevice to KPixmap for two method calls
+# gcc reports QPaintDevice as "ambiguous"
+
+def shpix ():
+ # if concatenated, the sip*.cpp file doesn't exist
+ fn = ['sipkdeuiKSharedPixmap.cpp']
+ if not os.path.exists (os.path.join (opPath, fn [0])):
+ files = os.listdir (opPath)
+ fn = []
+ for file in files:
+ if string.find (file, "kdeuipart") >= 0 and file [-4:] == ".cpp":
+ fn.append (file)
+
+ if not fn:
+ return FALSE
+
+ for file in fn:
+ m = open (os.path.join (opPath, file), 'r')
+ tmpname = os.path.splitext (file) [0] + '.tmp'
+
+ buff = m.readlines ()
+ m.close ()
+
+ changed = 0
+ state = None
+ for ln in range (0, len (buff)):
+ line = buff [ln]
+ if string.find (line, "sipKSharedPixmap::resolution") >= 0:
+ state = "res"
+ elif string.find (line, "sipKSharedPixmap::setResolution") >= 0:
+ state = "setRes"
+ else:
+ state = None
+
+ if state and changed < 2:
+ changed = changed + 1
+ while "}" not in line:
+ ln = ln + 1
+ line = buff [ln]
+ if state == "res":
+ buff [ln] = string.replace (line, "QPaintDevice::resolution", "KPixmap::resolution")
+ elif state == "setRes":
+ buff [ln] = string.replace (line, "QPaintDevice::setResolution", "KPixmap::setResolution")
+
+ tmpfile = open (os.path.join (opPath, tmpname), 'w')
+ for line in buff:
+ tmpfile.write (line)
+ tmpfile.close ()
+ os.unlink (os.path.join (opPath, file))
+ os.rename (os.path.join (opPath, tmpname), os.path.join (opPath, file))
+
+ return TRUE
+
+def notify ():
+ fn = os.path.join (opPath, pattern)
+ m = open (fn, "r")
+ tmpname = fn + '.tmp'
+
+ buff = m.readlines ()
+ m.close ()
+ tmpfile = open (tmpname, 'w')
+
+ tmpBuff = []
+ flag = 0
+ for line in buff:
+ if string.find (line, "class KNotify:") >= 0:
+ flag = 1
+
+ elif flag == 1 and string.find (line, "class KNotifyWidgetBase(QWidget):") >= 0:
+ flag = 2
+
+ elif flag == 2 and string.find (line, "class KNotifyWidget(KNotifyWidgetBase):") >= 0:
+ for ln in tmpBuff:
+ tmpfile.write (ln)
+ flag = 0
+
+ if flag != 1:
+ tmpfile.write (line)
+ else:
+ tmpBuff.append (line)
+
+ tmpfile.close ()
+ os.unlink (fn)
+ os.rename (tmpname, fn)
+
+ return TRUE
+
+def varhier (filelist):
+ for fn in filelist:
+ m = open (opPath + fn, 'r')
+ tmpname = os.path.splitext (fn) [0] + '.tmp'
+ tmp = StringIO.StringIO ()
+
+ buff = m.readlines ()
+ m.close ()
+
+ i = 0
+ nLines = len (buff)
+
+ while (i < nLines) and (string.find (buff [i], 'PyMethodDef *sipClassVarHierTab_') < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ while (i < nLines) and (string.find (buff [i], "};") < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ if i < nLines:
+ flag = TRUE
+ tmp.write (buff [i] + "\n")
+ while i < nLines:
+ if not flag:
+ tmp.write (buff [i])
+
+ if flag and not ((string.find (buff [i], "};") >= 0) or (string.find (buff [i], "NULL") >= 0)):
+ flag = FALSE
+
+ i = i + 1
+
+ tmpfile = open (opPath + tmpname, 'w')
+ tmpfile.write (tmp.getvalue ())
+ tmpfile.close ()
+ tmp.close ()
+ os.unlink (opPath + fn)
+ os.rename (opPath + tmpname, opPath + fn)
+
+ return TRUE
+
+
+def appQuit (filelist):
+ for fn in filelist:
+ m = open (opPath + fn, 'r')
+ tmpname = os.path.splitext (fn) [0] + '.tmp'
+ tmp = StringIO.StringIO ()
+
+ buff = m.readlines ()
+ m.close ()
+
+ i = 0
+ nLines = len (buff)
+
+ while (i < nLines) and (string.find (buff [i], 'import libsip') < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmp.write (buff [i] + "\nfrom qt import QCloseEvent")
+ i = i + 1
+
+ while (i < nLines) and (string.find (buff [i], "class KApplication") < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ count = 0
+ while count < 2:
+ while (i < nLines) and (string.find (buff [i], "return") < 0):
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmp.write (buff [i])
+ i = i + 1
+ count = count + 1
+
+ tmp.write (\
+"""\tdef quit (self):
+\t\tk = KApplication.kApplication ()
+\t\te = QCloseEvent ()
+
+\t\tfor w in k.topLevelWidgets ():
+\t\t\tif w.inherits ("KMainWindow"):
+\t\t\t\tk.sendEvent (w, e)
+\t\t\t\tif not e.isAccepted ():
+\t\t\t\t\treturn
+
+\t\tQApplication.quit (self)
+""")
+
+ while (i < nLines):
+ tmp.write (buff [i])
+ i = i + 1
+
+ tmpfile = open (opPath + tmpname, 'w')
+ tmpfile.write (tmp.getvalue ())
+ tmpfile.close ()
+ tmp.close ()
+ os.unlink (opPath + fn)
+ os.rename (opPath + tmpname, opPath + fn)
+
+ return True
+
+def fixQVariant ():
+ infile = os.path.join (opPath, "sipkdecorecmodule.cpp")
+ if not os.path.exists (infile):
+ infile = os.path.join (opPath, "sipkdecorepart0.cpp")
+ if not os.path.exists (infile):
+ return TRUE
+
+ m = open (infile, "r")
+ n = open (infile + ".new", "w")
+ looking = True
+ for line in m:
+ if looking and line.find ("sipAPIkdecore.h") > 0:
+ n.write (line)
+ n.write ('\n#include "sipqtQVariant.h"\n\n')
+ looking = False
+ continue
+
+ n.write (line)
+
+ m.close ()
+ n.close ()
+ os.unlink (infile)
+ os.rename (infile + ".new", infile)
+
+ return TRUE
+
+def fixSignal (filelist):
+ for file in filelist:
+ if file [-1] == "h":
+ times = 1
+ else:
+ times = 2
+
+ infile = os.path.join (opPath, file)
+ m = open (infile, "r")
+ n = open (infile + ".new", "w")
+
+ count = 0
+ for line in m:
+ if count < times:
+ if string.find (line, "proxySlot(unsigned long)") > 0\
+ or string.find (line, "proxySlot(unsigned long a0)") > 0:
+ line = string.replace (line, "unsigned long", "WId")
+ count = count + 1
+
+ n.write (line)
+
+ m.close ()
+ n.close ()
+ os.unlink (infile)
+ os.rename (infile + ".new", infile)
+
+ return TRUE
+
+
+def kjsfix (filelist):
+ for fn in filelist:
+ if not os.path.exists (opPath + fn):
+ continue
+ m = open (opPath + fn, 'r')
+ tmpname = os.path.splitext (fn) [0] + '.tmp'
+
+ buff = m.readlines ()
+ m.close ()
+
+ i = 0
+ nLines = len (buff)
+
+ purevirt = ["toPrimitive", "toBoolean", "toNumber", "toString", "toObject"]
+
+ while (i < nLines):
+ if string.find (buff [i], "KJS::ExecState") >= 0:
+ for pv in purevirt:
+ if string.find (buff [i], pv) >= 0:
+ i = i + 2
+ buff [i] = "\t\treturn KJS::ObjectImp::%s(a0);" % pv
+ i = i + 1
+ while string.find (buff [i], "}") < 0:
+ buff [i] = ""
+ i = i + 1
+ break
+ i = i + 1
+
+ tmpfile = open (opPath + tmpname, 'w')
+ i = 0
+ while (i < nLines):
+ tmpfile.write (buff [i])
+ i = i + 1
+ tmpfile.close ()
+ os.unlink (opPath + fn)
+ os.rename (opPath + tmpname, opPath + fn)
+
+ return TRUE
+
+# --------- main ----------
+
+if not getOptions ():
+ sys.exit (-1)
+
+if operation != "shpix":
+ filelist = getFilelist ()
+ if filelist == []:
+ sys.exit (0)
+
+if operation == "tr":
+ if not trFix (filelist):
+ print 'operation error -- tr'
+ sys.exit (-1)
+
+elif operation == 'qtNoTr':
+ if not qtNoTr (filelist):
+ print 'operation error -- qtNoTr'
+ sys.exit (-1)
+
+elif operation == 'shpix':
+ if not shpix ():
+ print 'operation error -- shpix'
+ sys.exit (-1)
+
+elif operation == "notify":
+ if not notify ():
+ print "operation error -- notify"
+ sys.exit (-1)
+
+elif operation == "varhier":
+ if not varhier (filelist):
+ print "operation error -- varhier"
+ sys.exit (-1)
+
+elif operation == "appQuit":
+ if not appQuit (filelist):
+ print "operation error -- appQuit"
+ sys.exit (-1)
+
+elif operation == "kjsfix":
+ if not kjsfix (filelist):
+ print "operation error -- kjsfix"
+ sys.exit (-1)
+
+elif operation == "fixQVariant":
+ if not fixQVariant ():
+ print "operation error -- fixQVariant"
+ sys.exit (-1)
+
+elif operation == "fixSignal":
+ if not fixSignal (filelist):
+ print "operation error -- fixSignal"
+ sys.exit (-1)
+
+sys.exit (0)
diff --git a/python/pykde/pykde350.prj b/python/pykde/pykde350.prj
new file mode 100644
index 00000000..190af995
--- /dev/null
+++ b/python/pykde/pykde350.prj
@@ -0,0 +1,495 @@
+
+// Copyright 2002-2003 Jim Bublitz <jbublitz@nwinternet.com>
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 331, Boston, MA 02111-1307, USA.
+
+
+// project file for PyKDE
+// ----------------------
+
+
+// ------------- project data ---------------
+
+project = PyKDE
+
+destination = /home/jim/PyKDE350
+source = /server/source/KDESrc/kdelibs-3.5.0
+compare = /opt/kde3/include
+importpath = /usr/share/sip
+prevpath = /home/jim/PyKDE/sip
+
+version = KDE_3_5_0
+secondary = WS_X11
+previous = KDE_3_4_3
+
+license = GPL
+copyright =
+
+
+// ------------- module data ----------------
+
+module = dcop
+
+timeline = KDE_3_0_0 KDE_3_0_1 KDE_3_0_3 KDE_3_1_0 KDE_3_1_1 KDE_3_1_2 KDE_3_1_3 KDE_3_1_4 KDE_3_1_5 KDE_3_2_0 KDE_3_2_1 KDE_3_2_2 KDE_3_2_3 KDE_3_3_0 KDE_3_3_1 KDE_3_3_2 KDE_3_4_0 KDE_3_4_1 KDE_3_4_2 KDE_3_4_3 KDE_3_5_0
+source = $SRC/dcop $DST/extra/kde350/dcop
+ignore = dcopc.h dcopserver.h dcopsignals.h kdatastream.h dcoptypes.h
+compare = $COMP $DST/extra/kde350/dcop
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+importpath = $IMP
+sipslot = callBackObj callBackSlot dcopClient
+include = ../extra/kde350/dcop
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP
+define = "KDE_DEPRECATED", ""
+define = "DCOP_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdecore
+
+//trace = kapplication.h
+
+source = $SRC/kdecore
+ignore = netwm_p.h kde_dmalloc.h kunload.h kdatastream.h ksockaddr.h kextsock.h ksocks.h
+ignore = ksycocaentry.h ksycocafactory.h ksycocatype.h ksycoca.h kapp.h kstandarddirs.h
+ignore = kgenericfactory.h ktypelist.h kvmallocator.h ksortablevaluelist.h
+ignore = kextendedsocket.h klargefile.h kdebug.h kdebugclasses.h kxmessages.h kaccelmanager.h
+ignore = kdemacros.h kxerrorhandler.h fixx11.h kuser.h kuniqueapp.h kde_file.h kdelibs_export.h
+ignore = kswap.h
+compare = $COMP $DST/extra/kde350
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+importpath = $IMP
+include =
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -ldcopcmodule
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = pObjSlot psMethodSlot kaccel kglobalaccel
+define = "Q_WS_X11", "1"
+define = "\(Qt::ALT \<\< 1\)", "16777216"
+define = "\(Qt::META\)", "16777216"
+define = "enum\ URIMode\ m_iUriMode\ \:\ 3\;", ""
+define = "Q_INT32", "long"
+define = "Q_UINT32", "ulong"
+define = "Q_INT64", "longlong"
+define = "Q_UINT64", "ulonglong"
+define = "mutable union", "union"
+define = "KDECORE_EXPORT", ""
+define = "KDE_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kdesu
+
+source = $SRC/kdesu
+ignore =
+compare = $COMP/kdesu
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdesu
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -lkdesu -ldcopcmodule -lkdecorecmodule
+
+retain
+
+
+// -----------------------------------------
+
+module = kdefx
+
+ignore =
+source = $SRC/kdefx
+compare = $COMP
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdefx -lkdeui -lkdecore -lkdecorecmodule -ldcopcmodule
+define = "KDEFX_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdeui
+
+//trace = kactioncollection.sip
+
+source = $SRC/kdeui/
+ignore = kcolorbutton.h kcolordlg.h kwidgetid.h kaccelgen.h kdatepik.h kdualcolorbtn.h kxmlgui.h kdockwidget_p.h
+ignore = kdockwindow.h ksconfig.h kspell.h kspelldlg.h klistviewlineedit.h ksyntaxhighlighter.h ksharedpixmap.h
+compare = $COMP
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+importpath = $IMP
+include = ../dcop ../kdecore ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize
+amend = * ctor parent /TransferThis/
+amend = KDockMainWindow all parent /TransferThis/
+amend = KDockArea all parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = receiver member kaccelmenu
+sipslot = receiver slot kaction kactionclasses kbuttonbox ktoolbar
+sipslot = recvr slot kstdaction
+define = "QT_VERSION", "301"
+define = "KDEUI_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kio
+
+source = $SRC/kio/kio $DST/extra/kde350/kio
+ignore = kmdbase.h uiserver_stub.h kdirnotify_stub.h uiserver.h http_slave_defaults.h ioslave_defaults.h
+ignore = kmimetyperesolver.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../extra/kde350/kio @KDE_INCLUDEPATH@/kio ../kdecore
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule
+sipslot =
+define = "\(KIO::filesize_t\)\-1", "-1"
+define = "KIO_EXPORT_DEPRECATED", ""
+define = "KIO_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kresources
+
+source = $SRC/kresources
+ignore =
+compare = $COMP $COMP/kresources
+subst =
+ignore = manager.h manageriface.h managerimpl.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkresources
+define = "KDE_DEPRECATED", ""
+define = "KRESOURCES_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kabc
+
+source = $SRC/kabc
+ignore =
+compare = $COMP $COMP/kabc
+subst =
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+import = kresourcesmod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkabc
+define = "KDE_DEPRECATED", ""
+define = "KABC_EXPORT", ""
+define = "typedef enum", "enum"
+
+retain
+
+// -----------------------------------------
+
+module = kutils
+
+source = $SRC/kutils/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde350
+ignore = kcmodulecontainer.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkutils
+define = "class\ KMultiTabBarButton\ \*", "KMultiTabBarButton *"
+define = "class\ KMultiTabBarTab\ \*", "KMultiTabBarTab *"
+
+retain
+
+// -----------------------------------------
+
+module = kfile
+
+source = $SRC/kio/kfile
+ignore = kpropsdlg.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = kparts
+
+source = $SRC/kparts
+ignore = componentfactory.h
+compare = $COMP/kparts
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kparts @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkparts -lkdeui -lkdecore -lkio -lkdeuicmodule\
+ -lkdecorecmodule -lkiocmodule -ldcopcmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = khtml
+
+source = $SRC/khtml $SRC/khtml/dom
+ignore = khtmldefaults.h dom_core.h dom_html.h khtml_events.h
+compare = $COMP $COMP/dom
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+import = kutils
+import = kparts
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/khtml @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kparts\
+ @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeui -lkhtml -lkparts -lkdecore -lkio\
+ -lkdeuicmodule -lkdecorecmodule -lkiocmodule -lkpartscmodule -ldcopcmodule
+
+define = "KHTML_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+//module = kjs
+
+//source = $SRC/kjs
+//ignore = global.h
+//compare = $COMP/kjs $DST/extra/kde350
+//subst = $DST/extra/kde350
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcop
+//import = kdecore
+//import = kdefx
+//import = kdeui
+//import = kio
+//import = kparts
+//import = khtml
+//importpath = $IMP
+//include = @KDE_INCLUDEPATH@/kjs @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kio\
+// ../kdecore ../kio
+//amend = * ctor parent /TransferThis/
+//amend = * all parent /Transfer/
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkjs -lkdeui -lkdecore -lkio -lkhtml\
+// -lkdeuicmodule -lkdecorecmodule -lkhtmlcmodule -lkiocmodule -ldcopcmodule
+
+//retain
+
+// -----------------------------------------
+
+module = kspell
+
+ignore =
+source = $DST/extra/kde350/kspell
+compare = $COMP
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kfile
+importpath = $IMP
+include = ../kdecore @KDE_INCLUDEPATH@/kio
+amend = * ctor parent /TransferThis/ const KGuiItem& nullGuiItem (QString::null);
+
+amend = * all parent /Transfer/
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkspell -lkdeui -lkdecore -lkio\
+ -lkdecorecmodule -lkdeuicmodule -lkfilecmodule -ldcopcmodule
+sipslot = obj slot kspell
+
+code
+%PrePythonCode
+import kfile
+%End
+end
+
+retain
+
+// -----------------------------------------
+
+module = kdeprint
+
+ignore = driver.h
+source = $SRC/kdeprint
+compare = $COMP $COMP/kdeprint
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeprint -lkdecore -lkdecorecmodule\
+ -ldcopcmodule -lkdeui -lkdeuicmodule
+define = "KDEPRINT_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kmdi
+
+source = $SRC/kmdi/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde350
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+ignore = kmdiiterator.h kmdilistiterator.h kmdinulliterator.h
+
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkmdi
+define = "QT_VERSION", "301"
+define = "QMainWindow::ToolBarDock", "Qt::Dock"
+
+retain
+
+
+// -----------------------------------------
+
+//module = kspell2
+
+//source = $SRC/kspell2/
+//ignore =
+//compare = $COMP
+//subst = $DST/extra/kde350
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcopmod.sip
+//import = kdecoremod.sip
+//import = qtxmlmod.sip
+//import = kdefxmod.sip
+//import = kdeuimod.sip
+////import = kiomod.sip
+////import = kfilemod.sip
+////import = kpartsmod.sip
+//importpath = $IMP
+//include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+// -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+// -lkspell2
+//
+//retain
+
+
+ // ------------- build data -----------------
+
+//build
+
+//release = 3.7-1
+//version = 3.7
+//usingQt
+//usingKDE
+
+
diff --git a/python/pykde/pykde351.prj b/python/pykde/pykde351.prj
new file mode 100644
index 00000000..98276cbe
--- /dev/null
+++ b/python/pykde/pykde351.prj
@@ -0,0 +1,495 @@
+
+// Copyright 2002-2003 Jim Bublitz <jbublitz@nwinternet.com>
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 331, Boston, MA 02111-1307, USA.
+
+
+// project file for PyKDE
+// ----------------------
+
+
+// ------------- project data ---------------
+
+project = PyKDE
+
+destination = /home/jim/PyKDE351
+source = /server/source/KDESrc/kdelibs-3.5.1
+compare = /opt/kde3/include
+importpath = /usr/share/sip
+prevpath = /home/jim/PyKDE/sip
+
+version = KDE_3_5_1
+secondary = WS_X11
+previous = KDE_3_5_0
+
+license = GPL
+copyright =
+
+
+// ------------- module data ----------------
+
+module = dcop
+
+timeline = KDE_3_0_0 KDE_3_0_1 KDE_3_0_3 KDE_3_1_0 KDE_3_1_1 KDE_3_1_2 KDE_3_1_3 KDE_3_1_4 KDE_3_1_5 KDE_3_2_0 KDE_3_2_1 KDE_3_2_2 KDE_3_2_3 KDE_3_3_0 KDE_3_3_1 KDE_3_3_2 KDE_3_4_0 KDE_3_4_1 KDE_3_4_2 KDE_3_4_3 KDE_3_5_0 KDE_3_5_1
+source = $SRC/dcop $DST/extra/kde351/dcop
+ignore = dcopc.h dcopserver.h dcopsignals.h kdatastream.h dcoptypes.h
+compare = $COMP $DST/extra/kde351/dcop
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+importpath = $IMP
+sipslot = callBackObj callBackSlot dcopClient
+include = ../extra/kde351/dcop
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP
+define = "KDE_DEPRECATED", ""
+define = "DCOP_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdecore
+
+//trace = kapplication.h
+
+source = $SRC/kdecore
+ignore = netwm_p.h kde_dmalloc.h kunload.h kdatastream.h ksockaddr.h kextsock.h ksocks.h
+ignore = ksycocaentry.h ksycocafactory.h ksycocatype.h ksycoca.h kapp.h kstandarddirs.h
+ignore = kgenericfactory.h ktypelist.h kvmallocator.h ksortablevaluelist.h
+ignore = kextendedsocket.h klargefile.h kdebug.h kdebugclasses.h kxmessages.h kaccelmanager.h
+ignore = kdemacros.h kxerrorhandler.h fixx11.h kuser.h kuniqueapp.h kde_file.h kdelibs_export.h
+ignore = kswap.h
+compare = $COMP $DST/extra/kde351
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+importpath = $IMP
+include =
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -ldcopcmodule
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = pObjSlot psMethodSlot kaccel kglobalaccel
+define = "Q_WS_X11", "1"
+define = "\(Qt::ALT \<\< 1\)", "16777216"
+define = "\(Qt::META\)", "16777216"
+define = "enum\ URIMode\ m_iUriMode\ \:\ 3\;", ""
+define = "Q_INT32", "long"
+define = "Q_UINT32", "ulong"
+define = "Q_INT64", "longlong"
+define = "Q_UINT64", "ulonglong"
+define = "mutable union", "union"
+define = "KDECORE_EXPORT", ""
+define = "KDE_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kdesu
+
+source = $SRC/kdesu
+ignore =
+compare = $COMP/kdesu
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdesu
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -lkdesu -ldcopcmodule -lkdecorecmodule
+
+retain
+
+
+// -----------------------------------------
+
+module = kdefx
+
+ignore =
+source = $SRC/kdefx
+compare = $COMP
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdefx -lkdeui -lkdecore -lkdecorecmodule -ldcopcmodule
+define = "KDEFX_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdeui
+
+//trace = kactioncollection.sip
+
+source = $SRC/kdeui/
+ignore = kcolorbutton.h kcolordlg.h kwidgetid.h kaccelgen.h kdatepik.h kdualcolorbtn.h kxmlgui.h kdockwidget_p.h
+ignore = kdockwindow.h ksconfig.h kspell.h kspelldlg.h klistviewlineedit.h ksyntaxhighlighter.h ksharedpixmap.h
+compare = $COMP
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+importpath = $IMP
+include = ../dcop ../kdecore ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize
+amend = * ctor parent /TransferThis/
+amend = KDockMainWindow all parent /TransferThis/
+amend = KDockArea all parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = receiver member kaccelmenu
+sipslot = receiver slot kaction kactionclasses kbuttonbox ktoolbar
+sipslot = recvr slot kstdaction
+define = "QT_VERSION", "301"
+define = "KDEUI_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kio
+
+source = $SRC/kio/kio $DST/extra/kde351/kio
+ignore = kmdbase.h uiserver_stub.h kdirnotify_stub.h uiserver.h http_slave_defaults.h ioslave_defaults.h
+ignore = kmimetyperesolver.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../extra/kde351/kio @KDE_INCLUDEPATH@/kio ../kdecore
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule
+sipslot =
+define = "\(KIO::filesize_t\)\-1", "-1"
+define = "KIO_EXPORT_DEPRECATED", ""
+define = "KIO_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kresources
+
+source = $SRC/kresources
+ignore =
+compare = $COMP $COMP/kresources
+subst =
+ignore = manager.h manageriface.h managerimpl.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkresources
+define = "KDE_DEPRECATED", ""
+define = "KRESOURCES_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kabc
+
+source = $SRC/kabc $SRC/kabc/plugins/file
+ignore =
+compare = $COMP $COMP/kabc
+subst =
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+import = kresourcesmod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkabc -lkabc_file
+define = "KDE_DEPRECATED", ""
+define = "KABC_EXPORT", ""
+define = "typedef enum", "enum"
+
+retain
+
+// -----------------------------------------
+
+module = kutils
+
+source = $SRC/kutils/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde351
+ignore = kcmodulecontainer.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkutils
+define = "class\ KMultiTabBarButton\ \*", "KMultiTabBarButton *"
+define = "class\ KMultiTabBarTab\ \*", "KMultiTabBarTab *"
+
+retain
+
+// -----------------------------------------
+
+module = kfile
+
+source = $SRC/kio/kfile
+ignore = kpropsdlg.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = kparts
+
+source = $SRC/kparts
+ignore = componentfactory.h
+compare = $COMP/kparts
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kparts @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkparts -lkdeui -lkdecore -lkio -lkdeuicmodule\
+ -lkdecorecmodule -lkiocmodule -ldcopcmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = khtml
+
+source = $SRC/khtml $SRC/khtml/dom
+ignore = khtmldefaults.h dom_core.h dom_html.h khtml_events.h
+compare = $COMP $COMP/dom
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+import = kutils
+import = kparts
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/khtml @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kparts\
+ @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeui -lkhtml -lkparts -lkdecore -lkio\
+ -lkdeuicmodule -lkdecorecmodule -lkiocmodule -lkpartscmodule -ldcopcmodule
+
+define = "KHTML_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+//module = kjs
+
+//source = $SRC/kjs
+//ignore = global.h
+//compare = $COMP/kjs $DST/extra/kde351
+//subst = $DST/extra/kde351
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcop
+//import = kdecore
+//import = kdefx
+//import = kdeui
+//import = kio
+//import = kparts
+//import = khtml
+//importpath = $IMP
+//include = @KDE_INCLUDEPATH@/kjs @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kio\
+// ../kdecore ../kio
+//amend = * ctor parent /TransferThis/
+//amend = * all parent /Transfer/
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkjs -lkdeui -lkdecore -lkio -lkhtml\
+// -lkdeuicmodule -lkdecorecmodule -lkhtmlcmodule -lkiocmodule -ldcopcmodule
+
+//retain
+
+// -----------------------------------------
+
+module = kspell
+
+ignore =
+source = $DST/extra/kde351/kspell
+compare = $COMP
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kfile
+importpath = $IMP
+include = ../kdecore @KDE_INCLUDEPATH@/kio
+amend = * ctor parent /TransferThis/ const KGuiItem& nullGuiItem (QString::null);
+
+amend = * all parent /Transfer/
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkspell -lkdeui -lkdecore -lkio\
+ -lkdecorecmodule -lkdeuicmodule -lkfilecmodule -ldcopcmodule
+sipslot = obj slot kspell
+
+code
+%PrePythonCode
+import kfile
+%End
+end
+
+retain
+
+// -----------------------------------------
+
+module = kdeprint
+
+ignore = driver.h
+source = $SRC/kdeprint
+compare = $COMP $COMP/kdeprint
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeprint -lkdecore -lkdecorecmodule\
+ -ldcopcmodule -lkdeui -lkdeuicmodule
+define = "KDEPRINT_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kmdi
+
+source = $SRC/kmdi/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde351
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+ignore = kmdiiterator.h kmdilistiterator.h kmdinulliterator.h
+
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkmdi
+define = "QT_VERSION", "301"
+define = "QMainWindow::ToolBarDock", "Qt::Dock"
+
+retain
+
+
+// -----------------------------------------
+
+//module = kspell2
+
+//source = $SRC/kspell2/
+//ignore =
+//compare = $COMP
+//subst = $DST/extra/kde351
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcopmod.sip
+//import = kdecoremod.sip
+//import = qtxmlmod.sip
+//import = kdefxmod.sip
+//import = kdeuimod.sip
+////import = kiomod.sip
+////import = kfilemod.sip
+////import = kpartsmod.sip
+//importpath = $IMP
+//include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+// -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+// -lkspell2
+//
+//retain
+
+
+ // ------------- build data -----------------
+
+//build
+
+//release = 3.7-1
+//version = 3.7
+//usingQt
+//usingKDE
+
+
diff --git a/python/pykde/pykde352.prj b/python/pykde/pykde352.prj
new file mode 100644
index 00000000..7d6d3905
--- /dev/null
+++ b/python/pykde/pykde352.prj
@@ -0,0 +1,495 @@
+
+// Copyright 2002-2003 Jim Bublitz <jbublitz@nwinternet.com>
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 331, Boston, MA 02111-1307, USA.
+
+
+// project file for PyKDE
+// ----------------------
+
+
+// ------------- project data ---------------
+
+project = PyKDE
+
+destination = /home/jim/PyKDE352
+source = /server/source/KDESrc/kdelibs-3.5.2
+compare = /opt/kde3/include
+importpath = /usr/share/sip
+prevpath = /home/jim/PyKDE/sip
+
+version = KDE_3_5_2
+secondary = WS_X11
+previous = KDE_3_5_1
+
+license = GPL
+copyright =
+
+
+// ------------- module data ----------------
+
+module = dcop
+
+timeline = KDE_3_0_0 KDE_3_0_1 KDE_3_0_3 KDE_3_1_0 KDE_3_1_1 KDE_3_1_2 KDE_3_1_3 KDE_3_1_4 KDE_3_1_5 KDE_3_2_0 KDE_3_2_1 KDE_3_2_2 KDE_3_2_3 KDE_3_3_0 KDE_3_3_1 KDE_3_3_2 KDE_3_4_0 KDE_3_4_1 KDE_3_4_2 KDE_3_4_3 KDE_3_5_0 KDE_3_5_1 KDE_3_5_2
+source = $SRC/dcop $DST/extra/kde352/dcop
+ignore = dcopc.h dcopserver.h dcopsignals.h kdatastream.h dcoptypes.h
+compare = $COMP $DST/extra/kde352/dcop
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+importpath = $IMP
+sipslot = callBackObj callBackSlot dcopClient
+include = ../extra/kde352/dcop
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP
+define = "KDE_DEPRECATED", ""
+define = "DCOP_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdecore
+
+//trace = kapplication.h
+
+source = $SRC/kdecore
+ignore = netwm_p.h kde_dmalloc.h kunload.h kdatastream.h ksockaddr.h kextsock.h ksocks.h
+ignore = ksycocaentry.h ksycocafactory.h ksycocatype.h ksycoca.h kapp.h kstandarddirs.h
+ignore = kgenericfactory.h ktypelist.h kvmallocator.h ksortablevaluelist.h
+ignore = kextendedsocket.h klargefile.h kdebug.h kdebugclasses.h kxmessages.h kaccelmanager.h
+ignore = kdemacros.h kxerrorhandler.h fixx11.h kuser.h kuniqueapp.h kde_file.h kdelibs_export.h
+ignore = kswap.h
+compare = $COMP $DST/extra/kde352
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+importpath = $IMP
+include =
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -ldcopcmodule
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = pObjSlot psMethodSlot kaccel kglobalaccel
+define = "Q_WS_X11", "1"
+define = "\(Qt::ALT \<\< 1\)", "16777216"
+define = "\(Qt::META\)", "16777216"
+define = "enum\ URIMode\ m_iUriMode\ \:\ 3\;", ""
+define = "Q_INT32", "long"
+define = "Q_UINT32", "ulong"
+define = "Q_INT64", "longlong"
+define = "Q_UINT64", "ulonglong"
+define = "mutable union", "union"
+define = "KDECORE_EXPORT", ""
+define = "KDE_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kdesu
+
+source = $SRC/kdesu
+ignore =
+compare = $COMP/kdesu
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdesu
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdecore -lkdesu -ldcopcmodule -lkdecorecmodule
+
+retain
+
+
+// -----------------------------------------
+
+module = kdefx
+
+ignore =
+source = $SRC/kdefx
+compare = $COMP
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdefx -lkdeui -lkdecore -lkdecorecmodule -ldcopcmodule
+define = "KDEFX_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kdeui
+
+//trace = kactioncollection.sip
+
+source = $SRC/kdeui/
+ignore = kcolorbutton.h kcolordlg.h kwidgetid.h kaccelgen.h kdatepik.h kdualcolorbtn.h kxmlgui.h kdockwidget_p.h
+ignore = kdockwindow.h ksconfig.h kspell.h kspelldlg.h klistviewlineedit.h ksyntaxhighlighter.h ksharedpixmap.h
+compare = $COMP
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+importpath = $IMP
+include = ../dcop ../kdecore ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize
+amend = * ctor parent /TransferThis/
+amend = KDockMainWindow all parent /TransferThis/
+amend = KDockArea all parent /TransferThis/
+amend = * all parent /Transfer/
+sipslot = receiver member kaccelmenu
+sipslot = receiver slot kaction kactionclasses kbuttonbox ktoolbar
+sipslot = recvr slot kstdaction
+define = "QT_VERSION", "301"
+define = "KDEUI_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kio
+
+source = $SRC/kio/kio $DST/extra/kde352/kio
+ignore = kmdbase.h uiserver_stub.h kdirnotify_stub.h uiserver.h http_slave_defaults.h ioslave_defaults.h
+ignore = kmimetyperesolver.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../extra/kde352/kio @KDE_INCLUDEPATH@/kio ../kdecore
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule
+sipslot =
+define = "\(KIO::filesize_t\)\-1", "-1"
+define = "KIO_EXPORT_DEPRECATED", ""
+define = "KIO_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kresources
+
+source = $SRC/kresources
+ignore =
+compare = $COMP $COMP/kresources
+subst =
+ignore = manager.h manageriface.h managerimpl.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkresources
+define = "KDE_DEPRECATED", ""
+define = "KRESOURCES_EXPORT", ""
+
+retain
+
+// -----------------------------------------
+
+module = kabc
+
+source = $SRC/kabc $SRC/kabc/plugins/file
+ignore =
+compare = $COMP $COMP/kabc
+subst =
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+import = kiomod.sip
+import = kresourcesmod.sip
+importpath = $IMP
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lkabc -lkabc_file
+define = "KDE_DEPRECATED", ""
+define = "KABC_EXPORT", ""
+define = "typedef enum", "enum"
+
+retain
+
+// -----------------------------------------
+
+module = kutils
+
+source = $SRC/kutils/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde352
+ignore = kcmodulecontainer.h
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkutils
+define = "class\ KMultiTabBarButton\ \*", "KMultiTabBarButton *"
+define = "class\ KMultiTabBarTab\ \*", "KMultiTabBarTab *"
+
+retain
+
+// -----------------------------------------
+
+module = kfile
+
+source = $SRC/kio/kfile
+ignore = kpropsdlg.h
+compare = $COMP $COMP/kio
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkio -lkdeui -lkdecore -ldcopcmodule\
+ -lkdecorecmodule -lkdeuicmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = kparts
+
+source = $SRC/kparts
+ignore = componentfactory.h
+compare = $COMP/kparts
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/kparts @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkparts -lkdeui -lkdecore -lkio -lkdeuicmodule\
+ -lkdecorecmodule -lkiocmodule -ldcopcmodule -lkiocmodule
+
+retain
+
+// -----------------------------------------
+
+module = khtml
+
+source = $SRC/khtml $SRC/khtml/dom
+ignore = khtmldefaults.h dom_core.h dom_html.h khtml_events.h
+compare = $COMP $COMP/dom
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kio
+import = kutils
+import = kparts
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = @KDE_INCLUDEPATH@/khtml @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kparts\
+ @KDE_INCLUDEPATH@/kio ../kdecore ../kio
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeui -lkhtml -lkparts -lkdecore -lkio\
+ -lkdeuicmodule -lkdecorecmodule -lkiocmodule -lkpartscmodule -ldcopcmodule
+
+define = "KHTML_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+//module = kjs
+
+//source = $SRC/kjs
+//ignore = global.h
+//compare = $COMP/kjs $DST/extra/kde352
+//subst = $DST/extra/kde352
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcop
+//import = kdecore
+//import = kdefx
+//import = kdeui
+//import = kio
+//import = kparts
+//import = khtml
+//importpath = $IMP
+//include = @KDE_INCLUDEPATH@/kjs @KDE_INCLUDEPATH@/dom @KDE_INCLUDEPATH@/kio\
+// ../kdecore ../kio
+//amend = * ctor parent /TransferThis/
+//amend = * all parent /Transfer/
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkjs -lkdeui -lkdecore -lkio -lkhtml\
+// -lkdeuicmodule -lkdecorecmodule -lkhtmlcmodule -lkiocmodule -ldcopcmodule
+
+//retain
+
+// -----------------------------------------
+
+module = kspell
+
+ignore =
+source = $DST/extra/kde352/kspell
+compare = $COMP
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+import = kfile
+importpath = $IMP
+include = ../kdecore @KDE_INCLUDEPATH@/kio
+amend = * ctor parent /TransferThis/ const KGuiItem& nullGuiItem (QString::null);
+
+amend = * all parent /Transfer/
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkspell -lkdeui -lkdecore -lkio\
+ -lkdecorecmodule -lkdeuicmodule -lkfilecmodule -ldcopcmodule
+sipslot = obj slot kspell
+
+code
+%PrePythonCode
+import kfile
+%End
+end
+
+retain
+
+// -----------------------------------------
+
+module = kdeprint
+
+ignore = driver.h
+source = $SRC/kdeprint
+compare = $COMP $COMP/kdeprint
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = qtxmlmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcop
+import = kdecore
+import = kdefx
+import = kdeui
+importpath = $IMP
+amend = * ctor parent /TransferThis/
+amend = * all parent /Transfer/
+include = ../kdecore @KDE_INCLUDEPATH@/kdeprint
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lDCOP -lkdeprint -lkdecore -lkdecorecmodule\
+ -ldcopcmodule -lkdeui -lkdeuicmodule
+define = "KDEPRINT_EXPORT", ""
+retain
+
+// -----------------------------------------
+
+module = kmdi
+
+source = $SRC/kmdi/
+ignore =
+compare = $COMP
+subst = $DST/extra/kde352
+import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+import = dcopmod.sip
+import = kdecoremod.sip
+import = qtxmlmod.sip
+import = kdefxmod.sip
+import = kdeuimod.sip
+//import = kiomod.sip
+//import = kfilemod.sip
+//import = kpartsmod.sip
+importpath = $IMP
+ignore = kmdiiterator.h kmdilistiterator.h kmdinulliterator.h
+
+include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+ -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+ -lkmdi
+define = "QT_VERSION", "301"
+define = "QMainWindow::ToolBarDock", "Qt::Dock"
+
+retain
+
+
+// -----------------------------------------
+
+//module = kspell2
+
+//source = $SRC/kspell2/
+//ignore =
+//compare = $COMP
+//subst = $DST/extra/kde352
+//import = qtmod.sip (Qt_3_0_0 Qt_4_0_0 WS_X11)
+//import = dcopmod.sip
+//import = kdecoremod.sip
+//import = qtxmlmod.sip
+//import = kdefxmod.sip
+//import = kdeuimod.sip
+////import = kiomod.sip
+////import = kfilemod.sip
+////import = kpartsmod.sip
+//importpath = $IMP
+//include = ../dcop ../kdecore ../kdeui ../pythonize ../pykpanelapplet
+//libs = -L@BL_KDEDIR@ -lsip -lqtcmodule -lqtxmlcmodule -lDCOP -lkdecore -lkdeui\
+// -ldcopcmodule -lkdecorecmodule -lqt-mt -lkdefx -lkdefxcmodule -lpythonize -lkdeuicmodule\
+// -lkspell2
+//
+//retain
+
+
+ // ------------- build data -----------------
+
+//build
+
+//release = 3.7-1
+//version = 3.7
+//usingQt
+//usingKDE
+
+
diff --git a/python/pykde/pykdeconfig.py.in b/python/pykde/pykdeconfig.py.in
new file mode 100644
index 00000000..f56fec5d
--- /dev/null
+++ b/python/pykde/pykdeconfig.py.in
@@ -0,0 +1,207 @@
+# Copyright (c) 2004
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+# Jim Bublitz <jbublitz@nwinternet.com>
+#
+# This file is part of PyKDE.
+#
+# This copy of PyKDE is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyKDE is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyKDE; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# This module is intended to be used by the configuration scripts of extension
+# modules that %Import PyKDE modules.
+
+
+import sipconfig, pyqtconfig
+
+
+# These are installation specific values created when PyQt was configured.
+# @SIP_CONFIGURATION@
+
+
+class Configuration(pyqtconfig.Configuration):
+ """The class that represents PyQt configuration values.
+ """
+ def __init__(self, sub_cfg=None):
+ """Initialise an instance of the class.
+
+ sub_cfg is the list of sub-class configurations. It should be None
+ when called normally.
+ """
+ if sub_cfg:
+ cfg = sub_cfg
+ else:
+ cfg = []
+
+ cfg.append(_pkg_config)
+
+ pyqtconfig.Configuration.__init__(self, cfg)
+
+
+class DCOPModuleMakefile(pyqtconfig.QtModuleMakefile):
+ """The Makefile class for modules that %Import DCOP.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pykde_mod_dir)
+ self.LIBDIR.append(self.config.pykde_lib_dir)
+ self.extra_libs.append(self.module_as_lib("DCOP"))
+
+ pyqtconfig.QtModuleMakefile.finalise(self)
+
+class KdecoreModuleMakefile(DCOPModuleMakefile):
+ """The Makefile class for modules that %Import kdecore.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kdecore"))
+
+ DCOPModuleMakefile.finalise(self)
+
+class KdesuModuleMakefile(KdecoreModuleMakefile):
+ """The Makefile class for modules that %Import kdesu.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kdesu"))
+
+ KdecoreModuleMakefile.finalise(self)
+
+class KdefxModuleMakefile(KdecoreModuleMakefile):
+ """The Makefile class for modules that %Import kdefx.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kdefx"))
+
+ KdecoreModuleMakefile.finalise(self)
+
+class KdeuiModuleMakefile(KdefxModuleMakefile):
+ """The Makefile class for modules that %Import kdeui.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kdeui"))
+
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtxml"))
+
+ KdefxModuleMakefile.finalise(self)
+
+class KioModuleMakefile(KdeuiModuleMakefile):
+ """The Makefile class for modules that %Import kio.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kio"))
+
+ KdeuiModuleMakefile.finalise(self)
+
+class KfileModuleMakefile(KioModuleMakefile):
+ """The Makefile class for modules that %Import kfile.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kfile"))
+
+ KioModuleMakefile.finalise(self)
+
+class KpartsModuleMakefile(KfileModuleMakefile):
+ """The Makefile class for modules that %Import kparts.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kparts"))
+
+ KfileModuleMakefile.finalise(self)
+
+class KhtmlModuleMakefile(KpartsModuleMakefile):
+ """The Makefile class for modules that %Import khtml.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("khtml"))
+
+ KpartsModuleMakefile.finalise(self)
+
+class KjsModuleMakefile(KhtmlModuleMakefile):
+ """The Makefile class for modules that %Import kjs.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kjs"))
+
+ KjsModuleMakefile.finalise(self)
+
+class KdeprintModuleMakefile(KdeuiModuleMakefile):
+ """The Makefile class for modules that %Import kdeprint.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("kdeprint"))
+
+ KdeuiModuleMakefile.finalise(self)
diff --git a/python/pykde/sip/dcop/dcopclient.sip b/python/pykde/sip/dcop/dcopclient.sip
new file mode 100644
index 00000000..bc849687
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopclient.sip
@@ -0,0 +1,175 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class DCOPClientTransaction;
+
+class DCOPClient : QObject
+{
+%TypeHeaderCode
+#include <dcopclient.h>
+%End
+
+
+public:
+ DCOPClient ();
+ static void setServerAddress (const QCString&);
+ bool attach ();
+ void bindToApp ();
+ bool detach ();
+ bool isAttached () const;
+ bool isAttachedToForeignServer () const;
+ bool acceptCalls () const;
+ void setAcceptCalls (bool);
+
+%If ( KDE_3_0_3 - )
+ bool qtBridgeEnabled ();
+ void setQtBridgeEnabled (bool);
+%End
+
+ QCString registerAs (const QCString&, bool = 1);
+ bool isRegistered () const;
+ QCString appId () const;
+ int socket () const;
+ void suspend ();
+ void resume ();
+
+%If ( KDE_3_1_0 - )
+ bool isSuspended () const;
+%End
+
+ bool send (const QCString&, const QCString&, const QCString&, const QByteArray&);
+ bool send (const QCString&, const QCString&, const QCString&, const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool call (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/, bool, int);
+%End
+
+ bool call (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/, bool = 0);
+
+%If ( KDE_3_3_0 - )
+ int callAsync (const QCString&, const QCString&, const QCString&, const QByteArray&, QObject*, const char*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ bool findObject (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QCString& /Out/, bool, int);
+%End
+
+ bool findObject (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QCString& /Out/, bool = 0);
+ void emitDCOPSignal (const QCString&, const QCString&, const QByteArray&);
+ void emitDCOPSignal (const QCString&, const QByteArray&);
+ bool connectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, const QCString&, bool);
+ bool connectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, bool);
+ bool disconnectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, const QCString&);
+ bool disconnectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&);
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ DCOPClientTransaction* beginTransaction ();
+ void endTransaction (DCOPClientTransaction*, QCString&, QByteArray&);
+ Q_INT32 transactionId ();
+ bool isApplicationRegistered (const QCString&);
+ QCStringList registeredApplications ();
+ QCStringList remoteObjects (const QCString&, bool* = 0);
+ QCStringList remoteInterfaces (const QCString&, const QCString&, bool* = 0);
+ QCStringList remoteFunctions (const QCString&, const QCString&, bool* = 0);
+ bool receive (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/);
+ bool find (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/);
+ static QCString normalizeFunctionSignature (const QCString&);
+ QCString senderId () const;
+ void setDefaultObject (const QCString&);
+ QCString defaultObject () const;
+ void setNotifications (bool);
+ void setDaemonMode (bool);
+
+%If ( KDE_3_2_0 - )
+ void setPriorityCall (bool);
+%End
+
+ static DCOPClient* mainClient ();
+ static void setMainClient (DCOPClient*);
+
+%If ( KDE_3_2_0 - )
+ static DCOPClient* findLocalClient (const QCString&);
+%End
+
+ static void emergencyClose ();
+ static const char* postMortemSender ();
+ static const char* postMortemObject ();
+ static const char* postMortemFunction ();
+ static QCString dcopServerFile (const QCString& = 0);
+ static QCString dcopServerFileOld (const QCString& = 0);
+
+%If ( KDE_3_2_0 - )
+ static QCString iceauthPath ();
+%End
+
+
+signals:
+ void applicationRegistered (const QCString&);
+ void applicationRemoved (const QCString&);
+ void attachFailed (const QString&);
+ void blockUserInput (bool);
+
+%If ( KDE_3_2_0 - )
+ void callBack (int, const QCString&, const QByteArray&);
+%End
+
+
+protected slots:
+ void processSocketData (int);
+
+public:
+
+%If ( KDE_3_2_3 - )
+//ig void handleAsyncReply (DCOPClient::ReplyStruct*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+ int callAsync (const QCString&, const QCString&, const QCString&, const QByteArray&, SIP_RXOBJ_CON, SIP_SLOT_CON (int, const QCString&, const QByteArray&));
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_DCOPClient, &sipClass_DCOPClient},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+%End
+
+
+}; // class DCOPClient
+
+typedef QValueList<QCString> QCStringList;
diff --git a/python/pykde/sip/dcop/dcopmod.sip b/python/pykde/sip/dcop/dcopmod.sip
new file mode 100644
index 00000000..46a065b3
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopmod.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module dcop
+
+%Timeline { KDE_3_0_0 KDE_3_0_1 KDE_3_0_3 KDE_3_1_0 KDE_3_1_1 KDE_3_1_2 KDE_3_1_3 KDE_3_1_4 KDE_3_1_5 KDE_3_2_0 KDE_3_2_1 KDE_3_2_2 KDE_3_2_3 KDE_3_3_0 KDE_3_3_1 KDE_3_3_2 KDE_3_4_0 KDE_3_4_1 KDE_3_4_2 KDE_3_4_3 KDE_3_5_0 KDE_3_5_1 KDE_3_5_2 KDE_3_5_3 }
+
+%Platforms { D_MANDRAKE ALL }
+
+%Import qt/qtmod.sip
+
+%Include dcopclient.sip
+%Include dcopobject.sip
+%Include dcopref.sip
+%Include dcopstub.sip
+%Include typedefs.sip
+
diff --git a/python/pykde/sip/dcop/dcopmod.sip.in b/python/pykde/sip/dcop/dcopmod.sip.in
new file mode 100644
index 00000000..f13297be
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopmod.sip.in
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module dcop
+
+%Timeline { KDE_3_0_0 KDE_3_0_1 KDE_3_0_3 KDE_3_1_0 KDE_3_1_1 KDE_3_1_2 KDE_3_1_3 KDE_3_1_4 KDE_3_1_5 KDE_3_2_0 KDE_3_2_1 KDE_3_2_2 KDE_3_2_3 KDE_3_3_0 KDE_3_3_1 KDE_3_3_2 KDE_3_4_0 KDE_3_4_1 KDE_3_4_2 KDE_3_4_3 KDE_3_5_0 KDE_3_5_1 KDE_3_5_2 KDE_3_5_3 }
+
+%Platforms { D_MANDRAKE ALL }
+
+%Import qt/qtmod.sip
+
+%Include dcopclient.sip
+%Include dcopobject.sip
+%Include dcopref.sip
+%Include dcopstub.sip
+%Include typedefs.sip
+@mark@
+
diff --git a/python/pykde/sip/dcop/dcopobject.sip b/python/pykde/sip/dcop/dcopobject.sip
new file mode 100644
index 00000000..f26f7e67
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopobject.sip
@@ -0,0 +1,82 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class DCOPObject
+{
+%TypeHeaderCode
+#include <dcopobject.h>
+%End
+
+
+public:
+ DCOPObject ();
+ DCOPObject (QObject*);
+ DCOPObject (const QCString&);
+ QCString objId () const;
+ bool setObjId (const QCString&);
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ virtual bool processDynamic (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ virtual QCStringList functionsDynamic ();
+ virtual QCStringList interfacesDynamic ();
+ virtual QCStringList interfaces ();
+ virtual QCStringList functions ();
+ void emitDCOPSignal (const QCString&, const QByteArray&);
+ bool connectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, bool);
+ bool disconnectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&);
+
+%If ( KDE_3_1_0 - )
+ DCOPClient* callingDcopClient ();
+ void setCallingDcopClient (DCOPClient*);
+%End
+
+ static bool hasObject (const QCString&);
+ static DCOPObject* find (const QCString&);
+ static QPtrList<DCOPObject> match (const QCString&);
+ static QCString objectName (QObject*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class DCOPObject
+
+
+class DCOPObjectProxy
+{
+%TypeHeaderCode
+#include <dcopobject.h>
+%End
+
+
+public:
+ DCOPObjectProxy ();
+ DCOPObjectProxy (DCOPClient*);
+ virtual bool process (const QCString&, const QCString&, const QByteArray&, QCString&, QByteArray&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class DCOPObjectProxy
+
diff --git a/python/pykde/sip/dcop/dcopref.sip b/python/pykde/sip/dcop/dcopref.sip
new file mode 100644
index 00000000..40a3fa3a
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopref.sip
@@ -0,0 +1,109 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class DCOPReply
+{
+%TypeHeaderCode
+#include <dcopref.h>
+%End
+
+
+public:
+ bool isValid () const;
+ QByteArray data;
+ QCString type;
+
+}; // class DCOPReply
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+//ig class DCOPArg;
+
+%End
+
+
+class DCOPRef
+{
+%TypeHeaderCode
+#include <dcopref.h>
+%End
+
+
+public:
+ DCOPRef ();
+ DCOPRef (const DCOPRef&);
+ DCOPRef (const QCString&, const QCString&);
+ DCOPRef (DCOPObject*);
+ DCOPRef (const QCString&, const QCString&, const QCString&);
+ bool isNull () const;
+ QCString app () const;
+
+%If ( KDE_3_1_0 - )
+ QCString obj () const;
+%End
+
+ QCString object () const;
+ QCString type () const;
+ void setRef (const QCString&, const QCString&);
+ void setRef (const QCString&, const QCString&, const QCString&);
+ void clear ();
+
+%If ( KDE_3_1_0 - )
+ DCOPClient* dcopClient () const;
+ void setDCOPClient (DCOPClient*);
+
+%If ( KDE_3_2_0 - )
+
+ enum EventLoopFlag
+ {
+ NoEventLoop,
+ UseEventLoop
+ };
+
+%End
+
+ DCOPReply call (const QCString&);
+
+%If ( KDE_3_2_0 - )
+ DCOPReply callExt (const QCString&, DCOPRef::EventLoopFlag = NoEventLoop , int = -1);
+%End
+
+ bool send (const QCString&);
+%End
+
+
+}; // class DCOPRef
+
+
+%If ( KDE_3_1_4 - )
+//igx QDataStream& operator << (QDataStream&, const DCOPRef&);
+//igx QDataStream& operator >> (QDataStream&, DCOPRef&);
+%End
diff --git a/python/pykde/sip/dcop/dcopstub.sip b/python/pykde/sip/dcop/dcopstub.sip
new file mode 100644
index 00000000..4042eeee
--- /dev/null
+++ b/python/pykde/sip/dcop/dcopstub.sip
@@ -0,0 +1,68 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class DCOPStub
+{
+%TypeHeaderCode
+#include <dcopstub.h>
+%End
+
+
+public:
+ DCOPStub (const QCString&, const QCString&);
+ DCOPStub (DCOPClient*, const QCString&, const QCString&);
+
+%If ( KDE_3_2_0 - )
+ DCOPStub (const DCOPRef&);
+%End
+
+ QCString app () const;
+ QCString obj () const;
+
+ enum Status
+ {
+ CallSucceeded,
+ CallFailed
+ };
+
+ Status status () const;
+ bool ok () const;
+
+protected:
+ void setStatus (DCOPStub::Status);
+ virtual void callFailed ();
+ DCOPClient* dcopClient ();
+
+%If ( KDE_3_1_0 - )
+//ig DCOPStub (DCOPStub::never_use_t);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class DCOPStub
+
diff --git a/python/pykde/sip/dcop/typedefs.sip b/python/pykde/sip/dcop/typedefs.sip
new file mode 100644
index 00000000..66cd773e
--- /dev/null
+++ b/python/pykde/sip/dcop/typedefs.sip
@@ -0,0 +1,108 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module dcop version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+typedef uint mode_t;
+typedef long time_t;
+typedef ulong size_t;
+typedef int ssize_t;
+typedef int pid_t;
+typedef ulong Window;
+typedef bool Bool;
+typedef uint WFlags;
+typedef long off_t;
+
+
+/*%MappedType QValueList<pid_t>
+//converts a Python list of long
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Handle no list.
+
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Convert to a Python list of long.
+
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ for (uint i = 0; i < sipCpp -> count(); ++i)
+ if (PyList_SetItem(l,i,PyLong_FromLong((long)(*sipCpp)[i])) < 0)
+ {
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of long to a QValueList<long> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ if (sipPy == Py_None)
+ {
+ *sipCppPtr = NULL;
+
+ return 0;
+ }
+
+ QValueList<pid_t> *qvl = new QValueList<pid_t>;
+
+ PyErr_Clear();
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ qvl -> append((pid_t)PyLong_AsLong(PyList_GET_ITEM(sipPy,i)));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ delete qvl;
+ *sipIsErr = 1;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qvl;
+
+ return 1;
+%End
+};*/
+
+
diff --git a/python/pykde/sip/glossary.html b/python/pykde/sip/glossary.html
new file mode 100644
index 00000000..0c026cb4
--- /dev/null
+++ b/python/pykde/sip/glossary.html
@@ -0,0 +1,40 @@
+<h2><a name="abstract">Abstract</a></h2>
+<p>
+Abstract classes are used as base classes. You cannot create
+an instance of an abstract class directly - you need to subclass
+it. In the subclass, you need to overload <i>all</i> of the
+class's <a href="#purevirtual">pure virtual</a> methods. These
+are marked as "pure virtual" in these docs, and are also indicated
+by a " = 0" at the end of the method declaration.
+</p>
+<p>
+If your subclass doesn't overload the pure virtual methods in the
+abstract base class, you won't be able to create an instance of it.
+</p>
+
+<h2><a name="purevirtual">pure virtual</a></h2>
+<p>
+Pure virtual methods are members of an <a href="#abstract">abstract</a>
+class (they're what makes the class abstract in the first place). Pure
+virtual methods are nothing more than place holders - there is no code
+associated with them
+</p>
+
+
+<h2><a name="variables">variables</a></h2>
+<p>
+Class variables can be read and written from Python. Global or static
+variables are <i>read only</i>. Variables that are "protected" or.
+"private" in C++ are not implemented.
+</p>
+
+<h2><a name="slots">slots</a></h2>
+<p>
+When using Qt or KDE in C++, methods involving connections to slots
+take 2 arguments: a QObject 'receiver' and a char* 'slot' name. In Python
+you only need to provide a single value - the name of a Python callable
+method or function which will be connected to a signal. The method or
+function does not need to be in the class where it is reference, and does
+not have to be in a class at all. There are other options - see the
+"Signals and Slots" documentation for more information.
+</p>
diff --git a/python/pykde/sip/kabc/address.sip b/python/pykde/sip/kabc/address.sip
new file mode 100644
index 00000000..0ecc8c68
--- /dev/null
+++ b/python/pykde/sip/kabc/address.sip
@@ -0,0 +1,150 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class Address
+{
+%TypeHeaderCode
+#include <address.h>
+%End
+
+
+public:
+ typedef QValueList<KABC::Address> List;
+
+%If ( KDE_3_1_0 - )
+ typedef QValueList<int> TypeList;
+%End
+
+
+ enum Type
+ {
+ Dom,
+ Intl,
+ Postal,
+ Parcel,
+ Home,
+ Work,
+ Pref
+ };
+
+ Address ();
+ Address (int);
+
+%If ( KDE_3_1_0 - )
+ bool operator == (const KABC::Address&) const;
+ bool operator != (const KABC::Address&) const;
+%End
+
+ bool isEmpty () const;
+ void clear ();
+ void setId (const QString&);
+ QString id () const;
+ void setType (int);
+ int type () const;
+
+%If ( KDE_3_1_0 - )
+ QString typeLabel () const;
+%End
+
+ void setPostOfficeBox (const QString&);
+ QString postOfficeBox () const;
+
+%If ( KDE_3_1_0 - )
+ static QString postOfficeBoxLabel ();
+%End
+
+ void setExtended (const QString&);
+ QString extended () const;
+
+%If ( KDE_3_1_0 - )
+ static QString extendedLabel ();
+%End
+
+ void setStreet (const QString&);
+ QString street () const;
+
+%If ( KDE_3_1_0 - )
+ static QString streetLabel ();
+%End
+
+ void setLocality (const QString&);
+ QString locality () const;
+
+%If ( KDE_3_1_0 - )
+ static QString localityLabel ();
+%End
+
+ void setRegion (const QString&);
+ QString region () const;
+
+%If ( KDE_3_1_0 - )
+ static QString regionLabel ();
+%End
+
+ void setPostalCode (const QString&);
+ QString postalCode () const;
+
+%If ( KDE_3_1_0 - )
+ static QString postalCodeLabel ();
+%End
+
+ void setCountry (const QString&);
+ QString country () const;
+
+%If ( KDE_3_1_0 - )
+ static QString countryLabel ();
+%End
+
+ void setLabel (const QString&);
+ QString label () const;
+
+%If ( KDE_3_1_0 - )
+ static QString labelLabel ();
+ static KABC::Address::TypeList typeList ();
+ static QString typeLabel (int);
+%End
+
+ void dump () const;
+
+%If ( KDE_3_2_0 - )
+ QString formattedAddress (const QString& = QString ::null , const QString& = QString ::null ) const;
+ static QString countryToISO (const QString&);
+ static QString ISOtoCountry (const QString&);
+%End
+
+
+}; // class Address
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::Address&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Address&);
+%End
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/addressbook.sip b/python/pykde/sip/kabc/addressbook.sip
new file mode 100644
index 00000000..f2e4f44a
--- /dev/null
+++ b/python/pykde/sip/kabc/addressbook.sip
@@ -0,0 +1,230 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class AddressBook : QObject
+{
+%TypeHeaderCode
+#include <resource.h>
+#include <addressbook.h>
+%End
+
+
+public:
+
+//ig class Iterator;
+
+
+//ig class ConstIterator;
+
+ AddressBook ();
+
+%If ( KDE_3_2_0 - )
+ AddressBook (const QString&);
+%End
+
+ KABC::Ticket* requestSaveTicket (KABC::Resource* = 0);
+
+%If ( KDE_3_2_0 - )
+ void releaseSaveTicket (KABC::Ticket*);
+%End
+
+ bool load ();
+
+%If ( KDE_3_2_0 - )
+ bool asyncLoad ();
+%End
+
+ bool save (KABC::Ticket*);
+
+%If ( KDE_3_2_0 - )
+ bool asyncSave (KABC::Ticket*);
+%End
+
+//igx KABC::AddressBook::ConstIterator begin () const;
+//igx KABC::AddressBook::Iterator begin ();
+//igx KABC::AddressBook::ConstIterator end () const;
+//igx KABC::AddressBook::Iterator end ();
+ void clear ();
+ void insertAddressee (const KABC::Addressee&);
+ void removeAddressee (const KABC::Addressee&);
+//ig void removeAddressee (const KABC::AddressBook::Iterator&);
+//igx KABC::AddressBook::Iterator find (const Addressee&);
+ KABC::Addressee findByUid (const QString&);
+
+%If ( KDE_3_2_0 - )
+ KABC::Addressee::List allAddressees ();
+%End
+
+ KABC::Addressee::List findByName (const QString&);
+ KABC::Addressee::List findByEmail (const QString&);
+ KABC::Addressee::List findByCategory (const QString&);
+ virtual QString identifier ();
+
+%If ( KDE_3_1_0 - )
+ KABC::Field::List fields (int = KABC ::Field ::All );
+ bool addCustomField (const QString&, int = KABC ::Field ::All , const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+ bool addResource (KABC::Resource*);
+
+%If ( KDE_3_1_0 - )
+ bool removeResource (KABC::Resource*);
+ QPtrList<KABC::Resource> resources ();
+ void setErrorHandler (KABC::ErrorHandler*);
+ void error (const QString&);
+ void cleanUp ();
+%End
+
+ void dump () const;
+ void emitAddressBookLocked ();
+ void emitAddressBookUnlocked ();
+ void emitAddressBookChanged ();
+
+%If ( KDE_3_5_0 - )
+ bool loadingHasFinished () const;
+%End
+
+
+signals:
+ void addressBookChanged (KABC::AddressBook*);
+ void addressBookLocked (KABC::AddressBook*);
+ void addressBookUnlocked (KABC::AddressBook*);
+
+%If ( KDE_3_2_0 - )
+ void loadingFinished (KABC::Resource*);
+ void savingFinished (KABC::Resource*);
+%End
+
+
+protected slots:
+
+%If ( KDE_3_2_0 - )
+ void resourceLoadingFinished (KABC::Resource*);
+ void resourceSavingFinished (KABC::Resource*);
+ void resourceLoadingError (KABC::Resource*, const QString&);
+ void resourceSavingError (KABC::Resource*, const QString&);
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ void deleteRemovedAddressees ();
+ void setStandardResource (KABC::Resource*);
+ KABC::Resource* standardResource ();
+
+%If ( KDE_3_2_0 - )
+//ig KRES::Manager<KABC::Resource>* resourceManager ();
+%End
+
+%End
+
+
+}; // class AddressBook
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::AddressBook&);
+//igx QDataStream& operator >> (QDataStream&, KABC::AddressBook&);
+%End
+
+}; // namespace KABC
+
+
+
+%MappedType QPtrList<KABC::Resource>
+//converts a Python list of KABC::Resource
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <sipkabcKABCResource.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KABC::Resource> *cpplist = (QPtrList<KABC::Resource> *)sipCpp;
+ KABC::Resource *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KABC_Resource, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KABC::Resource> *cpplist = new QPtrList<KABC::Resource>;
+
+ PyObject *elem;
+ KABC::Resource *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::Resource *)sipForceConvertTo_KABC_Resource (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kabc/addressee.sip b/python/pykde/sip/kabc/addressee.sip
new file mode 100644
index 00000000..0c778824
--- /dev/null
+++ b/python/pykde/sip/kabc/addressee.sip
@@ -0,0 +1,470 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE_3_4_3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class Addressee
+{
+%TypeHeaderCode
+#include <addressee.h>
+%End
+
+
+public:
+//ig typedef QValueList<KABC::Addressee> List;
+
+%If ( KDE_3_4_2 - )
+ typedef QMap<QString,KABC::Addressee> Map;
+%End
+
+ Addressee ();
+ Addressee (const KABC::Addressee&);
+
+%If ( KDE_3_1_0 - )
+ bool operator == (const KABC::Addressee&) const;
+ bool operator != (const KABC::Addressee&) const;
+%End
+
+ bool isEmpty () const;
+ void setUid (const QString&);
+ QString uid () const;
+
+%If ( KDE_3_1_0 - )
+ static QString uidLabel ();
+%End
+
+ void setName (const QString&);
+ QString name () const;
+
+%If ( KDE_3_1_0 - )
+ static QString nameLabel ();
+%End
+
+ void setFormattedName (const QString&);
+ QString formattedName () const;
+
+%If ( KDE_3_1_0 - )
+ static QString formattedNameLabel ();
+%End
+
+ void setFamilyName (const QString&);
+ QString familyName () const;
+
+%If ( KDE_3_1_0 - )
+ static QString familyNameLabel ();
+%End
+
+ void setGivenName (const QString&);
+ QString givenName () const;
+
+%If ( KDE_3_1_0 - )
+ static QString givenNameLabel ();
+%End
+
+ void setAdditionalName (const QString&);
+ QString additionalName () const;
+
+%If ( KDE_3_1_0 - )
+ static QString additionalNameLabel ();
+%End
+
+ void setPrefix (const QString&);
+ QString prefix () const;
+
+%If ( KDE_3_1_0 - )
+ static QString prefixLabel ();
+%End
+
+ void setSuffix (const QString&);
+ QString suffix () const;
+
+%If ( KDE_3_1_0 - )
+ static QString suffixLabel ();
+%End
+
+ void setNickName (const QString&);
+ QString nickName () const;
+
+%If ( KDE_3_1_0 - )
+ static QString nickNameLabel ();
+%End
+
+ void setBirthday (const QDateTime&);
+ QDateTime birthday () const;
+
+%If ( KDE_3_1_0 - )
+ static QString birthdayLabel ();
+ static QString homeAddressStreetLabel ();
+ static QString homeAddressLocalityLabel ();
+ static QString homeAddressRegionLabel ();
+ static QString homeAddressPostalCodeLabel ();
+ static QString homeAddressCountryLabel ();
+ static QString homeAddressLabelLabel ();
+ static QString businessAddressStreetLabel ();
+ static QString businessAddressLocalityLabel ();
+ static QString businessAddressRegionLabel ();
+ static QString businessAddressPostalCodeLabel ();
+ static QString businessAddressCountryLabel ();
+ static QString businessAddressLabelLabel ();
+ static QString homePhoneLabel ();
+ static QString businessPhoneLabel ();
+ static QString mobilePhoneLabel ();
+ static QString homeFaxLabel ();
+ static QString businessFaxLabel ();
+ static QString carPhoneLabel ();
+ static QString isdnLabel ();
+ static QString pagerLabel ();
+ static QString emailLabel ();
+%End
+
+ void setMailer (const QString&);
+ QString mailer () const;
+
+%If ( KDE_3_1_0 - )
+ static QString mailerLabel ();
+%End
+
+ void setTimeZone (const KABC::TimeZone&);
+ KABC::TimeZone timeZone () const;
+
+%If ( KDE_3_1_0 - )
+ static QString timeZoneLabel ();
+%End
+
+ void setGeo (const KABC::Geo&);
+ KABC::Geo geo () const;
+
+%If ( KDE_3_1_0 - )
+ static QString geoLabel ();
+%End
+
+ void setTitle (const QString&);
+ QString title () const;
+
+%If ( KDE_3_1_0 - )
+ static QString titleLabel ();
+%End
+
+ void setRole (const QString&);
+ QString role () const;
+
+%If ( KDE_3_1_0 - )
+ static QString roleLabel ();
+%End
+
+ void setOrganization (const QString&);
+ QString organization () const;
+
+%If ( KDE_3_1_0 - )
+ static QString organizationLabel ();
+%End
+
+ void setNote (const QString&);
+ QString note () const;
+
+%If ( KDE_3_1_0 - )
+ static QString noteLabel ();
+%End
+
+ void setProductId (const QString&);
+ QString productId () const;
+
+%If ( KDE_3_1_0 - )
+ static QString productIdLabel ();
+%End
+
+ void setRevision (const QDateTime&);
+ QDateTime revision () const;
+
+%If ( KDE_3_1_0 - )
+ static QString revisionLabel ();
+%End
+
+ void setSortString (const QString&);
+ QString sortString () const;
+
+%If ( KDE_3_1_0 - )
+ static QString sortStringLabel ();
+%End
+
+ void setUrl (const KURL&);
+ KURL url () const;
+
+%If ( KDE_3_1_0 - )
+ static QString urlLabel ();
+ void setSecrecy (const KABC::Secrecy&);
+ KABC::Secrecy secrecy () const;
+ static QString secrecyLabel ();
+ void setLogo (const KABC::Picture&);
+ KABC::Picture logo () const;
+ static QString logoLabel ();
+ void setPhoto (const KABC::Picture&);
+ KABC::Picture photo () const;
+ static QString photoLabel ();
+ void setSound (const KABC::Sound&);
+ KABC::Sound sound () const;
+ static QString soundLabel ();
+ void setAgent (const KABC::Agent&);
+ KABC::Agent agent () const;
+ static QString agentLabel ();
+%End
+
+ void setNameFromString (const QString&);
+ QString realName () const;
+
+%If ( KDE_3_1_0 - )
+ QString assembledName () const;
+%End
+
+ QString fullEmail (const QString& = QString ::null ) const;
+ void insertEmail (const QString&, bool = 0);
+ void removeEmail (const QString&);
+ QString preferredEmail () const;
+ QStringList emails () const;
+
+%If ( KDE_3_4_2 - )
+ void setEmails (const QStringList&);
+%End
+
+ void insertPhoneNumber (const KABC::PhoneNumber&);
+ void removePhoneNumber (const KABC::PhoneNumber&);
+ KABC::PhoneNumber phoneNumber (int) const;
+ KABC::PhoneNumber::List phoneNumbers () const;
+
+%If ( KDE_3_1_0 - )
+ KABC::PhoneNumber::List phoneNumbers (int) const;
+%End
+
+ KABC::PhoneNumber findPhoneNumber (const QString&) const;
+
+%If ( KDE_3_1_0 - )
+ void insertKey (const KABC::Key&);
+ void removeKey (const KABC::Key&);
+ KABC::Key key (int, QString = QString ::null ) const;
+ KABC::Key::List keys () const;
+
+%If ( KDE_3_4_2 - )
+ void setKeys (const KABC::Key::List&);
+%End
+
+ KABC::Key::List keys (int, QString = QString ::null ) const;
+ KABC::Key findKey (const QString&) const;
+%End
+
+ void insertAddress (const KABC::Address&);
+ void removeAddress (const KABC::Address&);
+ KABC::Address address (int) const;
+ KABC::Address::List addresses () const;
+
+%If ( KDE_3_1_0 - )
+ KABC::Address::List addresses (int) const;
+%End
+
+ KABC::Address findAddress (const QString&) const;
+ void insertCategory (const QString&);
+ void removeCategory (const QString&);
+ bool hasCategory (const QString&) const;
+ void setCategories (const QStringList&);
+ QStringList categories () const;
+ void insertCustom (const QString&, const QString&, const QString&);
+ void removeCustom (const QString&, const QString&);
+ QString custom (const QString&, const QString&) const;
+ void setCustoms (const QStringList&);
+ QStringList customs () const;
+
+%If ( KDE_3_1_0 - )
+ static void parseEmailAddress (const QString&, QString&, QString&);
+%End
+
+ void dump () const;
+
+%If ( KDE_3_1_0 - )
+ QString asString () const;
+ void setResource (KABC::Resource*);
+ KABC::Resource* resource () const;
+ void setChanged (bool);
+ bool changed () const;
+
+%If ( KDE_3_4_2 - )
+ static void setSortMode (KABC::SortMode*);
+ bool operator < (const KABC::Addressee&);
+%End
+
+%End
+
+
+
+
+
+
+}; // class Addressee
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::Addressee&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Addressee&);
+%End
+
+}; // namespace KABC
+
+
+
+%MappedType KABC::Addressee::List
+//converts a Python list of KABC::Addressee
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCAddressee.h>
+//typedef QValueList<KABC::Addressee> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::Addressee> *cpplist = (QValueList<KABC::Addressee> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::Addressee>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::Addressee (*it), sipClass_KABC_Addressee)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::Addressee> *cpplist = new QValueList<KABC::Addressee>;
+
+ PyObject *elem;
+ KABC::Addressee *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::Addressee *)sipForceConvertTo_KABC_Addressee (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+%MappedType KABC::Address::List
+//converts a Python list of KABC::Address
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCAddress.h>
+//typedef QValueList<KABC::Address> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::Address> *cpplist = (QValueList<KABC::Address> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::Address>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::Address (*it), sipClass_KABC_Address)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::Address> *cpplist = new QValueList<KABC::Address>;
+
+ PyObject *elem;
+ KABC::Address *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::Address *)sipForceConvertTo_KABC_Address (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
diff --git a/python/pykde/sip/kabc/addresseedialog.sip b/python/pykde/sip/kabc/addresseedialog.sip
new file mode 100644
index 00000000..3c307970
--- /dev/null
+++ b/python/pykde/sip/kabc/addresseedialog.sip
@@ -0,0 +1,75 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class AddresseeItem : QListViewItem
+{
+%TypeHeaderCode
+#include <addresseedialog.h>
+%End
+
+
+public:
+
+ enum columns
+ {
+ Name,
+ Email
+ };
+
+ AddresseeItem (QListView*, const KABC::Addressee&);
+ KABC::Addressee addressee () const;
+ virtual QString key (int, bool) const;
+
+}; // class AddresseeItem
+
+
+class AddresseeDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <addresseedialog.h>
+%End
+
+
+public:
+ AddresseeDialog (QWidget* = 0, bool = 0);
+ KABC::Addressee addressee ();
+ KABC::Addressee::List addressees ();
+ static KABC::Addressee getAddressee (QWidget*);
+ static KABC::Addressee::List getAddressees (QWidget*);
+
+protected slots:
+
+%If ( KDE_3_1_0 - )
+ void addressBookChanged ();
+%End
+
+
+}; // class AddresseeDialog
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/addresseelist.sip b/python/pykde/sip/kabc/addresseelist.sip
new file mode 100644
index 00000000..8e13b06c
--- /dev/null
+++ b/python/pykde/sip/kabc/addresseelist.sip
@@ -0,0 +1,122 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <qwidget.h>
+#include <addresseelist.h>
+%End
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+namespace SortingTraits
+{
+
+class Uid
+{
+%TypeHeaderCode
+#include <addresseelist.h>
+%End
+
+
+public:
+ static bool eq (const KABC::Addressee&, const KABC::Addressee&);
+ static bool lt (const KABC::Addressee&, const KABC::Addressee&);
+
+}; // class Uid
+
+
+class Name
+{
+%TypeHeaderCode
+#include <addresseelist.h>
+%End
+
+
+public:
+ static bool eq (const KABC::Addressee&, const KABC::Addressee&);
+ static bool lt (const KABC::Addressee&, const KABC::Addressee&);
+
+}; // class Name
+
+
+class FormattedName
+{
+%TypeHeaderCode
+#include <addresseelist.h>
+%End
+
+
+public:
+ static bool eq (const KABC::Addressee&, const KABC::Addressee&);
+ static bool lt (const KABC::Addressee&, const KABC::Addressee&);
+
+}; // class FormattedName
+
+
+class FamilyName
+{
+%TypeHeaderCode
+#include <addresseelist.h>
+%End
+
+
+public:
+ static bool eq (const KABC::Addressee&, const KABC::Addressee&);
+ static bool lt (const KABC::Addressee&, const KABC::Addressee&);
+
+}; // class FamilyName
+
+
+class GivenName
+{
+%TypeHeaderCode
+#include <addresseelist.h>
+%End
+
+
+public:
+ static bool eq (const KABC::Addressee&, const KABC::Addressee&);
+ static bool lt (const KABC::Addressee&, const KABC::Addressee&);
+
+}; // class GivenName
+
+}; // namespace SortingTraits
+
+
+enum
+{
+ Uid,
+ Name,
+ FormattedName,
+ FamilyName,
+ GivenName
+};
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/addresslineedit.sip b/python/pykde/sip/kabc/addresslineedit.sip
new file mode 100644
index 00000000..5ea06bb3
--- /dev/null
+++ b/python/pykde/sip/kabc/addresslineedit.sip
@@ -0,0 +1,66 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class AddressLineEdit : KLineEdit
+{
+%TypeHeaderCode
+#include <addresslineedit.h>
+%End
+
+
+public:
+ AddressLineEdit (QWidget*, bool = 1, const char* = 0);
+ virtual void setFont (const QFont&);
+
+%If ( KDE_3_2_0 - )
+ static KConfig* config ();
+%End
+
+
+public slots:
+ void cursorAtEnd ();
+ void enableCompletion (bool);
+
+protected:
+ virtual void loadAddresses ();
+ void addAddress (const QString&);
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void dropEvent (QDropEvent*);
+ virtual void paste ();
+ virtual void insert (const QString&);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ void doCompletion (bool);
+
+}; // class AddressLineEdit
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/agent.sip b/python/pykde/sip/kabc/agent.sip
new file mode 100644
index 00000000..9e5c3e22
--- /dev/null
+++ b/python/pykde/sip/kabc/agent.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Agent
+{
+%TypeHeaderCode
+#include <agent.h>
+%End
+
+
+public:
+ Agent ();
+ Agent (const QString&);
+ Agent (KABC::Addressee*);
+ bool operator == (const KABC::Agent&) const;
+ bool operator != (const KABC::Agent&) const;
+ void setUrl (const QString&);
+ void setAddressee (KABC::Addressee*);
+ bool isIntern () const;
+ QString url () const;
+ KABC::Addressee* addressee () const;
+ QString asString () const;
+
+}; // class Agent
+
+//igx QDataStream& operator << (QDataStream&, const KABC::Agent&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Agent&);
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/distributionlist.sip b/python/pykde/sip/kabc/distributionlist.sip
new file mode 100644
index 00000000..b44e43d6
--- /dev/null
+++ b/python/pykde/sip/kabc/distributionlist.sip
@@ -0,0 +1,177 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class DistributionList
+{
+%TypeHeaderCode
+#include <distributionlist.h>
+%End
+
+
+public:
+
+ class Entry
+ {
+
+ public:
+ typedef QValueList<KABC::DistributionList::Entry> List;
+ Entry ();
+ Entry (const KABC::Addressee&, const QString&);
+ KABC::Addressee addressee;
+ QString email;
+
+ }; // class Entry
+
+
+public:
+ DistributionList (KABC::DistributionListManager*, const QString&);
+ void setName (const QString&);
+ QString name () const;
+ void insertEntry (const KABC::Addressee&, const QString& = QString ::null );
+ void removeEntry (const KABC::Addressee&, const QString& = QString ::null );
+ QStringList emails () const;
+ KABC::DistributionList::Entry::List entries () const;
+
+}; // class DistributionList
+
+
+class DistributionListManager
+{
+%TypeHeaderCode
+#include <distributionlist.h>
+%End
+
+
+public:
+ DistributionListManager (KABC::AddressBook*);
+ KABC::DistributionList* list (const QString&);
+ void insert (KABC::DistributionList*);
+ void remove (KABC::DistributionList*);
+ QStringList listNames ();
+ bool load ();
+ bool save ();
+
+}; // class DistributionListManager
+
+
+%If ( KDE_3_1_0 - )
+
+class DistributionListWatcher : QObject
+{
+%TypeHeaderCode
+#include <distributionlist.h>
+%End
+
+
+public:
+ static KABC::DistributionListWatcher* self ();
+
+signals:
+ void changed ();
+
+protected:
+ DistributionListWatcher ();
+ ~DistributionListWatcher ();
+
+}; // class DistributionListWatcher
+
+%End
+
+}; // namespace KABC
+
+
+
+%MappedType KABC::DistributionList::Entry::List
+//converts a Python list of KABC::DistributionList::Entry
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCDistributionListEntry.h>
+//typedef QValueList<KABC::DistributionList::Entry> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::DistributionList::Entry> *cpplist = (QValueList<KABC::DistributionList::Entry> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::DistributionList::Entry>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::DistributionList::Entry (*it), sipClass_KABC_DistributionList_Entry)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::DistributionList::Entry> *cpplist = new QValueList<KABC::DistributionList::Entry>;
+
+ PyObject *elem;
+ KABC::DistributionList::Entry *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::DistributionList::Entry *)sipForceConvertTo_KABC_DistributionList_Entry (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kabc/distributionlistdialog.sip b/python/pykde/sip/kabc/distributionlistdialog.sip
new file mode 100644
index 00000000..5ca8364c
--- /dev/null
+++ b/python/pykde/sip/kabc/distributionlistdialog.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class DistributionListDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <distributionlistdialog.h>
+%End
+
+
+public:
+ DistributionListDialog (KABC::AddressBook*, QWidget*);
+
+}; // class DistributionListDialog
+
+
+class EmailSelector : KDialogBase
+{
+%TypeHeaderCode
+#include <distributionlistdialog.h>
+%End
+
+
+public:
+ EmailSelector (const QStringList&, const QString&, QWidget*);
+ QString selected ();
+ static QString getEmail (const QStringList&, const QString&, QWidget*);
+
+}; // class EmailSelector
+
+
+class DistributionListEditorWidget : QWidget
+{
+%TypeHeaderCode
+#include <distributionlistdialog.h>
+%End
+
+
+public:
+ DistributionListEditorWidget (KABC::AddressBook*, QWidget*);
+
+}; // class DistributionListEditorWidget
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/distributionlisteditor.sip b/python/pykde/sip/kabc/distributionlisteditor.sip
new file mode 100644
index 00000000..c8cf839a
--- /dev/null
+++ b/python/pykde/sip/kabc/distributionlisteditor.sip
@@ -0,0 +1,47 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class EmailSelectDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <distributionlisteditor.h>
+%End
+
+
+public:
+ EmailSelectDialog (const QStringList&, const QString&, QWidget*);
+ QString selected ();
+ static QString getEmail (const QStringList&, const QString&, QWidget*);
+
+}; // class EmailSelectDialog
+
+
+//ig class DistributionListEditor : QWidget;
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/errorhandler.sip b/python/pykde/sip/kabc/errorhandler.sip
new file mode 100644
index 00000000..a63ef9fe
--- /dev/null
+++ b/python/pykde/sip/kabc/errorhandler.sip
@@ -0,0 +1,97 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class ErrorHandler
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <errorhandler.h>
+%End
+
+
+public:
+ virtual void error (const QString&) = 0;
+
+}; // class ErrorHandler
+
+
+class ConsoleErrorHandler : KABC::ErrorHandler
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <errorhandler.h>
+%End
+
+
+public:
+ virtual void error (const QString&);
+
+}; // class ConsoleErrorHandler
+
+
+%If ( KDE_3_5_1 - )
+
+class GUIErrorHandler : KABC::ErrorHandler
+{
+%TypeHeaderCode
+#include <errorhandler.h>
+%End
+
+
+public:
+ virtual void error (const QString&);
+
+}; // class GUIErrorHandler
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class GuiErrorHandler : KABC::ErrorHandler
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <errorhandler.h>
+%End
+
+
+public:
+ GuiErrorHandler (QWidget*);
+ virtual void error (const QString&);
+
+}; // class GuiErrorHandler
+
+%End
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/field.sip b/python/pykde/sip/kabc/field.sip
new file mode 100644
index 00000000..7a92300e
--- /dev/null
+++ b/python/pykde/sip/kabc/field.sip
@@ -0,0 +1,162 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Field
+{
+%TypeHeaderCode
+#include <field.h>
+%End
+
+
+public:
+ typedef QValueList<KABC::Field*> List;
+
+ enum FieldCategory
+ {
+ All,
+ Frequent,
+ Address,
+ Email,
+ Personal,
+ Organization,
+ CustomCategory
+ };
+
+ virtual QString label ();
+ virtual int category ();
+ static QString categoryLabel (int);
+ virtual QString value (const KABC::Addressee&);
+ virtual bool setValue (KABC::Addressee&, const QString&);
+
+%If ( KDE_3_2_0 - )
+ QString sortKey (const KABC::Addressee&);
+%End
+
+ virtual bool isCustom ();
+ virtual bool equals (KABC::Field*);
+ static KABC::Field::List allFields ();
+ static KABC::Field::List defaultFields ();
+ static KABC::Field* createCustomField (const QString&, int, const QString&, const QString&);
+ static void deleteFields ();
+ static void saveFields (KConfig*, const QString&, const KABC::Field::List&);
+ static void saveFields (const QString&, const KABC::Field::List&);
+ static KABC::Field::List restoreFields (KConfig*, const QString&);
+ static KABC::Field::List restoreFields (const QString&);
+
+protected:
+ static void createField (int, int = 0);
+ static void createDefaultField (int, int = 0);
+
+private:
+//ig Field (KABC::Field::FieldImpl*);
+ ~Field ();
+//force
+ Field ();
+//end
+
+}; // class Field
+
+}; // namespace KABC
+
+%End
+
+
+
+%If (KDE_3_1_0 - )
+%MappedType KABC::Field::List
+//converts a Python list of KABC::Field
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCField.h>
+//typedef QValueList<KABC::Field *> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::Field *> *cpplist = (QValueList<KABC::Field *> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::Field *>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", (KABC::Field *) (*it), sipClass_KABC_Field)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::Field *> *cpplist = new QValueList<KABC::Field *>;
+
+ PyObject *elem;
+ KABC::Field *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::Field *)sipForceConvertTo_KABC_Field (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kabc/format.sip b/python/pykde/sip/kabc/format.sip
new file mode 100644
index 00000000..f60a3ff1
--- /dev/null
+++ b/python/pykde/sip/kabc/format.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class Format
+{
+%TypeHeaderCode
+#include <format.h>
+%End
+
+
+public:
+ virtual bool load (KABC::AddressBook*, const QString&) = 0;
+ virtual bool save (KABC::AddressBook*, const QString&) = 0;
+
+}; // class Format
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/formatfactory.sip b/python/pykde/sip/kabc/formatfactory.sip
new file mode 100644
index 00000000..0efd8452
--- /dev/null
+++ b/python/pykde/sip/kabc/formatfactory.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class FormatInfo
+{
+%TypeHeaderCode
+#include <formatfactory.h>
+%End
+
+
+public:
+ QString library;
+ QString nameLabel;
+ QString descriptionLabel;
+
+}; // class FormatInfo
+
+
+class FormatFactory
+{
+%TypeHeaderCode
+#include <formatfactory.h>
+%End
+
+
+public:
+ static KABC::FormatFactory* self ();
+ KABC::FormatPlugin* format (const QString&);
+ QStringList formats ();
+ KABC::FormatInfo* info (const QString&);
+
+protected:
+ FormatFactory ();
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ ~FormatFactory ();
+%End
+
+
+}; // class FormatFactory
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/formatplugin.sip b/python/pykde/sip/kabc/formatplugin.sip
new file mode 100644
index 00000000..26d7b554
--- /dev/null
+++ b/python/pykde/sip/kabc/formatplugin.sip
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class FormatPlugin : KABC::Plugin
+{
+%TypeHeaderCode
+#include <formatplugin.h>
+%End
+
+
+public:
+ virtual bool load (KABC::Addressee&, QFile*) = 0;
+ virtual bool loadAll (KABC::AddressBook*, KABC::Resource*, QFile*) = 0;
+ virtual void save (const KABC::Addressee&, QFile*) = 0;
+ virtual void saveAll (KABC::AddressBook*, KABC::Resource*, QFile*) = 0;
+ virtual bool checkFormat (QFile*) const = 0;
+
+}; // class FormatPlugin
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/geo.sip b/python/pykde/sip/kabc/geo.sip
new file mode 100644
index 00000000..e2e38fc0
--- /dev/null
+++ b/python/pykde/sip/kabc/geo.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class Geo
+{
+%TypeHeaderCode
+#include <geo.h>
+%End
+
+
+public:
+ Geo ();
+ Geo (float, float);
+ void setLatitude (float);
+ float latitude () const;
+ void setLongitude (float);
+ float longitude () const;
+ bool isValid () const;
+ bool operator == (const KABC::Geo&) const;
+
+%If ( KDE_3_1_0 - )
+ bool operator != (const KABC::Geo&) const;
+%End
+
+ QString asString () const;
+
+}; // class Geo
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::Geo&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Geo&);
+%End
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/kabc-kde310.diff b/python/pykde/sip/kabc/kabc-kde310.diff
new file mode 100644
index 00000000..294c0cbc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde310.diff
@@ -0,0 +1,17 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde311.diff b/python/pykde/sip/kabc/kabc-kde311.diff
new file mode 100644
index 00000000..294c0cbc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde311.diff
@@ -0,0 +1,17 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde312.diff b/python/pykde/sip/kabc/kabc-kde312.diff
new file mode 100644
index 00000000..294c0cbc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde312.diff
@@ -0,0 +1,17 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde313.diff b/python/pykde/sip/kabc/kabc-kde313.diff
new file mode 100644
index 00000000..294c0cbc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde313.diff
@@ -0,0 +1,17 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde314.diff b/python/pykde/sip/kabc/kabc-kde314.diff
new file mode 100644
index 00000000..294c0cbc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde314.diff
@@ -0,0 +1,17 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde320.diff b/python/pykde/sip/kabc/kabc-kde320.diff
new file mode 100644
index 00000000..a7c2d681
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde320.diff
@@ -0,0 +1,21 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde322.diff b/python/pykde/sip/kabc/kabc-kde322.diff
new file mode 100644
index 00000000..a7c2d681
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde322.diff
@@ -0,0 +1,21 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde323.diff b/python/pykde/sip/kabc/kabc-kde323.diff
new file mode 100644
index 00000000..a7c2d681
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde323.diff
@@ -0,0 +1,21 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde330.diff b/python/pykde/sip/kabc/kabc-kde330.diff
new file mode 100644
index 00000000..d89a0acc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde330.diff
@@ -0,0 +1,24 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde331.diff b/python/pykde/sip/kabc/kabc-kde331.diff
new file mode 100644
index 00000000..d89a0acc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde331.diff
@@ -0,0 +1,24 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde332.diff b/python/pykde/sip/kabc/kabc-kde332.diff
new file mode 100644
index 00000000..d89a0acc
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde332.diff
@@ -0,0 +1,24 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde340.diff b/python/pykde/sip/kabc/kabc-kde340.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde340.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde341.diff b/python/pykde/sip/kabc/kabc-kde341.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde341.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde342.diff b/python/pykde/sip/kabc/kabc-kde342.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde342.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde343.diff b/python/pykde/sip/kabc/kabc-kde343.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde343.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde350.diff b/python/pykde/sip/kabc/kabc-kde350.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde350.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde351.diff b/python/pykde/sip/kabc/kabc-kde351.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde351.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde352.diff b/python/pykde/sip/kabc/kabc-kde352.diff
new file mode 100644
index 00000000..24ca6590
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde352.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
+//+ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabc-kde353.diff b/python/pykde/sip/kabc/kabc-kde353.diff
new file mode 100644
index 00000000..3ea9e5f6
--- /dev/null
+++ b/python/pykde/sip/kabc/kabc-kde353.diff
@@ -0,0 +1,25 @@
++ %Include addresseelist.sip
++ %Include addresslineedit.sip
++ %Include agent.sip
++ %Include distributionlistdialog.sip
++ %Include errorhandler.sip
++ %Include field.sip
++ %Include formatfactory.sip
++ %Include formatplugin.sip
++ %Include key.sip
++ %Include ldapclient.sip
++ %Include ldapconfigwidget.sip
++ %Include ldapurl.sip
++ %Include ldif.sip
++ %Include ldifconverter.sip
++ %Include lock.sip
++ %Include locknull.sip
++ %Include picture.sip
++ %Include plugin.sip
++ %Include resourcefile.sip
++ %Include resourceselectdialog.sip
++ %Include secrecy.sip
++ %Include sortmode.sip
++ %Include sound.sip
++ %Include vcardconverter.sip
++ %Include vcardformatplugin.sip
diff --git a/python/pykde/sip/kabc/kabcmod.sip b/python/pykde/sip/kabc/kabcmod.sip
new file mode 100644
index 00000000..f4d5d954
--- /dev/null
+++ b/python/pykde/sip/kabc/kabcmod.sip
@@ -0,0 +1,78 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kabc
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+%Import kresourcesmod.sip
+
+%Include address.sip
+%Include addressbook.sip
+%Include addressee.sip
+%Include addresseedialog.sip
+%Include distributionlist.sip
+%Include distributionlisteditor.sip
+%Include format.sip
+%Include geo.sip
+//%Include ldifconverter.sip
+%Include phonenumber.sip
+%Include resource.sip
+%Include stdaddressbook.sip
+%Include timezone.sip
+%Include vcardformat.sip
+%Include addresseelist.sip
+%Include addresslineedit.sip
+%Include agent.sip
+%Include distributionlistdialog.sip
+%Include errorhandler.sip
+%Include field.sip
+%Include formatfactory.sip
+%Include formatplugin.sip
+%Include key.sip
+%Include ldapclient.sip
+%Include ldapconfigwidget.sip
+%Include ldapurl.sip
+%Include ldif.sip
+%Include lock.sip
+%Include locknull.sip
+%Include picture.sip
+%Include plugin.sip
+%Include resourcefile.sip
+%Include resourceselectdialog.sip
+%Include secrecy.sip
+%Include sortmode.sip
+%Include sound.sip
+%Include vcardconverter.sip
+%Include vcardformatplugin.sip
+
diff --git a/python/pykde/sip/kabc/kabcmod.sip.in b/python/pykde/sip/kabc/kabcmod.sip.in
new file mode 100644
index 00000000..dc240f81
--- /dev/null
+++ b/python/pykde/sip/kabc/kabcmod.sip.in
@@ -0,0 +1,55 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kabc
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+%Import kresourcesmod.sip
+
+%Include address.sip
+%Include addressbook.sip
+%Include addressee.sip
+%Include addresseedialog.sip
+%Include distributionlist.sip
+%Include distributionlisteditor.sip
+%Include format.sip
+%Include geo.sip
+//%Include ldifconverter.sip
+%Include phonenumber.sip
+%Include resource.sip
+%Include stdaddressbook.sip
+%Include timezone.sip
+%Include vcardformat.sip
+@mark@
+
diff --git a/python/pykde/sip/kabc/key.sip b/python/pykde/sip/kabc/key.sip
new file mode 100644
index 00000000..4d0d513d
--- /dev/null
+++ b/python/pykde/sip/kabc/key.sip
@@ -0,0 +1,144 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Key
+{
+%TypeHeaderCode
+#include <key.h>
+%End
+
+
+public:
+ typedef QValueList<KABC::Key> List;
+ typedef QValueList<int> TypeList;
+
+ enum Types
+ {
+ X509,
+ PGP,
+ Custom
+ };
+
+ Key (const QString& = QString ::null , int = PGP );
+ bool operator == (const KABC::Key&) const;
+ bool operator != (const KABC::Key&) const;
+ void setId (const QString&);
+ QString id () const;
+ void setBinaryData (const QByteArray&);
+ QByteArray binaryData () const;
+ void setTextData (const QString&);
+ QString textData () const;
+ bool isBinary () const;
+ void setType (int);
+ void setCustomTypeString (const QString&);
+ int type () const;
+ QString customTypeString () const;
+ static TypeList typeList ();
+ static QString typeLabel (int);
+
+}; // class Key
+
+//igx QDataStream& operator << (QDataStream&, const KABC::Key&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Key&);
+}; // namespace KABC
+
+%End
+
+
+
+%MappedType KABC::Key::List
+//converts a Python list of KABC::Key
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCKey.h>
+//typedef QValueList<KABC::Key> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::Key> *cpplist = (QValueList<KABC::Key> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::Key>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::Key (*it), sipClass_KABC_Key)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::Key> *cpplist = new QValueList<KABC::Key>;
+
+ PyObject *elem;
+ KABC::Key *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::Key *)sipForceConvertTo_KABC_Key (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kabc/ldapclient.sip b/python/pykde/sip/kabc/ldapclient.sip
new file mode 100644
index 00000000..872428cc
--- /dev/null
+++ b/python/pykde/sip/kabc/ldapclient.sip
@@ -0,0 +1,245 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+//ig typedef QValueList<QByteArray> LdapAttrValue;
+//ig typedef QMap<QString,KABC::LdapAttrValue> LdapAttrMap;
+
+class LdapObject
+{
+%TypeHeaderCode
+#include <ldapclient.h>
+%End
+
+
+public:
+ LdapObject ();
+
+%If ( KDE_3_3_0 - )
+ LdapObject (const QString&, KABC::LdapClient*);
+%End
+
+ LdapObject (const KABC::LdapObject&);
+ QString toString () const;
+ void clear ();
+ QString dn;
+//ig LdapAttrMap attrs;
+
+%If ( KDE_3_3_0 - )
+ KABC::LdapClient* client;
+%End
+
+
+protected:
+ void assign (const KABC::LdapObject&);
+
+public:
+
+%If ( - KDE_3_3_0 )
+ LdapObject (QString);
+%End
+
+
+}; // class LdapObject
+
+
+class LdapClient : QObject
+{
+%TypeHeaderCode
+#include <ldapclient.h>
+%End
+
+
+public:
+ LdapClient (QObject* = 0, const char* = 0);
+ bool isActive () const;
+
+signals:
+ void done ();
+ void error (const QString&);
+ void result (const KABC::LdapObject&);
+
+public slots:
+ void setHost (const QString&);
+ QString host () const;
+ void setPort (const QString&);
+ QString port () const;
+ void setBase (const QString&);
+ QString base () const;
+
+%If ( KDE_3_2_0 - )
+ void setBindDN (const QString&);
+ QString bindDN () const;
+ void setPwdBindDN (const QString&);
+ QString pwdBindDN () const;
+%End
+
+ void setAttrs (const QStringList&);
+ QStringList attrs () const;
+ void setScope (const QString);
+ void startQuery (const QString&);
+ void cancelQuery ();
+
+protected slots:
+ void slotData (KIO::Job*, const QByteArray&);
+ void slotInfoMessage (KIO::Job*, const QString&);
+ void slotDone ();
+
+protected:
+ void startParseLDIF ();
+ void parseLDIF (const QByteArray&);
+ void endParseLDIF ();
+
+}; // class LdapClient
+
+
+%If ( KDE_3_3_0 - )
+
+class LdapResult
+{
+%TypeHeaderCode
+#include <ldapclient.h>
+%End
+
+
+public:
+ QString name;
+ QString email;
+ int clientNumber;
+
+}; // class LdapResult
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+typedef QValueList<KABC::LdapResult> LdapResultList;
+%End
+
+
+class LdapSearch : QObject
+{
+%TypeHeaderCode
+#include <ldapclient.h>
+%End
+
+
+public:
+ LdapSearch ();
+ void startSearch (const QString&);
+ void cancelSearch ();
+ bool isAvailable () const;
+
+signals:
+ void searchData (const QStringList&);
+
+%If ( KDE_3_3_0 - )
+ void searchData (const KABC::LdapResultList&);
+%End
+
+ void searchDone ();
+
+}; // class LdapSearch
+
+}; // namespace KABC
+
+%End
+
+
+
+%If (KDE_3_3_0 - )
+%MappedType KABC::LdapResultList
+//converts a Python list of KABC::LdapREsult
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCLdapResult.h>
+//typedef QValueList<KABC::LdapResult> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::LdapResult> *cpplist = (QValueList<KABC::LdapResult> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::LdapResult>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::LdapResult (*it), sipClass_KABC_LdapResult)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::LdapResult> *cpplist = new QValueList<KABC::LdapResult>;
+
+ PyObject *elem;
+ KABC::LdapResult *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::LdapResult *)sipForceConvertTo_KABC_LdapResult (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kabc/ldapconfigwidget.sip b/python/pykde/sip/kabc/ldapconfigwidget.sip
new file mode 100644
index 00000000..631b1c18
--- /dev/null
+++ b/python/pykde/sip/kabc/ldapconfigwidget.sip
@@ -0,0 +1,105 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KABC
+{
+
+class LdapConfigWidget : QWidget
+{
+%TypeHeaderCode
+#include <ldapconfigwidget.h>
+%End
+
+
+public:
+
+ enum LCW_Flags
+ {
+ W_USER,
+ W_PASS,
+ W_BINDDN,
+ W_REALM,
+ W_HOST,
+ W_PORT,
+ W_VER,
+ W_DN,
+ W_FILTER,
+ W_SECBOX,
+ W_AUTHBOX,
+ W_TIMELIMIT,
+ W_SIZELIMIT,
+ W_ALL
+ };
+
+ LdapConfigWidget (QWidget* = 0, const char* = 0, WFlags = 0);
+ LdapConfigWidget (int, QWidget* = 0, const char* = 0, WFlags = 0);
+ void setUser (const QString&);
+ QString user () const;
+ void setPassword (const QString&);
+ QString password () const;
+ void setBindDN (const QString&);
+ QString bindDN () const;
+ void setRealm (const QString&);
+ QString realm () const;
+ void setHost (const QString&);
+ QString host () const;
+ void setPort (int);
+ int port () const;
+ void setVer (int);
+ int ver () const;
+ void setDn (const QString&);
+ QString dn () const;
+ void setFilter (const QString&);
+ QString filter () const;
+ void setMech (const QString&);
+ QString mech () const;
+ void setSecNO (bool = 1);
+ bool isSecNO () const;
+ void setSecTLS (bool = 1);
+ bool isSecTLS () const;
+ void setSecSSL (bool = 1);
+ bool isSecSSL () const;
+ void setAuthAnon (bool = 1);
+ bool isAuthAnon () const;
+ void setAuthSimple (bool = 1);
+ bool isAuthSimple () const;
+ void setAuthSASL (bool = 1);
+ bool isAuthSASL () const;
+ void setSizeLimit (int);
+ int sizeLimit () const;
+ void setTimeLimit (int);
+ int timeLimit () const;
+ int flags () const;
+ void setFlags (int);
+ KABC::LDAPUrl url () const;
+
+}; // class LdapConfigWidget
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/ldapurl.sip b/python/pykde/sip/kabc/ldapurl.sip
new file mode 100644
index 00000000..7c4fb766
--- /dev/null
+++ b/python/pykde/sip/kabc/ldapurl.sip
@@ -0,0 +1,85 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KABC
+{
+
+class LDAPUrl : KURL
+{
+%TypeHeaderCode
+#include <ldapurl.h>
+%End
+
+
+public:
+
+ class Extension
+ {
+
+ public:
+ QString value;
+ bool critical;
+
+ }; // class Extension
+
+
+public:
+
+ enum Scope
+ {
+ Base,
+ One,
+ Sub
+ };
+
+ LDAPUrl ();
+ LDAPUrl (const KURL&);
+ const QString& dn () const;
+ void setDn (const QString&);
+ const QStringList& attributes ();
+ void setAttributes (const QStringList&);
+ KABC::LDAPUrl::Scope scope () const;
+ void setScope (KABC::LDAPUrl::Scope);
+ const QString& filter () const;
+ void setFilter (QString);
+ bool hasExtension (const QString&) const;
+ KABC::LDAPUrl::Extension extension (const QString&) const;
+ QString extension (const QString&, bool& /Out/) const /PyName=extensionAndCritical/;
+ void setExtension (const QString&, const KABC::LDAPUrl::Extension&);
+ void setExtension (const QString&, const QString&, bool = 0);
+ void removeExtension (const QString&);
+ void updateQuery ();
+
+protected:
+ void parseQuery ();
+
+}; // class LDAPUrl
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/ldif.sip b/python/pykde/sip/kabc/ldif.sip
new file mode 100644
index 00000000..6361bd8b
--- /dev/null
+++ b/python/pykde/sip/kabc/ldif.sip
@@ -0,0 +1,99 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KABC
+{
+
+class LDIF
+{
+%TypeHeaderCode
+#include <ldif.h>
+%End
+
+
+public:
+
+ enum ParseVal
+ {
+ None,
+ NewEntry,
+ EndEntry,
+ Item,
+ Control,
+ Err,
+ MoreData
+ };
+
+
+ enum EntryType
+ {
+ Entry_None,
+ Entry_Add,
+ Entry_Del,
+ Entry_Mod,
+ Entry_Modrdn
+ };
+
+
+ enum ModType
+ {
+ Mod_None,
+ Mod_Add,
+ Mod_Replace,
+ Mod_Del
+ };
+
+ LDIF ();
+ static QCString assembleLine (const QString&, const QByteArray&, uint = 0, bool = 0);
+ static QCString assembleLine (const QString&, const QCString&, uint = 0, bool = 0);
+ static QCString assembleLine (const QString&, const QString&, uint = 0, bool = 0);
+ static bool splitLine (const QCString&, QString&, QByteArray&);
+ static bool splitControl (const QCString&, QString&, bool&, QByteArray&);
+ void startParsing ();
+ KABC::LDIF::ParseVal processLine ();
+ KABC::LDIF::ParseVal nextItem ();
+ void setLDIF (const QByteArray&);
+ void endLDIF ();
+ KABC::LDIF::EntryType entryType () const;
+ int modType () const;
+ const QString& dn () const;
+ const QString& newRdn () const;
+ const QString& newSuperior () const;
+ bool delOldRdn () const;
+ const QString& attr () const;
+ const QByteArray& val () const;
+ bool isUrl () const;
+ bool critical () const;
+ const QString& oid () const;
+ uint lineNo () const;
+
+}; // class LDIF
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/ldifconverter.sip b/python/pykde/sip/kabc/ldifconverter.sip
new file mode 100644
index 00000000..d19bb196
--- /dev/null
+++ b/python/pykde/sip/kabc/ldifconverter.sip
@@ -0,0 +1,78 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <ldifconverter.h>
+%End
+
+
+%If ( KDE_3_2_0 - )
+namespace KABC
+{
+namespace LDIFConverter
+{
+
+%If ( KDE_3_5_2 - )
+//ig bool LDIFToAddressee (const QString&, AddresseeList&, QDateTime = QDateTime ::currentDateTime ());
+//ig bool addresseeToLDIF (const AddresseeList&, QString&);
+%End
+
+bool addresseeToLDIF (const KABC::Addressee&, QString&);
+QString makeLDIFfieldString (QString, QString, bool = 1);
+bool parseSingleLine (KABC::Addressee&, KABC::Address&, KABC::Address&, QString&);
+bool splitLine (QString&, QString&, QString&);
+bool evaluatePair (KABC::Addressee&, KABC::Address&, KABC::Address&, QString&, QString&);
+
+%If ( - KDE_3_5_2 )
+bool LDIFToAddressee (const QString&, KABC::Addressee::List&, QDateTime = QDateTime ::currentDateTime ());
+%MethodCode
+
+ KABC::Addressee::List *xa1 = (KABC::Addressee::List *)a1;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = KABC::LDIFConverter::LDIFToAddressee (*a0, *xa1, *a2);
+ Py_END_ALLOW_THREADS
+
+%End
+
+bool addresseeToLDIF (const KABC::Addressee::List&, QString&);
+%MethodCode
+
+ KABC::Addressee::List *xa0 = (KABC::Addressee::List *)a0;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = KABC::LDIFConverter::addresseeToLDIF (*xa0, *a1);
+ Py_END_ALLOW_THREADS
+
+%End
+
+%End
+
+}; // namespace LDIFConverter
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/lock.sip b/python/pykde/sip/kabc/lock.sip
new file mode 100644
index 00000000..1684d072
--- /dev/null
+++ b/python/pykde/sip/kabc/lock.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KABC
+{
+
+class Lock : QObject
+{
+%TypeHeaderCode
+#include <lock.h>
+%End
+
+
+public:
+ Lock (const QString&);
+ virtual bool lock ();
+ virtual bool unlock ();
+ virtual QString error () const;
+ QString lockFileName () const;
+ static bool readLockFile (const QString&, int&, QString&);
+ static bool writeLockFile (const QString&);
+ static QString locksDir ();
+
+signals:
+ void locked ();
+ void unlocked ();
+
+}; // class Lock
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/locknull.sip b/python/pykde/sip/kabc/locknull.sip
new file mode 100644
index 00000000..d9d924d1
--- /dev/null
+++ b/python/pykde/sip/kabc/locknull.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KABC
+{
+
+class LockNull : KABC::Lock
+{
+%TypeHeaderCode
+#include <locknull.h>
+%End
+
+
+public:
+ LockNull (bool);
+ bool lock ();
+ bool unlock ();
+ QString error () const;
+
+}; // class LockNull
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/phonenumber.sip b/python/pykde/sip/kabc/phonenumber.sip
new file mode 100644
index 00000000..a8340181
--- /dev/null
+++ b/python/pykde/sip/kabc/phonenumber.sip
@@ -0,0 +1,191 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class PhoneNumber
+{
+%TypeHeaderCode
+#include <phonenumber.h>
+%End
+
+
+public:
+ typedef QValueList<KABC::PhoneNumber> List;
+
+%If ( KDE_3_1_0 - )
+ typedef QValueList<int> TypeList;
+
+ enum Types
+ {
+ Home,
+ Work,
+ Msg,
+ Pref,
+ Voice,
+ Fax,
+ Cell,
+ Video,
+ Bbs,
+ Modem,
+ Car,
+ Isdn,
+ Pcs,
+ Pager
+ };
+
+%End
+
+ PhoneNumber ();
+ PhoneNumber (const QString&, int = Home );
+
+%If ( KDE_3_1_0 - )
+ bool operator == (const KABC::PhoneNumber&) const;
+ bool operator != (const KABC::PhoneNumber&) const;
+%End
+
+ void setId (const QString&);
+ QString id () const;
+ void setNumber (const QString&);
+ QString number () const;
+ void setType (int);
+ int type () const;
+
+%If ( KDE_3_1_0 - )
+ QString typeLabel () const;
+ QString label () const;
+ static TypeList typeList ();
+ static QString typeLabel (int);
+ static QString label (int);
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum
+ {
+ Home,
+ Work,
+ Msg,
+ Pref,
+ Voice,
+ Fax,
+ Cell,
+ Video,
+ Bbs,
+ Modem,
+ Car,
+ Isdn,
+ Pcs,
+ Pager
+ };
+
+%End
+
+
+}; // class PhoneNumber
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::PhoneNumber&);
+//igx QDataStream& operator >> (QDataStream&, KABC::PhoneNumber&);
+%End
+
+}; // namespace KABC
+
+
+
+%MappedType KABC::PhoneNumber::List
+//converts a Python list of KABC::PhoneNumber
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkabcKABCPhoneNumber.h>
+//typedef QValueList<KABC::PhoneNumber> List;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KABC::PhoneNumber> *cpplist = (QValueList<KABC::PhoneNumber> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KABC::PhoneNumber>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KABC::PhoneNumber (*it), sipClass_KABC_PhoneNumber)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KABC::PhoneNumber> *cpplist = new QValueList<KABC::PhoneNumber>;
+
+ PyObject *elem;
+ KABC::PhoneNumber *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KABC::PhoneNumber *)sipForceConvertTo_KABC_PhoneNumber (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kabc/picture.sip b/python/pykde/sip/kabc/picture.sip
new file mode 100644
index 00000000..a45b8198
--- /dev/null
+++ b/python/pykde/sip/kabc/picture.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Picture
+{
+%TypeHeaderCode
+#include <picture.h>
+%End
+
+
+public:
+ Picture ();
+ Picture (const QString&);
+ Picture (const QImage&);
+ bool operator == (const KABC::Picture&) const;
+ bool operator != (const KABC::Picture&) const;
+ void setUrl (const QString&);
+ void setData (const QImage&);
+ void setType (const QString&);
+ bool isIntern () const;
+ QString url () const;
+ QImage data () const;
+ QString type () const;
+ QString asString () const;
+
+}; // class Picture
+
+//igx QDataStream& operator << (QDataStream&, const KABC::Picture&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Picture&);
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/plugin.sip b/python/pykde/sip/kabc/plugin.sip
new file mode 100644
index 00000000..aa40e394
--- /dev/null
+++ b/python/pykde/sip/kabc/plugin.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Plugin
+{
+%TypeHeaderCode
+#include <plugin.h>
+%End
+
+
+public:
+ Plugin ();
+ virtual void setType (const QString&);
+ virtual QString type () const;
+ virtual void setNameLabel (const QString&);
+ virtual QString nameLabel () const;
+ virtual void setDescriptionLabel (const QString&);
+ virtual QString descriptionLabel () const;
+
+}; // class Plugin
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/resource.sip b/python/pykde/sip/kabc/resource.sip
new file mode 100644
index 00000000..d14c51eb
--- /dev/null
+++ b/python/pykde/sip/kabc/resource.sip
@@ -0,0 +1,160 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class Ticket
+{
+%TypeHeaderCode
+#include <kabc/resource.h>
+%End
+
+
+public:
+ KABC::Resource* resource ();
+
+private:
+ Ticket (KABC::Resource*);
+
+}; // class Ticket
+
+
+%If ( KDE_3_2_0 - )
+
+class Resource : KRES::Resource
+{
+%TypeHeaderCode
+#include <kabc/resource.h>
+%End
+
+
+public:
+
+//ig class Iterator;
+
+
+//ig class ConstIterator;
+
+ Resource (const KConfig*);
+//ig virtual KABC::Resource::ConstIterator begin () const;
+//ig virtual KABC::Resource::Iterator begin ();
+//ig virtual KABC::Resource::ConstIterator end () const;
+//ig virtual KABC::Resource::Iterator end ();
+ KABC::AddressBook* addressBook ();
+ virtual void writeConfig (KConfig*);
+ virtual KABC::Ticket* requestSaveTicket () = 0;
+ virtual void releaseSaveTicket (KABC::Ticket*) = 0;
+ virtual bool load () = 0;
+ virtual bool asyncLoad ();
+ virtual void insertAddressee (const KABC::Addressee&);
+ virtual void removeAddressee (const KABC::Addressee&);
+ virtual bool save (KABC::Ticket*) = 0;
+ virtual bool asyncSave (KABC::Ticket*);
+ virtual KABC::Addressee findByUid (const QString&);
+ virtual KABC::Addressee::List findByName (const QString&);
+ virtual KABC::Addressee::List findByEmail (const QString&);
+ virtual KABC::Addressee::List findByCategory (const QString&);
+ virtual void clear ();
+ void setAddressBook (KABC::AddressBook*);
+
+signals:
+ void loadingFinished (KABC::Resource*);
+ void loadingError (KABC::Resource*, const QString&);
+ void savingFinished (KABC::Resource*);
+ void savingError (KABC::Resource*, const QString&);
+
+protected:
+ KABC::Ticket* createTicket (KABC::Resource*);
+
+}; // class Resource
+
+%End
+
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+class Resource : KABC::Plugin
+{
+%TypeHeaderCode
+#include <kabc/resource.h>
+%End
+
+
+public:
+ Resource (KABC::AddressBook*);
+ virtual bool open ();
+ virtual void close ();
+ virtual KABC::Ticket* requestSaveTicket ();
+ virtual bool load ();
+ virtual bool save (KABC::Ticket*);
+ KABC::AddressBook* addressBook ();
+ virtual QString identifier () const;
+ virtual void removeAddressee (const KABC::Addressee&);
+ virtual void cleanUp ();
+ virtual void setReadOnly (bool);
+ virtual bool readOnly () const;
+ virtual void setFastResource (bool);
+ virtual bool fastResource () const;
+ virtual void setName (const QString);
+ virtual QString name () const;
+ static QString cryptStr (const QString&);
+
+protected:
+ KABC::Ticket* createTicket (KABC::Resource*);
+
+}; // class Resource
+
+%End
+
+
+%If ( - KDE_3_1_0 )
+
+class Resource
+{
+%TypeHeaderCode
+#include <kabc/resource.h>
+%End
+
+
+public:
+ Resource (KABC::AddressBook*);
+ virtual bool open ();
+ virtual void close ();
+ virtual KABC::Ticket* requestSaveTicket ();
+ virtual bool load (KABC::AddressBook*);
+ virtual bool save (KABC::Ticket*);
+ void setAddressBook (KABC::AddressBook*);
+ KABC::AddressBook* addressBook ();
+
+protected:
+ KABC::Ticket* createTicket (KABC::Resource*);
+
+}; // class Resource
+
+%End
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/resourcefile.sip b/python/pykde/sip/kabc/resourcefile.sip
new file mode 100644
index 00000000..5c0f7721
--- /dev/null
+++ b/python/pykde/sip/kabc/resourcefile.sip
@@ -0,0 +1,176 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+%If ( KDE_3_2_0 - )
+
+class ResourceFile : KABC::Resource
+{
+%TypeHeaderCode
+#include <resourcefile.h>
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - )
+ ResourceFile (const KConfig*);
+ ResourceFile (const QString&, const QString& = "vcard");
+ virtual void writeConfig (KConfig*);
+ virtual bool doOpen ();
+ virtual void doClose ();
+
+%If ( KDE_3_5_1 - )
+ virtual KABC::Ticket* requestSaveTicket ();
+ virtual void releaseSaveTicket (KABC::Ticket*);
+%End
+
+ virtual bool load ();
+ virtual bool asyncLoad ();
+ virtual bool save (KABC::Ticket*);
+ virtual bool asyncSave (KABC::Ticket*);
+%End
+
+ void setFileName (const QString&);
+ QString fileName () const;
+
+%If ( KDE_3_5_1 - )
+ void setFormat (const QString&);
+ QString format () const;
+
+%If ( KDE_3_5_2 - )
+ virtual void removeAddressee (const KABC::Addressee&);
+%End
+
+%End
+
+
+protected slots:
+ void fileChanged ();
+
+protected:
+
+%If ( KDE_3_3_0 - )
+ void init (const QString&, const QString&);
+%End
+
+//ig bool lock (const QString&);
+//ig void unlock (const QString&);
+
+public:
+
+%If ( - KDE_3_5_2 )
+ void removeAddressee (const KABC::Addressee&);
+%End
+
+
+public:
+
+%If ( - KDE_3_3_0 )
+ ResourceFile (KABC::AddressBook*, const KConfig*);
+ ResourceFile (KABC::AddressBook*, const QString&, KABC::FormatPlugin* = 0);
+ bool open ();
+ void close ();
+%End
+
+
+%If ( - KDE_3_5_1 )
+ KABC::Ticket* requestSaveTicket ();
+ void releaseSaveTicket (KABC::Ticket*);
+
+%If ( - KDE_3_3_0 )
+ bool load ();
+ bool save (KABC::Ticket*);
+ virtual void cleanUp ();
+%End
+
+ virtual QString identifier () const;
+%End
+
+
+}; // class ResourceFile
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class ResourceFile : KABC::Resource
+{
+%TypeHeaderCode
+#include <resourcefile.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+ ResourceFile (KABC::AddressBook*, const KConfig*);
+ ResourceFile (KABC::AddressBook*, const QString&, KABC::FormatPlugin* = 0);
+ bool open ();
+ void close ();
+%End
+
+ KABC::Ticket* requestSaveTicket ();
+ void releaseSaveTicket (KABC::Ticket*);
+ bool load ();
+ bool save (KABC::Ticket*);
+ virtual void cleanUp ();
+ void setFileName (const QString&);
+ QString fileName () const;
+
+%If ( KDE_3_1_0 - )
+ virtual QString identifier () const;
+ void removeAddressee (const KABC::Addressee&);
+%End
+
+
+protected:
+//ig bool lock (const QString&);
+//ig void unlock (const QString&);
+
+public:
+
+%If ( - KDE_3_1_0 )
+ ResourceFile (KABC::AddressBook*, const QString&, KABC::Format* = 0);
+ bool load (KABC::AddressBook*);
+%End
+
+
+protected slots:
+
+%If ( - KDE_3_1_0 )
+ void checkFile ();
+%End
+
+
+}; // class ResourceFile
+
+%End
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/resourceselectdialog.sip b/python/pykde/sip/kabc/resourceselectdialog.sip
new file mode 100644
index 00000000..a701b5ac
--- /dev/null
+++ b/python/pykde/sip/kabc/resourceselectdialog.sip
@@ -0,0 +1,55 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class ResourceSelectDialog
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <resourceselectdialog.h>
+#include <kabc/resource.h>
+%End
+
+
+public:
+ ResourceSelectDialog (KABC::AddressBook*, QWidget* = 0, const char* = 0);
+ KABC::Resource* resource ();
+ static KABC::Resource* getResource (KABC::AddressBook*, QWidget* = 0);
+//force
+
+private:
+ ResourceSelectDialog (KABC::ResourceSelectDialog&);
+//end
+
+}; // class ResourceSelectDialog
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/secrecy.sip b/python/pykde/sip/kabc/secrecy.sip
new file mode 100644
index 00000000..e4fc8d6d
--- /dev/null
+++ b/python/pykde/sip/kabc/secrecy.sip
@@ -0,0 +1,92 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Secrecy
+{
+%TypeHeaderCode
+#include <secrecy.h>
+%End
+
+
+public:
+ typedef QValueList<int> TypeList;
+
+%If ( KDE_3_2_0 - )
+
+ enum Types
+ {
+ Public,
+ Private,
+ Confidential,
+ Invalid
+ };
+
+%End
+
+ Secrecy (int = Private );
+ bool operator == (const KABC::Secrecy&) const;
+ bool operator != (const KABC::Secrecy&) const;
+
+%If ( KDE_3_2_0 - )
+ bool isValid () const;
+%End
+
+ void setType (int);
+ int type () const;
+ static TypeList typeList ();
+ static QString typeLabel (int);
+ QString asString () const;
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum Types
+ {
+ Public,
+ Private,
+ Confidential
+ };
+
+%End
+
+
+}; // class Secrecy
+
+
+%If ( KDE_3_4_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::Secrecy&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Secrecy&);
+%End
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/sortmode.sip b/python/pykde/sip/kabc/sortmode.sip
new file mode 100644
index 00000000..36488845
--- /dev/null
+++ b/python/pykde/sip/kabc/sortmode.sip
@@ -0,0 +1,83 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+namespace KABC
+{
+
+class SortMode
+{
+%TypeHeaderCode
+#include <sortmode.h>
+%End
+
+
+public:
+ virtual bool lesser (const KABC::Addressee&, const KABC::Addressee&) const = 0;
+
+}; // class SortMode
+
+
+class NameSortMode : KABC::SortMode
+{
+%TypeHeaderCode
+#include <sortmode.h>
+%End
+
+
+public:
+
+ enum NameType
+ {
+ FormattedName,
+ FamilyName,
+ GivenName
+ };
+
+ NameSortMode ();
+ NameSortMode (KABC::NameSortMode::NameType, bool = 1);
+ virtual bool lesser (const KABC::Addressee&, const KABC::Addressee&) const;
+
+}; // class NameSortMode
+
+
+class FieldSortMode : KABC::SortMode
+{
+%TypeHeaderCode
+#include <sortmode.h>
+%End
+
+
+public:
+ FieldSortMode (KABC::Field*, bool = 1);
+ virtual bool lesser (const KABC::Addressee&, const KABC::Addressee&) const;
+
+}; // class FieldSortMode
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/sound.sip b/python/pykde/sip/kabc/sound.sip
new file mode 100644
index 00000000..a902014c
--- /dev/null
+++ b/python/pykde/sip/kabc/sound.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KABC
+{
+
+class Sound
+{
+%TypeHeaderCode
+#include <sound.h>
+%End
+
+
+public:
+ Sound ();
+ Sound (const QString&);
+ Sound (const QByteArray&);
+ bool operator == (const KABC::Sound&) const;
+ bool operator != (const KABC::Sound&) const;
+ void setUrl (const QString&);
+
+%If ( KDE_3_4_0 - )
+ bool isEmpty () const;
+%End
+
+ void setData (const QByteArray&);
+ bool isIntern () const;
+ QString url () const;
+ QByteArray data () const;
+ QString asString () const;
+
+}; // class Sound
+
+//igx QDataStream& operator << (QDataStream&, const KABC::Sound&);
+//igx QDataStream& operator >> (QDataStream&, KABC::Sound&);
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/stdaddressbook.sip b/python/pykde/sip/kabc/stdaddressbook.sip
new file mode 100644
index 00000000..65ac7166
--- /dev/null
+++ b/python/pykde/sip/kabc/stdaddressbook.sip
@@ -0,0 +1,111 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class StdAddressBook : KABC::AddressBook
+{
+%TypeHeaderCode
+#include <kabc/resource.h>
+#include <addressee.h>
+#include <addressbook.h>
+#include <stdaddressbook.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static KABC::StdAddressBook* self ();
+ static KABC::StdAddressBook* self (bool);
+%End
+
+ static bool save ();
+
+%If ( KDE_3_1_1 - )
+ static void handleCrash ();
+%End
+
+ static QString fileName ();
+
+%If ( KDE_3_1_0 - )
+ static QString directoryName ();
+ static void setAutomaticSave (bool);
+ static void close ();
+ static bool automaticSave ();
+
+%If ( KDE_3_2_0 - )
+ KABC::Addressee whoAmI ();
+ void setWhoAmI (const KABC::Addressee&);
+%End
+
+%End
+
+
+protected:
+ StdAddressBook ();
+
+%If ( KDE_3_1_0 - )
+ StdAddressBook (bool);
+ void init (bool);
+
+%If ( KDE_3_2_2 - )
+ bool saveAll ();
+%End
+
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+ static KABC::AddressBook* self ();
+%End
+
+
+%If ( KDE_3_1_0 - KDE_3_2_2 )
+ static KABC::AddressBook* self (bool);
+%End
+
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ ~StdAddressBook ();
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+ QString identifier ();
+%End
+
+
+}; // class StdAddressBook
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/timezone.sip b/python/pykde/sip/kabc/timezone.sip
new file mode 100644
index 00000000..6c9fe001
--- /dev/null
+++ b/python/pykde/sip/kabc/timezone.sip
@@ -0,0 +1,59 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class TimeZone
+{
+%TypeHeaderCode
+#include <timezone.h>
+%End
+
+
+public:
+ TimeZone ();
+ TimeZone (int);
+ void setOffset (int);
+ int offset () const;
+ bool isValid () const;
+ bool operator == (const KABC::TimeZone&) const;
+
+%If ( KDE_3_1_0 - )
+ bool operator != (const KABC::TimeZone&) const;
+%End
+
+ QString asString () const;
+
+}; // class TimeZone
+
+
+%If ( KDE_3_1_0 - )
+//igx QDataStream& operator << (QDataStream&, const KABC::TimeZone&);
+//igx QDataStream& operator >> (QDataStream&, KABC::TimeZone&);
+%End
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/vcardconverter.sip b/python/pykde/sip/kabc/vcardconverter.sip
new file mode 100644
index 00000000..c597e025
--- /dev/null
+++ b/python/pykde/sip/kabc/vcardconverter.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <vcardconverter.h>
+%End
+
+
+%If ( KDE_3_1_1 - )
+namespace KABC
+{
+
+class VCardConverter
+{
+%TypeHeaderCode
+#include <vcardconverter.h>
+%End
+
+
+public:
+
+ enum Version
+ {
+ v2_1,
+ v3_0
+ };
+
+ VCardConverter ();
+
+%If ( KDE_3_2_0 - )
+ QString createVCard (const KABC::Addressee&, KABC::VCardConverter::Version = v3_0 );
+ QString createVCards (KABC::Addressee::List, KABC::VCardConverter::Version = v3_0 );
+ KABC::Addressee parseVCard (const QString&);
+ KABC::Addressee::List parseVCards (const QString&);
+%End
+
+ bool vCardToAddressee (const QString&, KABC::Addressee&, KABC::VCardConverter::Version = v3_0 );
+ bool addresseeToVCard (const KABC::Addressee&, QString&, KABC::VCardConverter::Version = v3_0 );
+
+}; // class VCardConverter
+
+
+%If ( KDE_3_2_0 - )
+QString dateToVCardString (const QDateTime&);
+QString dateToVCardString (const QDate&);
+QDateTime VCardStringToDate (const QString&);
+%End
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kabc/vcardformat.sip b/python/pykde/sip/kabc/vcardformat.sip
new file mode 100644
index 00000000..a5a3c0f9
--- /dev/null
+++ b/python/pykde/sip/kabc/vcardformat.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KABC
+{
+
+class VCardFormat : KABC::Format
+{
+%TypeHeaderCode
+#include <vcardformat.h>
+%End
+
+
+public:
+ VCardFormat ();
+ bool load (KABC::AddressBook*, const QString&);
+ bool save (KABC::AddressBook*, const QString&);
+
+}; // class VCardFormat
+
+}; // namespace KABC
+
diff --git a/python/pykde/sip/kabc/vcardformatplugin.sip b/python/pykde/sip/kabc/vcardformatplugin.sip
new file mode 100644
index 00000000..74f51f33
--- /dev/null
+++ b/python/pykde/sip/kabc/vcardformatplugin.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kabc version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_1 - )
+namespace KABC
+{
+
+class VCardFormatPlugin : KABC::FormatPlugin
+{
+%TypeHeaderCode
+#include <vcardformatplugin.h>
+%End
+
+
+public:
+ VCardFormatPlugin ();
+ bool load (KABC::Addressee&, QFile*);
+ bool loadAll (KABC::AddressBook*, KABC::Resource*, QFile*);
+ void save (const KABC::Addressee&, QFile*);
+ void saveAll (KABC::AddressBook*, KABC::Resource*, QFile*);
+ bool checkFormat (QFile*) const;
+
+}; // class VCardFormatPlugin
+
+}; // namespace KABC
+
+%End
+
diff --git a/python/pykde/sip/kdecore/bytearray.sip b/python/pykde/sip/kdecore/bytearray.sip
new file mode 100644
index 00000000..455f0519
--- /dev/null
+++ b/python/pykde/sip/kdecore/bytearray.sip
@@ -0,0 +1,812 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+// module kdecore version KDE_3_2_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <qvariant.h>
+#include <sipdcopQValueList.h>
+%End
+
+
+void dcop_add (QDataStream&, int /Constrained/, const QCString& = "int");
+//void dcop_add (QDataStream&, longlong);
+//void dcop_add (QDataStream&, ulonglong);
+void dcop_add (QDataStream&, double, const QCString& = "double");
+void dcop_add (QDataStream&, QString);
+void dcop_add (QDataStream&, QStringList);
+void dcop_add (QDataStream&, QCString);
+void dcop_add (QDataStream&, KURL);
+void dcop_add (QDataStream&, KURL::List);
+void dcop_add (QDataStream&, QSize);
+void dcop_add (QDataStream&, QRect);
+void dcop_add (QDataStream&, QRegion);
+void dcop_add (QDataStream&, QPoint);
+void dcop_add (QDataStream&, QFont);
+void dcop_add (QDataStream&, QCursor);
+void dcop_add (QDataStream&, QPixmap);
+void dcop_add (QDataStream&, QColor);
+void dcop_add (QDataStream&, QColorGroup);
+void dcop_add (QDataStream&, QPalette);
+void dcop_add (QDataStream&, QBrush);
+void dcop_add (QDataStream&, QWidget::FocusPolicy);
+void dcop_add (QDataStream&, DCOPRef);
+void dcop_add (QDataStream&, QVariant);
+void dcop_add (QDataStream&, QDate);
+void dcop_add (QDataStream&, QTime);
+void dcop_add (QDataStream&, QDateTime);
+void dcop_add (QDataStream&, QImage);
+void dcop_add (QDataStream&, QKeySequence);
+void dcop_add (QDataStream&, QPen);
+void dcop_add (QDataStream&, QPicture);
+void dcop_add (QDataStream&, QPointArray);
+
+void dcop_add (QDataStream&, SIP_PYDICT, QCString);
+%MethodCode
+ int iserr = 0;
+ if (*a2 == "QMap<QCString,DCOPRef>")
+ {
+ QMap<QCString,DCOPRef> *map = (QMap<QCString,DCOPRef> *)sipForceConvertTo_QMap_0200QCString_0200DCOPRef(a1, &iserr);
+
+ if (iserr)
+ {
+ sipIsErr = 1;
+ return 0;
+ }
+ *a0 << *map;
+ }
+ else if (*a2 == "QMap<QString,DCOPRef>")
+ {
+ QMap<QString,DCOPRef> *map = (QMap<QString,DCOPRef> *)sipForceConvertTo_QMap_0200QString_0200DCOPRef(a1, &iserr);
+
+ if (iserr)
+ {
+ sipIsErr = 1;
+ return 0;
+ }
+ *a0 << *map;
+ }
+%End
+
+
+void dcop_add (QDataStream&, SIP_PYLIST, QCString);
+%MethodCode
+ int iserr = 0;
+ if (*a2 == "QValueList<QCString>")
+ {
+ QValueList<QCString> *list = (QValueList<QCString> *)sipForceConvertTo_QValueList_0200QCString (a1, &iserr);
+
+ if (iserr)
+ {
+ sipIsErr = 1;
+ return 0;
+ }
+ *a0 << *list;
+ }
+ else if (*a2 == "QValueList<DCOPRef>")
+ {
+ QValueList<DCOPRef> *list = (QValueList<DCOPRef> *)sipForceConvertTo_QValueList_0200DCOPRef (a1, &iserr);
+
+ if (iserr)
+ {
+ sipIsErr = 1;
+ return 0;
+ }
+ *a0 << *list;
+ }
+%End
+
+
+void dcop_next (QDataStream&, QCString&);
+%MethodCode
+ if (*a1 == "char")
+ {
+ Q_INT8 res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "bool")
+ {
+ bool res;
+ *a0 >> res;
+ return PyBool_FromLong ((long)res);
+ }
+ else if (*a1 == "int")
+ {
+ int res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "long")
+ {
+ long res;
+ *a0 >> res;
+ return PyLong_FromLong (res);
+ }
+ else if (*a1 == "short")
+ {
+ short res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ if (*a1 == "uchar" || *a1 == "unsigned char")
+ {
+ Q_UINT8 res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "uint" || *a1 == "unsigned int")
+ {
+ unsigned int res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "ulong" || *a1 == "unsigned long")
+ {
+ unsigned long res;
+ *a0 >> res;
+ return PyLong_FromLong (res);
+ }
+ else if (*a1 == "Q_INT32")
+ {
+ Q_INT32 res;
+ *a0 >> res;
+ return PyLong_FromLong ((long)res);
+ }
+ else if (*a1 == "pid_t")
+ {
+ pid_t res;
+ *a0 >> res;
+ return PyLong_FromLong ((long)res);
+ }
+ else if (*a1 == "ushort" || *a1 == "unsigned short")
+ {
+ unsigned short res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "float")
+ {
+ float res;
+ *a0 >> res;
+ return PyFloat_FromDouble ((double)res);
+ }
+ else if (*a1 == "double")
+ {
+ double res;
+ *a0 >> res;
+ return PyFloat_FromDouble (res);
+ }
+ else if (*a1 == "QString")
+ {
+ QString res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QString (res),sipClass_QString);
+ }
+ else if (*a1 == "QStringList")
+ {
+ QStringList res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QStringList (res),sipClass_QStringList);
+ }
+ else if (*a1 == "QCString")
+ {
+ QCString res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QCString (res),sipClass_QCString);
+ }
+ else if (*a1 == "KURL")
+ {
+ KURL res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new KURL (res),sipClass_KURL);
+ }
+ else if (*a1 == "KURL::List")
+ {
+ KURL::List res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new KURL::List (res),sipClass_KURL_List);
+ }
+ else if (*a1 == "QSize")
+ {
+ QSize res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QSize (res),sipClass_QSize);
+ }
+ else if (*a1 == "QRect")
+ {
+ QRect res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QRect (res),sipClass_QRect);
+ }
+ else if (*a1 == "QRegion")
+ {
+ QRect res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QRegion (res),sipClass_QRegion);
+ }
+ else if (*a1 == "QPoint")
+ {
+ QPoint res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPoint (res),sipClass_QPoint);
+ }
+ else if (*a1 == "QFont")
+ {
+ QFont res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QFont (res),sipClass_QFont);
+ }
+ else if (*a1 == "QCursor")
+ {
+ QCursor res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QCursor (res),sipClass_QCursor);
+ }
+ else if (*a1 == "QPixmap")
+ {
+ QPixmap res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPixmap (res),sipClass_QPixmap);
+ }
+ else if (*a1 == "QColor")
+ {
+ QColor res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QColor (res),sipClass_QColor);
+ }
+ else if (*a1 == "QColorGroup")
+ {
+ QColorGroup res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QColorGroup (res),sipClass_QColorGroup);
+ }
+ else if (*a1 == "QPalette")
+ {
+ QPalette res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPalette (res),sipClass_QPalette);
+ }
+ else if (*a1 == "QBrush")
+ {
+ QBrush res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QBrush (res),sipClass_QBrush);
+ }
+ else if (*a1 == "FocusPolicy")
+ {
+ unsigned int res;
+ *a0 >> res;
+ return PyInt_FromLong ((long)res);
+ }
+ else if (*a1 == "DCOPRef")
+ {
+ DCOPRef res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new DCOPRef (res),sipClass_DCOPRef);
+ }
+ else if (*a1 == "QVariant")
+ {
+ QVariant res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QVariant (res),sipClass_QVariant);
+ }
+ else if (*a1 == "QDate")
+ {
+ QDate res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QDate (res),sipClass_QDate);
+ }
+ else if (*a1 == "QTime")
+ {
+ QTime res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QTime (res),sipClass_QTime);
+ }
+ else if (*a1 == "QDateTime")
+ {
+ QDateTime res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QDateTime (res),sipClass_QDateTime);
+ }
+ else if (*a1 == "QImage")
+ {
+ QImage res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QImage (res),sipClass_QImage);
+ }
+ else if (*a1 == "QKeySequence")
+ {
+ QKeySequence res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QKeySequence (res),sipClass_QKeySequence);
+ }
+ else if (*a1 == "QPen")
+ {
+ QPen res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPen (res),sipClass_QPen);
+ }
+ else if (*a1 == "QPicture")
+ {
+ QPicture res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPicture (res),sipClass_QPicture);
+ }
+ else if (*a1 == "QPointArray")
+ {
+ QPointArray res;
+ *a0 >> res;
+ return sipBuildResult (NULL, "N", new QPointArray (res),sipClass_QPointArray);
+ }
+ else if (*a1 == "QMap<QCString,DCOPRef>")
+ {
+ QMap<QCString, DCOPRef> res;
+ *a0 >> res;
+// return sipConvertFrom_QMap_0200QCString_0200DCOPRef (&res);
+ return sipConvertFromMappedType (&res, &sipMappedTypeDef_QMap_0200QCString_0200DCOPRef, NULL);
+ }
+ else if (*a1 == "QMap<QString,DCOPRef>")
+ {
+ QMap<QString, DCOPRef> res;
+ *a0 >> res;
+// return sipConvertFrom_QMap_0200QString_0200DCOPRef (&res);
+ return sipConvertFromMappedType (&res, &sipMappedTypeDef_QMap_0200QString_0200DCOPRef, NULL);
+ }
+ else if (*a1 == "QValueList<QCString>")
+ {
+ QValueList<QCString> res;
+ *a0 >> res;
+// return sipConvertFrom_QValueList_0200QCString (&res);
+ return sipConvertFromMappedType (&res, (sipMappedType *) sipFindMappedType ("sipMappedTypeDef_QValueList_0200QCString"), NULL);
+ }
+ else if (*a1 == "QValueList<DCOPRef>" || *a1 == "QCStringList")
+ {
+ QValueList<DCOPRef> res;
+ *a0 >> res;
+// return sipConvertFrom_QValueList_0200DCOPRef (&res);
+ return sipConvertFromMappedType (&res, &sipMappedTypeDef_QValueList_0200DCOPRef, NULL);
+ }
+
+%End
+
+%ModuleHeaderCode
+#include <qcstring.h>
+#include <qdatastream.h>
+#include <dcopref.h>
+%End
+
+%ModuleCode
+
+void dcop_add (QDataStream& s, int value, const QCString& type_)
+{
+ if (type_ == "char")
+ s << (Q_INT8)value;
+ else if (type_ == "bool")
+ s << (bool)value;
+ else if (type_ == "short")
+ s << (short)value;
+ else if (type_ == "int")
+ s << (int)value;
+ else if (type_ == "long")
+ s << (long)value;
+ else if (type_== "uchar" || type_ == "unsigned char")
+ s << (Q_UINT8)value;
+ else if (type_ == "ushort" || type_ == "unsigned short")
+ s << (ushort)value;
+ else if (type_ == "uint" || type_ == "unsigned int")
+ s << (uint)value;
+ else if (type_ == "ulong" || type_ == "unsigned long")
+ s << (long)value;
+}
+
+/*void dcop_add (QDataStream& s, longlong value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, ulonglong value)
+{
+ s << value;
+}*/
+
+void dcop_add (QDataStream& s, double value, const QCString& type_)
+{
+ if (type_ == "double")
+ s << value;
+ else if (type_ == "float")
+ s << (float)value;
+}
+
+void dcop_add (QDataStream& s, QString value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QStringList value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QCString value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, KURL value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, KURL::List value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QSize value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QRect value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QRegion value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPoint value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QFont value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QCursor value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPixmap value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QColor value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QColorGroup value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPalette value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QBrush value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QWidget::FocusPolicy value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, DCOPRef value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QVariant value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QDate value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QTime value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QDateTime value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QImage value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QKeySequence value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPen value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPicture value)
+{
+ s << value;
+}
+
+void dcop_add (QDataStream& s, QPointArray value)
+{
+ s << value;
+}
+
+%End
+
+
+%MappedType QMap<QCString,DCOPRef>
+//converts a Python dict of QCString:DCOPRef
+{
+%TypeHeaderCode
+#include <qmap.h>
+#include <sipdcopDCOPRef.h>
+#include <sipqtQCString.h>
+//typedef QMap<QCString,DCOPRef> DCOPRefMap;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QCString,DCOPRef> cppmap = *sipCpp;
+ QMap<QCString,DCOPRef>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QCString acpp = it.key ();
+ DCOPRef bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new DCOPRef (bcpp), sipClass_DCOPRef)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QCString,DCOPRef> *cppmap = new QMap<QCString,DCOPRef>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QCString *acpp;
+ DCOPRef *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+ acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
+ bcpp = (DCOPRef *)sipForceConvertTo_DCOPRef (belem, &iserr);
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+%MappedType QMap<QString,DCOPRef>
+//converts a Python dict of QString:DCOPRef
+{
+%TypeHeaderCode
+#include <qmap.h>
+#include <sipdcopDCOPRef.h>
+#include <sipqtQString.h>
+//typedef QMap<QString,DCOPRef> DCOPRefMap;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString,DCOPRef> cppmap = *sipCpp;
+ QMap<QString,DCOPRef>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QString acpp = it.key ();
+ DCOPRef bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new DCOPRef (bcpp), sipClass_DCOPRef)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QString,DCOPRef> *cppmap = new QMap<QString,DCOPRef>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QString *acpp;
+ DCOPRef *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
+ bcpp = (DCOPRef *)sipForceConvertTo_DCOPRef (belem, &iserr);
+
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<DCOPRef>
+//converts a Python list of DCOPRef
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<DCOPRef> *cpplist = (QValueList<DCOPRef> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<DCOPRef>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new DCOPRef (*it), sipClass_DCOPRef)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<DCOPRef> *cpplist = new QValueList<DCOPRef>;
+
+ PyObject *elem;
+ DCOPRef *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (DCOPRef *)sipForceConvertTo_DCOPRef (elem, &iserr);
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
diff --git a/python/pykde/sip/kdecore/fixx11h.sip b/python/pykde/sip/kdecore/fixx11h.sip
new file mode 100644
index 00000000..87debaf1
--- /dev/null
+++ b/python/pykde/sip/kdecore/fixx11h.sip
@@ -0,0 +1,30 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <X11/X.h>
+#include <fixx11h.h>
+%End
+
diff --git a/python/pykde/sip/kdecore/kaboutdata.sip b/python/pykde/sip/kdecore/kaboutdata.sip
new file mode 100644
index 00000000..0ec5b5b1
--- /dev/null
+++ b/python/pykde/sip/kdecore/kaboutdata.sip
@@ -0,0 +1,301 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAboutPerson
+{
+%TypeHeaderCode
+#include <kaboutdata.h>
+%End
+
+
+public:
+ KAboutPerson (const char*, const char*, const char*, const char*);
+ KAboutPerson ();
+ QString name () const;
+ QString task () const;
+ QString emailAddress () const;
+ QString webAddress () const;
+
+}; // class KAboutPerson
+
+
+class KAboutTranslator
+{
+%TypeHeaderCode
+#include <kaboutdata.h>
+%End
+
+
+public:
+ KAboutTranslator (const QString& = QString ::null , const QString& = QString ::null );
+ QString name () const;
+ QString emailAddress () const;
+
+}; // class KAboutTranslator
+
+
+class KAboutData
+{
+%TypeHeaderCode
+#include <kaboutdata.h>
+%End
+
+
+public:
+
+ enum LicenseKey
+ {
+ License_Custom,
+ License_File,
+ License_Unknown,
+ License_GPL,
+ License_GPL_V2,
+ License_LGPL,
+ License_LGPL_V2,
+ License_BSD,
+ License_Artistic,
+ License_QPL,
+ License_QPL_V1_0
+ };
+
+
+public:
+ KAboutData (const char*, const char*, const char*, const char* = 0, int = License_Unknown , const char* = 0, const char* = 0, const char* = 0, const char* = "submit@bugs.kde.org");
+ void addAuthor (const char*, const char* = 0, const char* = 0, const char* = 0);
+ void addCredit (const char*, const char* = 0, const char* = 0, const char* = 0);
+ void setTranslator (const char*, const char*);
+ void setLicenseText (const char*);
+ void setLicenseTextFile (const QString&);
+
+%If ( KDE_3_3_0 - )
+ void setAppName (const char*);
+ void setProgramName (const char*);
+
+%If ( KDE_3_4_0 - )
+ void setProgramLogo (const QImage&);
+%End
+
+ void setVersion (const char*);
+ void setShortDescription (const char*);
+ void setLicense (KAboutData::LicenseKey);
+ void setCopyrightStatement (const char*);
+ void setOtherText (const char*);
+ void setHomepage (const char*);
+ void setBugAddress (const char*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void setProductName (const char*);
+%End
+
+ const char* appName () const;
+
+%If ( KDE_3_2_0 - )
+ const char* productName () const;
+%End
+
+ QString programName () const;
+
+%If ( KDE_3_5_1 - )
+ const char* internalProgramName () const;
+ void translateInternalProgramName () const;
+%End
+
+
+%If ( KDE_3_4_0 - )
+ QImage programLogo () const;
+%End
+
+ QString version () const;
+
+%If ( KDE_3_5_1 - )
+ const char* internalVersion () const;
+%End
+
+ QString shortDescription () const;
+ QString homepage () const;
+ QString bugAddress () const;
+
+%If ( KDE_3_5_1 - )
+ const char* internalBugAddress () const;
+%End
+
+ const QValueList<KAboutPerson> authors () const;
+ const QValueList<KAboutPerson> credits () const;
+ const QValueList<KAboutTranslator> translators () const;
+ static QString aboutTranslationTeam ();
+ QString otherText () const;
+ QString license () const;
+ QString copyrightStatement () const;
+
+%If ( KDE_3_5_0 - )
+ QString customAuthorPlainText () const;
+ QString customAuthorRichText () const;
+ bool customAuthorTextEnabled () const;
+ void setCustomAuthorText (const QString&, const QString&);
+ void unsetCustomAuthorText ();
+%End
+
+
+}; // class KAboutData
+
+
+
+%MappedType QValueList<KAboutPerson>
+//converts a Python list of KAboutPerson
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KAboutPerson> *cpplist = (QValueList<KAboutPerson> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KAboutPerson>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KAboutPerson (*it), sipClass_KAboutPerson)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KAboutPerson> *cpplist = new QValueList<KAboutPerson>;
+
+ PyObject *elem;
+ KAboutPerson *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KAboutPerson *)sipForceConvertTo_KAboutPerson (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<KAboutTranslator>
+//converts a Python list of KAboutTranslator
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KAboutTranslator> *cpplist = (QValueList<KAboutTranslator> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KAboutTranslator>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KAboutTranslator (*it), sipClass_KAboutTranslator)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KAboutTranslator> *cpplist = new QValueList<KAboutTranslator>;
+
+ PyObject *elem;
+ KAboutTranslator *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KAboutTranslator *)sipForceConvertTo_KAboutTranslator (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kaccel.sip b/python/pykde/sip/kdecore/kaccel.sip
new file mode 100644
index 00000000..29f999b0
--- /dev/null
+++ b/python/pykde/sip/kdecore/kaccel.sip
@@ -0,0 +1,239 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAccel : QAccel
+{
+%TypeHeaderCode
+#include <kaccel.h>
+%End
+
+
+public:
+ KAccel (QWidget* /TransferThis/, const char* = 0);
+ KAccel (QWidget*, QObject* /TransferThis/, const char* = 0);
+ KAccelActions& actions ();
+ bool isEnabled () const;
+ void setEnabled (bool);
+ bool setAutoUpdate (bool);
+
+%If ( KDE_3_1_4 - )
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, bool = 1);
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, bool = 1);
+ KAccelAction* insert (const char*, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, bool = 1);
+ KAccelAction* insert (KStdAccel::StdAccel, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, bool = 1);
+%End
+
+ bool remove (const QString&);
+ bool updateConnections ();
+ const KShortcut& shortcut (const QString&) const;
+ bool setShortcut (const QString&, const KShortcut&);
+
+%If ( KDE_3_1_4 - )
+ bool setSlot (const QString&, SIP_RXOBJ_CON, SIP_SLOT_CON ());
+%End
+
+ bool setEnabled (const QString&, bool);
+ const QString& configGroup () const;
+ void setConfigGroup (const QString&);
+ bool readSettings (KConfigBase* = 0);
+ bool writeSettings (KConfigBase* = 0) const;
+ void emitKeycodeChanged ();
+
+signals:
+ void keycodeChanged ();
+
+public:
+ bool insertItem (const QString&, const QString&, const char*, int = 0, QPopupMenu* = 0, bool = 1);
+ bool insertItem (const QString&, const QString&, int, int, QPopupMenu*, bool = 1);
+ bool insertStdItem (KStdAccel::StdAccel, const QString& = QString ::null );
+
+%If ( KDE_3_1_4 - )
+ bool connectItem (const QString&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1);
+ bool connectItem (KStdAccel::StdAccel, SIP_RXOBJ_CON, SIP_SLOT_CON ());
+%End
+
+ bool removeItem (const QString&);
+ bool setItemEnabled (const QString&, bool);
+ void changeMenuAccel (QPopupMenu*, int, const QString&);
+ void changeMenuAccel (QPopupMenu*, int, KStdAccel::StdAccel);
+ static int stringToKey (const QString&);
+ int currentKey (const QString&) const;
+ QString findKey (int) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig bool getAutoUpdate ();
+//ig KAccelAction* insert (const QString&, const QString&);
+%End
+
+
+public:
+
+%If ( - KDE_3_1_4 )
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const QObject*, const char*, bool = 1, bool = 1);
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, const QObject*, const char*, bool = 1, bool = 1);
+ KAccelAction* insert (const char*, const KShortcut&, const QObject*, const char*, bool = 1, bool = 1);
+ KAccelAction* insert (KStdAccel::StdAccel, const QObject*, const char*, bool = 1, bool = 1);
+ bool setSlot (const QString&, const QObject*, const char*);
+%End
+
+
+public:
+
+%If ( - KDE_3_1_4 )
+ bool connectItem (const QString&, const QObject*, const char*, bool = 1);
+ bool connectItem (KStdAccel::StdAccel, const QObject*, const char*);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KAccel, &sipClass_KAccel},
+ {sipName_KApplication, &sipClass_KApplication},
+ {sipName_KAsyncIO, &sipClass_KAsyncIO},
+ {sipName_KAudioPlayer, &sipClass_KAudioPlayer},
+ {sipName_KBufferedIO, &sipClass_KBufferedIO},
+#if KDE_VERSION >= 0x030100
+ {sipName_KClipboardSynchronizer, &sipClass_KClipboardSynchronizer},
+#endif
+ {sipName_KCompletion, &sipClass_KCompletion},
+ {sipName_KConfig, &sipClass_KConfig},
+ {sipName_KConfigBase, &sipClass_KConfigBase},
+ {sipName_KConfigGroup, &sipClass_KConfigGroup},
+ {sipName_KDesktopFile, &sipClass_KDesktopFile},
+ {sipName_KGlobalAccel, &sipClass_KGlobalAccel},
+ {sipName_KLibFactory, &sipClass_KLibFactory},
+ {sipName_KLibLoader, &sipClass_KLibLoader},
+ {sipName_KLibrary, &sipClass_KLibrary},
+ {sipName_KMultipleDrag, &sipClass_KMultipleDrag},
+ {sipName_KProcIO, &sipClass_KProcIO},
+ {sipName_KProcess, &sipClass_KProcess},
+ {sipName_KProcessController, &sipClass_KProcessController},
+ {sipName_KServerSocket, &sipClass_KServerSocket},
+ {sipName_KShellProcess, &sipClass_KShellProcess},
+ {sipName_KSimpleConfig, &sipClass_KSimpleConfig},
+ {sipName_KSocket, &sipClass_KSocket},
+ {sipName_KStartupInfo, &sipClass_KStartupInfo},
+ {sipName_KUniqueApplication, &sipClass_KUniqueApplication},
+ {sipName_KWinModule, &sipClass_KWinModule},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+%End
+
+
+}; // class KAccel
+
+
+
+%MappedType QMap<int,QString>
+//converts a Python dict of int:QString
+{
+%TypeHeaderCode
+#include <sipqtQString.h>
+#include <kaccel.h>
+%End
+
+%ConvertFromTypeCode
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<int,QString> map = *sipCpp;
+ QMap<int,QString>::ConstIterator it;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ PyObject *iKey = PyInt_FromLong (((long) it.key ()));
+ PyObject *sData = PyString_FromString ((char *)((QString *)&it.data ()));
+
+ if ((iKey == NULL) || (sData == NULL) || (PyDict_SetItem (dict, iKey, sData) < 0))
+ {
+ Py_XDECREF (iKey);
+ Py_XDECREF (sData);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a KKeyMapOrder on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<int,QString> *map = new QMap<int,QString>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ int iKey;
+ QString *sData;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ iKey = PyInt_AS_LONG (key);
+ sData = (QString *)sipForceConvertTo_QString (value, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete map;
+ return 0;
+ }
+
+ map->insert (iKey, *sData);
+ }
+
+ *sipCppPtr = map;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kaccelaction.sip b/python/pykde/sip/kdecore/kaccelaction.sip
new file mode 100644
index 00000000..4036c172
--- /dev/null
+++ b/python/pykde/sip/kdecore/kaccelaction.sip
@@ -0,0 +1,121 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAccelAction
+{
+%TypeHeaderCode
+#include <kaccelaction.h>
+%End
+
+
+public:
+ KAccelAction ();
+ KAccelAction (const KAccelAction&);
+ KAccelAction (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, const QObject*, const char*, bool, bool);
+ void clear ();
+ bool init (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, const QObject*, const char*, bool, bool);
+ const QString& name () const;
+ const QString& label () const;
+ const QString& whatsThis () const;
+ const KShortcut& shortcut () const;
+ const KShortcut& shortcutDefault () const;
+ const KShortcut& shortcutDefault3 () const;
+ const KShortcut& shortcutDefault4 () const;
+ const QObject* objSlotPtr () const;
+ const char* methodSlotPtr () const;
+ bool isConfigurable () const;
+ bool isEnabled () const;
+ void setName (const QString&);
+ void setLabel (const QString&);
+ void setWhatsThis (const QString&);
+ bool setShortcut (const KShortcut&);
+ void setSlot (const QObject*, const char*);
+ void setConfigurable (bool);
+ void setEnabled (bool);
+ int getID () const;
+ void setID (int);
+ bool isConnected () const;
+ bool setKeySequence (uint, const KKeySequence&);
+ void clearShortcut ();
+ bool contains (const KKeySequence&);
+ QString toString () const;
+ QString toStringInternal () const;
+ static bool useFourModifierKeys ();
+ static void useFourModifierKeys (bool);
+
+protected:
+ void incConnections ();
+ void decConnections ();
+
+}; // class KAccelAction
+
+
+class KAccelActions
+{
+%TypeHeaderCode
+#include <kaccelaction.h>
+%End
+
+
+public:
+ KAccelActions ();
+ KAccelActions (const KAccelActions&);
+ void clear ();
+ bool init (const KAccelActions&);
+ bool init (KConfigBase&, const QString&);
+ void updateShortcuts (KAccelActions&);
+ int actionIndex (const QString&) const;
+ KAccelAction* actionPtr (uint);
+ KAccelAction* actionPtr (const QString&);
+ KAccelAction* actionPtr (KKeySequence);
+
+%If ( KDE_3_1_4 - )
+ KAccelAction& operator [] (uint);
+%MethodCode
+//returns (KAccelAction&)
+//takes index | (uint)
+ sipRes = &((*sipCpp) [a0]);
+%End
+
+%End
+
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, const QObject* = 0, const char* = 0, bool = 1, bool = 1);
+ KAccelAction* insert (const QString&, const QString&);
+ bool remove (const QString&);
+ bool readActions (const QString& = "Shortcuts", KConfigBase* = 0);
+ bool writeActions (const QString& = "Shortcuts", KConfigBase* = 0, bool = 0, bool = 0) const;
+ void emitKeycodeChanged ();
+ uint count () const;
+
+protected:
+ void resize (uint);
+ void insertPtr (KAccelAction*);
+
+private:
+ KAccelActions (KAccelBase*);
+
+}; // class KAccelActions
+
diff --git a/python/pykde/sip/kdecore/kaccelbase.sip b/python/pykde/sip/kdecore/kaccelbase.sip
new file mode 100644
index 00000000..8b2835d3
--- /dev/null
+++ b/python/pykde/sip/kdecore/kaccelbase.sip
@@ -0,0 +1,102 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAccelBase
+{
+%TypeHeaderCode
+#include <kaccelbase.h>
+%End
+
+
+public:
+
+ enum Init
+ {
+ QT_KEYS,
+ NATIVE_KEYS
+ };
+
+
+ enum Signal
+ {
+ KEYCODE_CHANGED
+ };
+
+ KAccelBase (int);
+ uint actionCount () const;
+ KAccelActions& actions ();
+ bool isEnabled () const;
+ KAccelAction* actionPtr (const QString&);
+ KAccelAction* actionPtr (const KKey&);
+ KAccelAction* actionPtr (const KKeyServer::Key&);
+ const QString& configGroup () const;
+ void setConfigGroup (const QString&);
+ void setConfigGlobal (bool);
+ virtual void setEnabled (bool) = 0;
+ bool getAutoUpdate ();
+ bool setAutoUpdate (bool);
+ KAccelAction* insert (const QString&, const QString&);
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, const QObject*, const char*, bool = 1, bool = 1);
+ bool remove (const QString&);
+ bool setActionSlot (const QString&, const QObject*, const char*);
+ bool updateConnections ();
+ bool setShortcut (const QString&, const KShortcut&);
+ bool setActionEnabled (const QString&, bool);
+ void readSettings (KConfigBase* = 0);
+ void writeSettings (KConfigBase* = 0) const;
+ QPopupMenu* createPopupMenu (QWidget*, const KKeySequence&);
+
+protected:
+ void slotRemoveAction (KAccelAction*);
+//ig void createKeyList (QValueVector<structX>&);
+ bool insertConnection (KAccelAction*);
+ bool removeConnection (KAccelAction*);
+ virtual bool emitSignal (KAccelBase::Signal) = 0;
+ virtual bool connectKey (KAccelAction&, const KKeyServer::Key&) = 0;
+ virtual bool connectKey (const KKeyServer::Key&) = 0;
+ virtual bool disconnectKey (KAccelAction&, const KKeyServer::Key&) = 0;
+ virtual bool disconnectKey (const KKeyServer::Key&) = 0;
+
+protected:
+
+%If ( KDE_3_5_0 - )
+ virtual bool isEnabledInternal () const;
+%End
+
+
+//ig class ActionInfo;
+
+//ig typedef QMap<KKeyServer::Key,KAccelBase::ActionInfo> KKeyToActionMap;
+
+protected:
+
+%If ( - KDE_3_1_1 )
+//igx virtual void virtual_hook (int, void*);
+%End
+
+
+}; // class KAccelBase
+
diff --git a/python/pykde/sip/kdecore/kallocator.sip b/python/pykde/sip/kdecore/kallocator.sip
new file mode 100644
index 00000000..65f30805
--- /dev/null
+++ b/python/pykde/sip/kdecore/kallocator.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KZoneAllocator
+{
+%TypeHeaderCode
+#include <kallocator.h>
+%End
+
+
+public:
+ KZoneAllocator (long = 131072);
+ void* allocate (size_t);
+ void deallocate (void*);
+ void free_since (void*);
+
+protected:
+//ig typedef QValueList<KZoneAllocator::MemBlock*> MemList;
+//ig void addBlock (KZoneAllocator::MemBlock*);
+//ig void delBlock (KZoneAllocator::MemBlock*);
+//ig void insertHash (KZoneAllocator::MemBlock*);
+ void initHash ();
+
+}; // class KZoneAllocator
+
diff --git a/python/pykde/sip/kdecore/kapplication.sip b/python/pykde/sip/kdecore/kapplication.sip
new file mode 100644
index 00000000..db682266
--- /dev/null
+++ b/python/pykde/sip/kdecore/kapplication.sip
@@ -0,0 +1,449 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KApplication : QApplication, KInstance
+{
+%TypeHeaderCode
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+extern char **pyArgvToC(PyObject *argvlist,int *argcp);
+extern void updatePyArgv(PyObject *argvlist,int argc,char **argv);
+%End
+
+
+public:
+
+ enum CaptionLayout
+ {
+ CaptionAppLast,
+ CaptionAppFirst,
+ CaptionNoApp
+ };
+
+ KApplication (bool = 1, bool = 1);
+
+%If ( KDE_3_3_0 - )
+//ig KApplication (Display*, Qt::HANDLE = 0, Qt::HANDLE = 0, bool = 1);
+%End
+
+//ig KApplication (Display*, int&, char**, const QCString&, bool = 1, bool = 1);
+ KApplication (SIP_PYLIST, QCString&, bool = 1, bool = 1) [(int&, char**, const QCString&, bool = 1, bool = 1)];
+%MethodCode
+//takes argv | (a Python list of strings) | rAppName | (Python string) | allowStyles | (bool = 1) | GUIenabled | (bool = 1)
+
+ int argc, nargc;
+ char **argv;
+
+ // Convert the list.
+
+ if ((argv = pyArgvToC(a0, &argc)) == NULL)
+ return NULL;
+
+ // Create it now the arguments are right.
+
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+
+ // The following two lines simulate the actual ctor call
+ // which is commented out below
+ KCmdLineArgs::init (nargc, argv, (char *)"unknown", (char *)"KDE Application", NULL, false);
+ sipCpp = new sipKApplication((bool)a1,(bool)a2);
+
+ // This method calls KCmdLineArgs::initIgnore, which is a private method
+// sipCpp = new sipKApplication (nargc,argv, qc, a1, a2);
+
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+
+ updatePyArgv(a0, argc, argv);
+%End
+
+ static void addCmdLineOptions ();
+ static KApplication* kApplication ();
+ KConfig* sessionConfig ();
+ bool isRestored () const;
+ void disableSessionManagement ();
+
+%If ( KDE_3_2_0 - )
+ void enableSessionManagement ();
+%End
+
+
+ enum ShutdownConfirm
+ {
+ ShutdownConfirmDefault,
+ ShutdownConfirmNo,
+ ShutdownConfirmYes
+ };
+
+
+ enum ShutdownType
+ {
+ ShutdownTypeDefault,
+ ShutdownTypeNone,
+ ShutdownTypeReboot,
+ ShutdownTypeHalt
+ };
+
+
+ enum ShutdownMode
+ {
+ ShutdownModeDefault,
+ ShutdownModeSchedule,
+ ShutdownModeTryNow,
+ ShutdownModeForceNow,
+ ShutdownModeInteractive
+ };
+
+ bool requestShutDown (KApplication::ShutdownConfirm = ShutdownConfirmDefault , KApplication::ShutdownType = ShutdownTypeDefault , KApplication::ShutdownMode = ShutdownModeDefault );
+ void propagateSessionManager ();
+ void commitData (QSessionManager&);
+ void saveState (QSessionManager&);
+
+%If ( KDE_3_1_1 - )
+ bool sessionSaving () const;
+%End
+
+ static DCOPClient* dcopClient ();
+ static void disableAutoDcopRegistration ();
+ QPixmap icon () const;
+ QString iconName () const;
+ QPixmap miniIcon () const;
+ QString miniIconName () const;
+ void setTopWidget (QWidget*);
+
+%If ( KDE_3_2_0 - )
+ void invokeHelp (const QString&, const QString&, const QCString&) const;
+%End
+
+ void invokeHelp (const QString& = QString ::null , const QString& = QString ::null ) const;
+ void invokeHTMLHelp (const QString&, const QString& = QString ::null ) const;
+
+%If ( KDE_3_2_0 - )
+ void invokeMailer (const QString&, const QString&, const QCString&);
+%End
+
+ void invokeMailer (const QString&, const QString&);
+
+%If ( KDE_3_3_0 - )
+ void invokeMailer (const KURL&, const QCString&, bool);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void invokeMailer (const KURL&, const QCString&);
+%End
+
+ void invokeMailer (const KURL&);
+
+%If ( KDE_3_2_0 - )
+ void invokeMailer (const QString&, const QString&, const QString&, const QString&, const QString&, const QString&, const QStringList&, const QCString&);
+%End
+
+ void invokeMailer (const QString&, const QString&, const QString&, const QString&, const QString&, const QString& = QString ::null , const QStringList& = QStringList ());
+
+public slots:
+
+%If ( KDE_3_2_0 - )
+ void invokeBrowser (const QString&, const QCString&);
+%End
+
+ void invokeBrowser (const QString&);
+
+%If ( KDE_3_2_0 - )
+ void cut ();
+ void copy ();
+ void paste ();
+ void clear ();
+ void selectAll ();
+%End
+
+
+public:
+ static QCString launcher ();
+ static int startServiceByName (const QString&, const QString&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+ static int startServiceByName (const QString&, const QStringList&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+ static int startServiceByDesktopPath (const QString&, const QString&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+ static int startServiceByDesktopPath (const QString&, const QStringList&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+ static int startServiceByDesktopName (const QString&, const QString&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+ static int startServiceByDesktopName (const QString&, const QStringList&, QString* /Out/, QCString* /Out/, int*, const QCString& = QCString ("" ), bool = 0);
+
+%If ( KDE_3_2_0 - )
+ static int kdeinitExec (const QString&, const QStringList&, QString* /Out/, int*, QCString&);
+%End
+
+ static int kdeinitExec (const QString&, const QStringList&, QString* /Out/, int*);
+
+%If ( KDE_3_2_0 - )
+ static int kdeinitExecWait (const QString&, const QStringList&, QString* /Out/, int*, QCString&);
+%End
+
+ static int kdeinitExecWait (const QString&, const QStringList&, QString* /Out/, int*);
+ QString caption () const;
+//ig KStyle* kstyle () const;
+ QString makeStdCaption (const QString&, bool = 1, bool = 0) const;
+ QString tempSaveName (const QString&) const;
+ QString checkRecoverFile (const QString&, bool&) const;
+ Display* getDisplay ();
+ void enableStyles ();
+ void disableStyles ();
+ void installX11EventFilter (QWidget*);
+
+%If ( KDE_3_2_0 - )
+ void removeX11EventFilter (const QWidget*);
+%End
+
+ static int random ();
+ static QString randomString (int);
+ void addKipcEventMask (int);
+ void removeKipcEventMask (int);
+ QCString startupId () const;
+ void setStartupId (const QCString&);
+
+%If ( KDE_3_2_0 - )
+ void updateUserTimestamp (ulong = 0);
+
+%If ( KDE_3_2_3 - )
+ ulong userTimestamp () const;
+
+%If ( KDE_3_3_0 - )
+ void updateRemoteUserTimestamp (const QCString&, ulong = 0);
+%End
+
+%End
+
+%End
+
+ QString geometryArgument () const;
+ void installKDEPropertyMap ();
+ bool authorize (const QString&);
+ bool authorizeKAction (const char*);
+
+%If ( KDE_3_1_0 - )
+ bool authorizeURLAction (const QString&, const KURL&, const KURL&);
+
+%If ( KDE_3_2_0 - )
+ void allowURLAction (const QString&, const KURL&, const KURL&);
+ bool authorizeControlModule (const QString&);
+ QStringList authorizeControlModules (const QStringList&);
+
+%If ( KDE_3_4_0 - )
+ static ButtonState keyboardMouseState ();
+%End
+
+%End
+
+
+ enum
+ {
+ ShiftModifier,
+ LockModifier,
+ ControlModifier,
+ Modifier1,
+ Modifier2,
+ Modifier3,
+ Modifier4,
+ Modifier5
+ };
+
+ static uint keyboardModifiers ();
+
+ enum
+ {
+ Button1Pressed,
+ Button2Pressed,
+ Button3Pressed,
+ Button4Pressed,
+ Button5Pressed
+ };
+
+ static uint mouseState ();
+%End
+
+
+public slots:
+ void ref ();
+ void deref ();
+
+protected:
+ KApplication (bool, bool, KInstance*);
+
+%If ( KDE_3_3_0 - )
+//ig KApplication (Display*, Qt::HANDLE, Qt::HANDLE, bool, KInstance*);
+%End
+
+//ig bool x11EventFilter (XEvent*);
+
+%If ( KDE_3_2_0 - )
+ void invokeEditSlot (const char*);
+%End
+
+
+public:
+ bool notify (QObject*, QEvent*);
+
+%If ( KDE_3_2_0 - )
+//ig int xErrhandler (Display*, void*);
+//ig int xioErrhandler (Display*);
+%End
+
+
+%If ( KDE_3_0_1 - )
+//ig void iceIOErrorHandler (_IceConn*);
+%End
+
+ bool loadedByKdeinit;
+ static void startKdeinit ();
+
+ enum SettingsCategory
+ {
+ SETTINGS_MOUSE,
+ SETTINGS_COMPLETION,
+ SETTINGS_PATHS,
+ SETTINGS_POPUPMENU,
+ SETTINGS_QT,
+ SETTINGS_SHORTCUTS
+ };
+
+
+%If ( KDE_3_1_0 - )
+ static QPalette createApplicationPalette ();
+ static QPalette createApplicationPalette (KConfig*, int);
+
+%If ( KDE_3_2_0 - )
+ static void installSigpipeHandler ();
+ static bool guiEnabled ();
+%End
+
+%End
+
+
+signals:
+ void kdisplayPaletteChanged ();
+ void kdisplayStyleChanged ();
+ void kdisplayFontChanged ();
+ void appearanceChanged ();
+ void toolbarAppearanceChanged (int);
+ void backgroundChanged (int);
+ void settingsChanged (int);
+ void iconChanged (int);
+ void kipcMessage (int, int);
+ void saveYourself ();
+ void shutDown ();
+
+private:
+ KApplication (const KApplication&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ int xioErrhandler ();
+%End
+
+
+}; // class KApplication
+
+
+class KSessionManaged
+{
+%TypeHeaderCode
+#include <kapplication.h>
+%End
+
+
+public:
+ KSessionManaged ();
+ virtual bool saveState (QSessionManager&);
+ virtual bool commitData (QSessionManager&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSessionManaged
+
+typedef ulong Atom;
+//ig typedef void Display;
+//ig bool checkAccess (const QString&, int);
+
+
+%ModuleCode
+#include <string.h>
+
+// Convert a Python argv list to a conventional C argc count and argv array.
+char **pyArgvToC(PyObject *argvlist,int *argcp)
+{
+ int argc;
+ char **argv;
+
+ argc = PyList_Size(argvlist);
+
+ // Allocate space for two copies of the argument pointers, plus the
+ // terminating NULL.
+ if ((argv = (char **)sipMalloc(2 * (argc + 1) * sizeof (char *))) == NULL)
+ return NULL;
+
+ // Convert the list.
+ for (int a = 0; a < argc; ++a)
+ {
+ char *arg;
+
+ // Get the argument and allocate memory for it.
+ if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL ||
+ (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL)
+ return NULL;
+
+ // Copy the argument and save a pointer to it.
+ strcpy(argv[a],arg);
+ argv[a + argc + 1] = argv[a];
+ }
+
+ argv[argc + argc + 1] = argv[argc] = NULL;
+
+ *argcp = argc;
+
+ return argv;
+}
+
+
+// Remove arguments from the Python argv list that have been removed from the
+// C argv array.
+void updatePyArgv(PyObject *argvlist,int argc,char **argv)
+{
+ for (int a = 0, na = 0; a < argc; ++a)
+ {
+ // See if it was removed.
+ if (argv[na] == argv[a + argc + 1])
+ ++na;
+ else
+ PyList_SetSlice(argvlist,na,na + 1,NULL);
+ }
+}
+%End
diff --git a/python/pykde/sip/kdecore/kasyncio.sip b/python/pykde/sip/kdecore/kasyncio.sip
new file mode 100644
index 00000000..e8911bdc
--- /dev/null
+++ b/python/pykde/sip/kdecore/kasyncio.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAsyncIO : QObject, QIODevice
+{
+%TypeHeaderCode
+#include <kasyncio.h>
+%End
+
+
+protected:
+ KAsyncIO ();
+
+private:
+ KAsyncIO (KAsyncIO&);
+
+public:
+ virtual void enableRead (bool) = 0;
+ virtual void enableWrite (bool) = 0;
+
+signals:
+ void readyRead ();
+ void readyWrite ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KAsyncIO
+
diff --git a/python/pykde/sip/kdecore/kaudioplayer.sip b/python/pykde/sip/kdecore/kaudioplayer.sip
new file mode 100644
index 00000000..55e82073
--- /dev/null
+++ b/python/pykde/sip/kdecore/kaudioplayer.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAudioPlayer : QObject
+{
+%TypeHeaderCode
+#include <kaudioplayer.h>
+%End
+
+
+public:
+ KAudioPlayer (const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ static void play (const QString&);
+
+public slots:
+ void play ();
+
+}; // class KAudioPlayer
+
diff --git a/python/pykde/sip/kdecore/kbufferedio.sip b/python/pykde/sip/kdecore/kbufferedio.sip
new file mode 100644
index 00000000..4ada2ea5
--- /dev/null
+++ b/python/pykde/sip/kdecore/kbufferedio.sip
@@ -0,0 +1,73 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KBufferedIO : KAsyncIO
+{
+%TypeHeaderCode
+#include <kbufferedio.h>
+%End
+
+
+protected:
+ KBufferedIO ();
+
+public:
+
+ enum closeModes
+ {
+ availRead,
+ dirtyWrite,
+ involuntary,
+ delayed,
+ closedNow
+ };
+
+ virtual void closeNow () = 0;
+ virtual bool setBufferSize (int, int = -2);
+ virtual int bytesAvailable () const;
+ virtual int waitForMore (int) = 0;
+ virtual int bytesToWrite () const;
+ virtual bool canReadLine () const;
+ virtual int peekBlock (char*, uint) = 0;
+ virtual int unreadBlock (const char*, uint);
+
+signals:
+ void bytesWritten (int);
+ void closed (int);
+
+protected:
+ virtual uint consumeReadBuffer (uint, char*, bool = 1);
+ virtual void consumeWriteBuffer (uint);
+ virtual uint feedReadBuffer (uint, const char*, bool = 0);
+ virtual uint feedWriteBuffer (uint, const char*);
+ virtual uint readBufferSize () const;
+ virtual uint writeBufferSize () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KBufferedIO
+
diff --git a/python/pykde/sip/kdecore/kcalendarsystem.sip b/python/pykde/sip/kdecore/kcalendarsystem.sip
new file mode 100644
index 00000000..15597d13
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcalendarsystem.sip
@@ -0,0 +1,78 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KCalendarSystem
+{
+%TypeHeaderCode
+#include <kcalendarsystem.h>
+%End
+
+
+public:
+ KCalendarSystem (const KLocale* = 0);
+ virtual int year (const QDate&) const = 0;
+ virtual QString yearString (const QDate&, bool) const;
+ virtual int yearStringToInteger (const QString&, int& /Out/) const;
+ virtual int month (const QDate&) const = 0;
+ virtual QString monthString (const QDate&, bool) const;
+ virtual int monthStringToInteger (const QString&, int& /Out/) const;
+ virtual int day (const QDate&) const = 0;
+ virtual QString dayString (const QDate&, bool) const;
+ virtual int dayStringToInteger (const QString&, int& /Out/) const;
+ virtual int dayOfWeek (const QDate&) const = 0;
+ virtual int dayOfYear (const QDate&) const = 0;
+ virtual bool setYMD (QDate&, int, int, int) const = 0;
+ virtual QDate addYears (const QDate&, int) const = 0;
+ virtual QDate addMonths (const QDate&, int) const = 0;
+ virtual QDate addDays (const QDate&, int) const = 0;
+ virtual int monthsInYear (const QDate&) const = 0;
+ virtual int daysInYear (const QDate&) const = 0;
+ virtual int daysInMonth (const QDate&) const = 0;
+ virtual int weeksInYear (int) const = 0;
+ virtual int weekNumber (const QDate&, int* = 0) const = 0;
+ virtual QString monthName (int, int, bool = 0) const = 0;
+ virtual QString monthName (const QDate&, bool = 0) const = 0;
+ virtual QString monthNamePossessive (int, int, bool = 0) const = 0;
+ virtual QString monthNamePossessive (const QDate&, bool = 0) const = 0;
+ virtual QString weekDayName (int, bool = 0) const = 0;
+ virtual QString weekDayName (const QDate&, bool = 0) const = 0;
+ virtual int minValidYear () const = 0;
+ virtual int maxValidYear () const = 0;
+ virtual int weekDayOfPray () const = 0;
+ virtual QString calendarName () const = 0;
+ virtual bool isLunar () const = 0;
+ virtual bool isLunisolar () const = 0;
+ virtual bool isSolar () const = 0;
+
+protected:
+ const KLocale* locale () const;
+
+}; // class KCalendarSystem
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kcalendarsystemfactory.sip b/python/pykde/sip/kdecore/kcalendarsystemfactory.sip
new file mode 100644
index 00000000..5ad56a86
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcalendarsystemfactory.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KCalendarSystemFactory
+{
+%TypeHeaderCode
+#include <kcalendarsystemfactory.h>
+%End
+
+
+public:
+ KCalendarSystemFactory ();
+ static KCalendarSystem* create (const QString& = QString ::fromLatin1 ("gregorian" ), const KLocale* = 0);
+ static QStringList calendarSystems ();
+
+}; // class KCalendarSystemFactory
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kcatalogue.sip b/python/pykde/sip/kdecore/kcatalogue.sip
new file mode 100644
index 00000000..8fbd1b65
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcatalogue.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCatalogue
+{
+%TypeHeaderCode
+#include <kcatalogue.h>
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - )
+ KCatalogue (const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+ KCatalogue (const KCatalogue&);
+ QString name () const;
+
+%If ( KDE_3_3_0 - )
+ QString language () const;
+ int pluralType () const;
+ void setPluralType (int);
+%End
+
+ const char* translate (const char*) const;
+
+public:
+
+%If ( - KDE_3_3_0 )
+
+%If ( D_MANDRAKE )
+ KCatalogue (const QString& = QString ::null );
+ void setFileName (const QString&);
+%End
+
+%End
+
+
+}; // class KCatalogue
+
diff --git a/python/pykde/sip/kdecore/kcharsets.sip b/python/pykde/sip/kdecore/kcharsets.sip
new file mode 100644
index 00000000..50401379
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcharsets.sip
@@ -0,0 +1,62 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCharsets
+{
+%TypeHeaderCode
+#include <kcharsets.h>
+%End
+
+
+protected:
+ KCharsets ();
+
+public:
+ QTextCodec* codecForName (const QString&) const;
+ QTextCodec* codecForName (const QString&, bool& /Out/) const /PyName=codecForName2/;
+ QChar fromEntity (const QString&) const;
+ QChar fromEntity (const QString&, int& /Out/) const /PyName=fromEntity2/;
+ QString toEntity (const QChar&) const;
+
+%If ( KDE_3_1_0 - )
+ static QString resolveEntities (const QString&);
+%End
+
+ QStringList availableEncodingNames ();
+ QStringList descriptiveEncodingNames ();
+ QString languageForEncoding (const QString&);
+ QString encodingForName (const QString&);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig QStringList languages ();
+//ig QStringList encodingsForLanguage (const QString&);
+%End
+
+
+}; // class KCharsets
+
diff --git a/python/pykde/sip/kdecore/kclipboard.sip b/python/pykde/sip/kdecore/kclipboard.sip
new file mode 100644
index 00000000..786cbd96
--- /dev/null
+++ b/python/pykde/sip/kdecore/kclipboard.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KClipboardSynchronizer : QObject
+{
+%TypeHeaderCode
+#include <kclipboard.h>
+%End
+
+
+public:
+ static KClipboardSynchronizer* self ();
+ static void setSynchronizing (bool);
+ static bool isSynchronizing ();
+ static void setReverseSynchronizing (bool);
+ static bool isReverseSynchronizing ();
+
+protected:
+ ~KClipboardSynchronizer ();
+
+private:
+ KClipboardSynchronizer (QObject* /TransferThis/ = 0, const char* = 0);
+
+}; // class KClipboardSynchronizer
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kcmdlineargs.sip b/python/pykde/sip/kdecore/kcmdlineargs.sip
new file mode 100644
index 00000000..14bceef0
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcmdlineargs.sip
@@ -0,0 +1,264 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCmdLineOptions
+{
+%TypeHeaderCode
+#include <kcmdlineargs.h>
+extern char **pyArgvToC(PyObject *argvlist,int *argcp);
+extern void updatePyArgv(PyObject *argvlist,int argc,char **argv);
+%End
+
+
+public:
+ const char* name;
+ const char* description;
+
+%If ( KDE_3_5_3 - )
+// def is a Python keyword - use /PyName=/
+//pykwd const char* def;
+%End
+
+
+}; // class KCmdLineOptions
+
+
+class KCmdLineArgs
+{
+%TypeHeaderCode
+#include <kcmdlineargs.h>
+#include <qapplication.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static void init (SIP_PYLIST, const char*, const char*, const char*, const char*, bool = 0) [void (int, char**, const char*, const char*, const char*, const char*, bool = 0)];
+%MethodCode
+//takes _argc | (int) | _argv | (char) | _appname | (char) | programName | (char) | _description | (char) | _version | (char) | noKApp | (bool = 0)
+
+ int argc, nargc;
+ char **argv;
+
+ // Convert the list.
+
+ if ((argv = pyArgvToC(a0, &argc)) == NULL)
+ return NULL;
+
+ // Create it now the arguments are right.
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ KCmdLineArgs::init (nargc,argv, a1, a2, a3, a4, a5);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+
+ updatePyArgv (a0, argc, argv);
+%End
+
+%End
+
+ static void init (SIP_PYLIST, const char*, const char*, const char*, bool = 0) [void (int, char**, const char*, const char*, const char*, bool = 0)];
+%MethodCode
+//takes _argv | (a Python list of strings which may be modified) | _appname | (char) | _description | (char) | _version | (char) | noKApp | (bool = False)
+
+ int argc, nargc;
+ char **argv;
+
+ // Convert the list.
+
+ if ((argv = pyArgvToC(a0, &argc)) == NULL)
+ return NULL;
+
+ // Create it now the arguments are right.
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ KCmdLineArgs::init (nargc,argv, a1, a2, a3, a4);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+
+ updatePyArgv (a0, argc, argv);
+%End
+
+ static void init (SIP_PYLIST, const KAboutData*, bool = 0) [void (int, char**, const KAboutData*, bool = 0)];
+%MethodCode
+//takes _argv | (a Python list of strings which may be modified) | about | (KAboutData) | noKApp | (bool = 0)
+
+ int argc, nargc; //, iserr = 0;
+ char **argv;
+
+ // Convert the list.
+
+ if ((argv = pyArgvToC (a0, &argc)) == NULL)
+ return NULL;
+
+ // Create it now the arguments are right.
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ KCmdLineArgs::init (nargc, argv, a1, a2);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+
+ updatePyArgv (a0, argc, argv);
+%End
+
+ static void init (const KAboutData*);
+ static void addCmdLineOptions (SIP_PYLIST, const char* = 0, const char* = 0, const char* = 0) [void (const KCmdLineOptions*, const char* = 0, const char* = 0, const char* = 0)];
+%MethodCode
+//takes options | (a Python list of tuples) | name | (char = 0) | id | (char = 0) | afterId | (char = 0)
+
+//doc
+// A Pytbon list of tuples (name, description, default) is the first parameter
+// instead of a KCmdLineOptions object (KCmdLineOptions is not used);
+// NULL (or None) parameters to mark the end of the list are not required
+//end
+
+ int n;
+
+ if ((n = PyList_Size (a0)) == 0)
+ return NULL;
+
+ // opts is persistent
+ KCmdLineOptions *opts;
+
+ Py_BEGIN_ALLOW_THREADS
+ opts = new KCmdLineOptions [n + 1];
+ Py_END_ALLOW_THREADS
+
+ int i, tsz;
+ for (i = 0; i < n; i++)
+ {
+ PyObject *tuple;
+
+ if ((tuple = PyList_GetItem (a0, i)) != NULL)
+ {
+ tsz = PyTuple_Size (tuple);
+ PyObject *member;
+
+ if (tsz == 0)
+ goto errorExit;
+
+ member = PyTuple_GET_ITEM (tuple, 0);
+ if (PyString_Check (member))
+ opts [i].name = PyString_AS_STRING (member);
+ else
+ goto errorExit;
+
+ if (tsz > 1)
+ {
+ member = PyTuple_GET_ITEM (tuple, 1);
+ if PyString_Check (member)
+ opts [i].description = PyString_AS_STRING (member);
+ else
+ goto errorExit;
+ }
+ else
+ opts [i].description = NULL;
+
+
+ if (tsz > 2)
+ {
+ member = PyTuple_GET_ITEM (tuple, 2);
+ if PyString_Check (member)
+ opts [i].def = PyString_AS_STRING (member);
+ else
+ goto errorExit;
+ }
+ else
+ opts [i].def = NULL;
+ }
+ else
+ goto errorExit;
+ }
+
+ // mark the end of the list
+ opts [n].name = NULL;
+ opts [n].description = NULL;
+ opts [n].def = NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ KCmdLineArgs::addCmdLineOptions (opts, a1, a2, a3);
+ Py_END_ALLOW_THREADS
+
+ Py_INCREF (Py_None);
+ return Py_None;
+
+errorExit:
+ delete opts;
+ return NULL;
+%End
+
+ static KCmdLineArgs* parsedArgs (const char* = 0);
+ static QString cwd ();
+ static const char* appName ();
+ static void usage (const char* = 0);
+ static void usage (const QString&);
+ static void enable_i18n ();
+ QCString getOption (const char*);
+
+%If ( KDE_3_1_4 - )
+ QCStringList getOptionList (const char*) const;
+%End
+
+ bool isSet (const char*);
+ int count ();
+ const char* arg (int);
+ KURL url (int);
+ static KURL makeURL (const char*);
+ static void setCwd (char*);
+ void clear ();
+
+%If ( KDE_3_2_0 - )
+ static void reset ();
+ static void loadAppArgs (QDataStream&);
+
+%If ( KDE_3_4_0 - )
+ static void addTempFileOption ();
+ static bool isTempFileSet ();
+%End
+
+%End
+
+
+protected:
+ KCmdLineArgs (const KCmdLineOptions*, const char*, const char*);
+ ~KCmdLineArgs ();
+
+public:
+
+%If ( - KDE_3_1_3 )
+ QValueList<QCString> getOptionList (const char*);
+%End
+
+
+}; // class KCmdLineArgs
+
diff --git a/python/pykde/sip/kdecore/kcompletion.sip b/python/pykde/sip/kdecore/kcompletion.sip
new file mode 100644
index 00000000..99d77cfa
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcompletion.sip
@@ -0,0 +1,228 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCompletion : QObject
+{
+%TypeHeaderCode
+#include <kcompletion.h>
+%End
+
+
+public:
+
+ enum CompOrder
+ {
+ Sorted,
+ Insertion,
+ Weighted
+ };
+
+ KCompletion ();
+ virtual QString makeCompletion (const QString&);
+ QStringList substringCompletion (const QString&) const;
+ QString previousMatch ();
+ QString nextMatch ();
+ virtual const QString& lastMatch () const;
+ QStringList items () const;
+
+%If ( KDE_3_3_0 - )
+ bool isEmpty () const;
+%End
+
+ virtual void setCompletionMode (KGlobalSettings::Completion);
+ KGlobalSettings::Completion completionMode () const;
+ virtual void setOrder (KCompletion::CompOrder);
+ CompOrder order () const;
+ virtual void setIgnoreCase (bool);
+ bool ignoreCase () const;
+ QStringList allMatches ();
+ QStringList allMatches (const QString&);
+//ig KCompletionMatches allWeightedMatches ();
+//ig KCompletionMatches allWeightedMatches (const QString&);
+ virtual void setEnableSounds (bool);
+ bool isSoundsEnabled () const;
+ bool hasMultipleMatches () const;
+ void enableSounds ();
+ void disableSounds ();
+
+public slots:
+ void slotMakeCompletion (const QString&);
+ void slotPreviousMatch ();
+ void slotNextMatch ();
+ void insertItems (const QStringList&);
+ virtual void setItems (const QStringList&);
+ void addItem (const QString&);
+ void addItem (const QString&, uint);
+ void removeItem (const QString&);
+ virtual void clear ();
+
+signals:
+ void match (const QString&);
+ void matches (const QStringList&);
+ void multipleMatches ();
+
+protected:
+ virtual void postProcessMatch (QString*);
+ virtual void postProcessMatches (QStringList*);
+//ig virtual void postProcessMatches (KCompletionMatches*) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCompletion
+
+
+//ig class KCompletionMatches : KCompletionMatchesList;
+
+
+class KCompletionBase
+{
+%TypeHeaderCode
+#include <kcompletion.h>
+%End
+
+
+public:
+
+ enum KeyBindingType
+ {
+ TextCompletion,
+ PrevCompletionMatch,
+ NextCompletionMatch,
+ SubstringCompletion
+ };
+
+ typedef QMap<KCompletionBase::KeyBindingType,KShortcut> KeyBindingMap;
+ KCompletionBase ();
+ KCompletion* completionObject (bool = 1);
+ virtual void setCompletionObject (KCompletion*, bool = 1);
+ virtual void setHandleSignals (bool);
+ bool isCompletionObjectAutoDeleted () const;
+ void setAutoDeleteCompletionObject (bool);
+ void setEnableSignals (bool);
+ bool handleSignals () const;
+ bool emitSignals () const;
+ virtual void setCompletionMode (KGlobalSettings::Completion);
+ KGlobalSettings::Completion completionMode () const;
+ bool setKeyBinding (KCompletionBase::KeyBindingType, const KShortcut&);
+ const KShortcut& getKeyBinding (KCompletionBase::KeyBindingType) const;
+ void useGlobalKeyBindings ();
+ virtual void setCompletedText (const QString&) = 0;
+ virtual void setCompletedItems (const QStringList&) = 0;
+ KCompletion* compObj () const;
+
+protected:
+ KCompletionBase::KeyBindingMap getKeyBindings () const;
+ void setDelegate (KCompletionBase*);
+ KCompletionBase* delegate () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCompletionBase
+
+//ig typedef KSortableValueList<QString> KCompletionMatchesList;
+
+
+%MappedType KCompletionBase::KeyBindingMap
+//converts a Python dict of int:KShortcut
+{
+%TypeHeaderCode
+#include <kcompletion.h>
+#include <sipkdecoreKShortcut.h>
+%End
+%ConvertFromTypeCode
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<KCompletionBase::KeyBindingType,KShortcut> map = *sipCpp;
+ QMap<KCompletionBase::KeyBindingType,KShortcut>::ConstIterator it;
+
+ PyObject *key;
+ PyObject *value;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ key = PyInt_FromLong ((int) it.key ());
+ value = sipConvertFromInstance ((void *)&(it.data ()), sipClass_KShortcut, sipTransferObj);
+ if ((value == NULL) || (PyDict_SetItem (dict, key, value) < 0))
+ {
+ Py_XDECREF (key);
+ Py_XDECREF (value);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a KeyBindingMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<KCompletionBase::KeyBindingType,KShortcut> *kbmap = new QMap<KCompletionBase::KeyBindingType,KShortcut>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ KShortcut *cValue;
+ int iserr;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ cValue = (KShortcut *)sipForceConvertTo_KShortcut (value, &iserr);
+
+ if (iserr || !PyInt_Check (key))
+ {
+ *sipIsErr = 1;
+ delete kbmap;
+ return 0;
+ }
+
+ kbmap->insert ((KCompletionBase::KeyBindingType)PyInt_AS_LONG (key), *cValue);
+ }
+
+ *sipCppPtr = kbmap;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kconfig.sip b/python/pykde/sip/kdecore/kconfig.sip
new file mode 100644
index 00000000..d9ce3ec2
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfig.sip
@@ -0,0 +1,234 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KConfig : KConfigBase
+{
+%TypeHeaderCode
+#include <kconfig.h>
+%End
+
+
+public:
+ KConfig (const QString& = QString ::null , bool = 0, bool = 1, const char* = "config");
+
+%If ( KDE_3_2_0 - )
+ KConfig (KConfigBackEnd*, bool = 0);
+%End
+
+ virtual void rollback (bool = 1);
+ virtual QStringList groupList () const;
+ virtual QMap<QString,QString> entryMap (const QString&) const;
+ virtual void reparseConfiguration ();
+ void setFileWriteMode (int);
+ void setForceGlobal (bool);
+ bool forceGlobal () const;
+
+%If ( KDE_3_1_0 - )
+ void checkUpdate (const QString&, const QString&);
+
+%If ( KDE_3_2_0 - )
+ KConfig* copyTo (const QString&, KConfig* = 0) const;
+
+%If ( KDE_3_3_0 - )
+ KLockFile::Ptr lockFile (bool = 0);
+%End
+
+%End
+
+%End
+
+
+protected:
+ virtual bool internalHasGroup (const QCString&) const;
+ virtual KEntryMap internalEntryMap (const QString&) const;
+ virtual KEntryMap internalEntryMap () const;
+ virtual void putData (const KEntryKey&, const KEntry&, bool = 1);
+ virtual KEntry lookupData (const KEntryKey&) const;
+
+private:
+ KConfig (const KConfig&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KConfig
+
+
+%If ( KDE_3_2_0 - )
+
+class KSharedConfig : KConfig, KShared
+{
+%TypeHeaderCode
+#include <kconfig.h>
+%End
+
+
+public:
+//ig typedef KSharedPtr<KSharedConfig> Ptr;
+
+public:
+ static KSharedConfig::Ptr openConfig (const QString&, bool = 0, bool = 1);
+
+private:
+ KSharedConfig (const QString&, bool, bool);
+ ~KSharedConfig ();
+
+}; // class KSharedConfig
+
+%End
+
+
+
+%MappedType QMap<QString,QString>
+//converts a Python dict of QString:QString
+{
+%TypeHeaderCode
+#include <qmap.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString,QString> cppmap = *sipCpp;
+ QMap<QString,QString>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QString acpp = it.key ();
+ QString bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new QString (bcpp), sipClass_QString)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QString,QString> *cppmap = new QMap<QString,QString>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QString *acpp;
+ QString *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
+ bcpp = (QString *)sipForceConvertTo_QString (belem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
+%If (KDE_3_2_0 - )
+%MappedType KSharedConfig::Ptr
+//converts KSharedConfig
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kconfig.h>
+#include <sipkdecoreKSharedConfig.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KSharedConfig> *cPtr = new KSharedPtr<KSharedConfig> (*(KSharedPtr<KSharedConfig> *)sipCpp);
+ KSharedConfig *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KSharedConfig, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KSharedConfig *cpp = (KSharedConfig *)sipForceConvertTo_KSharedConfig (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KSharedConfig> (cpp);
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdecore/kconfigbackend.sip b/python/pykde/sip/kdecore/kconfigbackend.sip
new file mode 100644
index 00000000..9b415c42
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfigbackend.sip
@@ -0,0 +1,93 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KConfigBackEnd
+{
+%TypeHeaderCode
+#include <kconfigbackend.h>
+%End
+
+
+public:
+ KConfigBackEnd (KConfigBase*, const QString&, const char*, bool);
+ virtual bool parseConfigFiles () = 0;
+ virtual void sync (bool = 1) = 0;
+ void changeFileName (const QString&, const char*, bool);
+ virtual KConfigBase::ConfigState getConfigState () const;
+ QString fileName () const;
+ const char* resource () const;
+ void setLocaleString (const QCString&);
+ void setFileWriteMode (int);
+
+%If ( KDE_3_2_0 - )
+ bool checkConfigFilesWritable (bool);
+
+%If ( KDE_3_3_0 - )
+ KLockFile::Ptr lockFile (bool = 0);
+%End
+
+%End
+
+ QString filename () const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+}; // class KConfigBackEnd
+
+
+class KConfigINIBackEnd : KConfigBackEnd
+{
+%TypeHeaderCode
+#include <kconfigdata.h>
+#include <kconfigbackend.h>
+%End
+
+
+public:
+ KConfigINIBackEnd (KConfigBase*, const QString&, const char*, bool = 1);
+ bool parseConfigFiles ();
+ virtual void sync (bool = 1);
+
+protected:
+ void parseSingleConfigFile (QFile&, KEntryMap* = 0, bool = 0, bool = 0);
+ bool writeConfigFile (QString, bool = 0, bool = 1);
+
+%If ( KDE_3_2_0 - )
+ bool getEntryMap (KEntryMap&, bool, QFile*);
+//ig void writeEntries (FILE*, const KEntryMap&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KConfigINIBackEnd
+
diff --git a/python/pykde/sip/kdecore/kconfigbase.sip b/python/pykde/sip/kdecore/kconfigbase.sip
new file mode 100644
index 00000000..57f4102c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfigbase.sip
@@ -0,0 +1,333 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KConfigBase : QObject
+{
+%TypeHeaderCode
+typedef long long longlong;
+typedef unsigned long long ulonglong;
+#include <kconfigbase.h>
+%End
+
+
+public:
+ KConfigBase ();
+ void setGroup (const QString&);
+ void setDesktopGroup ();
+ QString group () const;
+ bool hasGroup (const QString&) const;
+ virtual QStringList groupList () const = 0;
+ QString locale () const;
+ QString readEntry (const QString&, const QString& = QString ::null ) const;
+ QString readEntry (const char*, const QString& = QString ::null ) const;
+ QVariant readPropertyEntry (const QString&, QVariant::Type) const;
+ QVariant readPropertyEntry (const char*, QVariant::Type) const;
+ QVariant readPropertyEntry (const QString&, const QVariant&) const;
+ QVariant readPropertyEntry (const char*, const QVariant&) const;
+ int readListEntry (const QString&, QStrList&, char = ',') const;
+ int readListEntry (const char*, QStrList&, char = ',') const;
+ QStringList readListEntry (const QString&, char = ',') const;
+ QStringList readListEntry (const char*, char = ',') const;
+
+%If ( KDE_3_3_0 - )
+ QStringList readListEntry (const char*, const QStringList&, char = ',') const;
+%End
+
+ QValueList<int> readIntListEntry (const QString&) const;
+ QValueList<int> readIntListEntry (const char*) const;
+ QString readPathEntry (const QString&, const QString& = QString ::null ) const;
+ QString readPathEntry (const char*, const QString& = QString ::null ) const;
+
+%If ( KDE_3_1_3 - )
+ QStringList readPathListEntry (const QString&, char = ',') const;
+ QStringList readPathListEntry (const char*, char = ',') const;
+%End
+
+ int readNumEntry (const QString&, int = 0) const;
+ int readNumEntry (const char*, int = 0) const;
+ uint readUnsignedNumEntry (const QString&, uint = 0) const;
+ uint readUnsignedNumEntry (const char*, uint = 0) const;
+ long readLongNumEntry (const QString&, long = 0) const;
+ long readLongNumEntry (const char*, long = 0) const;
+ ulong readUnsignedLongNumEntry (const QString&, ulong = 0) const;
+ ulong readUnsignedLongNumEntry (const char*, ulong = 0) const;
+
+%If ( KDE_3_2_0 - )
+ longlong readNum64Entry (const QString&, longlong = 0) const;
+ longlong readNum64Entry (const char*, longlong = 0) const;
+ ulonglong readUnsignedNum64Entry (const QString&, ulonglong = 0) const;
+ ulonglong readUnsignedNum64Entry (const char*, ulonglong = 0) const;
+%End
+
+ double readDoubleNumEntry (const QString&, double = 0.0) const;
+ double readDoubleNumEntry (const char*, double = 0.0) const;
+ QFont readFontEntry (const QString&, const QFont* = 0) const;
+ QFont readFontEntry (const char*, const QFont* = 0) const;
+ bool readBoolEntry (const QString&, const bool = 0) const;
+ bool readBoolEntry (const char*, const bool = 0) const;
+ QRect readRectEntry (const QString&, const QRect* = 0) const;
+ QRect readRectEntry (const char*, const QRect* = 0) const;
+ QPoint readPointEntry (const QString&, const QPoint* = 0) const;
+ QPoint readPointEntry (const char*, const QPoint* = 0) const;
+ QSize readSizeEntry (const QString&, const QSize* = 0) const;
+ QSize readSizeEntry (const char*, const QSize* = 0) const;
+ QColor readColorEntry (const QString&, const QColor* = 0) const;
+ QColor readColorEntry (const char*, const QColor* = 0) const;
+ QDateTime readDateTimeEntry (const QString&, const QDateTime* = 0) const;
+ QDateTime readDateTimeEntry (const char*, const QDateTime* = 0) const;
+ QString readEntryUntranslated (const QString&, const QString& = QString ::null ) const;
+ QString readEntryUntranslated (const char*, const QString& = QString ::null ) const;
+ void writeEntry (const QString&, const QString&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QString&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QVariant&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QVariant&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QStrList&, char = ',', bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QStrList&, char = ',', bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QValueList<int>&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QValueList<int>&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const char*, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const char*, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, int, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, int, bool = 1, bool = 0, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ void writeEntry (const QString&, longlong, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, longlong, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, ulonglong, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, ulonglong, bool = 1, bool = 0, bool = 0);
+%End
+
+//ig void writeEntry (const QString&, double, bool = 1, bool = 0, char = 'g', int = 6, bool = 0);
+//ig void writeEntry (const char*, double, bool = 1, bool = 0, char = 'g', int = 6, bool = 0);
+ void writeEntry (const QString&, const QFont&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QFont&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QColor&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QColor&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QDateTime&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QDateTime&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QRect&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QRect&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QPoint&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QPoint&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const QString&, const QSize&, bool = 1, bool = 0, bool = 0);
+ void writeEntry (const char*, const QSize&, bool = 1, bool = 0, bool = 0);
+ void writePathEntry (const QString&, const QString&, bool = 1, bool = 0, bool = 0);
+ void writePathEntry (const char*, const QString&, bool = 1, bool = 0, bool = 0);
+
+%If ( KDE_3_1_3 - )
+ void writePathEntry (const QString&, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
+ void writePathEntry (const char*, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
+%End
+
+ void deleteEntry (const QString&, bool = 0, bool = 0);
+ void deleteEntry (const char*, bool = 0, bool = 0);
+ bool deleteGroup (const QString&, bool = 1, bool = 0);
+ void setDollarExpansion (bool = 1);
+ bool isDollarExpansion () const;
+ virtual void rollback (bool = 1);
+ virtual void sync ();
+ bool isDirty () const;
+ virtual void setReadOnly (bool);
+ bool isReadOnly () const;
+ bool hasKey (const QString&) const;
+ virtual QMap<QString,QString> entryMap (const QString&) const = 0;
+ virtual void reparseConfiguration () = 0;
+ bool isImmutable () const;
+ bool groupIsImmutable (const QString&) const;
+ bool entryIsImmutable (const QString&) const;
+
+ enum ConfigState
+ {
+ NoAccess,
+ ReadOnly,
+ ReadWrite
+ };
+
+ ConfigState getConfigState () const;
+
+%If ( KDE_3_2_0 - )
+ bool checkConfigFilesWritable (bool);
+ void setReadDefaults (bool);
+ bool readDefaults () const;
+ void revertToDefault (const QString&);
+ bool hasDefault (const QString&) const;
+%End
+
+
+protected:
+ void setLocale ();
+ virtual void setDirty (bool = 1);
+ virtual void parseConfigFiles ();
+ virtual KEntryMap internalEntryMap (const QString&) const = 0;
+ virtual KEntryMap internalEntryMap () const = 0;
+ virtual void putData (const KEntryKey&, const KEntry&, bool = 1) = 0;
+ virtual KEntry lookupData (const KEntryKey&) const = 0;
+ virtual bool internalHasGroup (const QCString&) const = 0;
+
+public:
+ void setGroup (const QCString&);
+ void setGroup (const char*);
+ bool hasGroup (const QCString&) const;
+ bool hasGroup (const char*) const;
+ bool hasKey (const char*) const;
+
+protected:
+ QCString readEntryUtf8 (const char*) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KConfigBase
+
+
+class KConfigGroupSaver
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+%End
+
+
+public:
+ KConfigGroupSaver (KConfigBase*, QString);
+ KConfigGroupSaver (KConfigBase*, const char*);
+ KConfigGroupSaver (KConfigBase*, const QCString&);
+ KConfigBase* config ();
+
+private:
+ KConfigGroupSaver (const KConfigGroupSaver&);
+
+}; // class KConfigGroupSaver
+
+
+class KConfigGroup : KConfigBase
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+%End
+
+
+public:
+ KConfigGroup (KConfigBase*, const QCString&);
+ KConfigGroup (KConfigBase*, const QString&);
+ KConfigGroup (KConfigBase*, const char*);
+ void deleteGroup (bool = 0);
+
+%If ( KDE_3_4_0 - )
+ bool groupIsImmutable () const;
+%End
+
+ virtual void setDirty (bool);
+ virtual void putData (const KEntryKey&, const KEntry&, bool = 1);
+ virtual KEntry lookupData (const KEntryKey&) const;
+ virtual void sync ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KConfigGroup
+
+
+
+%MappedType longlong
+//converts a Python long
+{
+%TypeHeaderCode
+#include <sipkdecoreKConfigBase.h> // typdef for longlong
+#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 3
+#define LONG_LONG PY_LONG_LONG
+#endif
+%End
+%ConvertFromTypeCode
+ if (!sipCpp)
+ Py_INCREF (Py_None);
+ return Py_None;
+
+// PyObject *LongLong;
+
+ return PyLong_FromLongLong (*(LONG_LONG *)sipCpp);
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyLong_Check (sipPy) || PyInt_Check (sipPy);
+
+ long long *ll = new long long;
+ *ll = 0;
+
+ if (PyLong_Check (sipPy))
+ *ll = PyLong_AsLongLong (sipPy);
+ else if (PyInt_Check (sipPy))
+ *ll = (long long)PyInt_AS_LONG (sipPy);
+
+ *sipCppPtr = ll;
+
+ return 1;
+%End
+
+};
+
+
+%MappedType ulonglong
+//converts a Python long
+{
+%TypeHeaderCode
+#include <sipkdecoreKConfigBase.h> // typdef for ulonglong
+#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 3
+#define LONG_LONG PY_LONG_LONG
+#endif
+%End
+%ConvertFromTypeCode
+ if (!sipCpp)
+ Py_INCREF (Py_None);
+ return Py_None;
+
+ PyObject *LongLong;
+
+ return PyLong_FromUnsignedLongLong (*(LONG_LONG *)sipCpp);
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyLong_Check (sipPy) || PyInt_Check (sipPy);
+
+ unsigned long long *ul = new unsigned long long;
+ *ul = 0;
+
+ if (PyLong_Check (sipPy))
+ *ul = PyLong_AsUnsignedLongLong (sipPy);
+ else if (PyInt_Check (sipPy))
+ *ul = (unsigned long long)PyInt_AS_LONG (sipPy);
+
+ *sipCppPtr = ul;
+
+ return 1;
+%End
+
+};
+
+
diff --git a/python/pykde/sip/kdecore/kconfigdata.sip b/python/pykde/sip/kdecore/kconfigdata.sip
new file mode 100644
index 00000000..afe8d120
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfigdata.sip
@@ -0,0 +1,176 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KEntry
+{
+%TypeHeaderCode
+#include <kconfigdata.h>
+%End
+
+
+public:
+ KEntry ();
+ QCString mValue;
+ bool bDirty;
+ bool bNLS;
+ bool bGlobal;
+ bool bImmutable;
+ bool bDeleted;
+
+%If ( KDE_3_1_0 - )
+ bool bExpand;
+%End
+
+
+}; // class KEntry
+
+
+class KEntryKey
+{
+%TypeHeaderCode
+#include <kconfigdata.h>
+%End
+
+
+public:
+ KEntryKey (const QCString& = QCString ("" ), const QCString& = QCString ("" ));
+ QCString mGroup;
+ QCString mKey;
+ bool bLocal;
+ bool bDefault;
+ const char* c_key;
+
+}; // class KEntryKey
+
+typedef QMap<KEntryKey,KEntry> KEntryMap;
+//ig typedef QMap<KEntryKey,KEntry>::Iterator KEntryMapIterator;
+//ig typedef QMap<KEntryKey,KEntry>::ConstIterator KEntryMapConstIterator;
+//force
+KEntryMap testKEntryMap (SIP_PYOBJECT) [KEntryMap (KEntryMap)];
+%MethodCode
+//takes dict | (KEntryMap)
+//returns (QMap<KEntryKey,KEntry)
+
+ int isErr = 0;
+ KEntryMap *map = (KEntryMap *)sipForceConvertTo_KEntryMap (a0, &isErr);
+
+ if (isErr)
+ sipRes = NULL;
+ else
+ sipRes = map;
+%End
+
+//end
+
+
+%MappedType KEntryMap
+//converts a Python dict of KEntryKey:KEntry
+{
+%TypeHeaderCode
+#include <qmap.h>
+#include <kconfigdata.h>
+#include <sipkdecoreKEntryMap.h>
+#include <sipkdecoreKEntry.h>
+#include <sipkdecoreKEntryKey.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const KEntryMap cppmap = *sipCpp;
+ KEntryMap::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ KEntryKey acpp = it.key ();
+ KEntry bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new KEntryKey (acpp), sipClass_KEntryKey)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new KEntry (bcpp), sipClass_KEntry)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ KEntryMap *cppmap = new KEntryMap;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ KEntryKey *acpp;
+ KEntry *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ acpp = (KEntryKey *)sipForceConvertTo_KEntryKey (aelem, &iserr);
+ bcpp = (KEntry *)sipForceConvertTo_KEntry (belem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kconfigdialogmanager.sip b/python/pykde/sip/kdecore/kconfigdialogmanager.sip
new file mode 100644
index 00000000..8e06b847
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfigdialogmanager.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KConfigDialogManager : QObject
+{
+%TypeHeaderCode
+#include <kconfigdialogmanager.h>
+%End
+
+
+signals:
+ void settingsChanged ();
+ void settingsChanged (QWidget*);
+ void widgetModified ();
+
+public:
+ KConfigDialogManager (QWidget* /TransferThis/, KConfigSkeleton*, const char* = 0);
+ void addWidget (QWidget*);
+ bool hasChanged ();
+ bool isDefault ();
+
+public slots:
+ void updateSettings ();
+ void updateWidgets ();
+ void updateWidgetsDefault ();
+
+protected:
+ void init (bool);
+ bool parseChildren (const QWidget*, bool);
+ void setProperty (QWidget*, const QVariant&);
+ QVariant property (QWidget*);
+ void setupWidget (QWidget*, KConfigSkeletonItem*);
+
+protected:
+
+}; // class KConfigDialogManager
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kconfigskeleton.sip b/python/pykde/sip/kdecore/kconfigskeleton.sip
new file mode 100644
index 00000000..4aa912cd
--- /dev/null
+++ b/python/pykde/sip/kdecore/kconfigskeleton.sip
@@ -0,0 +1,1149 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KConfigSkeletonItem
+{
+%TypeHeaderCode
+#include <typeinfo>
+#include <kconfigskeleton.h>
+%End
+
+
+public:
+ typedef QValueList<KConfigSkeletonItem*> List;
+//ig typedef QDict<KConfigSkeletonItem> Dict;
+//ig typedef QDictIterator<KConfigSkeletonItem> DictIterator;
+ KConfigSkeletonItem (const QString&, const QString&);
+ void setGroup (const QString&);
+ QString group () const;
+ void setKey (const QString&);
+ QString key () const;
+ void setName (const QString&);
+ QString name () const;
+ void setLabel (const QString&);
+ QString label () const;
+ void setWhatsThis (const QString&);
+ QString whatsThis () const;
+ virtual void readConfig (KConfig*) = 0;
+ virtual void writeConfig (KConfig*) = 0;
+ virtual void readDefault (KConfig*) = 0;
+ virtual void setProperty (const QVariant&) = 0;
+ virtual QVariant property () const = 0;
+ virtual QVariant minValue () const;
+ virtual QVariant maxValue () const;
+ virtual void setDefault () = 0;
+ virtual void swapDefault () = 0;
+ bool isImmutable () const;
+
+protected:
+ void readImmutability (KConfig*);
+
+//force
+%ConvertToSubClassCode
+ if (dynamic_cast<KConfigSkeleton::ItemBool*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemBool;
+ else if (dynamic_cast<KConfigSkeleton::ItemColor*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemColor;
+ else if (dynamic_cast<KConfigSkeleton::ItemDateTime*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemDateTime;
+ else if (dynamic_cast<KConfigSkeleton::ItemDouble*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemDouble;
+ else if (dynamic_cast<KConfigSkeleton::ItemEnum*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemEnum;
+ else if (dynamic_cast<KConfigSkeleton::ItemFont*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemFont;
+ else if (dynamic_cast<KConfigSkeleton::ItemInt*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemInt;
+ else if (dynamic_cast<KConfigSkeleton::ItemInt64*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemInt64;
+ else if (dynamic_cast<KConfigSkeleton::ItemIntList*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemIntList;
+ else if (dynamic_cast<KConfigSkeleton::ItemLong*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemLong;
+ else if (dynamic_cast<KConfigSkeleton::ItemPassword*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemPassword;
+ else if (dynamic_cast<KConfigSkeleton::ItemPath*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemPath;
+ else if (dynamic_cast<KConfigSkeleton::ItemPoint*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemPoint;
+ else if (dynamic_cast<KConfigSkeleton::ItemProperty*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemProperty;
+ else if (dynamic_cast<KConfigSkeleton::ItemRect*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemRect;
+ else if (dynamic_cast<KConfigSkeleton::ItemSize*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemSize;
+ else if (dynamic_cast<KConfigSkeleton::ItemString*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemString;
+ else if (dynamic_cast<KConfigSkeleton::ItemStringList*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemStringList;
+ else if (dynamic_cast<KConfigSkeleton::ItemUInt*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemUInt;
+ else if (dynamic_cast<KConfigSkeleton::ItemUInt64*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemUInt64;
+ else if (dynamic_cast<KConfigSkeleton::ItemULong*>(sipCpp))
+ sipClass = sipClass_KConfigSkeleton_ItemULong;
+ else
+ sipClass = NULL;
+%End
+//end
+
+}; // class KConfigSkeletonItem
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KConfigSkeleton
+{
+%TypeHeaderCode
+#include <sipkdecorelonglong.h>
+#include <sipkdecoreulonglong.h>
+#include <kconfigskeleton.h>
+typedef QValueList<int> IntList;
+%End
+
+
+public:
+
+ class ItemPassword : KConfigSkeleton::ItemString
+ {
+
+ public:
+ ItemPassword (const QString&, const QString&, QString&, const QString& = QString ::fromLatin1 ("" ));
+
+ }; // class ItemPassword
+
+
+public:
+
+ class ItemPath : KConfigSkeleton::ItemString
+ {
+
+ public:
+ ItemPath (const QString&, const QString&, QString&, const QString& = QString ::null );
+
+ }; // class ItemPath
+
+
+public:
+
+ class ItemEnum : KConfigSkeleton::ItemInt
+ {
+
+ public:
+
+ class Choice
+ {
+
+ public:
+ QString name;
+ QString label;
+ QString whatsThis;
+
+ }; // class Choice
+
+
+ public:
+ ItemEnum (const QString&, const QString&, int, const QValueList<KConfigSkeleton::ItemEnum::Choice>&, int = 0) [(const QString&, const QString&, int&, const QValueList<KConfigSkeleton::ItemEnum::Choice>&, int = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (int) | choices | (QValueList<KConfigSkeleton::ItemEnum::Choice>) |defaultValue | (int = 1)
+
+ class PyItemEnum : public KConfigSkeleton::ItemEnum
+ {
+ public:
+ PyItemEnum (const QString& group, const QString& key, int& val, const QValueList<KConfigSkeleton::ItemEnum::Choice>& choices, int defaultValue = 0) :
+ KConfigSkeleton::ItemEnum(group, key, this->value, choices, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ int value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemEnum *) new PyItemEnum (*a0, *a1, a2, *a3, a4);
+ Py_END_ALLOW_THREADS
+%End
+
+ QValueList<KConfigSkeleton::ItemEnum::Choice> choices () const;
+ void readConfig (KConfig*);
+ void writeConfig (KConfig*);
+
+ public:
+//force
+ void setValue (const int&);
+ int value ();
+ virtual void setDefaultValue (const int&);
+ virtual void setDefault ();
+ void swapDefault ();
+//end
+
+ }; // class ItemEnum
+
+
+public:
+
+%If ( KDE_3_4_0 - )
+
+ class ItemPathList : KConfigSkeleton::ItemStringList
+ {
+
+ public:
+ ItemPathList (const QString&, const QString&, QStringList&, const QStringList& = QStringList ());
+ void readConfig (KConfig*);
+ void writeConfig (KConfig*);
+
+ }; // class ItemPathList
+
+
+public:
+%End
+
+
+public:
+ KConfigSkeleton (const QString& = QString ::null );
+ KConfigSkeleton (KSharedConfig::Ptr);
+ void setDefaults ();
+ void readConfig ();
+ void writeConfig ();
+ void setCurrentGroup (const QString&);
+ QString currentGroup ();
+ void addItem (KConfigSkeletonItem*, const QString& = QString ::null );
+ ItemString* addItemString (const QString&, QString&, const QString& = QString ::fromLatin1 ("" ), const QString& = QString ::null );
+ KConfigSkeleton::ItemPassword* addItemPassword (const QString&, QString&, const QString& = QString ::fromLatin1 ("" ), const QString& = QString ::null );
+ KConfigSkeleton::ItemPath* addItemPath (const QString&, QString&, const QString& = QString ::fromLatin1 ("" ), const QString& = QString ::null );
+ ItemProperty* addItemProperty (const QString&, QVariant&, const QVariant& = QVariant (), const QString& = QString ::null );
+ ItemBool* addItemBool (const QString&, bool&, bool = 0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (bool) | defaultValue | (bool) | key | (QString = QString::null)
+
+ class PyItemBool : public KConfigSkeleton::ItemBool
+ {
+ public:
+ PyItemBool (const QString &group, const QString &key, bool val, bool defaultValue = 0) :
+ KConfigSkeleton::ItemBool (group, key, this->value, defaultValue)
+ {
+ value = val;
+ }
+
+ private:
+ bool value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemBool (sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ ItemInt* addItemInt (const QString&, int&, int = 0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (int) | defaultValue | (int) | key | (QString = QString::null)
+
+ class PyItemInt : public KConfigSkeleton::ItemInt
+ {
+ public:
+ PyItemInt(const QString &group, const QString &key, int val, int defaultValue=0) :
+ KConfigSkeleton::ItemInt (group, key, this->value, defaultValue)
+ {
+ value = val;
+ }
+
+ private:
+ int value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemInt(sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ ItemUInt* addItemUInt (const QString&, uint&, uint = 0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (uint) | defaultValue | (uint) | key | (QString = QString::null)
+
+ class PyItemUInt : public KConfigSkeleton::ItemUInt
+ {
+ public:
+ PyItemUInt(const QString &group, const QString &key, uint val, uint defaultValue = 0) :
+ KConfigSkeleton::ItemUInt (group, key, this->value, defaultValue)
+ {
+ value = val;
+ }
+
+ private:
+ uint value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemUInt(sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ ItemLong* addItemLong (const QString&, long&, long = 0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (long) | defaultValue | (long) | key | (QString = QString::null)
+
+ class PyItemLong : public KConfigSkeleton::ItemLong
+ {
+ public:
+ PyItemLong(const QString &group, const QString &key, long val, long defaultValue=0) :
+ KConfigSkeleton::ItemLong (group, key, this->value, defaultValue)
+ {
+ value = val;
+ }
+
+ private:
+ long value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemLong(sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ ItemULong* addItemULong (const QString&, ulong&, ulong = 0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (ulong) | defaultValue | (ulong) | key | (QString = QString::null)
+
+ class PyItemULong : public KConfigSkeleton::ItemULong
+ {
+ public:
+ PyItemULong(const QString &group, const QString &key, ulong val, ulong defaultValue = 0) :
+ KConfigSkeleton::ItemULong (group, key, this->value, defaultValue)
+ {
+ value = val;
+ }
+
+ private:
+ ulong value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemULong(sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ KConfigSkeleton::ItemInt64* addItemInt64 (const QString&, longlong&, longlong = 0, const QString& = QString ::null );
+ KConfigSkeleton::ItemUInt64* addItemUInt64 (const QString&, ulonglong&, ulonglong = 0, const QString& = QString ::null );
+ ItemDouble* addItemDouble (const QString&, double&, double = 0.0, const QString& = QString ::null );
+%MethodCode
+//takes name | (QString) | value | (double) | defaultValue | (double) | key | (QString = QString::null)
+
+ class PyItemDouble : public KConfigSkeleton::ItemDouble
+ {
+ public:
+ PyItemDouble(const QString &group, const QString &key, double val, double defaultValue=0.0) :
+ KConfigSkeleton::ItemDouble(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ double value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new PyItemDouble(sipCpp->currentGroup(), a3->isNull() ? *a0 : *a3, a1, a2);
+ sipCpp->addItem(sipRes, *a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ ItemColor* addItemColor (const QString&, QColor&, const QColor& = QColor (128 ,128 ,128 ), const QString& = QString ::null );
+ ItemFont* addItemFont (const QString&, QFont&, const QFont& = KGlobalSettings ::generalFont (), const QString& = QString ::null );
+ ItemRect* addItemRect (const QString&, QRect&, const QRect& = QRect (), const QString& = QString ::null );
+ ItemPoint* addItemPoint (const QString&, QPoint&, const QPoint& = QPoint (), const QString& = QString ::null );
+ ItemSize* addItemSize (const QString&, QSize&, const QSize& = QSize (), const QString& = QString ::null );
+ ItemDateTime* addItemDateTime (const QString&, QDateTime&, const QDateTime& = QDateTime (), const QString& = QString ::null );
+ KConfigSkeleton::ItemStringList* addItemStringList (const QString&, QStringList&, const QStringList& = QStringList (), const QString& = QString ::null );
+ KConfigSkeleton::ItemIntList* addItemIntList (const QString&, QValueList<int>&, const QValueList<int>& = IntList (), const QString& = QString ::null );
+%MethodCode
+//returns a Python list of int
+//takes name | (QString) | reference | (a Python list of int) | defaultValue | (a Python list of int = []) | key | (QString = QString::null)
+ if (a2 == NULL) *(QValueList<int> *)a2 = QValueList<int>();
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->addItemIntList (*a0, *a1, *a2, *a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ KConfig* config () const;
+ SIP_PYLIST items () const [KConfigSkeletonItem::List ()];
+%MethodCode
+//returns (a Python list of Items)
+
+ KConfigSkeletonItem::List list;
+
+ Py_BEGIN_ALLOW_THREADS
+ list = sipCpp->items ();
+ Py_END_ALLOW_THREADS
+
+ int n = list.count ();
+ if (n > 0)
+ for (int i = 0; i < n; i++)
+ PyList_Append (sipRes, sipConvertFromInstance (&(list [i]), sipClass_KConfigSkeletonItem, NULL));
+%End
+
+ bool isImmutable (const QString&);
+ KConfigSkeletonItem* findItem (const QString&);
+ bool useDefaults (bool);
+
+protected:
+ virtual void usrUseDefaults (bool);
+ virtual void usrSetDefaults ();
+ virtual void usrReadConfig ();
+ virtual void usrWriteConfig ();
+
+public:
+//force
+
+ class ItemString : KConfigSkeletonItem
+ {
+
+ public:
+
+ enum Type
+ {
+ Normal,
+ Password,
+ Path
+ };
+
+ ItemString (const QString&, const QString&, QString&, const QString& = QString ::fromLatin1 ("" ), KConfigSkeleton::ItemString::Type = KConfigSkeleton ::ItemString ::Normal );
+ void setValue (const QString&);
+ QString& value ();
+ virtual void setDefaultValue (const QString&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemString
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemProperty : KConfigSkeletonItem
+ {
+
+ public:
+ ItemProperty (const QString&, const QString&, QVariant, QVariant = 0) [(const QString&, const QString&, QVariant&, QVariant = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (QVariant) | defaultValue | (QVariant = 0)
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemProperty *) new KConfigSkeleton::ItemProperty (*a0, *a1, *a2, *a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const QVariant&);
+ QVariant& value ();
+ virtual void setDefaultValue (const QVariant&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemProperty
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemBool : KConfigSkeletonItem
+ {
+
+ public:
+ ItemBool (const QString&, const QString&, bool, bool = 1) [(const QString&, const QString&, bool&, bool = 1)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (bool) | defaultValue | (bool = 1)
+
+ class PyItemBool : public KConfigSkeleton::ItemBool
+ {
+ public:
+ PyItemBool(const QString &group, const QString &key, bool val, bool defaultValue = false) :
+ KConfigSkeleton::ItemBool(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ bool value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemBool *) new PyItemBool (*a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const bool&);
+ bool value ();
+ virtual void setDefaultValue (const bool&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemBool
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemInt : KConfigSkeletonItem
+ {
+
+ public:
+ ItemInt (const QString&, const QString&, int, int = 1) [(const QString&, const QString&, int&, int = 1)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (int) | defaultValue | (int = 1)
+
+ class PyItemInt : public KConfigSkeleton::ItemInt
+ {
+ public:
+ PyItemInt(const QString &group, const QString &key, int val, int defaultValue = 0) :
+ KConfigSkeleton::ItemInt(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ int value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemInt *) new PyItemInt (*a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const int&);
+ int value ();
+ virtual void setDefaultValue (const int&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (int);
+ void setMaxValue (int);
+
+ }; // class ItemInt
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemInt64 : KConfigSkeletonItem
+ {
+
+ public:
+ ItemInt64 (const QString&, const QString&, longlong&, longlong = 0);
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (longlong) | defaultValue | (longlong = 0)
+
+ class PyItemInt64 : public KConfigSkeleton::ItemInt64
+ {
+ public:
+ PyItemInt64(const QString &group, const QString &key, Q_INT64 val, Q_INT64 defaultValue=0) :
+ KConfigSkeleton::ItemInt64(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ Q_INT64 value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemInt64 *) new PyItemInt64 (*a0, *a1, *a2, *a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const longlong&);
+ longlong& value ();
+ virtual void setDefaultValue (const longlong&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (longlong);
+ void setMaxValue (longlong);
+
+ }; // class ItemInt64
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemUInt : KConfigSkeletonItem
+ {
+
+ public:
+ ItemUInt (const QString&, const QString&, uint, uint = 0) [(const QString&, const QString&, uint&, uint = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (uint) | defaultValue | (uint = 1)
+
+ class PyItemUInt : public KConfigSkeleton::ItemUInt
+ {
+ public:
+ PyItemUInt(const QString &group, const QString &key, uint val, uint defaultValue = 0) :
+ KConfigSkeleton::ItemUInt(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ uint value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemUInt *) new PyItemUInt (*a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const uint&);
+ uint value ();
+ virtual void setDefaultValue (const uint&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (uint);
+ void setMaxValue (uint);
+
+ }; // class ItemUInt
+
+
+public:
+
+public:
+
+ class ItemLong : KConfigSkeletonItem
+ {
+
+ public:
+ ItemLong (const QString&, const QString&, long&, long = 0) [(const QString&, const QString&, long&, long = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (long) | defaultValue | (long = 1)
+
+ class PyItemLong : public KConfigSkeleton::ItemLong
+ {
+ public:
+ PyItemLong(const QString &group, const QString &key, long val, long defaultValue = 0) :
+ KConfigSkeleton::ItemLong(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ long value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemLong *) new PyItemLong (*a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const long&);
+ long value ();
+ virtual void setDefaultValue (const long&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (long);
+ void setMaxValue (long);
+
+ }; // class ItemLong
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemULong : KConfigSkeletonItem
+ {
+
+ public:
+ ItemULong (const QString&, const QString&, ulong, ulong = 0) [(const QString&, const QString&, ulong&, ulong = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (ulong) | defaultValue | (ulong = 1)
+
+ class PyItemULong : public KConfigSkeleton::ItemULong
+ {
+ public:
+ PyItemULong(const QString &group, const QString &key, ulong val, ulong defaultValue = 0) :
+ KConfigSkeleton::ItemULong(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ ulong value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemULong *) new PyItemULong (*a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const ulong&);
+ ulong value ();
+ virtual void setDefaultValue (const ulong&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (ulong);
+ void setMaxValue (ulong);
+
+ }; // class ItemULong
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemUInt64 : KConfigSkeletonItem
+ {
+
+ public:
+ ItemUInt64 (const QString&, const QString&, ulonglong&, ulonglong = 0);
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (ulonglong) | defaultValue | (ulonglong = 0)
+
+ class PyItemUInt64 : public KConfigSkeleton::ItemUInt64
+ {
+ public:
+ PyItemUInt64(const QString &group, const QString &key, Q_UINT64 val, Q_UINT64 defaultValue = 0) :
+ KConfigSkeleton::ItemUInt64(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ Q_UINT64 value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemUInt64 *) new PyItemUInt64 (*a0, *a1, *a2, *a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const ulonglong&);
+ ulonglong value ();
+ virtual void setDefaultValue (const ulonglong&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (ulonglong);
+ void setMaxValue (ulonglong);
+
+ }; // class ItemUInt64
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemDouble : KConfigSkeletonItem
+ {
+
+ public:
+ ItemDouble (const QString&, const QString&, double, double = 0) [(const QString&, const QString&, double&, double = 0)];
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (double) | defaultValue | (double = 0)
+ class PyItemDouble : public KConfigSkeleton::ItemDouble
+ {
+ public:
+ PyItemDouble(const QString &group, const QString &key, double val, double defaultValue=0.0) :
+ KConfigSkeleton::ItemDouble(group, key, this->value, defaultValue)
+ {
+ value = val;
+ };
+
+ private:
+ double value;
+ };
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemDouble *) new PyItemDouble (*a0, *a1, a2, a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const double&);
+ double value ();
+ virtual void setDefaultValue (const double&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+ QVariant minValue () const;
+ QVariant maxValue () const;
+ void setMinValue (double);
+ void setMaxValue (double);
+
+ }; // class ItemDouble
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemColor : KConfigSkeletonItem
+ {
+
+ public:
+ ItemColor (const QString&, const QString&, QColor&, const QColor& = QColor (128 ,128 ,128 ));
+ void setValue (const QColor&);
+ QColor& value ();
+ virtual void setDefaultValue (const QColor&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemColor
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemFont : KConfigSkeletonItem
+ {
+
+ public:
+ ItemFont (const QString&, const QString&, QFont&, const QFont& = KGlobalSettings ::generalFont ());
+ void setValue (const QFont&);
+ QFont& value ();
+ virtual void setDefaultValue (const QFont&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemFont
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemRect : KConfigSkeletonItem
+ {
+
+ public:
+ ItemRect (const QString&, const QString&, QRect&, const QRect& = QRect ());
+ void setValue (const QRect&);
+ QRect& value ();
+ virtual void setDefaultValue (const QRect&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemRect
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemPoint : KConfigSkeletonItem
+ {
+
+ public:
+ ItemPoint (const QString&, const QString&, QPoint&, const QPoint& = QPoint ());
+ void setValue (const QPoint&);
+ QPoint& value ();
+ virtual void setDefaultValue (const QPoint&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemPoint
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemSize : KConfigSkeletonItem
+ {
+
+ public:
+ ItemSize (const QString&, const QString&, QSize&, const QSize& = QSize ());
+ void setValue (const QSize&);
+ QSize& value ();
+ virtual void setDefaultValue (const QSize&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemSize
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemDateTime : KConfigSkeletonItem
+ {
+
+ public:
+ ItemDateTime (const QString&, const QString&, QDateTime&, const QDateTime& = QDateTime ());
+ void setValue (const QDateTime&);
+ QDateTime& value ();
+ virtual void setDefaultValue (const QDateTime&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemDateTime
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemStringList : KConfigSkeletonItem
+ {
+
+ public:
+ ItemStringList (const QString&, const QString&, QStringList&, const QStringList& = QStringList ());
+ void setValue (const QStringList&);
+ QStringList& value ();
+ virtual void setDefaultValue (const QStringList&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemStringList
+
+
+public:
+//end
+
+public:
+//force
+
+ class ItemIntList : KConfigSkeletonItem
+ {
+
+ public:
+ ItemIntList (const QString&, const QString&, QValueList<int>&, const QValueList<int>& = IntList ());
+%MethodCode
+//takes group | (QString) | key | (QString) | reference | (a Python list of int) | defaultValue | (a Python list of int = 0)
+ if (a3 == NULL) *(QValueList<int> *)a3 = QValueList<int>();
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKConfigSkeleton_ItemIntList *) new KConfigSkeleton::ItemIntList (*a0, *a1, *a2, *a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setValue (const QValueList<int>&);
+ QValueList<int>& value ();
+ virtual void setDefaultValue (const QValueList<int>&);
+ virtual void setDefault ();
+ void swapDefault ();
+ void writeConfig (KConfig*);
+ void readConfig (KConfig*);
+ void setProperty (const QVariant&);
+ QVariant property () const;
+
+ }; // class ItemIntList
+
+
+public:
+//end
+
+}; // class KConfigSkeleton
+
+%End
+
+
+
+%If (KDE_3_2_0 - )
+%MappedType QValueList<KConfigSkeleton::ItemEnum::Choice>
+{
+%TypeHeaderCode
+#include <kconfigskeleton.h>
+#include <sipkdecoreKConfigSkeletonItemEnumChoice.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KConfigSkeleton::ItemEnum::Choice> *cpplist = (QValueList<KConfigSkeleton::ItemEnum::Choice> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KConfigSkeleton::ItemEnum::Choice>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KConfigSkeleton::ItemEnum::Choice (*it), sipClass_KConfigSkeleton_ItemEnum_Choice)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KConfigSkeleton::ItemEnum::Choice> *cpplist = new QValueList<KConfigSkeleton::ItemEnum::Choice>;
+
+ PyObject *elem;
+ KConfigSkeleton::ItemEnum::Choice *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KConfigSkeleton::ItemEnum::Choice *)sipForceConvertTo_KConfigSkeleton_ItemEnum_Choice (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdecore/kcrash.sip b/python/pykde/sip/kdecore/kcrash.sip
new file mode 100644
index 00000000..d8c3a213
--- /dev/null
+++ b/python/pykde/sip/kdecore/kcrash.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCrash
+{
+%TypeHeaderCode
+#include <kcrash.h>
+%End
+
+
+public:
+ static void defaultCrashHandler (int);
+//ig static void setCrashHandler (HandlerType = defaultCrashHandler );
+//ig static HandlerType crashHandler ();
+//ig static void setEmergencySaveFunction (HandlerType = 0 );
+//ig static HandlerType emergencySaveFunction ();
+
+%If ( KDE_3_2_0 - )
+ static void setSafer (bool);
+%End
+
+ static void setApplicationPath (QString);
+ static void setApplicationName (QString);
+
+protected:
+
+}; // class KCrash
+
diff --git a/python/pykde/sip/kdecore/kdcoppropertyproxy.sip b/python/pykde/sip/kdecore/kdcoppropertyproxy.sip
new file mode 100644
index 00000000..33866571
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdcoppropertyproxy.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDCOPPropertyProxy
+{
+%TypeHeaderCode
+#include <kdcoppropertyproxy.h>
+%End
+
+
+public:
+ KDCOPPropertyProxy (QObject*);
+ bool isPropertyRequest (const QCString&);
+ bool processPropertyRequest (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ QValueList<QCString> functions ();
+ static QValueList<QCString> functions (QObject*);
+ static bool isPropertyRequest (const QCString&, QObject*);
+ static bool processPropertyRequest (const QCString&, const QByteArray&, QCString&, QByteArray&, QObject*);
+
+}; // class KDCOPPropertyProxy
+
diff --git a/python/pykde/sip/kdecore/kdebug.sip b/python/pykde/sip/kdecore/kdebug.sip
new file mode 100644
index 00000000..c6da371e
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdebug.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class kdbgstream
+{
+%TypeHeaderCode
+#include <kdebug.h>
+%End
+
+
+public:
+ kdbgstream (uint, uint, bool = 1);
+ kdbgstream (const char*, uint, uint, bool = 1);
+ void flush ();
+//ig kdbgstream& form (const char*, ...);
+
+}; // class kdbgstream
+
+
+class kndbgstream
+{
+%TypeHeaderCode
+#include <kdebug.h>
+%End
+
+
+public:
+ kndbgstream ();
+ void flush ();
+//ig kndbgstream& form (const char*, ...);
+
+}; // class kndbgstream
+
+//ig void kDebugFatal (const char*, ...);
+//ig void kDebugFatal (ushort, const char*, ...);
+kdbgstream& perror (kdbgstream&);
+kdbgstream kdDebug (int = 0);
+kdbgstream kdDebug (bool, int = 0);
+kdbgstream kdWarning (int = 0);
+kdbgstream kdWarning (bool, int = 0);
+kdbgstream kdError (int = 0);
+kdbgstream kdError (bool, int = 0);
+kdbgstream kdFatal (int = 0);
+kdbgstream kdFatal (bool, int = 0);
diff --git a/python/pykde/sip/kdecore/kdecore-kde310.diff b/python/pykde/sip/kdecore/kdecore-kde310.diff
new file mode 100644
index 00000000..d87c911c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde310.diff
@@ -0,0 +1 @@
++ %Include kclipboard.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde311.diff b/python/pykde/sip/kdecore/kdecore-kde311.diff
new file mode 100644
index 00000000..d87c911c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde311.diff
@@ -0,0 +1 @@
++ %Include kclipboard.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde312.diff b/python/pykde/sip/kdecore/kdecore-kde312.diff
new file mode 100644
index 00000000..d87c911c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde312.diff
@@ -0,0 +1 @@
++ %Include kclipboard.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde313.diff b/python/pykde/sip/kdecore/kdecore-kde313.diff
new file mode 100644
index 00000000..d87c911c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde313.diff
@@ -0,0 +1 @@
++ %Include kclipboard.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde314.diff b/python/pykde/sip/kdecore/kdecore-kde314.diff
new file mode 100644
index 00000000..13e77190
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde314.diff
@@ -0,0 +1,3 @@
++ %Include kclipboard.sip
++ %Include kdeversion.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde315.diff b/python/pykde/sip/kdecore/kdecore-kde315.diff
new file mode 100644
index 00000000..13e77190
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde315.diff
@@ -0,0 +1,3 @@
++ %Include kclipboard.sip
++ %Include kdeversion.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde320.diff b/python/pykde/sip/kdecore/kdecore-kde320.diff
new file mode 100644
index 00000000..8476e6c5
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde320.diff
@@ -0,0 +1,16 @@
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include kmacroexpander.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
++ %Include kuser.sip
+
+
+
diff --git a/python/pykde/sip/kdecore/kdecore-kde321.diff b/python/pykde/sip/kdecore/kdecore-kde321.diff
new file mode 100644
index 00000000..5dc526db
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde321.diff
@@ -0,0 +1,12 @@
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include kmacroexpander.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde322.diff b/python/pykde/sip/kdecore/kdecore-kde322.diff
new file mode 100644
index 00000000..e0d64ad2
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde322.diff
@@ -0,0 +1,13 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include kmacroexpander.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde323.diff b/python/pykde/sip/kdecore/kdecore-kde323.diff
new file mode 100644
index 00000000..e0d64ad2
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde323.diff
@@ -0,0 +1,13 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include kmacroexpander.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde330.diff b/python/pykde/sip/kdecore/kdecore-kde330.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde330.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde331.diff b/python/pykde/sip/kdecore/kdecore-kde331.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde331.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde332.diff b/python/pykde/sip/kdecore/kdecore-kde332.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde332.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde340.diff b/python/pykde/sip/kdecore/kdecore-kde340.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde340.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde341.diff b/python/pykde/sip/kdecore/kdecore-kde341.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde341.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde342.diff b/python/pykde/sip/kdecore/kdecore-kde342.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde342.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde343.diff b/python/pykde/sip/kdecore/kdecore-kde343.diff
new file mode 100644
index 00000000..d202574f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde343.diff
@@ -0,0 +1,15 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde350.diff b/python/pykde/sip/kdecore/kdecore-kde350.diff
new file mode 100644
index 00000000..b8dba4ca
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde350.diff
@@ -0,0 +1,16 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include ktimezones.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde351.diff b/python/pykde/sip/kdecore/kdecore-kde351.diff
new file mode 100644
index 00000000..b8dba4ca
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde351.diff
@@ -0,0 +1,16 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include ktimezones.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde352.diff b/python/pykde/sip/kdecore/kdecore-kde352.diff
new file mode 100644
index 00000000..b8dba4ca
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde352.diff
@@ -0,0 +1,16 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include ktimezones.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecore-kde353.diff b/python/pykde/sip/kdecore/kdecore-kde353.diff
new file mode 100644
index 00000000..b8dba4ca
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecore-kde353.diff
@@ -0,0 +1,16 @@
++ %Include fixx11h.sip
++ %Include kcalendarsystem.sip
++ %Include kcalendarsystemfactory.sip
++ %Include kclipboard.sip
++ %Include kconfigdialogmanager.sip
++ %Include kconfigskeleton.sip
++ %Include kdeversion.sip
++ %Include kidna.sip
++ %Include klockfile.sip
++ %Include kmacroexpander.sip
++ %Include kmanagerselection.sip
++ %Include kmountpoint.sip
++ %Include kpty.sip
++ %Include kshell.sip
++ %Include ktimezones.sip
++ %Include kurldrag.sip
diff --git a/python/pykde/sip/kdecore/kdecoremod.sip.in b/python/pykde/sip/kdecore/kdecoremod.sip.in
new file mode 100644
index 00000000..6e396292
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdecoremod.sip.in
@@ -0,0 +1,99 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdecore
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+
+%Include bytearray.sip
+%Include kaboutdata.sip
+%Include kaccel.sip
+%Include kaccelaction.sip
+%Include kaccelbase.sip
+%Include kallocator.sip
+%Include kapplication.sip
+%Include kasyncio.sip
+%Include kaudioplayer.sip
+%Include kbufferedio.sip
+%Include kcatalogue.sip
+%Include kcharsets.sip
+%Include kcmdlineargs.sip
+%Include kcompletion.sip
+%Include kconfig.sip
+%Include kconfigbackend.sip
+%Include kconfigbase.sip
+%Include kconfigdata.sip
+%Include kcrash.sip
+%Include kdcoppropertyproxy.sip
+%Include kdesktopfile.sip
+%Include kglobal.sip
+%Include kglobalaccel.sip
+%Include kglobalsettings.sip
+%Include kiconeffect.sip
+%Include kiconloader.sip
+%Include kicontheme.sip
+%Include kinstance.sip
+%Include kipc.sip
+%Include kkeynative.sip
+%Include kkeyserver_x11.sip
+%Include klibloader.sip
+%Include klocale.sip
+%Include kmdcodec.sip
+%Include kmimesourcefactory.sip
+%Include kmultipledrag.sip
+%Include knotifyclient.sip
+%Include kpalette.sip
+%Include kpixmapprovider.sip
+%Include kprocctrl.sip
+%Include kprocess.sip
+%Include kprocio.sip
+%Include krandomsequence.sip
+%Include kregexp.sip
+%Include krfcdate.sip
+%Include krootprop.sip
+%Include ksavefile.sip
+%Include ksharedptr.sip
+%Include kshortcut.sip
+%Include kshortcutlist.sip
+%Include ksimpleconfig.sip
+%Include ksock.sip
+%Include kstartupinfo.sip
+%Include kstaticdeleter.sip
+%Include kstdaccel.sip
+%Include kstddirs.sip
+%Include kstringhandler.sip
+%Include ktempdir.sip
+%Include ktempfile.sip
+%Include kuniqueapplication.sip
+%Include kurl.sip
+%Include kwin.sip
+%Include kwinmodule.sip
+%Include netwm.sip
+%Include netwm_def.sip
+@mark@
diff --git a/python/pykde/sip/kdecore/kdesktopfile.sip b/python/pykde/sip/kdecore/kdesktopfile.sip
new file mode 100644
index 00000000..dfcad1f0
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdesktopfile.sip
@@ -0,0 +1,85 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDesktopFile : KConfig
+{
+%TypeHeaderCode
+#include <kdesktopfile.h>
+%End
+
+
+public:
+ KDesktopFile (const QString&, bool = 0, const char* = "apps");
+ static bool isDesktopFile (const QString&);
+
+%If ( KDE_3_1_0 - )
+ static bool isAuthorizedDesktopFile (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static QString locateLocal (const QString&);
+%End
+
+%End
+
+ QString readType () const;
+ QString readIcon () const;
+ QString readName () const;
+ QString readComment () const;
+ QString readGenericName () const;
+ QString readPath () const;
+ QString readDevice () const;
+ QString readURL () const;
+ QStringList readActions () const;
+ void setActionGroup (const QString&);
+ bool hasActionGroup (const QString&) const;
+ bool hasLinkType () const;
+ bool hasApplicationType () const;
+ bool hasMimeTypeType () const;
+ bool hasDeviceType () const;
+ bool tryExec () const;
+ QString fileName () const;
+ QString resource () const;
+
+%If ( KDE_3_1_0 - )
+ QString readDocPath () const;
+%End
+
+ QStringList sortOrder () const;
+
+%If ( KDE_3_2_0 - )
+ KDesktopFile* copyTo (const QString&) const;
+%End
+
+ QString filename () const;
+
+private:
+ KDesktopFile (const KDesktopFile&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDesktopFile
+
diff --git a/python/pykde/sip/kdecore/kdesktopwidget.sip b/python/pykde/sip/kdecore/kdesktopwidget.sip
new file mode 100644
index 00000000..418b91f2
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdesktopwidget.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDesktopWidget : QWidget
+{
+%TypeHeaderCode
+#include <kdesktopwidget.h>
+%End
+
+
+public:
+ KDesktopWidget ();
+ bool isVirtualDesktop () const;
+ int numScreens () const;
+ int primaryScreen () const;
+ int screenNumber (QWidget* = 0) const;
+ int screenNumber (const QPoint&) const;
+ QWidget* screen (int = -1);
+ const QRect& screenGeometry (int = -1) const;
+
+}; // class KDesktopWidget
+
diff --git a/python/pykde/sip/kdecore/kdestyle.sip b/python/pykde/sip/kdecore/kdestyle.sip
new file mode 100644
index 00000000..673bf382
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdestyle.sip
@@ -0,0 +1,108 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDEAniMenu : QObject
+{
+%TypeHeaderCode
+#include <kdestyle.h>
+%End
+
+
+public:
+ KDEAniMenu (QPopupMenu*);
+
+protected:
+ void scrollIn ();
+
+protected slots:
+ void slotDestroyFake ();
+ void slotFinished ();
+
+}; // class KDEAniMenu
+
+
+class KDEStyle : KStyle
+{
+%TypeHeaderCode
+#include <kdestyle.h>
+%End
+
+
+public:
+ KDEStyle ();
+ virtual void polish (QWidget*);
+ virtual void unPolish (QWidget*);
+ virtual void polish (QPalette&);
+ void drawButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+ void drawButtonMask (QPainter*, int, int, int, int);
+ void drawComboButtonMask (QPainter*, int, int, int, int);
+ QRect buttonRect (int, int, int, int);
+ void drawBevelButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+ void drawPushButton (QPushButton*, QPainter*);
+ virtual void drawPushButtonLabel (QPushButton*, QPainter*);
+ void drawScrollBarControls (QPainter*, const QScrollBar*, int, uint, uint);
+ QStyle::ScrollControl scrollBarPointOver (const QScrollBar*, int, const QPoint&);
+ void scrollBarMetrics (const QScrollBar*, int&/Out/, int&/Out/, int&/Out/, int&/Out/);
+ QSize indicatorSize () const;
+ void drawIndicator (QPainter*, int, int, int, int, const QColorGroup&, int, bool = 0, bool = 1);
+ void drawIndicatorMask (QPainter*, int, int, int, int, int);
+ QSize exclusiveIndicatorSize () const;
+ void drawExclusiveIndicator (QPainter*, int, int, int, int, const QColorGroup&, bool, bool = 0, bool = 1);
+ void drawExclusiveIndicatorMask (QPainter*, int, int, int, int, bool);
+ void drawComboButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, bool = 0, bool = 1, const QBrush* = 0);
+ QRect comboButtonRect (int, int, int, int);
+ QRect comboButtonFocusRect (int, int, int, int);
+ int sliderLength () const;
+ void drawArrow (QPainter*, Qt::ArrowType, bool, int, int, int, int, const QColorGroup&, bool = 1, const QBrush* = 0);
+ void drawSlider (QPainter*, int, int, int, int, const QColorGroup&, Orientation, bool, bool);
+ void drawSliderMask (QPainter*, int, int, int, int, Orientation, bool, bool);
+ void drawKToolBar (QPainter*, int, int, int, int, const QColorGroup&, KToolBarPos, QBrush* = 0);
+ void drawKBarHandle (QPainter*, int, int, int, int, const QColorGroup&, KToolBarPos, QBrush* = 0);
+ void drawKMenuBar (QPainter*, int, int, int, int, const QColorGroup&, bool, QBrush* = 0);
+ void drawKToolBarButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, bool = 1, bool = 1, bool = 0, KToolButtonType = Icon, const QString& = QString::null, const QPixmap* = 0, QFont* = 0, QWidget* = 0);
+//ig void drawKMenuItem (QPainter*, int, int, int, int, const QColorGroup&, bool, QMenuItem*, QBrush* = 0);
+//ig void drawPopupMenuItem (QPainter*, bool, int, int, QMenuItem*, const QPalette&, bool, bool, int, int, int, int);
+//ig int popupMenuItemHeight (bool, QMenuItem*, const QFontMetrics&);
+ void drawKProgressBlock (QPainter*, int, int, int, int, const QColorGroup&, QBrush*);
+ void drawFocusRect (QPainter*, const QRect&, const QColorGroup&, const QColor*, bool);
+ int defaultFrameWidth () const;
+ void polishPopupMenu (QPopupMenu*);
+ void drawTab (QPainter*, const QTabBar*, QTab*, bool);
+ void drawTabMask (QPainter*, const QTabBar*, QTab*, bool);
+ void tabbarMetrics (const QTabBar*, int&/Out/, int&/Out/, int&/Out/);
+ void drawSplitter (QPainter*, int, int, int, int, const QColorGroup&, Orientation);
+ int splitterWidth () const;
+ void drawPanel (QPainter*, int, int, int, int, const QColorGroup&, bool, int, const QBrush*);
+ void drawKickerAppletHandle (QPainter*, int, int, int, int, const QColorGroup&, QBrush*);
+ bool eventFilter (QObject*, QEvent*);
+
+protected:
+ void drawSBDeco (QPainter*, const QRect&, const QColorGroup&, bool);
+ void drawSBButton (QPainter*, const QRect&, const QColorGroup&, bool = 0);
+ void kColorBitmaps (QPainter*, const QColorGroup&, int, int, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0);
+
+}; // class KDEStyle
+
diff --git a/python/pykde/sip/kdecore/kdeversion.sip b/python/pykde/sip/kdecore/kdeversion.sip
new file mode 100644
index 00000000..e2ad3700
--- /dev/null
+++ b/python/pykde/sip/kdecore/kdeversion.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kdeversion.h>
+%End
+
+
+%If ( KDE_3_1_4 - )
+namespace KDE
+{
+
+%If ( KDE_3_2_0 - )
+uint version ();
+%End
+
+uint versionMajor ();
+uint versionMinor ();
+uint versionRelease ();
+const char* versionString ();
+}; // namespace KDE
+
+%End
diff --git a/python/pykde/sip/kdecore/kglobal.sip b/python/pykde/sip/kdecore/kglobal.sip
new file mode 100644
index 00000000..2b5b5f6d
--- /dev/null
+++ b/python/pykde/sip/kdecore/kglobal.sip
@@ -0,0 +1,65 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KGlobal
+{
+%TypeHeaderCode
+#include <kglobal.h>
+%End
+
+
+public:
+ static KInstance* instance ();
+ static KStandardDirs* dirs ();
+ static KConfig* config ();
+
+%If ( KDE_3_2_0 - )
+ static KSharedConfig* sharedConfig ();
+%End
+
+ static KIconLoader* iconLoader ();
+ static KLocale* locale ();
+ static KCharsets* charsets ();
+ static const QString& staticQString (const char*);
+ static const QString& staticQString (const QString&);
+ static void registerStaticDeleter (KStaticDeleterBase*);
+ static void unregisterStaticDeleter (KStaticDeleterBase*);
+ static void deleteStaticDeleters ();
+//ig KStringDict* _stringDict;
+//ig KInstance* _instance;
+//ig KLocale* _locale;
+//ig KCharsets* _charsets;
+//ig KStaticDeleterList* _staticDeleters;
+ static void setActiveInstance (KInstance*);
+ static KInstance* activeInstance ();
+//ig KInstance* _activeInstance;
+
+}; // class KGlobal
+
+
+%If ( KDE_3_4_0 - )
+int kasciistricmp (const char*, const char*);
+%End
diff --git a/python/pykde/sip/kdecore/kglobalaccel.sip b/python/pykde/sip/kdecore/kglobalaccel.sip
new file mode 100644
index 00000000..c4a531cb
--- /dev/null
+++ b/python/pykde/sip/kdecore/kglobalaccel.sip
@@ -0,0 +1,87 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KGlobalAccel : QObject
+{
+%TypeHeaderCode
+#include <kglobalaccel.h>
+%End
+
+
+public:
+ KGlobalAccel (QObject*, const char* = 0);
+ bool isEnabled () const;
+ void setEnabled (bool);
+ KAccelAction* insert (const QString&, const QString&, const QString&, const KShortcut&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, bool = 1);
+
+%If ( KDE_3_1_0 - )
+ bool remove (const QString&);
+%End
+
+ KAccelAction* insert (const QString&, const QString&);
+ bool updateConnections ();
+ const KShortcut& shortcut (const QString&) const;
+ bool setShortcut (const QString&, const KShortcut&);
+ bool setSlot (const QString&, SIP_RXOBJ_CON, SIP_SLOT_CON ());
+
+%If ( KDE_3_4_0 - )
+ bool setActionEnabled (const QString&, bool);
+%End
+
+
+%If ( KDE_3_3_0 - )
+ QString label (const QString&) const;
+%End
+
+ const QString& configGroup () const;
+ void setConfigGroup (const QString&);
+ bool readSettings (KConfigBase* = 0);
+ bool writeSettings (KConfigBase* = 0) const;
+
+%If ( KDE_3_1_0 - )
+ bool writeSettings (KConfigBase*, bool) const;
+%End
+
+ static bool useFourModifierKeys ();
+
+%If ( KDE_3_5_0 - )
+ static void blockShortcuts (bool);
+ void disableBlocking (bool);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig bool setEnabled (const QString&, bool);
+%End
+
+
+}; // class KGlobalAccel
+
diff --git a/python/pykde/sip/kdecore/kglobalsettings.sip b/python/pykde/sip/kdecore/kglobalsettings.sip
new file mode 100644
index 00000000..f883c3c3
--- /dev/null
+++ b/python/pykde/sip/kdecore/kglobalsettings.sip
@@ -0,0 +1,157 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KGlobalSettings
+{
+%TypeHeaderCode
+#include <kglobalsettings.h>
+%End
+
+
+public:
+ static int dndEventDelay ();
+ static bool singleClick ();
+
+%If ( KDE_3_1_0 - )
+
+ enum TearOffHandle
+ {
+ Disable,
+ ApplicationLevel,
+ Enable
+ };
+
+ static KGlobalSettings::TearOffHandle insertTearOffHandle ();
+%End
+
+ static bool changeCursorOverIcon ();
+ static bool visualActivate ();
+ static uint visualActivateSpeed ();
+ static int autoSelectDelay ();
+ static int contextMenuKey ();
+ static bool showContextMenusOnPress ();
+
+ enum Completion
+ {
+ CompletionNone,
+ CompletionAuto,
+ CompletionMan,
+ CompletionShell,
+ CompletionPopup,
+ CompletionPopupAuto
+ };
+
+ static Completion completionMode ();
+
+ class KMouseSettings
+ {
+
+ public:
+
+ enum
+ {
+ RightHanded,
+ LeftHanded
+ };
+
+ int handed;
+
+ }; // class KMouseSettings
+
+
+public:
+ static KGlobalSettings::KMouseSettings& mouseSettings ();
+ static QString desktopPath ();
+ static QString autostartPath ();
+ static QString trashPath ();
+ static QString documentPath ();
+ static QColor toolBarHighlightColor ();
+ static QColor inactiveTitleColor ();
+ static QColor inactiveTextColor ();
+ static QColor activeTitleColor ();
+ static QColor activeTextColor ();
+ static int contrast ();
+
+%If ( KDE_3_4_0 - )
+ static QColor buttonBackground ();
+ static QColor buttonTextColor ();
+%End
+
+ static QColor baseColor ();
+ static QColor textColor ();
+ static QColor linkColor ();
+ static QColor visitedLinkColor ();
+ static QColor highlightedTextColor ();
+ static QColor highlightColor ();
+ static QColor alternateBackgroundColor ();
+ static QColor calculateAlternateBackgroundColor (const QColor&);
+
+%If ( KDE_3_4_0 - )
+ static bool shadeSortColumn ();
+%End
+
+ static QFont generalFont ();
+ static QFont fixedFont ();
+ static QFont toolBarFont ();
+ static QFont menuFont ();
+ static QFont windowTitleFont ();
+ static QFont taskbarFont ();
+
+%If ( KDE_3_1_0 - )
+ static QFont largeFont (const QString& = QString ::null );
+%End
+
+ static bool isMultiHead ();
+
+%If ( KDE_3_1_0 - )
+ static bool wheelMouseZooms ();
+
+%If ( KDE_3_2_0 - )
+ static QRect splashScreenDesktopGeometry ();
+ static QRect desktopGeometry (const QPoint&);
+ static QRect desktopGeometry (QWidget*);
+ static bool showIconsOnPushButtons ();
+ static bool showFilePreview (const KURL&);
+ static bool opaqueResize ();
+
+%If ( KDE_3_3_0 - )
+ static int buttonLayout ();
+%End
+
+%End
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+ static bool insertTearOffHandle ();
+%End
+
+
+}; // class KGlobalSettings
+
diff --git a/python/pykde/sip/kdecore/kiconeffect.sip b/python/pykde/sip/kdecore/kiconeffect.sip
new file mode 100644
index 00000000..48e1d1dd
--- /dev/null
+++ b/python/pykde/sip/kdecore/kiconeffect.sip
@@ -0,0 +1,102 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIconEffect
+{
+%TypeHeaderCode
+#include <kiconeffect.h>
+%End
+
+
+public:
+ KIconEffect ();
+
+%If ( KDE_3_4_0 - )
+
+ enum Effects
+ {
+ NoEffect,
+ ToGray,
+ Colorize,
+ ToGamma,
+ DeSaturate,
+ ToMonochrome,
+ LastEffect
+ };
+
+%End
+
+ void init ();
+ bool hasEffect (int, int) const;
+ QString fingerprint (int, int);
+ QImage apply (QImage, int, int);
+ QImage apply (QImage, int, float, const QColor, bool);
+
+%If ( KDE_3_4_0 - )
+ QImage apply (QImage, int, float, const QColor, const QColor, bool) const;
+%End
+
+ QPixmap apply (QPixmap, int, int);
+ QPixmap apply (QPixmap, int, float, const QColor, bool);
+
+%If ( KDE_3_4_0 - )
+ QPixmap apply (QPixmap, int, float, const QColor, const QColor, bool) const;
+%End
+
+ QImage doublePixels (QImage);
+ static void visualActivate (QWidget*, QRect);
+ static void toGray (QImage&, float);
+ static void colorize (QImage&, const QColor&, float);
+
+%If ( KDE_3_4_0 - )
+ static void toMonochrome (QImage&, const QColor&, const QColor&, float);
+%End
+
+ static void deSaturate (QImage&, float);
+ static void toGamma (QImage&, float);
+ static void semiTransparent (QImage&);
+ static void semiTransparent (QPixmap&);
+ static void overlay (QImage&, QImage&);
+
+public:
+
+%If ( - KDE_3_4_0 )
+
+ enum Effects
+ {
+ NoEffect,
+ ToGray,
+ Colorize,
+ ToGamma,
+ DeSaturate,
+ LastEffect
+ };
+
+%End
+
+
+}; // class KIconEffect
+
diff --git a/python/pykde/sip/kdecore/kiconloader.sip b/python/pykde/sip/kdecore/kiconloader.sip
new file mode 100644
index 00000000..0a396429
--- /dev/null
+++ b/python/pykde/sip/kdecore/kiconloader.sip
@@ -0,0 +1,92 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIconLoader
+{
+%TypeHeaderCode
+#include <kiconloader.h>
+%End
+
+
+public:
+ KIconLoader (const QString& = QString ::null , KStandardDirs* = 0);
+ void addAppDir (const QString&);
+ QPixmap loadIcon (const QString&, KIcon::Group, int = 0, int = KIcon ::DefaultState , QString* = 0, bool = 0) const;
+
+%If ( KDE_3_5_0 - )
+ QIconSet loadIconSet (const QString&, KIcon::Group, int, bool, bool);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ QIconSet loadIconSet (const QString&, KIcon::Group, int, bool);
+%End
+
+ QIconSet loadIconSet (const QString&, KIcon::Group, int = 0);
+ QString iconPath (const QString&, int, bool = 0) const;
+ QMovie loadMovie (const QString&, KIcon::Group, int = 0) const;
+ QString moviePath (const QString&, KIcon::Group, int = 0) const;
+ QStringList loadAnimated (const QString&, KIcon::Group, int = 0) const;
+ QStringList queryIcons (int, KIcon::Context = KIcon ::Any ) const;
+ QStringList queryIconsByContext (int, KIcon::Context = KIcon ::Any ) const;
+
+%If ( KDE_3_1_0 - )
+ QStringList queryIconsByDir (const QString&) const;
+%End
+
+ int currentSize (KIcon::Group) const;
+ KIconTheme* theme ();
+ KIconEffect* iconEffect ();
+ void reconfigure (const QString&, KStandardDirs*);
+ static QPixmap unknown ();
+ bool alphaBlending (KIcon::Group) const;
+
+%If ( KDE_3_1_0 - )
+ void addExtraDesktopThemes ();
+ bool extraDesktopThemesAdded () const;
+ void enableDelayedIconSetLoading (bool);
+ bool isDelayedIconSetLoadingEnabled () const;
+%End
+
+
+}; // class KIconLoader
+
+QPixmap DesktopIcon (const QString&, int = 0, int = KIcon ::DefaultState , KInstance* = KGlobal ::instance ());
+QPixmap DesktopIcon (const QString&, KInstance*);
+QIconSet DesktopIconSet (const QString&, int = 0, KInstance* = KGlobal ::instance ());
+QPixmap BarIcon (const QString&, int = 0, int = KIcon ::DefaultState , KInstance* = KGlobal ::instance ());
+QPixmap BarIcon (const QString&, KInstance*);
+QIconSet BarIconSet (const QString&, int = 0, KInstance* = KGlobal ::instance ());
+QPixmap SmallIcon (const QString&, int = 0, int = KIcon ::DefaultState , KInstance* = KGlobal ::instance ());
+QPixmap SmallIcon (const QString&, KInstance*);
+QIconSet SmallIconSet (const QString&, int = 0, KInstance* = KGlobal ::instance ());
+QPixmap MainBarIcon (const QString&, int = 0, int = KIcon ::DefaultState , KInstance* = KGlobal ::instance ());
+QPixmap MainBarIcon (const QString&, KInstance*);
+QIconSet MainBarIconSet (const QString&, int = 0, KInstance* = KGlobal ::instance ());
+QPixmap UserIcon (const QString&, int = KIcon ::DefaultState , KInstance* = KGlobal ::instance ());
+QPixmap UserIcon (const QString&, KInstance*);
+QIconSet UserIconSet (const QString&, KInstance* = KGlobal ::instance ());
+int IconSize (KIcon::Group, KInstance* = KGlobal ::instance ());
diff --git a/python/pykde/sip/kdecore/kicontheme.sip b/python/pykde/sip/kdecore/kicontheme.sip
new file mode 100644
index 00000000..bec37387
--- /dev/null
+++ b/python/pykde/sip/kdecore/kicontheme.sip
@@ -0,0 +1,249 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIcon
+{
+%TypeHeaderCode
+#include <kicontheme.h>
+%End
+
+
+public:
+ KIcon ();
+ bool isValid () const;
+
+ enum Context
+ {
+ Any,
+ Action,
+ Application,
+ Device,
+ FileSystem,
+ MimeType
+ };
+
+
+ enum Type
+ {
+ Fixed,
+ Scalable,
+ Threshold
+ };
+
+
+ enum MatchType
+ {
+ MatchExact,
+ MatchBest
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum Group
+ {
+ NoGroup,
+ Desktop,
+ FirstGroup,
+ Toolbar,
+ MainToolbar,
+ Small,
+ Panel,
+ LastGroup,
+ User
+ };
+
+
+%If ( KDE_3_3_1 - )
+
+ enum StdSizes
+ {
+ SizeSmall,
+ SizeSmallMedium,
+ SizeMedium,
+ SizeLarge,
+ SizeHuge,
+ SizeEnormous
+ };
+
+%End
+
+%End
+
+
+ enum States
+ {
+ DefaultState,
+ ActiveState,
+ DisabledState,
+ LastState
+ };
+
+
+%If ( KDE_3_1_0 - )
+
+ enum Overlays
+ {
+ LockOverlay,
+ ZipOverlay,
+ LinkOverlay,
+ HiddenOverlay,
+ ShareOverlay,
+ OverlayMask
+ };
+
+%End
+
+ int size;
+ Context context;
+ Type type;
+ int threshold;
+ QString path;
+
+public:
+
+%If ( KDE_3_3_0 - KDE_3_3_1 )
+
+ enum StdSizes
+ {
+ SizeSmall,
+ SizeSmallMedium,
+ SizeMedium,
+ SizeLarge,
+ SizeHuge
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+ enum StdSizes
+ {
+ SizeSmall,
+ SizeMedium,
+ SizeLarge,
+ SizeHuge
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum Group
+ {
+ NoGroup,
+ Desktop,
+ FirstGroup,
+ Toolbar,
+ MainToolbar,
+ Small,
+ Panel,
+ LastGroup,
+ User
+ };
+
+
+ enum StdSizes
+ {
+ SizeSmall,
+ SizeMedium,
+ SizeLarge
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum Overlays
+ {
+ LockOverlay,
+ ZipOverlay,
+ LinkOverlay,
+ HiddenOverlay,
+ OverlayMask
+ };
+
+%End
+
+
+}; // class KIcon
+
+
+class KIconTheme
+{
+%TypeHeaderCode
+#include <kicontheme.h>
+%End
+
+
+public:
+ KIconTheme (const QString&, const QString& = QString ::null );
+ QString name () const;
+ QString description () const;
+ QString example () const;
+ QString screenshot () const;
+ QString linkOverlay () const;
+ QString zipOverlay () const;
+ QString lockOverlay () const;
+
+%If ( KDE_3_1_0 - )
+ QString shareOverlay () const;
+%End
+
+ QString dir () const;
+ QStringList inherits () const;
+ bool isValid () const;
+
+%If ( KDE_3_1_0 - )
+ bool isHidden () const;
+%End
+
+ int depth () const;
+ int defaultSize (KIcon::Group) const;
+ QValueList<int> querySizes (KIcon::Group) const;
+ QStringList queryIcons (int, KIcon::Context = KIcon ::Any ) const;
+ QStringList queryIconsByContext (int, KIcon::Context = KIcon ::Any ) const;
+ KIcon iconPath (const QString&, int, KIcon::MatchType) const;
+ static QStringList list ();
+ static QString current ();
+ static void reconfigure ();
+
+%If ( KDE_3_1_0 - )
+ static QString defaultThemeName ();
+%End
+
+
+}; // class KIconTheme
+
diff --git a/python/pykde/sip/kdecore/kidna.sip b/python/pykde/sip/kdecore/kidna.sip
new file mode 100644
index 00000000..ff7fee77
--- /dev/null
+++ b/python/pykde/sip/kdecore/kidna.sip
@@ -0,0 +1,40 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kidna.h>
+%End
+
+
+%If ( KDE_3_2_0 - )
+namespace KIDNA
+{
+QCString toAsciiCString (const QString&);
+QString toAscii (const QString&);
+QString toUnicode (const QString&);
+}; // namespace KIDNA
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kinstance.sip b/python/pykde/sip/kdecore/kinstance.sip
new file mode 100644
index 00000000..4014803e
--- /dev/null
+++ b/python/pykde/sip/kdecore/kinstance.sip
@@ -0,0 +1,75 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KInstance
+{
+%TypeHeaderCode
+#include <kinstance.h>
+%End
+
+
+public:
+ KInstance (const QCString&);
+ KInstance (const KAboutData*);
+ KInstance (KInstance*);
+ KStandardDirs* dirs () const;
+ KConfig* config () const;
+
+%If ( KDE_3_2_0 - )
+ KSharedConfig* sharedConfig () const;
+%End
+
+ KIconLoader* iconLoader () const;
+ void newIconLoader () const;
+ const KAboutData* aboutData () const;
+ QCString instanceName () const;
+ KMimeSourceFactory* mimeSourceFactory () const;
+
+protected:
+//ig KInstance (const KInstance&);
+
+%If ( KDE_3_1_0 - )
+ void setConfigName (const QString&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig KCharsets* charsets () const;
+%End
+
+//force
+
+private:
+ KInstance (const KInstance&);
+//end
+
+}; // class KInstance
+
diff --git a/python/pykde/sip/kdecore/kipc.sip b/python/pykde/sip/kdecore/kipc.sip
new file mode 100644
index 00000000..4e39ba32
--- /dev/null
+++ b/python/pykde/sip/kdecore/kipc.sip
@@ -0,0 +1,98 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIPC
+{
+%TypeHeaderCode
+#include <qwindowdefs.h>
+#include <kipc.h>
+%End
+
+
+public:
+
+%If ( KDE_3_5_0 - )
+
+ enum Message
+ {
+ PaletteChanged,
+ FontChanged,
+ StyleChanged,
+ BackgroundChanged,
+ SettingsChanged,
+ IconChanged,
+ ToolbarStyleChanged,
+ ClipboardConfigChanged,
+ BlockShortcuts,
+ UserMessage
+ };
+
+%End
+
+ static void sendMessage (KIPC::Message, WId, int = 0);
+ static void sendMessageAll (KIPC::Message, int = 0);
+
+public:
+
+%If ( KDE_3_1_0 - KDE_3_5_0 )
+
+ enum Message
+ {
+ PaletteChanged,
+ FontChanged,
+ StyleChanged,
+ BackgroundChanged,
+ SettingsChanged,
+ IconChanged,
+ ToolbarStyleChanged,
+ ClipboardConfigChanged,
+ UserMessage
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum Message
+ {
+ PaletteChanged,
+ FontChanged,
+ StyleChanged,
+ BackgroundChanged,
+ SettingsChanged,
+ IconChanged,
+ ToolbarStyleChanged,
+ UserMessage
+ };
+
+%End
+
+
+}; // class KIPC
+
diff --git a/python/pykde/sip/kdecore/kkeynative.sip b/python/pykde/sip/kdecore/kkeynative.sip
new file mode 100644
index 00000000..54e130fd
--- /dev/null
+++ b/python/pykde/sip/kdecore/kkeynative.sip
@@ -0,0 +1,90 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KKeyNative
+{
+%TypeHeaderCode
+#include <kkeynative.h>
+%End
+
+
+public:
+ KKeyNative ();
+//ig KKeyNative (const XEvent*);
+ KKeyNative (const KKey&);
+ KKeyNative (const KKeyNative&);
+ KKeyNative (uint, uint, uint);
+ void clear ();
+//ig bool init (const XEvent*);
+ bool init (const KKey&);
+ bool init (const KKeyNative&);
+ int keyCodeQt () const;
+ KKey key () const;
+
+%If ( KDE_3_1_4 - )
+//ig operator KKey () const;
+%End
+
+ uint code () const;
+ uint mod () const;
+ uint sym () const;
+ bool isNull () const;
+ int compare (const KKeyNative&) const;
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KKeyNative&) const;
+ bool operator != (const KKeyNative&) const;
+ bool operator < (const KKeyNative&) const;
+%End
+
+ static KKeyNative& null ();
+ static bool keyboardHasWinKey ();
+ static uint modX (KKey::ModFlag);
+ static uint accelModMaskX ();
+
+%If ( KDE_3_1_3 - )
+ static uint modXNumLock ();
+ static uint modXLock ();
+ static uint modXScrollLock ();
+
+%If ( KDE_3_4_3 - )
+ static uint modXModeSwitch ();
+%End
+
+%End
+
+
+}; // class KKeyNative
+
+
+%If ( KDE_3_1_4 - )
+//ig typedef union _XEvent XEvent;
+%End
+
+
+%If ( - KDE_3_1_4 )
+//ig typedef _XEvent XEvent;
+%End
diff --git a/python/pykde/sip/kdecore/kkeyserver_x11.sip b/python/pykde/sip/kdecore/kkeyserver_x11.sip
new file mode 100644
index 00000000..b0db2b6b
--- /dev/null
+++ b/python/pykde/sip/kdecore/kkeyserver_x11.sip
@@ -0,0 +1,187 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kkeyserver_x11.h>
+%End
+
+namespace KKeyServer
+{
+
+%If ( KDE_3_1_0 - )
+
+enum ExtraModFlag
+{
+ MODE_SWITCH
+};
+
+%End
+
+
+class Sym
+{
+%TypeHeaderCode
+#include <kkeyserver_x11.h>
+%End
+
+
+public:
+ uint m_sym;
+ Sym ();
+ Sym (uint);
+ Sym (const QString&);
+ bool initQt (int);
+ bool init (const QString&);
+ int qt () const;
+ QString toStringInternal () const;
+ QString toString () const;
+ uint getModsRequired () const;
+ uint getSymVariation () const;
+
+%If ( KDE_3_1_4 - )
+//ig operator uint () const;
+%End
+
+
+}; // class Sym
+
+
+class Key
+{
+%TypeHeaderCode
+#include <kkeyserver_x11.h>
+%End
+
+
+public:
+
+ enum
+ {
+ CODE_FOR_QT
+ };
+
+ uint m_code;
+ uint m_mod;
+ uint m_sym;
+ bool init (const KKey&, bool);
+ bool isNative () const;
+ uint code () const;
+ uint mod () const;
+ uint sym () const;
+ int keyCodeQt () const;
+ void setKeycodeQt (int);
+ int compare (const KKeyServer::Key&) const;
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KKeyServer::Key&) const;
+ bool operator < (const KKeyServer::Key&) const;
+%End
+
+ KKey key () const;
+
+}; // class Key
+
+
+class Variations
+{
+%TypeHeaderCode
+#include <kkeyserver_x11.h>
+%End
+
+
+public:
+
+ enum
+ {
+ MAX_VARIATIONS
+ };
+
+//ig KKeyServer::Key m_rgkey[MAX_VARIATIONS];
+ uint m_nVariations;
+ Variations ();
+ void init (const KKey&, bool);
+ uint count () const;
+ const KKeyServer::Key& key (uint) const;
+
+}; // class Variations
+
+bool initializeMods ();
+uint modX (KKey::ModFlag);
+bool keyboardHasWinKey ();
+uint modXShift ();
+uint modXLock ();
+uint modXCtrl ();
+uint modXAlt ();
+uint modXNumLock ();
+uint modXWin ();
+uint modXScrollLock ();
+
+%If ( KDE_3_4_2 - )
+uint modXModeSwitch ();
+%End
+
+uint accelModMaskX ();
+//ig bool keyQtToSym (int, uint&);
+//ig bool keyQtToMod (int, uint&);
+//ig bool symToKeyQt (uint, int&);
+//ig bool modToModQt (uint, int&);
+//ig bool modToModX (uint, uint&);
+//ig bool modXToModQt (uint, int&);
+
+%If ( KDE_3_4_2 - )
+//ig int qtButtonStateToMod (Qt::ButtonState);
+%End
+
+//ig bool modXToMod (uint, uint&);
+//ig bool codeXToSym (uchar, uint, uint&);
+//ig QString modToStringInternal (uint);
+//ig QString modToStringUser (uint);
+
+%If ( KDE_3_5_0 - )
+uint stringUserToMod (const QString&);
+%End
+
+//ig bool stringToSymMod (const QString&, uint&, uint&);
+//ig void keyQtToKeyX (uint, uchar*, uint*, uint*);
+
+%If ( - KDE_3_2_0 )
+
+class CodeMod
+{
+%TypeHeaderCode
+#include <kkeyserver_x11.h>
+%End
+
+
+public:
+ int code;
+ int mod;
+
+}; // class CodeMod
+
+%End
+
+}; // namespace KKeyServer
+
diff --git a/python/pykde/sip/kdecore/klibloader.sip b/python/pykde/sip/kdecore/klibloader.sip
new file mode 100644
index 00000000..097cb6e2
--- /dev/null
+++ b/python/pykde/sip/kdecore/klibloader.sip
@@ -0,0 +1,103 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KLibrary : QObject
+{
+%TypeHeaderCode
+#include <klibloader.h>
+%End
+
+
+public:
+//ig KLibrary (const QString&, const QString&, void*);
+ QString name () const;
+ QString fileName () const;
+ KLibFactory* factory ();
+ void* symbol (const char*);
+
+%If ( KDE_3_1_0 - )
+ bool hasSymbol (const char*) const;
+%End
+
+ void unload () const;
+
+private:
+ ~KLibrary ();
+//force
+ KLibrary (const QString&, const QString&, void*);
+//end
+
+}; // class KLibrary
+
+
+class KLibLoader : QObject
+{
+%TypeHeaderCode
+#include <klibloader.h>
+%End
+
+
+public:
+ KLibFactory* factory (const char*);
+ virtual KLibrary* library (const char*);
+ KLibrary* globalLibrary (const char*);
+ QString lastErrorMessage () const;
+ virtual void unloadLibrary (const char*);
+ static KLibLoader* self ();
+ static void cleanUp ();
+ static QString findLibrary (const char*, const KInstance* = KGlobal ::instance ());
+
+protected:
+ KLibLoader (QObject* /TransferThis/ = 0, const char* = 0);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KLibLoader
+
+
+class KLibFactory : QObject
+{
+%TypeHeaderCode
+#include <klibloader.h>
+%End
+
+
+public:
+ KLibFactory (QObject* /TransferThis/ = 0, const char* = 0);
+ QObject* create (QObject* /Transfer/ = 0, const char* = 0, const char* = "QObject", const QStringList& = QStringList ());
+
+signals:
+ void objectCreated (QObject*);
+
+protected:
+ virtual QObject* createObject (QObject* /Transfer/ = 0, const char* = 0, const char* = "QObject", const QStringList& = QStringList ());
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KLibFactory
+
diff --git a/python/pykde/sip/kdecore/klocale.sip b/python/pykde/sip/kdecore/klocale.sip
new file mode 100644
index 00000000..b45cb846
--- /dev/null
+++ b/python/pykde/sip/kdecore/klocale.sip
@@ -0,0 +1,238 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KLocale
+{
+%TypeHeaderCode
+#include <klocale.h>
+%End
+
+
+public:
+ KLocale (const QString&, KConfig* = 0);
+//ig KLocale (const KLocale&);
+ QString translate (const char*) const;
+ QString translate (const char*, const char*) const;
+ QString translate (const char*, const char*, ulong) const;
+ bool setEncoding (int);
+ bool setLanguage (const QString&);
+ bool setLanguage (const QStringList&);
+ bool setCountry (const QString&);
+
+ enum SignPosition
+ {
+ ParensAround,
+ BeforeQuantityMoney,
+ AfterQuantityMoney,
+ BeforeMoney,
+ AfterMoney
+ };
+
+ QString decimalSymbol () const;
+ QString thousandsSeparator () const;
+ QString currencySymbol () const;
+ QString monetaryDecimalSymbol () const;
+ QString monetaryThousandsSeparator () const;
+ QString positiveSign () const;
+ QString negativeSign () const;
+ int fracDigits () const;
+ bool positivePrefixCurrencySymbol () const;
+ bool negativePrefixCurrencySymbol () const;
+ SignPosition positiveMonetarySignPosition () const;
+ SignPosition negativeMonetarySignPosition () const;
+ QString formatMoney (double, const QString& = QString ::null , int = -1) const;
+ QString formatNumber (double, int = -1) const;
+ QString formatNumber (const QString&) const;
+
+%If ( KDE_3_5_0 - )
+ QString formatNumber (const QString&, bool, int) const;
+%End
+
+
+%If ( KDE_3_2_0 - )
+ QString formatLong (long) const;
+%End
+
+
+%If ( KDE_3_1_0 - )
+ bool nounDeclension () const;
+%End
+
+ QString formatDate (const QDate&, bool = 0) const;
+
+%If ( KDE_3_1_0 - )
+ bool dateMonthNamePossessive () const;
+
+%If ( KDE_3_3_0 - )
+ QString formatTime (const QTime&, bool, bool) const;
+%End
+
+%End
+
+ QString formatTime (const QTime&, bool = 0) const;
+ bool use12Clock () const;
+ bool weekStartsMonday () const;
+
+%If ( KDE_3_1_0 - )
+ int weekStartDay () const;
+%End
+
+ QString monthName (int, bool = 0) const;
+
+%If ( KDE_3_1_0 - )
+ QString monthNamePossessive (int, bool = 0) const;
+%End
+
+ QString weekDayName (int, bool = 0) const;
+
+%If ( KDE_3_2_0 - )
+ const KCalendarSystem* calendar () const;
+ QString calendarType () const;
+ void setCalendar (const QString&);
+%End
+
+ QString formatDateTime (const QDateTime&, bool, bool = 0) const;
+ double readMoney (const QString&, bool* = 0) const;
+ double readNumber (const QString&, bool* = 0) const;
+ QDate readDate (const QString&, bool* = 0) const;
+ QDate readDate (const QString&, const QString&, bool* = 0) const;
+
+%If ( KDE_3_2_0 - )
+
+ enum ReadDateFlags
+ {
+ NormalFormat,
+ ShortFormat
+ };
+
+ QDate readDate (const QString&, KLocale::ReadDateFlags, bool* = 0) const;
+%End
+
+ QTime readTime (const QString&, bool* = 0) const;
+
+%If ( KDE_3_2_0 - )
+
+ enum ReadTimeFlags
+ {
+ WithSeconds,
+ WithoutSeconds
+ };
+
+ QTime readTime (const QString&, KLocale::ReadTimeFlags, bool* = 0) const;
+%End
+
+ QString language () const;
+ QString country () const;
+ QStringList languagesTwoAlpha () const;
+ QStringList languageList () const;
+ const char* encoding () const;
+ int encodingMib () const;
+ QTextCodec* codecForEncoding () const;
+
+%If ( KDE_3_2_0 - )
+ int fileEncodingMib () const;
+%End
+
+ void setDateFormat (const QString&);
+ void setDateFormatShort (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void setDateMonthNamePossessive (bool);
+%End
+
+ void setTimeFormat (const QString&);
+ void setWeekStartsMonday (bool);
+
+%If ( KDE_3_1_0 - )
+ void setWeekStartDay (int);
+%End
+
+ QString dateFormat () const;
+ QString dateFormatShort () const;
+ QString timeFormat () const;
+ void setDecimalSymbol (const QString&);
+ void setThousandsSeparator (const QString&);
+ void setPositiveSign (const QString&);
+ void setNegativeSign (const QString&);
+ void setPositiveMonetarySignPosition (KLocale::SignPosition);
+ void setNegativeMonetarySignPosition (KLocale::SignPosition);
+ void setPositivePrefixCurrencySymbol (bool);
+ void setNegativePrefixCurrencySymbol (bool);
+ void setFracDigits (int);
+ void setMonetaryThousandsSeparator (const QString&);
+ void setMonetaryDecimalSymbol (const QString&);
+ void setCurrencySymbol (const QString&);
+ int pageSize () const;
+ void setPageSize (int);
+
+ enum MeasureSystem
+ {
+ Metric,
+ Imperial
+ };
+
+ KLocale::MeasureSystem measureSystem () const;
+ void setMeasureSystem (KLocale::MeasureSystem);
+ void insertCatalogue (const QString&);
+ void removeCatalogue (const QString&);
+ void setActiveCatalogue (const QString&);
+ QString translateQt (const char*, const char*, const char*) const;
+
+%If ( KDE_3_1_0 - )
+ QStringList allLanguagesTwoAlpha () const;
+ QString twoAlphaToLanguageName (const QString&) const;
+ QStringList allCountriesTwoAlpha () const;
+ QString twoAlphaToCountryName (const QString&) const;
+%End
+
+ static void splitLocale (const QString&, QString&, QString&, QString&);
+ static void setMainCatalogue (const char*);
+ static QString langLookup (const QString&, const char* = "html");
+ static QString defaultLanguage ();
+ static QString defaultCountry ();
+
+%If ( KDE_3_0_1 - )
+ static QString _initLanguage (KConfigBase*);
+%End
+
+ QString formatMoney (const QString&) const;
+ QString languages () const;
+//ig bool setCharset (const QString&);
+//ig QString charset () const;
+
+protected:
+//ig static void initInstance ();
+//force
+
+private:
+ KLocale (const KLocale&);
+//end
+
+}; // class KLocale
+
+QString i18n (const char*);
+QString i18n (const char*, const char*);
+QString i18n (const char*, const char*, ulong);
diff --git a/python/pykde/sip/kdecore/klockfile.sip b/python/pykde/sip/kdecore/klockfile.sip
new file mode 100644
index 00000000..4858e02a
--- /dev/null
+++ b/python/pykde/sip/kdecore/klockfile.sip
@@ -0,0 +1,113 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KLockFile : KShared
+{
+%TypeHeaderCode
+#include <klockfile.h>
+%End
+
+
+public:
+ typedef KSharedPtr<KLockFile> Ptr;
+ KLockFile (const QString&);
+
+ enum LockResult
+ {
+ LockOK,
+ LockFail,
+ LockError,
+ LockStale
+ };
+
+
+ enum LockOptions
+ {
+ LockNoBlock,
+ LockForce
+ };
+
+ KLockFile::LockResult lock (int = 0);
+ bool isLocked () const;
+ void unlock ();
+ int staleTime () const;
+ void setStaleTime (int);
+ bool getLockInfo (int& /Out/, QString& /Out/, QString& /Out/);
+
+}; // class KLockFile
+
+%End
+
+
+
+%If (KDE_3_3_0 - )
+%MappedType KLockFile::Ptr
+//converts KLockFile
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <klockfile.h>
+#include <../kdecore/sipkdecoreKLockFile.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KLockFile> *cPtr = new KSharedPtr<KLockFile> (*(KSharedPtr<KLockFile> *)sipCpp);
+ KLockFile *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KLockFile, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KLockFile *cpp = (KLockFile *)sipForceConvertTo_KLockFile (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KLockFile> (cpp);
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdecore/kmacroexpander.sip b/python/pykde/sip/kdecore/kmacroexpander.sip
new file mode 100644
index 00000000..c5dcefd3
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmacroexpander.sip
@@ -0,0 +1,364 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kmacroexpander.h>
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KMacroExpanderBase
+{
+%TypeHeaderCode
+#include <kmacroexpander.h>
+%End
+
+
+public:
+ KMacroExpanderBase (QChar = '%');
+ void expandMacros (QString&);
+ bool expandMacrosShellQuote (QString&, uint& /In, Out/);
+ bool expandMacrosShellQuote (QString&);
+ void setEscapeChar (QChar);
+ QChar escapeChar () const;
+
+protected:
+ virtual int expandPlainMacro (const QString&, uint, QStringList&);
+ virtual int expandEscapedMacro (const QString&, uint, QStringList&);
+
+}; // class KMacroExpanderBase
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class KWordMacroExpander : KMacroExpanderBase
+{
+%TypeHeaderCode
+#include <kmacroexpander.h>
+%End
+
+
+public:
+ KWordMacroExpander (QChar = '%');
+
+protected:
+ virtual int expandPlainMacro (const QString&, uint, QStringList&);
+ virtual int expandEscapedMacro (const QString&, uint, QStringList&);
+ virtual bool expandMacro (const QString&, QStringList&) = 0;
+
+}; // class KWordMacroExpander
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class KCharMacroExpander : KMacroExpanderBase
+{
+%TypeHeaderCode
+#include <kmacroexpander.h>
+%End
+
+
+public:
+ KCharMacroExpander (QChar = '%');
+
+protected:
+ virtual int expandPlainMacro (const QString&, uint, QStringList&);
+ virtual int expandEscapedMacro (const QString&, uint, QStringList&);
+ virtual bool expandMacro (QChar, QStringList&) = 0;
+
+}; // class KCharMacroExpander
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+namespace KMacroExpander
+{
+QString expandMacros (const QString&, const QMap<QChar,QString>&, QChar = '%');
+QString expandMacrosShellQuote (const QString&, const QMap<QChar,QString>&, QChar = '%');
+QString expandMacros (const QString&, const QMap<QString,QString>&, QChar = '%');
+QString expandMacrosShellQuote (const QString&, const QMap<QString,QString>&, QChar = '%');
+QString expandMacros (const QString&, const QMap<QChar,QStringList>&, QChar = '%');
+QString expandMacros (const QString&, const QMap<QString,QStringList>&, QChar = '%');
+QString expandMacrosShellQuote (const QString&, const QMap<QChar,QStringList>&, QChar = '%');
+QString expandMacrosShellQuote (const QString&, const QMap<QString,QStringList>&, QChar = '%');
+}; // namespace KMacroExpander
+
+%End
+
+
+
+%MappedType QMap<QChar,QString>
+//converts a Python dict of QChar:QString
+{
+%TypeHeaderCode
+#include <sipqtQString.h>
+#include <sipqtQChar.h>
+%End
+
+%ConvertFromTypeCode
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QChar,QString> map = *sipCpp;
+ QMap<QChar,QString>::ConstIterator it;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ QChar acpp = it.key ();
+ PyObject *binst = PyString_FromString ((char *)((QString *)&it.data ()));
+ PyObject *ainst;
+ if (((ainst = sipBuildResult (NULL, "N", new QChar (acpp), sipClass_QChar)) == NULL)
+ || (binst == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+// Convert a Python dictionary to a QMap<QChar, QString>
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<QChar,QString> *map = new QMap<QChar,QString>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QChar *cKey;
+ QString *sData;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ cKey = (QChar *)sipForceConvertTo_QChar (key, &iserr);
+ sData = (QString *)sipForceConvertTo_QString (value, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete map;
+ return 0;
+ }
+
+ map->insert (*cKey, *sData);
+ }
+
+ *sipCppPtr = map;
+
+ return 1;
+%End
+};
+
+
+%MappedType QMap<QString,QStringList>
+//converts a Python dict of QString:QStringList
+{
+%TypeHeaderCode
+#include <sipqtQString.h>
+#include <sipqtQStringList.h>
+%End
+
+%ConvertFromTypeCode
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString, QStringList> map = *sipCpp;
+ QMap<QString, QStringList>::ConstIterator it;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ QStringList bcpp = it.data ();
+ PyObject *ainst = PyString_FromString ((char *)((QString *)&it.key ()));
+ PyObject *binst;
+ if (((binst = sipBuildResult (NULL, "N", new QStringList (bcpp), sipClass_QStringList)) == NULL)
+ || (ainst == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+// Convert a Python dictionary to a QMap<QString, QStringList> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<QString, QStringList> *map = new QMap<QString, QStringList>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QString *sKey;
+ QStringList *slData;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ sKey = (QString *)sipForceConvertTo_QString (value, &iserr);
+ slData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete map;
+ return 0;
+ }
+
+ map->insert (*sKey, *slData);
+ }
+
+ *sipCppPtr = map;
+
+ return 1;
+%End
+};
+
+
+%MappedType QMap<QChar,QStringList>
+//converts a Python dict of QChar:QStringList
+{
+%TypeHeaderCode
+#include <sipqtQStringList.h>
+#include <sipqtQChar.h>
+%End
+
+%ConvertFromTypeCode
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QChar,QStringList> map = *sipCpp;
+ QMap<QChar,QStringList>::ConstIterator it;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ QChar acpp = it.key ();
+ QStringList bcpp = it.data ();
+ PyObject *binst;
+ PyObject *ainst;
+ if (((ainst = sipBuildResult (NULL, "N", new QChar (acpp), sipClass_QChar)) == NULL)
+ || (binst = sipBuildResult (NULL, "N", new QStringList (bcpp), sipClass_QStringList))
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+// Convert a Python dictionary to a QMap<QChar, QStringList> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<QChar,QStringList> *map = new QMap<QChar,QStringList>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QChar *cKey;
+ QStringList *slData;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ cKey = (QChar *)sipForceConvertTo_QChar (key, &iserr);
+ slData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete map;
+ return 0;
+ }
+
+ map->insert (*cKey, *slData);
+ }
+
+ *sipCppPtr = map;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kmanagerselection.sip b/python/pykde/sip/kdecore/kmanagerselection.sip
new file mode 100644
index 00000000..76fafad2
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmanagerselection.sip
@@ -0,0 +1,91 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KSelectionOwner : QObject
+{
+%TypeHeaderCode
+#include <qdockwindow.h>
+#include <qvariant.h>
+#include <kmanagerselection.h>
+%End
+
+
+public:
+ KSelectionOwner (Atom, int = -1, QObject* /TransferThis/ = 0);
+ KSelectionOwner (const char*, int = -1, QObject* /TransferThis/ = 0);
+ bool claim (bool, bool = 1);
+ void release ();
+ Window ownerWindow () const;
+//ig bool filterEvent (XEvent*);
+
+signals:
+ void lostOwnership ();
+
+protected:
+//ig virtual bool handleMessage (XEvent*);
+ virtual bool genericReply (Atom, Atom, Window);
+ virtual void replyTargets (Atom, Window);
+ virtual void getAtoms ();
+ void setData (long, long);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSelectionOwner
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KSelectionWatcher : QObject
+{
+%TypeHeaderCode
+#include <qdockwindow.h>
+#include <qvariant.h>
+#include <kmanagerselection.h>
+%End
+
+
+public:
+ KSelectionWatcher (Atom, int = -1, QObject* /TransferThis/ = 0);
+ KSelectionWatcher (const char*, int = -1, QObject* /TransferThis/ = 0);
+ Window owner ();
+//ig void filterEvent (XEvent*);
+
+signals:
+ void newOwner (Window);
+ void lostOwner ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSelectionWatcher
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kmdcodec.sip b/python/pykde/sip/kdecore/kmdcodec.sip
new file mode 100644
index 00000000..9d26a0fb
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmdcodec.sip
@@ -0,0 +1,156 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCodecs
+{
+%TypeHeaderCode
+#include <kmdcodec.h>
+%End
+
+
+public:
+ static QCString quotedPrintableEncode (const QByteArray&, bool);
+ static QCString quotedPrintableEncode (const QCString&, bool = 1);
+ static void quotedPrintableEncode (const QByteArray&, QByteArray&, bool);
+ static QCString quotedPrintableDecode (const QByteArray&);
+ static QCString quotedPrintableDecode (const QCString&);
+ static void quotedPrintableDecode (const QByteArray&, QByteArray&);
+ static QCString uuencode (const QByteArray&);
+ static QCString uuencode (const QCString&);
+ static void uuencode (const QByteArray&, QByteArray&);
+ static QCString uudecode (const QByteArray&);
+ static QCString uudecode (const QCString&);
+ static void uudecode (const QByteArray&, QByteArray&);
+ static QCString base64Encode (const QByteArray&, bool);
+ static QCString base64Encode (const QCString&, bool);
+ static void base64Encode (const QByteArray&, QByteArray&, bool);
+ static QCString base64Decode (const QByteArray&);
+ static QCString base64Decode (const QCString&);
+ static void base64Decode (const QByteArray&, QByteArray&);
+
+private:
+ KCodecs ();
+
+}; // class KCodecs
+
+
+class KMD5
+{
+%TypeHeaderCode
+#include <kmdcodec.h>
+%End
+
+
+public:
+//ig typedef uchar Digest[16];
+ KMD5 ();
+ KMD5 (const char*, int = -1);
+ KMD5 (const QByteArray&);
+ KMD5 (const QCString&);
+ void update (const char*, int = -1);
+//igx void update (const uchar*, int = -1);
+ void update (const QByteArray&);
+ void update (const QCString&);
+ bool update (QIODevice&);
+ void reset ();
+//ig const Digest& rawDigest ();
+//ig void rawDigest (KMD5::Digest&);
+ QCString hexDigest ();
+ void hexDigest (QCString&);
+ QCString base64Digest ();
+//ig bool verify (const KMD5::Digest&);
+ bool verify (const QCString&);
+
+protected:
+
+%If ( KDE_3_1_0 - )
+//ig void transform (const uchar);
+%End
+
+ void finalize ();
+
+private:
+ KMD5 (const KMD5&);
+
+protected:
+
+%If ( KDE_3_1_0 - )
+//force
+ void transform (const uchar*);
+%End
+
+//end
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ void transform (const uchar*);
+%End
+
+
+}; // class KMD5
+
+
+%If ( KDE_3_4_0 - )
+
+class KMD4
+{
+%TypeHeaderCode
+#include <kmdcodec.h>
+%End
+
+
+public:
+//ig typedef uchar Digest[16];
+ KMD4 ();
+ KMD4 (const char*, int = -1);
+ KMD4 (const QByteArray&);
+ KMD4 (const QCString&);
+ void update (const char*, int = -1);
+//igx void update (const uchar*, int = -1);
+ void update (const QByteArray&);
+ void update (const QCString&);
+ bool update (QIODevice&);
+ void reset ();
+//ig const Digest& rawDigest ();
+//ig void rawDigest (KMD4::Digest&);
+ QCString hexDigest ();
+ void hexDigest (QCString&);
+ QCString base64Digest ();
+//ig bool verify (const KMD4::Digest&);
+ bool verify (const QCString&);
+
+protected:
+//ig void transform (ulong, const ulong);
+ void finalize ();
+
+private:
+ KMD4 (const KMD4&);
+
+}; // class KMD4
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kmimesourcefactory.sip b/python/pykde/sip/kdecore/kmimesourcefactory.sip
new file mode 100644
index 00000000..574c6b7f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmimesourcefactory.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMimeSourceFactory : QMimeSourceFactory
+{
+%TypeHeaderCode
+#include <kmimesourcefactory.h>
+%End
+
+
+public:
+ KMimeSourceFactory (KIconLoader* = KGlobal ::iconLoader ());
+ virtual QString makeAbsolute (const QString&, const QString&) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KMimeSourceFactory
+
diff --git a/python/pykde/sip/kdecore/kmountpoint.sip b/python/pykde/sip/kdecore/kmountpoint.sip
new file mode 100644
index 00000000..cb283898
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmountpoint.sip
@@ -0,0 +1,189 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KMountPoint : KShared
+{
+%TypeHeaderCode
+#include <kmountpoint.h>
+%End
+
+
+public:
+//ig typedef KSharedPtr<KMountPoint> Ptr;
+//ig typedef QValueList<KMountPoint::Ptr> List;
+
+public:
+
+ enum
+ {
+ NeedMountOptions,
+ NeedRealDeviceName
+ };
+
+ static KMountPoint::List possibleMountPoints (int = 0);
+ static KMountPoint::List currentMountPoints (int = 0);
+ QString mountedFrom () const;
+ QString realDeviceName () const;
+ QString mountPoint () const;
+ QString mountType () const;
+ QStringList mountOptions () const;
+
+%If ( KDE_3_4_0 - )
+ static QString devNameFromOptions (const QStringList&);
+%End
+
+
+private:
+ KMountPoint ();
+
+}; // class KMountPoint
+
+%End
+
+
+
+%MappedType KMountPoint::Ptr
+//converts KMountPoint
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kmountpoint.h>
+#include <sipkdecoreKMountPoint.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KMountPoint> *cPtr = new KSharedPtr<KMountPoint> (*(KSharedPtr<KMountPoint> *)sipCpp);
+ KMountPoint *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KMountPoint, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KMountPoint *cpp = (KMountPoint *)sipForceConvertTo_KMountPoint (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KMountPoint> (cpp);
+
+ return 1;
+%End
+};
+
+
+%MappedType KMountPoint::List
+//converts a Python list of KMountPoint
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kmountpoint.h>
+#include <sipkdecoreKMountPoint.h>
+#include <sipkdecoreKMountPointPtr.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KMountPoint).
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+ KMountPoint::List *cList = (KMountPoint::List *)sipCpp;
+ PyObject *inst;
+
+ KMountPoint::List::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ inst = sipConvertFrom_KMountPoint_Ptr (&(KMountPoint::Ptr)(*it), sipTransferObj);
+
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ KMountPoint::List *cList = new KMountPoint::List;
+
+ PyObject *elem;
+ KMountPoint *mtpt;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ mtpt = (KMountPoint *)sipForceConvertTo_KMountPoint (elem, &iserr);
+
+ KMountPoint::Ptr *ptr = new KMountPoint::Ptr (mtpt);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kmultipledrag.sip b/python/pykde/sip/kdecore/kmultipledrag.sip
new file mode 100644
index 00000000..28beb7fb
--- /dev/null
+++ b/python/pykde/sip/kdecore/kmultipledrag.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMultipleDrag : QDragObject
+{
+%TypeHeaderCode
+#include <kmultipledrag.h>
+%End
+
+
+public:
+ KMultipleDrag (QWidget* = 0, const char* = 0);
+ void addDragObject (QDragObject*);
+
+%If ( KDE_3_5_0 - )
+ virtual QByteArray encodedData (const char*) const;
+ virtual const char* format (int) const;
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_5_0 )
+ virtual QByteArray encodedData (const char*) const;
+ virtual const char* format (int) const;
+%End
+
+
+}; // class KMultipleDrag
+
diff --git a/python/pykde/sip/kdecore/knotifyclient.sip b/python/pykde/sip/kdecore/knotifyclient.sip
new file mode 100644
index 00000000..81850cd6
--- /dev/null
+++ b/python/pykde/sip/kdecore/knotifyclient.sip
@@ -0,0 +1,139 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <knotifyclient.h>
+%End
+
+namespace KNotifyClient
+{
+
+class Instance
+{
+%TypeHeaderCode
+#include <knotifyclient.h>
+%End
+
+
+public:
+ Instance (KInstance*);
+ bool useSystemBell () const;
+ static KInstance* current ();
+ static KNotifyClient::Instance* currentInstance ();
+
+}; // class Instance
+
+
+%If ( KDE_3_2_0 - )
+
+enum
+{
+ Default,
+//ig None,
+ Sound,
+ Messagebox,
+ Logfile,
+ Stderr,
+ PassivePopup,
+ Execute,
+ Taskbar
+};
+
+%End
+
+
+enum
+{
+ Notification,
+ Warning,
+ Error,
+ Catastrophe
+};
+
+
+enum StandardEvent
+{
+ cannotOpenFile,
+ notification,
+ warning,
+ fatalError,
+ catastrophe
+};
+
+bool startDaemon ();
+
+%If ( KDE_3_2_0 - )
+int event (const QString&, const QString& = QString ::null );
+int event (KNotifyClient::StandardEvent, const QString& = QString ::null );
+
+%If ( KDE_3_2_1 - )
+int userEvent (const QString& = QString ::null , int = KNotifyClient ::Default , int = KNotifyClient ::Default , const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+int event (int, const QString&, const QString& = QString ::null );
+int event (int, KNotifyClient::StandardEvent, const QString& = QString ::null );
+int userEvent (int, const QString& = QString ::null , int = KNotifyClient ::Default , int = KNotifyClient ::Default , const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+void beep (const QString& = QString ::null );
+int getPresentation (const QString&);
+QString getFile (const QString&, int);
+int getDefaultPresentation (const QString&);
+QString getDefaultFile (const QString&, int);
+KInstance* instance ();
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+enum
+{
+ Default,
+//ig None,
+ Sound,
+ Messagebox,
+ Logfile,
+ Stderr,
+ PassivePopup,
+ Execute
+};
+
+%End
+
+
+%If ( - KDE_3_1_0 )
+
+enum
+{
+ Default,
+//ig None,
+ Sound,
+ Messagebox,
+ Logfile,
+ Stderr
+};
+
+%End
+
+}; // namespace KNotifyClient
+
diff --git a/python/pykde/sip/kdecore/kpalette.sip b/python/pykde/sip/kdecore/kpalette.sip
new file mode 100644
index 00000000..368fd03f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kpalette.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPalette
+{
+%TypeHeaderCode
+#include <kpalette.h>
+%End
+
+
+public:
+ static QStringList getPaletteList ();
+ KPalette (const QString& = QString ::null );
+ KPalette (const KPalette&);
+ bool save ();
+ QString description ();
+ void setDescription (const QString&);
+ QString name ();
+ void setName (const QString&);
+
+ enum Editable
+ {
+ Yes,
+ No,
+ Ask
+ };
+
+ Editable editable ();
+ void setEditable (KPalette::Editable);
+ int nrColors ();
+ QColor color (int);
+ int findColor (const QColor&);
+ QString colorName (int);
+ QString colorName (const QColor&);
+ int addColor (const QColor&, const QString& = QString ::null );
+ int changeColor (int, const QColor&, const QString& = QString ::null );
+ int changeColor (const QColor&, const QColor&, const QString& = QString ::null );
+
+}; // class KPalette
+
diff --git a/python/pykde/sip/kdecore/kpixmapprovider.sip b/python/pykde/sip/kdecore/kpixmapprovider.sip
new file mode 100644
index 00000000..313c6af5
--- /dev/null
+++ b/python/pykde/sip/kdecore/kpixmapprovider.sip
@@ -0,0 +1,41 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPixmapProvider
+{
+%TypeHeaderCode
+#include <kpixmapprovider.h>
+%End
+
+
+public:
+ virtual QPixmap pixmapFor (const QString&, int = 0) = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPixmapProvider
+
diff --git a/python/pykde/sip/kdecore/kprocctrl.sip b/python/pykde/sip/kdecore/kprocctrl.sip
new file mode 100644
index 00000000..134a6e1c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kprocctrl.sip
@@ -0,0 +1,95 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProcessController : QObject
+{
+%TypeHeaderCode
+#include <kprocctrl.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static void ref ();
+ static void deref ();
+%End
+
+ KProcessController* theKProcessController;
+ static void theSigCHLDHandler (int);
+
+%If ( KDE_3_0_3 - )
+ bool waitForProcessExit (int);
+
+%If ( KDE_3_2_0 - )
+ void unscheduleCheck ();
+ void rescheduleCheck ();
+ int notifierFd () const;
+%End
+
+%End
+
+ void addKProcess (KProcess*);
+ void removeKProcess (KProcess*);
+
+%If ( KDE_3_2_0 - )
+ void addProcess (int);
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+private:
+ KProcessController ();
+%End
+
+ ~KProcessController ();
+ KProcessController (KProcessController&);
+
+public:
+
+%If ( - KDE_3_1_0 )
+ KProcessController ();
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+ static void setupHandlers ();
+ static void resetHandlers ();
+%End
+
+
+public slots:
+
+%If ( - KDE_3_2_0 )
+ void slotDoHousekeeping (int);
+%End
+
+
+}; // class KProcessController
+
diff --git a/python/pykde/sip/kdecore/kprocess.sip b/python/pykde/sip/kdecore/kprocess.sip
new file mode 100644
index 00000000..639a2dd6
--- /dev/null
+++ b/python/pykde/sip/kdecore/kprocess.sip
@@ -0,0 +1,272 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProcess : QObject
+{
+%TypeHeaderCode
+#include <kprocess.h>
+%End
+
+
+public:
+
+%If ( KDE_3_5_2 - )
+
+ enum Communication
+ {
+ NoCommunication,
+ Stdin,
+ Stdout,
+ Stderr,
+ AllOutput,
+ All,
+ NoRead,
+ CTtyOnly,
+ MergedStderr
+ };
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+ enum RunMode
+ {
+ DontCare,
+ NotifyOnExit,
+ Block,
+ OwnGroup
+ };
+
+ KProcess (QObject* /TransferThis/, const char* = 0);
+%End
+
+ KProcess ();
+ bool setExecutable (const QString&);
+
+%If ( KDE_3_1_4 - )
+ KProcess& operator << (const QString&);
+ KProcess& operator << (const char*);
+ KProcess& operator << (const QCString&);
+ KProcess& operator << (const QStringList&);
+%End
+
+ void clearArguments ();
+ virtual bool start (KProcess::RunMode = NotifyOnExit , KProcess::Communication = NoCommunication );
+ virtual bool kill (int = SIGTERM );
+ bool isRunning () const;
+ pid_t pid () const;
+ pid_t getPid () const;
+ void suspend ();
+ void resume ();
+
+%If ( KDE_3_2_0 - )
+ bool wait (int = -1);
+%End
+
+ bool normalExit () const;
+
+%If ( KDE_3_2_0 - )
+ bool signalled () const;
+ bool coreDumped () const;
+%End
+
+ int exitStatus () const;
+
+%If ( KDE_3_2_0 - )
+ int exitSignal () const;
+%End
+
+ bool writeStdin (const char*, int);
+ bool closeStdin ();
+ bool closeStdout ();
+ bool closeStderr ();
+
+%If ( KDE_3_2_0 - )
+ bool closePty ();
+ void closeAll ();
+%End
+
+ const QValueList<QCString>& args ();
+ void setRunPrivileged (bool);
+ bool runPrivileged () const;
+ void setEnvironment (const QString&, const QString&);
+ void setWorkingDirectory (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void setUseShell (bool, const char* = 0);
+ static QString quote (const QString&);
+%End
+
+ void detach ();
+
+%If ( KDE_3_2_0 - )
+
+ enum
+ {
+ PrioLowest,
+ PrioLow,
+ PrioLower,
+ PrioNormal,
+ PrioHigher,
+ PrioHigh,
+ PrioHighest
+ };
+
+ bool setPriority (int);
+%End
+
+
+signals:
+ void processExited (KProcess*);
+ void receivedStdout (KProcess*, char*, int);
+//ig void receivedStdout (int, int&);
+ void receivedStderr (KProcess*, char*, int);
+ void wroteStdin (KProcess*);
+
+protected slots:
+ void slotChildOutput (int);
+ void slotChildError (int);
+ void slotSendData (int);
+
+protected:
+ void setupEnvironment ();
+ virtual int setupCommunication (KProcess::Communication);
+ virtual int commSetupDoneP ();
+ virtual int commSetupDoneC ();
+ virtual void processHasExited (int);
+ virtual void commClose ();
+
+%If ( KDE_3_2_0 - )
+ void setBinaryExecutable (const char*);
+%End
+
+ int childOutput (int);
+ int childError (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_5_2 )
+
+ enum Communication
+ {
+ NoCommunication,
+ Stdin,
+ Stdout,
+ Stderr,
+ AllOutput,
+ All,
+ NoRead
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_4_0 )
+ void setUsePty (KProcess::Communication, bool);
+ KPty* pty () const;
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum RunMode
+ {
+ DontCare,
+ NotifyOnExit,
+ Block
+ };
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+private:
+ KProcess (const KProcess&);
+%End
+
+
+public:
+//force
+ void setArguments (SIP_PYLIST) [void (char**)];
+%MethodCode
+//takes arglist | (a Python list of strings)
+//doc
+// setArguments is the PyKDE equivalent of the stream operator methods (<<)
+// in KDE's KProcess class - provide with a list of strings representing
+// the arguments to the executable program set with setExecutable (PyKDE
+// will continue to provide setExecutable even though it's deprecated in
+// KDE (to also be replaced with stream operators)
+//end
+
+ PyObject *elem;
+
+ for (int i = 0; i < PyList_Size (a0); i++)
+ {
+ elem = PyList_GET_ITEM (a0, i);
+ *sipCpp << PyString_AsString (elem);
+ }
+
+
+%End
+
+//end
+
+}; // class KProcess
+
+
+class KShellProcess : KProcess
+{
+%TypeHeaderCode
+#include <kprocess.h>
+%End
+
+
+public:
+ KShellProcess (const char* = 0);
+ virtual bool start (RunMode = NotifyOnExit , Communication = NoCommunication );
+ static QString quote (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( - KDE_3_2_0 )
+
+private:
+ KShellProcess (const KShellProcess&);
+%End
+
+
+}; // class KShellProcess
+
diff --git a/python/pykde/sip/kdecore/kprocio.sip b/python/pykde/sip/kdecore/kprocio.sip
new file mode 100644
index 00000000..9a908a8e
--- /dev/null
+++ b/python/pykde/sip/kdecore/kprocio.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProcIO : KProcess
+{
+%TypeHeaderCode
+#include <kprocio.h>
+%End
+
+
+public:
+ KProcIO (QTextCodec* = 0);
+
+%If ( KDE_3_2_0 - )
+ void setComm (Communication);
+%End
+
+ bool start (RunMode = NotifyOnExit , bool = 0);
+ bool writeStdin (const QString&, bool = 1);
+ bool writeStdin (const QCString&, bool);
+ bool writeStdin (const QByteArray&);
+ bool fputs (const QString&, bool = 1);
+ void closeWhenDone ();
+ int readln (QString& /Out/, bool = 1, bool* = 0);
+ int fgets (QString&, bool = 0);
+ void resetAll ();
+ void ackRead ();
+ void enableReadSignals (bool);
+
+signals:
+ void readReady (KProcIO*);
+
+protected:
+ void controlledEmission ();
+
+protected slots:
+ void received (KProcess*, char*, int);
+ void sent (KProcess*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KProcIO
+
diff --git a/python/pykde/sip/kdecore/kpty.sip b/python/pykde/sip/kdecore/kpty.sip
new file mode 100644
index 00000000..173de70f
--- /dev/null
+++ b/python/pykde/sip/kdecore/kpty.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_3_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KPty
+{
+%TypeHeaderCode
+#include <kpty.h>
+%End
+
+
+public:
+ KPty ();
+ bool open ();
+ void close ();
+ void setCTty ();
+ void login (const char* = 0, const char* = 0);
+ void logout ();
+ void setWinSize (int, int);
+ void setXonXoff (bool);
+ const char* ttyName () const;
+ int masterFd () const;
+ int slaveFd () const;
+
+}; // class KPty
+
+%End
+
diff --git a/python/pykde/sip/kdecore/krandomsequence.sip b/python/pykde/sip/kdecore/krandomsequence.sip
new file mode 100644
index 00000000..d45da8a0
--- /dev/null
+++ b/python/pykde/sip/kdecore/krandomsequence.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRandomSequence
+{
+%TypeHeaderCode
+#include <krandomsequence.h>
+%End
+
+
+public:
+ KRandomSequence (long = 0);
+ KRandomSequence (const KRandomSequence&);
+ void setSeed (long = 1);
+ double getDouble ();
+ ulong getLong (ulong);
+ bool getBool ();
+//ig void randomize (QGList*);
+ void modulate (int);
+
+}; // class KRandomSequence
+
diff --git a/python/pykde/sip/kdecore/kregexp.sip b/python/pykde/sip/kdecore/kregexp.sip
new file mode 100644
index 00000000..53b7b9ce
--- /dev/null
+++ b/python/pykde/sip/kdecore/kregexp.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRegExp
+{
+%TypeHeaderCode
+#include <kregexp.h>
+%End
+
+
+public:
+ KRegExp ();
+ KRegExp (const char*, const char* = "");
+ bool compile (const char*, const char* = "");
+ bool match (const char*);
+ const char* group (int);
+ int groupStart (int);
+ int groupEnd (int);
+
+}; // class KRegExp
+
diff --git a/python/pykde/sip/kdecore/krfcdate.sip b/python/pykde/sip/kdecore/krfcdate.sip
new file mode 100644
index 00000000..5c270580
--- /dev/null
+++ b/python/pykde/sip/kdecore/krfcdate.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRFCDate
+{
+%TypeHeaderCode
+#include <krfcdate.h>
+%End
+
+
+public:
+ static time_t parseDate (const QString&);
+ static time_t parseDateISO8601 (const QString&);
+ static int localUTCOffset ();
+ static QCString rfc2822DateString (time_t, int);
+ static QCString rfc2822DateString (time_t);
+
+}; // class KRFCDate
+
diff --git a/python/pykde/sip/kdecore/krootprop.sip b/python/pykde/sip/kdecore/krootprop.sip
new file mode 100644
index 00000000..f4846f06
--- /dev/null
+++ b/python/pykde/sip/kdecore/krootprop.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRootProp
+{
+%TypeHeaderCode
+#include <krootprop.h>
+%End
+
+
+public:
+ KRootProp (const QString& = QString ::null );
+ void setProp (const QString& = "");
+ QString prop () const;
+ void destroy ();
+ QString readEntry (const QString&, const QString& = QString ::null ) const;
+ int readNumEntry (const QString&, int = 0) const;
+ QFont readFontEntry (const QString&, const QFont* = 0) const;
+ QColor readColorEntry (const QString&, const QColor* = 0) const;
+ QString writeEntry (const QString&, const QString&);
+ QString writeEntry (const QString&, int);
+ QString writeEntry (const QString&, const QFont&);
+ QString writeEntry (const QString&, const QColor&);
+ QString removeEntry (const QString&);
+ QStringList listEntries () const;
+ void sync ();
+
+}; // class KRootProp
+
diff --git a/python/pykde/sip/kdecore/ksavefile.sip b/python/pykde/sip/kdecore/ksavefile.sip
new file mode 100644
index 00000000..bbac7b85
--- /dev/null
+++ b/python/pykde/sip/kdecore/ksavefile.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSaveFile
+{
+%TypeHeaderCode
+#include <ksavefile.h>
+%End
+
+
+public:
+ KSaveFile (const QString&, int = 438);
+ int status ();
+ QString name ();
+ int handle ();
+//ig FILE* fstream ();
+ QFile* file ();
+ QTextStream* textStream ();
+ QDataStream* dataStream ();
+ void abort ();
+ bool close ();
+
+%If ( KDE_3_2_0 - )
+ static bool backupFile (const QString&, const QString& = QString ::null , const QString& = QString ::fromLatin1 ("~" ));
+%End
+
+
+}; // class KSaveFile
+
diff --git a/python/pykde/sip/kdecore/ksharedptr.sip b/python/pykde/sip/kdecore/ksharedptr.sip
new file mode 100644
index 00000000..7e436ff2
--- /dev/null
+++ b/python/pykde/sip/kdecore/ksharedptr.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KShared
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+%End
+
+
+public:
+ KShared ();
+ KShared (const KShared&);
+ void _KShared_ref ();
+ void _KShared_unref ();
+ int _KShared_count ();
+
+protected:
+ ~KShared ();
+
+}; // class KShared
+
diff --git a/python/pykde/sip/kdecore/kshell.sip b/python/pykde/sip/kdecore/kshell.sip
new file mode 100644
index 00000000..96a61c36
--- /dev/null
+++ b/python/pykde/sip/kdecore/kshell.sip
@@ -0,0 +1,77 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kshell.h>
+extern char **pyArgvToC(PyObject *argvlist,int *argcp);
+%End
+
+
+%If ( KDE_3_2_0 - )
+namespace KShell
+{
+
+enum Options
+{
+ NoOptions,
+ TildeExpand,
+ AbortOnMeta
+};
+
+
+enum Errors
+{
+ NoError,
+ BadQuoting,
+ FoundMeta
+};
+
+QStringList splitArgs (const QString&, int = 0, int* = 0);
+QString joinArgs (const QStringList&);
+QString joinArgsDQ (const QStringList&);
+QString joinArgs (SIP_PYLIST) [QString (const char**, int = -1)];
+%MethodCode
+//returns (QString)
+//takes a0 | a Python list of strings
+ int argc;
+ char **argv;
+
+ // Convert the list.
+
+ if ((argv = pyArgvToC(a0, &argc)) == NULL)
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QString (KShell::joinArgs (argv, argc));
+ Py_END_ALLOW_THREADS
+
+%End
+
+QString tildeExpand (const QString&);
+QString homeDir (const QString&);
+}; // namespace KShell
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kshortcut.sip b/python/pykde/sip/kdecore/kshortcut.sip
new file mode 100644
index 00000000..c86931b0
--- /dev/null
+++ b/python/pykde/sip/kdecore/kshortcut.sip
@@ -0,0 +1,261 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KKey
+{
+%TypeHeaderCode
+#include <kshortcut.h>
+%End
+
+
+public:
+
+ enum
+ {
+ MOD_FLAG_COUNT
+ };
+
+
+%If ( KDE_3_1_3 - )
+
+ enum
+ {
+ QtWIN
+ };
+
+%End
+
+
+ enum ModFlag
+ {
+ SHIFT,
+ CTRL,
+ ALT,
+ WIN
+ };
+
+ KKey ();
+ KKey (int);
+ KKey (const QKeySequence&);
+ KKey (const QKeyEvent*);
+ KKey (const KKey&);
+ KKey (const QString&);
+ KKey (uint, uint);
+ void clear ();
+ bool init (int);
+ bool init (const QKeySequence&);
+ bool init (const QKeyEvent*);
+ bool init (const KKey&);
+ bool init (const QString&);
+ bool init (uint, uint);
+ bool isNull () const;
+ uint sym () const;
+ uint modFlags () const;
+ int compare (const KKey&) const;
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KKey&) const;
+ bool operator != (const KKey&) const;
+ bool operator < (const KKey&) const;
+%End
+
+ int keyCodeQt () const;
+ QString toString () const;
+ QString toStringInternal () const;
+ void simplify ();
+ static KKey& null ();
+ static QString modFlagLabel (KKey::ModFlag);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig bool isValidQt () const;
+//ig bool isValidNative () const;
+%End
+
+
+public:
+
+%If ( KDE_3_1_2 - KDE_3_1_3 )
+
+ enum
+ {
+ QtWIN
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_2 )
+
+ enum
+ {
+ QtWIN
+ };
+
+%End
+
+
+}; // class KKey
+
+
+class KKeySequence
+{
+%TypeHeaderCode
+#include <kshortcut.h>
+%End
+
+
+public:
+
+ enum
+ {
+ MAX_KEYS
+ };
+
+ KKeySequence ();
+ KKeySequence (const QKeySequence&);
+ KKeySequence (const KKey&);
+//ig KKeySequence (const KKeyNative&);
+ KKeySequence (const KKeySequence&);
+ KKeySequence (const QString&);
+ void clear ();
+ bool init (const QKeySequence&);
+ bool init (const KKey&);
+//ig bool init (const KKeyNative&);
+ bool init (const KKeySequence&);
+ bool init (const QString&);
+ uint count () const;
+ const KKey& key (uint) const;
+ bool isTriggerOnRelease () const;
+ bool setKey (uint, const KKey&);
+ bool isNull () const;
+ bool startsWith (const KKeySequence&) const;
+ int compare (const KKeySequence&) const;
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KKeySequence&) const;
+ bool operator != (const KKeySequence&) const;
+ bool operator < (const KKeySequence&) const;
+%End
+
+ QKeySequence qt () const;
+ int keyCodeQt () const;
+ QString toString () const;
+ QString toStringInternal () const;
+ static KKeySequence& null ();
+
+protected:
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig void setTriggerOnRelease (bool);
+%End
+
+
+}; // class KKeySequence
+
+
+class KShortcut
+{
+%TypeHeaderCode
+#include <kshortcut.h>
+%End
+
+
+public:
+
+ enum
+ {
+ MAX_SEQUENCES
+ };
+
+ KShortcut ();
+ KShortcut (int);
+ KShortcut (const QKeySequence&);
+ KShortcut (const KKey&);
+ KShortcut (const KKeySequence&);
+ KShortcut (const KShortcut&);
+ KShortcut (const char*);
+ KShortcut (const QString&);
+ void clear ();
+ bool init (int);
+ bool init (const QKeySequence&);
+ bool init (const KKey&);
+ bool init (const KKeySequence&);
+ bool init (const KShortcut&);
+ bool init (const QString&);
+ uint count () const;
+ const KKeySequence& seq (uint) const;
+ int keyCodeQt () const;
+ bool isNull () const;
+ int compare (const KShortcut&) const;
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KShortcut&) const;
+ bool operator != (const KShortcut&) const;
+ bool operator < (const KShortcut&) const;
+%End
+
+ bool contains (const KKey&) const;
+ bool contains (const KKeyNative&) const;
+ bool contains (const KKeySequence&) const;
+ bool setSeq (uint, const KKeySequence&);
+ bool append (const KKeySequence&);
+
+%If ( KDE_3_3_0 - )
+ void remove (const KKeySequence&);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ bool append (const KKey&);
+ bool append (const KShortcut&);
+%End
+
+
+%If ( KDE_3_1_4 - )
+//ig operator QKeySequence () const;
+%End
+
+ QString toString () const;
+ QString toStringInternal (const KShortcut* = 0) const;
+ static KShortcut& null ();
+
+protected:
+
+public:
+
+%If ( KDE_3_1_4 - )
+//ig operator int () const;
+%End
+
+
+}; // class KShortcut
+
diff --git a/python/pykde/sip/kdecore/kshortcutlist.sip b/python/pykde/sip/kdecore/kshortcutlist.sip
new file mode 100644
index 00000000..046e056c
--- /dev/null
+++ b/python/pykde/sip/kdecore/kshortcutlist.sip
@@ -0,0 +1,133 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KShortcutList
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+#include <kshortcut.h>
+#include <kshortcutlist.h>
+%End
+
+
+public:
+ KShortcutList ();
+ virtual uint count () const = 0;
+ virtual QString name (uint) const = 0;
+ virtual QString label (uint) const = 0;
+ virtual QString whatsThis (uint) const = 0;
+ virtual const KShortcut& shortcut (uint) const = 0;
+ virtual const KShortcut& shortcutDefault (uint) const = 0;
+ virtual bool isConfigurable (uint) const = 0;
+ virtual bool setShortcut (uint, const KShortcut&) = 0;
+ virtual bool isGlobal (uint) const;
+ virtual int index (const QString&) const;
+ virtual int index (const KKeySequence&) const;
+ virtual const KInstance* instance () const;
+
+ enum Other
+ {
+
+ };
+
+ virtual QVariant getOther (KShortcutList::Other, uint) const = 0;
+ virtual bool setOther (KShortcutList::Other, uint, QVariant) = 0;
+ virtual bool save () const = 0;
+ virtual bool readSettings (const QString& = QString ::null , KConfigBase* = 0);
+ virtual bool writeSettings (const QString& = QString ::null , KConfigBase* = 0, bool = 0, bool = 0) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KShortcutList
+
+
+class KAccelShortcutList : KShortcutList
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+#include <kshortcut.h>
+#include <kshortcutlist.h>
+%End
+
+
+public:
+ KAccelShortcutList (KAccel*);
+ KAccelShortcutList (KGlobalAccel*);
+ KAccelShortcutList (KAccelActions&, bool);
+ virtual uint count () const;
+ virtual QString name (uint) const;
+ virtual QString label (uint) const;
+ virtual QString whatsThis (uint) const;
+ virtual const KShortcut& shortcut (uint) const;
+ virtual const KShortcut& shortcutDefault (uint) const;
+ virtual bool isConfigurable (uint) const;
+ virtual bool setShortcut (uint, const KShortcut&);
+ virtual bool isGlobal (uint) const;
+ virtual QVariant getOther (KShortcutList::Other, uint) const;
+ virtual bool setOther (KShortcutList::Other, uint, QVariant);
+ virtual bool save () const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KAccelShortcutList
+
+namespace KStdAccel
+{
+
+class ShortcutList : KShortcutList
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+#include <kshortcut.h>
+#include <kshortcutlist.h>
+%End
+
+
+public:
+ ShortcutList ();
+ virtual uint count () const;
+ virtual QString name (uint) const;
+ virtual QString label (uint) const;
+ virtual QString whatsThis (uint) const;
+ virtual const KShortcut& shortcut (uint) const;
+ virtual const KShortcut& shortcutDefault (uint) const;
+ virtual bool isConfigurable (uint) const;
+ virtual bool setShortcut (uint, const KShortcut&);
+ virtual QVariant getOther (KShortcutList::Other, uint) const;
+ virtual bool setOther (KShortcutList::Other, uint, QVariant);
+ virtual bool save () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class ShortcutList
+
+}; // namespace KStdAccel
+
diff --git a/python/pykde/sip/kdecore/ksimpleconfig.sip b/python/pykde/sip/kdecore/ksimpleconfig.sip
new file mode 100644
index 00000000..f7545fc5
--- /dev/null
+++ b/python/pykde/sip/kdecore/ksimpleconfig.sip
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSimpleConfig : KConfig
+{
+%TypeHeaderCode
+#include <ksimpleconfig.h>
+%End
+
+
+public:
+ KSimpleConfig (const QString&, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ KSimpleConfig (KConfigBackEnd*, bool = 0);
+%End
+
+ virtual void sync ();
+
+private:
+ KSimpleConfig (const KSimpleConfig&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSimpleConfig
+
diff --git a/python/pykde/sip/kdecore/ksock.sip b/python/pykde/sip/kdecore/ksock.sip
new file mode 100644
index 00000000..731b5b37
--- /dev/null
+++ b/python/pykde/sip/kdecore/ksock.sip
@@ -0,0 +1,97 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_3_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSocket : QObject
+{
+%TypeHeaderCode
+#include <ksock.h>
+%End
+
+
+public:
+ KSocket (int);
+ KSocket (const char*, ushort, int = 30);
+ KSocket (const char*);
+ int socket () const;
+ void enableRead (bool);
+ void enableWrite (bool);
+
+signals:
+ void readEvent (KSocket*);
+ void writeEvent (KSocket*);
+ void closeEvent (KSocket*);
+
+public slots:
+ void slotWrite (int);
+ void slotRead (int);
+
+protected:
+ bool connect (const QString&, ushort, int = 0);
+ bool connect (const char*);
+
+private:
+ KSocket (const KSocket&);
+
+}; // class KSocket
+
+
+class KServerSocket : QObject
+{
+%TypeHeaderCode
+#include <ksock.h>
+%End
+
+
+public:
+ KServerSocket (ushort, bool);
+ KServerSocket (const char*, bool);
+ bool bindAndListen ();
+ int socket () const;
+ ushort port ();
+
+public slots:
+ virtual void slotAccept (int);
+
+signals:
+ void accepted (KSocket*);
+
+protected:
+ bool init (ushort);
+ bool init (const char*);
+
+private:
+ KServerSocket (const KServerSocket&);
+
+public:
+
+%If ( - KDE_3_1_2 )
+ KServerSocket (ushort);
+ KServerSocket (const char*);
+%End
+
+
+}; // class KServerSocket
+
diff --git a/python/pykde/sip/kdecore/kstartupinfo.sip b/python/pykde/sip/kdecore/kstartupinfo.sip
new file mode 100644
index 00000000..5567d075
--- /dev/null
+++ b/python/pykde/sip/kdecore/kstartupinfo.sip
@@ -0,0 +1,280 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStartupInfo : QObject
+{
+%TypeHeaderCode
+#include <kstartupinfo.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static void disableAutoAppStartedSending (bool = 1);
+%End
+
+ static void appStarted ();
+
+%If ( KDE_3_2_0 - )
+ static void appStarted (const QCString&);
+ static void setNewStartupId (QWidget*, const QCString&);
+ static void silenceStartup (bool);
+
+%If ( KDE_3_3_0 - )
+ static QCString createNewStartupId ();
+%End
+
+%End
+
+
+%If ( KDE_3_1_1 - )
+
+ enum
+ {
+ CleanOnCantDetect,
+ DisableKWinModule,
+ AnnounceSilenceChanges
+ };
+
+%End
+
+ KStartupInfo (bool, QObject* /TransferThis/ = 0, const char* = 0);
+ static bool sendStartup (const KStartupInfoId&, const KStartupInfoData&);
+//ig static bool sendStartupX (Display*, const KStartupInfoId&, const KStartupInfoData&);
+ static bool sendChange (const KStartupInfoId&, const KStartupInfoData&);
+//ig static bool sendChangeX (Display*, const KStartupInfoId&, const KStartupInfoData&);
+ static bool sendFinish (const KStartupInfoId&);
+//ig static bool sendFinishX (Display*, const KStartupInfoId&);
+ static bool sendFinish (const KStartupInfoId&, const KStartupInfoData&);
+//ig static bool sendFinishX (Display*, const KStartupInfoId&, const KStartupInfoData&);
+ static KStartupInfoId currentStartupIdEnv ();
+ static void resetStartupEnv ();
+
+ enum startup_t
+ {
+ NoMatch,
+ Match,
+ CantDetect
+ };
+
+ KStartupInfo::startup_t checkStartup (WId);
+ KStartupInfo::startup_t checkStartup (WId, KStartupInfoId&);
+ KStartupInfo::startup_t checkStartup (WId, KStartupInfoData&);
+ KStartupInfo::startup_t checkStartup (WId, KStartupInfoId&, KStartupInfoData&);
+ void setTimeout (uint);
+ static void setWindowStartupId (WId, const QCString&);
+ static QCString windowStartupId (WId);
+
+%If ( KDE_3_2_0 - )
+ static void handleAutoAppStartedSending ();
+%End
+
+
+signals:
+ void gotNewStartup (const KStartupInfoId&, const KStartupInfoData&);
+ void gotStartupChange (const KStartupInfoId&, const KStartupInfoData&);
+ void gotRemoveStartup (const KStartupInfoId&, const KStartupInfoData&);
+
+protected:
+ virtual void customEvent (QCustomEvent*);
+
+}; // class KStartupInfo
+
+
+class KStartupInfoId
+{
+%TypeHeaderCode
+#include <kstartupinfo.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KStartupInfoId&) const;
+ bool operator != (const KStartupInfoId&) const;
+%End
+
+ bool none () const;
+ void initId (const QCString& = "");
+ const QCString& id () const;
+
+%If ( KDE_3_3_0 - )
+ ulong timestamp () const;
+%End
+
+ bool setupStartupEnv () const;
+ KStartupInfoId ();
+ KStartupInfoId (const KStartupInfoId&);
+
+%If ( KDE_3_1_4 - )
+ bool operator < (const KStartupInfoId&) const;
+%End
+
+
+private:
+ KStartupInfoId (const QString&);
+
+}; // class KStartupInfoId
+
+
+class KStartupInfoData
+{
+%TypeHeaderCode
+#include <kstartupinfo.h>
+%End
+
+
+public:
+ void setBin (const QString&);
+ const QString& bin () const;
+ void setName (const QString&);
+ const QString& findName () const;
+ const QString& name () const;
+
+%If ( KDE_3_2_0 - )
+ void setDescription (const QString&);
+ const QString& findDescription () const;
+ const QString& description () const;
+%End
+
+ void setIcon (const QString&);
+ const QString& findIcon () const;
+ const QString& icon () const;
+ void setDesktop (int);
+ int desktop () const;
+ void setWMClass (const QCString&);
+ const QCString findWMClass () const;
+ const QCString& WMClass () const;
+ void addPid (pid_t);
+ const QValueList<int>& pids () const;
+ bool is_pid (pid_t) const;
+ void setHostname (const QCString& = QCString ());
+ const QCString& hostname () const;
+
+%If ( KDE_3_1_1 - )
+
+ enum TriState
+ {
+ Yes,
+ No,
+ Unknown
+ };
+
+ void setSilent (KStartupInfoData::TriState);
+ KStartupInfoData::TriState silent () const;
+
+%If ( KDE_3_2_0 - )
+ void setTimestamp (ulong);
+ ulong timestamp () const;
+ int screen () const;
+ void setScreen (int);
+%End
+
+%End
+
+ void update (const KStartupInfoData&);
+ KStartupInfoData ();
+ KStartupInfoData (const KStartupInfoData&);
+
+private:
+ KStartupInfoData (const QString&);
+
+}; // class KStartupInfoData
+
+/*%MappedType QValueList<pid_t>
+//converts a Python list of long
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Handle no list.
+
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Convert to a Python list of long.
+
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ for (uint i = 0; i < sipCpp -> count(); ++i)
+ if (PyList_SetItem(l,i,PyLong_FromLong((long)(*sipCpp)[i])) < 0)
+ {
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of long to a QValueList<long> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ if (sipPy == Py_None)
+ {
+ *sipCppPtr = NULL;
+
+ return 0;
+ }
+
+ QValueList<pid_t> *qvl = new QValueList<pid_t>;
+
+ PyErr_Clear();
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ qvl -> append((pid_t)PyLong_AsLong(PyList_GET_ITEM(sipPy,i)));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ delete qvl;
+ *sipIsErr = 1;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qvl;
+
+ return 1;
+%End
+};*/
+
+
diff --git a/python/pykde/sip/kdecore/kstaticdeleter.sip b/python/pykde/sip/kdecore/kstaticdeleter.sip
new file mode 100644
index 00000000..fca59028
--- /dev/null
+++ b/python/pykde/sip/kdecore/kstaticdeleter.sip
@@ -0,0 +1,38 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStaticDeleterBase
+{
+%TypeHeaderCode
+#include <kstaticdeleter.h>
+%End
+
+
+public:
+ virtual void destructObject () = 0;
+
+}; // class KStaticDeleterBase
+
diff --git a/python/pykde/sip/kdecore/kstdaccel.sip b/python/pykde/sip/kdecore/kstdaccel.sip
new file mode 100644
index 00000000..ccf4d807
--- /dev/null
+++ b/python/pykde/sip/kdecore/kstdaccel.sip
@@ -0,0 +1,441 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kstdaccel.h>
+%End
+
+namespace KStdAccel
+{
+
+%If ( KDE_3_4_0 - )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ TabNext,
+ TabPrev,
+ FullScreen,
+ BackwardWord,
+ ForwardWord,
+ BeginningOfLine,
+ EndOfLine,
+ PasteSelection,
+ WhatThis
+};
+
+%End
+
+const KShortcut& shortcut (KStdAccel::StdAccel);
+QString name (KStdAccel::StdAccel);
+QString label (KStdAccel::StdAccel);
+QString whatsThis (KStdAccel::StdAccel);
+KStdAccel::StdAccel findStdAccel (const KKeySequence&);
+KShortcut shortcutDefault (KStdAccel::StdAccel);
+KShortcut shortcutDefault3 (KStdAccel::StdAccel);
+KShortcut shortcutDefault4 (KStdAccel::StdAccel);
+const KShortcut& open ();
+const KShortcut& openNew ();
+const KShortcut& close ();
+const KShortcut& save ();
+const KShortcut& print () /PyName=print_/;
+const KShortcut& quit ();
+const KShortcut& undo ();
+const KShortcut& redo ();
+const KShortcut& cut ();
+const KShortcut& copy ();
+const KShortcut& paste ();
+
+%If ( KDE_3_4_0 - )
+const KShortcut& pasteSelection ();
+%End
+
+const KShortcut& selectAll ();
+const KShortcut& deleteWordBack ();
+const KShortcut& deleteWordForward ();
+const KShortcut& find ();
+const KShortcut& findNext ();
+const KShortcut& findPrev ();
+const KShortcut& replace ();
+const KShortcut& zoomIn ();
+const KShortcut& zoomOut ();
+//ig const KShortcut& insert ();
+const KShortcut& home ();
+const KShortcut& end ();
+
+%If ( KDE_3_3_0 - )
+const KShortcut& beginningOfLine ();
+const KShortcut& endOfLine ();
+%End
+
+const KShortcut& prior ();
+const KShortcut& next ();
+const KShortcut& gotoLine ();
+const KShortcut& addBookmark ();
+
+%If ( KDE_3_2_0 - )
+const KShortcut& tabNext ();
+const KShortcut& tabPrev ();
+const KShortcut& fullScreen ();
+%End
+
+const KShortcut& help ();
+const KShortcut& completion ();
+const KShortcut& prevCompletion ();
+const KShortcut& nextCompletion ();
+const KShortcut& substringCompletion ();
+const KShortcut& rotateUp ();
+const KShortcut& rotateDown ();
+const KShortcut& popupMenuContext ();
+const KShortcut& whatsThis ();
+const KShortcut& reload ();
+const KShortcut& up ();
+const KShortcut& back ();
+const KShortcut& forward ();
+
+%If ( KDE_3_3_0 - )
+const KShortcut& backwardWord ();
+const KShortcut& forwardWord ();
+%End
+
+const KShortcut& showMenubar ();
+QString action (KStdAccel::StdAccel);
+QString description (KStdAccel::StdAccel);
+int key (KStdAccel::StdAccel);
+int defaultKey (KStdAccel::StdAccel);
+bool isEqual (const QKeyEvent*, int);
+
+%If ( KDE_3_3_0 - KDE_3_4_0 )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ TabNext,
+ TabPrev,
+ FullScreen,
+ BackwardWord,
+ ForwardWord,
+ BeginningOfLine,
+ EndOfLine,
+ WhatThis
+};
+
+%End
+
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ TabNext,
+ TabPrev,
+ FullScreen,
+ WhatThis
+};
+
+%End
+
+
+%If ( KDE_3_1_3 - KDE_3_2_0 )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ WhatThis
+};
+
+%End
+
+
+%If ( KDE_3_1_2 - KDE_3_1_3 )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ WhatThis
+};
+
+%End
+
+
+%If ( - KDE_3_1_2 )
+
+enum StdAccel
+{
+ AccelNone,
+ Open,
+ New,
+ Close,
+ Save,
+ Print,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ DeleteWordBack,
+ DeleteWordForward,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ Home,
+ End,
+ Prior,
+ Next,
+ GotoLine,
+ AddBookmark,
+ ZoomIn,
+ ZoomOut,
+ Up,
+ Back,
+ Forward,
+ Reload,
+ PopupMenuContext,
+ ShowMenubar,
+ Help,
+ WhatsThis,
+ TextCompletion,
+ PrevCompletion,
+ NextCompletion,
+ SubstringCompletion,
+ RotateUp,
+ RotateDown,
+ WhatThis
+};
+
+%End
+
+}; // namespace KStdAccel
+
diff --git a/python/pykde/sip/kdecore/kstddirs.sip b/python/pykde/sip/kdecore/kstddirs.sip
new file mode 100644
index 00000000..971c41de
--- /dev/null
+++ b/python/pykde/sip/kdecore/kstddirs.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStandardDirs
+{
+%TypeHeaderCode
+#include <kstddirs.h>
+%End
+
+
+public:
+ KStandardDirs ();
+ void addPrefix (const QString&);
+ bool addResourceType (const char*, const QString&);
+ bool addResourceDir (const char*, const QString&);
+ QString findResource (const char*, const QString&) const;
+ Q_UINT32 calcResourceHash (const char*, const QString&, bool) const;
+ QStringList findDirs (const char*, const QString&) const;
+ QString findResourceDir (const char*, const QString&) const;
+ QStringList findAllResources (const char*, const QString& = QString::null, bool = 0, bool = 0) const;
+ QStringList findAllResources (const char*, const QString&, bool, bool, QStringList&) const;
+ static QString findExe (const QString&, const QString& = QString::null, bool = 0);
+ static int findAllExe (QStringList&, const QString&, const QString& = QString::null, bool = 0);
+ void addKDEDefaults ();
+ bool addCustomized (KConfig*);
+ QStringList resourceDirs (const char*) const;
+ QStringList allTypes () const;
+ QString saveLocation (const char*, const QString& = QString::null, bool = 1) const;
+ static bool makeDir (const QString&, int = 493);
+ static QString kde_default (const char*);
+ QString kfsstnd_prefixes ();
+ QString localkdedir () const;
+ static bool exists (const QString&);
+
+private:
+ KStandardDirs (const KStandardDirs&);
+
+}; // class KStandardDirs
+
+QString locate (const char*, const QString&, const KInstance* = KGlobal::instance());
+QString locateLocal (const char*, const QString&, const KInstance* = KGlobal::instance());
diff --git a/python/pykde/sip/kdecore/kstringhandler.sip b/python/pykde/sip/kdecore/kstringhandler.sip
new file mode 100644
index 00000000..0805b0e1
--- /dev/null
+++ b/python/pykde/sip/kdecore/kstringhandler.sip
@@ -0,0 +1,89 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStringHandler
+{
+%TypeHeaderCode
+#include <kstringhandler.h>
+%End
+
+
+public:
+ static QString word (const QString&, uint);
+ static QString word (const QString&, const char*);
+ static QString insword (const QString&, const QString&, uint);
+ static QString setword (const QString&, const QString&, uint);
+ static QString remrange (const QString&, const char*);
+ static QString remword (const QString&, uint);
+ static QString remword (const QString&, const QString&);
+ static QString capwords (const QString&);
+ static QStringList capwords (const QStringList&);
+ static QString reverse (const QString&);
+ static QStringList reverse (const QStringList&);
+ static QString ljust (const QString&, uint);
+ static QString rjust (const QString&, uint);
+ static QString center (const QString&, uint);
+ static QString lsqueeze (const QString&, uint = 40);
+
+%If ( KDE_3_2_0 - )
+ static QString lEmSqueeze (const QString&, const QFontMetrics&, uint = 30);
+ static QString lPixelSqueeze (const QString&, const QFontMetrics&, uint);
+%End
+
+ static QString csqueeze (const QString&, uint = 40);
+
+%If ( KDE_3_2_0 - )
+ static QString cEmSqueeze (const QString&, const QFontMetrics&, uint = 30);
+ static QString cPixelSqueeze (const QString&, const QFontMetrics&, uint);
+%End
+
+ static QString rsqueeze (const QString&, uint = 40);
+
+%If ( KDE_3_2_0 - )
+ static QString rEmSqueeze (const QString&, const QFontMetrics&, uint = 30);
+ static QString rPixelSqueeze (const QString&, const QFontMetrics&, uint);
+%End
+
+ static bool matchFileName (const QString&, const QString&);
+//ig static QStringList perlSplit (const QString&, const QString&, uint = 0);
+//ig static QStringList perlSplit (const QChar&, const QString&, uint = 0);
+//ig static QStringList perlSplit (const QRegExp&, const QString&, uint = 0);
+
+%If ( KDE_3_1_0 - )
+ static QString tagURLs (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static QString obscure (const QString&);
+ static bool isUtf8 (const char*);
+ static QString from8Bit (const char*);
+%End
+
+%End
+
+ static bool matchFilename (const QString&, const QString&);
+
+}; // class KStringHandler
+
diff --git a/python/pykde/sip/kdecore/ktempdir.sip b/python/pykde/sip/kdecore/ktempdir.sip
new file mode 100644
index 00000000..97ce1ec4
--- /dev/null
+++ b/python/pykde/sip/kdecore/ktempdir.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KTempDir
+{
+%TypeHeaderCode
+#include <fixx11h.h>
+#include <ktempdir.h>
+%End
+
+
+public:
+ KTempDir (QString = QString ::null , int = 448);
+ void setAutoDelete (bool);
+ int status () const;
+ QString name () const;
+ QDir* qDir ();
+ void unlink ();
+ bool existing () const;
+
+%If ( KDE_3_5_2 - )
+ static bool removeDir (const QString&);
+%End
+
+
+protected:
+ bool create (const QString&, int);
+ void setError (int);
+
+}; // class KTempDir
+
+%End
+
diff --git a/python/pykde/sip/kdecore/ktempfile.sip b/python/pykde/sip/kdecore/ktempfile.sip
new file mode 100644
index 00000000..d7e95afe
--- /dev/null
+++ b/python/pykde/sip/kdecore/ktempfile.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTempFile
+{
+%TypeHeaderCode
+#include <ktempfile.h>
+%End
+
+
+public:
+ KTempFile (QString = QString ::null , QString = QString ::null , int = 384);
+ void setAutoDelete (bool);
+ int status ();
+ QString name ();
+ int handle ();
+//ig FILE* fstream ();
+ QTextStream* textStream ();
+ QDataStream* dataStream ();
+ QFile* file ();
+ void unlink ();
+
+%If ( KDE_3_3_0 - )
+ bool sync ();
+%End
+
+ bool close ();
+
+protected:
+ KTempFile (bool);
+ bool create (const QString&, const QString&, int);
+ void setError (int);
+
+}; // class KTempFile
+
diff --git a/python/pykde/sip/kdecore/ktimezones.sip b/python/pykde/sip/kdecore/ktimezones.sip
new file mode 100644
index 00000000..4abb0bad
--- /dev/null
+++ b/python/pykde/sip/kdecore/ktimezones.sip
@@ -0,0 +1,264 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_5_0 - )
+
+class KTimezoneSource : KShared
+{
+%TypeHeaderCode
+#include <ktimezones.h>
+%End
+
+
+public:
+ KTimezoneSource (const QString&);
+ virtual QString db ();
+ virtual bool parse (const QString&, KTimezoneDetails&) const;
+
+}; // class KTimezoneSource
+
+%End
+
+
+%If ( KDE_3_5_0 - )
+
+class KTimezone
+{
+%TypeHeaderCode
+#include <ktimezones.h>
+%End
+
+
+public:
+ static const float UNKNOWN;
+ static bool isValidLatitude (float);
+ static bool isValidLongitude (float);
+ KTimezone (KSharedPtr<KTimezoneSource>, const QString&, const QString& = QString (), float = KTimezone ::UNKNOWN , float = KTimezone ::UNKNOWN , const QString& = QString ());
+ QString name () const;
+ QString countryCode () const;
+ float latitude () const;
+ float longitude () const;
+ int offset (Qt::TimeSpec = Qt ::UTC ) const;
+ int offset (const QDateTime&) const;
+ QDateTime convert (const KTimezone*, const QDateTime&) const;
+ QString comment () const;
+ bool parse (KTimezoneDetails&) const;
+
+private:
+ KTimezone (const KTimezone&);
+
+public:
+//force
+ typedef KSharedPtr<KTimezoneSource> TZSourcePtr;
+//end
+
+}; // class KTimezone
+
+%End
+
+
+%If ( KDE_3_5_0 - )
+
+class KTimezoneDetails
+{
+%TypeHeaderCode
+#include <ktimezones.h>
+%End
+
+
+public:
+ KTimezoneDetails ();
+ virtual void parseEnded ();
+ virtual void parseStarted ();
+ virtual void gotHeader (uint, uint, uint, uint, uint, uint);
+ virtual void gotTransitionTime (int, uint);
+ virtual void gotLocalTimeIndex (int, uint);
+ virtual void gotLocalTime (int, int, bool, uint);
+ virtual void gotAbbreviation (int, const QString&);
+ virtual void gotLeapAdjustment (int, uint, uint);
+ virtual void gotIsStandard (int, bool);
+ virtual void gotIsUTC (int, bool);
+
+}; // class KTimezoneDetails
+
+%End
+
+
+%If ( KDE_3_5_0 - )
+
+class KTimezones
+{
+%TypeHeaderCode
+#include <ktimezones.h>
+%End
+
+
+public:
+ KTimezones ();
+ const KTimezone* local ();
+ const KTimezone* zone (const QString&);
+ typedef QMap<QString,KTimezone*> ZoneMap;
+ const KTimezones::ZoneMap allZones ();
+ void add (KTimezone*);
+
+private:
+ KTimezones (const KTimezones&);
+
+}; // class KTimezones
+
+%End
+
+
+
+%If (KDE_3_5_0 - )
+%MappedType KSharedPtr<KTimezoneSource>
+//converts KSharedPtr<KTimezoneSource>
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <ktimezones.h>
+#include <sipkdecoreKTimezoneSource.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KTimezoneSource> *cPtr = new KSharedPtr<KTimezoneSource> (*(KSharedPtr<KTimezoneSource> *)sipCpp);
+ KTimezoneSource *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KTimezoneSource, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KTimezoneSource *cpp = (KTimezoneSource *)sipForceConvertTo_KTimezoneSource (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KTimezoneSource> (cpp);
+
+ return 1;
+%End
+};
+%End
+
+
+%If (KDE_3_5_0 - )
+%MappedType KTimezones::ZoneMap
+//converts a Python dict of QString:KTimezone
+{
+%TypeHeaderCode
+#include <qmap.h>
+#include <qstring.h>
+#include <ktimezones.h>
+#include <sipqtQString.h>
+#include <sipkdecoreKTimezone.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString, KTimezone*> cppmap = *sipCpp;
+ QMap<QString, KTimezone*>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QString acpp = it.key ();
+ KTimezone *bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", (KTimezone *) bcpp, sipClass_KTimezone)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QString, KTimezone*> *cppmap = new QMap<QString, KTimezone*>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QString *acpp;
+ KTimezone *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
+ bcpp = (KTimezone *)sipForceConvertTo_KTimezone (aelem, &iserr);
+
+ cppmap->insert (*acpp, bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdecore/kuniqueapplication.sip b/python/pykde/sip/kdecore/kuniqueapplication.sip
new file mode 100644
index 00000000..153dcc68
--- /dev/null
+++ b/python/pykde/sip/kdecore/kuniqueapplication.sip
@@ -0,0 +1,68 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KUniqueApplication : KApplication, DCOPObject
+{
+%TypeHeaderCode
+#include <kuniqueapp.h>
+%End
+
+
+public:
+ KUniqueApplication (bool, bool, bool);
+
+%If ( KDE_3_3_0 - )
+//ig KUniqueApplication (Display*, Qt::HANDLE = 0, Qt::HANDLE = 0, bool = 1, bool = 0);
+%End
+
+ static void addCmdLineOptions ();
+ static bool start ();
+ bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ virtual int newInstance ();
+
+%If ( KDE_3_3_0 - )
+ bool restoringSession ();
+ static void setHandleAutoStarted ();
+%End
+
+
+protected:
+
+%If ( KDE_3_3_0 - )
+ virtual void virtual_hook (int, void*);
+%End
+
+
+public:
+
+%If ( - KDE_3_3_0 )
+ KUniqueApplication (bool = 1, bool = 1);
+ virtual DCOPClient* dcopClient ();
+%End
+
+
+}; // class KUniqueApplication
+
diff --git a/python/pykde/sip/kdecore/kurl.sip b/python/pykde/sip/kdecore/kurl.sip
new file mode 100644
index 00000000..5f086a46
--- /dev/null
+++ b/python/pykde/sip/kdecore/kurl.sip
@@ -0,0 +1,405 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURL
+{
+%TypeHeaderCode
+#include <kurl.h>
+%End
+
+
+public:
+
+ enum AdjustementFlags
+ {
+ NoAdjustements,
+ StripFileProtocol
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum URIMode
+ {
+ Auto,
+ Invalid,
+ RawURI,
+ URL,
+ Mailto
+ };
+
+%End
+
+ KURL ();
+ KURL (const QString&, int = 0);
+ KURL (const char*, int = 0);
+ KURL (const QCString&, int = 0);
+ KURL (const KURL&);
+ KURL (const QUrl&);
+ KURL (const KURL&, const QString&, int = 0);
+ QString protocol () const;
+ void setProtocol (const QString&);
+
+%If ( KDE_3_2_0 - )
+ int uriMode () const;
+%End
+
+ QString user () const;
+ void setUser (const QString&);
+ bool hasUser () const;
+ QString pass () /PyName=pass_/;
+ void setPass (const QString&);
+ bool hasPass () const;
+ QString host () const;
+ void setHost (const QString&);
+ bool hasHost () const;
+ ushort port () const;
+ void setPort (ushort);
+ QString path () const;
+ QString path (int) const;
+ void setPath (const QString&);
+ bool hasPath () const;
+ void cleanPath (bool = 0);
+ void adjustPath (int);
+ void setEncodedPathAndQuery (const QString&, int = 0);
+ void setEncodedPath (const QString&, int = 0);
+ QString encodedPathAndQuery (int = 0, bool = 0, int = 0) const;
+ void setQuery (const QString&, int = 0);
+ QString query () const;
+ QString ref () const;
+ void setRef (const QString&);
+ bool hasRef () const;
+ QString htmlRef () const;
+ QString encodedHtmlRef () const;
+ void setHTMLRef (const QString&);
+ bool hasHTMLRef () const;
+ bool isValid () const;
+ bool isMalformed () const;
+ bool isLocalFile () const;
+ void setFileEncoding (const QString&);
+ QString fileEncoding () const;
+ bool hasSubURL () const;
+ void addPath (const QString&);
+ QString queryItem (const QString&) const;
+
+%If ( KDE_3_2_0 - )
+ QString queryItem (const QString&, int) const;
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+ enum QueryItemsOptions
+ {
+ CaseInsensitiveKeys
+ };
+
+ QMap<QString,QString> queryItems (int = 0) const;
+
+%If ( KDE_3_2_0 - )
+ QMap<QString,QString> queryItems (int, int) const;
+%End
+
+ void addQueryItem (const QString&, const QString&, int = 0);
+ void removeQueryItem (const QString&);
+%End
+
+ void setFileName (const QString&);
+ QString fileName (bool = 1) const;
+ QString directory (bool = 1, bool = 1) const;
+
+%If ( KDE_3_2_0 - )
+ void setDirectory (const QString&);
+%End
+
+ bool cd (const QString&);
+ QString url (int = 0, int = 0) const;
+ QString prettyURL (int = 0) const;
+ QString prettyURL (int, KURL::AdjustementFlags) const;
+
+%If ( KDE_3_4_0 - )
+ QString pathOrURL () const;
+%End
+
+
+%If ( KDE_3_0_1 - )
+ QString htmlURL () const;
+%End
+
+ bool isEmpty () const;
+ KURL upURL () const;
+
+%If ( KDE_3_2_0 - )
+ bool operator < (const KURL&) const;
+%End
+
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KURL&) const;
+ bool operator == (const QString&) const;
+ bool operator != (const KURL&) const;
+ bool operator != (const QString&) const;
+%End
+
+ bool cmp (const KURL&, bool = 0) const;
+
+%If ( KDE_3_1_0 - )
+ bool equals (const KURL&, bool = 0) const;
+%End
+
+ bool isParentOf (const KURL&) const;
+ static KURL::List split (const QString&);
+ static KURL::List split (const KURL&);
+ static KURL join (const KURL::List&);
+
+%If ( KDE_3_1_0 - )
+ static KURL fromPathOrURL (const QString&);
+%End
+
+ static QString encode_string (const QString&, int = 0);
+ static QString encode_string_no_slash (const QString&, int = 0);
+ static QString decode_string (const QString&, int = 0);
+ static bool isRelativeURL (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static QString relativeURL (const KURL&, const KURL&, int = 0);
+ static QString relativePath (const QString&, const QString&, bool* = 0);
+ static KURL::URIMode uriModeForProtocol (const QString&);
+%End
+
+ QString filename (bool = 1) const;
+
+protected:
+ void reset ();
+
+%If ( KDE_3_2_0 - )
+ void parseURL (const QString&, int = 0);
+ void parseRawURI (const QString&, int = 0);
+ void parseMailto (const QString&, int = 0);
+%End
+
+ void parse (const QString&, int = 0);
+
+public:
+//force
+
+ class List
+ {
+
+ public:
+ List ();
+ List (const QStringList&);
+ QStringList toStringList () const;
+ bool isEmpty () const;
+ void append (const KURL&);
+ void prepend (const KURL&);
+ void remove (const KURL&);
+ const KURL& first () const;
+ const KURL& last () const;
+ int findIndex (const KURL&) const;
+ uint contains (const KURL&) const;
+ uint count () const;
+ void clear ();
+ int __len__ () /NonLazy/;
+%MethodCode
+//returns (int)
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> count();
+ Py_END_ALLOW_THREADS
+%End
+
+ void __setitem__ (int, const KURL&);
+%MethodCode
+//takes index | (int) | value | (KURL)
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ (*sipCpp)[a0] = *a1;
+%End
+
+ void __setitem__ (SIP_PYSLICE, const KURL::List&);
+%MethodCode
+//takes range | (a Python slice) | urlList | (KURL.List)
+
+ int len, start, stop, step, slicelength;
+
+ len = sipCpp -> count();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ int vlen = a1 -> count();
+ if (vlen != slicelength)
+ {
+ sipBadLengthForSlice(vlen,slicelength);
+ sipIsErr = 1;
+ }
+ else
+ {
+ KURL::List::ConstIterator it = a1 -> begin();
+ for (int i = 0; i < slicelength; ++i)
+ {
+ (*sipCpp)[start] = *it;
+ start += step;
+ ++it;
+ }
+ }
+ }
+%End
+
+ void __delitem__ (int);
+%MethodCode
+//takes index | (int)
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ sipCpp -> remove(sipCpp -> at(a0));
+%End
+
+ void __delitem__ (SIP_PYSLICE);
+%MethodCode
+//takes range | (a Python slice)
+ int len, start, stop, step, slicelength;
+
+ len = sipCpp -> count();
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ for (int i = 0; i < slicelength; ++i)
+ {
+ sipCpp -> remove(sipCpp -> at(start));
+ start += step - 1;
+ }
+%End
+
+ KURL operator [] (int);
+%MethodCode
+//returns (KURL)
+//takes index | (int)
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ sipRes = new KURL((*sipCpp)[a0]);
+%End
+
+ KURL::List operator [] (SIP_PYSLICE);
+%MethodCode
+//returns (KURL.List)
+//takes range | (a Python slice)
+ int len, start, stop, step, slicelength;
+
+ len = sipCpp -> count();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ sipRes = new KURL::List();
+
+ for (int i = 0; i < slicelength; ++i)
+ {
+ (*sipRes) += (*sipCpp)[start];
+ start += step;
+ }
+ }
+%End
+
+ KURL::List operator + (const KURL::List&);
+%MethodCode
+//returns (KURL.List)
+//takes listToAdd | (KURL.List)
+ Py_BEGIN_ALLOW_THREADS
+// sipRes = new KURL::List((const KURL::List&)((*sipCpp) + *a0));
+ sipRes = new KURL::List (*sipCpp);
+ (*sipRes) += (*a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ KURL::List& operator += (const KURL::List&);
+ KURL::List operator * (int);
+%MethodCode
+ sipRes = new KURL::List();
+
+ for (int i = 0; i < a0; ++i)
+ (*sipRes) += (*sipCpp);
+%End
+
+ KURL::List& operator *= (int);
+%MethodCode
+//returns (KURL.List)
+//takes val | (int)
+ KURL::List orig(*sipCpp);
+
+ sipCpp -> clear();
+
+ for (int i = 0; i < a0; ++i)
+ (*sipCpp) += orig;
+%End
+
+ bool operator == (const KURL::List&);
+ bool operator != (const KURL::List&);
+ int __contains__ (KURL) /NonLazy/;
+%MethodCode
+//returns (bool)
+//takes a0 | (KURL)
+
+ QString s = a0->url ();
+ sipRes = 0;
+ KURL::List::Iterator it;
+ for (it = sipCpp->begin (); (it != sipCpp->end ()) && (sipRes == 0); it++)
+ if (s == (*it).url ())
+ sipRes = 1;
+%End
+
+
+ }; // class List
+
+
+public:
+//end
+
+}; // class KURL
+
+bool urlcmp (const QString&, const QString&);
+bool urlcmp (const QString&, const QString&, bool, bool);
+
+%If ( KDE_3_1_4 - )
+//igx QDataStream& operator << (QDataStream&, const KURL&);
+//igx QDataStream& operator >> (QDataStream&, KURL&);
+%End
diff --git a/python/pykde/sip/kdecore/kurldrag.sip b/python/pykde/sip/kdecore/kurldrag.sip
new file mode 100644
index 00000000..2f9c9686
--- /dev/null
+++ b/python/pykde/sip/kdecore/kurldrag.sip
@@ -0,0 +1,76 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_4 - )
+
+class KURLDrag : QUriDrag
+{
+%TypeHeaderCode
+#include <kurldrag.h>
+%End
+
+
+public:
+ KURLDrag (const KURL::List&, QWidget*, const char*);
+ KURLDrag (const KURL::List&, const QMap<QString,QString>&, QWidget*, const char*);
+
+%If ( KDE_3_4_0 - )
+ void setExportAsText (bool);
+%End
+
+ static KURLDrag* newDrag (const KURL::List&, QWidget* = 0, const char* = 0);
+ static KURLDrag* newDrag (const KURL::List&, const QMap<QString,QString>&, QWidget* = 0, const char* = 0);
+ QMap<QString,QString>& metaData ();
+ static bool decode (const QMimeSource*, KURL::List&);
+ static bool decode (const QMimeSource*, KURL::List&, QMap<QString,QString>&);
+
+%If ( KDE_3_2_0 - )
+ static QString urlToString (const KURL&);
+ static KURL stringToUrl (const QCString&);
+
+%If ( KDE_3_5_0 - )
+ virtual const char* format (int) const;
+ virtual QByteArray encodedData (const char*) const;
+%End
+
+%End
+
+
+protected:
+ KURLDrag (const QStrList&, const QMap<QString,QString>&, QWidget*, const char*);
+
+protected:
+
+%If ( - KDE_3_5_0 )
+ virtual const char* format (int) const;
+ virtual QByteArray encodedData (const char*) const;
+%End
+
+
+}; // class KURLDrag
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kuser.sip b/python/pykde/sip/kdecore/kuser.sip
new file mode 100644
index 00000000..5f6ae59e
--- /dev/null
+++ b/python/pykde/sip/kdecore/kuser.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_2_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KUser
+{
+%TypeHeaderCode
+#include <../extra/kde320/ksharedptr.h>
+#include <kuser.h>
+%End
+
+
+public:
+
+ enum UIDMode
+ {
+ UseEffectiveUID,
+ UseRealUserID
+ };
+
+ KUser (KUser::UIDMode = UseEffectiveUID );
+ KUser (long);
+ KUser (const QString&);
+ KUser (const char*);
+//ig KUser (passwd*);
+ bool operator == (const KUser&) const;
+ bool operator != (const KUser&) const;
+ bool isValid () const;
+ long uid () const;
+ long gid () const;
+ bool isSuperUser () const;
+ QString loginName () const;
+ QString fullName () const;
+ QString roomNumber () const;
+ QString workPhone () const;
+ QString homePhone () const;
+ QString homeDir () const;
+ QString shell () const;
+
+%If ( - KDE_3_2_1 )
+
+private:
+ KUser (const KUser&);
+%End
+
+
+}; // class KUser
+
+%End
+
diff --git a/python/pykde/sip/kdecore/kvmallocator.sip b/python/pykde/sip/kdecore/kvmallocator.sip
new file mode 100644
index 00000000..b3bb5573
--- /dev/null
+++ b/python/pykde/sip/kdecore/kvmallocator.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KVMAllocator
+{
+%TypeHeaderCode
+#include <kvmallocator.h>
+%End
+
+public:
+ KVMAllocator ();
+//ig Block* allocate (size_t);
+//ig void free (Block*);
+//ig void copy (void*, Block*, int = 0, size_t = 0);
+//ig void copy (Block*, void*, int = 0, size_t = 0);
+//ig void* map (Block*);
+//ig void unmap (Block*);
+
+}; // class KVMAllocator
diff --git a/python/pykde/sip/kdecore/kwin.sip b/python/pykde/sip/kdecore/kwin.sip
new file mode 100644
index 00000000..282c66df
--- /dev/null
+++ b/python/pykde/sip/kdecore/kwin.sip
@@ -0,0 +1,188 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_3_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KWin
+{
+%TypeHeaderCode
+#include <kwin.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static void activateWindow (WId, long = 0);
+ static void forceActiveWindow (WId, long = 0);
+%End
+
+ static void setActiveWindow (WId);
+
+%If ( KDE_3_2_0 - )
+ static void demandAttention (WId, bool = 1);
+ static void setUserTime (WId, long);
+%End
+
+ static void invokeContextHelp ();
+ static void setSystemTrayWindowFor (WId, WId);
+
+%If ( KDE_3_2_0 - )
+
+ class WindowInfo
+ {
+
+ public:
+ WindowInfo (WId, ulong, ulong);
+ WindowInfo ();
+ bool valid (bool = 0) const;
+ WId win () const;
+ ulong state () const;
+
+%If ( KDE_3_2_1 - )
+ bool hasState (ulong) const;
+%End
+
+ bool isMinimized () const;
+ NET::MappingState mappingState () const;
+
+%If ( KDE_3_3_0 - )
+ NETExtendedStrut extendedStrut () const;
+%End
+
+ NETStrut strut () const;
+ NET::WindowType windowType (int) const;
+ QString visibleName () const;
+ QString visibleNameWithState () const;
+ QString name () const;
+ QString visibleIconName () const;
+ QString visibleIconNameWithState () const;
+ QString iconName () const;
+ bool isOnCurrentDesktop () const;
+ bool isOnDesktop (int) const;
+ bool onAllDesktops () const;
+ int desktop () const;
+ QRect geometry () const;
+ QRect frameGeometry () const;
+ WId transientFor () const;
+ WId groupLeader () const;
+
+%If ( KDE_3_3_0 - )
+ QCString windowClassClass () const;
+ QCString windowClassName () const;
+ QCString windowRole () const;
+ QCString clientMachine () const;
+%End
+
+ bool actionSupported (NET::Action) const;
+ WindowInfo (const KWin::WindowInfo&);
+
+ }; // class WindowInfo
+
+
+public:
+%End
+
+
+%If ( KDE_3_2_0 - )
+ static KWin::WindowInfo windowInfo (WId, ulong = 0, ulong = 0);
+ static WId transientFor (WId);
+ static WId groupLeader (WId);
+%End
+
+ static QPixmap icon (WId, int = -1, int = -1, bool = 0);
+
+%If ( KDE_3_2_0 - )
+
+ enum IconSource
+ {
+ NETWM,
+ WMHints,
+ ClassHint,
+ XApp
+ };
+
+ static QPixmap icon (WId, int, int, bool, int);
+%End
+
+ static void setIcons (WId, const QPixmap&, const QPixmap&);
+ static void setType (WId, NET::WindowType);
+ static void setState (WId, ulong);
+ static void clearState (WId, ulong);
+ static void setOnAllDesktops (WId, bool);
+ static void setOnDesktop (WId, int);
+
+%If ( KDE_3_3_0 - )
+ static void setExtendedStrut (WId, int, int, int, int, int, int, int, int, int, int, int, int);
+%End
+
+ static void setStrut (WId, int, int, int, int);
+ static int currentDesktop ();
+ static int numberOfDesktops ();
+ static void setCurrentDesktop (int);
+ static void iconifyWindow (WId, bool = 1);
+ static void deIconifyWindow (WId, bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void raiseWindow (WId);
+ static void lowerWindow (WId);
+ static bool icccmCompliantMappingState ();
+ static bool allowedActionsSupported ();
+ static QString readNameProperty (WId, ulong);
+%End
+
+
+ class Info
+ {
+
+ public:
+ WId win;
+ ulong state;
+
+%If ( KDE_3_2_0 - )
+ bool isMinimized () const;
+%End
+
+ bool isIconified () const;
+ NET::MappingState mappingState;
+ NETStrut strut;
+ NET::WindowType windowType;
+ QString visibleName;
+ QString name;
+ int desktop;
+ bool onAllDesktops;
+ pid_t pid;
+ QRect geometry;
+ QRect frameGeometry;
+ QString visibleNameWithState () const;
+
+ }; // class Info
+
+
+public:
+ static KWin::Info info (WId);
+ static void appStarted ();
+
+}; // class KWin
+
diff --git a/python/pykde/sip/kdecore/kwinmodule.sip b/python/pykde/sip/kdecore/kwinmodule.sip
new file mode 100644
index 00000000..b767c6b9
--- /dev/null
+++ b/python/pykde/sip/kdecore/kwinmodule.sip
@@ -0,0 +1,159 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_3_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KWinModule : QObject
+{
+%TypeHeaderCode
+#include <kwinmodule.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum
+ {
+ INFO_DESKTOP,
+ INFO_WINDOWS,
+ INFO_ALL
+ };
+
+ KWinModule (QObject* /TransferThis/, int);
+%End
+
+ KWinModule (QObject* /TransferThis/ = 0);
+ const QValueList<WId>& windows () const;
+ const QValueList<WId>& stackingOrder () const;
+ bool hasWId (WId) const;
+ const QValueList<WId>& systemTrayWindows () const;
+ int currentDesktop () const;
+ int numberOfDesktops () const;
+ WId activeWindow () const;
+ QRect workArea (int = -1) const;
+ QRect workArea (const QValueList<WId>&, int = -1) const;
+ QString desktopName (int) const;
+ void setDesktopName (int, const QString&);
+ void doNotManage (const QString&);
+
+signals:
+ void currentDesktopChanged (int);
+ void windowAdded (WId);
+ void windowRemoved (WId);
+ void activeWindowChanged (WId);
+ void desktopNamesChanged ();
+ void numberOfDesktopsChanged (int);
+ void systemTrayWindowAdded (WId);
+ void systemTrayWindowRemoved (WId);
+ void workAreaChanged ();
+ void strutChanged ();
+ void stackingOrderChanged ();
+
+%If ( KDE_3_2_0 - )
+//ig void windowChanged (WId, const ulong*);
+%End
+
+ void windowChanged (WId, uint);
+ void windowChanged (WId);
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ virtual void connectNotify (const char*);
+%End
+
+
+}; // class KWinModule
+
+
+
+%MappedType QValueList<WId>
+//converts a Python list of WId
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kwinmodule.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<WId> *cpplist = (QValueList<WId> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<WId>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ WId cpp = *it;
+ if (PyList_Append (pylist, PyInt_FromLong ((int) cpp)) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<WId> *cpplist = new QValueList<WId>;
+
+ PyObject *elem;
+ WId cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (WId) PyInt_AS_LONG (&elem);
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/kxmessages.sip b/python/pykde/sip/kdecore/kxmessages.sip
new file mode 100644
index 00000000..5c332a1b
--- /dev/null
+++ b/python/pykde/sip/kdecore/kxmessages.sip
@@ -0,0 +1,55 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE_3_1_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KXMessages : QWidget
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <kxmessages.h>
+%End
+
+public:
+ KXMessages (const char* = 0, QWidget*/TransferThis/ = 0);
+ void sendMessage (WId, const char*, const QString&);
+ void broadcastMessage (const char*, const QString&);
+//ig static bool sendMessageX (Display*, WId, const char*, const QString&);
+//ig static bool broadcastMessageX (Display*, const char*, const QString&);
+
+signals:
+ void gotMessage (const QString&);
+
+protected:
+//ig virtual bool x11Event (XEvent*);
+
+protected:
+
+%If ( - KDE_3_0_1 )
+//ig static void send_message_internal (WId, const QString&, long, Display*, Atom, Window);
+%End
+
+
+}; // class KXMessages
+
diff --git a/python/pykde/sip/kdecore/netwm.sip b/python/pykde/sip/kdecore/netwm.sip
new file mode 100644
index 00000000..bc7dda7c
--- /dev/null
+++ b/python/pykde/sip/kdecore/netwm.sip
@@ -0,0 +1,649 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class NETRootInfo : NET
+{
+%TypeHeaderCode
+#include <netwm.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum
+ {
+ PROTOCOLS,
+ WINDOW_TYPES,
+ STATES,
+ PROTOCOLS2,
+ ACTIONS,
+ PROPERTIES_SIZE
+ };
+
+ NETRootInfo (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, const ulong*, int, int = -1, bool = 1)];
+%MethodCode
+//takes supportWindow | (Window) | wmName | (a Python string) | properties | (a Python list) | screen | (int = -1) | doActivate | (bool = True)
+ int count = PyList_Size (a2);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo (d, a0, a1, list, count, a3, a4);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+%End
+
+ NETRootInfo (Window, const char*, ulong, int = -1, bool = 1) [(Display*, Window, const char*, ulong, int = -1, bool = 1)];
+%MethodCode
+//takes supportWindow | (Window) | wmName | (a Python string) | properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo (d, a0, a1, a2, a3, a4);
+ Py_END_ALLOW_THREADS
+%End
+
+
+%If ( KDE_3_2_0 - )
+ NETRootInfo (SIP_PYLIST, int = -1, bool = 1) [(Display*, const ulong*, int, int = -1, bool = 1)];
+%MethodCode
+//takes properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)
+ int count = PyList_Size (a0);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo (d, list, count, a1, a2);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+%End
+
+ NETRootInfo (ulong, int = -1, bool = 1) [(Display*, ulong, int = -1, bool = 1)];
+%MethodCode
+//takes properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo (d, a0, a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ NETRootInfo (const NETRootInfo&);
+ Display* x11Display () const;
+ Window rootWindow () const;
+ Window supportWindow () const;
+ const char* wmName () const;
+ int screenNumber () const;
+
+%If ( KDE_3_2_0 - )
+ bool isSupported (NET::Property) const;
+ bool isSupported (NET::Property2) const;
+ bool isSupported (NET::WindowType) const;
+ bool isSupported (NET::State) const;
+ bool isSupported (NET::Action) const;
+ SIP_PYLIST supportedProperties () const [ulong* ()];
+%MethodCode
+//returns a Python list of ulong
+ int count = 5;
+ const ulong *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->supportedProperties ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
+%End
+
+ SIP_PYLIST passedProperties () const [ulong* ()];
+%MethodCode
+//returns a Python list of ulong
+ int count = 5;
+ const ulong *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->passedProperties ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
+%End
+
+%End
+
+ ulong supported () const;
+ SIP_PYLIST clientList () const [Window* ()];
+%MethodCode
+//returns a Python list of Window
+ int count = sipCpp->clientListCount ();
+ const Window *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->clientList ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
+%End
+
+ int clientListCount () const;
+ SIP_PYLIST clientListStacking () const [Window* ()];
+%MethodCode
+//returns a Python list of Window
+ int count = sipCpp->clientListStackingCount ();
+ const Window *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->clientListStacking ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
+%End
+
+ int clientListStackingCount () const;
+ SIP_PYLIST kdeSystemTrayWindows () const [Window* ()];
+%MethodCode
+//returns a Python list of Window
+ int count = sipCpp->kdeSystemTrayWindowsCount ();
+ const Window *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->kdeSystemTrayWindows ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
+%End
+
+ int kdeSystemTrayWindowsCount () const;
+ NETSize desktopGeometry (int) const;
+ NETPoint desktopViewport (int) const;
+ NETRect workArea (int) const;
+ const char* desktopName (int) const;
+ SIP_PYLIST virtualRoots () const [Window* ()];
+%MethodCode
+//returns a Python list of Window
+ int count = sipCpp->virtualRootsCount ();
+ const Window *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->virtualRoots ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
+%End
+
+ int virtualRootsCount () const;
+ int numberOfDesktops () const;
+ int currentDesktop () const;
+ Window activeWindow () const;
+ void activate ();
+ void setClientList (SIP_PYLIST) [void (Window*, uint)];
+%MethodCode
+//takes windows | (a Python list of Window)
+
+ int n = PyList_Size (a0);
+ Window array [n];
+ PyObject *elem;
+
+ for (int i = 0; i < n; i++)
+ {
+ elem = PyList_GetItem (a0, i);
+ if (!PyLong_Check (elem))
+ return NULL;
+
+ array [i] = (Window) PyLong_AsUnsignedLong (elem);
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->setClientList (array, n);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setClientListStacking (SIP_PYLIST) [void (Window*, uint)];
+%MethodCode
+//takes windows | (a Python list of Window)
+
+ int n = PyList_Size (a0);
+ Window array [n];
+ PyObject *elem;
+
+ for (int i = 0; i < n; i++)
+ {
+ elem = PyList_GetItem (a0, i);
+ if (!PyLong_Check (elem))
+ return NULL;
+
+ array [i] = (Window) PyLong_AsUnsignedLong (elem);
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->setClientListStacking (array, n);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setKDESystemTrayWindows (SIP_PYLIST) [void (Window*, uint)];
+%MethodCode
+//takes windows | (a Python list of Window)
+
+ int n = PyList_Size (a0);
+ Window array [n];
+ PyObject *elem;
+
+ for (int i = 0; i < n; i++)
+ {
+ elem = PyList_GetItem (a0, i);
+ if (!PyLong_Check (elem))
+ return NULL;
+
+ array [i] = (Window) PyLong_AsUnsignedLong (elem);
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->setKDESystemTrayWindows (array, n);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setCurrentDesktop (int);
+ void setDesktopGeometry (int, const NETSize&);
+ void setDesktopViewport (int, const NETPoint&);
+ void setNumberOfDesktops (int);
+ void setDesktopName (int, const char*);
+
+%If ( KDE_3_2_0 - )
+ void setActiveWindow (Window, NET::RequestSource, Time, Window);
+%End
+
+ void setActiveWindow (Window);
+ void setWorkArea (int, const NETRect&);
+ void setVirtualRoots (SIP_PYLIST) [void (Window*, uint)];
+%MethodCode
+//takes windows | (a Python list of Window)
+ int n = PyList_Size (a0);
+
+ Window array [n];
+ PyObject *elem;
+
+ for (int i = 0; i < n; i++)
+ {
+ elem = PyList_GetItem (a0, i);
+ if (!PyLong_Check (elem))
+ return NULL;
+
+ array [i] = (Window) PyLong_AsUnsignedLong (elem);
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->setVirtualRoots (array, n);
+ Py_END_ALLOW_THREADS
+%End
+
+
+%If ( KDE_3_5_0 - )
+ void setShowingDesktop (bool);
+ bool showingDesktop () const;
+%End
+
+ void closeWindowRequest (Window);
+ void moveResizeRequest (Window, int, int, Direction);
+
+%If ( KDE_3_2_0 - )
+ void moveResizeWindowRequest (Window, int, int, int, int, int);
+
+%If ( KDE_3_3_0 - )
+ void restackRequest (Window, RequestSource, Window, int, Time);
+%End
+
+ void restackRequest (Window, Window, int);
+//ig void event (XEvent*, ulong*, int);
+%End
+
+//ig ulong event (XEvent*);
+
+protected:
+ virtual void addClient (Window);
+ virtual void removeClient (Window);
+ virtual void addSystemTrayWin (Window);
+ virtual void removeSystemTrayWin (Window);
+ virtual void changeNumberOfDesktops (int);
+ virtual void changeDesktopGeometry (int, const NETSize&);
+ virtual void changeDesktopViewport (int, const NETPoint&);
+ virtual void changeCurrentDesktop (int);
+ virtual void changeActiveWindow (Window);
+ virtual void closeWindow (Window);
+ virtual void moveResize (Window, int, int, ulong);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class NETRootInfo
+
+
+%If ( KDE_3_2_0 - )
+
+class NETRootInfo2 : NETRootInfo
+{
+%TypeHeaderCode
+#include <netwm.h>
+%End
+
+
+public:
+ NETRootInfo2 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
+%MethodCode
+//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
+ int count = PyList_Size (a2);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo2 (d, a0, a1, list, count, a3, a4);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+//ig NETRootInfo2 (Display*, const ulong*, int, int = -1, bool = 1);
+ void sendPing (Window, Time);
+
+protected:
+ virtual void gotPing (Window, Time);
+ virtual void changeActiveWindow (Window, NET::RequestSource, Time, Window);
+ virtual void restackWindow (Window, Window, int);
+ virtual void moveResizeWindow (Window, int, int, int, int, int);
+
+}; // class NETRootInfo2
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class NETRootInfo3 : NETRootInfo2
+{
+%TypeHeaderCode
+#include <netwm.h>
+%End
+
+
+public:
+ NETRootInfo3 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
+%MethodCode
+//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
+ int count = PyList_Size (a2);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo3 (d, a0, a1, list, count, a3, a4);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+//ig NETRootInfo3 (Display*, const ulong*, int, int = -1, bool = 1);
+ void takeActivity (Window, Time, long);
+
+protected:
+ virtual void restackWindow (Window, RequestSource, Window, int, Time);
+ virtual void gotTakeActivity (Window, Time, long);
+
+}; // class NETRootInfo3
+
+%End
+
+
+%If ( KDE_3_5_0 - )
+
+class NETRootInfo4 : NETRootInfo3
+{
+%TypeHeaderCode
+#include <netwm.h>
+%End
+
+
+public:
+ NETRootInfo4 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
+%MethodCode
+//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
+ int count = PyList_Size (a2);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETRootInfo4 (d, a0, a1, list, count, a3, a4);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+//ig NETRootInfo4 (Display*, const ulong*, int, int = -1, bool = 1);
+
+protected:
+ virtual void changeShowingDesktop (bool);
+
+}; // class NETRootInfo4
+
+%End
+
+
+class NETWinInfo : NET
+{
+%TypeHeaderCode
+#include <netwm.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum
+ {
+ PROTOCOLS,
+ PROTOCOLS2,
+ PROPERTIES_SIZE
+ };
+
+ NETWinInfo (Window, Window, SIP_PYLIST, Role = Client ) [(Display*, Window, Window, const ulong*, int, Role = Client )];
+%MethodCode
+//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
+ int count = PyList_Size (a2);
+ unsigned long *list = new unsigned long [count];
+
+ for (int i = 0; i < count; i++)
+ list [i] = (unsigned long)PyInt_AS_LONG (PyList_GET_ITEM (a2, i));
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETWinInfo (d, a0, a1, list, count, a3);
+ Py_END_ALLOW_THREADS
+
+ delete list;
+%End
+
+%End
+
+ NETWinInfo (Window, Window, ulong, Role = Client ) [(Display*, Window, Window, ulong, Role = Client )];
+%MethodCode
+//returns ()
+//takes window (Window) | rootWindow (Window) | properties (ulong) | role (Role = Client)
+
+ Py_BEGIN_ALLOW_THREADS
+ Display *d = qt_xdisplay ();
+ sipCpp = new sipNETWinInfo (d, a0, a1, a2, a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ NETWinInfo (const NETWinInfo&);
+
+%If ( KDE_3_2_0 - )
+ bool hasNETSupport () const;
+ SIP_PYLIST passedProperties () const [ulong* ()];
+%MethodCode
+//returns a Python list of ulong
+ int count = 2;
+ const ulong *props;
+ Py_BEGIN_ALLOW_THREADS
+ props = sipCpp->passedProperties ();
+ Py_END_ALLOW_THREADS
+
+ for (int i = 0; i < count; i++)
+ PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
+%End
+
+%End
+
+ ulong properties () const;
+ NETRect iconGeometry () const;
+ ulong state () const;
+
+%If ( KDE_3_3_0 - )
+ NETExtendedStrut extendedStrut () const;
+%End
+
+ NETStrut strut () const;
+
+%If ( KDE_3_2_0 - )
+ WindowType windowType (ulong) const;
+%End
+
+ WindowType windowType () const;
+ const char* name () const;
+ const char* visibleName () const;
+ const char* iconName () const;
+ const char* visibleIconName () const;
+ int desktop () const;
+ int pid () const;
+ Bool handledIcons () const;
+ Window kdeSystemTrayWinFor () const;
+ MappingState mappingState () const;
+//ig void setIcon (NETIcon, Bool = True);
+ void setIconGeometry (NETRect);
+
+%If ( KDE_3_3_0 - )
+ void setExtendedStrut (const NETExtendedStrut&);
+%End
+
+ void setStrut (NETStrut);
+ void setState (ulong, ulong);
+ void setWindowType (WindowType);
+ void setName (const char*);
+ void setVisibleName (const char*);
+ void setIconName (const char*);
+ void setVisibleIconName (const char*);
+ void setDesktop (int);
+ void setPid (int);
+ void setHandledIcons (Bool);
+ void setKDESystemTrayWinFor (Window);
+
+%If ( KDE_3_5_0 - )
+ void setFrameExtents (NETStrut);
+%End
+
+ void setKDEFrameStrut (NETStrut);
+//ig NETIcon icon (int = -1, int = -1) const;
+
+%If ( KDE_3_2_0 - )
+ void setUserTime (Time);
+ Time userTime () const;
+ void setStartupId (const char*);
+ const char* startupId () const;
+ void setAllowedActions (ulong);
+ ulong allowedActions () const;
+ Window transientFor () const;
+ Window groupLeader () const;
+
+%If ( KDE_3_3_0 - )
+ const char* windowClassClass () const;
+ const char* windowClassName () const;
+ const char* windowRole () const;
+ const char* clientMachine () const;
+%End
+
+%End
+
+ void kdeGeometry (NETRect&, NETRect&);
+
+%If ( KDE_3_2_0 - )
+//ig void event (XEvent*, ulong*, int);
+%End
+
+//ig ulong event (XEvent*);
+//ig const int OnAllDesktops;
+
+protected:
+ virtual void changeDesktop (int);
+ virtual void changeState (ulong, ulong);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class NETWinInfo
+
+//force
+typedef ulong Time;
+//end
+
+
+%MappedType Display
+//converts Display
+{
+%TypeHeaderCode
+#include <qwindowdefs.h>
+%End
+
+%ConvertFromTypeCode
+ Py_INCREF(Py_None);
+ return Py_None;
+%End
+
+%ConvertToTypeCode
+ *sipCppPtr = qt_xdisplay ();
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdecore/netwm_def.sip b/python/pykde/sip/kdecore/netwm_def.sip
new file mode 100644
index 00000000..8650c3b9
--- /dev/null
+++ b/python/pykde/sip/kdecore/netwm_def.sip
@@ -0,0 +1,535 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdecore version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class NETPoint
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETPoint ();
+ int x;
+ int y;
+
+}; // class NETPoint
+
+
+class NETSize
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETSize ();
+ int width;
+ int height;
+
+}; // class NETSize
+
+
+class NETRect
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETPoint pos;
+ NETSize size;
+
+}; // class NETRect
+
+
+class NETIcon
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETIcon ();
+ NETSize size;
+//ig uchar* data;
+
+}; // class NETIcon
+
+
+%If ( KDE_3_3_0 - )
+
+class NETExtendedStrut
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETExtendedStrut ();
+ int left_width;
+ int left_start;
+ int left_end;
+ int right_width;
+ int right_start;
+ int right_end;
+ int top_width;
+ int top_start;
+ int top_end;
+ int bottom_width;
+ int bottom_start;
+ int bottom_end;
+
+}; // class NETExtendedStrut
+
+%End
+
+
+class NETStrut
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+ NETStrut ();
+ int left;
+ int right;
+ int top;
+ int bottom;
+
+}; // class NETStrut
+
+
+class NET
+{
+%TypeHeaderCode
+#include <netwm_def.h>
+%End
+
+
+public:
+
+ enum Role
+ {
+ Client,
+ WindowManager
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum WindowType
+ {
+ Unknown,
+ Normal,
+ Desktop,
+ Dock,
+ Toolbar,
+ Menu,
+ Dialog,
+ Override,
+ TopMenu,
+ Tool,
+ Utility,
+ Splash
+ };
+
+
+ enum WindowTypeMask
+ {
+ NormalMask,
+ DesktopMask,
+ DockMask,
+ ToolbarMask,
+ MenuMask,
+ DialogMask,
+ OverrideMask,
+ TopMenuMask,
+ UtilityMask,
+ SplashMask
+ };
+
+
+%If ( KDE_3_3_1 - )
+
+ enum
+ {
+ AllTypesMask
+ };
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+ static bool typeMatchesMask (NET::WindowType, ulong);
+%End
+
+
+ enum State
+ {
+ Modal,
+ Sticky,
+ MaxVert,
+ MaxHoriz,
+ Max,
+ Shaded,
+ SkipTaskbar,
+ KeepAbove,
+ StaysOnTop,
+ SkipPager,
+ Hidden,
+ FullScreen,
+ KeepBelow,
+ DemandsAttention
+ };
+
+
+%If ( KDE_3_5_1 - )
+
+ enum Direction
+ {
+ TopLeft,
+ Top,
+ TopRight,
+ Right,
+ BottomRight,
+ Bottom,
+ BottomLeft,
+ Left,
+ Move,
+ KeyboardSize,
+ KeyboardMove,
+ MoveResizeCancel
+ };
+
+%End
+
+%End
+
+
+ enum MappingState
+ {
+ Visible,
+ Withdrawn,
+ Iconic
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum Action
+ {
+ ActionMove,
+ ActionResize,
+ ActionMinimize,
+ ActionShade,
+ ActionStick,
+ ActionMaxVert,
+ ActionMaxHoriz,
+ ActionMax,
+ ActionFullScreen,
+ ActionChangeDesktop,
+ ActionClose
+ };
+
+
+%If ( KDE_3_5_0 - )
+
+ enum Property
+ {
+ Supported,
+ ClientList,
+ ClientListStacking,
+ NumberOfDesktops,
+ DesktopGeometry,
+ DesktopViewport,
+ CurrentDesktop,
+ DesktopNames,
+ ActiveWindow,
+ WorkArea,
+ SupportingWMCheck,
+ VirtualRoots,
+ KDESystemTrayWindows,
+ CloseWindow,
+ WMMoveResize,
+ WMName,
+ WMVisibleName,
+ WMDesktop,
+ WMWindowType,
+ WMState,
+ WMStrut,
+ WMIconGeometry,
+ WMIcon,
+ WMPid,
+ WMHandledIcons,
+ WMPing,
+ WMKDESystemTrayWinFor,
+ XAWMState,
+ WMFrameExtents,
+ WMKDEFrameStrut,
+ WMIconName,
+ WMVisibleIconName,
+ WMGeometry
+ };
+
+%End
+
+
+ enum
+ {
+ OnAllDesktops
+ };
+
+
+ enum RequestSource
+ {
+ FromUnknown,
+ FromApplication,
+ FromTool
+ };
+
+
+%If ( KDE_3_5_3 - )
+ static int timestampCompare (ulong, ulong);
+ static int timestampDiff (ulong, ulong);
+%End
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_5_1 )
+
+ enum Direction
+ {
+ TopLeft,
+ Top,
+ TopRight,
+ Right,
+ BottomRight,
+ Bottom,
+ BottomLeft,
+ Left,
+ Move,
+ KeyboardSize,
+ KeyboardMove
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_5_0 )
+
+ enum Property
+ {
+ Supported,
+ ClientList,
+ ClientListStacking,
+ NumberOfDesktops,
+ DesktopGeometry,
+ DesktopViewport,
+ CurrentDesktop,
+ DesktopNames,
+ ActiveWindow,
+ WorkArea,
+ SupportingWMCheck,
+ VirtualRoots,
+ KDESystemTrayWindows,
+ CloseWindow,
+ WMMoveResize,
+ WMName,
+ WMVisibleName,
+ WMDesktop,
+ WMWindowType,
+ WMState,
+ WMStrut,
+ WMIconGeometry,
+ WMIcon,
+ WMPid,
+ WMHandledIcons,
+ WMPing,
+ WMKDESystemTrayWinFor,
+ XAWMState,
+ WMKDEFrameStrut,
+ WMIconName,
+ WMVisibleIconName,
+ WMGeometry
+ };
+
+%End
+
+
+%If ( KDE_3_3_1 - )
+
+ enum Property2
+ {
+ WM2UserTime,
+ WM2StartupId,
+ WM2TransientFor,
+ WM2GroupLeader,
+ WM2AllowedActions,
+ WM2RestackWindow,
+ WM2MoveResizeWindow,
+ WM2ExtendedStrut,
+ WM2TakeActivity,
+ WM2KDETemporaryRules,
+ WM2WindowClass,
+ WM2WindowRole,
+ WM2ClientMachine
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - KDE_3_3_1 )
+
+ enum
+ {
+ AllTypesMask
+ };
+
+
+ enum Property2
+ {
+ WM2UserTime,
+ WM2StartupId,
+ WM2TransientFor,
+ WM2GroupLeader,
+ WM2AllowedActions,
+ WM2RestackWindow,
+ WM2MoveResizeWindow,
+ WM2ExtendedStrut,
+ WM2TakeActivity,
+ WM2KDETemporaryRules
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+ enum Property2
+ {
+ WM2UserTime,
+ WM2StartupId,
+ WM2TransientFor,
+ WM2GroupLeader,
+ WM2AllowedActions,
+ WM2RestackWindow,
+ WM2MoveResizeWindow
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+ enum WindowType
+ {
+ Unknown,
+ Normal,
+ Desktop,
+ Dock,
+ Toolbar,
+ Menu,
+ Dialog,
+ Override,
+ TopMenu,
+ Tool
+ };
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+ enum State
+ {
+ Modal,
+ Sticky,
+ MaxVert,
+ MaxHoriz,
+ Max,
+ Shaded,
+ SkipTaskbar,
+ StaysOnTop,
+ SkipPager
+ };
+
+
+ enum Direction
+ {
+ TopLeft,
+ Top,
+ TopRight,
+ Right,
+ BottomRight,
+ Bottom,
+ BottomLeft,
+ Left,
+ Move
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum WindowType
+ {
+ Unknown,
+ Normal,
+ Desktop,
+ Dock,
+ Tool,
+ Menu,
+ Dialog,
+ Override,
+ Toolbar
+ };
+
+%End
+
+
+}; // class NET
+
diff --git a/python/pykde/sip/kdefx/kcpuinfo.sip b/python/pykde/sip/kdefx/kcpuinfo.sip
new file mode 100644
index 00000000..29976f52
--- /dev/null
+++ b/python/pykde/sip/kdefx/kcpuinfo.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KCPUInfo
+{
+%TypeHeaderCode
+#include <kcpuinfo.h>
+%End
+
+
+public:
+
+ enum Extensions
+ {
+ IntelMMX,
+ IntelSSE,
+ IntelSSE2,
+ AMD3DNOW,
+ AltiVec
+ };
+
+ static bool haveExtension (uint);
+
+}; // class KCPUInfo
+
+%End
+
diff --git a/python/pykde/sip/kdefx/kdefx-kde320.diff b/python/pykde/sip/kdefx/kdefx-kde320.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde320.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde321.diff b/python/pykde/sip/kdefx/kdefx-kde321.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde321.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde322.diff b/python/pykde/sip/kdefx/kdefx-kde322.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde322.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde323.diff b/python/pykde/sip/kdefx/kdefx-kde323.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde323.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde330.diff b/python/pykde/sip/kdefx/kdefx-kde330.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde330.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde331.diff b/python/pykde/sip/kdefx/kdefx-kde331.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde331.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde332.diff b/python/pykde/sip/kdefx/kdefx-kde332.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde332.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde340.diff b/python/pykde/sip/kdefx/kdefx-kde340.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde340.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde341.diff b/python/pykde/sip/kdefx/kdefx-kde341.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde341.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde342.diff b/python/pykde/sip/kdefx/kdefx-kde342.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde342.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde343.diff b/python/pykde/sip/kdefx/kdefx-kde343.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde343.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde350.diff b/python/pykde/sip/kdefx/kdefx-kde350.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde350.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde351.diff b/python/pykde/sip/kdefx/kdefx-kde351.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde351.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde352.diff b/python/pykde/sip/kdefx/kdefx-kde352.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde352.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefx-kde353.diff b/python/pykde/sip/kdefx/kdefx-kde353.diff
new file mode 100644
index 00000000..147a7f5a
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefx-kde353.diff
@@ -0,0 +1 @@
++ %Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefxmod.sip b/python/pykde/sip/kdefx/kdefxmod.sip
new file mode 100644
index 00000000..888976c1
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefxmod.sip
@@ -0,0 +1,41 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdefx
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+
+%Include kdrawutil.sip
+%Include kimageeffect.sip
+%Include kpixmap.sip
+%Include kpixmapeffect.sip
+%Include kpixmapsplitter.sip
+%Include kstyle.sip
+%Include kcpuinfo.sip
diff --git a/python/pykde/sip/kdefx/kdefxmod.sip.in b/python/pykde/sip/kdefx/kdefxmod.sip.in
new file mode 100644
index 00000000..e9b85db1
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdefxmod.sip.in
@@ -0,0 +1,41 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdefx
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+
+%Include kdrawutil.sip
+%Include kimageeffect.sip
+%Include kpixmap.sip
+%Include kpixmapeffect.sip
+%Include kpixmapsplitter.sip
+%Include kstyle.sip
+@mark@
diff --git a/python/pykde/sip/kdefx/kdrawutil.sip b/python/pykde/sip/kdefx/kdrawutil.sip
new file mode 100644
index 00000000..2f7f917e
--- /dev/null
+++ b/python/pykde/sip/kdefx/kdrawutil.sip
@@ -0,0 +1,41 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kdrawutil.h>
+#include <sipqtQRegion.h>
+#include <sipqtQBrush.h>
+%End
+
+void kDrawNextButton (QPainter*, const QRect&, const QColorGroup&, bool = 0, const QBrush* = 0);
+void kDrawNextButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+void kDrawBeButton (QPainter*, QRect&, const QColorGroup&, bool = 0, const QBrush* = 0);
+void kDrawBeButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+void kDrawRoundButton (QPainter*, const QRect&, const QColorGroup&, bool = 0);
+void kDrawRoundButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0);
+void kRoundMaskRegion (QRegion&, int, int, int, int);
+void kDrawRoundMask (QPainter*, int, int, int, int, bool = 0);
+void kColorBitmaps (QPainter*, const QColorGroup&, int, int, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0, QBitmap* = 0);
+void kColorBitmaps (QPainter*, const QColorGroup&, int, int, int, int, bool = 1, const uchar* = 0, const uchar* = 0, const uchar* = 0, const uchar* = 0, const uchar* = 0, const uchar* = 0);
diff --git a/python/pykde/sip/kdefx/kimageeffect.sip b/python/pykde/sip/kdefx/kimageeffect.sip
new file mode 100644
index 00000000..4079f86f
--- /dev/null
+++ b/python/pykde/sip/kdefx/kimageeffect.sip
@@ -0,0 +1,205 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KImageEffect
+{
+%TypeHeaderCode
+#include <kimageeffect.h>
+%End
+
+
+public:
+
+ enum GradientType
+ {
+ VerticalGradient,
+ HorizontalGradient,
+ DiagonalGradient,
+ CrossDiagonalGradient,
+ PyramidGradient,
+ RectangleGradient,
+ PipeCrossGradient,
+ EllipticGradient
+ };
+
+
+ enum RGBComponent
+ {
+ Red,
+ Green,
+ Blue,
+ Gray,
+ All
+ };
+
+
+ enum Lighting
+ {
+ NorthLite,
+ NWLite,
+ WestLite,
+ SWLite,
+ SouthLite,
+ SELite,
+ EastLite,
+ NELite
+ };
+
+
+ enum ModulationType
+ {
+ Intensity,
+ Saturation,
+ HueShift,
+ Contrast
+ };
+
+
+ enum NoiseType
+ {
+ UniformNoise,
+ GaussianNoise,
+ MultiplicativeGaussianNoise,
+ ImpulseNoise,
+ LaplacianNoise,
+ PoissonNoise
+ };
+
+
+ enum RotateDirection
+ {
+ Rotate90,
+ Rotate180,
+ Rotate270
+ };
+
+
+%If ( KDE_3_3_0 - )
+
+ enum BumpmapType
+ {
+ Linear,
+ Spherical,
+ Sinuosidal
+ };
+
+%End
+
+ static QImage gradient (const QSize&, const QColor&, const QColor&, KImageEffect::GradientType, int = 3);
+ static QImage unbalancedGradient (const QSize&, const QColor&, const QColor&, KImageEffect::GradientType, int = 100, int = 100, int = 3);
+ static QImage& blend (const QColor&, QImage&, float);
+ static QImage& blend (QImage&, QImage&, float);
+ static QImage& blend (QImage&, float, const QColor&, KImageEffect::GradientType, bool = 0);
+ static QImage& blend (QImage&, QImage&, KImageEffect::GradientType, int = 100, int = 100);
+ static QImage& blend (QImage&, QImage&, QImage&, KImageEffect::RGBComponent);
+ static bool blend (const QImage&, const QImage&, QImage&);
+ static bool blend (int& /In, Out/, int& /In, Out/, const QImage&, const QImage&, QImage&);
+ static bool blendOnLower (int, int, const QImage&, const QImage&);
+
+%If ( KDE_3_2_0 - )
+ static void blendOnLower (const QImage&, const QPoint&, QImage&, const QRect&);
+ static void blendOnLower (const QImage&, const QPoint&, QImage&, const QRect&, float);
+
+ enum Disposition
+ {
+ NoImage,
+ Centered,
+ Tiled,
+ CenterTiled,
+ CenteredMaxpect,
+ TiledMaxpect,
+ Scaled,
+ CenteredAutoFit
+ };
+
+ static QRect computeDestinationRect (const QSize&, KImageEffect::Disposition, QImage&);
+ static void blendOnLower (QImage&, QImage&, KImageEffect::Disposition, float);
+%End
+
+ static QImage& channelIntensity (QImage&, float, KImageEffect::RGBComponent);
+ static QImage& fade (QImage&, float, const QColor&);
+ static QImage& flatten (QImage&, const QColor&, const QColor&, int = 0);
+ static QImage& hash (QImage&, KImageEffect::Lighting = NorthLite , uint = 0);
+ static QImage& intensity (QImage&, float);
+ static QImage& modulate (QImage&, QImage&, bool, KImageEffect::ModulationType, int, KImageEffect::RGBComponent);
+ static QImage& toGray (QImage&, bool = 0);
+ static QImage& desaturate (QImage&, float = 0.3);
+ static QImage& contrast (QImage&, int);
+//ig static QImage& dither (QImage&, const QColor*, int);
+ static QImage& selectedImage (QImage&, const QColor&);
+ static void contrastHSV (QImage&, bool = 1);
+ static void normalize (QImage&);
+ static void equalize (QImage&);
+ static void threshold (QImage&, uint = 128);
+ static void solarize (QImage&, double = 50.0);
+
+%If ( KDE_3_2_0 - )
+ static QImage emboss (QImage&, double, double);
+%End
+
+ static QImage emboss (QImage&);
+ static QImage despeckle (QImage&);
+
+%If ( KDE_3_2_0 - )
+ static QImage charcoal (QImage&, double, double);
+%End
+
+ static QImage charcoal (QImage&, double = 50.0);
+ static QImage rotate (QImage&, KImageEffect::RotateDirection);
+ static QImage sample (QImage&, int, int);
+ static QImage addNoise (QImage&, KImageEffect::NoiseType = GaussianNoise );
+
+%If ( KDE_3_2_0 - )
+ static QImage blur (QImage&, double, double);
+%End
+
+ static QImage blur (QImage&, double = 50.0);
+ static QImage edge (QImage&, double = 50.0);
+ static QImage implode (QImage&, double = 30.0, uint = -1);
+
+%If ( KDE_3_2_0 - )
+ static QImage oilPaintConvolve (QImage&, double);
+%End
+
+ static QImage oilPaint (QImage&, int = 3);
+
+%If ( KDE_3_2_0 - )
+ static QImage sharpen (QImage&, double, double);
+%End
+
+ static QImage sharpen (QImage&, double = 30.0);
+ static QImage spread (QImage&, uint = 3);
+ static QImage shade (QImage&, bool = 1, double = 30.0, double = 30.0);
+ static QImage swirl (QImage&, double = 50.0, uint = -1);
+ static QImage wave (QImage&, double = 25.0, double = 150.0, uint = -1);
+
+%If ( KDE_3_3_0 - )
+ static QImage bumpmap (QImage&, QImage&, double, double, int, int, int, int, int, bool, bool, KImageEffect::BumpmapType, bool);
+%End
+
+
+}; // class KImageEffect
+
diff --git a/python/pykde/sip/kdefx/kpixmap.sip b/python/pykde/sip/kdefx/kpixmap.sip
new file mode 100644
index 00000000..02bd9520
--- /dev/null
+++ b/python/pykde/sip/kdefx/kpixmap.sip
@@ -0,0 +1,65 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPixmap : QPixmap
+{
+%TypeHeaderCode
+#include <qpaintdevice.h>
+#include <qpixmap.h>
+#include <kpixmap.h>
+%End
+
+
+public:
+
+ enum ColorMode
+ {
+ Auto,
+ Color,
+ Mono,
+ LowColor,
+ WebColor
+ };
+
+
+ enum GradientMode
+ {
+ Horizontal,
+ Vertical,
+ Diagonal,
+ CrossDiagonal
+ };
+
+ KPixmap ();
+ KPixmap (const QPixmap&);
+ bool convertFromImage (const QImage&, int);
+ bool convertFromImage (const QImage&, ColorMode = WebColor );
+ bool load (const QString&, const char*, int);
+ bool load (const QString&, const char* = 0, ColorMode = WebColor );
+ bool checkColorTable (const QImage&);
+
+}; // class KPixmap
+
diff --git a/python/pykde/sip/kdefx/kpixmapeffect.sip b/python/pykde/sip/kdefx/kpixmapeffect.sip
new file mode 100644
index 00000000..78e64489
--- /dev/null
+++ b/python/pykde/sip/kdefx/kpixmapeffect.sip
@@ -0,0 +1,85 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPixmapEffect
+{
+%TypeHeaderCode
+#include <kpixmapeffect.h>
+%End
+
+
+public:
+
+ enum GradientType
+ {
+ VerticalGradient,
+ HorizontalGradient,
+ DiagonalGradient,
+ CrossDiagonalGradient,
+ PyramidGradient,
+ RectangleGradient,
+ PipeCrossGradient,
+ EllipticGradient
+ };
+
+
+ enum RGBComponent
+ {
+ Red,
+ Green,
+ Blue
+ };
+
+
+ enum Lighting
+ {
+ NorthLite,
+ NWLite,
+ WestLite,
+ SWLite,
+ SouthLite,
+ SELite,
+ EastLite,
+ NELite
+ };
+
+ static KPixmap& gradient (KPixmap&, const QColor&, const QColor&, KPixmapEffect::GradientType, int = 3);
+ static KPixmap& unbalancedGradient (KPixmap&, const QColor&, const QColor&, KPixmapEffect::GradientType, int = 100, int = 100, int = 3);
+ static KPixmap createTiled (const KPixmap&, QSize);
+ static KPixmap& intensity (KPixmap&, float);
+ static KPixmap& channelIntensity (KPixmap&, float, KPixmapEffect::RGBComponent);
+ static KPixmap& blend (KPixmap&, float, const QColor&, KPixmapEffect::GradientType, bool = 0, int = 3);
+ static KPixmap& hash (KPixmap&, KPixmapEffect::Lighting = NorthLite , uint = 0, int = 3);
+ static KPixmap pattern (const KPixmap&, QSize, const QColor&, const QColor&, int = 8);
+ static KPixmap& fade (KPixmap&, double, const QColor&);
+ static KPixmap& toGray (KPixmap&, bool = 0);
+ static KPixmap& desaturate (KPixmap&, float = 0.3);
+ static KPixmap& contrast (KPixmap&, int);
+ static KPixmap& dither (KPixmap&, const QColor*, int);
+ static KPixmap selectedPixmap (const KPixmap&, const QColor&);
+
+}; // class KPixmapEffect
+
diff --git a/python/pykde/sip/kdefx/kpixmapsplitter.sip b/python/pykde/sip/kdefx/kpixmapsplitter.sip
new file mode 100644
index 00000000..3f8d3883
--- /dev/null
+++ b/python/pykde/sip/kdefx/kpixmapsplitter.sip
@@ -0,0 +1,46 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPixmapSplitter
+{
+%TypeHeaderCode
+#include <kpixmapsplitter.h>
+%End
+
+
+public:
+ KPixmapSplitter ();
+ void setPixmap (const QPixmap&);
+ const QPixmap& pixmap () const;
+ void setItemSize (const QSize&);
+ QSize itemSize () const;
+ void setVSpacing (int);
+ void setHSpacing (int);
+ QRect coordinates (int);
+ QRect coordinates (const QChar&);
+
+}; // class KPixmapSplitter
+
diff --git a/python/pykde/sip/kdefx/kstyle.sip b/python/pykde/sip/kdefx/kstyle.sip
new file mode 100644
index 00000000..c850d0bd
--- /dev/null
+++ b/python/pykde/sip/kdefx/kstyle.sip
@@ -0,0 +1,126 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdefx version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStyle : QCommonStyle
+{
+%TypeHeaderCode
+#include <kstyle.h>
+%End
+
+
+public:
+ typedef uint KStyleFlags;
+
+ enum KStyleOption
+ {
+ Default,
+ AllowMenuTransparency,
+ FilledFrameWorkaround
+ };
+
+
+ enum KStyleScrollBarType
+ {
+ WindowsStyleScrollBar,
+ PlatinumStyleScrollBar,
+ ThreeButtonScrollBar,
+ NextStyleScrollBar
+ };
+
+ KStyle (KStyle::KStyleFlags = KStyle ::Default , KStyle::KStyleScrollBarType = KStyle ::WindowsStyleScrollBar );
+
+%If ( KDE_3_1_0 - )
+ static QString defaultStyle ();
+%End
+
+ void setScrollBarType (KStyle::KStyleScrollBarType);
+ KStyle::KStyleFlags styleFlags () const;
+ virtual void renderMenuBlendPixmap (KPixmap&, const QColorGroup&, const QPopupMenu*) const;
+
+ enum KStylePrimitive
+ {
+ KPE_DockWindowHandle,
+ KPE_ToolBarHandle,
+ KPE_GeneralHandle,
+ KPE_SliderGroove,
+ KPE_SliderHandle,
+ KPE_ListViewExpander,
+ KPE_ListViewBranch
+ };
+
+ virtual void drawKStylePrimitive (KStyle::KStylePrimitive, QPainter*, const QWidget*, const QRect&, const QColorGroup&, SFlags = Style_Default , const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+
+ enum KStylePixelMetric
+ {
+ KPM_MenuItemSeparatorHeight,
+ KPM_MenuItemHMargin,
+ KPM_MenuItemVMargin,
+ KPM_MenuItemHFrame,
+ KPM_MenuItemVFrame,
+ KPM_MenuItemCheckMarkHMargin,
+ KPM_MenuItemArrowHMargin,
+ KPM_MenuItemTabSpacing,
+ KPM_ListViewBranchThickness
+ };
+
+ int kPixelMetric (KStyle::KStylePixelMetric, const QWidget* = 0) const;
+ void polish (QWidget*);
+ void unPolish (QWidget*);
+ void polishPopupMenu (QPopupMenu*);
+ void drawPrimitive (PrimitiveElement, QPainter*, const QRect&, const QColorGroup&, SFlags = Style_Default , const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ void drawControl (ControlElement, QPainter*, const QWidget*, const QRect&, const QColorGroup&, SFlags = Style_Default , const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ void drawComplexControl (ComplexControl, QPainter*, const QWidget*, const QRect&, const QColorGroup&, SFlags = Style_Default , SCFlags = SC_All , SCFlags = SC_None , const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ SubControl querySubControl (ComplexControl, const QWidget*, const QPoint&, const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ QRect querySubControlMetrics (ComplexControl, const QWidget*, SubControl, const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ int pixelMetric (PixelMetric, const QWidget* = 0) const;
+ QRect subRect (SubRect, const QWidget*) const;
+ QPixmap stylePixmap (StylePixmap, const QWidget* = 0, const QStyleOption& = QStyleOption (QStyleOption ::Default )) const;
+ int styleHint (StyleHint, const QWidget* = 0, const QStyleOption& = QStyleOption (QStyleOption ::Default ), QStyleHintReturn* = 0) const;
+
+protected:
+ bool eventFilter (QObject*, QEvent*);
+
+private:
+ KStyle (const KStyle&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KStyle, &sipClass_KStyle},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class KStyle
+
diff --git a/python/pykde/sip/kdeprint/driver.sip b/python/pykde/sip/kdeprint/driver.sip
new file mode 100644
index 00000000..bbfa0fbf
--- /dev/null
+++ b/python/pykde/sip/kdeprint/driver.sip
@@ -0,0 +1,338 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE_3_4_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+
+ enum Type
+ {
+ Base,
+ Main,
+ ChoiceGroup,
+ Group,
+ String,
+ Integer,
+ Float,
+ List,
+ Boolean
+ };
+
+ DrBase ();
+ DrBase::Type type () const;
+ bool isOption () const;
+ const QString& get (const QString&) const;
+ void set (const QString&, const QString&);
+ bool has (const QString&) const;
+ const QString& name () const;
+ void setName (const QString&);
+ bool conflict () const;
+ void setConflict (bool);
+ virtual QString valueText ();
+ virtual QString prettyText ();
+ virtual void setValueText (const QString&);
+//ig virtual DriverItem* createItem (DriverItem* /Transfer/, DriverItem* = 0);
+ virtual void setOptions (const QMap<QString,QString>&);
+ virtual void getOptions (QMap<QString,QString>&, bool = 0);
+ virtual DrBase* clone ();
+
+protected:
+
+}; // class DrBase
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrGroup : DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrGroup ();
+ void addOption (DrBase*);
+ void addGroup (DrGroup*);
+ void addObject (DrBase*);
+ void clearConflict ();
+ void removeOption (const QString&);
+ void removeGroup (DrGroup*);
+ bool isEmpty ();
+//ig virtual DriverItem* createItem (DriverItem* /Transfer/, DriverItem* = 0);
+//ig DrBase* findOption (const QString&, DrGroup** = 0);
+//ig DrGroup* findGroup (DrGroup*, DrGroup** = 0);
+ void setOptions (const QMap<QString,QString>&);
+ void getOptions (QMap<QString,QString>&, bool = 0);
+ DrBase* clone ();
+//ig const QPtrList<DrGroup>& groups ();
+//ig const QPtrList<DrBase>& options ();
+
+%If ( KDE_3_2_0 - )
+ static QString groupForOption (const QString&);
+%End
+
+
+protected:
+//ig void createTree (DriverItem* /Transfer/);
+//ig void flattenGroup (QMap<QString,DrBase*>&, int&);
+
+protected:
+
+}; // class DrGroup
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrMain : DrGroup
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrMain ();
+//ig DriverItem* createTreeView (QListView* /Transfer/);
+ void addConstraint (DrConstraint*);
+ int checkConstraints ();
+ DrPageSize* findPageSize (const QString&);
+ void addPageSize (DrPageSize*);
+ void removeOptionGlobally (const QString&);
+ void removeGroupGlobally (DrGroup*);
+//ig QMap<QString,DrBase*> flatten ();
+ DrMain* cloneDriver ();
+
+protected:
+
+}; // class DrMain
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrChoiceGroup : DrGroup
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrChoiceGroup ();
+//ig DriverItem* createItem (DriverItem* /Transfer/, DriverItem* = 0);
+
+}; // class DrChoiceGroup
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrStringOption : DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrStringOption ();
+ virtual QString valueText ();
+ virtual void setValueText (const QString&);
+
+protected:
+
+}; // class DrStringOption
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrIntegerOption : DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrIntegerOption ();
+ virtual QString valueText ();
+ virtual void setValueText (const QString&);
+ QString fixedVal ();
+
+protected:
+
+}; // class DrIntegerOption
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrFloatOption : DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrFloatOption ();
+ virtual QString valueText ();
+ virtual void setValueText (const QString&);
+ QString fixedVal ();
+
+protected:
+
+}; // class DrFloatOption
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrListOption : DrBase
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrListOption ();
+ void addChoice (DrBase*);
+//ig QPtrList<DrBase>* choices ();
+ DrBase* currentChoice () const;
+ DrBase* findChoice (const QString&);
+ void setChoice (int);
+ virtual QString valueText ();
+ virtual QString prettyText ();
+ virtual void setValueText (const QString&);
+ void setOptions (const QMap<QString,QString>&);
+ void getOptions (QMap<QString,QString>&, bool = 0);
+//ig DriverItem* createItem (DriverItem* /Transfer/, DriverItem* = 0);
+ DrBase* clone ();
+
+protected:
+
+}; // class DrListOption
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrBooleanOption : DrListOption
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrBooleanOption ();
+
+}; // class DrBooleanOption
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrConstraint
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrConstraint (const QString&, const QString&, const QString& = QString ::null , const QString& = QString ::null );
+ DrConstraint (const DrConstraint&);
+ bool check (DrMain*);
+
+protected:
+
+}; // class DrConstraint
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class DrPageSize
+{
+%TypeHeaderCode
+#include <driver.h>
+%End
+
+
+public:
+ DrPageSize (const QString&, int, int, int, int, int, int);
+ DrPageSize (const DrPageSize&);
+
+%If ( KDE_3_2_0 - )
+ float pageWidth () const;
+ float pageHeight () const;
+ float leftMargin () const;
+ float rightMargin () const;
+ float topMargin () const;
+ float bottomMargin () const;
+ QString pageName () const;
+%End
+
+ QSize pageSize () const;
+ QRect pageRect () const;
+ QSize margins () const;
+
+protected:
+
+public:
+
+%If ( - KDE_3_2_0 )
+ QString name () const;
+%End
+
+
+}; // class DrPageSize
+
+%End
+
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde310.diff b/python/pykde/sip/kdeprint/kdeprint-kde310.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde310.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde311.diff b/python/pykde/sip/kdeprint/kdeprint-kde311.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde311.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde312.diff b/python/pykde/sip/kdeprint/kdeprint-kde312.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde312.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde313.diff b/python/pykde/sip/kdeprint/kdeprint-kde313.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde313.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde314.diff b/python/pykde/sip/kdeprint/kdeprint-kde314.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde314.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde315.diff b/python/pykde/sip/kdeprint/kdeprint-kde315.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde315.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde320.diff b/python/pykde/sip/kdeprint/kdeprint-kde320.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde320.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde321.diff b/python/pykde/sip/kdeprint/kdeprint-kde321.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde321.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde322.diff b/python/pykde/sip/kdeprint/kdeprint-kde322.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde322.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde323.diff b/python/pykde/sip/kdeprint/kdeprint-kde323.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde323.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde330.diff b/python/pykde/sip/kdeprint/kdeprint-kde330.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde330.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde331.diff b/python/pykde/sip/kdeprint/kdeprint-kde331.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde331.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde332.diff b/python/pykde/sip/kdeprint/kdeprint-kde332.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde332.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde340.diff b/python/pykde/sip/kdeprint/kdeprint-kde340.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde340.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde341.diff b/python/pykde/sip/kdeprint/kdeprint-kde341.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde341.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde342.diff b/python/pykde/sip/kdeprint/kdeprint-kde342.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde342.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde343.diff b/python/pykde/sip/kdeprint/kdeprint-kde343.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde343.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde350.diff b/python/pykde/sip/kdeprint/kdeprint-kde350.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde350.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde351.diff b/python/pykde/sip/kdeprint/kdeprint-kde351.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde351.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde352.diff b/python/pykde/sip/kdeprint/kdeprint-kde352.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde352.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprint-kde353.diff b/python/pykde/sip/kdeprint/kdeprint-kde353.diff
new file mode 100644
index 00000000..705efd49
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprint-kde353.diff
@@ -0,0 +1,2 @@
++ %Include kmjob.sip
++ %Include kmjobmanager.sip
diff --git a/python/pykde/sip/kdeprint/kdeprintmod.sip b/python/pykde/sip/kdeprint/kdeprintmod.sip
new file mode 100644
index 00000000..435e04a2
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprintmod.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdeprint
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+
+%Include kmmanager.sip
+%Include kmobject.sip
+%Include kmprinter.sip
+%Include kpreloadobject.sip
+%Include kprintaction.sip
+%Include kprintdialog.sip
+%Include kprintdialogpage.sip
+%Include kprinter.sip
+%Include kmjob.sip
+%Include kmjobmanager.sip
+
diff --git a/python/pykde/sip/kdeprint/kdeprintmod.sip.in b/python/pykde/sip/kdeprint/kdeprintmod.sip.in
new file mode 100644
index 00000000..2997ca75
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kdeprintmod.sip.in
@@ -0,0 +1,47 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdeprint
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+
+%Include kmmanager.sip
+%Include kmobject.sip
+%Include kmprinter.sip
+%Include kpreloadobject.sip
+%Include kprintaction.sip
+%Include kprintdialog.sip
+%Include kprintdialogpage.sip
+%Include kprinter.sip
+@mark@
+
diff --git a/python/pykde/sip/kdeprint/kmjob.sip b/python/pykde/sip/kdeprint/kmjob.sip
new file mode 100644
index 00000000..8a65cac6
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kmjob.sip
@@ -0,0 +1,113 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KMJob : KMObject
+{
+%TypeHeaderCode
+#include <kmjob.h>
+%End
+
+
+public:
+
+ enum JobAction
+ {
+ Remove,
+ Move,
+ Hold,
+ Resume,
+ Restart,
+ ShowCompleted,
+ All
+ };
+
+
+ enum JobState
+ {
+ Printing,
+ Queued,
+ Held,
+ Error,
+ Cancelled,
+ Aborted,
+ Completed,
+ Unknown
+ };
+
+
+ enum JobType
+ {
+ System,
+ Threaded
+ };
+
+ KMJob ();
+ KMJob (const KMJob&);
+ void copy (const KMJob&);
+ QString pixmap ();
+ QString stateString ();
+ bool isCompleted () const;
+ bool isActive () const;
+ int id () const;
+ void setId (int);
+ const QString& name () const;
+ void setName (const QString&);
+ const QString& printer () const;
+ void setPrinter (const QString&);
+ const QString& owner () const;
+ void setOwner (const QString&);
+ int state () const;
+ void setState (int);
+ int size () const;
+ void setSize (int);
+ const QString& uri () const;
+ void setUri (const QString&);
+ int type () const;
+ void setType (int);
+ int pages () const;
+ void setPages (int);
+ int processedPages () const;
+ void setProcessedPages (int);
+ int processedSize () const;
+ void setProcessedSize (int);
+ bool isRemote () const;
+ void setRemote (bool);
+ QString attribute (int) const;
+ void setAttribute (int, const QString&);
+ int attributeCount () const;
+ void setAttributeCount (int);
+
+protected:
+ void init ();
+
+protected:
+
+}; // class KMJob
+
+%End
+
diff --git a/python/pykde/sip/kdeprint/kmjobmanager.sip b/python/pykde/sip/kdeprint/kmjobmanager.sip
new file mode 100644
index 00000000..39b4100e
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kmjobmanager.sip
@@ -0,0 +1,198 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KMJobManager : QObject
+{
+%TypeHeaderCode
+#include <kmjobmanager.h>
+%End
+
+
+public:
+
+ enum JobType
+ {
+ ActiveJobs,
+ CompletedJobs
+ };
+
+
+ class JobFilter
+ {
+
+ public:
+ JobFilter ();
+//ig int m_type[2];
+
+%If ( KDE_3_2_2 - )
+ bool m_isspecial;
+%End
+
+
+ }; // class JobFilter
+
+
+public:
+ KMJobManager (QObject* /TransferThis/ = 0, const char* = 0);
+ static KMJobManager* self ();
+
+%If ( KDE_3_2_2 - )
+ void addPrinter (const QString&, KMJobManager::JobType = ActiveJobs , bool = 0);
+%End
+
+ void removePrinter (const QString&, KMJobManager::JobType = ActiveJobs );
+ void clearFilter ();
+//ig QDict<KMJobManager::JobFilter>* filter ();
+ int limit ();
+ void setLimit (int);
+ KMJob* findJob (const QString&);
+ bool sendCommand (const QString&, int, const QString& = QString ::null );
+ bool sendCommand (const QPtrList<KMJob>&, int, const QString& = QString ::null );
+ const QPtrList<KMJob>& jobList (bool = 1);
+ void addJob (KMJob*);
+//ig KMThreadJob* threadJob ();
+ virtual int actions ();
+ virtual QValueList<KAction*> createPluginActions (KActionCollection*);
+ virtual void validatePluginActions (KActionCollection*, const QPtrList<KMJob>&);
+ virtual bool doPluginAction (int, const QPtrList<KMJob>&);
+
+protected:
+ void discardAllJobs ();
+ void removeDiscardedJobs ();
+
+protected:
+ virtual bool listJobs (const QString&, KMJobManager::JobType, int = 0);
+ virtual bool sendCommandSystemJob (const QPtrList<KMJob>&, int, const QString& = QString ::null );
+ bool sendCommandThreadJob (const QPtrList<KMJob>&, int, const QString& = QString ::null );
+
+protected:
+
+public:
+
+%If ( - KDE_3_2_2 )
+ void addPrinter (const QString&, KMJobManager::JobType = ActiveJobs );
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KMJobManager, &sipClass_KMJobManager},
+ {sipName_KMManager, &sipClass_KMManager},
+ {sipName_KPrintAction, &sipClass_KPrintAction},
+ {sipName_KPrintDialogPage, &sipClass_KPrintDialogPage},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+%End
+
+
+}; // class KMJobManager
+
+%End
+
+
+
+%If (KDE_3_1_0 - )
+%MappedType QPtrList<KMJob>
+//converts a Python list of KMJob
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kmjob.h>
+#include <sipkdeprintKMJob.h>
+typedef QPtrList<KMJob> KMJobList;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KMJob> *cpplist = (QPtrList<KMJob> *)sipCpp;
+ KMJob *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KMJob, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KMJob> *cpplist = new QPtrList<KMJob>;
+
+ PyObject *elem;
+ KMJob *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KMJob *)sipForceConvertTo_KMJob (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdeprint/kmmanager.sip b/python/pykde/sip/kdeprint/kmmanager.sip
new file mode 100644
index 00000000..15a7733a
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kmmanager.sip
@@ -0,0 +1,221 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMManager : QObject
+{
+%TypeHeaderCode
+#include <kmmanager.h>
+%End
+
+
+public:
+
+ enum PrinterOperations
+ {
+ PrinterEnabling,
+ PrinterCreation,
+ PrinterDefault,
+ PrinterTesting,
+ PrinterConfigure,
+ PrinterRemoval,
+ PrinterAll
+ };
+
+
+ enum ServerOperations
+ {
+ ServerRestarting,
+ ServerConfigure,
+ ServerAll
+ };
+
+ KMManager (QObject* /TransferThis/ = 0, const char* = 0);
+ static KMManager* self ();
+ QString errorMsg () const;
+ void setErrorMsg (const QString&);
+ bool hasManagement () const;
+ virtual bool createPrinter (KMPrinter*);
+ virtual bool removePrinter (KMPrinter*);
+ virtual bool enablePrinter (KMPrinter*, bool);
+ virtual bool startPrinter (KMPrinter*, bool);
+ virtual bool completePrinter (KMPrinter*);
+ virtual bool completePrinterShort (KMPrinter*);
+ virtual bool setDefaultPrinter (KMPrinter*);
+ virtual bool testPrinter (KMPrinter*);
+ bool upPrinter (KMPrinter*, bool);
+ bool modifyPrinter (KMPrinter*, KMPrinter*);
+ bool removePrinter (const QString&);
+ bool enablePrinter (const QString&, bool);
+ bool startPrinter (const QString&, bool);
+ bool completePrinter (const QString&);
+ bool setDefaultPrinter (const QString&);
+ int printerOperationMask () const;
+ int addPrinterWizard (QWidget* /Transfer/ = 0);
+ bool createSpecialPrinter (KMPrinter*);
+ bool removeSpecialPrinter (KMPrinter*);
+ KMPrinter* findPrinter (const QString&);
+ QPtrList<KMPrinter>* printerList (bool = 1);
+ QPtrList<KMPrinter>* printerListComplete (bool = 1);
+ KMPrinter* defaultPrinter ();
+ void enableFilter (bool);
+ bool isFilterEnabled () const;
+ virtual QString driverDbCreationProgram ();
+ virtual QString driverDirectory ();
+//ig virtual DrMain* loadPrinterDriver (KMPrinter*, bool = 0);
+//ig virtual DrMain* loadDbDriver (KMDBEntry*);
+//ig virtual DrMain* loadFileDriver (const QString&);
+//ig DrMain* loadDriver (KMPrinter*, bool = 0);
+//ig virtual bool savePrinterDriver (KMPrinter*, DrMain*);
+//ig virtual bool validateDbDriver (KMDBEntry*);
+ bool invokeOptionsDialog (QWidget* /Transfer/ = 0);
+
+%If ( KDE_3_1_0 - )
+ virtual QString stateInformation ();
+%End
+
+ int serverOperationMask () const;
+ virtual bool restartServer ();
+ virtual bool configureServer (QWidget* /Transfer/ = 0);
+ virtual QStringList detectLocalPrinters ();
+ virtual void createPluginActions (KActionCollection*);
+ virtual void validatePluginActions (KActionCollection*, KMPrinter*);
+
+%If ( KDE_3_1_0 - )
+ void checkUpdatePossible ();
+%End
+
+
+signals:
+
+%If ( KDE_3_1_0 - )
+ void updatePossible (bool);
+%End
+
+
+protected:
+ virtual void listPrinters ();
+ void addPrinter (KMPrinter*);
+ void setHardDefault (KMPrinter*);
+ void setSoftDefault (KMPrinter*);
+ KMPrinter* softDefault () const;
+ KMPrinter* hardDefault () const;
+ bool uncompressFile (const QString&, QString&);
+ bool notImplemented ();
+ void setHasManagement (bool);
+ void setPrinterOperationMask (int);
+ void setServerOperationMask (int);
+ QString testPage ();
+ void discardAllPrinters (bool);
+
+%If ( KDE_3_1_0 - )
+ void setUpdatePossible (bool);
+ virtual void checkUpdatePossibleInternal ();
+%End
+
+
+protected:
+
+}; // class KMManager
+
+
+
+%MappedType QPtrList<KMPrinter>
+//converts a Python list of KMPrinter
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kmmanager.h>
+#include <kmprinter.h>
+#include <sipkdeprintKMPrinter.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of KMPrinter
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KMPrinter> *kpList = (QPtrList<KMPrinter> *)sipCpp;
+ PyObject *inst;
+ KMPrinter *p;
+
+ for(p = kpList->first (); p; p = kpList->next ())
+ {
+ inst = sipConvertFromInstance (p, sipClass_KMPrinter, sipTransferObj);
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to QPtrList<KMPrinter> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KMPrinter> *kpList = new QPtrList<KMPrinter>;
+
+ PyObject *elem;
+ KMPrinter *p;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ p = (KMPrinter *)sipForceConvertTo_KMPrinter(elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete kpList;
+ return 0;
+ }
+
+ kpList->append (p);
+ }
+
+ *sipCppPtr = kpList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeprint/kmobject.sip b/python/pykde/sip/kdeprint/kmobject.sip
new file mode 100644
index 00000000..8d6ff330
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kmobject.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMObject
+{
+%TypeHeaderCode
+#include <kmobject.h>
+%End
+
+
+public:
+ KMObject ();
+ bool isDiscarded () const;
+ void setDiscarded (bool = 1);
+
+protected:
+
+}; // class KMObject
+
diff --git a/python/pykde/sip/kdeprint/kmprinter.sip b/python/pykde/sip/kdeprint/kmprinter.sip
new file mode 100644
index 00000000..61f54554
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kmprinter.sip
@@ -0,0 +1,178 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMPrinter : KMObject
+{
+%TypeHeaderCode
+#include <kmprinter.h>
+%End
+
+
+public:
+
+ enum PrinterType
+ {
+ Printer,
+ Class,
+ Implicit,
+ Virtual,
+ Remote,
+ Invalid,
+ Special
+ };
+
+
+ enum PrinterState
+ {
+ Idle,
+ Stopped,
+ Processing,
+ Unknown,
+ Rejecting,
+ StateMask
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum PrinterCap
+ {
+ CapBW,
+ CapColor,
+ CapDuplex,
+ CapStaple,
+ CapCopies,
+ CapCollate,
+ CapPunch,
+ CapCover,
+ CapBind,
+ CapSort,
+ CapSmall,
+ CapMedium,
+ CapLarge,
+ CapVariable
+ };
+
+%End
+
+ KMPrinter ();
+ KMPrinter (const KMPrinter&);
+ void copy (const KMPrinter&);
+ const QString& name () const;
+ void setName (const QString&);
+ const QString& printerName () const;
+ void setPrinterName (const QString&);
+ const QString& instanceName () const;
+ void setInstanceName (const QString&);
+ int type () const;
+ void setType (int);
+ void addType (int);
+ KMPrinter::PrinterState state (bool = 0) const;
+ QString stateString () const;
+ void setState (KMPrinter::PrinterState);
+ bool acceptJobs () const;
+ void setAcceptJobs (bool);
+
+%If ( KDE_3_2_0 - )
+ const QString& device () const;
+ QString deviceProtocol () const;
+ void setDevice (const QString&);
+%End
+
+ const QStringList& members () const;
+ void setMembers (const QStringList&);
+ void addMember (const QString&);
+ const QString& description () const;
+ void setDescription (const QString&);
+ const QString& location () const;
+ void setLocation (const QString&);
+ const KURL& uri () const;
+ void setUri (const KURL&);
+ const QString& manufacturer () const;
+ void setManufacturer (const QString&);
+ const QString& model () const;
+ void setModel (const QString&);
+ const QString& driverInfo () const;
+ void setDriverInfo (const QString&);
+
+%If ( KDE_3_2_0 - )
+ int printerCap () const;
+ void setPrinterCap (int);
+ void addPrinterCap (int);
+%End
+
+ bool isClass (bool = 1) const;
+ bool isImplicit () const;
+ bool isPrinter () const;
+ bool isRemote () const;
+ bool isLocal () const;
+ bool isVirtual () const;
+ bool isValid () const;
+ bool isSpecial () const;
+//ig KMDBEntry* dbEntry () const;
+//ig void setDbEntry (KMDBEntry*);
+ QString pixmap ();
+ void setPixmap (const QString&);
+ bool isHardDefault () const;
+ void setHardDefault (bool);
+ bool isSoftDefault () const;
+ void setSoftDefault (bool);
+ bool ownSoftDefault () const;
+ void setOwnSoftDefault (bool);
+ static int compare (KMPrinter*, KMPrinter*);
+ const QString& option (const QString&) const;
+ bool hasOption (const QString&) const;
+ void setOption (const QString&, const QString&);
+ void removeOption (const QString&);
+ QMap<QString,QString> options () const;
+ void setOptions (const QMap<QString,QString>&);
+//ig DrMain* driver () const;
+//ig void setDriver (DrMain*);
+//ig DrMain* takeDriver ();
+ bool autoConfigure (KPrinter*, QWidget* /Transfer/ = 0);
+ const QString& defaultOption (const QString&) const;
+ void setDefaultOption (const QString&, const QString&);
+ QMap<QString,QString> defaultOptions () const;
+ void setDefaultOptions (const QMap<QString,QString>&);
+ const QString& editedOption (const QString&) const;
+ void setEditedOption (const QString&, const QString&);
+ QMap<QString,QString> editedOptions () const;
+ void setEditedOptions (const QMap<QString,QString>&);
+ bool isEdited () const;
+ void setEdited (bool);
+
+protected:
+
+public:
+
+%If ( - KDE_3_2_0 )
+ const KURL& device () const;
+ void setDevice (const KURL&);
+%End
+
+
+}; // class KMPrinter
+
diff --git a/python/pykde/sip/kdeprint/kpreloadobject.sip b/python/pykde/sip/kdeprint/kpreloadobject.sip
new file mode 100644
index 00000000..daefa2e6
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kpreloadobject.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPReloadObject
+{
+%TypeHeaderCode
+#include <kpreloadobject.h>
+%End
+
+
+public:
+ KPReloadObject (bool = 0);
+
+protected:
+ virtual void reload () = 0;
+ virtual void aboutToReload ();
+ virtual void configChanged ();
+
+}; // class KPReloadObject
+
diff --git a/python/pykde/sip/kdeprint/kprintaction.sip b/python/pykde/sip/kdeprint/kprintaction.sip
new file mode 100644
index 00000000..7c185549
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kprintaction.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPrintAction : KActionMenu
+{
+%TypeHeaderCode
+#include <kprintaction.h>
+%End
+
+
+public:
+
+ enum PrinterType
+ {
+ All,
+ Regular,
+ Specials
+ };
+
+ KPrintAction (const QString&, KPrintAction::PrinterType = All , QWidget* = 0, QObject* /TransferThis/ = 0, const char* = 0);
+ KPrintAction (const QString&, const QIconSet&, KPrintAction::PrinterType = All , QWidget* = 0, QObject* /TransferThis/ = 0, const char* = 0);
+ KPrintAction (const QString&, const QString&, KPrintAction::PrinterType = All , QWidget* = 0, QObject* /TransferThis/ = 0, const char* = 0);
+ static KPrintAction* exportAll (QWidget* = 0, QObject* /Transfer/ = 0, const char* = 0);
+ static KPrintAction* exportRegular (QWidget* = 0, QObject* /Transfer/ = 0, const char* = 0);
+ static KPrintAction* exportSpecial (QWidget* = 0, QObject* /Transfer/ = 0, const char* = 0);
+
+signals:
+ void print (KPrinter*) /PyName=print_/;
+
+protected slots:
+ void slotAboutToShow ();
+ void slotActivated (int);
+
+protected:
+ void initialize (KPrintAction::PrinterType, QWidget*);
+
+}; // class KPrintAction
+
diff --git a/python/pykde/sip/kdeprint/kprintdialog.sip b/python/pykde/sip/kdeprint/kprintdialog.sip
new file mode 100644
index 00000000..874f1ee4
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kprintdialog.sip
@@ -0,0 +1,170 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPrintDialog : KDialog, KPReloadObject
+{
+%TypeHeaderCode
+#include <kprintdialog.h>
+%End
+
+
+public:
+ KPrintDialog (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setFlags (int);
+ void setDialogPages (QPtrList<KPrintDialogPage>*);
+
+%If ( KDE_3_1_0 - )
+ void enableDialogPage (int, bool = 1);
+%End
+
+ KPrinter* printer () const;
+ static KPrintDialog* printerDialog (KPrinter*, QWidget*, const QString& = QString ::null , bool = 0);
+
+signals:
+ void printRequested (KPrinter*);
+
+protected slots:
+ void slotPrinterSelected (int);
+ void slotProperties ();
+ void slotSetDefault ();
+ void slotOptions ();
+ virtual void done (int);
+ void slotWizard ();
+ void slotExtensionClicked ();
+ void slotToggleFilter (bool);
+
+%If ( KDE_3_1_0 - )
+ void slotHelp ();
+ void slotOutputFileSelected (const QString&);
+ void slotUpdatePossible (bool);
+ void slotOpenFileDialog ();
+%End
+
+
+protected:
+ bool checkOutputFile ();
+ void enableSpecial (bool);
+ void enableOutputFile (bool);
+ void setOutputFileExtension (const QString&);
+ void reload ();
+ void configChanged ();
+ void expandDialog (bool = 1);
+
+%If ( KDE_3_1_0 - )
+ void initialize (KPrinter*);
+ void init ();
+%End
+
+
+protected:
+
+public:
+
+%If ( - KDE_3_1_0 )
+ void initialize (KPrinter*);
+%End
+
+
+}; // class KPrintDialog
+
+
+
+%MappedType QPtrList<KPrintDialogPage>
+//converts a Python list of KPrintDialogPage
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kprintdialogpage.h>
+#include <sipkdeprintKPrintDialogPage.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of KPrintDialogPage
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KPrintDialogPage> *kpList = (QPtrList<KPrintDialogPage> *)sipCpp;
+ PyObject *inst;
+ KPrintDialogPage *p;
+
+ for(p = kpList->first (); p; p = kpList->next ())
+ {
+ inst = sipConvertFromInstance (p, sipClass_KPrintDialogPage, sipTransferObj);
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to QPtrList<KPrintDialogPage> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KPrintDialogPage> *kpList = new QPtrList<KPrintDialogPage>;
+
+ PyObject *elem;
+ KPrintDialogPage *p;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ p = (KPrintDialogPage *)sipForceConvertTo_KPrintDialogPage(elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete kpList;
+ return 0;
+ }
+
+ kpList->append (p);
+ }
+
+ *sipCppPtr = kpList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeprint/kprintdialogpage.sip b/python/pykde/sip/kdeprint/kprintdialogpage.sip
new file mode 100644
index 00000000..b91ce950
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kprintdialogpage.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPrintDialogPage : QWidget
+{
+%TypeHeaderCode
+#include <kprintdialogpage.h>
+%End
+
+
+public:
+ KPrintDialogPage (QWidget* /TransferThis/ = 0, const char* = 0);
+//ig KPrintDialogPage (KMPrinter*, DrMain* = 0, QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void getOptions (QMap<QString,QString>&, bool = 0);
+ virtual void setOptions (const QMap<QString,QString>&);
+ virtual bool isValid (QString&);
+ int id () const;
+ void setId (int);
+ QString title () const;
+ void setTitle (const QString&);
+ bool onlyRealPrinters () const;
+ void setOnlyRealPrinters (bool = 1);
+//ig DrMain* driver ();
+//ig KMPrinter* printer ();
+
+protected:
+
+}; // class KPrintDialogPage
+
diff --git a/python/pykde/sip/kdeprint/kprinter.sip b/python/pykde/sip/kdeprint/kprinter.sip
new file mode 100644
index 00000000..7ff47b69
--- /dev/null
+++ b/python/pykde/sip/kdeprint/kprinter.sip
@@ -0,0 +1,258 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeprint version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPrinter : QPaintDevice, KPReloadObject
+{
+%TypeHeaderCode
+#include <kprinter.h>
+%End
+
+
+public:
+
+ enum StandardPageType
+ {
+ CopiesPage,
+ FilesPage,
+ Custom
+ };
+
+
+ enum PageSelectionType
+ {
+ ApplicationSide,
+ SystemSide
+ };
+
+
+ enum ApplicationType
+ {
+ Dialog,
+ StandAlone,
+ StandAlonePersistent
+ };
+
+
+ enum PageSetType
+ {
+ AllPages,
+ OddPages,
+ EvenPages
+ };
+
+
+ enum CollateType
+ {
+ Collate,
+ Uncollate
+ };
+
+
+ enum ColorMode
+ {
+ GrayScale,
+ Color
+ };
+
+
+ enum Orientation
+ {
+ Portrait,
+ Landscape
+ };
+
+
+ enum PageOrder
+ {
+ FirstPageFirst,
+ LastPageFirst
+ };
+
+
+ enum PageSize
+ {
+ A4,
+ B5,
+ Letter,
+ Legal,
+ Executive,
+ A0,
+ A1,
+ A2,
+ A3,
+ A5,
+ A6,
+ A7,
+ A8,
+ A9,
+ B0,
+ B1,
+ B10,
+ B2,
+ B3,
+ B4,
+ B6,
+ B7,
+ B8,
+ B9,
+ C5E,
+ Comm10E,
+ DLE,
+ Folio,
+ Ledger,
+ Tabloid,
+ NPageSize
+ };
+
+ KPrinter (bool = 1, QPrinter::PrinterMode = QPrinter ::ScreenResolution );
+ bool newPage ();
+ bool abort ();
+ bool aborted () const;
+ bool outputToFile () const;
+ void setOutputToFile (bool);
+ QString outputFileName () const;
+ void setOutputFileName (const QString&);
+ QString docName () const;
+ void setDocName (const QString&);
+ QString creator () const;
+ void setCreator (const QString&);
+ bool fullPage () const;
+ void setFullPage (bool);
+ KPrinter::ColorMode colorMode () const;
+ void setColorMode (KPrinter::ColorMode);
+ int numCopies () const;
+ void setNumCopies (int);
+ KPrinter::Orientation orientation () const;
+ void setOrientation (KPrinter::Orientation);
+ KPrinter::PageOrder pageOrder () const;
+ void setPageOrder (KPrinter::PageOrder);
+ KPrinter::CollateType collate () const;
+ void setCollate (KPrinter::CollateType);
+ int minPage () const;
+ int maxPage () const;
+ void setMinMax (int, int);
+ int fromPage () const;
+ int toPage () const;
+ void setFromTo (int, int);
+ KPrinter::PageSize pageSize () const;
+ void setPageSize (KPrinter::PageSize);
+ QString printerName () const;
+ void setPrinterName (const QString&);
+ QString printProgram () const;
+ void setPrintProgram (const QString&);
+ QString printerSelectionOption () const;
+ void setPrinterSelectionOption (const QString&);
+ int currentPage () const;
+ void setCurrentPage (int = 0);
+ KPrinter::PageSetType pageSet () const;
+ bool setup (QWidget* /Transfer/ = 0, const QString& = QString ::null , bool = 0);
+ QSize margins () const;
+ void setMargins (QSize);
+ QSize realPageSize () const;
+ void setRealPageSize (QSize);
+
+%If ( KDE_3_1_0 - )
+ void setRealDrawableArea (const QRect&);
+ QRect realDrawableArea () const;
+ void margins (uint*, uint*, uint*, uint*) const /PyName=marginsAsInts/;
+
+%If ( KDE_3_2_0 - )
+ void setMargins (uint, uint, uint, uint);
+%End
+
+%End
+
+ QValueList<int> pageList () const;
+ void setPreviewOnly (bool);
+ bool previewOnly () const;
+
+%If ( KDE_3_1_0 - )
+ void setResolution (int);
+ int resolution () const;
+
+%If ( KDE_3_2_0 - )
+ void setUsePrinterResolution (bool);
+%End
+
+%End
+
+//ig KPrinterImpl* implementation () const;
+ bool printFiles (const QStringList&, bool = 0, bool = 1);
+ static void addDialogPage (KPrintDialogPage*);
+ static void setPageSelection (KPrinter::PageSelectionType);
+ static KPrinter::PageSelectionType pageSelection ();
+ static void setApplicationType (KPrinter::ApplicationType);
+ static KPrinter::ApplicationType applicationType ();
+ static void addStandardPage (int);
+ static void removeStandardPage (int);
+ const QString& option (const QString&) const;
+ void setOption (const QString&, const QString&);
+ const QMap<QString,QString>& options () const;
+ void setOptions (const QMap<QString,QString>&);
+ void initOptions (const QMap<QString,QString>&);
+ QString searchName () const;
+ void setSearchName (const QString&);
+ QString errorMessage () const;
+ void setErrorMessage (const QString&);
+ bool autoConfigure (const QString& = QString ::null , QWidget* /Transfer/ = 0);
+ void setDocFileName (const QString&);
+ QString docFileName () const;
+
+%If ( KDE_3_1_0 - )
+ void setDocDirectory (const QString&);
+ QString docDirectory () const;
+%End
+
+
+protected:
+//ig virtual bool cmd (int, QPainter*, QPDevCmdParam*);
+ virtual int metric (int) const;
+ void translateQtOptions ();
+ void loadSettings ();
+ void saveSettings ();
+ void preparePrinting ();
+ void finishPrinting ();
+ void reload ();
+ void init (bool = 1, QPrinter::PrinterMode = QPrinter ::ScreenResolution );
+
+%If ( KDE_3_1_0 - )
+ bool doPreview (const QString&);
+
+%If ( KDE_3_2_0 - )
+//ig void setRealPageSize (DrPageSize*);
+ void setOption (const QString&, const QString&, bool);
+%End
+
+%End
+
+
+protected:
+
+}; // class KPrinter
+
+KPrinter::PageSize pageNameToPageSize (const QString&);
+const char* pageSizeToPageName (KPrinter::PageSize);
+//ig QSize rangeToSize (const QString&);
diff --git a/python/pykde/sip/kdeui/kaboutapplication.sip b/python/pykde/sip/kdeui/kaboutapplication.sip
new file mode 100644
index 00000000..5b88fc09
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaboutapplication.sip
@@ -0,0 +1,205 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAboutApplication : KAboutDialog
+{
+%TypeHeaderCode
+#include <kaboutapplication.h>
+%End
+
+
+public:
+ KAboutApplication (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+ KAboutApplication (const KAboutData*, QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+
+protected:
+ void buildDialog (const KAboutData*);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KAboutApplication, &sipClass_KAboutApplication},
+ {sipName_KAboutContainer, &sipClass_KAboutContainer},
+ {sipName_KAboutContributor, &sipClass_KAboutContributor},
+ {sipName_KAboutDialog, &sipClass_KAboutDialog},
+ {sipName_KAboutKDE, &sipClass_KAboutKDE},
+ {sipName_KAboutWidget, &sipClass_KAboutWidget},
+ {sipName_KAction, &sipClass_KAction},
+ {sipName_KActionCollection, &sipClass_KActionCollection},
+ {sipName_KActionMenu, &sipClass_KActionMenu},
+ {sipName_KActionSeparator, &sipClass_KActionSeparator},
+ {sipName_KActiveLabel, &sipClass_KActiveLabel},
+ {sipName_KAnimWidget, &sipClass_KAnimWidget},
+ {sipName_KArrowButton, &sipClass_KArrowButton},
+ {sipName_KAuthIcon, &sipClass_KAuthIcon},
+ {sipName_KBugReport, &sipClass_KBugReport},
+ {sipName_KButtonBox, &sipClass_KButtonBox},
+ {sipName_KCModule, &sipClass_KCModule},
+ {sipName_KCharSelect, &sipClass_KCharSelect},
+ {sipName_KCharSelectTable, &sipClass_KCharSelectTable},
+ {sipName_KColorButton, &sipClass_KColorButton},
+ {sipName_KColorCells, &sipClass_KColorCells},
+ {sipName_KColorCombo, &sipClass_KColorCombo},
+ {sipName_KColorDialog, &sipClass_KColorDialog},
+ {sipName_KColorDrag, &sipClass_KColorDrag},
+ {sipName_KColorPatch, &sipClass_KColorPatch},
+ {sipName_KComboBox, &sipClass_KComboBox},
+ {sipName_KCommandHistory, &sipClass_KCommandHistory},
+ {sipName_KCompletionBox, &sipClass_KCompletionBox},
+ {sipName_KContextMenuManager, &sipClass_KContextMenuManager},
+ {sipName_KDateInternalMonthPicker,&sipClass_KDateInternalMonthPicker},
+#if KDE_VERSION >= 0x030100
+ {sipName_KDateInternalWeekSelector,&sipClass_KDateInternalWeekSelector},
+#endif
+ {sipName_KDateInternalYearSelector,&sipClass_KDateInternalYearSelector},
+ {sipName_KDatePicker, &sipClass_KDatePicker},
+ {sipName_KDatePicker, &sipClass_KDatePicker},
+ {sipName_KDateTable, &sipClass_KDateTable},
+ {sipName_KDateValidator, &sipClass_KDateValidator},
+ {sipName_KDateWidget, &sipClass_KDateWidget},
+ {sipName_KDialog, &sipClass_KDialog},
+ {sipName_KDialogBase, &sipClass_KDialogBase},
+ {sipName_KDialogQueue, &sipClass_KDialogQueue},
+ {sipName_KDockArea, &sipClass_KDockArea},
+ {sipName_KDockMainWindow, &sipClass_KDockMainWindow},
+ {sipName_KDockManager, &sipClass_KDockManager},
+ {sipName_KDockTabGroup, &sipClass_KDockTabGroup},
+ {sipName_KDockWidget, &sipClass_KDockWidget},
+ {sipName_KDockWidgetAbstractHeader,&sipClass_KDockWidgetAbstractHeader},
+ {sipName_KDockWidgetAbstractHeaderDrag,&sipClass_KDockWidgetAbstractHeaderDrag},
+ {sipName_KDockWidgetHeader, &sipClass_KDockWidgetHeader},
+ {sipName_KDockWidgetHeaderDrag, &sipClass_KDockWidgetHeaderDrag},
+// {sipName_KDockWindow, &sipClass_KDockWindow},
+#if KDE_VERSION >= 0x030100
+ {sipName_KDoubleSpinBox, &sipClass_KDoubleSpinBox},
+ {sipName_KDoubleValidator, &sipClass_KDoubleValidator},
+#endif
+ {sipName_KDualColorButton, &sipClass_KDualColorButton},
+ {sipName_KDualColorButton, &sipClass_KDualColorButton},
+ {sipName_KEdFind, &sipClass_KEdFind},
+ {sipName_KEdGotoLine, &sipClass_KEdGotoLine},
+ {sipName_KEdReplace, &sipClass_KEdReplace},
+ {sipName_KEdit, &sipClass_KEdit},
+ {sipName_KEditListBox, &sipClass_KEditListBox},
+ {sipName_KEditToolbar, &sipClass_KEditToolbar},
+ {sipName_KEditToolbarWidget, &sipClass_KEditToolbarWidget},
+ {sipName_KFloatValidator, &sipClass_KFloatValidator},
+ {sipName_KFontAction, &sipClass_KFontAction},
+ {sipName_KFontChooser, &sipClass_KFontChooser},
+ {sipName_KFontCombo, &sipClass_KFontCombo},
+ {sipName_KFontDialog, &sipClass_KFontDialog},
+ {sipName_KFontSizeAction, &sipClass_KFontSizeAction},
+ {sipName_KGradientSelector, &sipClass_KGradientSelector},
+ {sipName_KHSSelector, &sipClass_KHSSelector},
+ {sipName_KHelpMenu, &sipClass_KHelpMenu},
+ {sipName_KHistoryCombo, &sipClass_KHistoryCombo},
+ {sipName_KIconView, &sipClass_KIconView},
+ {sipName_KIntSpinBox, &sipClass_KIntSpinBox},
+ {sipName_KIntValidator, &sipClass_KIntValidator},
+ {sipName_KJanusWidget, &sipClass_KJanusWidget},
+ {sipName_KKeyButton, &sipClass_KKeyButton},
+ {sipName_KKeyChooser, &sipClass_KKeyChooser},
+ {sipName_KKeyDialog, &sipClass_KKeyDialog},
+ {sipName_KLed, &sipClass_KLed},
+ {sipName_KLineEdit, &sipClass_KLineEdit},
+ {sipName_KLineEditDlg, &sipClass_KLineEditDlg},
+ {sipName_KListAction, &sipClass_KListAction},
+ {sipName_KListBox, &sipClass_KListBox},
+ {sipName_KListView, &sipClass_KListView},
+ {sipName_KMainWindow, &sipClass_KMainWindow},
+ {sipName_KMenuBar, &sipClass_KMenuBar},
+ {sipName_KMimeTypeValidator, &sipClass_KMimeTypeValidator},
+ {sipName_KNumInput, &sipClass_KNumInput},
+ {sipName_KPaletteTable, &sipClass_KPaletteTable},
+ {sipName_KPanelApplet, &sipClass_KPanelApplet},
+ {sipName_KPanelAppMenu, &sipClass_KPanelAppMenu},
+ {sipName_KPanelExtension, &sipClass_KPanelExtension},
+ {sipName_KPanelMenu, &sipClass_KPanelMenu},
+#if KDE_VERSION >= 0x030100
+ {sipName_KPassivePopup, &sipClass_KPassivePopup},
+#endif
+ {sipName_KPasswordDialog, &sipClass_KPasswordDialog},
+ {sipName_KPasswordEdit, &sipClass_KPasswordEdit},
+ {sipName_KPopupFrame, &sipClass_KPopupFrame},
+ {sipName_KPopupMenu, &sipClass_KPopupMenu},
+ {sipName_KPopupTitle, &sipClass_KPopupTitle},
+ {sipName_KProgress, &sipClass_KProgress},
+ {sipName_KProgressDialog, &sipClass_KProgressDialog},
+ {sipName_KPushButton, &sipClass_KPushButton},
+ {sipName_KRadioAction, &sipClass_KRadioAction},
+ {sipName_KRecentFilesAction, &sipClass_KRecentFilesAction},
+ {sipName_KRestrictedLine, &sipClass_KRestrictedLine},
+ {sipName_KRootPermsIcon, &sipClass_KRootPermsIcon},
+ {sipName_KRootPixmap, &sipClass_KRootPixmap},
+ {sipName_KRuler, &sipClass_KRuler},
+ {sipName_KSelectAction, &sipClass_KSelectAction},
+ {sipName_KSelector, &sipClass_KSelector},
+ {sipName_KSeparator, &sipClass_KSeparator},
+// {sipName_KSharedPixmap, &sipClass_KSharedPixmap},
+ {sipName_KSqueezedTextLabel, &sipClass_KSqueezedTextLabel},
+ {sipName_KStatusBar, &sipClass_KStatusBar},
+ {sipName_KStatusBarLabel, &sipClass_KStatusBarLabel},
+ {sipName_KStringListValidator, &sipClass_KStringListValidator},
+ {sipName_KSystemTray, &sipClass_KSystemTray},
+ {sipName_KTabCtl, &sipClass_KTabCtl},
+ {sipName_KTextBrowser, &sipClass_KTextBrowser},
+#if KDE_VERSION >= 0x030100
+ {sipName_KTextEdit, &sipClass_KTextEdit},
+#endif
+ {sipName_KTipDialog, &sipClass_KTipDialog},
+ {sipName_KToggleAction, &sipClass_KToggleAction},
+#if KDE_VERSION >= 0x030100
+ {sipName_KToggleToolBarAction, &sipClass_KToggleToolBarAction},
+#endif
+ {sipName_KToolBar, &sipClass_KToolBar},
+ {sipName_KToolBarButton, &sipClass_KToolBarButton},
+ {sipName_KToolBarPopupAction, &sipClass_KToolBarPopupAction},
+ {sipName_KToolBarRadioGroup, &sipClass_KToolBarRadioGroup},
+ {sipName_KToolBarSeparator, &sipClass_KToolBarSeparator},
+ {sipName_KURLLabel, &sipClass_KURLLabel},
+ {sipName_KValueSelector, &sipClass_KValueSelector},
+#if KDE_VERSION >= 0x030100
+ {sipName_KWidgetAction, &sipClass_KWidgetAction},
+ {sipName_KWindowInfo, &sipClass_KWindowInfo},
+#endif
+ {sipName_KWindowListMenu, &sipClass_KWindowListMenu},
+ {sipName_KWizard, &sipClass_KWizard},
+ {sipName_KWritePermsIcon, &sipClass_KWritePermsIcon},
+ {sipName_KXMLGUIFactory, &sipClass_KXMLGUIFactory},
+ {sipName_KXYSelector, &sipClass_KXYSelector},
+// {sipName_PyKPanelApplet, &sipClass_PyKPanelApplet},
+// {sipName_QXEmbed, &sipClass_QXEmbed},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class KAboutApplication
+
diff --git a/python/pykde/sip/kdeui/kaboutdialog.sip b/python/pykde/sip/kdeui/kaboutdialog.sip
new file mode 100644
index 00000000..167d2d09
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaboutdialog.sip
@@ -0,0 +1,190 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAboutContainer : QFrame
+{
+%TypeHeaderCode
+#include <kaboutdialog.h>
+%End
+
+
+public:
+ KAboutContainer (QWidget* /TransferThis/ = 0, const char* = 0, int = 0, int = 0, int = AlignCenter , int = AlignCenter );
+ void addWidget (QWidget*);
+ void addPerson (const QString&, const QString&, const QString&, const QString&, bool = 0, bool = 0, bool = 0);
+ void addTitle (const QString&, int = AlignLeft , bool = 0, bool = 0);
+ void addImage (const QString&, int = AlignLeft );
+ virtual QSize sizeHint () const;
+ virtual QSize minimumSizeHint () const;
+
+protected:
+ virtual void childEvent (QChildEvent*);
+
+signals:
+ void urlClick (const QString&);
+ void mailClick (const QString&, const QString&);
+
+}; // class KAboutContainer
+
+
+class KAboutContributor : QFrame
+{
+%TypeHeaderCode
+#include <kaboutdialog.h>
+%End
+
+
+public:
+ KAboutContributor (QWidget* /TransferThis/ = 0, const char* = 0, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , bool = 0, bool = 1, bool = 0);
+ void setName (const QString&, const QString& = QString ::null , bool = 1);
+ void setEmail (const QString&, const QString& = QString ::null , bool = 1);
+ void setURL (const QString&, const QString& = QString ::null , bool = 1);
+ void setWork (const QString&, const QString& = QString ::null , bool = 1);
+ QString getName ();
+ QString getEmail ();
+ QString getURL ();
+ QString getWork ();
+ virtual QSize sizeHint () const;
+
+protected:
+ virtual void fontChange (const QFont&);
+
+protected slots:
+ void urlClickedSlot (const QString&);
+ void emailClickedSlot (const QString&);
+
+signals:
+ void sendEmail (const QString&, const QString&);
+ void openURL (const QString&);
+
+}; // class KAboutContributor
+
+
+class KAboutWidget : QWidget
+{
+%TypeHeaderCode
+#include <kaboutdialog.h>
+%End
+
+
+public:
+ KAboutWidget (QWidget* /TransferThis/ = 0, const char* = 0);
+ void adjust ();
+ void setLogo (const QPixmap&);
+ void setAuthor (const QString&, const QString&, const QString&, const QString&);
+ void setMaintainer (const QString&, const QString&, const QString&, const QString&);
+ void addContributor (const QString&, const QString&, const QString&, const QString&);
+ void setVersion (const QString&);
+
+protected slots:
+ void sendEmailSlot (const QString&, const QString&);
+ void openURLSlot (const QString&);
+
+signals:
+ void sendEmail (const QString&, const QString&);
+ void openURL (const QString&);
+
+protected:
+ void resizeEvent (QResizeEvent*);
+
+}; // class KAboutWidget
+
+
+class KAboutDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kaboutdialog.h>
+%End
+
+
+public:
+
+ enum LayoutType
+ {
+ AbtPlain,
+ AbtTabbed,
+ AbtTitle,
+ AbtImageLeft,
+ AbtImageRight,
+ AbtImageOnly,
+ AbtProduct,
+ AbtKDEStandard,
+ AbtAppStandard,
+ AbtImageAndTitle
+ };
+
+
+public:
+ KAboutDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+ KAboutDialog (int, const QString&, int, ButtonCode, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 0, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+ void adjust ();
+ virtual void show ();
+ virtual void show (QWidget*);
+ void setTitle (const QString&);
+ void setImage (const QString&);
+
+%If ( KDE_3_3_0 - )
+ void setIcon (const QString&);
+
+%If ( KDE_3_4_0 - )
+ void setProgramLogo (const QString&);
+ void setProgramLogo (const QPixmap&);
+%End
+
+%End
+
+ void setImageBackgroundColor (const QColor&);
+ void setImageFrame (bool);
+ void setProduct (const QString&, const QString&, const QString&, const QString&);
+ QFrame* addTextPage (const QString&, const QString&, bool = 0, int = 10);
+ QFrame* addLicensePage (const QString&, const QString&, int = 10);
+ KAboutContainer* addContainerPage (const QString&, int = AlignCenter , int = AlignCenter );
+ KAboutContainer* addScrolledContainerPage (const QString&, int = AlignCenter , int = AlignCenter );
+ KAboutContainer* addContainer (int, int);
+ QFrame* addPage (const QString&);
+ void setLogo (const QPixmap&);
+ void setAuthor (const QString&, const QString&, const QString&, const QString&);
+ void setMaintainer (const QString&, const QString&, const QString&, const QString&);
+ void addContributor (const QString&, const QString&, const QString&, const QString&);
+ void setVersion (const QString&);
+ static void imageURL (QWidget* /Transfer/, const QString&, const QString&, const QColor&, const QString&);
+
+signals:
+ void sendEmail (const QString&, const QString&);
+ void openURL (const QString&);
+
+protected:
+
+protected slots:
+ void sendEmailSlot (const QString&, const QString&);
+ void openURLSlot (const QString&);
+ virtual void mouseTrackSlot (int, const QMouseEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KAboutDialog
+
diff --git a/python/pykde/sip/kdeui/kaboutkde.sip b/python/pykde/sip/kdeui/kaboutkde.sip
new file mode 100644
index 00000000..36c437b1
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaboutkde.sip
@@ -0,0 +1,38 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAboutKDE : KAboutDialog
+{
+%TypeHeaderCode
+#include <kaboutkde.h>
+%End
+
+
+public:
+ KAboutKDE (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+
+}; // class KAboutKDE
+
diff --git a/python/pykde/sip/kdeui/kaccelmanager.sip b/python/pykde/sip/kdeui/kaccelmanager.sip
new file mode 100644
index 00000000..c8ebb465
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaccelmanager.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_4
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KAcceleratorManager
+{
+%TypeHeaderCode
+#include <kaccelmanager.h>
+%End
+
+
+public:
+ static void manage (QWidget*);
+ static void manage (QWidget*, bool);
+
+}; // class KAcceleratorManager
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kaccelmenu.sip b/python/pykde/sip/kdeui/kaccelmenu.sip
new file mode 100644
index 00000000..5c0f6724
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaccelmenu.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAccelMenu : KPopupMenu
+{
+%TypeHeaderCode
+#include <kaccel.h>
+#include <kpopupmenu.h>
+#include <kaccelmenu.h>
+%End
+
+
+public:
+ KAccelMenu (KAccel*, QWidget*/TransferThis/ = 0, const char* = 0);
+ int insItem (const QPixmap&, const char*, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), const char* = 0);
+ int insItem (const char*, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), const char* = 0);
+ int insItem (const QPixmap&, const char*, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), KStdAccel::StdAccel);
+ int insItem (const char*, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), KStdAccel::StdAccel);
+
+protected:
+ char* stripAnd (const char*);
+ void keyPressEvent (QKeyEvent*);
+ void popMsg ();
+
+protected slots:
+ void highl (int);
+ void aboutTS ();
+
+}; // class KAccelMenu
+
diff --git a/python/pykde/sip/kdeui/kaction.sip b/python/pykde/sip/kdeui/kaction.sip
new file mode 100644
index 00000000..20399bc7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kaction.sip
@@ -0,0 +1,759 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAction : QObject
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ KAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ KAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ KAction (const KGuiItem&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ KAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+ virtual void plugAccel (KAccel*, bool = 1);
+ virtual void unplug (QWidget*);
+ virtual void unplugAccel ();
+ virtual bool isPlugged () const;
+
+%If ( KDE_3_1_0 - )
+ bool isPlugged (const QWidget*) const;
+%End
+
+ virtual bool isPlugged (const QWidget*, int) const;
+ virtual bool isPlugged (const QWidget*, const QWidget*) const;
+ QWidget* container (int) const;
+ int itemId (int) const;
+ QWidget* representative (int) const;
+ int containerCount () const;
+
+%If ( KDE_3_1_0 - )
+ uint kaccelCount () const;
+%End
+
+ virtual bool hasIcon () const;
+ bool hasIconSet () const;
+ virtual QString plainText () const;
+ virtual QString text () const;
+ virtual const KShortcut& shortcut () const;
+ virtual const KShortcut& shortcutDefault () const;
+ QString shortcutText () const;
+ void setShortcutText (const QString&);
+ virtual bool isEnabled () const;
+ virtual bool isShortcutConfigurable () const;
+ virtual QString group () const;
+ virtual QString whatsThis () const;
+ virtual QString toolTip () const;
+ virtual QIconSet iconSet (KIcon::Group, int = 0) const;
+ QIconSet iconSet () const;
+ virtual QString icon () const;
+ KActionCollection* parentCollection () const;
+ static int getToolButtonID ();
+ void unplugAll ();
+
+%If ( KDE_3_4_0 - )
+
+ enum ActivationReason
+ {
+ UnknownActivation,
+ EmulatedActivation,
+ AccelActivation,
+ PopupMenuActivation,
+ ToolBarActivation
+ };
+
+%End
+
+
+public slots:
+ virtual void setText (const QString&);
+ virtual bool setShortcut (const KShortcut&);
+ virtual void setGroup (const QString&);
+ virtual void setWhatsThis (const QString&);
+ virtual void setToolTip (const QString&);
+ virtual void setIconSet (const QIconSet&);
+ virtual void setIcon (const QString&);
+ virtual void setEnabled (bool);
+
+%If ( KDE_3_5_0 - )
+ void setDisabled (bool);
+%End
+
+ virtual void setShortcutConfigurable (bool);
+ virtual void activate ();
+
+protected slots:
+ virtual void slotDestroyed ();
+ virtual void slotKeycodeChanged ();
+ virtual void slotActivated ();
+
+%If ( KDE_3_4_0 - )
+ void slotPopupActivated ();
+ void slotButtonClicked (int, Qt::ButtonState);
+%End
+
+
+protected:
+ KToolBar* toolBar (int) const;
+ QPopupMenu* popupMenu (int) const;
+ void removeContainer (int);
+ int findContainer (const QWidget*) const;
+
+%If ( KDE_3_4_0 - )
+ int findContainer (int) const;
+%End
+
+ void plugMainWindowAccel (QWidget*);
+ void addContainer (QWidget* /Transfer/, int);
+ void addContainer (QWidget* /Transfer/, QWidget*);
+ virtual void updateShortcut (int);
+ virtual void updateShortcut (QPopupMenu*, int);
+ virtual void updateGroup (int);
+ virtual void updateText (int);
+ virtual void updateEnabled (int);
+ virtual void updateIconSet (int);
+ virtual void updateIcon (int);
+ virtual void updateToolTip (int);
+ virtual void updateWhatsThis (int);
+
+%If ( KDE_3_1_0 - )
+ QString whatsThisWithIcon () const;
+
+%If ( KDE_3_3_0 - )
+ const KGuiItem& guiItem () const;
+%End
+
+%End
+
+
+signals:
+ void activated ();
+
+%If ( KDE_3_4_0 - )
+ void activated (KAction::ActivationReason, Qt::ButtonState);
+%End
+
+ void enabled (bool);
+
+public:
+ int accel () const;
+ QString statusText () const;
+ void setAccel (int);
+ void setStatusText (const QString&);
+ int menuId (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KAction
+
+
+%If ( - KDE_3_2_0 )
+
+class KToggleAction : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KToggleAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+ bool isChecked () const;
+ QString exclusiveGroup () const;
+ virtual void setExclusiveGroup (const QString&);
+
+public slots:
+ virtual void setChecked (bool);
+
+protected slots:
+ virtual void slotActivated ();
+
+protected:
+ virtual void updateChecked (int);
+
+signals:
+ void toggled (bool);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToggleAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KRadioAction : KToggleAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KRadioAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (QObject* /TransferThis/ = 0, const char* = 0);
+
+protected:
+ virtual void slotActivated ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRadioAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KSelectAction : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KSelectAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+ virtual bool isEditable () const;
+ virtual QStringList items () const;
+ virtual void changeItem (int, const QString&);
+ virtual QString currentText () const;
+ virtual int currentItem () const;
+ virtual int comboWidth () const;
+ QPopupMenu* popupMenu ();
+
+%If ( KDE_3_1_0 - )
+ void setRemoveAmpersandsInCombo (bool);
+ bool removeAmpersandsInCombo () const;
+ void setMenuAccelsEnabled (bool);
+ bool menuAccelsEnabled () const;
+%End
+
+
+public slots:
+ virtual void setCurrentItem (int);
+ virtual void setItems (const QStringList&);
+ virtual void clear ();
+ virtual void setEditable (bool);
+ virtual void setComboWidth (int);
+
+protected:
+ virtual void changeItem (int, int, const QString&);
+
+%If ( KDE_3_1_0 - )
+ QStringList comboItems () const;
+%End
+
+
+protected slots:
+ virtual void slotActivated (int);
+ virtual void slotActivated (const QString&);
+ virtual void slotActivated ();
+
+signals:
+ void activated (int);
+ void activated (const QString&);
+
+protected:
+ virtual void updateCurrentItem (int);
+ virtual void updateComboWidth (int);
+ virtual void updateItems (int);
+ virtual void updateClear (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSelectAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KListAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KListAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual QString currentText () const;
+ virtual int currentItem () const;
+
+public slots:
+ virtual void setCurrentItem (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KListAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KRecentFilesAction : KListAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KRecentFilesAction (const QString&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QIconSet&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QString&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (QObject* /TransferThis/ = 0, const char* = 0, uint = 10);
+ uint maxItems () const;
+
+public slots:
+ void setMaxItems (uint);
+ void loadEntries (KConfig*, QString = QString ::null );
+ void saveEntries (KConfig*, QString = QString ::null );
+
+public slots:
+ void addURL (const KURL&);
+ void removeURL (const KURL&);
+ void clearURLList ();
+
+signals:
+ void urlSelected (const KURL&);
+
+protected slots:
+ void itemSelected (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRecentFilesAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KFontAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KFontAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontAction (QObject* /TransferThis/ = 0, const char* = 0);
+ QString font () const;
+ int plug (QWidget*, int = -1);
+
+public slots:
+ void setFont (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KFontSizeAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KFontSizeAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int fontSize () const;
+
+public slots:
+ virtual void setFontSize (int);
+
+protected slots:
+ virtual void slotActivated (int);
+ virtual void slotActivated (const QString&);
+ virtual void slotActivated ();
+
+signals:
+ void fontSizeChanged (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontSizeAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KActionMenu : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KActionMenu (const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (const QString&, const QIconSet&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (const QString&, const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual void insert (KAction*, int = -1);
+ virtual void remove (KAction*);
+ KPopupMenu* popupMenu ();
+ void popup (const QPoint&);
+ bool delayed () const;
+ void setDelayed (bool);
+ bool stickyMenu () const;
+ void setStickyMenu (bool);
+ virtual int plug (QWidget*, int = -1);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionMenu
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KToolBarPopupAction : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KToolBarPopupAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToolBarPopupAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToolBarPopupAction (const KGuiItem&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ virtual int plug (QWidget*, int = -1);
+ KPopupMenu* popupMenu ();
+ bool delayed () const;
+ void setDelayed (bool);
+ bool stickyMenu () const;
+ void setStickyMenu (bool);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToolBarPopupAction
+
+%End
+
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+class KToggleToolBarAction : KToggleAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KToggleToolBarAction (const char*, const QString&, KActionCollection* /TransferThis/, const char*);
+ KToggleToolBarAction (KToolBar*, const QString&, KActionCollection* /TransferThis/, const char*);
+ virtual int plug (QWidget*, int = -1);
+ KToolBar* toolBar ();
+
+public slots:
+ virtual void setChecked (bool);
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KToggleToolBarAction
+
+%End
+
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+class KWidgetAction : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KWidgetAction (QWidget*, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ QWidget* widget ();
+ void setAutoSized (bool);
+ virtual int plug (QWidget*, int = -1);
+ virtual void unplug (QWidget*);
+
+protected slots:
+ void slotToolbarDestroyed ();
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KWidgetAction
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KActionSeparator : KAction
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KActionSeparator (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionSeparator
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+class KActionCollection : QObject
+{
+%TypeHeaderCode
+#include <kaction.h>
+%End
+
+
+public:
+ KActionCollection (QWidget* /TransferThis/, const char* = 0, KInstance* = 0);
+ KActionCollection (QWidget*, QObject* /TransferThis/, const char* = 0, KInstance* = 0);
+ KActionCollection (const KActionCollection&);
+ virtual void setWidget (QWidget*);
+
+%If ( KDE_3_1_0 - )
+ void setAutoConnectShortcuts (bool);
+ bool isAutoConnectShortcuts ();
+ bool addDocCollection (KActionCollection*);
+%End
+
+ virtual KAccel* accel ();
+
+%If ( KDE_3_1_0 - )
+ KAccel* kaccel ();
+ KAccel* builderKAccel () const;
+%End
+
+ virtual uint count () const;
+ bool isEmpty () const;
+ virtual KAction* action (int) const;
+ virtual KAction* action (const char*, const char* = 0) const;
+ virtual QStringList groups () const;
+
+%If ( KDE_3_1_5 - )
+ virtual QValueList<KAction*> actions (const QString&) const;
+ virtual QValueList<KAction*> actions () const;
+%End
+
+ bool readShortcutSettings (const QString& = QString ::null , KConfigBase* = 0);
+ bool writeShortcutSettings (const QString& = QString ::null , KConfigBase* = 0) const;
+ void setInstance (KInstance*);
+ KInstance* instance () const;
+ void setXMLFile (const QString&);
+ const QString& xmlFile () const;
+ void setHighlightingEnabled (bool);
+ bool highlightingEnabled () const;
+ void connectHighlight (QWidget*, KAction*);
+ void disconnectHighlight (QWidget*, KAction*);
+
+signals:
+ void inserted (KAction*);
+ void removed (KAction*);
+ void actionHighlighted (KAction*);
+ void actionHighlighted (KAction*, bool);
+ void actionStatusText (const QString&);
+ void clearStatusText ();
+
+public:
+ KActionCollection (QObject* /TransferThis/ = 0, const char* = 0, KInstance* = 0);
+ void insert (KAction*);
+ void remove (KAction*);
+ KAction* take (KAction*);
+
+%If ( KDE_3_1_4 - )
+ KActionCollection operator + (const KActionCollection&) const;
+ KActionCollection& operator += (const KActionCollection&);
+%End
+
+
+public slots:
+ void clear ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionCollection
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+//ig typedef QValueList<KAction*> KActionPtrList;
+%End
+
+
+%MappedType QValueList<KAction*>
+//converts a Python list of KAction
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kaction.h>
+//typedef QValueList<KAction*> KActionPtrList;
+#include <sipkdeuiKAction.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KAction*> *cpplist = (QValueList<KAction*> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KAction*>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipConvertFromInstance (*it, sipClass_KAction, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KAction*> *cpplist = new QValueList<KAction*>;
+
+ PyObject *elem;
+ KAction* cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KAction *)sipForceConvertTo_KAction (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/kactionclasses.sip b/python/pykde/sip/kdeui/kactionclasses.sip
new file mode 100644
index 00000000..d89508b5
--- /dev/null
+++ b/python/pykde/sip/kdeui/kactionclasses.sip
@@ -0,0 +1,529 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KToggleAction : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KToggleAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToggleAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KToggleAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+ bool isChecked () const;
+ QString exclusiveGroup () const;
+ virtual void setExclusiveGroup (const QString&);
+
+%If ( KDE_3_3_0 - )
+ void setCheckedState (const KGuiItem&);
+ virtual QString toolTip () const;
+%End
+
+
+public slots:
+ virtual void setChecked (bool);
+
+protected slots:
+ virtual void slotActivated ();
+
+protected:
+ virtual void updateChecked (int);
+
+signals:
+ void toggled (bool);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToggleAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KRadioAction : KToggleAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KRadioAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KRadioAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KRadioAction (QObject* /TransferThis/ = 0, const char* = 0);
+
+protected:
+ virtual void slotActivated ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRadioAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KSelectAction : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KSelectAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KSelectAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KSelectAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+ virtual bool isEditable () const;
+ virtual QStringList items () const;
+ virtual void changeItem (int, const QString&);
+ virtual QString currentText () const;
+ virtual int currentItem () const;
+ virtual int comboWidth () const;
+
+%If ( KDE_3_5_0 - )
+ void setMaxComboViewCount (int);
+%End
+
+ QPopupMenu* popupMenu () const;
+ void setRemoveAmpersandsInCombo (bool);
+ bool removeAmpersandsInCombo () const;
+ void setMenuAccelsEnabled (bool);
+ bool menuAccelsEnabled () const;
+
+%If ( KDE_3_5_0 - )
+ virtual bool isShortcutConfigurable () const;
+%End
+
+
+public slots:
+ virtual void setCurrentItem (int);
+ virtual void setItems (const QStringList&);
+ virtual void clear ();
+ virtual void setEditable (bool);
+ virtual void setComboWidth (int);
+
+protected:
+ virtual void changeItem (int, int, const QString&);
+ QStringList comboItems () const;
+
+protected slots:
+ virtual void slotActivated (int);
+ virtual void slotActivated (const QString&);
+ virtual void slotActivated ();
+
+signals:
+ void activated (int);
+ void activated (const QString&);
+
+protected:
+ virtual void updateCurrentItem (int);
+ virtual void updateComboWidth (int);
+ virtual void updateItems (int);
+ virtual void updateClear (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSelectAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KListAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KListAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KListAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KListAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual QString currentText () const;
+ virtual int currentItem () const;
+
+public slots:
+ virtual void setCurrentItem (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KListAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KRecentFilesAction : KListAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KRecentFilesAction (const QString&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QIconSet&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QString&, const KShortcut&, QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0, uint = 10);
+ KRecentFilesAction (QObject* /TransferThis/ = 0, const char* = 0, uint = 10);
+ virtual int plug (QWidget*, int = -1);
+ uint maxItems () const;
+
+%If ( KDE_3_5_0 - )
+ virtual QStringList items () const;
+ QStringList completeItems () const;
+%End
+
+
+public slots:
+ void setMaxItems (uint);
+ void loadEntries (KConfig*, QString = QString ::null );
+ void saveEntries (KConfig*, QString = QString ::null );
+ void addURL (const KURL&);
+
+%If ( KDE_3_5_0 - )
+ void addURL (const KURL&, const QString&);
+%End
+
+ void removeURL (const KURL&);
+ void clearURLList ();
+
+signals:
+ void urlSelected (const KURL&);
+
+protected slots:
+ void itemSelected (const QString&);
+ void menuAboutToShow ();
+ void menuItemActivated (int);
+ void slotClicked ();
+ virtual void slotActivated (int);
+ virtual void slotActivated (const QString&);
+ virtual void slotActivated ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRecentFilesAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KFontAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KFontAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+
+%If ( KDE_3_3_0 - )
+ KFontAction (uint, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontAction (uint, const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+%End
+
+ KFontAction (QObject* /TransferThis/ = 0, const char* = 0);
+ QString font () const;
+ int plug (QWidget*, int = -1);
+
+public slots:
+ void setFont (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KFontSizeAction : KSelectAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KFontSizeAction (const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (const QString&, const QIconSet&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KFontSizeAction (const QString&, const QIconSet&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, const char* = 0);
+ KFontSizeAction (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int fontSize () const;
+
+public slots:
+ virtual void setFontSize (int);
+
+protected slots:
+ virtual void slotActivated (int);
+ virtual void slotActivated (const QString&);
+ virtual void slotActivated ();
+
+signals:
+ void fontSizeChanged (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontSizeAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KActionMenu : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KActionMenu (const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (const QString&, const QIconSet&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (const QString&, const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ KActionMenu (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual void insert (KAction*, int = -1);
+ virtual void remove (KAction*);
+ KPopupMenu* popupMenu () const;
+ void popup (const QPoint&);
+ bool delayed () const;
+ void setDelayed (bool);
+ bool stickyMenu () const;
+ void setStickyMenu (bool);
+ virtual int plug (QWidget*, int = -1);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionMenu
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KToolBarPopupAction : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KToolBarPopupAction (const QString&, const QString&, const KShortcut& = KShortcut (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToolBarPopupAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/ = 0, const char* = 0);
+ KToolBarPopupAction (const KGuiItem&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ virtual int plug (QWidget*, int = -1);
+ KPopupMenu* popupMenu () const;
+ bool delayed () const;
+ void setDelayed (bool);
+ bool stickyMenu () const;
+ void setStickyMenu (bool);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToolBarPopupAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KToggleToolBarAction : KToggleAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KToggleToolBarAction (const char*, const QString&, KActionCollection* /TransferThis/, const char*);
+ KToggleToolBarAction (KToolBar*, const QString&, KActionCollection* /TransferThis/, const char*);
+ virtual int plug (QWidget*, int = -1);
+ KToolBar* toolBar ();
+
+public slots:
+ virtual void setChecked (bool);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToggleToolBarAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KToggleFullScreenAction : KToggleAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KToggleFullScreenAction (const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/, QWidget*, const char*);
+ void setWindow (QWidget*);
+
+public slots:
+ virtual void setChecked (bool);
+
+protected:
+ virtual bool eventFilter (QObject*, QEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToggleFullScreenAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KWidgetAction : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KWidgetAction (QWidget*, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /TransferThis/, const char*);
+ QWidget* widget ();
+ void setAutoSized (bool);
+ virtual int plug (QWidget*, int = -1);
+ virtual void unplug (QWidget*);
+
+protected slots:
+ void slotToolbarDestroyed ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KWidgetAction
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KActionSeparator : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KActionSeparator (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual int plug (QWidget*, int = -1);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionSeparator
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KPasteTextAction : KAction
+{
+%TypeHeaderCode
+#include <kactionclasses.h>
+%End
+
+
+public:
+ KPasteTextAction (const QString&, const QString&, const KShortcut&, SIP_RXOBJ_CON, SIP_SLOT_CON (), QObject* /TransferThis/ = 0, const char* = 0);
+ void setMixedMode (bool);
+ virtual int plug (QWidget*, int = -1);
+
+protected slots:
+ void menuAboutToShow ();
+ void menuItemActivated (int);
+ virtual void slotActivated ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPasteTextAction
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kactioncollection.sip b/python/pykde/sip/kdeui/kactioncollection.sip
new file mode 100644
index 00000000..2707f511
--- /dev/null
+++ b/python/pykde/sip/kdeui/kactioncollection.sip
@@ -0,0 +1,125 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KActionCollection : QObject
+{
+%TypeHeaderCode
+#include <kactioncollection.h>
+%End
+
+
+public:
+ KActionCollection (QWidget* /TransferThis/, const char* = 0, KInstance* = 0);
+ KActionCollection (QWidget*, QObject* /TransferThis/, const char* = 0, KInstance* = 0);
+ KActionCollection (const KActionCollection&);
+ virtual void setWidget (QWidget*);
+ void setAutoConnectShortcuts (bool);
+ bool isAutoConnectShortcuts ();
+ bool addDocCollection (KActionCollection*);
+ virtual KAccel* accel ();
+ KAccel* kaccel ();
+ KAccel* builderKAccel () const;
+ virtual uint count () const;
+ bool isEmpty () const;
+ virtual KAction* action (int) const;
+ virtual KAction* action (const char*, const char* = 0) const;
+ virtual QStringList groups () const;
+ virtual KActionPtrList actions (const QString&) const;
+ virtual KActionPtrList actions () const;
+ bool readShortcutSettings (const QString& = QString ::null , KConfigBase* = 0);
+ bool writeShortcutSettings (const QString& = QString ::null , KConfigBase* = 0) const;
+ void setInstance (KInstance*);
+ KInstance* instance () const;
+ void setXMLFile (const QString&);
+ const QString& xmlFile () const;
+ void setHighlightingEnabled (bool);
+ bool highlightingEnabled () const;
+ void connectHighlight (QWidget*, KAction*);
+ void disconnectHighlight (QWidget*, KAction*);
+
+%If ( KDE_3_3_0 - )
+ const KXMLGUIClient* parentGUIClient () const;
+%End
+
+
+signals:
+ void inserted (KAction*);
+ void removed (KAction*);
+ void actionHighlighted (KAction*);
+ void actionHighlighted (KAction*, bool);
+ void actionStatusText (const QString&);
+ void clearStatusText ();
+
+public:
+ KActionCollection (QObject* /TransferThis/, const char* = 0, KInstance* = 0);
+
+public:
+ void insert (KAction*);
+ void remove (KAction*);
+ KAction* take (KAction*);
+ KActionCollection operator + (const KActionCollection&) const;
+ KActionCollection& operator += (const KActionCollection&);
+
+public slots:
+ void clear ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_3_0 - )
+
+private:
+ KActionCollection (const char*, const KXMLGUIClient* /TransferThis/);
+%End
+
+
+public:
+
+%If ( - KDE_3_2_2 )
+
+%If ( D_MANDRAKE )
+ virtual QValueList<KAction*> actions (const QString&) const;
+ virtual QValueList<KAction*> actions () const;
+%End
+
+%End
+
+
+}; // class KActionCollection
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+typedef QValueList<KAction*> KActionPtrList;
+%End
+
+
+%If ( - KDE_3_2_2 )
+//ig typedef QValueList<KAction*> KActionPtrList;
+%End
diff --git a/python/pykde/sip/kdeui/kactionselector.sip b/python/pykde/sip/kdeui/kactionselector.sip
new file mode 100644
index 00000000..26a42a12
--- /dev/null
+++ b/python/pykde/sip/kdeui/kactionselector.sip
@@ -0,0 +1,106 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KActionSelector : QWidget
+{
+%TypeHeaderCode
+#include <kactionselector.h>
+%End
+
+
+public:
+ KActionSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+ QListBox* availableListBox () const;
+ QListBox* selectedListBox () const;
+
+ enum MoveButton
+ {
+ ButtonAdd,
+ ButtonRemove,
+ ButtonUp,
+ ButtonDown
+ };
+
+
+ enum ButtonIconSize
+ {
+ SmallIcon,
+ Small,
+ Medium,
+ Large,
+ XLarge
+ };
+
+
+ enum InsertionPolicy
+ {
+ BelowCurrent,
+ Sorted,
+ AtTop,
+ AtBottom
+ };
+
+ bool moveOnDoubleClick () const;
+ void setMoveOnDoubleClick (bool);
+ bool keyboardEnabled () const;
+ void setKeyboardEnabled (bool);
+ QString availableLabel () const;
+ void setAvailableLabel (const QString&);
+ QString selectedLabel () const;
+ void setSelectedLabel (const QString&);
+ KActionSelector::ButtonIconSize buttonIconSize () const;
+ void setButtonIconSize (KActionSelector::ButtonIconSize);
+ KActionSelector::InsertionPolicy availableInsertionPolicy () const;
+ void setAvailableInsertionPolicy (KActionSelector::InsertionPolicy);
+ KActionSelector::InsertionPolicy selectedInsertionPolicy () const;
+ void setSelectedInsertionPolicy (KActionSelector::InsertionPolicy);
+ bool showUpDownButtons () const;
+ void setShowUpDownButtons (bool);
+ void setButtonIcon (const QString&, KActionSelector::MoveButton);
+ void setButtonIconSet (const QIconSet&, KActionSelector::MoveButton);
+ void setButtonTooltip (const QString&, KActionSelector::MoveButton);
+ void setButtonWhatsThis (const QString&, KActionSelector::MoveButton);
+ void setButtonsEnabled ();
+
+signals:
+ void added (QListBoxItem*);
+ void removed (QListBoxItem*);
+ void movedUp (QListBoxItem*);
+ void movedDown (QListBoxItem*);
+
+public slots:
+ void polish ();
+
+protected:
+ void keyPressEvent (QKeyEvent*);
+ bool eventFilter (QObject*, QEvent*);
+
+}; // class KActionSelector
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kactionshortcutlist.sip b/python/pykde/sip/kdeui/kactionshortcutlist.sip
new file mode 100644
index 00000000..2e744728
--- /dev/null
+++ b/python/pykde/sip/kdeui/kactionshortcutlist.sip
@@ -0,0 +1,106 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KActionShortcutList : KShortcutList
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+#include <kshortcut.h>
+#include <kaction.h>
+#include <kactionshortcutlist.h>
+%End
+
+
+public:
+ KActionShortcutList (KActionCollection*);
+ virtual uint count () const;
+ virtual QString name (uint) const;
+ virtual QString label (uint) const;
+ virtual QString whatsThis (uint) const;
+ virtual const KShortcut& shortcut (uint) const;
+ virtual const KShortcut& shortcutDefault (uint) const;
+ virtual bool isConfigurable (uint) const;
+ virtual bool setShortcut (uint, const KShortcut&);
+ virtual const KInstance* instance () const;
+ virtual QVariant getOther (Other, uint) const;
+ virtual bool setOther (Other, uint, QVariant);
+ virtual bool save () const;
+
+%If ( KDE_3_3_0 - )
+ const KAction* action (uint) const;
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KActionShortcutList
+
+
+class KActionPtrShortcutList : KShortcutList
+{
+%TypeHeaderCode
+#include <kconfigbase.h>
+#include <kshortcut.h>
+#include <kaction.h>
+#include <kactionshortcutlist.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ KActionPtrShortcutList (KActionPtrList&);
+%End
+
+ virtual uint count () const;
+ virtual QString name (uint) const;
+ virtual QString label (uint) const;
+ virtual QString whatsThis (uint) const;
+ virtual const KShortcut& shortcut (uint) const;
+ virtual const KShortcut& shortcutDefault (uint) const;
+ virtual bool isConfigurable (uint) const;
+ virtual bool setShortcut (uint, const KShortcut&);
+ virtual QVariant getOther (Other, uint) const;
+ virtual bool setOther (Other, uint, QVariant);
+ virtual bool save () const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ KActionPtrShortcutList (QValueList<KAction*>&);
+%End
+
+
+}; // class KActionPtrShortcutList
+
diff --git a/python/pykde/sip/kdeui/kactivelabel.sip b/python/pykde/sip/kdeui/kactivelabel.sip
new file mode 100644
index 00000000..1e0431b4
--- /dev/null
+++ b/python/pykde/sip/kdeui/kactivelabel.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KActiveLabel : QTextBrowser
+{
+%TypeHeaderCode
+#include <kactivelabel.h>
+%End
+
+
+public:
+ KActiveLabel (QWidget* /TransferThis/, const char* = 0);
+ KActiveLabel (const QString&, QWidget* /TransferThis/, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+ QSize minimumSizeHint () const;
+ QSize sizeHint () const;
+%End
+
+
+public slots:
+ virtual void openLink (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+ virtual void focusInEvent (QFocusEvent*);
+ virtual void focusOutEvent (QFocusEvent*);
+
+%If ( KDE_3_4_0 - )
+ virtual void keyPressEvent (QKeyEvent*);
+%End
+
+
+}; // class KActiveLabel
+
diff --git a/python/pykde/sip/kdeui/kalphapainter.sip b/python/pykde/sip/kdeui/kalphapainter.sip
new file mode 100644
index 00000000..ce34480a
--- /dev/null
+++ b/python/pykde/sip/kdeui/kalphapainter.sip
@@ -0,0 +1,41 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAlphaPainter
+{
+%TypeHeaderCode
+#include <kalphapainter.h>
+%End
+
+
+public:
+ static bool draw (QPainter*, const QImage&, QImage&, int, int, bool = 0, int = 0, int = 0);
+ static bool draw (QPainter*, const QImage&, const QPixmap&, int, int, bool = 0, int = 0, int = 0);
+ static bool draw (QPainter*, const QPixmap&, QImage&, int, int, bool = 0, int = 0, int = 0);
+ static bool draw (QPainter*, const QPixmap&, const QPixmap&, int, int, int = 0, int = 0);
+
+}; // class KAlphaPainter
+
diff --git a/python/pykde/sip/kdeui/kanimwidget.sip b/python/pykde/sip/kdeui/kanimwidget.sip
new file mode 100644
index 00000000..5d9a244f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kanimwidget.sip
@@ -0,0 +1,92 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAnimWidget : QFrame
+{
+%TypeHeaderCode
+#include <kanimwidget.h>
+%End
+
+
+public:
+ KAnimWidget (const QString&, int = 0, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setSize (int);
+
+%If ( KDE_3_4_0 - )
+ int size () const;
+ QString icons () const;
+%End
+
+ void setIcons (const QString&);
+
+public slots:
+
+%If ( KDE_3_4_0 - )
+ void start ();
+ void stop ();
+%End
+
+
+signals:
+ void clicked ();
+
+protected:
+ virtual void drawContents (QPainter*);
+ virtual void leaveEvent (QEvent*);
+ virtual void enterEvent (QEvent*);
+ virtual void hideEvent (QHideEvent*);
+ virtual void showEvent (QShowEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+
+%If ( KDE_3_1_0 - )
+ virtual void mouseReleaseEvent (QMouseEvent*);
+%End
+
+
+protected slots:
+ void slotTimerUpdate ();
+ void updateIcons ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_4_0 )
+ void start ();
+ void stop ();
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig KAnimWidget (QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+
+}; // class KAnimWidget
+
diff --git a/python/pykde/sip/kdeui/karrowbutton.sip b/python/pykde/sip/kdeui/karrowbutton.sip
new file mode 100644
index 00000000..89551923
--- /dev/null
+++ b/python/pykde/sip/kdeui/karrowbutton.sip
@@ -0,0 +1,55 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KArrowButton : QPushButton
+{
+%TypeHeaderCode
+#include <karrowbutton.h>
+%End
+
+
+public:
+ KArrowButton (QWidget* /TransferThis/ = 0, Qt::ArrowType = Qt ::UpArrow , const char* = 0);
+ virtual QSize sizeHint () const;
+
+%If ( KDE_3_4_0 - )
+ Qt::ArrowType arrowType () const;
+ int arrowTp () const;
+ void setArrowTp (int);
+%End
+
+
+public slots:
+ void setArrowType (Qt::ArrowType);
+
+protected:
+ virtual void drawButton (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KArrowButton
+
diff --git a/python/pykde/sip/kdeui/kauthicon.sip b/python/pykde/sip/kdeui/kauthicon.sip
new file mode 100644
index 00000000..56d3d3a7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kauthicon.sip
@@ -0,0 +1,101 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAuthIcon : QWidget
+{
+%TypeHeaderCode
+#include <kauthicon.h>
+%End
+
+
+public:
+ KAuthIcon (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual QSize sizeHint () const;
+ virtual bool status () const = 0;
+
+public slots:
+ virtual void updateStatus () = 0;
+
+signals:
+ void authChanged (bool);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KAuthIcon
+
+
+class KRootPermsIcon : KAuthIcon
+{
+%TypeHeaderCode
+#include <kauthicon.h>
+%End
+
+
+public:
+ KRootPermsIcon (QWidget* /TransferThis/ = 0, const char* = 0);
+ bool status () const;
+
+public slots:
+ void updateStatus ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRootPermsIcon
+
+
+class KWritePermsIcon : KAuthIcon
+{
+%TypeHeaderCode
+#include <kauthicon.h>
+%End
+
+
+public:
+ KWritePermsIcon (const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ bool status () const;
+ void setFileName (const QString&);
+
+%If ( KDE_3_4_0 - )
+ QString fileName () const;
+%End
+
+
+public slots:
+ void updateStatus ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KWritePermsIcon
+
diff --git a/python/pykde/sip/kdeui/kbugreport.sip b/python/pykde/sip/kdeui/kbugreport.sip
new file mode 100644
index 00000000..d8829190
--- /dev/null
+++ b/python/pykde/sip/kdeui/kbugreport.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KBugReport : KDialogBase
+{
+%TypeHeaderCode
+#include <kbugreport.h>
+%End
+
+
+public:
+ KBugReport (QWidget* /TransferThis/ = 0, bool = 1, const KAboutData* = 0);
+
+protected slots:
+ virtual void slotConfigureEmail ();
+ virtual void slotSetFrom ();
+ virtual void slotUrlClicked (const QString&);
+ virtual void slotOk ();
+ virtual void slotCancel ();
+ void appChanged (int);
+ void updateURL ();
+
+protected:
+ QString text ();
+ bool sendBugReport ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KBugReport
+
diff --git a/python/pykde/sip/kdeui/kbuttonbox.sip b/python/pykde/sip/kdeui/kbuttonbox.sip
new file mode 100644
index 00000000..87124f76
--- /dev/null
+++ b/python/pykde/sip/kdeui/kbuttonbox.sip
@@ -0,0 +1,59 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KButtonBox : QWidget
+{
+%TypeHeaderCode
+#include <kbuttonbox.h>
+%End
+
+
+public:
+ KButtonBox (QWidget* /TransferThis/, Orientation = Horizontal , int = 0, int = 6);
+ virtual QSize sizeHint () const;
+ virtual QSizePolicy sizePolicy () const;
+ virtual void resizeEvent (QResizeEvent*);
+ QPushButton* addButton (const QString&, bool = 0);
+ QPushButton* addButton (const QString&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 0);
+
+%If ( KDE_3_3_0 - )
+ QPushButton* addButton (const KGuiItem&, bool = 0);
+ QPushButton* addButton (const KGuiItem&, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 0);
+%End
+
+ void addStretch (int = 1);
+ void layout ();
+
+protected:
+ QSize bestButtonSize () const;
+ void placeButtons ();
+ QSize buttonSizeHint (QPushButton*) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KButtonBox
+
diff --git a/python/pykde/sip/kdeui/kcharselect.sip b/python/pykde/sip/kdeui/kcharselect.sip
new file mode 100644
index 00000000..22a14437
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcharselect.sip
@@ -0,0 +1,130 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCharSelectTable : QGridView
+{
+%TypeHeaderCode
+#include <kcharselect.h>
+%End
+
+
+public:
+ KCharSelectTable (QWidget* /TransferThis/, const char*, const QString&, const QChar&, int);
+ virtual QSize sizeHint () const;
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void setFont (const QString&);
+ virtual void setChar (const QChar&);
+ virtual void setTableNum (int);
+ virtual QChar chr ();
+
+protected:
+ virtual void paintCell (QPainter*, int, int);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+ void gotoLeft ();
+ void gotoRight ();
+ void gotoUp ();
+ void gotoDown ();
+
+signals:
+ void highlighted (const QChar&);
+ void highlighted ();
+ void activated (const QChar&);
+ void activated ();
+ void focusItemChanged ();
+ void focusItemChanged (const QChar&);
+ void tableUp ();
+ void tableDown ();
+ void doubleClicked ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCharSelectTable
+
+
+class KCharSelect : QVBox
+{
+%TypeHeaderCode
+#include <kcharselect.h>
+%End
+
+
+public:
+ KCharSelect (QWidget* /TransferThis/, const char*, const QString& = QString ::null , const QChar& = ' ', int = 0);
+ virtual QSize sizeHint () const;
+ virtual void setFont (const QString&);
+ virtual void setChar (const QChar&);
+ virtual void setTableNum (int);
+ virtual QChar chr () const;
+ virtual QString font () const;
+ virtual int tableNum () const;
+ virtual void enableFontCombo (bool);
+ virtual void enableTableSpinBox (bool);
+ virtual bool isFontComboEnabled () const;
+ virtual bool isTableSpinBoxEnabled () const;
+
+protected:
+ virtual void fillFontCombo ();
+ static void cleanupFontDatabase ();
+
+protected slots:
+ void fontSelected (const QString&);
+ void tableChanged (int);
+ void charHighlighted (const QChar&);
+ void charHighlighted ();
+ void charActivated (const QChar&);
+ void charActivated ();
+ void charFocusItemChanged ();
+ void charFocusItemChanged (const QChar&);
+ void charTableUp ();
+ void charTableDown ();
+ void slotDoubleClicked ();
+
+%If ( KDE_3_3_0 - )
+ void slotUnicodeEntered ();
+ void slotUpdateUnicode (const QChar&);
+%End
+
+
+signals:
+ void highlighted (const QChar&);
+ void highlighted ();
+ void activated (const QChar&);
+ void activated ();
+ void fontChanged (const QString&);
+ void focusItemChanged ();
+ void focusItemChanged (const QChar&);
+ void doubleClicked ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCharSelect
+
diff --git a/python/pykde/sip/kdeui/kcmenumngr.sip b/python/pykde/sip/kdeui/kcmenumngr.sip
new file mode 100644
index 00000000..b481fa2b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcmenumngr.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KContextMenuManager : QObject
+{
+%TypeHeaderCode
+#include <kcmenumngr.h>
+%End
+
+
+public:
+ static void insert (QWidget*, QPopupMenu*);
+ static bool showOnButtonPress ();
+
+private:
+ KContextMenuManager (QObject* /TransferThis/ = 0, const char* = 0);
+ ~KContextMenuManager ();
+
+}; // class KContextMenuManager
+
diff --git a/python/pykde/sip/kdeui/kcmodule.sip b/python/pykde/sip/kdeui/kcmodule.sip
new file mode 100644
index 00000000..e40776e1
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcmodule.sip
@@ -0,0 +1,183 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCModule : QWidget
+{
+%TypeHeaderCode
+#include <kcmodule.h>
+%End
+
+
+public:
+
+ enum Button
+ {
+ Help,
+ Default,
+ Apply,
+ Reset,
+ Cancel,
+ Ok,
+ SysDefault
+ };
+
+ KCModule (QWidget* /TransferThis/ = 0, const char* = 0, const QStringList& = QStringList ());
+ KCModule (KInstance*, QWidget* /TransferThis/ = 0, const QStringList& = QStringList ());
+ virtual void load ();
+ virtual void save ();
+ virtual void defaults ();
+ virtual void sysdefaults ();
+ virtual QString quickHelp () const;
+ virtual const KAboutData* aboutData () const;
+
+%If ( KDE_3_3_0 - )
+ void setAboutData (KAboutData*);
+%End
+
+ int buttons ();
+ QString rootOnlyMsg () const;
+ bool useRootOnlyMsg () const;
+ KInstance* instance () const;
+
+%If ( KDE_3_4_0 - )
+ const QPtrList<KConfigDialogManager>& configs () const;
+%End
+
+
+protected:
+
+%If ( KDE_3_3_0 - )
+ KConfigDialogManager* addConfig (KConfigSkeleton*, QWidget*);
+ void setQuickHelp (const QString&);
+%End
+
+
+signals:
+ void changed (bool);
+ void quickHelpChanged ();
+
+protected slots:
+
+%If ( KDE_3_3_0 - )
+ void changed ();
+
+%If ( KDE_3_4_0 - )
+ void widgetChanged ();
+%End
+
+%End
+
+
+protected:
+ void setButtons (int);
+ void setRootOnlyMsg (const QString&);
+ void setUseRootOnlyMsg (bool);
+
+%If ( KDE_3_5_0 - )
+ bool managedWidgetChangeState () const;
+ void unmanagedWidgetChangeState (bool);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCModule
+
+
+
+%If (KDE_3_3_0 - )
+%MappedType QPtrList<KConfigDialogManager>
+//converts a Python list of KConfigDialogManager
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KConfigDialogManager> *cpplist = (QPtrList<KConfigDialogManager> *)sipCpp;
+ KConfigDialogManager *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KConfigDialogManager, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KConfigDialogManager> *cpplist = new QPtrList<KConfigDialogManager>;
+
+ PyObject *elem;
+ KConfigDialogManager *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KConfigDialogManager *)sipForceConvertTo_KConfigDialogManager (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kdeui/kcolorbtn.sip b/python/pykde/sip/kdeui/kcolorbtn.sip
new file mode 100644
index 00000000..8cfdc339
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcolorbtn.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KColorButton : QPushButton
+{
+%TypeHeaderCode
+#include <kcolorbtn.h>
+%End
+
+
+public:
+ KColorButton (QWidget*/TransferThis/, const char* = 0);
+ KColorButton (const QColor&, QWidget*/TransferThis/, const char* = 0);
+ QColor color () const;
+ void setColor (const QColor&);
+
+signals:
+ void changed (const QColor&);
+
+protected slots:
+ void chooseColor ();
+
+protected:
+ virtual void drawButtonLabel (QPainter*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+
+}; // class KColorButton
+
diff --git a/python/pykde/sip/kdeui/kcolorcombo.sip b/python/pykde/sip/kdeui/kcolorcombo.sip
new file mode 100644
index 00000000..e3eb03ad
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcolorcombo.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KColorCombo : QComboBox
+{
+%TypeHeaderCode
+#include <kcolorcombo.h>
+%End
+
+
+public:
+ KColorCombo (QWidget* /TransferThis/, const char* = 0);
+ void setColor (const QColor&);
+ QColor color ();
+ void showEmptyList ();
+
+signals:
+ void activated (const QColor&);
+ void highlighted (const QColor&);
+
+protected:
+ virtual void resizeEvent (QResizeEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KColorCombo
+
diff --git a/python/pykde/sip/kdeui/kcolordialog.sip b/python/pykde/sip/kdeui/kcolordialog.sip
new file mode 100644
index 00000000..557bbd56
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcolordialog.sip
@@ -0,0 +1,237 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHSSelector : KXYSelector
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KHSSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+
+protected:
+ virtual void drawPalette (QPixmap*);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void drawContents (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KHSSelector
+
+
+class KValueSelector : KSelector
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KValueSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+ KValueSelector (Orientation, QWidget* /TransferThis/ = 0, const char* = 0);
+ int hue () const;
+ void setHue (int);
+ int saturation () const;
+ void setSaturation (int);
+ void updateContents ();
+
+protected:
+ virtual void drawPalette (QPixmap*);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void drawContents (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KValueSelector
+
+
+class KColor : QColor
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KColor ();
+ KColor (const KColor&);
+ KColor (const QColor&);
+
+%If ( KDE_3_1_4 - )
+ bool operator == (const KColor&) const;
+%End
+
+ void setHsv (int, int, int);
+ void setRgb (int, int, int);
+ void rgb (int*, int*, int*);
+ void hsv (int*, int*, int*);
+
+protected:
+
+}; // class KColor
+
+
+class KPaletteTable : QWidget
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KPaletteTable (QWidget* /TransferThis/, int = 210, int = 16);
+ void addToCustomColors (const QColor&);
+ void addToRecentColors (const QColor&);
+ QString palette ();
+
+public slots:
+ void setPalette (const QString&);
+
+signals:
+ void colorSelected (const QColor&, const QString&);
+ void colorDoubleClicked (const QColor&, const QString&);
+
+protected slots:
+ void slotColorCellSelected (int);
+ void slotColorCellDoubleClicked (int);
+ void slotColorTextSelected (const QString&);
+ void slotSetPalette (const QString&);
+ void slotShowNamedColorReadError ();
+
+protected:
+ void readNamedColor ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPaletteTable
+
+
+class KColorCells : QGridView
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KColorCells (QWidget* /TransferThis/, int, int);
+ void setColor (int, const QColor&);
+ QColor color (int) const;
+ int numCells () const;
+ void setShading (bool);
+ void setAcceptDrags (bool);
+ int getSelected () const;
+
+signals:
+ void colorSelected (int);
+ void colorDoubleClicked (int);
+
+protected:
+ virtual void paintCell (QPainter*, int, int);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+ int posToCell (const QPoint&, bool = 0);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KColorCells
+
+
+class KColorPatch : QFrame
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KColorPatch (QWidget* /TransferThis/);
+ void setColor (const QColor&);
+
+signals:
+ void colorChanged (const QColor&);
+
+protected:
+ virtual void drawContents (QPainter*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KColorPatch
+
+
+class KColorDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kcolordialog.h>
+%End
+
+
+public:
+ KColorDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ QColor color ();
+ static int getColor (QColor&, QWidget* /Transfer/ = 0);
+ static int getColor (QColor&, const QColor&, QWidget* /Transfer/ = 0);
+ static QColor grabColor (const QPoint&);
+ void setDefaultColor (const QColor&);
+ QColor defaultColor () const;
+
+public slots:
+ void setColor (const QColor&);
+
+signals:
+ void colorSelected (const QColor&);
+
+protected:
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual bool eventFilter (QObject*, QEvent*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KColorDialog
+
diff --git a/python/pykde/sip/kdeui/kcolordrag.sip b/python/pykde/sip/kdeui/kcolordrag.sip
new file mode 100644
index 00000000..e87814da
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcolordrag.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KColorDrag : QStoredDrag
+{
+%TypeHeaderCode
+#include <kcolordrag.h>
+%End
+
+
+public:
+ KColorDrag (QWidget* = 0, const char* = 0);
+ KColorDrag (const QColor&, QWidget* = 0, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ virtual const char* format (int) const;
+ virtual QByteArray encodedData (const char*) const;
+%End
+
+ void setColor (const QColor&);
+ static bool canDecode (QMimeSource*);
+ static bool decode (QMimeSource*, QColor&);
+ static KColorDrag* makeDrag (const QColor&, QWidget*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KColorDrag
+
diff --git a/python/pykde/sip/kdeui/kcombobox.sip b/python/pykde/sip/kdeui/kcombobox.sip
new file mode 100644
index 00000000..cd29f266
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcombobox.sip
@@ -0,0 +1,130 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KComboBox : QComboBox, KCompletionBase
+{
+%TypeHeaderCode
+#include <kcombobox.h>
+%End
+
+
+public:
+ KComboBox (QWidget* /TransferThis/ = 0, const char* = 0);
+ KComboBox (bool, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setEditURL (const KURL&);
+ void insertURL (const KURL&, int = -1);
+ void insertURL (const QPixmap&, const KURL&, int = -1);
+ void changeURL (const KURL&, int);
+ void changeURL (const QPixmap&, const KURL&, int);
+ int cursorPosition () const;
+ virtual void setAutoCompletion (bool);
+ bool autoCompletion () const;
+ virtual void setContextMenuEnabled (bool);
+ bool isContextMenuEnabled () const;
+ void setURLDropsEnabled (bool);
+ bool isURLDropsEnabled () const;
+ bool contains (const QString&) const;
+ void setTrapReturnKey (bool);
+ bool trapReturnKey () const;
+ virtual bool eventFilter (QObject*, QEvent*);
+ KCompletionBox* completionBox (bool);
+ virtual void setLineEdit (QLineEdit*);
+
+signals:
+ void returnPressed ();
+ void returnPressed (const QString&);
+ void completion (const QString&);
+ void substringCompletion (const QString&);
+ void textRotation (KCompletionBase::KeyBindingType);
+ void completionModeChanged (KGlobalSettings::Completion);
+ void aboutToShowContextMenu (QPopupMenu*);
+
+public slots:
+ void rotateText (KCompletionBase::KeyBindingType);
+ virtual void setCompletedText (const QString&);
+ void setCompletedItems (const QStringList&);
+ void setCurrentItem (const QString&, bool = 0, int = -1);
+ void setCurrentItem (int);
+
+protected slots:
+ virtual void itemSelected (QListBoxItem*);
+ virtual void makeCompletion (const QString&);
+
+protected:
+ virtual void setCompletedText (const QString&, bool);
+ virtual void create (WId = 0, bool = 1, bool = 1);
+
+%If ( KDE_3_1_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KComboBox
+
+
+class KHistoryCombo : KComboBox
+{
+%TypeHeaderCode
+#include <kcombobox.h>
+%End
+
+
+public:
+ KHistoryCombo (QWidget* /TransferThis/ = 0, const char* = 0);
+ KHistoryCombo (bool, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setHistoryItems (QStringList);
+ void setHistoryItems (QStringList, bool);
+ QStringList historyItems () const;
+ bool removeFromHistory (const QString&);
+ void setPixmapProvider (KPixmapProvider*);
+ KPixmapProvider* pixmapProvider () const;
+ void reset ();
+
+public slots:
+ void addToHistory (const QString&);
+ void clearHistory ();
+
+signals:
+ void cleared ();
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+
+%If ( KDE_3_1_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+%End
+
+ void insertItems (const QStringList&);
+ bool useCompletion ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KHistoryCombo
+
diff --git a/python/pykde/sip/kdeui/kcommand.sip b/python/pykde/sip/kdeui/kcommand.sip
new file mode 100644
index 00000000..8b3c24b7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcommand.sip
@@ -0,0 +1,131 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCommand
+{
+%TypeHeaderCode
+#include <kcommand.h>
+%End
+
+
+protected:
+ KCommand ();
+
+public:
+ virtual void execute () = 0;
+ virtual void unexecute () = 0;
+ virtual QString name () const = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCommand
+
+
+class KNamedCommand : KCommand
+{
+%TypeHeaderCode
+#include <kcommand.h>
+%End
+
+
+protected:
+ KNamedCommand (const QString&);
+
+public:
+ virtual QString name () const;
+ void setName (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KNamedCommand
+
+
+class KMacroCommand : KNamedCommand
+{
+%TypeHeaderCode
+#include <kcommand.h>
+%End
+
+
+public:
+ KMacroCommand (const QString&);
+ void addCommand (KCommand*);
+ virtual void execute ();
+ virtual void unexecute ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KMacroCommand
+
+
+class KCommandHistory : QObject
+{
+%TypeHeaderCode
+#include <kcommand.h>
+%End
+
+
+public:
+ KCommandHistory ();
+ KCommandHistory (KActionCollection*, bool = 1);
+ void clear ();
+ void addCommand (KCommand*, bool = 1);
+ int undoLimit () const;
+ void setUndoLimit (int);
+ int redoLimit () const;
+ void setRedoLimit (int);
+ void updateActions ();
+
+public slots:
+ virtual void undo ();
+ virtual void redo ();
+ virtual void documentSaved ();
+
+protected slots:
+ void slotUndoAboutToShow ();
+ void slotUndoActivated (int);
+ void slotRedoAboutToShow ();
+ void slotRedoActivated (int);
+
+signals:
+ void commandExecuted ();
+
+%If ( KDE_3_5_0 - )
+ void commandExecuted (KCommand*);
+%End
+
+ void documentRestored ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCommandHistory
+
diff --git a/python/pykde/sip/kdeui/kcompletionbox.sip b/python/pykde/sip/kdeui/kcompletionbox.sip
new file mode 100644
index 00000000..e28dda62
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcompletionbox.sip
@@ -0,0 +1,86 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCompletionBox : KListBox
+{
+%TypeHeaderCode
+#include <kcompletionbox.h>
+%End
+
+
+public:
+ KCompletionBox (QWidget* /TransferThis/, const char* = 0);
+ virtual QSize sizeHint () const;
+
+%If ( KDE_3_4_3 - )
+ bool activateOnSelect () const;
+%End
+
+
+public slots:
+ QStringList items () const;
+ void insertItems (const QStringList&, int = -1);
+ void setItems (const QStringList&);
+ virtual void popup ();
+ void setTabHandling (bool);
+ bool isTabHandling () const;
+ void setCancelledText (const QString&);
+ QString cancelledText () const;
+
+%If ( KDE_3_4_3 - )
+ void setActivateOnSelect (bool);
+%End
+
+ void down ();
+ void up ();
+ void pageDown ();
+ void pageUp ();
+ void home ();
+ void end ();
+ virtual void show ();
+ virtual void hide ();
+
+signals:
+ void activated (const QString&);
+ void userCancelled (const QString&);
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ QRect calculateGeometry () const;
+ void sizeAndPosition ();
+%End
+
+ virtual bool eventFilter (QObject*, QEvent*);
+
+protected slots:
+ virtual void slotActivated (QListBoxItem*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCompletionBox
+
diff --git a/python/pykde/sip/kdeui/kconfigdialog.sip b/python/pykde/sip/kdeui/kconfigdialog.sip
new file mode 100644
index 00000000..6744869b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kconfigdialog.sip
@@ -0,0 +1,69 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KConfigDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kconfigdialog.h>
+%End
+
+
+signals:
+ void widgetModified ();
+ void settingsChanged ();
+ void settingsChanged (const char*);
+
+public:
+ KConfigDialog (QWidget* /TransferThis/, const char*, KConfigSkeleton*, KDialogBase::DialogType = KDialogBase ::IconList , int = KDialogBase ::Default |KDialogBase ::Ok |KDialogBase ::Apply |KDialogBase ::Cancel |KDialogBase ::Help , KDialogBase::ButtonCode = Ok , bool = 0);
+ void addPage (QWidget*, const QString&, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_3_0 - )
+ void addPage (QWidget*, KConfigSkeleton*, const QString&, const QString&, const QString& = QString ::null );
+%End
+
+ static KConfigDialog* exists (const char*);
+ static bool showDialog (const char*);
+ virtual void show ();
+
+protected slots:
+ virtual void updateSettings ();
+ virtual void updateWidgets ();
+ virtual void updateWidgetsDefault ();
+
+protected:
+ virtual bool hasChanged ();
+ virtual bool isDefault ();
+
+protected slots:
+ void updateButtons ();
+ void settingsChangedSlot ();
+
+}; // class KConfigDialog
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kcontainer.sip b/python/pykde/sip/kdeui/kcontainer.sip
new file mode 100644
index 00000000..831fad11
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcontainer.sip
@@ -0,0 +1,75 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KContainerLayout : QFrame
+{
+%TypeHeaderCode
+#include <kcontainer.h>
+%End
+
+
+public:
+
+ enum
+ {
+ Horizontal = 0,
+ Vertical
+ };
+
+ KContainerLayout (QWidget*/TransferThis/ = 0, const char* = 0, int = KContainerLayout::Horizontal, bool = 0, int = 5, WFlags = 0, bool = 1);
+ int getNumberOfWidgets () const;
+ int packStart (QWidget*, bool = 0, bool = 0, int = 1);
+ int packEnd (QWidget*, bool = 0, bool = 0, int = 1);
+ void setOrientation (int);
+ void setHomogeneos (bool);
+ void setSpacing (int);
+ void setStartOffset (int);
+ void setEndOffset (int);
+ int orientation () const;
+ bool homogeneos () const;
+ int spacing () const;
+ int startOffset () const;
+ int endOffset () const;
+ void sizeToFit ();
+
+protected:
+
+//ig class KContainerLayoutItem;
+
+ void recalcLayout ();
+//ig QSize widgetSize (KContainerLayout::KContainerLayoutItem*);
+ void repositionWidgets ();
+ int numberOfWidgetsWithExpand ();
+ void calculateSizeHint ();
+ QSize sizeOfLargerWidget ();
+//ig QSize idealSizeOfWidget (KContainerLayout::KContainerLayoutItem*);
+ bool horizontal () const;
+ virtual void resizeEvent (QResizeEvent*);
+ virtual bool eventFilter (QObject*, QEvent*);
+ virtual QSize sizeHint () const;
+
+}; // class KContainerLayout
+
diff --git a/python/pykde/sip/kdeui/kcursor.sip b/python/pykde/sip/kdeui/kcursor.sip
new file mode 100644
index 00000000..2a25da45
--- /dev/null
+++ b/python/pykde/sip/kdeui/kcursor.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCursor : Qt
+{
+%TypeHeaderCode
+#include <kcursor.h>
+%End
+
+
+public:
+ KCursor ();
+ static QCursor handCursor ();
+ static QCursor workingCursor ();
+ static QCursor arrowCursor ();
+ static QCursor upArrowCursor ();
+ static QCursor crossCursor ();
+ static QCursor waitCursor ();
+ static QCursor ibeamCursor ();
+ static QCursor sizeVerCursor ();
+ static QCursor sizeHorCursor ();
+ static QCursor sizeBDiagCursor ();
+ static QCursor sizeFDiagCursor ();
+ static QCursor sizeAllCursor ();
+ static QCursor blankCursor ();
+ static QCursor whatsThisCursor ();
+ static void setAutoHideCursor (QWidget*, bool);
+ static void setAutoHideCursor (QWidget*, bool, bool);
+ static void setHideCursorDelay (int);
+ static int hideCursorDelay ();
+ static void autoHideEventFilter (QObject*, QEvent*);
+
+}; // class KCursor
+
diff --git a/python/pykde/sip/kdeui/kdatepicker.sip b/python/pykde/sip/kdeui/kdatepicker.sip
new file mode 100644
index 00000000..b21e699c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdatepicker.sip
@@ -0,0 +1,108 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDatePicker : QFrame
+{
+%TypeHeaderCode
+#include <kdatepicker.h>
+%End
+
+
+public:
+ KDatePicker (QWidget* /TransferThis/ = 0, QDate = QDate ::currentDate (), const char* = 0);
+
+%If ( KDE_3_1_0 - )
+ KDatePicker (QWidget* /TransferThis/, QDate, const char*, WFlags);
+ KDatePicker (QWidget* /TransferThis/, const char*);
+%End
+
+ QSize sizeHint () const;
+ bool setDate (const QDate&);
+ const QDate& getDate () const;
+ const QDate& date () const;
+ void setEnabled (bool);
+
+%If ( KDE_3_2_0 - )
+ KDateTable* dateTable () const;
+%End
+
+ void setFontSize (int);
+ int fontSize () const;
+
+%If ( KDE_3_1_0 - )
+ void setCloseButton (bool);
+ bool hasCloseButton () const;
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ virtual bool eventFilter (QObject*, QEvent*);
+ virtual void resizeEvent (QResizeEvent*);
+%End
+
+
+protected slots:
+ void dateChangedSlot (QDate);
+ void tableClickedSlot ();
+ void monthForwardClicked ();
+ void monthBackwardClicked ();
+ void yearForwardClicked ();
+ void yearBackwardClicked ();
+
+%If ( KDE_3_1_0 - )
+ void selectWeekClicked ();
+%End
+
+ void selectMonthClicked ();
+ void selectYearClicked ();
+ void lineEnterPressed ();
+
+%If ( KDE_3_2_0 - )
+ void todayButtonClicked ();
+ void weekSelected (int);
+%End
+
+
+signals:
+ void dateChanged (QDate);
+ void dateSelected (QDate);
+ void dateEntered (QDate);
+ void tableClicked ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ void resizeEvent (QResizeEvent*);
+%End
+
+
+}; // class KDatePicker
+
diff --git a/python/pykde/sip/kdeui/kdatepik.sip b/python/pykde/sip/kdeui/kdatepik.sip
new file mode 100644
index 00000000..039165e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdatepik.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDatePicker : QFrame
+{
+%TypeHeaderCode
+#include <kdatepik.h>
+%End
+
+
+public:
+ KDatePicker (QWidget*/TransferThis/ = 0, QDate = QDate::currentDate(), const char* = 0);
+ QSize sizeHint () const;
+ bool setDate (const QDate&);
+ const QDate& getDate ();
+ void setEnabled (bool);
+ void setFontSize (int);
+ int fontSize () const;
+
+protected:
+ void resizeEvent (QResizeEvent*);
+
+protected slots:
+ void dateChangedSlot (QDate);
+ void tableClickedSlot ();
+ void monthForwardClicked ();
+ void monthBackwardClicked ();
+ void yearForwardClicked ();
+ void yearBackwardClicked ();
+ void selectMonthClicked ();
+ void selectYearClicked ();
+ void lineEnterPressed ();
+
+signals:
+ void dateChanged (QDate);
+ void dateSelected (QDate);
+ void dateEntered (QDate);
+ void tableClicked ();
+
+}; // class KDatePicker
+
diff --git a/python/pykde/sip/kdeui/kdatetbl.sip b/python/pykde/sip/kdeui/kdatetbl.sip
new file mode 100644
index 00000000..668fb7ea
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdatetbl.sip
@@ -0,0 +1,303 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KDateInternalWeekSelector : QLineEdit
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+protected:
+
+public slots:
+ void weekEnteredSlot ();
+
+%If ( KDE_3_2_0 - )
+ void setMaxWeek (int);
+%End
+
+
+signals:
+ void closeMe (int);
+
+public:
+
+%If ( KDE_3_2_0 - )
+ KDateInternalWeekSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ int getWeek ();
+ void setWeek (int);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ KDateInternalWeekSelector (int, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+
+}; // class KDateInternalWeekSelector
+
+%End
+
+
+class KDateInternalMonthPicker : QGridView
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+protected:
+
+signals:
+ void closeMe (int);
+
+public:
+
+%If ( KDE_3_2_0 - )
+ KDateInternalMonthPicker (const QDate&, QWidget* /TransferThis/, const char* = 0);
+%End
+
+ QSize sizeHint () const;
+ int getResult () const;
+
+protected:
+ void setupPainter (QPainter*);
+
+%If ( KDE_3_0_1 - )
+ virtual void viewportResizeEvent (QResizeEvent*);
+%End
+
+ virtual void paintCell (QPainter*, int, int);
+
+%If ( KDE_3_0_1 - )
+ virtual void contentsMousePressEvent (QMouseEvent*);
+ virtual void contentsMouseMoveEvent (QMouseEvent*);
+ virtual void contentsMouseReleaseEvent (QMouseEvent*);
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+ KDateInternalMonthPicker (int, QWidget* /TransferThis/, const char* = 0);
+%End
+
+
+protected:
+
+%If ( - KDE_3_0_1 )
+ void viewportResizeEvent (QResizeEvent*);
+ void contentsMousePressEvent (QMouseEvent*);
+ void contentsMouseMoveEvent (QMouseEvent*);
+ void contentsMouseReleaseEvent (QMouseEvent*);
+%End
+
+
+}; // class KDateInternalMonthPicker
+
+
+class KDateInternalYearSelector : QLineEdit
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+protected:
+
+public slots:
+ void yearEnteredSlot ();
+
+signals:
+ void closeMe (int);
+
+public:
+
+%If ( KDE_3_2_0 - )
+ KDateInternalYearSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ int getYear ();
+ void setYear (int);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ KDateInternalYearSelector (int, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+
+}; // class KDateInternalYearSelector
+
+
+class KPopupFrame : QFrame
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+protected:
+
+%If ( KDE_3_0_1 - )
+ virtual void keyPressEvent (QKeyEvent*);
+%End
+
+
+public slots:
+ void close (int);
+
+%If ( KDE_3_5_0 - )
+ void hide ();
+%End
+
+
+public:
+ KPopupFrame (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setMainWidget (QWidget*);
+
+%If ( KDE_3_0_1 - )
+ virtual void resizeEvent (QResizeEvent*);
+%End
+
+ void popup (const QPoint&);
+ int exec (QPoint) /PyName=exec_/;
+ int exec (int, int) /PyName=exec_/;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_0_1 )
+ void keyPressEvent (QKeyEvent*);
+%End
+
+
+public:
+
+%If ( - KDE_3_0_1 )
+ void resizeEvent (QResizeEvent*);
+%End
+
+
+}; // class KPopupFrame
+
+
+class KDateValidator : QValidator
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+public:
+ KDateValidator (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual State validate (QString&, int&) const;
+ virtual void fixup (QString&) const;
+ State date (const QString&, QDate&) const;
+
+}; // class KDateValidator
+
+
+class KDateTable : QGridView
+{
+%TypeHeaderCode
+#include <kdatetbl.h>
+%End
+
+
+public:
+ KDateTable (QWidget* /TransferThis/ = 0, QDate = QDate ::currentDate (), const char* = 0, WFlags = 0);
+
+%If ( KDE_3_4_0 - )
+ KDateTable (QWidget* /TransferThis/, const char*, WFlags = 0);
+%End
+
+ virtual QSize sizeHint () const;
+ void setFontSize (int);
+ bool setDate (const QDate&);
+ const QDate& getDate () const;
+
+%If ( KDE_3_2_0 - )
+ void setPopupMenuEnabled (bool);
+ bool popupMenuEnabled () const;
+
+ enum BackgroundMode
+ {
+ NoBgMode,
+ RectangleMode,
+ CircleMode
+ };
+
+ void setCustomDatePainting (const QDate&, const QColor&, BackgroundMode = NoBgMode , const QColor& = QColor ());
+ void unsetCustomDatePainting (const QDate&);
+%End
+
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ int posFromDate (const QDate&);
+ QDate dateFromPos (int);
+%End
+
+ virtual void paintCell (QPainter*, int, int);
+ virtual void viewportResizeEvent (QResizeEvent*);
+ virtual void contentsMousePressEvent (QMouseEvent*);
+
+%If ( KDE_3_1_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+%End
+
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void focusInEvent (QFocusEvent*);
+ virtual void focusOutEvent (QFocusEvent*);
+
+signals:
+ void dateChanged (QDate);
+
+%If ( KDE_3_2_0 - )
+ void dateChanged (const QDate&, const QDate&);
+%End
+
+ void tableClicked ();
+
+%If ( KDE_3_2_0 - )
+ void aboutToShowContextMenu (KPopupMenu*, const QDate&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDateTable
+
diff --git a/python/pykde/sip/kdeui/kdatetimewidget.sip b/python/pykde/sip/kdeui/kdatetimewidget.sip
new file mode 100644
index 00000000..844824be
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdatetimewidget.sip
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KDateTimeWidget : QWidget
+{
+%TypeHeaderCode
+#include <kdatetimewidget.h>
+%End
+
+
+public:
+ KDateTimeWidget (QWidget* /TransferThis/ = 0, const char* = 0);
+ KDateTimeWidget (const QDateTime&, QWidget* /TransferThis/ = 0, const char* = 0);
+ QDateTime dateTime () const;
+
+public slots:
+ void setDateTime (const QDateTime&);
+
+signals:
+ void valueChanged (const QDateTime&);
+
+}; // class KDateTimeWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kdatewidget.sip b/python/pykde/sip/kdeui/kdatewidget.sip
new file mode 100644
index 00000000..d653ae79
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdatewidget.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDateWidget : QWidget
+{
+%TypeHeaderCode
+#include <kdatewidget.h>
+%End
+
+
+public:
+ KDateWidget (QWidget* /TransferThis/, const char* = 0);
+ KDateWidget (QDate, QWidget* /TransferThis/, const char* = 0);
+ QDate date () const;
+ void setDate (QDate);
+
+signals:
+ void changed (QDate);
+
+protected:
+ void init ();
+
+%If ( KDE_3_2_0 - )
+ void init (const QDate&);
+%End
+
+
+protected slots:
+ void slotDateChanged ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDateWidget
+
diff --git a/python/pykde/sip/kdeui/kdbtn.sip b/python/pykde/sip/kdeui/kdbtn.sip
new file mode 100644
index 00000000..951fc549
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdbtn.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirectionButton : QButton
+{
+%TypeHeaderCode
+#include <kdbtn.h>
+%End
+
+
+public:
+ KDirectionButton (QWidget*/TransferThis/ = 0, const char* = 0);
+ KDirectionButton (ArrowType, QWidget*/TransferThis/ = 0, const char* = 0);
+ void setDirection (ArrowType);
+ ArrowType direction ();
+
+protected:
+ virtual void drawButton (QPainter*);
+
+}; // class KDirectionButton
+
+
+class KTabButton : KDirectionButton
+{
+%TypeHeaderCode
+#include <kdbtn.h>
+%End
+
+
+public:
+ KTabButton (QWidget*/TransferThis/ = 0, const char* = 0);
+ KTabButton (ArrowType, QWidget*/TransferThis/ = 0, const char* = 0);
+
+protected:
+ virtual void drawButton (QPainter*);
+
+}; // class KTabButton
+
diff --git a/python/pykde/sip/kdeui/kdcopactionproxy.sip b/python/pykde/sip/kdeui/kdcopactionproxy.sip
new file mode 100644
index 00000000..6938d498
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdcopactionproxy.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDCOPActionProxy : DCOPObjectProxy
+{
+%TypeHeaderCode
+#include <kdcopactionproxy.h>
+%End
+
+
+public:
+ KDCOPActionProxy (KActionCollection*, DCOPObject* /TransferThis/);
+ KDCOPActionProxy (DCOPObject* /TransferThis/);
+ virtual QValueList<KAction*> actions () const;
+ virtual KAction* action (const char*) const;
+ virtual QCString actionObjectId (const QCString&) const;
+ virtual QMap<QCString,DCOPRef> actionMap (const QCString& = QCString ()) const;
+ virtual bool process (const QCString&, const QCString&, const QByteArray&, QCString&, QByteArray&);
+ virtual bool processAction (const QCString&, const QCString&, const QByteArray&, QCString&, QByteArray&, KAction*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDCOPActionProxy
+
diff --git a/python/pykde/sip/kdeui/kdeui-kde310.diff b/python/pykde/sip/kdeui/kdeui-kde310.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde310.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde311.diff b/python/pykde/sip/kdeui/kdeui-kde311.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde311.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde312.diff b/python/pykde/sip/kdeui/kdeui-kde312.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde312.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde313.diff b/python/pykde/sip/kdeui/kdeui-kde313.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde313.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde314.diff b/python/pykde/sip/kdeui/kdeui-kde314.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde314.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde315.diff b/python/pykde/sip/kdeui/kdeui-kde315.diff
new file mode 100644
index 00000000..bde4a8e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde315.diff
@@ -0,0 +1,4 @@
++ %Include kaccelmanager.sip
++ %Include kpassivepopup.sip
++ %Include ktextedit.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde320.diff b/python/pykde/sip/kdeui/kdeui-kde320.diff
new file mode 100644
index 00000000..00669748
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde320.diff
@@ -0,0 +1,13 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde321.diff b/python/pykde/sip/kdeui/kdeui-kde321.diff
new file mode 100644
index 00000000..00669748
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde321.diff
@@ -0,0 +1,13 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde322.diff b/python/pykde/sip/kdeui/kdeui-kde322.diff
new file mode 100644
index 00000000..00669748
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde322.diff
@@ -0,0 +1,13 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde323.diff b/python/pykde/sip/kdeui/kdeui-kde323.diff
new file mode 100644
index 00000000..2aab9482
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde323.diff
@@ -0,0 +1,14 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include kpassivepopup.sip
+//+ %Include ksharedpixmap.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde330.diff b/python/pykde/sip/kdeui/kdeui-kde330.diff
new file mode 100644
index 00000000..6be7d896
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde330.diff
@@ -0,0 +1,16 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde331.diff b/python/pykde/sip/kdeui/kdeui-kde331.diff
new file mode 100644
index 00000000..6be7d896
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde331.diff
@@ -0,0 +1,16 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde332.diff b/python/pykde/sip/kdeui/kdeui-kde332.diff
new file mode 100644
index 00000000..6be7d896
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde332.diff
@@ -0,0 +1,16 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde340.diff b/python/pykde/sip/kdeui/kdeui-kde340.diff
new file mode 100644
index 00000000..cdefe26b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde340.diff
@@ -0,0 +1,21 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde341.diff b/python/pykde/sip/kdeui/kdeui-kde341.diff
new file mode 100644
index 00000000..cdefe26b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde341.diff
@@ -0,0 +1,21 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde342.diff b/python/pykde/sip/kdeui/kdeui-kde342.diff
new file mode 100644
index 00000000..cdefe26b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde342.diff
@@ -0,0 +1,21 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde343.diff b/python/pykde/sip/kdeui/kdeui-kde343.diff
new file mode 100644
index 00000000..cdefe26b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde343.diff
@@ -0,0 +1,21 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde350.diff b/python/pykde/sip/kdeui/kdeui-kde350.diff
new file mode 100644
index 00000000..965e2c3c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde350.diff
@@ -0,0 +1,23 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kscrollview.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktimezonewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde351.diff b/python/pykde/sip/kdeui/kdeui-kde351.diff
new file mode 100644
index 00000000..965e2c3c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde351.diff
@@ -0,0 +1,23 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kscrollview.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktimezonewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde352.diff b/python/pykde/sip/kdeui/kdeui-kde352.diff
new file mode 100644
index 00000000..965e2c3c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde352.diff
@@ -0,0 +1,23 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kscrollview.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktimezonewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeui-kde353.diff b/python/pykde/sip/kdeui/kdeui-kde353.diff
new file mode 100644
index 00000000..965e2c3c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeui-kde353.diff
@@ -0,0 +1,23 @@
++ %Include kactionclasses.sip
++ %Include kactioncollection.sip
++ %Include kactionselector.sip
++ %Include kconfigdialog.sip
++ %Include kdatetimewidget.sip
++ %Include kfontrequester.sip
++ %Include kiconviewsearchline.sip
++ %Include kinputdialog.sip
++ %Include klanguagebutton.sip
++ %Include klistviewsearchline.sip
++ %Include kpassivepopup.sip
++ %Include kpixmapregionselectordialog.sip
++ %Include kpixmapregionselectorwidget.sip
++ %Include kscrollview.sip
++ %Include kshortcutdialog.sip
++ %Include ksplashscreen.sip
++ %Include ktabbar.sip
++ %Include ktabwidget.sip
++ %Include ktextedit.sip
++ %Include ktimewidget.sip
++ %Include ktimezonewidget.sip
++ %Include ktoolbarlabelaction.sip
++ %Include kwindowinfo.sip
diff --git a/python/pykde/sip/kdeui/kdeuimod.sip.in b/python/pykde/sip/kdeui/kdeuimod.sip.in
new file mode 100644
index 00000000..9129643f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdeuimod.sip.in
@@ -0,0 +1,123 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kdeui
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+
+%Include kaboutapplication.sip
+%Include kaboutdialog.sip
+%Include kaboutkde.sip
+%Include kaction.sip
+%Include kactionshortcutlist.sip
+%Include kactivelabel.sip
+%Include kanimwidget.sip
+%Include karrowbutton.sip
+%Include kauthicon.sip
+%Include kbugreport.sip
+%Include kbuttonbox.sip
+%Include kcharselect.sip
+%Include kcmenumngr.sip
+%Include kcmodule.sip
+%Include kcolorbtn.sip
+%Include kcolorcombo.sip
+%Include kcolordialog.sip
+%Include kcolordrag.sip
+%Include kcombobox.sip
+%Include kcommand.sip
+%Include kcompletionbox.sip
+%Include kcursor.sip
+%Include kdatepicker.sip
+%Include kdatetbl.sip
+%Include kdatewidget.sip
+%Include kdcopactionproxy.sip
+%Include kdialog.sip
+%Include kdialogbase.sip
+%Include kdockwidget.sip
+%Include kdualcolorbutton.sip
+%Include keditcl.sip
+%Include keditlistbox.sip
+%Include kedittoolbar.sip
+%Include kfontcombo.sip
+%Include kfontdialog.sip
+%Include kguiitem.sip
+%Include khelpmenu.sip
+%Include kiconview.sip
+%Include kjanuswidget.sip
+%Include kkeybutton.sip
+%Include kkeydialog.sip
+%Include kled.sip
+%Include klineedit.sip
+%Include klineeditdlg.sip
+%Include klistbox.sip
+%Include klistview.sip
+%Include kmainwindow.sip
+%Include kmainwindowiface.sip
+%Include kmenubar.sip
+%Include kmessagebox.sip
+%Include knuminput.sip
+%Include knumvalidator.sip
+%Include kpanelapplet.sip
+%Include kpanelappmenu.sip
+%Include kpanelextension.sip
+%Include kpanelmenu.sip
+%Include kpassdlg.sip
+%Include kpixmapio.sip
+%Include kpopupmenu.sip
+%Include kprogress.sip
+%Include kpushbutton.sip
+%Include krestrictedline.sip
+%Include krootpixmap.sip
+%Include kruler.sip
+%Include kselect.sip
+%Include kseparator.sip
+%Include ksqueezedtextlabel.sip
+%Include kstatusbar.sip
+%Include kstdaction.sip
+%Include kstdguiitem.sip
+%Include kstringvalidator.sip
+%Include ksystemtray.sip
+%Include ktabctl.sip
+%Include ktextbrowser.sip
+%Include ktip.sip
+%Include ktoolbar.sip
+%Include ktoolbarbutton.sip
+%Include ktoolbarradiogroup.sip
+%Include kurllabel.sip
+%Include kwindowlistmenu.sip
+%Include kwizard.sip
+%Include kwordwrap.sip
+%Include kxmlguibuilder.sip
+%Include kxmlguiclient.sip
+%Include kxmlguifactory.sip
+%Include qxembed.sip
+@mark@
diff --git a/python/pykde/sip/kdeui/kdialog.sip b/python/pykde/sip/kdeui/kdialog.sip
new file mode 100644
index 00000000..267a396f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdialog.sip
@@ -0,0 +1,90 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDialog : QDialog
+{
+%TypeHeaderCode
+#include <kdialog.h>
+%End
+
+
+public:
+ KDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, WFlags = 0);
+ static int marginHint ();
+ static int spacingHint ();
+ static void resizeLayout (QWidget*, int, int);
+ static void resizeLayout (QLayoutItem*, int, int);
+
+%If ( KDE_3_1_0 - )
+ static void centerOnScreen (QWidget*, int = -1);
+
+%If ( KDE_3_2_0 - )
+ static bool avoidArea (QWidget*, const QRect&, int = -1);
+%End
+
+%End
+
+
+public slots:
+ virtual void polish ();
+ virtual void setCaption (const QString&);
+ virtual void setPlainCaption (const QString&);
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+
+signals:
+ void layoutHintChanged ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+//force
+
+private:
+ KDialog (const KDialog&);
+//end
+
+}; // class KDialog
+
+
+class KDialogQueue : QObject
+{
+%TypeHeaderCode
+#include <kdialog.h>
+%End
+
+
+public:
+ static void queueDialog (QDialog*);
+
+protected:
+ KDialogQueue ();
+ static KDialogQueue* self ();
+
+protected:
+
+}; // class KDialogQueue
+
diff --git a/python/pykde/sip/kdeui/kdialogbase.sip b/python/pykde/sip/kdeui/kdialogbase.sip
new file mode 100644
index 00000000..618401c7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdialogbase.sip
@@ -0,0 +1,283 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDialogBase : KDialog
+{
+%TypeHeaderCode
+#include <kdialogbase.h>
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - )
+
+ enum ButtonCode
+ {
+ Help,
+ Default,
+ Ok,
+ Apply,
+ Try,
+ Cancel,
+ Close,
+ User1,
+ User2,
+ User3,
+ No,
+ Yes,
+ Details,
+ Filler,
+ Stretch,
+ NoDefault
+ };
+
+%End
+
+
+ enum ActionButtonStyle
+ {
+ ActionStyle0,
+ ActionStyle1,
+ ActionStyle2,
+ ActionStyle3,
+ ActionStyle4,
+ ActionStyleMAX
+ };
+
+
+ enum DialogType
+ {
+ TreeList,
+ Tabbed,
+ Plain,
+ Swallow,
+ IconList
+ };
+
+
+public:
+ KDialogBase (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1, const QString& = QString ::null , int = Ok |Apply |Cancel , KDialogBase::ButtonCode = Ok , bool = 0, const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem ());
+ KDialogBase (int, const QString&, int, KDialogBase::ButtonCode, QWidget* /TransferThis/ = 0, const char* = 0, bool = 1, bool = 0, const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem ());
+
+%If ( KDE_3_2_0 - )
+ KDialogBase (KDialogBase::DialogType, WFlags, QWidget* /TransferThis/ = 0, const char* = 0, bool = 1, const QString& = QString ::null , int = Ok |Apply |Cancel , KDialogBase::ButtonCode = Ok , bool = 0, const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem (), const KGuiItem& = KGuiItem ());
+%End
+
+ KDialogBase (const QString&, int = Yes |No |Cancel , KDialogBase::ButtonCode = Yes , KDialogBase::ButtonCode = Cancel , QWidget* /TransferThis/ = 0, const char* = 0, bool = 1, bool = 0, const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const KGuiItem& = KStdGuiItem ::cancel ());
+ void setButtonBoxOrientation (int);
+ void setEscapeButton (KDialogBase::ButtonCode);
+ virtual void adjustSize ();
+ virtual QSize sizeHint () const;
+ virtual QSize minimumSizeHint () const;
+ QFrame* plainPage ();
+ QFrame* addPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QFrame* addPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QVBox* addVBoxPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QVBox* addVBoxPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QHBox* addHBoxPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QHBox* addHBoxPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QGrid* addGridPage (int, Qt::Orientation, const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ QGrid* addGridPage (int, Qt::Orientation, const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ void setFolderIcon (const QStringList&, const QPixmap&);
+ QFrame* makeMainWidget ();
+ QVBox* makeVBoxMainWidget ();
+ QHBox* makeHBoxMainWidget ();
+ QGrid* makeGridMainWidget (int, Qt::Orientation);
+ void enableButtonSeparator (bool);
+ void showButton (KDialogBase::ButtonCode, bool);
+ void showButtonOK (bool);
+ void showButtonApply (bool);
+ void showButtonCancel (bool);
+ bool showPage (int);
+ int activePageIndex () const;
+ int pageIndex (QWidget*) const;
+ void setMainWidget (QWidget*);
+ QWidget* mainWidget ();
+ void disableResize ();
+ void setInitialSize (const QSize&, bool = 0);
+ void incInitialSize (const QSize&, bool = 0);
+ QSize configDialogSize (const QString&) const;
+
+%If ( KDE_3_2_0 - )
+ QSize configDialogSize (KConfig&, const QString&) const;
+%End
+
+ void saveDialogSize (const QString&, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ void saveDialogSize (KConfig&, const QString&, bool = 0) const;
+ void setButtonOK (const KGuiItem& = KStdGuiItem ::ok ());
+%End
+
+ void setButtonOKText (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ void setButtonApply (const KGuiItem& = KStdGuiItem ::apply ());
+%End
+
+ void setButtonApplyText (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ void setButtonCancel (const KGuiItem& = KStdGuiItem ::cancel ());
+%End
+
+ void setButtonCancelText (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+ void setButtonText (KDialogBase::ButtonCode, const QString&);
+ void setButtonTip (KDialogBase::ButtonCode, const QString&);
+ void setButtonWhatsThis (KDialogBase::ButtonCode, const QString&);
+
+%If ( KDE_3_3_0 - )
+ void setButtonGuiItem (KDialogBase::ButtonCode, const KGuiItem&);
+%End
+
+ void setTreeListAutoResize (bool);
+ void setShowIconsInTreeList (bool);
+ void setRootIsDecorated (bool);
+
+%If ( KDE_3_2_0 - )
+ void unfoldTreeList (bool = 0);
+ void addWidgetBelowList (QWidget*);
+ void addButtonBelowList (const QString&, QObject*, const char*);
+ void addButtonBelowList (const KGuiItem&, QObject*, const char*);
+%End
+
+ void setIconListAllVisible (bool);
+ static bool haveBackgroundTile ();
+ static const QPixmap* backgroundTile ();
+ static const QPixmap* getBackgroundTile ();
+ static void setBackgroundTile (const QPixmap*);
+ void showTile (bool);
+ void getBorderWidths (int&, int&, int&, int&) const;
+ QRect getContentsRect ();
+ QSize calculateSize (int, int);
+ QString helpLinkText ();
+ QPushButton* actionButton (KDialogBase::ButtonCode);
+
+public slots:
+ void enableButton (KDialogBase::ButtonCode, bool);
+ void enableButtonOK (bool);
+ void enableButtonApply (bool);
+ void enableButtonCancel (bool);
+ void enableLinkedHelp (bool);
+
+%If ( KDE_3_1_0 - )
+ void delayedDestruct ();
+%End
+
+ void setHelpLinkText (const QString&);
+ void setHelp (const QString&, const QString& = QString ::null );
+ void helpClickedSlot (const QString&);
+ void setDetails (bool);
+ void setDetailsWidget (QWidget*);
+ void updateBackground ();
+
+%If ( KDE_3_1_0 - )
+ void cancel ();
+%End
+
+
+signals:
+ void helpClicked ();
+ void defaultClicked ();
+ void user3Clicked ();
+ void user2Clicked ();
+ void user1Clicked ();
+ void applyClicked ();
+ void tryClicked ();
+ void okClicked ();
+ void yesClicked ();
+ void noClicked ();
+ void cancelClicked ();
+ void closeClicked ();
+ void apply ();
+ void backgroundChanged ();
+ void hidden ();
+ void finished ();
+ void aboutToShowDetails ();
+ void aboutToShowPage (QWidget*);
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void hideEvent (QHideEvent*);
+ virtual void closeEvent (QCloseEvent*);
+
+protected slots:
+ virtual void slotHelp ();
+ virtual void slotDefault ();
+ virtual void slotDetails ();
+ virtual void slotUser3 ();
+ virtual void slotUser2 ();
+ virtual void slotUser1 ();
+ virtual void slotOk ();
+ virtual void slotApply ();
+ virtual void slotTry ();
+ virtual void slotYes ();
+ virtual void slotNo ();
+ virtual void slotCancel ();
+ virtual void slotClose ();
+ virtual void applyPressed ();
+ void updateGeometry ();
+ void slotDelayedDestruct ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_3_0 )
+
+ enum ButtonCode
+ {
+ Help,
+ Default,
+ Ok,
+ Apply,
+ Try,
+ Cancel,
+ Close,
+ User1,
+ User2,
+ User3,
+ No,
+ Yes,
+ Details,
+ Filler,
+ Stretch
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+ void delayedDestruct ();
+%End
+
+
+}; // class KDialogBase
+
diff --git a/python/pykde/sip/kdeui/kdocktabctl.sip b/python/pykde/sip/kdeui/kdocktabctl.sip
new file mode 100644
index 00000000..0dcd96c0
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdocktabctl.sip
@@ -0,0 +1,186 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDockTabCtl_PrivateStruct
+{
+%TypeHeaderCode
+#include <kdocktabctl.h>
+%End
+
+
+public:
+ KDockTabCtl_PrivateStruct (QWidget*, int);
+ QWidget* widget;
+ int id;
+ bool enabled;
+
+}; // class KDockTabCtl_PrivateStruct
+
+
+class KDockTabBar : QWidget
+{
+%TypeHeaderCode
+#include <kdocktabctl.h>
+%End
+
+
+public:
+ KDockTabBar (QWidget*/TransferThis/ = 0, const char* = 0);
+
+ enum TabPos
+ {
+ TAB_TOP,
+ TAB_RIGHT
+ };
+
+ void setTabPos (KDockTabBar::TabPos);
+ int insertTab (const QString&, int = -1, int = -1);
+ void setPixmap (int, const QPixmap&);
+ void setToolTip (int, const QString&);
+ void setTextColor (int, const QColor&);
+ const QColor& textColor (int);
+ void removeTab (int);
+ int currentTab ();
+ void setCurrentTab (int, bool = 0);
+ void setTabEnabled (int, bool);
+ bool isTabEnabled (int);
+ void setTabCaption (int, const QString&);
+ QString tabCaption (int);
+ virtual void show ();
+ virtual void setFont (const QFont&);
+ void showTabIcon (bool);
+ bool isShowTabIcon ();
+
+signals:
+ void tabSelected (int);
+ void rightButtonPress (int, QPoint);
+
+protected slots:
+ void leftClicked ();
+ void rightClicked ();
+
+protected:
+ virtual void paintEvent (QPaintEvent*);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+
+}; // class KDockTabBar
+
+
+class KDockTabBarPainter : QWidget
+{
+%TypeHeaderCode
+#include <kdocktabctl.h>
+%End
+
+
+public:
+ QString tip (const QPoint&);
+ QRect findBarRectByPos (int, int);
+
+private:
+ KDockTabBarPainter (KDockTabBar*/TransferThis/);
+
+protected:
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void paintEvent (QPaintEvent*);
+
+}; // class KDockTabBarPainter
+
+
+class KDockTabCtl : QWidget
+{
+%TypeHeaderCode
+#include <kdocktabctl.h>
+%End
+
+
+public:
+ KDockTabCtl (QWidget*/TransferThis/ = 0, const char* = 0);
+ virtual void setTabPos (KDockTabBar::TabPos);
+ KDockTabBar::TabPos getTabPos ();
+ int insertPage (QWidget*, const QString&, int = -1, int = -1);
+ void setPageCaption (QWidget*, const QString&);
+ void setPageCaption (int, const QString&);
+ QString pageCaption (QWidget*);
+ QString pageCaption (int);
+ void captionAutoSet (bool);
+ bool isCaptionAutoSet ();
+ void setPixmap (QWidget*, const QPixmap&);
+ void setPixmap (int, const QPixmap&);
+ void setToolTip (QWidget*, const QString&);
+ void setTabTextColor (QWidget*, const QColor&);
+ void setTabTextColor (int, const QColor&);
+ const QColor& tabTextColor (QWidget*);
+ const QColor& tabTextColor (int);
+ bool isPageEnabled (QWidget*);
+ bool isPageEnabled (int);
+ void setPageEnabled (QWidget*, bool);
+ void setPageEnabled (int, bool);
+ QWidget* page (int);
+ int id (QWidget*);
+ int index (QWidget*);
+ void removePage (QWidget*);
+ void removePage (int);
+ QWidget* visiblePage ();
+ int visiblePageId ();
+ void setVisiblePage (QWidget*, bool = 0);
+ void setTabFont (const QFont&);
+ QFont tabFont ();
+ void showTabIcon (bool);
+ bool isShowTabIcon ();
+ int pageCount ();
+ QWidget* getFirstPage ();
+ QWidget* getLastPage ();
+ QWidget* getNextPage (QWidget*);
+ QWidget* getPrevPage (QWidget*);
+ virtual void show ();
+ virtual bool eventFilter (QObject*, QEvent*);
+
+public slots:
+ virtual void setEnabled (bool);
+ void setVisiblePage (int);
+
+protected:
+ void paintEvent (QPaintEvent*);
+
+signals:
+ void aboutToShow (QWidget*);
+ void pageSelected (QWidget*);
+ void tabShowPopup (int, QPoint);
+
+protected slots:
+ void rightButtonPress (int, QPoint);
+
+protected:
+ KDockTabCtl_PrivateStruct* findData (QWidget*);
+ KDockTabCtl_PrivateStruct* findData (int);
+ void showPage (QWidget*, bool = 0);
+
+}; // class KDockTabCtl
+
diff --git a/python/pykde/sip/kdeui/kdockwidget.sip b/python/pykde/sip/kdeui/kdockwidget.sip
new file mode 100644
index 00000000..351bb4a6
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdockwidget.sip
@@ -0,0 +1,469 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDockWidgetAbstractHeader : QFrame
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockWidgetAbstractHeader (KDockWidget* /TransferThis/, const char* = 0);
+ virtual void setTopLevel (bool);
+ virtual void saveConfig (KConfig*);
+ virtual void loadConfig (KConfig*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockWidgetAbstractHeader
+
+
+class KDockWidgetAbstractHeaderDrag : QFrame
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockWidgetAbstractHeaderDrag (KDockWidgetAbstractHeader* /TransferThis/, KDockWidget*, const char* = 0);
+ KDockWidget* dockWidget ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockWidgetAbstractHeaderDrag
+
+
+class KDockWidgetHeaderDrag : KDockWidgetAbstractHeaderDrag
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockWidgetHeaderDrag (KDockWidgetAbstractHeader* /TransferThis/, KDockWidget*, const char* = 0);
+
+protected:
+ virtual void paintEvent (QPaintEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockWidgetHeaderDrag
+
+
+class KDockWidgetHeader : KDockWidgetAbstractHeader
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockWidgetHeader (KDockWidget* /TransferThis/, const char* = 0);
+ virtual void setTopLevel (bool);
+ void setDragPanel (KDockWidgetHeaderDrag*);
+
+%If ( KDE_3_4_0 - )
+ KDockWidgetHeaderDrag* dragPanel ();
+%End
+
+ bool dragEnabled ();
+ void setDragEnabled (bool);
+
+%If ( KDE_3_1_0 - )
+ void showUndockButton (bool);
+
+%If ( KDE_3_2_0 - )
+ void forceCloseButtonHidden (bool = 1);
+%End
+
+%End
+
+ virtual void saveConfig (KConfig*);
+ virtual void loadConfig (KConfig*);
+
+%If ( KDE_3_2_0 - )
+//ig void addButton (KDockButton_Private*);
+//ig void removeButton (KDockButton_Private*);
+%End
+
+
+protected slots:
+ void slotStayClicked ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockWidgetHeader
+
+
+class KDockTabGroup : QTabWidget
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockTabGroup (QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ QWidget* transientTo ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockTabGroup
+
+
+class KDockWidget : QWidget
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockWidget (KDockManager*, const char*, const QPixmap&, QWidget* /TransferThis/ = 0, const QString& = 0, const QString& = " ", WFlags = 0);
+
+%If ( KDE_3_1_0 - )
+
+ enum DockPosition
+ {
+ DockNone,
+ DockTop,
+ DockLeft,
+ DockRight,
+ DockBottom,
+ DockCenter,
+ DockDesktop,
+ DockToSpecialSites,
+ DockCorner,
+ DockFullSite,
+ DockFullDocking
+ };
+
+%End
+
+ KDockWidget* manualDock (KDockWidget*, KDockWidget::DockPosition, int = 50, QPoint = QPoint (0 ,0 ), bool = 0, int = -1);
+ void setEnableDocking (int);
+ int enableDocking ();
+ void setDockSite (int);
+ int dockSite ();
+ void setWidget (QWidget*);
+ QWidget* getWidget ();
+ void setHeader (KDockWidgetAbstractHeader*);
+
+%If ( KDE_3_2_0 - )
+ KDockWidgetAbstractHeader* getHeader ();
+%End
+
+ void makeDockVisible ();
+ bool mayBeHide ();
+ bool mayBeShow ();
+ KDockManager* dockManager ();
+ void setToolTipString (const QString&);
+ const QString& toolTipString ();
+ bool isDockBackPossible ();
+ void setTabPageLabel (const QString&);
+ const QString& tabPageLabel ();
+ virtual bool event (QEvent*);
+ virtual void show ();
+ KDockTabGroup* parentDockTabGroup ();
+
+%If ( KDE_3_1_0 - )
+ QWidget* parentDockContainer () const;
+%End
+
+ void setDockWindowType (NET::WindowType);
+ void setDockWindowTransient (QWidget* /Transfer/, bool);
+
+%If ( KDE_3_2_0 - )
+ QWidget* transientTo ();
+%End
+
+
+%If ( KDE_3_1_0 - )
+ KDockWidget* findNearestDockWidget (KDockWidget::DockPosition);
+
+%If ( KDE_3_2_0 - )
+ void setPixmap (const QPixmap& = QPixmap ());
+ const QPixmap& pixmap () const;
+
+%If ( KDE_3_3_0 - )
+ KDockWidget::DockPosition currentDockPosition () const;
+%End
+
+%End
+
+%End
+
+
+public slots:
+
+%If ( KDE_3_1_0 - )
+ void setForcedFixedWidth (int);
+ void setForcedFixedHeight (int);
+ void restoreFromForcedFixedSize ();
+ int forcedFixedWidth ();
+ int forcedFixedHeight ();
+%End
+
+ void dockBack ();
+ void changeHideShowState ();
+ void undock ();
+
+%If ( KDE_3_1_0 - )
+ void toDesktop ();
+%End
+
+
+protected:
+ void updateHeader ();
+
+%If ( KDE_3_1_0 - )
+ void setLatestKDockContainer (QWidget*);
+ QWidget* latestKDockContainer ();
+
+%If ( KDE_3_2_1 - )
+ void setFormerBrotherDockWidget (KDockWidget*);
+%End
+
+%End
+
+
+signals:
+
+%If ( KDE_3_2_0 - )
+ void widgetSet (QWidget*);
+%End
+
+ void docking (KDockWidget*, KDockWidget::DockPosition);
+ void setDockDefaultPos ();
+ void headerCloseButtonClicked ();
+ void headerDockbackButtonClicked ();
+ void iMBeingClosed ();
+ void hasUndocked ();
+
+protected slots:
+ void loseFormerBrotherDockWidget ();
+
+%If ( KDE_3_1_0 - )
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void leaveEvent (QEvent*);
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum DockPosition
+ {
+ DockNone,
+ DockTop,
+ DockLeft,
+ DockRight,
+ DockBottom,
+ DockCenter,
+ DockDesktop,
+ DockCorner,
+ DockFullSite,
+ DockFullDocking
+ };
+
+%End
+
+
+}; // class KDockWidget
+
+
+class KDockManager : QObject
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum EnReadDockConfigMode
+ {
+ Unknown,
+ WrapExistingWidgetsOnly,
+ RestoreAllDockwidgets
+ };
+
+%End
+
+
+public:
+ KDockManager (QWidget*, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ void dumpDockWidgets ();
+%End
+
+ void writeConfig (KConfig* = 0, QString = QString ::null );
+ void readConfig (KConfig* = 0, QString = QString ::null );
+
+%If ( KDE_3_1_0 - )
+ void setMainDockWidget2 (KDockWidget*);
+%End
+
+ void writeConfig (QDomElement&);
+ void readConfig (QDomElement&);
+ void activate ();
+ virtual bool eventFilter (QObject*, QEvent*);
+ KDockWidget* findWidgetParentDock (QWidget*);
+ void makeWidgetDockVisible (QWidget*);
+ QPopupMenu* dockHideShowMenu ();
+ KDockWidget* getDockWidgetFromName (const QString&);
+ void setSplitterOpaqueResize (bool = 1);
+ bool splitterOpaqueResize () const;
+ void setSplitterKeepSize (bool = 1);
+ bool splitterKeepSize () const;
+ void setSplitterHighResolution (bool = 1);
+ bool splitterHighResolution () const;
+
+%If ( KDE_3_2_0 - )
+ void setSpecialLeftDockContainer (KDockWidget*);
+ void setSpecialTopDockContainer (KDockWidget*);
+ void setSpecialRightDockContainer (KDockWidget*);
+ void setSpecialBottomDockContainer (KDockWidget*);
+ void removeFromAutoCreateList (KDockWidget*);
+ void finishReadDockConfig ();
+ void setReadDockConfigMode (int);
+%End
+
+
+signals:
+ void change ();
+ void replaceDock (KDockWidget*, KDockWidget*);
+ void setDockDefaultPos (KDockWidget*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockManager
+
+
+class KDockMainWindow : KMainWindow
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockMainWindow (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = WType_TopLevel |WDestructiveClose );
+ KDockManager* manager ();
+ void setMainDockWidget (KDockWidget*);
+ KDockWidget* getMainDockWidget ();
+ KDockWidget* createDockWidget (const QString&, const QPixmap&, QWidget* /Transfer/ = 0, const QString& = 0, const QString& = " ");
+ void writeDockConfig (QDomElement&);
+ void readDockConfig (QDomElement&);
+ void writeDockConfig (KConfig* = 0, QString = QString ::null );
+ void readDockConfig (KConfig* = 0, QString = QString ::null );
+ void activateDock ();
+ QPopupMenu* dockHideShowMenu ();
+ void makeDockVisible (KDockWidget*);
+ void makeDockInvisible (KDockWidget*);
+ void makeWidgetDockVisible (QWidget*);
+ void setView (QWidget*);
+
+signals:
+ void dockWidgetHasUndocked (KDockWidget*);
+
+protected:
+
+protected slots:
+ void slotDockWidgetUndocked ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockMainWindow
+
+
+class KDockArea : QWidget
+{
+%TypeHeaderCode
+#include <kdockwidget.h>
+%End
+
+
+public:
+ KDockArea (QWidget* /TransferThis/ = 0, const char* = 0);
+ KDockManager* manager ();
+ void setMainDockWidget (KDockWidget*);
+ KDockWidget* getMainDockWidget ();
+ KDockWidget* createDockWidget (const QString&, const QPixmap&, QWidget* /Transfer/ = 0, const QString& = 0, const QString& = " ");
+ void writeDockConfig (QDomElement&);
+ void readDockConfig (QDomElement&);
+ void writeDockConfig (KConfig* = 0, QString = QString ::null );
+ void readDockConfig (KConfig* = 0, QString = QString ::null );
+ void activateDock ();
+ QPopupMenu* dockHideShowMenu ();
+ void makeDockVisible (KDockWidget*);
+ void makeDockInvisible (KDockWidget*);
+ void makeWidgetDockVisible (QWidget*);
+
+signals:
+ void dockWidgetHasUndocked (KDockWidget*);
+
+protected:
+
+protected slots:
+ void slotDockWidgetUndocked ();
+
+public:
+ virtual void resizeEvent (QResizeEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDockArea
+
diff --git a/python/pykde/sip/kdeui/kdockwindow.sip b/python/pykde/sip/kdeui/kdockwindow.sip
new file mode 100644
index 00000000..4923bf40
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdockwindow.sip
@@ -0,0 +1,38 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_4_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDockWindow : KSystemTray
+{
+%TypeHeaderCode
+#include <kdockwindow.h>
+%End
+
+
+public:
+ KDockWindow (QWidget* /TransferThis/ = 0, const char* = 0);
+
+}; // class KDockWindow
+
diff --git a/python/pykde/sip/kdeui/kdualcolorbtn.sip b/python/pykde/sip/kdeui/kdualcolorbtn.sip
new file mode 100644
index 00000000..bf85d4c2
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdualcolorbtn.sip
@@ -0,0 +1,73 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDualColorButton : QWidget
+{
+%TypeHeaderCode
+#include <kdualcolorbtn.h>
+%End
+
+
+public:
+
+ enum DualColor
+ {
+ Foreground,
+ Background
+ };
+
+ KDualColorButton (QWidget*/TransferThis/ = 0, const char* = 0);
+ KDualColorButton (QWidget*/TransferThis/, const char*, QWidget*);
+ KDualColorButton (const QColor&, const QColor&, QWidget*/TransferThis/ = 0, const char* = 0);
+ KDualColorButton (const QColor&, const QColor&, QWidget*/TransferThis/, const char*, QWidget*);
+ QColor foreground () const;
+ QColor background () const;
+ DualColor current () const;
+ QColor currentColor () const;
+ virtual QSize sizeHint () const;
+
+public slots:
+ void setForeground (const QColor&);
+ void setBackground (const QColor&);
+ void setCurrent (KDualColorButton::DualColor);
+ void setCurrentColor (const QColor&);
+
+signals:
+ void fgChanged (const QColor&);
+ void bgChanged (const QColor&);
+ void currentChanged (KDualColorButton::DualColor);
+
+protected:
+ virtual void metrics (QRect&, QRect&);
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+
+}; // class KDualColorButton
+
diff --git a/python/pykde/sip/kdeui/kdualcolorbutton.sip b/python/pykde/sip/kdeui/kdualcolorbutton.sip
new file mode 100644
index 00000000..671145e0
--- /dev/null
+++ b/python/pykde/sip/kdeui/kdualcolorbutton.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDualColorButton : QWidget
+{
+%TypeHeaderCode
+#include <kdualcolorbutton.h>
+%End
+
+
+public:
+
+ enum DualColor
+ {
+ Foreground,
+ Background
+ };
+
+ KDualColorButton (QWidget* /TransferThis/ = 0, const char* = 0, QWidget* = 0);
+ KDualColorButton (const QColor&, const QColor&, QWidget* /TransferThis/ = 0, const char* = 0, QWidget* = 0);
+ QColor foreground () const;
+ QColor background () const;
+ KDualColorButton::DualColor current () const;
+ QColor currentColor () const;
+ virtual QSize sizeHint () const;
+
+public slots:
+ void setForeground (const QColor&);
+ void setBackground (const QColor&);
+ void setCurrent (KDualColorButton::DualColor);
+ void setCurrentColor (const QColor&);
+
+signals:
+ void fgChanged (const QColor&);
+ void bgChanged (const QColor&);
+ void currentChanged (KDualColorButton::DualColor);
+
+protected:
+ virtual void metrics (QRect&, QRect&);
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDualColorButton
+
diff --git a/python/pykde/sip/kdeui/keditcl.sip b/python/pykde/sip/kdeui/keditcl.sip
new file mode 100644
index 00000000..cb7bf29c
--- /dev/null
+++ b/python/pykde/sip/kdeui/keditcl.sip
@@ -0,0 +1,224 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KEdGotoLine : KDialogBase
+{
+%TypeHeaderCode
+#include <keditcl.h>
+%End
+
+
+public:
+ KEdGotoLine (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+ int getLineNumber ();
+
+public slots:
+ void selected (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KEdGotoLine
+
+
+class KEdFind : KDialogBase
+{
+%TypeHeaderCode
+#include <keditcl.h>
+%End
+
+
+public:
+ KEdFind (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+ QString getText () const;
+ void setText (QString);
+ void setCaseSensitive (bool);
+ bool case_sensitive () const;
+ void setDirection (bool);
+ bool get_direction () const;
+ KHistoryCombo* searchCombo () const;
+
+protected slots:
+ void slotCancel ();
+ void slotUser1 ();
+ void textSearchChanged (const QString&);
+
+protected:
+
+signals:
+ void search ();
+ void done ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+//force
+
+private:
+ virtual void done (int);
+//end
+
+}; // class KEdFind
+
+
+class KEdReplace : KDialogBase
+{
+%TypeHeaderCode
+#include <keditcl.h>
+%End
+
+
+public:
+ KEdReplace (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1);
+ QString getText ();
+ QString getReplaceText ();
+ void setText (QString);
+ KHistoryCombo* searchCombo () const;
+ KHistoryCombo* replaceCombo () const;
+ bool case_sensitive ();
+ bool get_direction ();
+
+protected slots:
+ void slotCancel ();
+ void slotClose ();
+ void slotUser1 ();
+ void slotUser2 ();
+ void slotUser3 ();
+ void textSearchChanged (const QString&);
+
+signals:
+ void replace ();
+ void find ();
+ void replaceAll ();
+ void done ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+//force
+
+private:
+ virtual void done (int);
+//end
+
+}; // class KEdReplace
+
+
+class KEdit : QMultiLineEdit
+{
+%TypeHeaderCode
+#include <keditcl.h>
+%End
+
+
+public:
+ KEdit (QWidget* /TransferThis/ = 0, const char* = 0);
+
+ enum
+ {
+ NONE,
+ FORWARD,
+ BACKWARD
+ };
+
+ void insertText (QTextStream*);
+
+%If ( KDE_3_1_0 - )
+ void saveText (QTextStream*, bool);
+%End
+
+ void saveText (QTextStream*);
+ void selectFont ();
+ void search ();
+ bool repeatSearch ();
+ void replace ();
+ void doGotoLine ();
+ void cleanWhiteSpace ();
+ void installRBPopup (QPopupMenu*);
+ int currentLine ();
+ int currentColumn ();
+ void spellcheck_start ();
+ void spellcheck_stop ();
+ void setOverwriteEnabled (bool);
+
+%If ( KDE_3_2_0 - )
+ QString selectWordUnderCursor ();
+
+%If ( KDE_3_2_3 - )
+ QPopupMenu* createPopupMenu (const QPoint&);
+
+%If ( KDE_3_3_0 - )
+ void setAutoUpdate (bool);
+%End
+
+%End
+
+%End
+
+
+signals:
+ void gotUrlDrop (QDropEvent*);
+ void CursorPositionChanged ();
+ void toggle_overwrite_signal ();
+
+public slots:
+
+%If ( KDE_3_2_0 - )
+ void corrected (const QString&, const QString&, uint);
+ void misspelling (const QString&, const QStringList&, uint);
+%End
+
+
+protected:
+ void computePosition ();
+ int doSearch (QString, bool, bool, bool, int, int);
+ int doReplace (QString, bool, bool, bool, int, int, bool);
+ void posToRowCol (uint, uint&, uint&);
+ virtual void create (WId = 0, bool = 1, bool = 1);
+
+%If ( KDE_3_3_0 - )
+ virtual void ensureCursorVisible ();
+ virtual void setCursor (const QCursor&);
+ virtual void viewportPaintEvent (QPaintEvent*);
+%End
+
+
+protected:
+ void keyPressEvent (QKeyEvent*);
+ void dragMoveEvent (QDragMoveEvent*);
+ void dragEnterEvent (QDragEnterEvent*);
+ void dropEvent (QDropEvent*);
+
+%If ( KDE_3_1_3 - )
+ void contentsDragMoveEvent (QDragMoveEvent*);
+ void contentsDragEnterEvent (QDragEnterEvent*);
+ void contentsDropEvent (QDropEvent*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KEdit
+
diff --git a/python/pykde/sip/kdeui/keditlistbox.sip b/python/pykde/sip/kdeui/keditlistbox.sip
new file mode 100644
index 00000000..61d04723
--- /dev/null
+++ b/python/pykde/sip/kdeui/keditlistbox.sip
@@ -0,0 +1,206 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+const char **PyQtListToArray(PyObject *);
+%End
+
+
+class KEditListBox : QGroupBox
+{
+%TypeHeaderCode
+#include <keditlistbox.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+
+ class CustomEditor
+ {
+
+ public:
+ CustomEditor ();
+ CustomEditor (QWidget*, KLineEdit*);
+ CustomEditor (KComboBox*);
+ void setRepresentationWidget (QWidget*);
+ void setLineEdit (KLineEdit*);
+ virtual QWidget* representationWidget () const;
+ virtual KLineEdit* lineEdit () const;
+
+ protected:
+
+ }; // class CustomEditor
+
+
+public:
+%End
+
+
+public:
+
+%If ( KDE_3_5_0 - )
+
+ enum Button
+ {
+ Add,
+ Remove,
+ UpDown
+ };
+
+
+ enum
+ {
+ All
+ };
+
+%End
+
+ KEditListBox (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );
+ KEditListBox (const QString&, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );
+
+%If ( KDE_3_1_0 - )
+ KEditListBox (const QString&, const KEditListBox::CustomEditor&, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );
+%End
+
+ QListBox* listBox () const;
+ KLineEdit* lineEdit () const;
+ QPushButton* addButton () const;
+ QPushButton* removeButton () const;
+ QPushButton* upButton () const;
+ QPushButton* downButton () const;
+ int count () const;
+ void insertStringList (const QStringList&, int = -1);
+ void insertStrList (const QStrList*, int = -1);
+ void insertStrList (const QStrList&, int = -1);
+ void insertStrList (SIP_PYLIST, int = -1) [void (const char**, int = -1, int = -1)];
+%MethodCode
+//takes list | (a Python list of strings) | index | (int)
+
+ int n;
+
+ if ((n = PyList_Size (a0)) == 0)
+ return NULL;
+
+ const char **strings;
+
+ if ((strings = PyQtListToArray(a0)) == NULL)
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->insertStrList (strings, n, a1);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)strings);
+%End
+
+ void insertItem (const QString&, int = -1);
+ void clear ();
+ QString text (int) const;
+ int currentItem () const;
+ QString currentText () const;
+ QStringList items () const;
+
+%If ( KDE_3_4_0 - )
+ void setItems (const QStringList&);
+ int buttons () const;
+ void setButtons (uint);
+%End
+
+
+signals:
+ void changed ();
+
+%If ( KDE_3_2_0 - )
+ void added (const QString&);
+ void removed (const QString&);
+%End
+
+
+protected slots:
+ void moveItemUp ();
+ void moveItemDown ();
+ void addItem ();
+ void removeItem ();
+ void enableMoveButtons (int);
+ void typedSomething (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_5_0 )
+
+ enum Button
+ {
+ Add,
+ Remove,
+ UpDown,
+ All
+ };
+
+%End
+
+
+}; // class KEditListBox
+
+
+
+%ModuleCode
+// Convert a list of strings to an array of strings on the heap. Also used by
+// QPixmap.
+
+const char **PyQtListToArray(PyObject *lst)
+{
+ int nstr;
+ const char **str, **sp;
+
+ nstr = PyList_Size(lst);
+
+ if ((str = (const char **)sipMalloc(nstr * sizeof (char *))) == NULL)
+ return NULL;
+
+ // Convert the list.
+
+ sp = str;
+
+ for (int i = 0; i < nstr; ++i)
+ {
+ char *s;
+
+ if ((s = PyString_AsString(PyList_GetItem(lst,i))) == NULL)
+ {
+ sipFree((ANY *)str);
+ return NULL;
+ }
+
+ *sp++ = s;
+ }
+
+ return str;
+}
+%End
diff --git a/python/pykde/sip/kdeui/kedittoolbar.sip b/python/pykde/sip/kdeui/kedittoolbar.sip
new file mode 100644
index 00000000..2226a651
--- /dev/null
+++ b/python/pykde/sip/kdeui/kedittoolbar.sip
@@ -0,0 +1,156 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KEditToolbar : KDialogBase
+{
+%TypeHeaderCode
+#include <kedittoolbar.h>
+%End
+
+
+public:
+ KEditToolbar (KActionCollection*, const QString& = QString ::null , bool = 1, QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ KEditToolbar (const QString&, KActionCollection*, const QString& = QString ::null , bool = 1, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ KEditToolbar (KXMLGUIFactory*, QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ KEditToolbar (const QString&, KXMLGUIFactory*, QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_3_0 - )
+ static void setDefaultToolbar (const char*);
+%End
+
+%End
+
+
+protected slots:
+ virtual void slotOk ();
+ virtual void slotApply ();
+ void acceptOK (bool);
+
+%If ( KDE_3_5_0 - )
+ void slotDefault ();
+%End
+
+
+signals:
+ void newToolbarConfig ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KEditToolbar
+
+
+class KEditToolbarWidget : QWidget, KXMLGUIClient
+{
+%TypeHeaderCode
+#include <kedittoolbar.h>
+%End
+
+
+public:
+ KEditToolbarWidget (KActionCollection*, const QString& = QString ::null , bool = 1, QWidget* /TransferThis/ = 0);
+
+%If ( KDE_3_2_0 - )
+ KEditToolbarWidget (const QString&, KActionCollection*, const QString& = QString ::null , bool = 1, QWidget* /TransferThis/ = 0);
+%End
+
+ KEditToolbarWidget (KXMLGUIFactory*, QWidget* /TransferThis/ = 0);
+
+%If ( KDE_3_2_0 - )
+ KEditToolbarWidget (const QString&, KXMLGUIFactory*, QWidget* /TransferThis/ = 0);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ virtual KActionCollection* actionCollection () const;
+%End
+
+ bool save ();
+
+%If ( KDE_3_5_0 - )
+ void rebuildKXMLGUIClients ();
+%End
+
+
+signals:
+ void enableOk (bool);
+
+protected slots:
+ void slotToolbarSelected (const QString&);
+ void slotInactiveSelected (QListViewItem*);
+ void slotActiveSelected (QListViewItem*);
+
+%If ( KDE_3_3_0 - )
+ void slotDropped (KListView*, QDropEvent*, QListViewItem*);
+%End
+
+ void slotInsertButton ();
+ void slotRemoveButton ();
+ void slotUpButton ();
+ void slotDownButton ();
+
+%If ( KDE_3_3_0 - )
+ void slotChangeIcon ();
+%End
+
+
+protected:
+ void setupLayout ();
+
+%If ( KDE_3_3_0 - )
+//ig void insertActive (ToolbarItem*, QListViewItem*, bool = 0);
+//ig void removeActive (ToolbarItem*);
+//ig void moveActive (ToolbarItem*, QListViewItem*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void initNonKPart (KActionCollection*, const QString&, bool);
+ void initKPart (KXMLGUIFactory*);
+ void loadToolbarCombo (const QString& = QString ::null );
+%End
+
+ void loadActionList (QDomElement&);
+ void updateLocal (QDomElement&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ void loadToolbarCombo ();
+%End
+
+
+}; // class KEditToolbarWidget
+
diff --git a/python/pykde/sip/kdeui/kfontcombo.sip b/python/pykde/sip/kdeui/kfontcombo.sip
new file mode 100644
index 00000000..f116c176
--- /dev/null
+++ b/python/pykde/sip/kdeui/kfontcombo.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFontCombo : KComboBox
+{
+%TypeHeaderCode
+#include <kfontcombo.h>
+%End
+
+
+public:
+ KFontCombo (QWidget* /TransferThis/, const char* = 0);
+ KFontCombo (const QStringList&, QWidget* /TransferThis/, const char* = 0);
+ void setFonts (const QStringList&);
+ void setCurrentFont (const QString&);
+ QString currentFont () const;
+ void setBold (bool);
+ bool bold () const;
+ void setItalic (bool);
+ bool italic () const;
+ void setUnderline (bool);
+ bool underline () const;
+ void setStrikeOut (bool);
+ bool strikeOut () const;
+ void setSize (int);
+ int size () const;
+ static bool displayFonts ();
+ virtual void setCurrentItem (int);
+
+protected slots:
+
+%If ( KDE_3_3_0 - )
+ void slotModified (int);
+%End
+
+
+protected:
+ void updateFonts ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontCombo
+
diff --git a/python/pykde/sip/kdeui/kfontdialog.sip b/python/pykde/sip/kdeui/kfontdialog.sip
new file mode 100644
index 00000000..bee4f118
--- /dev/null
+++ b/python/pykde/sip/kdeui/kfontdialog.sip
@@ -0,0 +1,184 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFontChooser : QWidget
+{
+%TypeHeaderCode
+#include <qbutton.h>
+#include <kfontdialog.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+
+ enum FontColumn
+ {
+ FamilyList,
+ StyleList,
+ SizeList
+ };
+
+%End
+
+
+ enum FontDiff
+ {
+ FontDiffFamily,
+ FontDiffStyle,
+ FontDiffSize
+ };
+
+ KFontChooser (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, const QStringList& = QStringList (), bool = 1, int = 8, bool = 0, QButton::ToggleState = QButton ::Off ) [(QWidget* = 0, const char* = 0, bool = 0, const QStringList& = QStringList (), bool = 1, int = 8, bool = 0, QButton::ToggleState* = 0)];
+%MethodCode
+//takes parent | (QWidget = 0) | name | (string = "") | onlyFixed | (bool = 0) | fontList | (QStringList = QStringList()) | makeFrame | (bool = 1) | visibleListSize | (int = 8) | diff | (bool = 0) | sizeIsRelativeState | (QButton::ToggleState = 0)
+//returns
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKFontChooser *) new KFontChooser (a0, a1, a2, *a3, a4, a5, a6, &a7);
+ Py_END_ALLOW_THREADS
+%End
+
+ void enableColumn (int, bool);
+ void setFont (const QFont&, bool = 0);
+ int fontDiffFlags ();
+ QFont font () const;
+ void setColor (const QColor&);
+ QColor color () const;
+ void setBackgroundColor (const QColor&);
+ QColor backgroundColor () const;
+ void setSizeIsRelative (QButton::ToggleState);
+ QButton::ToggleState sizeIsRelative () const;
+ QString sampleText () const;
+ void setSampleText (const QString&);
+
+%If ( KDE_3_5_0 - )
+ void setSampleBoxVisible (bool);
+%End
+
+ static QString getXLFD (const QFont&);
+
+ enum FontListCriteria
+ {
+ FixedWidthFonts,
+ ScalableFonts,
+ SmoothScalableFonts
+ };
+
+ static void getFontList (QStringList&, bool);
+ virtual QSize sizeHint () const;
+
+signals:
+ void fontSelected (const QFont&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum FontColumn
+ {
+ FamilyList,
+ StyleList,
+ SizeList,
+ CharsetList
+ };
+
+%End
+
+
+}; // class KFontChooser
+
+
+class KFontDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kfontdialog.h>
+%End
+
+
+public:
+ KFontDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 0, const QStringList& = QStringList (), bool = 1, bool = 0, QButton::ToggleState = QButton ::Off ) [(QWidget* = 0, const char* = 0, bool = 0, bool = 0, const QStringList& = QStringList (), bool = 1, bool = 0, QButton::ToggleState* = 0)];
+%MethodCode
+//takes parent | (QWidget = 0) | name | (string = "") | onlyFixed | (bool = 0) | modal | (bool = 0) | fontlist | (QStringList = QStringList()) | makeFrame | (bool = 1) | diff | (bool = 0) | sizeIsRelativeState | (QButton::ToggleState = 0)
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = (sipKFontDialog *)new KFontDialog (a0, a1, a2, a3, *a4, a5, a6, &a7);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setFont (const QFont&, bool = 0);
+ QFont font () const;
+ void setSizeIsRelative (QButton::ToggleState);
+ QButton::ToggleState sizeIsRelative () const;
+ static SIP_PYTUPLE getFont (QFont&, bool = 0, QWidget* /Transfer/ = 0, bool = 1, QButton::ToggleState /In/ = QButton ::Off ) [int (QFont&, bool = 0, QWidget* = 0, bool = 1, QButton::ToggleState* = 0)];
+%MethodCode
+//returns (int) sizeIsRelative (QButton::ToggleState)
+//takes theFont | (QFont) | onlyFixed | (bool = False) | parent | (QWidget = 0) | makeFrame | (bool = True) | sizeIsRelative | (QButton::ToggleState = QButton.Off)
+ int res;
+ Py_BEGIN_ALLOW_THREADS
+ res = KFontDialog::getFont (*a0, a1, a2, a3, &a4);
+ Py_END_ALLOW_THREADS
+
+ sipRes = Py_BuildValue ("ii", res, (int)a4);
+%End
+
+ static SIP_PYTUPLE getFontDiff (QFont&, int&, bool = 0, QWidget* /Transfer/ = 0, bool = 1, QButton::ToggleState /In/ = QButton ::Off ) [int (QFont&, int&, bool = 0, QWidget* = 0, bool = 1, QButton::ToggleState* = 0)];
+%MethodCode
+//returns (int) sizeIsRelative (QButton::ToggleState)
+//takes theFont | (QFont) | diffFlags | (int) | onlyFixed | (bool = False) | parent | (QWidget = 0) | makeFrame | (bool = true) | sizeIsRelative | (QButton::ToggleState = QButton.Off)
+ int res;
+ Py_BEGIN_ALLOW_THREADS
+ res = KFontDialog::getFontDiff (*a0, a1, a2, a3, a4, &a5);
+ Py_END_ALLOW_THREADS
+
+ sipRes = Py_BuildValue ("ii", res, (int)a5);
+%End
+
+ static SIP_PYTUPLE getFontAndText (QFont&, QString&, bool = 0, QWidget* /Transfer/ = 0, bool = 1, QButton::ToggleState /In/ = QButton ::Off ) [int (QFont&, QString&, bool = 0, QWidget* = 0, bool = 1, QButton::ToggleState* = 0)];
+%MethodCode
+//returns (int) sizeIsRelative (QButton::ToggleState)
+//takes theFont | (QFont) | theString | (QString) | onlyFixed | (bool = False) | parent | (QWidget = 0) | makeFrame | (bool = true) | sizeIsRelative | (QButton::ToggleState = QButton.Off)
+ int res;
+ Py_BEGIN_ALLOW_THREADS
+ res = KFontDialog::getFontAndText (*a0, *a1, a2, a3, a4, &a5);
+ Py_END_ALLOW_THREADS
+
+ sipRes = Py_BuildValue ("ii", res, (int)a5);
+%End
+
+
+signals:
+ void fontSelected (const QFont&);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFontDialog
+
diff --git a/python/pykde/sip/kdeui/kfontrequester.sip b/python/pykde/sip/kdeui/kfontrequester.sip
new file mode 100644
index 00000000..5f70bea7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kfontrequester.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KFontRequester : QWidget
+{
+%TypeHeaderCode
+#include <kfontrequester.h>
+%End
+
+
+public:
+ KFontRequester (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ QFont font () const;
+ bool isFixedOnly () const;
+ QString sampleText () const;
+ QString title () const;
+ QLabel* label () const;
+ QPushButton* button () const;
+ virtual void setFont (const QFont&, bool = 0);
+ virtual void setSampleText (const QString&);
+ virtual void setTitle (const QString&);
+
+signals:
+ void fontSelected (const QFont&);
+
+protected:
+ void displaySampleText ();
+ void setToolTip ();
+
+protected slots:
+ virtual void buttonClicked ();
+
+protected:
+
+}; // class KFontRequester
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kguiitem.sip b/python/pykde/sip/kdeui/kguiitem.sip
new file mode 100644
index 00000000..48675d0b
--- /dev/null
+++ b/python/pykde/sip/kdeui/kguiitem.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KGuiItem
+{
+%TypeHeaderCode
+#include <kguiitem.h>
+%End
+
+
+public:
+ KGuiItem ();
+ KGuiItem (const QString&, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+ KGuiItem (const QString&, const QIconSet&, const QString& = QString ::null , const QString& = QString ::null );
+ KGuiItem (const KGuiItem&);
+ QString text () const;
+ QString plainText () const;
+ QIconSet iconSet (KIcon::Group, int = 0, KInstance* = KGlobal ::instance ()) const;
+ QIconSet iconSet () const;
+ QString iconName () const;
+ QString toolTip () const;
+ QString whatsThis () const;
+ bool isEnabled () const;
+ bool hasIcon () const;
+ bool hasIconSet () const;
+ void setText (const QString&);
+ void setIconSet (const QIconSet&);
+ void setIconName (const QString&);
+ void setToolTip (const QString&);
+ void setWhatsThis (const QString&);
+ void setEnabled (bool);
+
+}; // class KGuiItem
+
diff --git a/python/pykde/sip/kdeui/khelpmenu.sip b/python/pykde/sip/kdeui/khelpmenu.sip
new file mode 100644
index 00000000..0ec9cbfc
--- /dev/null
+++ b/python/pykde/sip/kdeui/khelpmenu.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHelpMenu : QObject
+{
+%TypeHeaderCode
+#include <khelpmenu.h>
+%End
+
+
+public:
+
+ enum MenuId
+ {
+ menuHelpContents,
+ menuWhatsThis,
+ menuAboutApp,
+ menuAboutKDE,
+ menuReportBug
+ };
+
+ KHelpMenu (QWidget* /TransferThis/ = 0, const QString& = QString ::null , bool = 1);
+ KHelpMenu (QWidget* /TransferThis/, const KAboutData*, bool = 1, KActionCollection* = 0);
+ KPopupMenu* menu ();
+
+public slots:
+ void appHelpActivated ();
+ void contextHelpActivated ();
+ void aboutApplication ();
+ void aboutKDE ();
+ void reportBug ();
+
+signals:
+ void showAboutApplication ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KHelpMenu
+
diff --git a/python/pykde/sip/kdeui/kiconview.sip b/python/pykde/sip/kdeui/kiconview.sip
new file mode 100644
index 00000000..8ce76143
--- /dev/null
+++ b/python/pykde/sip/kdeui/kiconview.sip
@@ -0,0 +1,147 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIconView : QIconView
+{
+%TypeHeaderCode
+#include <kiconview.h>
+%End
+
+
+public:
+ KIconView (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+
+ enum Mode
+ {
+ Execute,
+ Select
+ };
+
+ void setMode (KIconView::Mode);
+ Mode mode () const;
+ virtual void setFont (const QFont&);
+
+%If ( KDE_3_3_0 - )
+ void setIconTextHeight (int);
+ int iconTextHeight () const;
+
+%If ( KDE_3_4_0 - )
+ virtual void takeItem (QIconViewItem*);
+%End
+
+%End
+
+
+signals:
+ void executed (QIconViewItem*);
+ void executed (QIconViewItem*, const QPoint&);
+
+%If ( KDE_3_3_0 - )
+ void held (QIconViewItem*);
+%End
+
+ void doubleClicked (QIconViewItem*, const QPoint&);
+
+protected slots:
+ void slotOnItem (QIconViewItem*);
+ void slotOnViewport ();
+ void slotSettingsChanged (int);
+ void slotAutoSelect ();
+
+protected:
+ void emitExecute (QIconViewItem*, const QPoint&);
+
+%If ( KDE_3_5_0 - )
+ void updateDragHoldItem (QDropEvent*);
+%End
+
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void leaveEvent (QEvent*);
+ virtual void contentsMousePressEvent (QMouseEvent*);
+ virtual void contentsMouseDoubleClickEvent (QMouseEvent*);
+ virtual void contentsMouseReleaseEvent (QMouseEvent*);
+
+%If ( KDE_3_3_0 - )
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+
+%If ( KDE_3_5_0 - )
+ virtual void contentsDragLeaveEvent (QDragLeaveEvent*);
+%End
+
+ virtual void contentsDragMoveEvent (QDragMoveEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+ virtual void wheelEvent (QWheelEvent*);
+
+%If ( KDE_3_4_0 - )
+ void cancelPendingHeldSignal ();
+%End
+
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KIconView
+
+
+class KIconViewItem : QIconViewItem
+{
+%TypeHeaderCode
+#include <kiconview.h>
+%End
+
+
+public:
+ KIconViewItem (QIconView* /TransferThis/);
+ KIconViewItem (QIconView* /TransferThis/, QIconViewItem*);
+ KIconViewItem (QIconView* /TransferThis/, const QString&);
+ KIconViewItem (QIconView* /TransferThis/, QIconViewItem*, const QString&);
+ KIconViewItem (QIconView* /TransferThis/, const QString&, const QPixmap&);
+ KIconViewItem (QIconView* /TransferThis/, QIconViewItem*, const QString&, const QPixmap&);
+ KIconViewItem (QIconView* /TransferThis/, const QString&, const QPicture&);
+ KIconViewItem (QIconView* /TransferThis/, QIconViewItem*, const QString&, const QPicture&);
+
+%If ( KDE_3_3_0 - )
+ void setPixmapSize (const QSize&);
+ QSize pixmapSize () const;
+%End
+
+
+protected:
+ void init ();
+ virtual void calcRect (const QString& = QString ::null );
+ virtual void paintItem (QPainter*, const QColorGroup&);
+
+%If ( KDE_3_2_0 - )
+ KWordWrap* wordWrap ();
+ void paintPixmap (QPainter*, const QColorGroup&);
+ void paintText (QPainter*, const QColorGroup&);
+%End
+
+
+}; // class KIconViewItem
+
diff --git a/python/pykde/sip/kdeui/kiconviewsearchline.sip b/python/pykde/sip/kdeui/kiconviewsearchline.sip
new file mode 100644
index 00000000..3864bc22
--- /dev/null
+++ b/python/pykde/sip/kdeui/kiconviewsearchline.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+
+class KIconViewSearchLine : KLineEdit
+{
+%TypeHeaderCode
+#include <kiconviewsearchline.h>
+%End
+
+
+public:
+ KIconViewSearchLine (QWidget* /TransferThis/ = 0, QIconView* = 0, const char* = 0);
+ KIconViewSearchLine (QWidget* /TransferThis/, const char*);
+ bool caseSensitive () const;
+ QIconView* iconView () const;
+
+public slots:
+ virtual void updateSearch (const QString& = QString ::null );
+ void setCaseSensitive (bool);
+ void setIconView (QIconView*);
+ void clear ();
+
+protected:
+ virtual bool itemMatches (const QIconViewItem*, const QString&) const;
+ void init (QIconView* = 0);
+ void hideItem (QIconViewItem*);
+ void showItem (QIconViewItem*);
+
+protected slots:
+ void queueSearch (const QString&);
+ void activateSearch ();
+
+}; // class KIconViewSearchLine
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kinputdialog.sip b/python/pykde/sip/kdeui/kinputdialog.sip
new file mode 100644
index 00000000..88839a18
--- /dev/null
+++ b/python/pykde/sip/kdeui/kinputdialog.sip
@@ -0,0 +1,66 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KInputDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kinputdialog.h>
+%End
+
+
+private:
+ KInputDialog (const QString&, const QString&, const QString&, QWidget* /TransferThis/, const char*, QValidator*, const QString&);
+
+%If ( KDE_3_3_0 - )
+ KInputDialog (const QString&, const QString&, const QString&, QWidget* /TransferThis/, const char*);
+%End
+
+ KInputDialog (const QString&, const QString&, int, int, int, int, int, QWidget* /TransferThis/, const char*);
+ KInputDialog (const QString&, const QString&, const QStringList&, int, bool, QWidget* /TransferThis/, const char*);
+ KInputDialog (const QString&, const QString&, const QStringList&, const QStringList&, bool, QWidget* /TransferThis/, const char*);
+ ~KInputDialog ();
+
+public:
+ static QString getText (const QString&, const QString&, const QString& = QString ::null , bool* = 0, QWidget* /Transfer/ = 0, const char* = 0, QValidator* = 0, const QString& = QString ::null );
+
+%If ( KDE_3_3_0 - )
+ static QString text (const QString&, const QString&, const QString& = QString ::null , bool* = 0, QWidget* /Transfer/ = 0, const char* = 0, QValidator* = 0, const QString& = QString ::null , const QString& = QString ::null );
+ static QString getMultiLineText (const QString&, const QString&, const QString& = QString ::null , bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+%End
+
+ static int getInteger (const QString&, const QString&, int = 0, int = -2147483647, int = 2147483647, int = 1, int = 10, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+//ig static int getInteger (const QString&, const QString&, int = 0, int = -2147483647, int = 2147483647, int = 1, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+ static double getDouble (const QString&, const QString&, double = 0, double = -2147483647, double = 2147483647, double = 0.1, int = 1, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+//ig static double getDouble (const QString&, const QString&, double = 0, double = -2147483647, double = 2147483647, int = 1, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+ static QString getItem (const QString&, const QString&, const QStringList&, int = 0, bool = 0, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+ static QStringList getItemList (const QString&, const QString&, const QStringList& = QStringList (), const QStringList& = QStringList (), bool = 0, bool* = 0, QWidget* /Transfer/ = 0, const char* = 0);
+
+}; // class KInputDialog
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kjanuswidget.sip b/python/pykde/sip/kdeui/kjanuswidget.sip
new file mode 100644
index 00000000..e888c666
--- /dev/null
+++ b/python/pykde/sip/kdeui/kjanuswidget.sip
@@ -0,0 +1,110 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KJanusWidget : QWidget
+{
+%TypeHeaderCode
+#include <kjanuswidget.h>
+%End
+
+
+public:
+
+ enum Face
+ {
+ TreeList,
+ Tabbed,
+ Plain,
+ Swallow,
+ IconList
+ };
+
+
+public:
+ KJanusWidget (QWidget* /TransferThis/ = 0, const char* = 0, int = Plain );
+ virtual bool showPage (int);
+ virtual int activePageIndex () const;
+ virtual bool isValid () const;
+ virtual int face () const;
+ virtual QSize minimumSizeHint () const;
+ virtual QSize sizeHint () const;
+ virtual QFrame* plainPage ();
+ virtual QFrame* addPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QFrame* addPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QVBox* addVBoxPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QVBox* addVBoxPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QHBox* addHBoxPage (const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QHBox* addHBoxPage (const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QGrid* addGridPage (int, Qt::Orientation, const QString&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+ virtual QGrid* addGridPage (int, Qt::Orientation, const QStringList&, const QString& = QString ::null , const QPixmap& = QPixmap ());
+
+%If ( KDE_3_1_0 - )
+ void removePage (QWidget*);
+%End
+
+ virtual int pageIndex (QWidget*) const;
+ virtual bool setSwallowedWidget (QWidget*);
+ virtual void setTreeListAutoResize (bool);
+ virtual void setShowIconsInTreeList (bool);
+ virtual void setRootIsDecorated (bool);
+
+%If ( KDE_3_2_0 - )
+ void unfoldTreeList (bool = 0);
+ void addWidgetBelowList (QWidget*);
+ void addButtonBelowList (const QString&, QObject*, const char*);
+ void addButtonBelowList (const KGuiItem&, QObject*, const char*);
+%End
+
+ virtual void setIconListAllVisible (bool);
+ virtual void setFolderIcon (const QStringList&, const QPixmap&);
+
+%If ( KDE_3_2_0 - )
+ QString pageTitle (int) const;
+ QWidget* pageWidget (int) const;
+%End
+
+
+signals:
+ void aboutToShowPage (QWidget*);
+
+public slots:
+ virtual void setFocus ();
+
+protected:
+ virtual void showEvent (QShowEvent*);
+ virtual bool eventFilter (QObject*, QEvent*);
+
+protected:
+ bool showPage (QWidget*);
+ void addPageWidget (QFrame*, const QStringList&, const QString&, const QPixmap&);
+ void InsertTreeListItem (const QStringList&, const QPixmap&, QFrame*);
+ QWidget* FindParent ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KJanusWidget
+
diff --git a/python/pykde/sip/kdeui/kkeybutton.sip b/python/pykde/sip/kdeui/kkeybutton.sip
new file mode 100644
index 00000000..7bcb0825
--- /dev/null
+++ b/python/pykde/sip/kdeui/kkeybutton.sip
@@ -0,0 +1,59 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KKeyButton : QPushButton
+{
+%TypeHeaderCode
+#include <qpushbutton.h>
+#include <kkeybutton.h>
+%End
+
+
+public:
+ KKeyButton (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setShortcut (const KShortcut&);
+
+%If ( KDE_3_1_0 - )
+ void setShortcut (const KShortcut&, bool);
+%End
+
+ const KShortcut& shortcut () const;
+ void setText (const QString&);
+
+signals:
+ void capturedShortcut (const KShortcut&);
+
+public slots:
+ void captureShortcut ();
+
+protected:
+ void drawButton (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KKeyButton
+
diff --git a/python/pykde/sip/kdeui/kkeydialog.sip b/python/pykde/sip/kdeui/kkeydialog.sip
new file mode 100644
index 00000000..baca19f7
--- /dev/null
+++ b/python/pykde/sip/kdeui/kkeydialog.sip
@@ -0,0 +1,262 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KKeyChooser : QWidget
+{
+%TypeHeaderCode
+#include <kkeydialog.h>
+%End
+
+
+public:
+
+ enum ActionType
+ {
+ Application,
+ ApplicationGlobal,
+ Standard,
+ Global
+ };
+
+ KKeyChooser (QWidget* /TransferThis/, KKeyChooser::ActionType = Application , bool = 1);
+ KKeyChooser (KActionCollection*, QWidget* /TransferThis/, bool = 1);
+ KKeyChooser (KAccel*, QWidget* /TransferThis/, bool = 1);
+ KKeyChooser (KGlobalAccel*, QWidget* /TransferThis/);
+ KKeyChooser (KShortcutList*, QWidget* /TransferThis/, KKeyChooser::ActionType = Application , bool = 1);
+ bool insert (KActionCollection*);
+
+%If ( KDE_3_1_0 - )
+ bool insert (KActionCollection*, const QString&);
+%End
+
+ void syncToConfig (const QString&, KConfigBase*, bool);
+ void commitChanges ();
+ void save ();
+
+%If ( KDE_3_2_0 - )
+ static bool checkGlobalShortcutsConflict (const KShortcut&, bool, QWidget* /Transfer/);
+ static bool checkStandardShortcutsConflict (const KShortcut&, bool, QWidget* /Transfer/);
+%End
+
+
+signals:
+ void keyChange ();
+
+public slots:
+ void allDefault ();
+ void setPreferFourModifierKeys (bool);
+
+protected:
+ void initGUI (KKeyChooser::ActionType, bool);
+ bool insert (KAccel*);
+ bool insert (KGlobalAccel*);
+ bool insert (KShortcutList*);
+
+%If ( KDE_3_1_0 - )
+ void buildListView (uint, const QString& = QString ::null );
+%End
+
+ void readGlobalKeys ();
+ void updateButtons ();
+ void fontChange (const QFont&);
+ void setShortcut (const KShortcut&);
+ bool isKeyPresent (const KShortcut&, bool = 1);
+
+%If ( KDE_3_1_0 - )
+//ig bool isKeyPresentLocally (const KShortcut&, KKeyChooserItem*, const QString&);
+%End
+
+ void _warning (const KKeySequence&, QString, QString);
+
+protected slots:
+ void slotNoKey ();
+ void slotDefaultKey ();
+ void slotCustomKey ();
+ void slotListItemSelected (QListViewItem*);
+ void capturedShortcut (const KShortcut&);
+
+%If ( KDE_3_1_0 - )
+ void slotSettingsChanged (int);
+
+%If ( KDE_3_1_2 - )
+ void slotListItemDoubleClicked (QListViewItem*, const QPoint&, int);
+%End
+
+%End
+
+
+protected:
+
+public:
+ KKeyChooser (KAccel*, QWidget* /TransferThis/, bool, bool, bool = 0);
+ KKeyChooser (KGlobalAccel*, QWidget* /TransferThis/, bool, bool, bool = 0);
+
+public slots:
+ void listSync ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ void buildListView (uint);
+%End
+
+
+}; // class KKeyChooser
+
+
+class KKeyDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kkeydialog.h>
+%End
+
+
+public:
+ KKeyDialog (bool = 1, QWidget* /TransferThis/ = 0, const char* = 0);
+ bool insert (KActionCollection*);
+
+%If ( KDE_3_1_0 - )
+ bool insert (KActionCollection*, const QString&);
+%End
+
+ bool configure (bool = 1);
+ void commitChanges ();
+ static int configure (KActionCollection*, QWidget* /Transfer/ = 0, bool = 1);
+ static int configure (KAccel*, QWidget* /Transfer/ = 0, bool = 1);
+ static int configure (KGlobalAccel*, QWidget* /Transfer/ = 0, bool = 1);
+
+%If ( KDE_3_1_0 - )
+ static int configure (KActionCollection*, bool, QWidget* /Transfer/ = 0, bool = 1);
+ static int configure (KAccel*, bool, QWidget* /Transfer/ = 0, bool = 1);
+ static int configure (KGlobalAccel*, bool, QWidget* /Transfer/ = 0, bool = 1);
+%End
+
+ static int configureKeys (KAccel*, bool = 1, QWidget* /Transfer/ = 0);
+ static int configureKeys (KGlobalAccel*, bool = 1, QWidget* /Transfer/ = 0);
+ static int configureKeys (KActionCollection*, const QString&, bool = 1, QWidget* /Transfer/ = 0);
+
+%If ( KDE_3_1_0 - )
+
+private:
+ KKeyDialog (KKeyChooser::ActionType, bool = 1, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KKeyDialog
+
+typedef KKeyChooser KKeyChooser;
+
+
+%MappedType IntDict
+//converts a Python dict of QString:int
+{
+%TypeHeaderCode
+#include <qdict.h>
+#include <sipqtQString.h>
+#include <sipqtQCString.h>
+typedef QDict<int> IntDict;
+%End
+
+%ConvertFromTypeCode
+// Convert to a Python dictionary
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QDict<int> qdict = *sipCpp;
+ QDictIterator<int> it (qdict);
+
+ while (it.current ())
+ {
+ PyObject *a0 = sipConvertFromInstance (&it.currentKey (), sipClass_QCString, sipTransferObj);
+ PyObject *a1 = PyInt_FromLong ((long) it.current ());
+
+ if ((a0 == NULL) || (a1 == NULL) || (PyDict_SetItem (dict, a0, a1) < 0))
+ {
+ Py_XDECREF (a0);
+ Py_XDECREF (a1);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QDict<int> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QDict<int>* qdict = new QDict<int>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QString *a0;
+ int a1;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ a0 = (QString *) sipForceConvertTo_QString (key, &iserr);
+
+ if ((iserr) || (!PyInt_Check (value)))
+ {
+ *sipIsErr = 1;
+ delete qdict;
+ return 0;
+ }
+
+ a1 = (int) PyInt_AS_LONG (value);
+
+ qdict->insert (*a0, &a1);
+ }
+
+ *sipCppPtr = qdict;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/klanguagebutton.sip b/python/pykde/sip/kdeui/klanguagebutton.sip
new file mode 100644
index 00000000..8141fdbe
--- /dev/null
+++ b/python/pykde/sip/kdeui/klanguagebutton.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KLanguageButton : QWidget
+{
+%TypeHeaderCode
+#include <klanguagebutton.h>
+%End
+
+
+public:
+ KLanguageButton (QWidget* /TransferThis/ = 0, const char* = 0);
+ KLanguageButton (const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ void insertItem (const QIconSet&, const QString&, const QString&, const QString& = QString ::null , int = -1);
+ void insertItem (const QString&, const QString&, const QString& = QString ::null , int = -1);
+ void insertSeparator (const QString& = QString ::null , int = -1);
+ void insertSubmenu (const QIconSet&, const QString&, const QString&, const QString& = QString ::null , int = -1);
+ void insertSubmenu (const QString&, const QString&, const QString& = QString ::null , int = -1);
+ void insertLanguage (const QString&, const QString&, const QString& = QString ::null , const QString& = QString ::null , int = -1);
+ int count () const;
+ void clear ();
+ void setText (const QString&);
+ QString current () const;
+ bool contains (const QString&) const;
+ void setCurrentItem (const QString&);
+ QString id (int) const;
+
+signals:
+ void activated (const QString&);
+ void highlighted (const QString&);
+
+}; // class KLanguageButton
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kled.sip b/python/pykde/sip/kdeui/kled.sip
new file mode 100644
index 00000000..2dcb6f54
--- /dev/null
+++ b/python/pykde/sip/kdeui/kled.sip
@@ -0,0 +1,97 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KLed : QWidget
+{
+%TypeHeaderCode
+#include <kled.h>
+%End
+
+
+public:
+
+ enum State
+ {
+ Off,
+ On
+ };
+
+
+ enum Shape
+ {
+ Rectangular,
+ Circular
+ };
+
+
+ enum Look
+ {
+ Flat,
+ Raised,
+ Sunken
+ };
+
+ KLed (QWidget* /TransferThis/ = 0, const char* = 0);
+//ig KLed (const QColor&, QWidget* /TransferThis/ = 0, const char* = 0);
+ KLed (const QColor&, KLed::State, KLed::Look, KLed::Shape, QWidget* /TransferThis/ = 0, const char* = 0);
+ State state () const;
+ Shape shape () const;
+ const QColor color () const;
+ Look look () const;
+ int darkFactor () const;
+ void setState (KLed::State);
+ void setShape (KLed::Shape);
+ void toggleState ();
+ void setColor (const QColor&);
+ void setDarkFactor (int);
+ void setLook (KLed::Look);
+ virtual QSize sizeHint () const;
+ virtual QSize minimumSizeHint () const;
+
+public slots:
+ void toggle ();
+ void on ();
+ void off ();
+
+protected:
+ virtual void paintFlat ();
+ virtual void paintRound ();
+ virtual void paintSunken ();
+ virtual void paintRect ();
+ virtual void paintRectFrame (bool);
+ void paintEvent (QPaintEvent*);
+
+%If ( KDE_3_3_0 - )
+ int ensureRoundLed ();
+ bool paintCachedPixmap ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KLed
+
diff --git a/python/pykde/sip/kdeui/klineedit.sip b/python/pykde/sip/kdeui/klineedit.sip
new file mode 100644
index 00000000..d5525613
--- /dev/null
+++ b/python/pykde/sip/kdeui/klineedit.sip
@@ -0,0 +1,146 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KLineEdit : QLineEdit, KCompletionBase
+{
+%TypeHeaderCode
+#include <klineedit.h>
+%End
+
+
+public:
+ KLineEdit (const QString&, QWidget* /TransferThis/, const char* = 0);
+ KLineEdit (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setURL (const KURL&);
+ void cursorAtEnd ();
+ virtual void setCompletionMode (KGlobalSettings::Completion);
+ virtual void setContextMenuEnabled (bool);
+ bool isContextMenuEnabled () const;
+ void setURLDropsEnabled (bool);
+ bool isURLDropsEnabled () const;
+ void setTrapReturnKey (bool);
+ bool trapReturnKey () const;
+ virtual bool eventFilter (QObject*, QEvent*);
+ KCompletionBox* completionBox (bool);
+ virtual void setCompletionObject (KCompletion*, bool = 1);
+
+%If ( KDE_3_1_0 - )
+ virtual void copy () const;
+
+%If ( KDE_3_2_0 - )
+ void setEnableSqueezedText (bool);
+ bool isSqueezedTextEnabled () const;
+ QString originalText () const;
+
+%If ( KDE_3_4_0 - )
+ void setCompletionBox (KCompletionBox*);
+%End
+
+%End
+
+%End
+
+
+signals:
+
+%If ( KDE_3_1_0 - )
+ void completionBoxActivated (const QString&);
+%End
+
+ void returnPressed (const QString&);
+ void completion (const QString&);
+ void substringCompletion (const QString&);
+ void textRotation (KCompletionBase::KeyBindingType);
+ void completionModeChanged (KGlobalSettings::Completion);
+ void aboutToShowContextMenu (QPopupMenu*);
+
+public slots:
+ virtual void setReadOnly (bool);
+ void rotateText (KCompletionBase::KeyBindingType);
+ virtual void setCompletedText (const QString&);
+ void setCompletedItems (const QStringList&);
+
+%If ( KDE_3_3_0 - )
+ void setCompletedItems (const QStringList&, bool);
+%End
+
+ virtual void clear ();
+
+%If ( KDE_3_1_0 - )
+ void setSqueezedText (const QString&);
+
+%If ( KDE_3_2_0 - )
+ virtual void setText (const QString&);
+%End
+
+%End
+
+
+protected slots:
+ virtual void makeCompletion (const QString&);
+ void slotAboutToShow ();
+ void slotCancelled ();
+
+%If ( KDE_3_2_0 - )
+ void userCancelled (const QString&);
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ virtual void resizeEvent (QResizeEvent*);
+%End
+
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+
+%If ( KDE_3_3_1 - )
+ virtual void contextMenuEvent (QContextMenuEvent*);
+%End
+
+ virtual QPopupMenu* createPopupMenu ();
+ virtual void dropEvent (QDropEvent*);
+ virtual void setCompletedText (const QString&, bool);
+
+%If ( KDE_3_2_0 - )
+ void setUserSelection (bool);
+%End
+
+ virtual void create (WId = 0, bool = 1, bool = 1);
+
+%If ( KDE_3_4_0 - )
+ virtual void focusInEvent (QFocusEvent*);
+ bool autoSuggest () const;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KLineEdit
+
diff --git a/python/pykde/sip/kdeui/klineeditdlg.sip b/python/pykde/sip/kdeui/klineeditdlg.sip
new file mode 100644
index 00000000..ad97ff98
--- /dev/null
+++ b/python/pykde/sip/kdeui/klineeditdlg.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KLineEditDlg : KDialogBase
+{
+%TypeHeaderCode
+#include <klineeditdlg.h>
+%End
+
+
+public:
+ KLineEditDlg (const QString&, const QString&, QWidget* /TransferThis/);
+ QString text ();
+ KLineEdit* lineEdit () const;
+ static QString getText (const QString&, const QString&, bool*, QWidget* /Transfer/, QValidator* = 0);
+ static QString getText (const QString&, const QString&, const QString& = QString ::null , bool* = 0, QWidget* /Transfer/ = 0, QValidator* = 0);
+
+public slots:
+ void slotClear ();
+
+protected slots:
+ void slotTextChanged (const QString&);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KLineEditDlg
+
diff --git a/python/pykde/sip/kdeui/klistbox.sip b/python/pykde/sip/kdeui/klistbox.sip
new file mode 100644
index 00000000..24d33507
--- /dev/null
+++ b/python/pykde/sip/kdeui/klistbox.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KListBox : QListBox
+{
+%TypeHeaderCode
+#include <klistbox.h>
+%End
+
+
+public:
+ KListBox (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+
+signals:
+ void executed (QListBoxItem*);
+ void executed (QListBoxItem*, const QPoint&);
+ void doubleClicked (QListBoxItem*, const QPoint&);
+
+protected slots:
+ void slotOnItem (QListBoxItem*);
+ void slotOnViewport ();
+ void slotSettingsChanged (int);
+ void slotAutoSelect ();
+
+protected:
+ void emitExecute (QListBoxItem*, const QPoint&);
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void leaveEvent (QEvent*);
+ virtual void contentsMousePressEvent (QMouseEvent*);
+ virtual void contentsMouseDoubleClickEvent (QMouseEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KListBox
+
diff --git a/python/pykde/sip/kdeui/klistview.sip b/python/pykde/sip/kdeui/klistview.sip
new file mode 100644
index 00000000..db1b33b7
--- /dev/null
+++ b/python/pykde/sip/kdeui/klistview.sip
@@ -0,0 +1,337 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KListView : QListView
+{
+%TypeHeaderCode
+#include <klistview.h>
+%End
+
+
+public:
+
+ enum SelectionModeExt
+ {
+ Single,
+ Multi,
+ Extended,
+ NoSelection,
+ FileManager
+ };
+
+ KListView (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setAcceptDrops (bool);
+ virtual bool isExecuteArea (const QPoint&);
+ bool isExecuteArea (int);
+ QPtrList<QListViewItem> selectedItems () const;
+
+%If ( KDE_3_4_0 - )
+ QPtrList<QListViewItem> selectedItems (bool) const;
+%End
+
+ void moveItem (QListViewItem*, QListViewItem* /Transfer/, QListViewItem*);
+ QListViewItem* lastItem () const;
+ QListViewItem* lastChild () const;
+
+%If ( KDE_3_1_0 - )
+ KLineEdit* renameLineEdit () const;
+%End
+
+ bool itemsMovable () const;
+ bool itemsRenameable () const;
+ bool dragEnabled () const;
+ bool autoOpen () const;
+ bool isRenameable (int) const;
+ bool dropVisualizer () const;
+ int tooltipColumn () const;
+ bool createChildren () const;
+ bool dropHighlighter () const;
+ int dropVisualizerWidth () const;
+ SelectionModeExt selectionModeExt () const;
+ int itemIndex (const QListViewItem*) const;
+ QListViewItem* itemAtIndex (int);
+ void setFullWidth ();
+ void setFullWidth (bool);
+ bool fullWidth () const;
+
+%If ( KDE_3_0_1 - )
+ virtual int addColumn (const QString&, int = -1);
+ virtual int addColumn (const QIconSet&, const QString&, int = -1);
+ virtual void removeColumn (int);
+%End
+
+ void setAlternateBackground (const QColor&);
+ const QColor& alternateBackground () const;
+ void saveLayout (KConfig*, const QString&) const;
+ void restoreLayout (KConfig*, const QString&);
+ virtual void setSorting (int, bool = 1);
+ int columnSorted () const;
+ bool ascendingSort () const;
+
+%If ( KDE_3_2_0 - )
+ virtual void takeItem (QListViewItem*);
+
+%If ( KDE_3_4_0 - )
+ void setShadeSortColumn (bool);
+ bool shadeSortColumn () const;
+%End
+
+%End
+
+
+signals:
+ void executed (QListViewItem*);
+ void executed (QListViewItem*, const QPoint&, int);
+ void dropped (QDropEvent*, QListViewItem*);
+ void dropped (KListView*, QDropEvent*, QListViewItem*);
+ void dropped (KListView*, QDropEvent*, QListViewItem* /Transfer/, QListViewItem*);
+ void dropped (QDropEvent*, QListViewItem* /Transfer/, QListViewItem*);
+ void moved ();
+ void aboutToMove ();
+ void moved (QListViewItem*, QListViewItem*, QListViewItem*);
+ void moved (QPtrList<QListViewItem>&, QPtrList<QListViewItem>&, QPtrList<QListViewItem>&);
+ void itemRenamed (QListViewItem*, const QString&, int);
+ void itemRenamed (QListViewItem*);
+ void menuShortCutPressed (KListView*, QListViewItem*);
+ void contextMenu (KListView*, QListViewItem*, const QPoint&);
+
+%If ( KDE_3_3_0 - )
+ void itemAdded (QListViewItem*);
+ void itemRemoved (QListViewItem*);
+%End
+
+
+public slots:
+ virtual void rename (QListViewItem*, int);
+ void setRenameable (int, bool = 1);
+ virtual void setItemsMovable (bool);
+ virtual void setItemsRenameable (bool);
+ virtual void setDragEnabled (bool);
+ virtual void setAutoOpen (bool);
+ virtual void setDropVisualizer (bool);
+ void setDropVisualizerWidth (int);
+ virtual void setTooltipColumn (int);
+ virtual void setDropHighlighter (bool);
+ virtual void setCreateChildren (bool);
+ void setSelectionModeExt (KListView::SelectionModeExt);
+
+%If ( KDE_3_1_0 - )
+ void setTabOrderedRenaming (bool);
+ bool tabOrderedRenaming () const;
+%End
+
+
+protected:
+ bool below (const QRect&, const QPoint&);
+ bool below (QListViewItem*, const QPoint&);
+ virtual bool event (QEvent*);
+ void emitExecute (QListViewItem*, const QPoint&, int);
+ virtual void focusInEvent (QFocusEvent*);
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void leaveEvent (QEvent*);
+ virtual QString tooltip (QListViewItem*, int) const;
+ virtual bool showTooltip (QListViewItem*, const QPoint&, int) const;
+ virtual void contentsDragMoveEvent (QDragMoveEvent*);
+ virtual void contentsMousePressEvent (QMouseEvent*);
+ virtual void contentsMouseMoveEvent (QMouseEvent*);
+ virtual void contentsMouseDoubleClickEvent (QMouseEvent*);
+ virtual void contentsDragLeaveEvent (QDragLeaveEvent*);
+ virtual void contentsMouseReleaseEvent (QMouseEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+//ig virtual QDragObject* dragObject () const;
+ virtual bool acceptDrag (QDropEvent*) const;
+ virtual QRect drawDropVisualizer (QPainter*, QListViewItem* /Transfer/, QListViewItem*);
+ virtual QRect drawItemHighlighter (QPainter*, QListViewItem*);
+ virtual void startDrag ();
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void viewportPaintEvent (QPaintEvent*);
+ void activateAutomaticSelection ();
+ void deactivateAutomaticSelection ();
+ bool automaticSelection () const;
+ virtual void viewportResizeEvent (QResizeEvent*);
+
+%If ( KDE_3_2_0 - )
+ void disableAutoSelection ();
+ void resetAutoSelection ();
+
+%If ( KDE_3_3_0 - )
+ void doubleClicked (QListViewItem*, const QPoint&, int);
+%End
+
+%End
+
+
+protected slots:
+ void slotSettingsChanged (int);
+ void slotMouseButtonClicked (int, QListViewItem*, const QPoint&, int);
+ void doneEditing (QListViewItem*, int);
+ void cleanDropVisualizer ();
+ void cleanItemHighlighter ();
+ void emitContextMenu (QListViewItem*, const QPoint&, int);
+ void emitContextMenu (KListView*, QListViewItem*);
+ void slotOnItem (QListViewItem*);
+ void slotOnViewport ();
+ void slotAutoSelect ();
+
+%If ( KDE_3_2_0 - )
+ void slotDragExpand ();
+%End
+
+ void slotHeaderChanged ();
+
+protected:
+ virtual void movableDropEvent (QListViewItem*, QListViewItem*);
+ virtual void findDrop (const QPoint&, QListViewItem*&, QListViewItem*&);
+ void fileManagerKeyPressEvent (QKeyEvent*);
+ int depthToPixels (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+signals:
+
+%If ( - KDE_3_3_0 )
+ void doubleClicked (QListViewItem*, const QPoint&, int);
+%End
+
+
+protected:
+//force
+ virtual QDragObject* dragObject ();
+//end
+
+}; // class KListView
+
+
+class KListViewItem : QListViewItem
+{
+%TypeHeaderCode
+#include <klistview.h>
+%End
+
+
+public:
+ KListViewItem (QListView* /TransferThis/);
+ KListViewItem (QListViewItem* /TransferThis/);
+ KListViewItem (QListView* /TransferThis/, QListViewItem*);
+ KListViewItem (QListViewItem* /TransferThis/, QListViewItem*);
+ KListViewItem (QListView* /TransferThis/, QString, QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null );
+ KListViewItem (QListViewItem* /TransferThis/, QString, QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null );
+ KListViewItem (QListView* /TransferThis/, QListViewItem*, QString, QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null );
+ KListViewItem (QListViewItem* /TransferThis/, QListViewItem*, QString, QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null , QString = QString ::null );
+
+%If ( KDE_3_3_0 - )
+ virtual void insertItem (QListViewItem*);
+ virtual void takeItem (QListViewItem*);
+%End
+
+ bool isAlternate ();
+ const QColor& backgroundColor ();
+
+%If ( KDE_3_4_0 - )
+ QColor backgroundColor (int);
+%End
+
+ virtual void paintCell (QPainter*, const QColorGroup&, int, int, int);
+
+}; // class KListViewItem
+
+
+
+%MappedType QPtrList<QListViewItem>
+//converts a Python list of QListViewItem
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <qlistview.h>
+#include <sipqtQListViewItem.h>
+typedef QPtrList<QListViewItem> ListViewItems;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<QListViewItem> *cpplist = (QPtrList<QListViewItem> *)sipCpp;
+ QListViewItem *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the template makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_QListViewItem, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<QListViewItem> *cpplist = new QPtrList<QListViewItem>;
+
+ PyObject *elem;
+ QListViewItem *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (QListViewItem *)sipForceConvertTo_QListViewItem (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/klistviewlineedit.sip b/python/pykde/sip/kdeui/klistviewlineedit.sip
new file mode 100644
index 00000000..e72d9965
--- /dev/null
+++ b/python/pykde/sip/kdeui/klistviewlineedit.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KListViewLineEdit : KLineEdit
+{
+%TypeHeaderCode
+#include <klistviewlineedit.h>
+%End
+
+
+public:
+ KListViewLineEdit (KListView*/TransferThis/);
+
+signals:
+ void done (QListViewItem*, int);
+
+public slots:
+ void terminate ();
+ void load (QListViewItem*, int);
+
+protected:
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void paintEvent (QPaintEvent*);
+ void terminate (bool);
+
+}; // class KListViewLineEdit
+
diff --git a/python/pykde/sip/kdeui/klistviewsearchline.sip b/python/pykde/sip/kdeui/klistviewsearchline.sip
new file mode 100644
index 00000000..673da0f5
--- /dev/null
+++ b/python/pykde/sip/kdeui/klistviewsearchline.sip
@@ -0,0 +1,84 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KListViewSearchLine : KLineEdit
+{
+%TypeHeaderCode
+#include <klistviewsearchline.h>
+%End
+
+
+public:
+ KListViewSearchLine (QWidget* /TransferThis/ = 0, KListView* = 0, const char* = 0);
+ KListViewSearchLine (QWidget* /TransferThis/, const char*);
+ bool caseSensitive () const;
+ QValueList<int> searchColumns () const;
+ bool keepParentsVisible () const;
+ KListView* listView () const;
+
+public slots:
+ virtual void updateSearch (const QString& = QString ::null );
+ void setCaseSensitive (bool);
+ void setKeepParentsVisible (bool);
+ void setSearchColumns (const QValueList<int>&);
+ void setListView (KListView*);
+
+protected:
+ virtual bool itemMatches (const QListViewItem*, const QString&) const;
+ virtual QPopupMenu* createPopupMenu ();
+
+protected slots:
+ void queueSearch (const QString&);
+ void activateSearch ();
+
+}; // class KListViewSearchLine
+
+%End
+
+
+%If ( KDE_3_4_0 - )
+
+class KListViewSearchLineWidget : QHBox
+{
+%TypeHeaderCode
+#include <klistviewsearchline.h>
+%End
+
+
+public:
+ KListViewSearchLineWidget (KListView* = 0, QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual KListViewSearchLine* createSearchLine (KListView*);
+ KListViewSearchLine* searchLine () const;
+
+protected slots:
+ virtual void createWidgets ();
+
+}; // class KListViewSearchLineWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kmainwindow.sip b/python/pykde/sip/kdeui/kmainwindow.sip
new file mode 100644
index 00000000..67dd193f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kmainwindow.sip
@@ -0,0 +1,274 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMainWindow : QMainWindow, KXMLGUIBuilder, KXMLGUIClient
+{
+%TypeHeaderCode
+#include <kmainwindow.h>
+%End
+
+
+public:
+ KMainWindow (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = WType_TopLevel |WDestructiveClose );
+
+%If ( KDE_3_2_0 - )
+
+ enum CreationFlags
+ {
+ NoDCOPObject
+ };
+
+ KMainWindow (int, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = WType_TopLevel |WDestructiveClose );
+%End
+
+ KPopupMenu* helpMenu (const QString& = QString ::null , bool = 1);
+ KPopupMenu* customHelpMenu (bool = 1);
+ static bool canBeRestored (int);
+ static const QString classNameOfToplevel (int);
+
+%If ( KDE_3_2_0 - )
+ virtual void show ();
+ virtual void hide ();
+%End
+
+ bool restore (int, bool = 1);
+ virtual KXMLGUIFactory* guiFactory ();
+ void createGUI (const QString& = QString ::null , bool = 1);
+ void setHelpMenuEnabled (bool = 1);
+ bool isHelpMenuEnabled ();
+
+%If ( KDE_3_1_0 - )
+ bool hasMenuBar ();
+%End
+
+ KMenuBar* menuBar ();
+ KStatusBar* statusBar ();
+ QPtrList<KMainWindow>* memberList;
+
+%If ( KDE_3_4_0 - )
+ static QPtrList<KMainWindow>* getMemberList ();
+%End
+
+ KToolBar* toolBar (const char* = 0);
+//ig QPtrListIterator<KToolBar> toolBarIterator ();
+ KAccel* accel ();
+ void setFrameBorderWidth (int);
+ void setAutoSaveSettings (const QString& = QString ::fromLatin1 ("MainWindow" ), bool = 1);
+ void resetAutoSaveSettings ();
+
+%If ( KDE_3_1_0 - )
+ bool autoSaveSettings () const;
+ QString autoSaveGroup () const;
+
+%If ( KDE_3_3_0 - )
+ void applyMainWindowSettings (KConfig*, const QString&, bool);
+%End
+
+%End
+
+ void applyMainWindowSettings (KConfig*, const QString& = QString ::null );
+ void saveMainWindowSettings (KConfig*, const QString& = QString ::null );
+
+%If ( KDE_3_1_0 - )
+ void setStandardToolBarMenuEnabled (bool);
+ bool isStandardToolBarMenuEnabled () const;
+
+%If ( KDE_3_2_0 - )
+ void createStandardStatusBarAction ();
+
+%If ( KDE_3_3_0 - )
+
+ enum StandardWindowOptions
+ {
+ ToolBar,
+ Keys,
+ StatusBar,
+ Save,
+ Create
+ };
+
+ void setupGUI (int = ToolBar |Keys |StatusBar |Save |Create , const QString& = QString ::null );
+
+%If ( KDE_3_5_0 - )
+ void setupGUI (QSize, int = ToolBar |Keys |StatusBar |Save |Create , const QString& = QString ::null );
+%End
+
+%End
+
+%End
+
+ KAction* toolBarMenuAction ();
+
+%If ( KDE_3_3_1 - )
+ void setupToolbarMenuActions ();
+%End
+
+ virtual void finalizeGUI (KXMLGUIClient*);
+%End
+
+ void finalizeGUI (bool);
+ bool initialGeometrySet () const;
+
+%If ( KDE_3_2_0 - )
+ void ignoreInitialGeometry ();
+%End
+
+ QSize sizeForCentralWidgetSize (QSize);
+
+%If ( KDE_3_3_2 - )
+ virtual void setIcon (const QPixmap&);
+%End
+
+
+public slots:
+
+%If ( KDE_3_3_0 - )
+ int configureToolbars ();
+%End
+
+ virtual void setCaption (const QString&);
+ virtual void setCaption (const QString&, bool);
+ virtual void setPlainCaption (const QString&);
+ void appHelpActivated ();
+ virtual void slotStateChanged (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void slotStateChanged (const QString&, KXMLGUIClient::ReverseStateChange);
+%End
+
+ void setSettingsDirty ();
+
+protected:
+ void paintEvent (QPaintEvent*);
+ void childEvent (QChildEvent*);
+ void resizeEvent (QResizeEvent*);
+ virtual void closeEvent (QCloseEvent*);
+ virtual bool queryExit ();
+ virtual bool queryClose ();
+ virtual void saveProperties (KConfig*);
+ virtual void readProperties (KConfig*);
+ virtual void saveGlobalProperties (KConfig*);
+ virtual void readGlobalProperties (KConfig*);
+ void savePropertiesInternal (KConfig*, int);
+ bool readPropertiesInternal (KConfig*, int);
+ bool settingsDirty () const;
+ QString settingsGroup () const;
+ void saveWindowSize (KConfig*) const;
+ void restoreWindowSize (KConfig*);
+ void parseGeometry (bool);
+
+protected slots:
+
+%If ( KDE_3_3_0 - )
+ void saveNewToolbarConfig ();
+%End
+
+ virtual void showAboutApplication ();
+
+%If ( KDE_3_2_0 - )
+ void saveAutoSaveSettings ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KMainWindow
+
+
+
+%MappedType QPtrList<KMainWindow>
+//converts a Python list of KMainWindow
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kmainwindow.h>
+#include <sipkdeuiKMainWindow.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KMainWindow> *cpplist = (QPtrList<KMainWindow> *)sipCpp;
+ KMainWindow *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KMainWindow, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KMainWindow> *cpplist = new QPtrList<KMainWindow>;
+
+ PyObject *elem;
+ KMainWindow *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KMainWindow *)sipForceConvertTo_KMainWindow (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/kmainwindowiface.sip b/python/pykde/sip/kdeui/kmainwindowiface.sip
new file mode 100644
index 00000000..c8be93e1
--- /dev/null
+++ b/python/pykde/sip/kdeui/kmainwindowiface.sip
@@ -0,0 +1,71 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMainWindowInterface : DCOPObject
+{
+%TypeHeaderCode
+#include <kmainwindowiface.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_4 - )
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ QCStringList functions ();
+ QCStringList interfaces ();
+%End
+
+
+public:
+ KMainWindowInterface (KMainWindow*);
+ QCStringList functionsDynamic ();
+ bool processDynamic (const QCString&, const QByteArray&, QCString&, QByteArray&);
+
+public:
+ QCStringList actions ();
+ bool activateAction (QCString);
+ bool disableAction (QCString);
+ bool enableAction (QCString);
+ bool actionIsEnabled (QCString);
+ QCString actionToolTip (QCString);
+ DCOPRef action (const QCString&);
+ QMap<QCString,DCOPRef> actionMap ();
+ int getWinID ();
+ void grabWindowToClipBoard ();
+ void hide ();
+ void maximize ();
+ void minimize ();
+ void resize (int, int);
+ void move (int, int);
+ void setGeometry (int, int, int, int);
+ void raise () /PyName=raise_/;
+ void lower ();
+ void restore ();
+ void show ();
+
+}; // class KMainWindowInterface
+
diff --git a/python/pykde/sip/kdeui/kmenubar.sip b/python/pykde/sip/kdeui/kmenubar.sip
new file mode 100644
index 00000000..e2654075
--- /dev/null
+++ b/python/pykde/sip/kdeui/kmenubar.sip
@@ -0,0 +1,91 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMenuBar : QMenuBar
+{
+%TypeHeaderCode
+#include <kmenubar.h>
+%End
+
+
+public:
+ KMenuBar (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setTopLevelMenu (bool = 1);
+ bool isTopLevelMenu () const;
+
+%If ( KDE_3_1_0 - )
+ virtual void setGeometry (const QRect&);
+%End
+
+ virtual void setGeometry (int, int, int, int);
+
+%If ( KDE_3_2_0 - )
+ virtual void resize (int, int);
+ void resize (const QSize&);
+%End
+
+ virtual void show ();
+
+%If ( KDE_3_2_0 - )
+ virtual void setFrameStyle (int);
+ virtual void setLineWidth (int);
+ virtual void setMargin (int);
+
+%If ( KDE_3_4_0 - )
+ virtual QSize sizeHint () const;
+%End
+
+%End
+
+
+protected slots:
+ void slotReadConfig ();
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ virtual void showEvent (QShowEvent*);
+ virtual void resizeEvent (QResizeEvent*);
+ virtual bool eventFilter (QObject*, QEvent*);
+//ig virtual bool x11Event (XEvent*);
+
+%If ( KDE_3_2_3 - )
+ virtual void closeEvent (QCloseEvent*);
+
+%If ( KDE_3_3_0 - )
+ virtual void drawContents (QPainter*);
+%End
+
+%End
+
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KMenuBar
+
diff --git a/python/pykde/sip/kdeui/kmessagebox.sip b/python/pykde/sip/kdeui/kmessagebox.sip
new file mode 100644
index 00000000..cefaf6e9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kmessagebox.sip
@@ -0,0 +1,260 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMessageBox
+{
+%TypeHeaderCode
+#include <kmessagebox.h>
+%End
+
+
+public:
+
+ enum ButtonCode
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Continue
+ };
+
+
+ enum DialogType
+ {
+ QuestionYesNo,
+ WarningYesNo,
+ WarningContinueCancel,
+ WarningYesNoCancel,
+ Information,
+ Sorry,
+ Error,
+ QuestionYesNoCancel
+ };
+
+
+%If ( KDE_3_4_0 - )
+
+ enum OptionsType
+ {
+ Notify,
+ AllowLink,
+ Dangerous,
+ PlainCaption,
+ NoExec
+ };
+
+%End
+
+ static int questionYesNo (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int questionYesNoWId (WId, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+%End
+
+ static int questionYesNoCancel (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int questionYesNoCancelWId (WId, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+%End
+
+ static int questionYesNoList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int questionYesNoListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+%End
+
+ static int warningYesNo (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int warningYesNoWId (WId, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify |Dangerous );
+ static int warningYesNoList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify |Dangerous );
+ static int warningYesNoListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify |Dangerous );
+%End
+
+ static int warningContinueCancel (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::cont (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int warningContinueCancelWId (WId, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::cont (), const QString& = QString ::null , int = Notify );
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static int warningContinueCancelList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::cont (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int warningContinueCancelListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::cont (), const QString& = QString ::null , int = Notify );
+%End
+
+%End
+
+ static int warningYesNoCancel (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int warningYesNoCancelWId (WId, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+ static int warningYesNoCancelList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+ static int warningYesNoCancelListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+%End
+
+ static void error (QWidget* /Transfer/, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void errorWId (WId, const QString&, const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_4_0 - )
+ static void errorList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , int = Notify );
+ static void errorListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , int = Notify );
+%End
+
+%End
+
+ static void detailedError (QWidget* /Transfer/, const QString&, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void detailedErrorWId (WId, const QString&, const QString&, const QString& = QString ::null , int = Notify );
+%End
+
+ static void queuedDetailedError (QWidget* /Transfer/, const QString&, const QString&, const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ static void queuedDetailedErrorWId (WId, const QString&, const QString&, const QString& = QString ::null );
+%End
+
+ static void sorry (QWidget* /Transfer/, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void sorryWId (WId, const QString&, const QString& = QString ::null , int = Notify );
+%End
+
+ static void detailedSorry (QWidget* /Transfer/, const QString&, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void detailedSorryWId (WId, const QString&, const QString&, const QString& = QString ::null , int = Notify );
+%End
+
+ static void information (QWidget* /Transfer/, const QString&, const QString& = QString ::null , const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static void informationWId (WId, const QString&, const QString& = QString ::null , const QString& = QString ::null , int = Notify );
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static void informationList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const QString& = QString ::null , int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static void informationListWId (WId, const QString&, const QStringList&, const QString& = QString ::null , const QString& = QString ::null , int = Notify );
+%End
+
+%End
+
+ static void enableAllMessages ();
+
+%If ( KDE_3_2_0 - )
+ static void enableMessage (const QString&);
+%End
+
+ static void about (QWidget* /Transfer/, const QString&, const QString& = QString ::null , bool = 1);
+
+%If ( KDE_3_2_0 - )
+ static int messageBox (QWidget* /Transfer/, KMessageBox::DialogType, const QString&, const QString&, const KGuiItem&, const KGuiItem&, const QString&, int = Notify );
+%End
+
+ static int messageBox (QWidget* /Transfer/, KMessageBox::DialogType, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), int = Notify );
+
+%If ( KDE_3_2_0 - )
+ static int messageBoxWId (WId, KMessageBox::DialogType, const QString&, const QString& = QString ::null , const KGuiItem& = KStdGuiItem ::yes (), const KGuiItem& = KStdGuiItem ::no (), const QString& = QString ::null , int = Notify );
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static void queuedMessageBox (QWidget* /Transfer/, KMessageBox::DialogType, const QString&, const QString&, int);
+
+%If ( KDE_3_2_0 - )
+ static void queuedMessageBoxWId (WId, KMessageBox::DialogType, const QString&, const QString&, int);
+%End
+
+%End
+
+ static void queuedMessageBox (QWidget* /Transfer/, KMessageBox::DialogType, const QString&, const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ static void queuedMessageBoxWId (WId, KMessageBox::DialogType, const QString&, const QString& = QString ::null );
+ static bool shouldBeShownYesNo (const QString&, KMessageBox::ButtonCode&);
+ static bool shouldBeShownContinue (const QString&);
+ static void saveDontShowAgainYesNo (const QString&, KMessageBox::ButtonCode);
+ static void saveDontShowAgainContinue (const QString&);
+ static void setDontShowAskAgainConfig (KConfig*);
+
+%If ( KDE_3_3_0 - )
+ static int createKMessageBox (KDialogBase*, QMessageBox::Icon, const QString&, const QStringList&, const QString&, bool*, int, const QString& = QString ::null );
+ static int createKMessageBox (KDialogBase*, QPixmap, const QString&, const QStringList&, const QString&, bool*, int, const QString& = QString ::null , QMessageBox::Icon = QMessageBox ::Information );
+%End
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_4_0 )
+
+ enum OptionsType
+ {
+ Notify,
+ AllowLink,
+ Dangerous
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum OptionsType
+ {
+ Notify,
+ AllowLink
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_0_3 )
+//ig static int warningContinueCancelList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = QString ::null , const QString& = QString ::null , int = Notify );
+%End
+
+
+%If ( KDE_3_0_3 - KDE_3_1_0 )
+ static int warningContinueCancelList (QWidget* /Transfer/, const QString&, const QStringList&, const QString& = QString ::null , const KGuiItem& = KGuiItem (), const QString& = QString ::null , int = Notify );
+%End
+
+
+}; // class KMessageBox
+
diff --git a/python/pykde/sip/kdeui/knuminput.sip b/python/pykde/sip/kdeui/knuminput.sip
new file mode 100644
index 00000000..56ef992b
--- /dev/null
+++ b/python/pykde/sip/kdeui/knuminput.sip
@@ -0,0 +1,261 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KNumInput : QWidget
+{
+%TypeHeaderCode
+#include <knuminput.h>
+%End
+
+
+public:
+ KNumInput (QWidget* /TransferThis/ = 0, const char* = 0);
+ KNumInput (KNumInput*, QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setLabel (const QString&, int = AlignLeft |AlignTop );
+ QString label () const;
+
+%If ( KDE_3_1_0 - )
+ bool showSlider () const;
+%End
+
+ void setSteps (int, int);
+ QSizePolicy sizePolicy () const;
+ virtual QSize sizeHint () const;
+
+protected:
+ void layout (bool);
+ virtual void doLayout () = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KNumInput
+
+
+class KIntNumInput : KNumInput
+{
+%TypeHeaderCode
+#include <knuminput.h>
+%End
+
+
+public:
+ KIntNumInput (QWidget* /TransferThis/ = 0, const char* = 0);
+ KIntNumInput (int, QWidget* /TransferThis/ = 0, int = 10, const char* = 0);
+ KIntNumInput (KNumInput*, int, QWidget* /TransferThis/ = 0, int = 10, const char* = 0);
+ int value () const;
+
+%If ( KDE_3_1_0 - )
+ double relativeValue () const;
+ int referencePoint () const;
+%End
+
+ QString suffix () const;
+ QString prefix () const;
+ QString specialValueText () const;
+ void setRange (int, int, int = 1, bool = 1);
+ void setMinValue (int);
+ int minValue () const;
+ void setMaxValue (int);
+ int maxValue () const;
+ void setSpecialValueText (const QString&);
+ virtual void setLabel (const QString&, int = AlignLeft |AlignTop );
+ virtual QSize minimumSizeHint () const;
+
+public slots:
+ void setValue (int);
+
+%If ( KDE_3_1_0 - )
+ void setRelativeValue (double);
+ void setReferencePoint (int);
+%End
+
+ void setSuffix (const QString&);
+ void setPrefix (const QString&);
+ void setEditFocus (bool = 1);
+
+signals:
+ void valueChanged (int);
+
+%If ( KDE_3_1_0 - )
+ void relativeValueChanged (double);
+%End
+
+
+protected:
+ virtual void doLayout ();
+ void resizeEvent (QResizeEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KIntNumInput
+
+
+class KDoubleNumInput : KNumInput
+{
+%TypeHeaderCode
+#include <knuminput.h>
+%End
+
+
+public:
+ KDoubleNumInput (QWidget* /TransferThis/ = 0, const char* = 0);
+ KDoubleNumInput (double, QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+ KDoubleNumInput (double, double, double, double = 0.01, int = 2, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ KDoubleNumInput (KNumInput*, double, QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+ KDoubleNumInput (KNumInput*, double, double, double, double = 0.02, int = 2, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ double value () const;
+ QString suffix () const;
+ QString prefix () const;
+ int precision () const;
+ QString specialValueText () const;
+ void setRange (double, double, double = 1, bool = 1);
+ void setMinValue (double);
+ double minValue () const;
+ void setMaxValue (double);
+ double maxValue () const;
+ void setPrecision (int);
+
+%If ( KDE_3_1_0 - )
+ double referencePoint () const;
+ double relativeValue () const;
+%End
+
+ void setSpecialValueText (const QString&);
+ virtual void setLabel (const QString&, int = AlignLeft |AlignTop );
+ virtual QSize minimumSizeHint () const;
+ virtual bool eventFilter (QObject*, QEvent*);
+
+public slots:
+ void setValue (double);
+
+%If ( KDE_3_1_0 - )
+ void setRelativeValue (double);
+ void setReferencePoint (double);
+%End
+
+ void setSuffix (const QString&);
+ void setPrefix (const QString&);
+
+signals:
+ void valueChanged (double);
+
+%If ( KDE_3_1_0 - )
+ void relativeValueChanged (double);
+%End
+
+
+protected:
+ virtual void doLayout ();
+ void resizeEvent (QResizeEvent*);
+ virtual void resetEditBox ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDoubleNumInput
+
+
+class KIntSpinBox : QSpinBox
+{
+%TypeHeaderCode
+#include <knuminput.h>
+%End
+
+
+public:
+ KIntSpinBox (QWidget* /TransferThis/ = 0, const char* = 0);
+ KIntSpinBox (int, int, int, int, int = 10, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setBase (int);
+ int base () const;
+ void setEditFocus (bool);
+
+protected:
+ virtual QString mapValueToText (int);
+//ig virtual int mapTextToValue (bool*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KIntSpinBox
+
+
+%If ( KDE_3_1_0 - )
+
+class KDoubleSpinBox : QSpinBox
+{
+%TypeHeaderCode
+#include <knuminput.h>
+%End
+
+
+public:
+ KDoubleSpinBox (QWidget* /TransferThis/ = 0, const char* = 0);
+ KDoubleSpinBox (double, double, double, double, int = 2, QWidget* /TransferThis/ = 0, const char* = 0);
+ bool acceptLocalizedNumbers () const;
+ virtual void setAcceptLocalizedNumbers (bool);
+ void setRange (double, double, double = 0.01, int = 2);
+ int precision () const;
+ void setPrecision (int);
+ virtual void setPrecision (int, bool);
+ double value () const;
+ double minValue () const;
+ void setMinValue (double);
+ double maxValue () const;
+ void setMaxValue (double);
+ double lineStep () const;
+ void setLineStep (double);
+ void setValidator (const QValidator*);
+
+signals:
+ void valueChanged (double);
+
+public slots:
+ virtual void setValue (double);
+
+protected:
+ virtual QString mapValueToText (int);
+//ig virtual int mapTextToValue (bool*);
+
+protected slots:
+ void slotValueChanged (int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDoubleSpinBox
+
+%End
+
diff --git a/python/pykde/sip/kdeui/knumvalidator.sip b/python/pykde/sip/kdeui/knumvalidator.sip
new file mode 100644
index 00000000..86ac7fdd
--- /dev/null
+++ b/python/pykde/sip/kdeui/knumvalidator.sip
@@ -0,0 +1,89 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIntValidator : QValidator
+{
+%TypeHeaderCode
+#include <knumvalidator.h>
+%End
+
+
+public:
+ KIntValidator (QWidget* /TransferThis/, int = 10, const char* = 0);
+ KIntValidator (int, int, QWidget* /TransferThis/, int = 10, const char* = 0);
+ virtual State validate (QString&, int&) const;
+ virtual void fixup (QString&) const;
+ virtual void setRange (int, int);
+ virtual void setBase (int);
+ virtual int bottom () const;
+ virtual int top () const;
+ virtual int base () const;
+
+}; // class KIntValidator
+
+
+class KFloatValidator : QValidator
+{
+%TypeHeaderCode
+#include <knumvalidator.h>
+%End
+
+
+public:
+ KFloatValidator (QWidget* /TransferThis/, const char* = 0);
+ KFloatValidator (double, double, QWidget* /TransferThis/, const char* = 0);
+ KFloatValidator (double, double, bool, QWidget* /TransferThis/, const char* = 0);
+ virtual State validate (QString&, int&) const;
+ virtual void fixup (QString&) const;
+ virtual void setRange (double, double);
+ virtual double bottom () const;
+ virtual double top () const;
+ void setAcceptLocalizedNumbers (bool);
+ bool acceptLocalizedNumbers () const;
+
+}; // class KFloatValidator
+
+
+%If ( KDE_3_1_0 - )
+
+class KDoubleValidator : QDoubleValidator
+{
+%TypeHeaderCode
+#include <knumvalidator.h>
+%End
+
+
+public:
+ KDoubleValidator (QObject* /TransferThis/, const char* = 0);
+ KDoubleValidator (double, double, int, QObject* /TransferThis/, const char* = 0);
+ virtual QValidator::State validate (QString&, int&) const;
+ bool acceptLocalizedNumbers () const;
+ void setAcceptLocalizedNumbers (bool);
+
+}; // class KDoubleValidator
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kpanelapplet.sip b/python/pykde/sip/kdeui/kpanelapplet.sip
new file mode 100644
index 00000000..a7dff473
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpanelapplet.sip
@@ -0,0 +1,140 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPanelApplet : QFrame
+{
+%TypeHeaderCode
+#include <kpanelapplet.h>
+%End
+
+
+public:
+
+ enum Type
+ {
+ Normal,
+ Stretch
+ };
+
+
+ enum Action
+ {
+ About,
+ Help,
+ Preferences,
+ ReportBug
+ };
+
+
+ enum Position
+ {
+ pLeft,
+ pRight,
+ pTop,
+ pBottom
+ };
+
+
+ enum Alignment
+ {
+ LeftTop,
+ Center,
+ RightBottom
+ };
+
+
+ enum Direction
+ {
+ Up,
+ Down,
+ Left,
+ Right
+ };
+
+ KPanelApplet (const QString&, KPanelApplet::Type = Normal , int = 0, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ virtual int widthForHeight (int) const;
+ virtual int heightForWidth (int) const;
+ KConfig* config () const;
+
+%If ( KDE_3_2_0 - )
+ KSharedConfig::Ptr sharedConfig () const;
+%End
+
+ Type type () const;
+ int actions () const;
+ virtual void action (KPanelApplet::Action);
+
+%If ( KDE_3_2_0 - )
+ const QPopupMenu* customMenu () const;
+%End
+
+ void setPosition (KPanelApplet::Position);
+ void setAlignment (KPanelApplet::Alignment);
+
+signals:
+ void updateLayout ();
+ void requestFocus ();
+
+%If ( KDE_3_4_0 - )
+ void requestFocus (bool);
+%End
+
+
+protected:
+ virtual void about ();
+ virtual void help ();
+ virtual void preferences ();
+ virtual void reportBug ();
+ Orientation orientation () const;
+ KPanelApplet::Position position () const;
+ KPanelApplet::Alignment alignment () const;
+ virtual void positionChange (KPanelApplet::Position);
+ virtual void alignmentChange (KPanelApplet::Alignment);
+
+%If ( KDE_3_2_0 - )
+ void setCustomMenu (const QPopupMenu*);
+
+%If ( KDE_3_4_0 - )
+ void watchForFocus (QWidget*, bool = 1);
+ void needsFocus (bool);
+%End
+
+%End
+
+ virtual void orientationChange (Orientation);
+ Direction popupDirection ();
+ virtual void popupDirectionChange (KPanelApplet::Direction);
+
+%If ( KDE_3_4_0 - )
+ bool eventFilter (QObject*, QEvent*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPanelApplet
+
diff --git a/python/pykde/sip/kdeui/kpanelappmenu.sip b/python/pykde/sip/kdeui/kpanelappmenu.sip
new file mode 100644
index 00000000..fedda655
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpanelappmenu.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPanelAppMenu : QObject, DCOPObject
+{
+%TypeHeaderCode
+#include <kpanelappmenu.h>
+%End
+
+
+public:
+ KPanelAppMenu (const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ KPanelAppMenu (const QPixmap&, const QString&, QObject* /TransferThis/, const char*);
+ KPanelAppMenu (QObject* /TransferThis/, const char*);
+ int insertItem (const QString&, int = -1);
+ int insertItem (const QPixmap&, const QString&, int = -1);
+ KPanelAppMenu* insertMenu (const QPixmap&, const QString&, int = -1);
+ void clear ();
+ bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+
+signals:
+ void activated (int);
+
+protected:
+ void init (const QPixmap&, const QString&);
+
+}; // class KPanelAppMenu
+
diff --git a/python/pykde/sip/kdeui/kpanelextension.sip b/python/pykde/sip/kdeui/kpanelextension.sip
new file mode 100644
index 00000000..553b8148
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpanelextension.sip
@@ -0,0 +1,159 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPanelExtension : QFrame
+{
+%TypeHeaderCode
+#include <kpanelextension.h>
+%End
+
+
+public:
+
+ enum Type
+ {
+ Normal,
+ Stretch
+ };
+
+
+ enum Action
+ {
+ About,
+ Help,
+ Preferences,
+ ReportBug
+ };
+
+
+%If ( KDE_3_4_0 - )
+
+ enum Position
+ {
+ Left,
+ Right,
+ Top,
+ Bottom,
+ Floating
+ };
+
+%End
+
+
+ enum Alignment
+ {
+ LeftTop,
+ Center,
+ RightBottom
+ };
+
+
+%If ( KDE_3_1_0 - )
+
+ enum Size
+ {
+ SizeTiny,
+ SizeSmall,
+ SizeNormal,
+ SizeLarge,
+ SizeCustom
+ };
+
+%End
+
+ KPanelExtension (const QString&, KPanelExtension::Type = Normal , int = 0, QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual QSize sizeHint (KPanelExtension::Position, QSize) const;
+ KConfig* config () const;
+ Type type () const;
+ int actions () const;
+ virtual void action (KPanelExtension::Action);
+ virtual Position preferedPosition () const;
+ void setPosition (KPanelExtension::Position);
+ void setAlignment (KPanelExtension::Alignment);
+
+%If ( KDE_3_1_0 - )
+ void setSize (KPanelExtension::Size, int);
+ KPanelExtension::Size sizeSetting () const;
+ int customSize () const;
+
+%If ( KDE_3_4_0 - )
+ QPopupMenu* customMenu () const;
+ bool reserveStrut () const;
+%End
+
+%End
+
+
+signals:
+ void updateLayout ();
+
+%If ( KDE_3_4_0 - )
+ void maintainFocus (bool);
+%End
+
+
+protected:
+ virtual void about ();
+ virtual void help ();
+ virtual void preferences ();
+ virtual void reportBug ();
+ Position position () const;
+ KPanelExtension::Alignment alignment () const;
+ Orientation orientation ();
+
+%If ( KDE_3_1_0 - )
+ int sizeInPixels () const;
+%End
+
+ virtual void positionChange (KPanelExtension::Position);
+ virtual void alignmentChange (KPanelExtension::Alignment);
+
+%If ( KDE_3_4_0 - )
+ void setCustomMenu (QPopupMenu*);
+ void setReserveStrut (bool);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_4_0 )
+
+ enum Position
+ {
+ Left,
+ Right,
+ Top,
+ Bottom
+ };
+
+%End
+
+
+}; // class KPanelExtension
+
diff --git a/python/pykde/sip/kdeui/kpanelmenu.sip b/python/pykde/sip/kdeui/kpanelmenu.sip
new file mode 100644
index 00000000..6315bbe0
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpanelmenu.sip
@@ -0,0 +1,65 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPanelMenu : KPopupMenu
+{
+%TypeHeaderCode
+#include <kpanelmenu.h>
+%End
+
+
+public:
+ KPanelMenu (QWidget* /TransferThis/ = 0, const char* = 0);
+ KPanelMenu (const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ const QString& path () const;
+ void setPath (const QString&);
+ bool initialized () const;
+ void setInitialized (bool);
+ void disableAutoClear ();
+
+public slots:
+ void reinitialize ();
+
+%If ( KDE_3_1_0 - )
+ void deinitialize ();
+%End
+
+
+protected slots:
+ virtual void slotAboutToShow ();
+ virtual void slotExec (int) = 0;
+ virtual void initialize () = 0;
+ void slotClear ();
+
+protected:
+ virtual void hideEvent (QHideEvent*);
+ void init (const QString& = QString ::null );
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPanelMenu
+
diff --git a/python/pykde/sip/kdeui/kpassdlg.sip b/python/pykde/sip/kdeui/kpassdlg.sip
new file mode 100644
index 00000000..f52e1c1e
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpassdlg.sip
@@ -0,0 +1,138 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPasswordEdit : QLineEdit
+{
+%TypeHeaderCode
+#include <kpassdlg.h>
+%End
+
+
+public:
+
+ enum EchoModes
+ {
+ OneStar,
+ ThreeStars,
+ NoEcho
+ };
+
+ KPasswordEdit (QWidget* /TransferThis/ = 0, const char* = 0);
+ KPasswordEdit (EchoMode, QWidget* /TransferThis/, const char*);
+
+%If ( KDE_3_2_0 - )
+ KPasswordEdit (KPasswordEdit::EchoModes, QWidget* /TransferThis/, const char*);
+%End
+
+ KPasswordEdit (QWidget* /TransferThis/, const char*, int);
+ const char* password ();
+ void erase ();
+//ig const int PassLen;
+
+%If ( KDE_3_4_0 - )
+ void setMaxPasswordLength (int);
+ int maxPasswordLength () const;
+%End
+
+
+public slots:
+
+%If ( KDE_3_1_2 - )
+ virtual void insert (const QString&);
+%End
+
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void focusInEvent (QFocusEvent*);
+ virtual bool event (QEvent*);
+
+}; // class KPasswordEdit
+
+
+class KPasswordDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kpassdlg.h>
+%End
+
+
+public:
+
+ enum Types
+ {
+ Password,
+ NewPassword
+ };
+
+ KPasswordDialog (KPasswordDialog::Types, bool, int, QWidget* /TransferThis/ = 0, const char* = 0);
+ KPasswordDialog (int, QString, bool = 0, int = 0);
+
+%If ( KDE_3_3_0 - )
+ KPasswordDialog (KPasswordDialog::Types, bool, int, const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ void setPrompt (QString);
+ QString prompt () const;
+ void addLine (QString, QString);
+
+%If ( KDE_3_4_0 - )
+ void setAllowEmptyPasswords (bool);
+ bool allowEmptyPasswords () const;
+ void setMinimumPasswordLength (int);
+ int minimumPasswordLength () const;
+ void setMaximumPasswordLength (int);
+ int maximumPasswordLength () const;
+ void setReasonablePasswordLength (int);
+ int reasonablePasswordLength () const;
+ void setPasswordStrengthWarningLevel (int);
+ int passwordStrengthWarningLevel () const;
+%End
+
+ const char* password () const;
+
+%If ( KDE_3_3_0 - )
+ void clearPassword ();
+%End
+
+ bool keep () const;
+ static int getPassword (QCString&, QString, int* = 0);
+ static int getNewPassword (QCString&, QString);
+ static void disableCoreDumps ();
+
+protected slots:
+ void slotOk ();
+ void slotCancel ();
+ void slotKeep (bool);
+
+protected:
+ virtual bool checkPassword (const char*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPasswordDialog
+
diff --git a/python/pykde/sip/kdeui/kpassivepopup.sip b/python/pykde/sip/kdeui/kpassivepopup.sip
new file mode 100644
index 00000000..0d2918f3
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpassivepopup.sip
@@ -0,0 +1,112 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KPassivePopup : QFrame
+{
+%TypeHeaderCode
+#include <kpassivepopup.h>
+%End
+
+
+public:
+
+%If ( KDE_3_5_0 - )
+
+ enum PopupStyle
+ {
+ Boxed,
+ Balloon,
+ CustomStyle
+ };
+
+%End
+
+ KPassivePopup (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KPassivePopup (WId, const char* = 0, WFlags = 0);
+
+%If ( KDE_3_5_0 - )
+ KPassivePopup (int, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KPassivePopup (int, WId /TransferThis/, const char* = 0, WFlags = 0);
+%End
+
+ void setView (QWidget*);
+ void setView (const QString&, const QString& = QString ::null );
+ virtual void setView (const QString&, const QString&, const QPixmap&);
+ QVBox* standardView (const QString&, const QString&, const QPixmap&, QWidget* /Transfer/ = 0);
+ QWidget* view () const;
+ int timeout () const;
+ virtual void setAutoDelete (bool);
+ bool autoDelete () const;
+
+%If ( KDE_3_5_0 - )
+ void setAnchor (const QPoint&);
+%End
+
+ static KPassivePopup* message (const QString&, QWidget* /Transfer/, const char* = 0);
+ static KPassivePopup* message (const QString&, const QString&, QWidget* /Transfer/, const char* = 0);
+ static KPassivePopup* message (const QString&, const QString&, const QPixmap&, QWidget* /Transfer/, const char* = 0, int = -1);
+ static KPassivePopup* message (const QString&, const QString&, const QPixmap&, WId, const char* = 0, int = -1);
+
+%If ( KDE_3_5_0 - )
+ static KPassivePopup* message (int, const QString&, QWidget* /Transfer/, const char* = 0);
+ static KPassivePopup* message (int, const QString&, const QString&, QWidget* /Transfer/, const char* = 0);
+ static KPassivePopup* message (int, const QString&, const QString&, const QPixmap&, QWidget* /Transfer/, const char* = 0, int = -1);
+ static KPassivePopup* message (int, const QString&, const QString&, const QPixmap&, WId, const char* = 0, int = -1);
+%End
+
+
+public slots:
+ void setTimeout (int);
+ virtual void show ();
+
+%If ( KDE_3_5_0 - )
+ void show (const QPoint&);
+%End
+
+
+signals:
+ void clicked ();
+ void clicked (QPoint);
+
+protected:
+ virtual void positionSelf ();
+ virtual void hideEvent (QHideEvent*);
+ void moveNear (QRect);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ QRect defaultArea () const;
+
+%If ( KDE_3_5_0 - )
+ void updateMask ();
+ virtual void paintEvent (QPaintEvent*);
+%End
+
+
+}; // class KPassivePopup
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kpixmapio.sip b/python/pykde/sip/kdeui/kpixmapio.sip
new file mode 100644
index 00000000..874fc4fa
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpixmapio.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPixmapIO
+{
+%TypeHeaderCode
+#include <kpixmapio.h>
+%End
+
+
+public:
+ KPixmapIO ();
+ QPixmap convertToPixmap (const QImage&);
+ QImage convertToImage (const QPixmap&);
+ void putImage (QPixmap*, int, int, const QImage*);
+ void putImage (QPixmap*, const QPoint&, const QImage*);
+ QImage getImage (const QPixmap*, int, int, int, int);
+ QImage getImage (const QPixmap*, const QRect&);
+
+ enum ShmPolicies
+ {
+ ShmDontKeep,
+ ShmKeepAndGrow
+ };
+
+ void setShmPolicy (int);
+ void preAllocShm (int);
+
+}; // class KPixmapIO
+
diff --git a/python/pykde/sip/kdeui/kpixmapregionselectordialog.sip b/python/pykde/sip/kdeui/kpixmapregionselectordialog.sip
new file mode 100644
index 00000000..b21875b1
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpixmapregionselectordialog.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+
+class KPixmapRegionSelectorDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kpixmapregionselectordialog.h>
+%End
+
+
+public:
+ KPixmapRegionSelectorDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ KPixmapRegionSelectorWidget* pixmapRegionSelectorWidget () const;
+ static QRect getSelectedRegion (const QPixmap&, QWidget* /Transfer/ = 0);
+ static QRect getSelectedRegion (const QPixmap&, int, int, QWidget* /Transfer/ = 0);
+ static QImage getSelectedImage (const QPixmap&, QWidget* /Transfer/ = 0);
+ static QImage getSelectedImage (const QPixmap&, int, int, QWidget* /Transfer/ = 0);
+
+protected:
+
+}; // class KPixmapRegionSelectorDialog
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kpixmapregionselectorwidget.sip b/python/pykde/sip/kdeui/kpixmapregionselectorwidget.sip
new file mode 100644
index 00000000..07559a80
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpixmapregionselectorwidget.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+
+class KPixmapRegionSelectorWidget : QWidget
+{
+%TypeHeaderCode
+#include <kpixmapregionselectorwidget.h>
+%End
+
+
+public:
+ KPixmapRegionSelectorWidget (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setPixmap (const QPixmap&);
+ QPixmap pixmap () const;
+ void setSelectedRegion (const QRect&);
+ QRect selectedRegion () const;
+ QRect unzoomedSelectedRegion () const;
+ void resetSelection ();
+ QImage selectedImage () const;
+ void setSelectionAspectRatio (int, int);
+ void setFreeSelectionAspectRatio ();
+ void setMaximumWidgetSize (int, int);
+ void rotate (KImageEffect::RotateDirection);
+
+public slots:
+ void rotateClockwise ();
+ void rotateCounterclockwise ();
+
+protected:
+ virtual KPopupMenu* createPopupMenu ();
+
+}; // class KPixmapRegionSelectorWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kpopupmenu.sip b/python/pykde/sip/kdeui/kpopupmenu.sip
new file mode 100644
index 00000000..139b6915
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpopupmenu.sip
@@ -0,0 +1,149 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPopupTitle : QWidget
+{
+%TypeHeaderCode
+#include <kpopupmenu.h>
+%End
+
+
+public:
+ KPopupTitle (QWidget* /TransferThis/ = 0, const char* = 0);
+ KPopupTitle (KPixmapEffect::GradientType, const QColor&, const QColor&, QWidget* /TransferThis/ = 0, const char* = 0);
+ KPopupTitle (const KPixmap&, const QColor&, const QColor&, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setTitle (const QString&, const QPixmap* = 0);
+ QString title ();
+ QPixmap icon ();
+ QSize sizeHint () const;
+
+public slots:
+
+%If ( KDE_3_1_0 - )
+ void setText (const QString&);
+ void setIcon (const QPixmap&);
+%End
+
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ void calcSize ();
+%End
+
+ void paintEvent (QPaintEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPopupTitle
+
+
+class KPopupMenu : QPopupMenu
+{
+%TypeHeaderCode
+#include <kpopupmenu.h>
+%End
+
+
+public:
+ KPopupMenu (QWidget* /TransferThis/ = 0, const char* = 0);
+ int insertTitle (const QString&, int = -1, int = -1);
+ int insertTitle (const QPixmap&, const QString&, int = -1, int = -1);
+ void changeTitle (int, const QString&);
+ void changeTitle (int, const QPixmap&, const QString&);
+ QString title (int = -1);
+ QPixmap titlePixmap (int);
+
+%If ( KDE_3_1_0 - )
+ void setKeyboardShortcutsEnabled (bool);
+ void setKeyboardShortcutsExecute (bool);
+%End
+
+ KPopupMenu (const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setTitle (const QString&);
+
+%If ( KDE_3_2_0 - )
+ QPopupMenu* contextMenu ();
+ void hideContextMenu ();
+ static KPopupMenu* contextMenuFocus ();
+ static int contextMenuFocusItem ();
+
+%If ( KDE_3_4_0 - )
+ virtual void activateItemAt (int);
+ Qt::ButtonState state () const;
+%End
+
+%End
+
+
+signals:
+
+%If ( KDE_3_2_0 - )
+ void aboutToShowContextMenu (KPopupMenu*, int, QPopupMenu*);
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ virtual void closeEvent (QCloseEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+
+%If ( KDE_3_4_0 - )
+ virtual void mouseReleaseEvent (QMouseEvent*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual bool focusNextPrevChild (bool);
+ virtual void contextMenuEvent (QContextMenuEvent*);
+ virtual void hideEvent (QHideEvent*);
+%End
+
+%End
+
+//igx virtual void virtual_hook (int, void*);
+
+protected slots:
+
+%If ( KDE_3_1_0 - )
+ QString underlineText (const QString&, uint);
+ void resetKeyboardVars (bool = 0);
+
+%If ( KDE_3_2_0 - )
+ void itemHighlighted (int);
+ void showCtxMenu (QPoint);
+ void ctxMenuHiding ();
+ void ctxMenuHideShowingMenu ();
+%End
+
+%End
+
+
+}; // class KPopupMenu
+
diff --git a/python/pykde/sip/kdeui/kprogress.sip b/python/pykde/sip/kdeui/kprogress.sip
new file mode 100644
index 00000000..4336a3ea
--- /dev/null
+++ b/python/pykde/sip/kdeui/kprogress.sip
@@ -0,0 +1,102 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProgress : QProgressBar
+{
+%TypeHeaderCode
+#include <kprogress.h>
+%End
+
+
+public:
+ KProgress (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KProgress (int, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ void setTextEnabled (bool);
+ int value () const;
+ bool textEnabled () const;
+ QString format () const;
+ void setRange (int, int);
+ int maxValue ();
+
+public slots:
+ void setFormat (const QString&);
+ void setTotalSteps (int);
+ virtual void setProgress (int);
+ void setValue (int);
+ virtual void advance (int);
+
+signals:
+ void percentageChanged (int);
+
+protected:
+ virtual bool setIndicator (QString&, int, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KProgress
+
+
+class KProgressDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kprogress.h>
+%End
+
+
+public:
+ KProgressDialog (QWidget* /TransferThis/ = 0, const char* = 0, const QString& = QString ::null , const QString& = QString ::null , bool = 0);
+ KProgress* progressBar ();
+ void setLabel (const QString&);
+ QString labelText ();
+ void setAllowCancel (bool);
+ bool allowCancel ();
+ void showCancelButton (bool);
+ void setAutoClose (bool);
+ bool autoClose ();
+ void setAutoReset (bool);
+ bool autoReset ();
+ bool wasCancelled ();
+ void setButtonText (const QString&);
+ QString buttonText ();
+ void setMinimumDuration (int);
+ int minimumDuration ();
+
+%If ( KDE_3_5_3 - )
+ virtual void show ();
+%End
+
+
+protected slots:
+ void slotAutoShow ();
+ void slotAutoActions (int);
+ void slotCancel ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KProgressDialog
+
diff --git a/python/pykde/sip/kdeui/kpushbutton.sip b/python/pykde/sip/kdeui/kpushbutton.sip
new file mode 100644
index 00000000..0080bbb2
--- /dev/null
+++ b/python/pykde/sip/kdeui/kpushbutton.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPushButton : QPushButton
+{
+%TypeHeaderCode
+#include <kpushbutton.h>
+%End
+
+
+public:
+ KPushButton (QWidget* /TransferThis/, const char* = 0);
+ KPushButton (const QString&, QWidget* /TransferThis/, const char* = 0);
+ KPushButton (const QIconSet&, const QString&, QWidget* /TransferThis/, const char* = 0);
+ KPushButton (const KGuiItem&, QWidget* /TransferThis/, const char* = 0);
+ void setDragEnabled (bool);
+ bool isDragEnabled () const;
+ void setGuiItem (const KGuiItem&);
+
+%If ( KDE_3_4_0 - )
+ void setGuiItem (KStdGuiItem::StdItem);
+ KStdGuiItem::StdItem guiItem () const;
+ void setGuiItm (int);
+ int guiItm () const;
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void setIconSet (const QIconSet&);
+ void setText (const QString&);
+%End
+
+
+protected:
+ virtual QDragObject* dragObject ();
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void startDrag ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPushButton
+
diff --git a/python/pykde/sip/kdeui/krestrictedline.sip b/python/pykde/sip/kdeui/krestrictedline.sip
new file mode 100644
index 00000000..4158745f
--- /dev/null
+++ b/python/pykde/sip/kdeui/krestrictedline.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRestrictedLine : KLineEdit
+{
+%TypeHeaderCode
+#include <krestrictedline.h>
+%End
+
+
+public:
+ KRestrictedLine (QWidget* /TransferThis/ = 0, const char* = 0, const QString& = QString ::null );
+ void setValidChars (const QString&);
+ QString validChars () const;
+
+signals:
+ void invalidChar (int);
+
+protected:
+ void keyPressEvent (QKeyEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRestrictedLine
+
diff --git a/python/pykde/sip/kdeui/krootpixmap.sip b/python/pykde/sip/kdeui/krootpixmap.sip
new file mode 100644
index 00000000..a69c3f8b
--- /dev/null
+++ b/python/pykde/sip/kdeui/krootpixmap.sip
@@ -0,0 +1,71 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRootPixmap : QObject
+{
+%TypeHeaderCode
+#include <krootpixmap.h>
+%End
+
+
+public:
+ KRootPixmap (QWidget*, const char* = 0);
+ KRootPixmap (QWidget*, QObject* /TransferThis/, const char* = 0);
+ bool isAvailable () const;
+ bool isActive () const;
+ int currentDesktop () const;
+ bool customPainting () const;
+ bool checkAvailable (bool);
+
+%If ( KDE_3_2_0 - )
+ const QColor& color () const;
+ double opacity () const;
+%End
+
+
+public slots:
+ virtual void start ();
+ virtual void stop ();
+ void setFadeEffect (double, const QColor&);
+ void repaint (bool);
+ void repaint ();
+ void setCustomPainting (bool);
+ void enableExports ();
+
+%If ( KDE_3_2_0 - )
+//ig static QString pixmapName (int);
+%End
+
+
+signals:
+ void backgroundUpdated (const QPixmap&);
+
+protected:
+ virtual bool eventFilter (QObject*, QEvent*);
+//ig virtual void updateBackground (KSharedPixmap*);
+
+}; // class KRootPixmap
+
diff --git a/python/pykde/sip/kdeui/kruler.sip b/python/pykde/sip/kdeui/kruler.sip
new file mode 100644
index 00000000..a7ea547f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kruler.sip
@@ -0,0 +1,108 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRuler : QFrame
+{
+%TypeHeaderCode
+#include <kruler.h>
+%End
+
+
+public:
+
+ enum MetricStyle
+ {
+ Custom,
+ Pixel,
+ Inch,
+ Millimetres,
+ Centimetres,
+ Metres
+ };
+
+ KRuler (QWidget* /TransferThis/ = 0, const char* = 0);
+ KRuler (Orientation, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KRuler (Orientation, int, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ void setMinValue (int);
+ int minValue () const;
+ void setMaxValue (int);
+ int maxValue () const;
+ void setRange (int, int);
+ void setValue (int);
+ int value () const;
+ void setTinyMarkDistance (int);
+ int tinyMarkDistance () const;
+ void setLittleMarkDistance (int);
+ int littleMarkDistance () const;
+ void setMediumMarkDistance (int);
+ int mediumMarkDistance () const;
+ void setBigMarkDistance (int);
+ int bigMarkDistance () const;
+ void setShowTinyMarks (bool);
+ bool showTinyMarks () const;
+ void setShowLittleMarks (bool);
+ bool showLittleMarks () const;
+ void setShowMediumMarks (bool);
+ bool showMediumMarks () const;
+ void setShowBigMarks (bool);
+ bool showBigMarks () const;
+ void setShowEndMarks (bool);
+ bool showEndMarks () const;
+ void setShowPointer (bool);
+ bool showPointer () const;
+ void setValuePerLittleMark (int);
+ void setValuePerMediumMark (int);
+ void setValuePerBigMark (int);
+ void setShowEndLabel (bool);
+ bool showEndLabel () const;
+ void setEndLabel (const QString&);
+ QString endLabel () const;
+ void setRulerMetricStyle (KRuler::MetricStyle);
+ void setPixelPerMark (double);
+ double pixelPerMark () const;
+ void setLength (int);
+ int length () const;
+ void setLengthFixed (bool);
+ bool lengthFixed () const;
+ void slideUp (int = 1);
+ void slideDown (int = 1);
+ void setOffset (int);
+ int offset () const;
+ int endOffset () const;
+
+public slots:
+ void slotNewValue (int);
+ void slotNewOffset (int);
+ void slotEndOffset (int);
+
+protected:
+ virtual void drawContents (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRuler
+
diff --git a/python/pykde/sip/kdeui/kscrollview.sip b/python/pykde/sip/kdeui/kscrollview.sip
new file mode 100644
index 00000000..853e8cbf
--- /dev/null
+++ b/python/pykde/sip/kdeui/kscrollview.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_5_0 - )
+
+class KScrollView : QScrollView
+{
+%TypeHeaderCode
+#include <kscrollview.h>
+%End
+
+
+public:
+ KScrollView (QWidget* /TransferThis/ = 0, const char* = 0, Qt::WFlags = 0);
+
+public slots:
+ void scrollBy (int, int);
+
+protected:
+ virtual void wheelEvent (QWheelEvent*);
+ void startScrolling ();
+ void stopScrolling ();
+
+protected slots:
+ void scrollTick ();
+
+}; // class KScrollView
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kselect.sip b/python/pykde/sip/kdeui/kselect.sip
new file mode 100644
index 00000000..0177514d
--- /dev/null
+++ b/python/pykde/sip/kdeui/kselect.sip
@@ -0,0 +1,142 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KXYSelector : QWidget
+{
+%TypeHeaderCode
+#include <kselect.h>
+%End
+
+
+public:
+ KXYSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setValues (int, int);
+
+%If ( KDE_3_3_0 - )
+ void setXValue (int);
+ void setYValue (int);
+%End
+
+ void setRange (int, int, int, int);
+ int xValue ();
+ int yValue ();
+ QRect contentsRect () const;
+
+signals:
+ void valueChanged (int, int);
+
+protected:
+ virtual void drawContents (QPainter*);
+ virtual void drawCursor (QPainter*, int, int);
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+ void valuesFromPosition (int, int, int&, int&) const;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KXYSelector
+
+
+class KSelector : QWidget, QRangeControl
+{
+%TypeHeaderCode
+#include <kselect.h>
+%End
+
+
+public:
+ KSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+ KSelector (Orientation, QWidget* /TransferThis/ = 0, const char* = 0);
+ Orientation orientation () const;
+ QRect contentsRect () const;
+ void setIndent (bool);
+ bool indent () const;
+ void setValue (int);
+ int value () const;
+ void setMinValue (int);
+ int minValue () const;
+ void setMaxValue (int);
+ int maxValue () const;
+
+signals:
+ void valueChanged (int);
+
+protected:
+ virtual void drawContents (QPainter*);
+ virtual void drawArrow (QPainter*, bool, const QPoint&);
+ virtual void valueChange ();
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSelector
+
+
+class KGradientSelector : KSelector
+{
+%TypeHeaderCode
+#include <kselect.h>
+%End
+
+
+public:
+ KGradientSelector (QWidget* /TransferThis/ = 0, const char* = 0);
+ KGradientSelector (Orientation, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setColors (const QColor&, const QColor&);
+ void setText (const QString&, const QString&);
+ void setFirstColor (const QColor&);
+ void setSecondColor (const QColor&);
+ void setFirstText (const QString&);
+ void setSecondText (const QString&);
+ const QColor firstColor () const;
+ const QColor secondColor () const;
+ const QString firstText () const;
+ const QString secondText () const;
+
+protected:
+ virtual void drawContents (QPainter*);
+ virtual QSize minimumSize () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KGradientSelector
+
diff --git a/python/pykde/sip/kdeui/kseparator.sip b/python/pykde/sip/kdeui/kseparator.sip
new file mode 100644
index 00000000..c54f7c8c
--- /dev/null
+++ b/python/pykde/sip/kdeui/kseparator.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSeparator : QFrame
+{
+%TypeHeaderCode
+#include <kseparator.h>
+%End
+
+
+public:
+ KSeparator (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KSeparator (int, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ int orientation () const;
+ void setOrientation (int);
+ virtual QSize sizeHint () const;
+
+protected:
+ virtual void drawFrame (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSeparator
+
diff --git a/python/pykde/sip/kdeui/ksharedpixmap.sip b/python/pykde/sip/kdeui/ksharedpixmap.sip
new file mode 100644
index 00000000..85254ea7
--- /dev/null
+++ b/python/pykde/sip/kdeui/ksharedpixmap.sip
@@ -0,0 +1,62 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSharedPixmap : QWidget, KPixmap
+{
+%TypeHeaderCode
+#include <qwidget.h>
+#include <qpaintdevice.h>
+#include <qpixmap.h>
+#include <kpixmap.h>
+#include <ksharedpixmap.h>
+%End
+
+
+public:
+ KSharedPixmap ();
+
+%If ( KDE_3_1_2 - )
+ bool loadFromShared (const QString&, const QRect& = QRect ());
+ bool isAvailable (const QString&) const;
+%End
+
+
+signals:
+ void done (bool);
+
+protected:
+//ig bool x11Event (XEvent*);
+
+public:
+
+%If ( - KDE_3_1_2 )
+ bool loadFromShared (QString, QRect = QRect ());
+ bool isAvailable (QString);
+%End
+
+
+}; // class KSharedPixmap
+
diff --git a/python/pykde/sip/kdeui/kshortcutdialog.sip b/python/pykde/sip/kdeui/kshortcutdialog.sip
new file mode 100644
index 00000000..1713cab9
--- /dev/null
+++ b/python/pykde/sip/kdeui/kshortcutdialog.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+
+class KShortcutDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kshortcutdialog.h>
+%End
+
+
+public:
+ KShortcutDialog (const KShortcut&, bool, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setShortcut (const KShortcut&);
+ const KShortcut& shortcut () const;
+
+protected slots:
+ void slotDetails ();
+ void slotSelectPrimary ();
+ void slotSelectAlternate ();
+ void slotClearShortcut ();
+ void slotClearPrimary ();
+ void slotClearAlternate ();
+ void slotMultiKeyMode (bool);
+
+}; // class KShortcutDialog
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ksplashscreen.sip b/python/pykde/sip/kdeui/ksplashscreen.sip
new file mode 100644
index 00000000..9e98b02e
--- /dev/null
+++ b/python/pykde/sip/kdeui/ksplashscreen.sip
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KSplashScreen : QSplashScreen
+{
+%TypeHeaderCode
+#include <ksplashscreen.h>
+%End
+
+
+public:
+ KSplashScreen (const QPixmap&, WFlags = 0);
+
+}; // class KSplashScreen
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ksqueezedtextlabel.sip b/python/pykde/sip/kdeui/ksqueezedtextlabel.sip
new file mode 100644
index 00000000..1c5d8a1b
--- /dev/null
+++ b/python/pykde/sip/kdeui/ksqueezedtextlabel.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSqueezedTextLabel : QLabel
+{
+%TypeHeaderCode
+#include <ksqueezedtextlabel.h>
+%End
+
+
+public:
+ KSqueezedTextLabel (QWidget* /TransferThis/, const char* = 0);
+ KSqueezedTextLabel (const QString&, QWidget* /TransferThis/, const char* = 0);
+ virtual QSize minimumSizeHint () const;
+
+%If ( KDE_3_3_0 - )
+ virtual QSize sizeHint () const;
+
+%If ( KDE_3_4_0 - )
+ virtual void setAlignment (int);
+%End
+
+%End
+
+
+public slots:
+ void setText (const QString&);
+
+protected:
+ void resizeEvent (QResizeEvent*);
+ void squeezeTextToLabel ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSqueezedTextLabel
+
diff --git a/python/pykde/sip/kdeui/kstatusbar.sip b/python/pykde/sip/kdeui/kstatusbar.sip
new file mode 100644
index 00000000..ca00f8bf
--- /dev/null
+++ b/python/pykde/sip/kdeui/kstatusbar.sip
@@ -0,0 +1,82 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStatusBarLabel : QLabel
+{
+%TypeHeaderCode
+#include <kstatusbar.h>
+%End
+
+
+public:
+ KStatusBarLabel (const QString&, int, KStatusBar* /TransferThis/ = 0, const char* = 0);
+
+protected:
+ void mousePressEvent (QMouseEvent*);
+ void mouseReleaseEvent (QMouseEvent*);
+
+signals:
+ void itemPressed (int);
+ void itemReleased (int);
+
+}; // class KStatusBarLabel
+
+
+class KStatusBar : QStatusBar
+{
+%TypeHeaderCode
+#include <kstatusbar.h>
+%End
+
+
+public:
+
+ enum BarStatus
+ {
+ Toggle,
+ Show,
+ Hide
+ };
+
+ KStatusBar (QWidget* /TransferThis/ = 0, const char* = 0);
+ void insertItem (const QString&, int, int = 0, bool = 0);
+ void insertFixedItem (const QString&, int, bool = 0);
+ void removeItem (int);
+
+%If ( KDE_3_2_0 - )
+ bool hasItem (int) const;
+%End
+
+ void changeItem (const QString&, int);
+ void setItemAlignment (int, int);
+ void setItemFixed (int, int = -1);
+
+signals:
+ void pressed (int);
+ void released (int);
+
+}; // class KStatusBar
+
diff --git a/python/pykde/sip/kdeui/kstdaction.sip b/python/pykde/sip/kdeui/kstdaction.sip
new file mode 100644
index 00000000..6b63b446
--- /dev/null
+++ b/python/pykde/sip/kdeui/kstdaction.sip
@@ -0,0 +1,327 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KStdAction
+{
+
+%If ( KDE_3_2_0 - )
+
+enum StdAction
+{
+ ActionNone,
+ New,
+ Open,
+ OpenRecent,
+ Save,
+ SaveAs,
+ Revert,
+ Close,
+ Print,
+ PrintPreview,
+ Mail,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ ActualSize,
+ FitToPage,
+ FitToWidth,
+ FitToHeight,
+ ZoomIn,
+ ZoomOut,
+ Zoom,
+ Redisplay,
+ Up,
+ Back,
+ Forward,
+ Home,
+ Prior,
+ Next,
+ Goto,
+ GotoPage,
+ GotoLine,
+ FirstPage,
+ LastPage,
+ AddBookmark,
+ EditBookmarks,
+ Spelling,
+ ShowMenubar,
+ ShowToolbar,
+ ShowStatusbar,
+ SaveOptions,
+ KeyBindings,
+ Preferences,
+ ConfigureToolbars,
+ Help,
+ HelpContents,
+ WhatsThis,
+ ReportBug,
+ AboutApp,
+ AboutKDE,
+ TipofDay,
+ ConfigureNotifications,
+ FullScreen,
+ Clear,
+ PasteText
+};
+
+%End
+
+KAction* create (KStdAction::StdAction, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/);
+const char* name (KStdAction::StdAction);
+
+%If ( KDE_3_1_0 - )
+QStringList stdNames ();
+%End
+
+KAction* openNew (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* open (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KRecentFilesAction* openRecent (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* save (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* saveAs (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* revert (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* close (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* print (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0) /PyName=print_/;
+KAction* printPreview (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* mail (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* quit (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* undo (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* redo (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* cut (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* copy (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* paste (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+KAction* pasteText (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection*, const char* = 0);
+KAction* clear (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection*, const char* = 0);
+%End
+
+KAction* selectAll (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* deselect (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* find (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* findNext (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* findPrev (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* replace (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* actualSize (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* fitToPage (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* fitToWidth (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* fitToHeight (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* zoomIn (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* zoomOut (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* zoom (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* redisplay (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* up (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* back (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* forward (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* home (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* prior (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* next (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* goTo (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* gotoPage (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* gotoLine (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* firstPage (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* lastPage (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* addBookmark (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* editBookmarks (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* spelling (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KToggleAction* showMenubar (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KToggleAction* showToolbar (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+KToggleToolBarAction* showToolbar (const char*, KActionCollection* /Transfer/, const char* = 0);
+%End
+
+KToggleAction* showStatusbar (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+KToggleFullScreenAction* fullScreen (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection*, QWidget*, const char* = 0);
+%End
+
+KAction* saveOptions (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* keyBindings (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* preferences (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* configureToolbars (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+KAction* configureNotifications (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+%End
+
+KAction* help (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* helpContents (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* whatsThis (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_1_0 - )
+KAction* tipOfDay (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+%End
+
+KAction* reportBug (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* aboutApp (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+KAction* aboutKDE (SIP_RXOBJ_CON, SIP_SLOT_CON (), KActionCollection* /Transfer/, const char* = 0);
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+enum StdAction
+{
+ ActionNone,
+ New,
+ Open,
+ OpenRecent,
+ Save,
+ SaveAs,
+ Revert,
+ Close,
+ Print,
+ PrintPreview,
+ Mail,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ ActualSize,
+ FitToPage,
+ FitToWidth,
+ FitToHeight,
+ ZoomIn,
+ ZoomOut,
+ Zoom,
+ Redisplay,
+ Up,
+ Back,
+ Forward,
+ Home,
+ Prior,
+ Next,
+ Goto,
+ GotoPage,
+ GotoLine,
+ FirstPage,
+ LastPage,
+ AddBookmark,
+ EditBookmarks,
+ Spelling,
+ ShowMenubar,
+ ShowToolbar,
+ ShowStatusbar,
+ SaveOptions,
+ KeyBindings,
+ Preferences,
+ ConfigureToolbars,
+ Help,
+ HelpContents,
+ WhatsThis,
+ ReportBug,
+ AboutApp,
+ AboutKDE,
+ TipofDay,
+ ConfigureNotifications
+};
+
+%End
+
+
+%If ( - KDE_3_1_0 )
+
+enum StdAction
+{
+ ActionNone,
+ New,
+ Open,
+ OpenRecent,
+ Save,
+ SaveAs,
+ Revert,
+ Close,
+ Print,
+ PrintPreview,
+ Mail,
+ Quit,
+ Undo,
+ Redo,
+ Cut,
+ Copy,
+ Paste,
+ SelectAll,
+ Deselect,
+ Find,
+ FindNext,
+ FindPrev,
+ Replace,
+ ActualSize,
+ FitToPage,
+ FitToWidth,
+ FitToHeight,
+ ZoomIn,
+ ZoomOut,
+ Zoom,
+ Redisplay,
+ Up,
+ Back,
+ Forward,
+ Home,
+ Prior,
+ Next,
+ Goto,
+ GotoPage,
+ GotoLine,
+ FirstPage,
+ LastPage,
+ AddBookmark,
+ EditBookmarks,
+ Spelling,
+ ShowMenubar,
+ ShowToolbar,
+ ShowStatusbar,
+ SaveOptions,
+ KeyBindings,
+ Preferences,
+ ConfigureToolbars,
+ Help,
+ HelpContents,
+ WhatsThis,
+ ReportBug,
+ AboutApp,
+ AboutKDE
+};
+
+%End
+
+}; // namespace KStdAction
+
diff --git a/python/pykde/sip/kdeui/kstdguiitem.sip b/python/pykde/sip/kdeui/kstdguiitem.sip
new file mode 100644
index 00000000..d99cb017
--- /dev/null
+++ b/python/pykde/sip/kdeui/kstdguiitem.sip
@@ -0,0 +1,352 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStdGuiItem
+{
+%TypeHeaderCode
+#include <kstdguiitem.h>
+%End
+
+
+public:
+
+ enum BidiMode
+ {
+ UseRTL,
+ IgnoreRTL
+ };
+
+
+%If ( KDE_3_5_0 - )
+
+ enum StdItem
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Discard,
+ Save,
+ DontSave,
+ SaveAs,
+ Apply,
+ Clear,
+ Help,
+ Defaults,
+ Close,
+ Back,
+ Forward,
+ Print,
+ Continue,
+ Open,
+ Quit,
+ AdminMode,
+ Reset,
+ Delete,
+ Insert,
+ Configure,
+ Find,
+ Stop,
+ Add,
+ Remove,
+ Test,
+ Properties,
+ Overwrite
+ };
+
+%End
+
+ static KGuiItem guiItem (KStdGuiItem::StdItem);
+ static QString stdItem (KStdGuiItem::StdItem);
+ static KGuiItem ok ();
+ static KGuiItem cancel ();
+ static KGuiItem yes ();
+ static KGuiItem no ();
+
+%If ( KDE_3_3_0 - )
+ static KGuiItem insert ();
+%End
+
+ static KGuiItem discard ();
+ static KGuiItem save ();
+ static KGuiItem help ();
+ static KGuiItem dontSave ();
+ static KGuiItem saveAs ();
+ static KGuiItem apply ();
+ static KGuiItem clear ();
+ static KGuiItem defaults ();
+ static KGuiItem close ();
+ static KGuiItem print () /PyName=print_/;
+
+%If ( KDE_3_4_0 - )
+ static KGuiItem properties ();
+%End
+
+
+%If ( KDE_3_3_0 - )
+ static KGuiItem reset ();
+
+%If ( KDE_3_5_0 - )
+ static KGuiItem overwrite ();
+%End
+
+ static KGuiItem adminMode ();
+%End
+
+ static KGuiItem cont ();
+
+%If ( KDE_3_3_0 - )
+ static KGuiItem del ();
+%End
+
+
+%If ( KDE_3_2_0 - )
+ static KGuiItem open ();
+%End
+
+ static KGuiItem back (KStdGuiItem::BidiMode = IgnoreRTL );
+ static KGuiItem forward (KStdGuiItem::BidiMode = IgnoreRTL );
+
+%If ( KDE_3_4_0 - )
+ static KGuiItem configure ();
+%End
+
+ static QPair<KGuiItem,KGuiItem> backAndForward ();
+
+%If ( KDE_3_2_0 - )
+ static KGuiItem quit ();
+
+%If ( KDE_3_4_0 - )
+ static KGuiItem find ();
+ static KGuiItem stop ();
+ static KGuiItem add ();
+ static KGuiItem remove ();
+ static KGuiItem test ();
+%End
+
+%End
+
+
+public:
+
+%If ( KDE_3_4_0 - KDE_3_5_0 )
+
+ enum StdItem
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Discard,
+ Save,
+ DontSave,
+ SaveAs,
+ Apply,
+ Clear,
+ Help,
+ Defaults,
+ Close,
+ Back,
+ Forward,
+ Print,
+ Continue,
+ Open,
+ Quit,
+ AdminMode,
+ Reset,
+ Delete,
+ Insert,
+ Configure,
+ Find,
+ Stop,
+ Add,
+ Remove,
+ Test,
+ Properties
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - KDE_3_4_0 )
+
+ enum StdItem
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Discard,
+ Save,
+ DontSave,
+ SaveAs,
+ Apply,
+ Clear,
+ Help,
+ Defaults,
+ Close,
+ Back,
+ Forward,
+ Print,
+ Continue,
+ Open,
+ Quit,
+ AdminMode,
+ Reset,
+ Delete,
+ Insert
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+ enum StdItem
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Discard,
+ Save,
+ DontSave,
+ SaveAs,
+ Apply,
+ Clear,
+ Help,
+ Defaults,
+ Close,
+ Back,
+ Forward,
+ Print,
+ Continue,
+ Open,
+ Quit
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum StdItem
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Discard,
+ Save,
+ DontSave,
+ SaveAs,
+ Apply,
+ Clear,
+ Help,
+ Defaults,
+ Close,
+ Back,
+ Forward,
+ Print,
+ Continue
+ };
+
+%End
+
+
+}; // class KStdGuiItem
+
+
+
+%MappedType QPair<KGuiItem,KGuiItem>
+//converts a Python tuple (KGuiItem,KGuiItem)
+{
+%TypeHeaderCode
+#include <kguiitem.h>
+#include <sipkdeuiKGuiItem.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyTuple_New(0);
+
+ // Create the tuple
+ PyObject *pytuple;
+ if ((pytuple = PyTuple_New(0)) == NULL)
+ return NULL;
+
+ QPair<KGuiItem,KGuiItem> *cpp = (QPair<KGuiItem,KGuiItem> *)sipCpp;
+ PyObject *inst = NULL;
+
+ // Get it.
+ KGuiItem g1 = (*cpp).first;
+ KGuiItem g2 = (*cpp).second;
+ PyObject *pyg1 = sipBuildResult (NULL, "N", new KGuiItem (g1), sipClass_KGuiItem);
+ PyObject *pyg2 = sipBuildResult (NULL, "N", new KGuiItem (g2), sipClass_KGuiItem);
+ if ((pyg1 == NULL) || (pyg2 == NULL) || ((inst = Py_BuildValue ("NN", pyg1, pyg2)) == NULL))
+ {
+ Py_XDECREF (inst);
+ Py_XDECREF (pyg1);
+ Py_XDECREF (pyg2);
+ return NULL;
+ }
+
+ return inst;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyTuple_Check(sipPy);
+
+ KGuiItem g1, g2;
+ int iserr = 0;
+
+ PyObject *pyg1 = PyTuple_GET_ITEM (sipPy, 0);
+ PyObject *pyg2 = PyTuple_GET_ITEM (sipPy, 1);
+ g1 = *(KGuiItem *)sipForceConvertTo_KGuiItem (pyg1, &iserr);
+ g2 = *(KGuiItem *)sipForceConvertTo_KGuiItem (pyg2, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+
+ *sipCppPtr = new QPair<KGuiItem, KGuiItem> (g1, g2);
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/kstringvalidator.sip b/python/pykde/sip/kdeui/kstringvalidator.sip
new file mode 100644
index 00000000..91a0f86f
--- /dev/null
+++ b/python/pykde/sip/kdeui/kstringvalidator.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KStringListValidator : QValidator
+{
+%TypeHeaderCode
+#include <kstringvalidator.h>
+%End
+
+
+public:
+ KStringListValidator (const QStringList& = QStringList (), bool = 1, bool = 0, QObject* /TransferThis/ = 0, const char* = 0);
+ virtual State validate (QString&, int&) const;
+ virtual void fixup (QString&) const;
+ void setRejecting (bool);
+ bool isRejecting () const;
+ void setFixupEnabled (bool);
+ bool isFixupEnabled () const;
+ void setStringList (const QStringList&);
+ QStringList stringList () const;
+
+protected:
+
+}; // class KStringListValidator
+
+
+class KMimeTypeValidator : QValidator
+{
+%TypeHeaderCode
+#include <kstringvalidator.h>
+%End
+
+
+public:
+ KMimeTypeValidator (QObject* /TransferThis/, const char* = 0);
+ virtual State validate (QString&, int&) const;
+ virtual void fixup (QString&) const;
+
+}; // class KMimeTypeValidator
+
diff --git a/python/pykde/sip/kdeui/ksystemtray.sip b/python/pykde/sip/kdeui/ksystemtray.sip
new file mode 100644
index 00000000..af3569ea
--- /dev/null
+++ b/python/pykde/sip/kdeui/ksystemtray.sip
@@ -0,0 +1,84 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSystemTray : QLabel
+{
+%TypeHeaderCode
+#include <ksystemtray.h>
+%End
+
+
+public:
+ KSystemTray (QWidget* /TransferThis/ = 0, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ KPopupMenu* contextMenu () const;
+ KActionCollection* actionCollection ();
+
+%If ( KDE_3_4_0 - )
+ virtual void setPixmap (const QPixmap&);
+ virtual void setCaption (const QString&);
+%End
+
+ static QPixmap loadIcon (const QString&, KInstance* = KGlobal ::instance ());
+%End
+
+
+signals:
+
+%If ( KDE_3_1_0 - )
+ void quitSelected ();
+%End
+
+
+public slots:
+
+%If ( KDE_3_3_0 - )
+ void toggleActive ();
+ void setActive ();
+ void setInactive ();
+%End
+
+
+protected:
+ void mousePressEvent (QMouseEvent*);
+ void mouseReleaseEvent (QMouseEvent*);
+ virtual void contextMenuAboutToShow (KPopupMenu*);
+ void showEvent (QShowEvent*);
+ void enterEvent (QEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ KPopupMenu* contextMenu ();
+%End
+
+
+}; // class KSystemTray
+
diff --git a/python/pykde/sip/kdeui/ktabbar.sip b/python/pykde/sip/kdeui/ktabbar.sip
new file mode 100644
index 00000000..0a4a411d
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktabbar.sip
@@ -0,0 +1,98 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KTabBar : QTabBar
+{
+%TypeHeaderCode
+#include <ktabbar.h>
+%End
+
+
+public:
+ KTabBar (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setTabEnabled (int, bool);
+ const QColor& tabColor (int) const;
+ void setTabColor (int, const QColor&);
+
+%If ( KDE_3_3_0 - )
+ virtual int insertTab (QTab*, int = -1);
+%End
+
+ virtual void removeTab (QTab*);
+ void setTabReorderingEnabled (bool);
+ bool isTabReorderingEnabled () const;
+ void setHoverCloseButton (bool);
+ bool hoverCloseButton () const;
+ void setHoverCloseButtonDelayed (bool);
+ bool hoverCloseButtonDelayed () const;
+
+%If ( KDE_3_3_0 - )
+ void setTabCloseActivatePrevious (bool);
+ bool tabCloseActivatePrevious () const;
+%End
+
+
+signals:
+ void contextMenu (int, const QPoint&);
+ void mouseDoubleClick (int);
+ void mouseMiddleClick (int);
+ void initiateDrag (int);
+//ig void testCanDecode (const QDragMoveEvent*, bool&);
+ void receivedDropEvent (int, QDropEvent*);
+ void moveTab (int, int);
+ void closeRequest (int);
+
+%If ( KDE_3_3_0 - )
+ void wheelDelta (int);
+%End
+
+
+protected:
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+
+%If ( KDE_3_3_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+%End
+
+ virtual void dragMoveEvent (QDragMoveEvent*);
+ virtual void dropEvent (QDropEvent*);
+ virtual void paintLabel (QPainter*, const QRect&, QTab*, bool) const;
+
+protected slots:
+ virtual void closeButtonClicked ();
+ virtual void onLayoutChange ();
+ virtual void enableCloseButton ();
+ virtual void activateDragSwitchTab ();
+
+}; // class KTabBar
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ktabctl.sip b/python/pykde/sip/kdeui/ktabctl.sip
new file mode 100644
index 00000000..30cc63e6
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktabctl.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTabCtl : QWidget
+{
+%TypeHeaderCode
+#include <ktabctl.h>
+%End
+
+
+public:
+ KTabCtl (QWidget* /TransferThis/ = 0, const char* = 0);
+ void show ();
+ void setFont (const QFont&);
+ void setTabFont (const QFont&);
+ void addTab (QWidget*, const QString&);
+ bool isTabEnabled (const QString&);
+ void setTabEnabled (const QString&, bool);
+ void setBorder (bool);
+ void setShape (QTabBar::Shape);
+ virtual QSize sizeHint () const;
+
+protected:
+ void paintEvent (QPaintEvent*);
+ void resizeEvent (QResizeEvent*);
+
+signals:
+ void tabSelected (int);
+
+protected slots:
+ void showTab (int);
+
+protected:
+ void setSizes ();
+ QRect getChildRect () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KTabCtl
+
diff --git a/python/pykde/sip/kdeui/ktabwidget.sip b/python/pykde/sip/kdeui/ktabwidget.sip
new file mode 100644
index 00000000..92a8bd6b
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktabwidget.sip
@@ -0,0 +1,144 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KTabWidget : QTabWidget
+{
+%TypeHeaderCode
+#include <ktabwidget.h>
+%End
+
+
+public:
+ KTabWidget (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ void setTabColor (QWidget*, const QColor&);
+ QColor tabColor (QWidget*) const;
+ bool isTabReorderingEnabled () const;
+ bool hoverCloseButton () const;
+ bool hoverCloseButtonDelayed () const;
+
+%If ( KDE_3_3_0 - )
+ bool tabCloseActivatePrevious () const;
+
+%If ( KDE_3_4_0 - )
+ bool automaticResizeTabs () const;
+ void setTabBarHidden (bool);
+ bool isTabBarHidden () const;
+ virtual void insertTab (QWidget*, const QString&, int = -1);
+ virtual void insertTab (QWidget*, const QIconSet&, const QString&, int = -1);
+ virtual void insertTab (QWidget*, QTab*, int = -1);
+ void changeTab (QWidget*, const QString&);
+ void changeTab (QWidget*, const QIconSet&, const QString&);
+ QString label (int) const;
+ QString tabLabel (QWidget*) const;
+ void setTabLabel (QWidget*, const QString&);
+%End
+
+%End
+
+
+public slots:
+ virtual void moveTab (int, int);
+
+%If ( KDE_3_4_0 - )
+ virtual void removePage (QWidget*);
+%End
+
+ void setTabReorderingEnabled (bool);
+ void setHoverCloseButton (bool);
+ void setHoverCloseButtonDelayed (bool);
+
+%If ( KDE_3_3_0 - )
+ void setTabCloseActivatePrevious (bool);
+
+%If ( KDE_3_4_0 - )
+ void setAutomaticResizeTabs (bool);
+%End
+
+%End
+
+
+signals:
+//ig void testCanDecode (const QDragMoveEvent*, bool&);
+ void receivedDropEvent (QDropEvent*);
+ void receivedDropEvent (QWidget*, QDropEvent*);
+ void initiateDrag (QWidget*);
+//ig void contextMenu (const QPoint&);
+ void contextMenu (QWidget*, const QPoint&);
+ void movedTab (int, int);
+
+%If ( KDE_3_3_0 - )
+ void mouseDoubleClick ();
+%End
+
+ void mouseDoubleClick (QWidget*);
+ void mouseMiddleClick ();
+ void mouseMiddleClick (QWidget*);
+ void closeRequest (QWidget*);
+
+protected:
+
+%If ( KDE_3_3_0 - )
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+%End
+
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void dragMoveEvent (QDragMoveEvent*);
+ virtual void dropEvent (QDropEvent*);
+
+%If ( KDE_3_4_0 - )
+ uint tabBarWidthForMaxChars (uint);
+%End
+
+
+%If ( KDE_3_3_0 - )
+ virtual void wheelEvent (QWheelEvent*);
+
+%If ( KDE_3_4_0 - )
+ virtual void resizeEvent (QResizeEvent*);
+%End
+
+%End
+
+
+protected slots:
+//ig virtual void receivedDropEvent (int, QDropEvent*);
+//ig virtual void initiateDrag (int);
+//ig virtual void contextMenu (int, const QPoint&);
+//ig virtual void mouseDoubleClick (int);
+//ig virtual void mouseMiddleClick (int);
+//ig virtual void closeRequest (int);
+
+%If ( KDE_3_3_0 - )
+ virtual void wheelDelta (int);
+%End
+
+
+}; // class KTabWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ktextbrowser.sip b/python/pykde/sip/kdeui/ktextbrowser.sip
new file mode 100644
index 00000000..e1096a94
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktextbrowser.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTextBrowser : QTextBrowser
+{
+%TypeHeaderCode
+#include <ktextbrowser.h>
+%End
+
+
+public:
+ KTextBrowser (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ void setNotifyClick (bool);
+ bool isNotifyClick () const;
+
+protected:
+ void setSource (const QString&);
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void viewportMouseMoveEvent (QMouseEvent*);
+ virtual void contentsWheelEvent (QWheelEvent*);
+
+%If ( KDE_3_3_0 - )
+ virtual QPopupMenu* createPopupMenu (const QPoint&);
+%End
+
+
+signals:
+ void mailClick (const QString&, const QString&);
+ void urlClick (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KTextBrowser
+
diff --git a/python/pykde/sip/kdeui/ktextedit.sip b/python/pykde/sip/kdeui/ktextedit.sip
new file mode 100644
index 00000000..e876cd34
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktextedit.sip
@@ -0,0 +1,83 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KTextEdit : QTextEdit
+{
+%TypeHeaderCode
+#include <ktextedit.h>
+%End
+
+
+public:
+ KTextEdit (const QString&, const QString& = QString ::null , QWidget* /TransferThis/ = 0, const char* = 0);
+ KTextEdit (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setReadOnly (bool);
+
+%If ( KDE_3_1_1 - )
+ virtual void setPalette (const QPalette&);
+
+%If ( KDE_3_2_0 - )
+ void setCheckSpellingEnabled (bool);
+ bool checkSpellingEnabled () const;
+ void highLightWord (uint, uint);
+%End
+
+%End
+
+
+public slots:
+
+%If ( KDE_3_2_0 - )
+ void checkSpelling ();
+%End
+
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual void focusInEvent (QFocusEvent*);
+%End
+
+ virtual void contentsWheelEvent (QWheelEvent*);
+ virtual void deleteWordBack ();
+ virtual void deleteWordForward ();
+
+%If ( KDE_3_2_0 - )
+ virtual QPopupMenu* createPopupMenu (const QPoint&);
+ virtual QPopupMenu* createPopupMenu ();
+%End
+
+
+protected:
+//ig virtual void virtual_hook (int, void*);
+
+}; // class KTextEdit
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kthemebase.sip b/python/pykde/sip/kdeui/kthemebase.sip
new file mode 100644
index 00000000..df501576
--- /dev/null
+++ b/python/pykde/sip/kdeui/kthemebase.sip
@@ -0,0 +1,258 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KThemePixmap : KPixmap
+{
+%TypeHeaderCode
+#include <kthemebase.h>
+%End
+
+
+public:
+
+ enum BorderType
+ {
+ Top = 0,
+ Bottom,
+ Left,
+ Right,
+ TopLeft,
+ TopRight,
+ BottomLeft,
+ BottomRight
+ };
+
+ KThemePixmap (bool = 1);
+ KThemePixmap (const KThemePixmap&);
+ QPixmap* border (KThemePixmap::BorderType);
+ void setBorder (KThemePixmap::BorderType, const QPixmap&);
+ void updateAccessed ();
+ bool isOld ();
+
+protected:
+
+}; // class KThemePixmap
+
+
+class KThemeCache : QObject
+{
+%TypeHeaderCode
+#include <kthemebase.h>
+%End
+
+
+public:
+
+ enum ScaleHint
+ {
+ FullScale,
+ HorizontalScale,
+ VerticalScale
+ };
+
+ KThemeCache (int, QObject*/TransferThis/ = 0, const char* = 0);
+ bool insert (KThemePixmap*, KThemeCache::ScaleHint, int, bool = 0, bool = 0);
+ KThemePixmap* pixmap (int, int, int, bool = 0, bool = 0);
+ KThemePixmap* horizontalPixmap (int, int);
+ KThemePixmap* verticalPixmap (int, int);
+
+protected slots:
+ void flushTimeout ();
+
+protected:
+
+}; // class KThemeCache
+
+
+class KThemeBase : KStyle
+{
+%TypeHeaderCode
+#include <kthemebase.h>
+%End
+
+
+public:
+ KThemeBase (const QString&);
+
+ enum ScaleHint
+ {
+ FullScale,
+ HorizontalScale,
+ VerticalScale,
+ TileScale
+ };
+
+
+ enum ArrowStyle
+ {
+ MotifArrow,
+ LargeArrow,
+ SmallArrow
+ };
+
+
+ enum ShadeStyle
+ {
+ Motif,
+ Windows,
+ Next,
+ KDE
+ };
+
+
+ enum SButton
+ {
+ SBBottomLeft,
+ SBBottomRight,
+ SBOpposite
+ };
+
+
+ enum Gradient
+ {
+ GrNone,
+ GrHorizontal,
+ GrVertical,
+ GrDiagonal,
+ GrPyramid,
+ GrRectangle,
+ GrElliptic,
+ GrReverseBevel
+ };
+
+
+ enum WidgetType
+ {
+ PushButton = 0,
+ ComboBox,
+ HScrollBarSlider,
+ VScrollBarSlider,
+ Bevel,
+ ToolButton,
+ ScrollButton,
+ HScrollDeco,
+ VScrollDeco,
+ ComboDeco,
+ MenuItem,
+ InactiveTab,
+ ArrowUp,
+ ArrowDown,
+ ArrowLeft,
+ ArrowRight,
+ PushButtonDown,
+ ComboBoxDown,
+ HScrollBarSliderDown,
+ VScrollBarSliderDown,
+ BevelDown,
+ ToolButtonDown,
+ ScrollButtonDown,
+ HScrollDecoDown,
+ VScrollDecoDown,
+ ComboDecoDown,
+ MenuItemDown,
+ ActiveTab,
+ SunkenArrowUp,
+ SunkenArrowDown,
+ SunkenArrowLeft,
+ SunkenArrowRight,
+ HScrollGroove,
+ VScrollGroove,
+ Slider,
+ SliderGroove,
+ IndicatorOn,
+ IndicatorOff,
+ ExIndicatorOn,
+ ExIndicatorOff,
+ HBarHandle,
+ VBarHandle,
+ ToolBar,
+ Splitter,
+ CheckMark,
+ MenuBar,
+ DisArrowUp,
+ DisArrowDown,
+ DisArrowLeft,
+ DisArrowRight,
+ ProgressBar,
+ ProgressBg,
+ MenuBarItem,
+ Background
+ };
+
+ ScaleHint scaleHint (KThemeBase::WidgetType) const;
+ Gradient gradientHint (KThemeBase::WidgetType) const;
+ const QColorGroup* colorGroup (const QColorGroup&, KThemeBase::WidgetType) const;
+ QBrush pixmapBrush (const QColorGroup&, QColorGroup::ColorRole, int, int, KThemeBase::WidgetType);
+ bool isPixmap (KThemeBase::WidgetType) const;
+ bool isColor (KThemeBase::WidgetType) const;
+ bool is3DFocus () const;
+ int focusOffset () const;
+ int borderWidth (KThemeBase::WidgetType) const;
+ int pixBorderWidth (KThemeBase::WidgetType) const;
+ KThemePixmap* borderPixmap (KThemeBase::WidgetType);
+ int highlightWidth (KThemeBase::WidgetType) const;
+ int decoWidth (KThemeBase::WidgetType) const;
+ int getSBExtent () const;
+ SButton scrollBarLayout () const;
+ ArrowStyle arrowType () const;
+ ShadeStyle shade () const;
+ int frameWidth () const;
+ int splitWidth () const;
+ int bevelContrast (KThemeBase::WidgetType) const;
+ int buttonXShift () const;
+ int buttonYShift () const;
+ int sliderButtonLength () const;
+ bool roundButton () const;
+ bool roundComboBox () const;
+ bool roundSlider () const;
+ bool activeTabLine () const;
+ bool inactiveTabLine () const;
+ KThemePixmap* uncached (KThemeBase::WidgetType) const;
+ virtual KThemePixmap* scalePixmap (int, int, KThemeBase::WidgetType);
+ static void applyConfigFile (const QString&);
+
+protected:
+ QImage* image (KThemeBase::WidgetType) const;
+ QColor* gradientHigh (KThemeBase::WidgetType) const;
+ QColor* gradientLow (KThemeBase::WidgetType) const;
+ void readConfig (Qt::GUIStyle = Qt::WindowsStyle);
+//ig void readWidgetConfig (int, KConfig*, QString*, QString*, bool*);
+ void copyWidgetConfig (int, int, QString*, QString*);
+ QColorGroup* makeColorGroup (QColor&, QColor&, Qt::GUIStyle = Qt::WindowsStyle);
+ KThemePixmap* scale (int, int, KThemeBase::WidgetType);
+ KThemePixmap* scaleBorder (int, int, KThemeBase::WidgetType);
+ KThemePixmap* gradient (int, int, KThemeBase::WidgetType);
+ KThemePixmap* blend (KThemeBase::WidgetType);
+ void generateBorderPix (int);
+ void applyResourceGroup (KConfig*, int);
+ void applyMiscResourceGroup (KConfig*);
+ void readResourceGroup (int, QString*, QString*, bool*);
+ void readMiscResourceGroup ();
+ KThemePixmap* loadPixmap (QString&);
+ QImage* loadImage (QString&);
+
+}; // class KThemeBase
+
diff --git a/python/pykde/sip/kdeui/kthemestyle.sip b/python/pykde/sip/kdeui/kthemestyle.sip
new file mode 100644
index 00000000..e55addc5
--- /dev/null
+++ b/python/pykde/sip/kdeui/kthemestyle.sip
@@ -0,0 +1,89 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KThemeStyle : KThemeBase
+{
+%TypeHeaderCode
+#include <kthemestyle.h>
+%End
+
+
+public:
+ KThemeStyle (const QString& = QString::null);
+ virtual void polish (QWidget*);
+ virtual void unPolish (QWidget*);
+ virtual void polish (QApplication*);
+ virtual void unPolish (QApplication*);
+ virtual void polish (QPalette&);
+ virtual void drawBaseButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, bool = 0, WidgetType = Bevel, const QBrush* = 0);
+ virtual void drawBaseMask (QPainter*, int, int, int, int, bool);
+ virtual void drawButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+ virtual void drawBevelButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, const QBrush* = 0);
+ virtual void drawKToolBarButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, bool = 1, bool = 1, bool = 0, KToolButtonType = Icon, const QString& = QString::null, const QPixmap* = 0, QFont* = 0, QWidget* = 0);
+ void drawKBarHandle (QPainter*, int, int, int, int, const QColorGroup&, KToolBarPos, QBrush* = 0);
+ void drawKToolBar (QPainter*, int, int, int, int, const QColorGroup&, KToolBarPos, QBrush* = 0);
+ virtual QRect buttonRect (int, int, int, int);
+ virtual void drawArrow (QPainter*, Qt::ArrowType, bool, int, int, int, int, const QColorGroup&, bool = 1, const QBrush* = 0);
+ virtual QSize exclusiveIndicatorSize () const;
+ virtual void drawExclusiveIndicator (QPainter*, int, int, int, int, const QColorGroup&, bool, bool = 0, bool = 1);
+ virtual void drawExclusiveIndicatorMask (QPainter*, int, int, int, int, bool);
+ virtual void drawIndicatorMask (QPainter*, int, int, int, int, int);
+ virtual void drawButtonMask (QPainter*, int, int, int, int);
+ virtual void drawComboButtonMask (QPainter*, int, int, int, int);
+ virtual QSize indicatorSize () const;
+ virtual void drawIndicator (QPainter*, int, int, int, int, const QColorGroup&, int, bool = 0, bool = 1);
+ virtual void drawComboButton (QPainter*, int, int, int, int, const QColorGroup&, bool = 0, bool = 0, bool = 1, const QBrush* = 0);
+ virtual void drawPushButton (QPushButton*, QPainter*);
+//ig virtual void getButtonShift (int&, int&);
+ virtual int defaultFrameWidth () const;
+//ig virtual void scrollBarMetrics (const QScrollBar*, int&, int&, int&, int&);
+ virtual void drawScrollBarControls (QPainter*, const QScrollBar*, int, uint, uint);
+ virtual ScrollControl scrollBarPointOver (const QScrollBar*, int, const QPoint&);
+ virtual int sliderLength () const;
+ virtual void drawSlider (QPainter*, int, int, int, int, const QColorGroup&, Orientation, bool, bool);
+ void drawSliderGroove (QPainter*, int, int, int, int, const QColorGroup&, QCOORD, Orientation);
+ virtual void drawSliderMask (QPainter*, int, int, int, int, Orientation, bool, bool);
+ virtual void drawScrollBarGroove (QPainter*, const QScrollBar*, bool, QRect, QColorGroup);
+ virtual void drawShade (QPainter*, int, int, int, int, const QColorGroup&, bool, bool, int, int, ShadeStyle);
+ virtual void drawPushButtonLabel (QPushButton*, QPainter*);
+ void drawKMenuBar (QPainter*, int, int, int, int, const QColorGroup&, bool, QBrush* = 0);
+//ig virtual void drawKMenuItem (QPainter*, int, int, int, int, const QColorGroup&, bool, QMenuItem*, QBrush* = 0);
+ virtual int splitterWidth () const;
+ virtual void drawSplitter (QPainter*, int, int, int, int, const QColorGroup&, Orientation);
+ virtual void drawCheckMark (QPainter*, int, int, int, int, const QColorGroup&, bool, bool);
+//ig virtual void drawPopupMenuItem (QPainter*, bool, int, int, QMenuItem*, const QPalette&, bool, bool, int, int, int, int);
+//ig int popupMenuItemHeight (bool, QMenuItem*, const QFontMetrics&);
+ void drawFocusRect (QPainter*, const QRect&, const QColorGroup&, const QColor* = 0, bool = 0);
+ virtual void drawKProgressBlock (QPainter*, int, int, int, int, const QColorGroup&, QBrush*);
+ virtual void getKProgressBackground (const QColorGroup&, QBrush&);
+//ig virtual void tabbarMetrics (const QTabBar*, int&, int&, int&);
+ virtual void drawTab (QPainter*, const QTabBar*, QTab*, bool);
+ virtual void drawTabMask (QPainter*, const QTabBar*, QTab*, bool);
+
+protected:
+
+}; // class KThemeStyle
+
diff --git a/python/pykde/sip/kdeui/ktimewidget.sip b/python/pykde/sip/kdeui/ktimewidget.sip
new file mode 100644
index 00000000..ee5238cb
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktimewidget.sip
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KTimeWidget : QWidget
+{
+%TypeHeaderCode
+#include <ktimewidget.h>
+%End
+
+
+public:
+ KTimeWidget (QWidget* /TransferThis/ = 0, const char* = 0);
+ KTimeWidget (const QTime&, QWidget* /TransferThis/ = 0, const char* = 0);
+ QTime time () const;
+
+public slots:
+ void setTime (const QTime&);
+
+signals:
+ void valueChanged (const QTime&);
+
+}; // class KTimeWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ktimezonewidget.sip b/python/pykde/sip/kdeui/ktimezonewidget.sip
new file mode 100644
index 00000000..12946a11
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktimezonewidget.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_5_0 - )
+
+class KTimezoneWidget : KListView
+{
+%TypeHeaderCode
+#include <ktimezonewidget.h>
+%End
+
+
+public:
+ KTimezoneWidget (QWidget* /TransferThis/ = 0, const char* = 0, KTimezones* = 0);
+ QStringList selection () const;
+ void setSelected (const QString&, bool);
+ static QString displayName (const KTimezone*);
+
+}; // class KTimezoneWidget
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ktip.sip b/python/pykde/sip/kdeui/ktip.sip
new file mode 100644
index 00000000..600b47c8
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktip.sip
@@ -0,0 +1,82 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTipDatabase
+{
+%TypeHeaderCode
+#include <ktip.h>
+%End
+
+
+public:
+ KTipDatabase (const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ KTipDatabase (const QStringList&);
+%End
+
+ QString tip () const;
+ void nextTip ();
+ void prevTip ();
+
+}; // class KTipDatabase
+
+
+class KTipDialog : KDialog
+{
+%TypeHeaderCode
+#include <ktip.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+ KTipDialog (KTipDatabase*, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+ static void showTip (QWidget* /Transfer/, const QString& = QString ::null , bool = 0);
+
+%If ( KDE_3_2_0 - )
+ static void showMultiTip (QWidget* /Transfer/, const QStringList&, bool = 0);
+%End
+
+ static void showTip (const QString& = QString ::null , bool = 0);
+ static void setShowOnStart (bool);
+
+protected:
+ bool eventFilter (QObject*, QEvent*);
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ KTipDialog (KTipDatabase*, QWidget* /TransferThis/ = 0, const char* = 0);
+%End
+
+
+}; // class KTipDialog
+
diff --git a/python/pykde/sip/kdeui/ktmainwindow.sip b/python/pykde/sip/kdeui/ktmainwindow.sip
new file mode 100644
index 00000000..6ea57061
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktmainwindow.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTMainWindow : KMainWindow
+{
+%TypeHeaderCode
+#include <ktmainwindow.h>
+%End
+
+
+public:
+ KTMainWindow (const char* = 0, WFlags = WDestructiveClose);
+ void setView (QWidget*, bool = 0);
+ QWidget* view () const;
+ void enableStatusBar (KStatusBar::BarStatus = KStatusBar::Toggle);
+ void enableToolBar (KToolBar::BarStatus = KToolBar::Toggle, int = 0);
+ void setEnableToolBar (KToolBar::BarStatus = KToolBar::Toggle, const char* = "mainToolBar");
+ int addToolBar (KToolBar*, int = -1);
+ KToolBar* toolBar (int = 0);
+ void setMenu (KMenuBar*);
+ void setStatusBar (KStatusBar*);
+ bool hasMenuBar ();
+ bool hasStatusBar ();
+ bool hasToolBar (int = 0);
+
+protected slots:
+ virtual void updateRects ();
+
+}; // class KTMainWindow
+
diff --git a/python/pykde/sip/kdeui/ktoolbar.sip b/python/pykde/sip/kdeui/ktoolbar.sip
new file mode 100644
index 00000000..7d2b8571
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktoolbar.sip
@@ -0,0 +1,263 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KToolBarSeparator : QFrame
+{
+%TypeHeaderCode
+#include <ktoolbar.h>
+%End
+
+
+public:
+ KToolBarSeparator (Orientation, bool, QToolBar* /TransferThis/, const char* = 0);
+ QSize sizeHint () const;
+ Orientation orientation () const;
+ QSizePolicy sizePolicy () const;
+ bool showLine () const;
+
+public slots:
+ void setOrientation (Orientation);
+
+protected:
+ void styleChange (QStyle&);
+
+%If ( KDE_3_2_0 - )
+ void drawContents (QPainter*);
+%End
+
+
+}; // class KToolBarSeparator
+
+
+class KToolBar : QToolBar
+{
+%TypeHeaderCode
+#include <ktoolbar.h>
+%End
+
+
+public:
+
+ enum IconText
+ {
+ IconOnly,
+ IconTextRight,
+ TextOnly,
+ IconTextBottom
+ };
+
+
+ enum BarStatus
+ {
+ Toggle,
+ Show,
+ Hide
+ };
+
+
+ enum BarPosition
+ {
+ Unmanaged,
+ Floating,
+ Top,
+ Bottom,
+ Right,
+ Left,
+ Flat
+ };
+
+ KToolBar (QWidget* /TransferThis/, const char* = 0, bool = 0, bool = 1);
+//ig KToolBar (QMainWindow*, QMainWindow::ToolBarDock, bool = 0, const char* = 0, bool = 0, bool = 1);
+ KToolBar (QMainWindow*, QWidget*, bool = 0, const char* = 0, bool = 0, bool = 1);
+ int insertButton (const QString&, int, bool = 1, const QString& = QString ::null , int = -1, KInstance* = KGlobal ::instance ());
+ int insertButton (const QString&, int, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), bool = 1, const QString& = QString ::null , int = -1, KInstance* = KGlobal ::instance ());
+ int insertButton (const QPixmap&, int, bool = 1, const QString& = QString ::null , int = -1);
+ int insertButton (const QPixmap&, int, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), bool = 1, const QString& = QString ::null , int = -1);
+ int insertButton (const QString&, int, QPopupMenu*, bool, const QString&, int = -1);
+ int insertButton (const QPixmap&, int, QPopupMenu*, bool, const QString&, int = -1);
+ int insertLined (const QString&, int, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), bool = 1, const QString& = QString ::null , int = 70, int = -1);
+ int insertCombo (const QStringList&, int, bool, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int), bool = 1, const QString& = QString ::null , int = 70, int = -1, QComboBox::Policy = QComboBox ::AtBottom );
+
+%If ( KDE_3_2_0 - )
+ int insertCombo (const QString&, int, bool, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (), bool = 1, const QString& = QString ::null , int = 70, int = -1, QComboBox::Policy = QComboBox ::AtBottom );
+%End
+
+ int insertSeparator (int, int);
+ int insertLineSeparator (int, int);
+ int insertWidget (int, int, QWidget*, int = -1);
+ int insertAnimatedWidget (int, SIP_RXOBJ_CON, SIP_SLOT_CON (int), const QString&, int = -1);
+ KAnimWidget* animatedWidget (int);
+ void addConnection (int, const char*, SIP_RXOBJ_CON, SIP_SLOT_CON (int));
+ void setItemEnabled (int, bool);
+ void setButtonIcon (int, const QString&);
+ void setButtonPixmap (int, const QPixmap&);
+ void setButtonIconSet (int, const QIconSet&);
+ void setDelayedPopup (int, QPopupMenu*, bool = 0);
+ void setAutoRepeat (int, bool = 1);
+ void setToggle (int, bool = 1);
+ void toggleButton (int);
+ void setButton (int, bool);
+ bool isButtonOn (int);
+ void setLinedText (int, const QString&);
+ QString getLinedText (int);
+ void insertComboItem (int, const QString&, int);
+ void insertComboList (int, const QStringList&, int);
+ void removeComboItem (int, int);
+ void setCurrentComboItem (int, int);
+ void changeComboItem (int, const QString&, int = -1);
+ void clearCombo (int);
+ QString getComboItem (int, int = -1);
+ KComboBox* getCombo (int);
+ KLineEdit* getLined (int);
+ KToolBarButton* getButton (int);
+ void alignItemRight (int, bool = 1);
+ QWidget* getWidget (int);
+ void setItemAutoSized (int, bool = 1);
+ void clear ();
+ void removeItem (int);
+
+%If ( KDE_3_2_0 - )
+ void removeItemDelayed (int);
+%End
+
+ void hideItem (int);
+ void showItem (int);
+
+%If ( KDE_3_2_0 - )
+ int itemIndex (int);
+ int idAt (int);
+%End
+
+ void setFullSize (bool = 1);
+ bool fullSize () const;
+ void enableMoving (bool = 1);
+ void setBarPos (KToolBar::BarPosition);
+ BarPosition barPos () const;
+ bool enable (KToolBar::BarStatus);
+ void setMaxHeight (int);
+ int maxHeight ();
+ void setMaxWidth (int);
+ int maxWidth ();
+ void setTitle (const QString&);
+ void enableFloating (bool);
+ void setIconText (KToolBar::IconText);
+ void setIconText (KToolBar::IconText, bool);
+ IconText iconText () const;
+ void setIconSize (int);
+ void setIconSize (int, bool);
+ int iconSize () const;
+
+%If ( KDE_3_4_0 - )
+ int iconSizeDefault () const;
+%End
+
+ void setEnableContextMenu (bool = 1);
+ bool contextMenuEnabled () const;
+ void setItemNoStyle (int, bool = 1);
+ void setFlat (bool);
+ int count ();
+ void saveState ();
+ void saveSettings (KConfig*, const QString&);
+
+%If ( KDE_3_3_0 - )
+ void applySettings (KConfig*, const QString&, bool);
+%End
+
+ void applySettings (KConfig*, const QString&);
+ void setXMLGUIClient (KXMLGUIClient*);
+ void setText (const QString&);
+ QString text () const;
+ void setStretchableWidget (QWidget*);
+ QSizePolicy sizePolicy () const;
+ bool highlight () const;
+ QSize sizeHint () const;
+ QSize minimumSizeHint () const;
+ QSize minimumSize () const;
+ void hide ();
+ void show ();
+ void updateRects (bool = 0);
+ void loadState (const QDomElement&);
+ void saveState (QDomElement&);
+ void positionYourself (bool);
+
+signals:
+ void clicked (int);
+ void doubleClicked (int);
+ void pressed (int);
+ void released (int);
+ void toggled (int);
+ void highlighted (int, bool);
+ void highlighted (int);
+ void moved (KToolBar::BarPosition);
+ void modechange ();
+
+%If ( KDE_3_1_0 - )
+ void toolbarDestroyed ();
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+ static bool highlightSetting ();
+ static bool transparentSetting ();
+ static KToolBar::IconText iconTextSetting ();
+%End
+
+
+public slots:
+ virtual void setIconText (const QString&);
+
+protected:
+ void mousePressEvent (QMouseEvent*);
+ void childEvent (QChildEvent*);
+ void showEvent (QShowEvent*);
+ void resizeEvent (QResizeEvent*);
+ bool event (QEvent*);
+ void applyAppearanceSettings (KConfig*, const QString&, bool = 0);
+ QString settingsGroup () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ int insertCombo (const QString&, int, bool, const char*, QObject*, const char*, bool = 1, const QString& = QString ::null , int = 70, int = -1, QComboBox::Policy = QComboBox ::AtBottom );
+%End
+
+
+signals:
+
+%If ( - KDE_3_1_0 )
+//ig static bool highlightSetting ();
+//ig static bool transparentSetting ();
+//ig static IconText iconTextSetting ();
+%End
+
+
+}; // class KToolBar
+
diff --git a/python/pykde/sip/kdeui/ktoolbarbutton.sip b/python/pykde/sip/kdeui/ktoolbarbutton.sip
new file mode 100644
index 00000000..abb1299f
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktoolbarbutton.sip
@@ -0,0 +1,123 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KToolBarButton : QToolButton
+{
+%TypeHeaderCode
+#include <ktoolbarbutton.h>
+%End
+
+
+public:
+ KToolBarButton (const QString&, int, QWidget* /TransferThis/, const char* = 0, const QString& = QString ::null , KInstance* = KGlobal ::instance ());
+ KToolBarButton (const QPixmap&, int, QWidget* /TransferThis/, const char* = 0, const QString& = QString ::null );
+ KToolBarButton (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setPixmap (const QPixmap&);
+ void setDefaultPixmap (const QPixmap&);
+ void setDisabledPixmap (const QPixmap&);
+ virtual void setText (const QString&);
+ virtual void setIcon (const QString&);
+
+%If ( KDE_3_0_1 - )
+ virtual void setIcon (const QPixmap&);
+%End
+
+ virtual void setIconSet (const QIconSet&);
+ void setIcon (const QString&, bool);
+ void setDefaultIcon (const QString&);
+ void setDisabledIcon (const QString&);
+ void on (bool = 1);
+ void toggle ();
+ void setToggle (bool = 1);
+ QPopupMenu* popup ();
+
+%If ( KDE_3_2_0 - )
+ int id () const;
+%End
+
+ void setPopup (QPopupMenu*, bool);
+ void setDelayedPopup (QPopupMenu*, bool = 0);
+ void setRadio (bool = 1);
+ void setNoStyle (bool = 1);
+
+signals:
+ void clicked (int);
+
+%If ( KDE_3_4_2 - )
+ void buttonClicked (int, Qt::ButtonState);
+%End
+
+ void doubleClicked (int);
+ void pressed (int);
+ void released (int);
+ void toggled (int);
+ void highlighted (int, bool);
+
+public slots:
+ void modeChange ();
+ virtual void setTextLabel (const QString&, bool);
+
+protected:
+
+%If ( KDE_3_5_0 - )
+ bool event (QEvent*);
+%End
+
+ void paletteChange (const QPalette&);
+ void leaveEvent (QEvent*);
+ void enterEvent (QEvent*);
+ void drawButton (QPainter*);
+ bool eventFilter (QObject*, QEvent*);
+
+%If ( KDE_3_4_2 - )
+ void mousePressEvent (QMouseEvent*);
+ void mouseReleaseEvent (QMouseEvent*);
+%End
+
+ void showMenu ();
+ QSize sizeHint () const;
+ QSize minimumSizeHint () const;
+ QSize minimumSize () const;
+
+%If ( KDE_3_0_1 - )
+ bool isRaised () const;
+ bool isActive () const;
+ int iconTextMode () const;
+%End
+
+
+protected slots:
+ void slotClicked ();
+ void slotPressed ();
+ void slotReleased ();
+ void slotToggled ();
+ void slotDelayTimeout ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KToolBarButton
+
diff --git a/python/pykde/sip/kdeui/ktoolbarlabelaction.sip b/python/pykde/sip/kdeui/ktoolbarlabelaction.sip
new file mode 100644
index 00000000..ac963652
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktoolbarlabelaction.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+
+class KToolBarLabelAction : KWidgetAction
+{
+%TypeHeaderCode
+#include <ktoolbarlabelaction.h>
+%End
+
+
+public:
+ KToolBarLabelAction (const QString&, const KShortcut&, const QObject*, const char*, KActionCollection* /TransferThis/, const char*);
+ KToolBarLabelAction (QWidget*, const QString&, const KShortcut&, const QObject*, const char*, KActionCollection* /TransferThis/, const char*);
+ KToolBarLabelAction (QLabel*, const KShortcut&, const QObject*, const char*, KActionCollection* /TransferThis/, const char*);
+ virtual void setText (const QString&);
+ virtual void setBuddy (QWidget*);
+ QWidget* buddy () const;
+ QLabel* label () const;
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KToolBarLabelAction
+
+%End
+
diff --git a/python/pykde/sip/kdeui/ktoolbarradiogroup.sip b/python/pykde/sip/kdeui/ktoolbarradiogroup.sip
new file mode 100644
index 00000000..8a26f145
--- /dev/null
+++ b/python/pykde/sip/kdeui/ktoolbarradiogroup.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KToolBarRadioGroup : QObject
+{
+%TypeHeaderCode
+#include <ktoolbarradiogroup.h>
+%End
+
+
+public:
+ KToolBarRadioGroup (KToolBar*, const char* = 0);
+ void addButton (int);
+ void removeButton (int);
+
+public slots:
+ void slotToggled (int);
+
+}; // class KToolBarRadioGroup
+
diff --git a/python/pykde/sip/kdeui/kurllabel.sip b/python/pykde/sip/kdeui/kurllabel.sip
new file mode 100644
index 00000000..1076c829
--- /dev/null
+++ b/python/pykde/sip/kdeui/kurllabel.sip
@@ -0,0 +1,108 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLLabel : QLabel
+{
+%TypeHeaderCode
+#include <kurllabel.h>
+%End
+
+
+public:
+ KURLLabel (QWidget* /TransferThis/ = 0, const char* = 0);
+ KURLLabel (const QString&, const QString& = QString ::null , QWidget* /TransferThis/ = 0, const char* = 0);
+ const QString& url () const;
+ const QString& tipText () const;
+ bool useTips () const;
+ bool useCursor () const;
+ bool isGlowEnabled () const;
+ bool isFloatEnabled () const;
+ const QPixmap* altPixmap () const;
+
+%If ( KDE_3_5_1 - )
+ virtual void setMargin (int);
+ virtual void setFocusPolicy (FocusPolicy);
+
+%If ( KDE_3_5_2 - )
+ virtual void setSizePolicy (QSizePolicy);
+%End
+
+%End
+
+
+public slots:
+ void setUnderline (bool = 1);
+ void setURL (const QString&);
+ virtual void setFont (const QFont&);
+ void setUseTips (bool = 1);
+ void setTipText (const QString&);
+ void setHighlightedColor (const QColor&);
+ void setHighlightedColor (const QString&);
+ void setSelectedColor (const QColor&);
+ void setSelectedColor (const QString&);
+
+%If ( KDE_3_5_1 - )
+ virtual void setCursor (const QCursor&);
+ virtual void unsetCursor ();
+%End
+
+ void setUseCursor (bool, QCursor* = 0);
+ void setGlow (bool = 1);
+ void setFloat (bool = 1);
+ void setAltPixmap (const QPixmap&);
+
+signals:
+ void enteredURL (const QString&);
+ void enteredURL ();
+ void leftURL (const QString&);
+ void leftURL ();
+ void leftClickedURL (const QString&);
+ void leftClickedURL ();
+ void rightClickedURL (const QString&);
+ void rightClickedURL ();
+ void middleClickedURL (const QString&);
+ void middleClickedURL ();
+
+protected:
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void enterEvent (QEvent*);
+ virtual void leaveEvent (QEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual bool event (QEvent*);
+
+%If ( KDE_3_5_1 - )
+ QRect activeRect () const;
+%End
+
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLLabel
+
diff --git a/python/pykde/sip/kdeui/kwindowinfo.sip b/python/pykde/sip/kdeui/kwindowinfo.sip
new file mode 100644
index 00000000..de8d06da
--- /dev/null
+++ b/python/pykde/sip/kdeui/kwindowinfo.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KWindowInfo : QObject
+{
+%TypeHeaderCode
+#include <kwindowinfo.h>
+%End
+
+
+public:
+ KWindowInfo (QWidget* /TransferThis/, const char* = 0);
+ bool autoDelete () const;
+ void setAutoDelete (bool);
+ static void showMessage (QWidget*, const QString&, int = -1);
+ static void showMessage (QWidget*, const QString&, const QPixmap&, int = -1);
+
+public slots:
+ void message (const QString&);
+ void message (const QString&, const QPixmap&);
+ void message (const QString&, int);
+ void message (const QString&, const QPixmap&, int);
+ void permanent (const QString&);
+ void permanent (const QString&, const QPixmap&);
+
+protected:
+ virtual void display (const QString&, const QPixmap&);
+
+protected slots:
+ virtual void save ();
+ virtual void restore ();
+
+}; // class KWindowInfo
+
+%End
+
diff --git a/python/pykde/sip/kdeui/kwindowlistmenu.sip b/python/pykde/sip/kdeui/kwindowlistmenu.sip
new file mode 100644
index 00000000..cc74dccc
--- /dev/null
+++ b/python/pykde/sip/kdeui/kwindowlistmenu.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KWindowListMenu : KPopupMenu
+{
+%TypeHeaderCode
+#include <kwindowlistmenu.h>
+%End
+
+
+public:
+ KWindowListMenu (QWidget* /TransferThis/ = 0, const char* = 0);
+ void init ();
+
+public slots:
+
+%If ( KDE_3_3_0 - )
+ void selectActiveWindow ();
+%End
+
+
+protected slots:
+ void slotExec (int);
+ void slotUnclutterWindows ();
+ void slotCascadeWindows ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KWindowListMenu
+
diff --git a/python/pykde/sip/kdeui/kwizard.sip b/python/pykde/sip/kdeui/kwizard.sip
new file mode 100644
index 00000000..438ce259
--- /dev/null
+++ b/python/pykde/sip/kdeui/kwizard.sip
@@ -0,0 +1,38 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KWizard : QWizard
+{
+%TypeHeaderCode
+#include <kwizard.h>
+%End
+
+
+public:
+ KWizard (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, WFlags = 0);
+
+}; // class KWizard
+
diff --git a/python/pykde/sip/kdeui/kwordwrap.sip b/python/pykde/sip/kdeui/kwordwrap.sip
new file mode 100644
index 00000000..5a0b7375
--- /dev/null
+++ b/python/pykde/sip/kdeui/kwordwrap.sip
@@ -0,0 +1,82 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KWordWrap
+{
+%TypeHeaderCode
+#include <kwordwrap.h>
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - )
+
+ enum
+ {
+ FadeOut,
+ Truncate
+ };
+
+%End
+
+ static KWordWrap* formatText (QFontMetrics&, const QRect&, int, const QString&, int = -1);
+ QRect boundingRect () const;
+ QString wrappedString () const;
+ QString truncatedString (bool = 1) const;
+ void drawText (QPainter*, int, int, int = Qt ::AlignAuto ) const;
+
+%If ( KDE_3_2_0 - )
+ static void drawFadeoutText (QPainter*, int, int, int, const QString&);
+
+%If ( KDE_3_3_0 - )
+ static void drawTruncateText (QPainter*, int, int, int, const QString&);
+%End
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+private:
+ KWordWrap (const QRect&);
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+ enum
+ {
+ FadeOut
+ };
+
+%End
+
+
+}; // class KWordWrap
+
diff --git a/python/pykde/sip/kdeui/kxmlgui.sip b/python/pykde/sip/kdeui/kxmlgui.sip
new file mode 100644
index 00000000..b1076d42
--- /dev/null
+++ b/python/pykde/sip/kdeui/kxmlgui.sip
@@ -0,0 +1,26 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
diff --git a/python/pykde/sip/kdeui/kxmlguibuilder.sip b/python/pykde/sip/kdeui/kxmlguibuilder.sip
new file mode 100644
index 00000000..d54e887a
--- /dev/null
+++ b/python/pykde/sip/kdeui/kxmlguibuilder.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KXMLGUIBuilder
+{
+%TypeHeaderCode
+#include <kxmlguibuilder.h>
+%End
+
+
+public:
+ KXMLGUIBuilder (QWidget*);
+ KXMLGUIClient* builderClient () const;
+ void setBuilderClient (KXMLGUIClient*);
+ KInstance* builderInstance () const;
+ void setBuilderInstance (KInstance*);
+ QWidget* widget ();
+ virtual QStringList containerTags () const;
+//ig virtual QWidget* createContainer (QWidget* /Transfer/, int, const QDomElement&, int&);
+ virtual void removeContainer (QWidget*, QWidget* /Transfer/, QDomElement&, int);
+ virtual QStringList customTags () const;
+ virtual int createCustomElement (QWidget* /Transfer/, int, const QDomElement&);
+ virtual void removeCustomElement (QWidget* /Transfer/, int);
+ virtual void finalizeGUI (KXMLGUIClient*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KXMLGUIBuilder
+
diff --git a/python/pykde/sip/kdeui/kxmlguiclient.sip b/python/pykde/sip/kdeui/kxmlguiclient.sip
new file mode 100644
index 00000000..b2592023
--- /dev/null
+++ b/python/pykde/sip/kdeui/kxmlguiclient.sip
@@ -0,0 +1,101 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KXMLGUIClient
+{
+%TypeHeaderCode
+#include <kxmlguiclient.h>
+%End
+
+
+public:
+ KXMLGUIClient ();
+ KXMLGUIClient (KXMLGUIClient* /TransferThis/);
+ KAction* action (const char*) const;
+ virtual KAction* action (const QDomElement&) const;
+ virtual KActionCollection* actionCollection () const;
+ virtual KInstance* instance () const;
+ virtual QDomDocument domDocument () const;
+ virtual QString xmlFile () const;
+ virtual QString localXMLFile () const;
+ void setXMLGUIBuildDocument (const QDomDocument&);
+ QDomDocument xmlguiBuildDocument () const;
+ void setFactory (KXMLGUIFactory*);
+ KXMLGUIFactory* factory () const;
+ KXMLGUIClient* parentClient () const;
+ void insertChildClient (KXMLGUIClient*);
+ void removeChildClient (KXMLGUIClient*);
+ const QPtrList<KXMLGUIClient>* childClients ();
+ void setClientBuilder (KXMLGUIBuilder*);
+ KXMLGUIBuilder* clientBuilder () const;
+ void reloadXML ();
+ void plugActionList (const QString&, const QPtrList<KAction>&);
+ void unplugActionList (const QString&);
+ static QString findMostRecentXMLFile (const QStringList&, QString&);
+ void addStateActionEnabled (const QString&, const QString&);
+ void addStateActionDisabled (const QString&, const QString&);
+
+ enum ReverseStateChange
+ {
+ StateNoReverse,
+ StateReverse
+ };
+
+
+ class StateChange
+ {
+
+ public:
+ QStringList actionsToEnable;
+ QStringList actionsToDisable;
+
+ }; // class StateChange
+
+
+public:
+ KXMLGUIClient::StateChange getActionsToChangeForState (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void beginXMLPlug (QWidget*);
+ void endXMLPlug ();
+ void prepareXMLUnplug (QWidget*);
+%End
+
+
+protected:
+ virtual void setInstance (KInstance*);
+ virtual void setXMLFile (const QString&, bool = 0, bool = 1);
+ virtual void setLocalXMLFile (const QString&);
+ virtual void setXML (const QString&, bool = 0);
+ virtual void setDOMDocument (const QDomDocument&, bool = 0);
+ virtual void conserveMemory ();
+ virtual void stateChanged (const QString&, KXMLGUIClient::ReverseStateChange = StateNoReverse );
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KXMLGUIClient
+
diff --git a/python/pykde/sip/kdeui/kxmlguifactory.sip b/python/pykde/sip/kdeui/kxmlguifactory.sip
new file mode 100644
index 00000000..61f761b5
--- /dev/null
+++ b/python/pykde/sip/kdeui/kxmlguifactory.sip
@@ -0,0 +1,300 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KXMLGUIFactory : QObject
+{
+%TypeHeaderCode
+#include <kxmlguifactory.h>
+%End
+
+
+public:
+ KXMLGUIFactory (KXMLGUIBuilder*, QObject* /TransferThis/ = 0, const char* = 0);
+ static QString readConfigFile (const QString&, bool, const KInstance* = 0);
+ static QString readConfigFile (const QString&, const KInstance* = 0);
+ static bool saveConfigFile (const QDomDocument&, const QString&, const KInstance* = 0);
+ static QString documentToXML (const QDomDocument&);
+ static QString elementToXML (const QDomElement&);
+ static void removeDOMComments (QDomNode&);
+
+%If ( KDE_3_3_0 - )
+ static QDomElement actionPropertiesElement (QDomDocument&);
+ static QDomElement findActionByName (QDomElement&, const QString&, bool);
+%End
+
+ void addClient (KXMLGUIClient*);
+ void removeClient (KXMLGUIClient*);
+ void plugActionList (KXMLGUIClient*, const QString&, const QPtrList<KAction>&);
+ void unplugActionList (KXMLGUIClient*, const QString&);
+ QPtrList<KXMLGUIClient> clients () const;
+ QWidget* container (const QString&, KXMLGUIClient*, bool = 0);
+ QPtrList<QWidget> containers (const QString&);
+ void reset ();
+ void resetContainer (const QString&, bool = 0);
+
+public slots:
+
+%If ( KDE_3_3_0 - )
+ int configureShortcuts (bool = 1, bool = 1);
+%End
+
+
+signals:
+ void clientAdded (KXMLGUIClient*);
+ void clientRemoved (KXMLGUIClient*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KXMLGUIFactory
+
+//force
+QPtrList<KAction> testKActionList (QPtrList<KAction>);
+%MethodCode
+//takes list | (QPtrList<KAction>)
+//returns (QPtrList<KAction>)
+
+ sipRes = a0;
+%End
+
+//end
+
+
+%MappedType QPtrList<KAction>
+//converts a Python list of KAction
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kaction.h>
+#include <sipkdeuiKAction.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KAction> *cpplist = (QPtrList<KAction> *)sipCpp;
+ KAction *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KAction, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KAction> *cpplist = new QPtrList<KAction>;
+
+ PyObject *elem;
+ KAction *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KAction *)sipForceConvertTo_KAction (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<KXMLGUIClient>
+//converts a Python list of KXMLGUIClient
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kxmlguiclient.h>
+#include <sipkdeuiKXMLGUIClient.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KXMLGUIClient> *cpplist = (QPtrList<KXMLGUIClient> *)sipCpp;
+ KXMLGUIClient *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KXMLGUIClient (*cpp), sipClass_KXMLGUIClient)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KXMLGUIClient> *cpplist = new QPtrList<KXMLGUIClient>;
+
+ PyObject *elem;
+ KXMLGUIClient *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KXMLGUIClient *)sipForceConvertTo_KXMLGUIClient (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<QWidget>
+//converts a Python list of QWidget
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <sipqtQWidget.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<QWidget> *cpplist = (QPtrList<QWidget> *)sipCpp;
+ QWidget *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_QWidget, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<QWidget> *cpplist = new QPtrList<QWidget>;
+
+ PyObject *elem;
+ QWidget *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (QWidget *)sipForceConvertTo_QWidget (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kdeui/qxembed.sip b/python/pykde/sip/kdeui/qxembed.sip
new file mode 100644
index 00000000..1fbc235f
--- /dev/null
+++ b/python/pykde/sip/kdeui/qxembed.sip
@@ -0,0 +1,113 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kdeui version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class QXEmbed : QWidget
+{
+%TypeHeaderCode
+#include <qxembed.h>
+%End
+
+
+public:
+ QXEmbed (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ static void initialize ();
+
+%If ( KDE_3_1_1 - )
+
+ enum Protocol
+ {
+ XEMBED,
+ XPLAIN
+ };
+
+ void setProtocol (QXEmbed::Protocol);
+ QXEmbed::Protocol protocol ();
+%End
+
+ void embed (WId);
+ WId embeddedWinId () const;
+ static void embedClientIntoWindow (QWidget*, WId);
+ static bool processClientCmdline (QWidget*, SIP_PYLIST) [bool (QWidget*, int&, char**)];
+%MethodCode
+//returns (bool)
+//takes client | (QWidget) | argv | (a Python list of strings which may be modified)
+
+//returns
+//takes list (a Python list of strings) | index (int)
+
+ int n;
+
+ if ((n = PyList_Size (a1)) == 0)
+ return NULL;
+
+ char **strings;
+
+ if ((strings = (char **)PyQtListToArray(a1)) == NULL)
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = QXEmbed::processClientCmdline (a0, n, strings);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)strings);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void sendDelete ();
+%End
+
+ void setAutoDelete (bool);
+ bool autoDelete () const;
+ QSize sizeHint () const;
+ QSize minimumSizeHint () const;
+ QSizePolicy sizePolicy () const;
+ bool eventFilter (QObject*, QEvent*);
+ bool customWhatsThis () const;
+ void enterWhatsThisMode ();
+
+%If ( KDE_3_2_0 - )
+ virtual void reparent (QWidget* /Transfer/, WFlags, const QPoint&, bool = 0);
+%End
+
+
+signals:
+ void embeddedWindowDestroyed ();
+
+protected:
+ bool event (QEvent*);
+ void keyPressEvent (QKeyEvent*);
+ void keyReleaseEvent (QKeyEvent*);
+ void focusInEvent (QFocusEvent*);
+ void focusOutEvent (QFocusEvent*);
+ void resizeEvent (QResizeEvent*);
+ void showEvent (QShowEvent*);
+//ig bool x11Event (XEvent*);
+ virtual void windowChanged (WId);
+ bool focusNextPrevChild (bool);
+
+}; // class QXEmbed
+
diff --git a/python/pykde/sip/kfile/booktoken.sip b/python/pykde/sip/kfile/booktoken.sip
new file mode 100644
index 00000000..08edcc51
--- /dev/null
+++ b/python/pykde/sip/kfile/booktoken.sip
@@ -0,0 +1,66 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class BMToken
+{
+%TypeHeaderCode
+#include <booktoken.h>
+%End
+
+
+public:
+ BMToken (const char*, int);
+ char* token ();
+ BMToken* next ();
+ void setNext (BMToken*);
+
+}; // class BMToken
+
+
+class BookmarkTokenizer
+{
+%TypeHeaderCode
+#include <booktoken.h>
+%End
+
+
+public:
+ BookmarkTokenizer ();
+ void begin ();
+ void write (const QString&);
+ void end ();
+ char* nextToken ();
+ bool hasMoreTokens ();
+ void first ();
+
+protected:
+ void reset ();
+ void appendToken (const char*, int);
+
+protected:
+
+}; // class BookmarkTokenizer
+
diff --git a/python/pykde/sip/kfile/kcombiview.sip b/python/pykde/sip/kfile/kcombiview.sip
new file mode 100644
index 00000000..edc39f57
--- /dev/null
+++ b/python/pykde/sip/kfile/kcombiview.sip
@@ -0,0 +1,90 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KCombiView : QSplitter, KFileView
+{
+%TypeHeaderCode
+#include <kcombiview.h>
+%End
+
+
+public:
+ KCombiView (QWidget* /TransferThis/, const char*);
+ virtual QWidget* widget ();
+ virtual void clearView ();
+ virtual void updateView (bool);
+ virtual void updateView (const KFileItem*);
+ virtual void removeItem (const KFileItem*);
+ virtual void listingCompleted ();
+ void setRight (KFileView*);
+ virtual void setSelectionMode (KFile::SelectionMode);
+ virtual void setSelected (const KFileItem*, bool);
+ virtual bool isSelected (const KFileItem*) const;
+ virtual void clearSelection ();
+ virtual void selectAll ();
+ virtual void invertSelection ();
+ virtual void setCurrentItem (const KFileItem*);
+ virtual KFileItem* currentFileItem () const;
+ virtual KFileItem* firstFileItem () const;
+ virtual KFileItem* nextItem (const KFileItem*) const;
+ virtual KFileItem* prevItem (const KFileItem*) const;
+ virtual void insertItem (KFileItem*);
+ virtual void clear ();
+ virtual void setSorting (QDir::SortSpec);
+
+%If ( KDE_3_1_0 - )
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+%End
+
+ void ensureItemVisible (const KFileItem*);
+
+%If ( KDE_3_1_0 - )
+ virtual KActionCollection* actionCollection () const;
+
+%If ( KDE_3_2_0 - )
+ virtual void setAcceptDrops (bool);
+%End
+
+%End
+
+
+protected:
+
+protected slots:
+ void slotSortingChanged (QDir::SortSpec);
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ virtual bool eventFilter (QObject*, QEvent*);
+ void setDropOptions_impl (int);
+%End
+
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KCombiView
+
diff --git a/python/pykde/sip/kfile/kcustommenueditor.sip b/python/pykde/sip/kfile/kcustommenueditor.sip
new file mode 100644
index 00000000..4307d806
--- /dev/null
+++ b/python/pykde/sip/kfile/kcustommenueditor.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KCustomMenuEditor : KDialogBase
+{
+%TypeHeaderCode
+#include <kcustommenueditor.h>
+%End
+
+
+public:
+ KCustomMenuEditor (QWidget* /TransferThis/);
+ void load (KConfigBase*);
+ void save (KConfigBase*);
+
+public slots:
+ void slotNewItem ();
+ void slotRemoveItem ();
+ void slotMoveUp ();
+ void slotMoveDown ();
+
+%If ( KDE_3_2_0 - )
+ void refreshButton ();
+%End
+
+
+protected:
+
+}; // class KCustomMenuEditor
+
+%End
+
diff --git a/python/pykde/sip/kfile/kdiroperator.sip b/python/pykde/sip/kfile/kdiroperator.sip
new file mode 100644
index 00000000..816d9851
--- /dev/null
+++ b/python/pykde/sip/kfile/kdiroperator.sip
@@ -0,0 +1,205 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirOperator : QWidget
+{
+%TypeHeaderCode
+#include <kdiroperator.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+
+ enum ActionTypes
+ {
+ SortActions,
+ ViewActions,
+ NavActions,
+ FileActions,
+ AllActions
+ };
+
+%End
+
+ KDirOperator (const KURL& = KURL (), QWidget* /TransferThis/ = 0, const char* = 0);
+ void setShowHiddenFiles (bool);
+ bool showHiddenFiles () const;
+ void close ();
+
+%If ( KDE_3_4_0 - )
+ virtual bool close (bool);
+%End
+
+ void setNameFilter (const QString&);
+ const QString& nameFilter () const;
+
+%If ( KDE_3_1_2 - )
+ void setMimeFilter (const QStringList&);
+ QStringList mimeFilter () const;
+ void clearFilter ();
+%End
+
+ KURL url () const;
+ void setURL (const KURL&, bool);
+ void setCurrentItem (const QString&);
+ void setView (KFileView*);
+ const KFileView* view () const;
+ QWidget* viewWidget () const;
+ void setView (KFile::FileView);
+ void setSorting (QDir::SortSpec);
+ QDir::SortSpec sorting () const;
+ bool isRoot () const;
+ KDirLister* dirLister () const;
+ KProgress* progressBar () const;
+ void setMode (KFile::Mode);
+ KFile::Mode mode () const;
+ void setPreviewWidget (const QWidget*);
+ const KFileItemList* selectedItems () const;
+ bool isSelected (const KFileItem*) const;
+ int numDirs () const;
+ int numFiles () const;
+ KCompletion* completionObject () const;
+ KCompletion* dirCompletionObject () const;
+ KActionCollection* actionCollection () const;
+
+%If ( KDE_3_1_0 - )
+ void setViewConfig (KConfig*, const QString&);
+ KConfig* viewConfig ();
+ QString viewConfigGroup () const;
+%End
+
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+ void setOnlyDoubleClickSelectsFiles (bool);
+ bool onlyDoubleClickSelectsFiles () const;
+ bool mkdir (const QString&, bool = 1);
+ KIO::DeleteJob* del (const KFileItemList&, bool = 1, bool = 1) /PyName=del_/;
+
+%If ( KDE_3_0_3 - )
+ KIO::DeleteJob* del (const KFileItemList&, QWidget* /Transfer/, bool = 1, bool = 1) /PyName=del_/;
+%End
+
+ void clearHistory ();
+ void setEnableDirHighlighting (bool);
+ bool dirHighlighting () const;
+ bool dirOnlyMode () const;
+ static bool dirOnlyMode (uint);
+
+%If ( KDE_3_1_0 - )
+ void setupMenu (int);
+
+%If ( KDE_3_2_0 - )
+ virtual void setAcceptDrops (bool);
+ void setDropOptions (int);
+
+%If ( KDE_3_4_0 - )
+ KIO::CopyJob* trash (const KFileItemList&, QWidget* /Transfer/, bool = 1, bool = 1);
+%End
+
+%End
+
+%End
+
+
+protected:
+ virtual KFileView* createView (QWidget* /Transfer/, KFile::FileView);
+ void setDirLister (KDirLister*);
+
+%If ( KDE_3_2_0 - )
+ virtual void resizeEvent (QResizeEvent*);
+%End
+
+ void setupActions ();
+ void updateSortActions ();
+ void updateViewActions ();
+ void setupMenu ();
+ void prepareCompletionObjects ();
+ bool checkPreviewSupport ();
+
+public slots:
+ void back ();
+ void forward ();
+ void home ();
+ void cdUp ();
+ void updateDir ();
+ void rereadDir ();
+ void mkdir ();
+ void deleteSelected ();
+ void updateSelectionDependentActions ();
+ QString makeCompletion (const QString&);
+ QString makeDirCompletion (const QString&);
+
+%If ( KDE_3_4_0 - )
+ void trashSelected (KAction::ActivationReason, Qt::ButtonState);
+%End
+
+
+protected slots:
+ void resetCursor ();
+ void pathChanged ();
+ void insertNewFiles (const KFileItemList&);
+ void itemDeleted (KFileItem*);
+ void selectDir (const KFileItem*);
+ void selectFile (const KFileItem*);
+ void highlightFile (const KFileItem*);
+ virtual void activatedMenu (const KFileItem*, const QPoint&);
+ void sortByName ();
+ void sortBySize ();
+ void sortByDate ();
+ void sortReversed ();
+ void toggleDirsFirst ();
+ void toggleIgnoreCase ();
+ void slotCompletionMatch (const QString&);
+
+signals:
+ void urlEntered (const KURL&);
+ void updateInformation (int, int);
+ void completion (const QString&);
+ void finishedLoading ();
+ void viewChanged (KFileView*);
+ void fileHighlighted (const KFileItem*);
+ void dirActivated (const KFileItem*);
+ void fileSelected (const KFileItem*);
+
+%If ( KDE_3_2_0 - )
+ void dropped (const KFileItem*, QDropEvent*, const KURL::List&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ void resizeEvent (QResizeEvent*);
+%End
+
+
+}; // class KDirOperator
+
diff --git a/python/pykde/sip/kfile/kdirselectdialog.sip b/python/pykde/sip/kfile/kdirselectdialog.sip
new file mode 100644
index 00000000..2bafa099
--- /dev/null
+++ b/python/pykde/sip/kfile/kdirselectdialog.sip
@@ -0,0 +1,71 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirSelectDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kdirselectdialog.h>
+%End
+
+
+public:
+ KDirSelectDialog (const QString& = QString ::null , bool = 0, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ KURL url () const;
+ KFileTreeView* view () const;
+ bool localOnly () const;
+ static KURL selectDirectory (const QString& = QString ::null , bool = 0, QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+%If ( KDE_3_1_0 - )
+ QString startDir () const;
+%End
+
+
+public slots:
+
+%If ( KDE_3_1_0 - )
+ void setCurrentURL (const KURL&);
+%End
+
+
+protected slots:
+
+%If ( KDE_3_5_0 - )
+ virtual void slotUser1 ();
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ virtual void accept ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDirSelectDialog
+
diff --git a/python/pykde/sip/kfile/kdirsize.sip b/python/pykde/sip/kfile/kdirsize.sip
new file mode 100644
index 00000000..cec93a14
--- /dev/null
+++ b/python/pykde/sip/kfile/kdirsize.sip
@@ -0,0 +1,86 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirSize : KIO::Job
+{
+%TypeHeaderCode
+#include <sipkdecoreulonglong.h>
+#include <kdirsize.h>
+%End
+
+
+protected:
+ KDirSize (const KURL&);
+ KDirSize (const KFileItemList&);
+ ~KDirSize ();
+
+public:
+ KIO::filesize_t totalSize () const;
+
+%If ( KDE_3_3_0 - )
+ KIO::filesize_t totalFiles () const;
+ KIO::filesize_t totalSubdirs () const;
+%End
+
+ static KDirSize* dirSizeJob (const KURL&);
+ static KDirSize* dirSizeJob (const KFileItemList&);
+
+%If ( KDE_3_1_2 - )
+ static KIO::filesize_t dirSize (const KURL&);
+%End
+
+
+protected:
+ void setSync ();
+ void startNextJob (const KURL&);
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+ void slotEntries (KIO::Job*, const KIO::UDSEntryList&);
+ void processList ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_0_1 )
+//ig longlong totalSize64 ();
+%End
+
+
+%If ( - KDE_3_1_2 )
+ static ulong dirSize (const KURL&);
+
+%If ( - KDE_3_0_1 )
+//ig static longlong dirSize64 (const KURL&);
+%End
+
+%End
+
+
+}; // class KDirSize
+
diff --git a/python/pykde/sip/kfile/kdiskfreesp.sip b/python/pykde/sip/kfile/kdiskfreesp.sip
new file mode 100644
index 00000000..b4ee3728
--- /dev/null
+++ b/python/pykde/sip/kfile/kdiskfreesp.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KDiskFreeSp : QObject
+{
+%TypeHeaderCode
+#include <kdiskfreesp.h>
+%End
+
+
+public:
+ KDiskFreeSp (QObject* /TransferThis/ = 0, const char* = 0);
+ int readDF (const QString&);
+ static KDiskFreeSp* findUsageInfo (const QString&);
+
+signals:
+ void foundMountPoint (const QString&, ulong, ulong, ulong);
+//ig void foundMountPoint (const ulong&, const ulong&, const ulong&, const QString&);
+ void done ();
+
+}; // class KDiskFreeSp
+
+%End
+
diff --git a/python/pykde/sip/kfile/kencodingfiledialog.sip b/python/pykde/sip/kfile/kencodingfiledialog.sip
new file mode 100644
index 00000000..b5163528
--- /dev/null
+++ b/python/pykde/sip/kfile/kencodingfiledialog.sip
@@ -0,0 +1,65 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KEncodingFileDialog : KFileDialog
+{
+%TypeHeaderCode
+#include <kencodingfiledialog.h>
+%End
+
+
+public:
+
+ class Result
+ {
+
+ public:
+ QStringList fileNames;
+ KURL::List URLs;
+ QString encoding;
+
+ }; // class Result
+
+
+public:
+ KEncodingFileDialog (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , KFileDialog::OperationMode = KFileDialog ::Opening , QWidget* /TransferThis/ = 0, const char* = "", bool = 1);
+ QString selectedEncoding () const;
+ static KEncodingFileDialog::Result getOpenFileNameAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KEncodingFileDialog::Result getOpenFileNamesAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KEncodingFileDialog::Result getOpenURLAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KEncodingFileDialog::Result getOpenURLsAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KEncodingFileDialog::Result getSaveFileNameAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KEncodingFileDialog::Result getSaveURLAndEncoding (const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KEncodingFileDialog
+
+%End
+
diff --git a/python/pykde/sip/kfile/kfile-kde310.diff b/python/pykde/sip/kfile/kfile-kde310.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde310.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde311.diff b/python/pykde/sip/kfile/kfile-kde311.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde311.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde312.diff b/python/pykde/sip/kfile/kfile-kde312.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde312.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde313.diff b/python/pykde/sip/kfile/kfile-kde313.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde313.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde314.diff b/python/pykde/sip/kfile/kfile-kde314.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde314.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde315.diff b/python/pykde/sip/kfile/kfile-kde315.diff
new file mode 100644
index 00000000..ddad6d63
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde315.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip
diff --git a/python/pykde/sip/kfile/kfile-kde320.diff b/python/pykde/sip/kfile/kfile-kde320.diff
new file mode 100644
index 00000000..f5ab9bd7
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde320.diff
@@ -0,0 +1,6 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
++ %Include knotifywidgetbase.sip \ No newline at end of file
diff --git a/python/pykde/sip/kfile/kfile-kde321.diff b/python/pykde/sip/kfile/kfile-kde321.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde321.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde322.diff b/python/pykde/sip/kfile/kfile-kde322.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde322.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde323.diff b/python/pykde/sip/kfile/kfile-kde323.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde323.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde330.diff b/python/pykde/sip/kfile/kfile-kde330.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde330.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde331.diff b/python/pykde/sip/kfile/kfile-kde331.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde331.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde332.diff b/python/pykde/sip/kfile/kfile-kde332.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde332.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde340.diff b/python/pykde/sip/kfile/kfile-kde340.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde340.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde341.diff b/python/pykde/sip/kfile/kfile-kde341.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde341.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde342.diff b/python/pykde/sip/kfile/kfile-kde342.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde342.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde343.diff b/python/pykde/sip/kfile/kfile-kde343.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde343.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde350.diff b/python/pykde/sip/kfile/kfile-kde350.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde350.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde351.diff b/python/pykde/sip/kfile/kfile-kde351.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde351.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde352.diff b/python/pykde/sip/kfile/kfile-kde352.diff
new file mode 100644
index 00000000..81a06032
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde352.diff
@@ -0,0 +1,6 @@
+- %Include krecentdirs.sip
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile-kde353.diff b/python/pykde/sip/kfile/kfile-kde353.diff
new file mode 100644
index 00000000..2545aae5
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile-kde353.diff
@@ -0,0 +1,5 @@
++ %Include kcustommenueditor.sip
++ %Include kdiskfreesp.sip
++ %Include kencodingfiledialog.sip
++ %Include kfilesharedlg.sip
++ %Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfile.sip b/python/pykde/sip/kfile/kfile.sip
new file mode 100644
index 00000000..7e23e132
--- /dev/null
+++ b/python/pykde/sip/kfile/kfile.sip
@@ -0,0 +1,115 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFile
+{
+%TypeHeaderCode
+#include <kfile.h>
+%End
+
+
+public:
+
+%If ( KDE_3_3_0 - )
+
+ enum Mode
+ {
+ File,
+ Directory,
+ Files,
+ ExistingOnly,
+ LocalOnly,
+ ModeMax
+ };
+
+
+ enum FileView
+ {
+ Default,
+ Simple,
+ Detail,
+ SeparateDirs,
+ PreviewContents,
+ PreviewInfo,
+ FileViewMax
+ };
+
+%End
+
+
+ enum SelectionMode
+ {
+ Single,
+ Multi,
+ Extended,
+ NoSelection
+ };
+
+ static bool isSortByName (const QDir::SortSpec&);
+ static bool isSortBySize (const QDir::SortSpec&);
+ static bool isSortByDate (const QDir::SortSpec&);
+ static bool isSortDirsFirst (const QDir::SortSpec&);
+ static bool isSortCaseInsensitive (const QDir::SortSpec&);
+ static bool isDefaultView (const KFile::FileView&);
+ static bool isSimpleView (const KFile::FileView&);
+ static bool isDetailView (const KFile::FileView&);
+ static bool isSeparateDirs (const KFile::FileView&);
+ static bool isPreviewContents (const KFile::FileView&);
+
+%If ( KDE_3_1_0 - )
+ static bool isPreviewInfo (const KFile::FileView&);
+%End
+
+
+public:
+
+%If ( - KDE_3_3_0 )
+
+ enum Mode
+ {
+ File,
+ Directory,
+ Files,
+ ExistingOnly,
+ LocalOnly
+ };
+
+
+ enum FileView
+ {
+ Default,
+ Simple,
+ Detail,
+ SeparateDirs,
+ PreviewContents,
+ PreviewInfo
+ };
+
+%End
+
+
+}; // class KFile
+
diff --git a/python/pykde/sip/kfile/kfilebookmark.sip b/python/pykde/sip/kfile/kfilebookmark.sip
new file mode 100644
index 00000000..7730dc2c
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilebookmark.sip
@@ -0,0 +1,157 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileBookmark
+{
+%TypeHeaderCode
+#include <kfilebookmark.h>
+%End
+
+
+public:
+
+ enum
+ {
+ URL,
+ Folder
+ };
+
+ KFileBookmark ();
+ KFileBookmark (const QString&, const QString&);
+ void clear ();
+ void setText (const QString&);
+ void setURL (const QString&);
+ void setType (int);
+ const QString getText ();
+ const QString getURL ();
+ int getType ();
+ QPtrList<KFileBookmark>& getChildren ();
+
+}; // class KFileBookmark
+
+
+class KFileBookmarkManager : QObject
+{
+%TypeHeaderCode
+#include <kfilebookmark.h>
+%End
+
+
+public:
+ KFileBookmarkManager ();
+ void setTitle (const QString&);
+ void read (const QString&);
+ void write (const QString&);
+ void add (const QString&, const QString&);
+ bool remove (int);
+ bool moveUp (int);
+ bool moveDown (int);
+ void reread ();
+ void rename (int, const QString&);
+ void write ();
+ KFileBookmark* getBookmark (int);
+ KFileBookmark* getRoot ();
+
+signals:
+ void changed ();
+
+}; // class KFileBookmarkManager
+
+
+
+%MappedType QPtrList<KFileBookmark>
+//converts a Python list of KFileBookmark
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KFileBookmark> *cpplist = (QPtrList<KFileBookmark> *)sipCpp;
+ KFileBookmark *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KFileBookmark, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KFileBookmark> *cpplist = new QPtrList<KFileBookmark>;
+
+ PyObject *elem;
+ KFileBookmark *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ #if SIPVERSION >= 0x040400
+ cpp = (KFileBookmark *)sipForceConvertToTransfer_KFileBookmark (elem, &iserr, sipTransferObj);
+ #else
+ cpp = (KFileBookmark *)sipForceConvertTo_KFileBookmark (elem, &iserr);
+ #endif
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kfile/kfiledetailview.sip b/python/pykde/sip/kfile/kfiledetailview.sip
new file mode 100644
index 00000000..7fb19514
--- /dev/null
+++ b/python/pykde/sip/kfile/kfiledetailview.sip
@@ -0,0 +1,207 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileListViewItem : KListViewItem
+{
+%TypeHeaderCode
+#include <kfiledetailview.h>
+%End
+
+
+public:
+ KFileListViewItem (QListView* /TransferThis/, const QString&, const QPixmap&, KFileItem*);
+
+%If ( KDE_3_0_1 - )
+ KFileListViewItem (QListView* /TransferThis/, KFileItem*);
+%End
+
+ KFileListViewItem (QListView* /TransferThis/, const QString&, const QPixmap&, KFileItem*, QListViewItem*);
+ KFileItem* fileInfo () const;
+ virtual QString key (int, bool) const;
+ void setKey (const QString&);
+ QRect rect () const;
+
+%If ( KDE_3_0_1 - )
+ void init ();
+%End
+
+
+}; // class KFileListViewItem
+
+
+class KFileDetailView : KListView, KFileView
+{
+%TypeHeaderCode
+#include <kfiledetailview.h>
+%End
+
+
+public:
+ KFileDetailView (QWidget* /TransferThis/, const char*);
+ virtual QWidget* widget ();
+ virtual void clearView ();
+ virtual void setAutoUpdate (bool);
+ virtual void setSelectionMode (KFile::SelectionMode);
+ virtual void updateView (bool);
+ virtual void updateView (const KFileItem*);
+ virtual void removeItem (const KFileItem*);
+ virtual void listingCompleted ();
+ virtual void setSelected (const KFileItem*, bool);
+ virtual bool isSelected (const KFileItem*) const;
+ virtual void clearSelection ();
+ virtual void selectAll ();
+ virtual void invertSelection ();
+ virtual void setCurrentItem (const KFileItem*);
+ virtual KFileItem* currentFileItem () const;
+ virtual KFileItem* firstFileItem () const;
+ virtual KFileItem* nextItem (const KFileItem*) const;
+ virtual KFileItem* prevItem (const KFileItem*) const;
+ virtual void insertItem (KFileItem*);
+ virtual void setSorting (QDir::SortSpec);
+ void ensureItemVisible (const KFileItem*);
+ void mimeTypeDeterminationFinished ();
+ void determineIcon (KFileListViewItem*);
+ QScrollView* scrollWidget () const;
+
+%If ( KDE_3_2_0 - )
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+%End
+
+
+signals:
+
+%If ( KDE_3_2_0 - )
+ void dropped (QDropEvent*, KFileItem*);
+ void dropped (QDropEvent*, const KURL::List&, const KURL&);
+%End
+
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual QDragObject* dragObject ();
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+ virtual void contentsDragMoveEvent (QDragMoveEvent*);
+ virtual void contentsDragLeaveEvent (QDragLeaveEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+ virtual bool acceptDrag (QDropEvent*) const;
+%End
+
+
+protected slots:
+ void slotSelectionChanged ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+//force
+
+private:
+ void slotSortingChanged (int);
+ void selected (QListViewItem*);
+ void slotDoubleClicked (QListViewItem*);
+ void highlighted (QListViewItem*);
+ void rightButtonPressed (QListViewItem*);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KApplicationPropsPlugin, &sipClass_KApplicationPropsPlugin},
+ {sipName_KApplicationPropsPlugin, &sipClass_KApplicationPropsPlugin},
+#if KDE_VERSION < 310
+// {sipName_KApplicationTree, &sipClass_KApplicationTree},
+#endif
+ {sipName_KBindingPropsPlugin, &sipClass_KBindingPropsPlugin},
+ {sipName_KBindingPropsPlugin, &sipClass_KBindingPropsPlugin},
+ {sipName_KCombiView, &sipClass_KCombiView},
+#if KDE_VERSION >= 0x030100
+ {sipName_KCustomMenuEditor, &sipClass_KCustomMenuEditor},
+#endif
+ {sipName_KDevicePropsPlugin, &sipClass_KDevicePropsPlugin},
+ {sipName_KDevicePropsPlugin, &sipClass_KDevicePropsPlugin},
+ {sipName_KDirOperator, &sipClass_KDirOperator},
+ {sipName_KDirSelectDialog, &sipClass_KDirSelectDialog},
+ {sipName_KDirSize, &sipClass_KDirSize},
+#if KDE_VERSION >= 0x030100
+ {sipName_KDiskFreeSp, &sipClass_KDiskFreeSp},
+#endif
+ {sipName_KExecPropsPlugin, &sipClass_KExecPropsPlugin},
+ {sipName_KExecPropsPlugin, &sipClass_KExecPropsPlugin},
+ {sipName_KFileDetailView, &sipClass_KFileDetailView},
+ {sipName_KFileDialog, &sipClass_KFileDialog},
+ {sipName_KFileFilterCombo, &sipClass_KFileFilterCombo},
+ {sipName_KFileIconView, &sipClass_KFileIconView},
+ {sipName_KFilePermissionsPropsPlugin,&sipClass_KFilePermissionsPropsPlugin},
+ {sipName_KFilePermissionsPropsPlugin,&sipClass_KFilePermissionsPropsPlugin},
+ {sipName_KFilePreview, &sipClass_KFilePreview},
+ {sipName_KFilePropsPlugin, &sipClass_KFilePropsPlugin},
+ {sipName_KFilePropsPlugin, &sipClass_KFilePropsPlugin},
+#if KDE_VERSION >= 0x030100
+ {sipName_KFileSharePropsPlugin, &sipClass_KFileSharePropsPlugin},
+#endif
+ {sipName_KFileTreeBranch, &sipClass_KFileTreeBranch},
+ {sipName_KFileTreeView, &sipClass_KFileTreeView},
+ {sipName_KFileTreeViewToolTip, &sipClass_KFileTreeViewToolTip},
+ {sipName_KFileViewSignaler, &sipClass_KFileViewSignaler},
+ {sipName_KIconButton, &sipClass_KIconButton},
+ {sipName_KIconCanvas, &sipClass_KIconCanvas},
+ {sipName_KIconDialog, &sipClass_KIconDialog},
+ {sipName_KImageFilePreview, &sipClass_KImageFilePreview},
+#if KDE_VERSION >= 0x030100
+ {sipName_KNotifyDialog, &sipClass_KNotifyDialog},
+ {sipName_KNotifyWidget, &sipClass_KNotify_KNotifyWidget},
+#if KDE_VERSION < 0x030200
+ {sipName_KNotifyWidgetBase, &sipClass_KNotifyWidgetBase},
+#endif
+#endif
+ {sipName_KOpenWithDlg, &sipClass_KOpenWithDlg},
+ {sipName_KPreviewWidgetBase, &sipClass_KPreviewWidgetBase},
+ {sipName_KPropertiesDialog, &sipClass_KPropertiesDialog},
+ {sipName_KPropertiesDialog, &sipClass_KPropertiesDialog},
+ {sipName_KPropsDlgPlugin, &sipClass_KPropsDlgPlugin},
+ {sipName_KPropsDlgPlugin, &sipClass_KPropsDlgPlugin},
+ {sipName_KURLBar, &sipClass_KURLBar},
+ {sipName_KURLBarItem, &sipClass_KURLBarItem},
+ {sipName_KURLBarItemDialog, &sipClass_KURLBarItemDialog},
+ {sipName_KURLBarListBox, &sipClass_KURLBarListBox},
+ {sipName_KURLComboBox, &sipClass_KURLComboBox},
+ {sipName_KURLPropsPlugin, &sipClass_KURLPropsPlugin},
+ {sipName_KURLPropsPlugin, &sipClass_KURLPropsPlugin},
+ {sipName_KURLRequester, &sipClass_KURLRequester},
+ {sipName_KURLRequesterDlg, &sipClass_KURLRequesterDlg},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+//end
+
+}; // class KFileDetailView
+
diff --git a/python/pykde/sip/kfile/kfiledialog.sip b/python/pykde/sip/kfile/kfiledialog.sip
new file mode 100644
index 00000000..21384bee
--- /dev/null
+++ b/python/pykde/sip/kfile/kfiledialog.sip
@@ -0,0 +1,207 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kfiledialog.h>
+%End
+
+
+public:
+
+ enum OperationMode
+ {
+ Other,
+ Opening,
+ Saving
+ };
+
+ KFileDialog (const QString&, const QString&, QWidget* /TransferThis/, const char*, bool);
+
+%If ( KDE_3_1_0 - )
+ KFileDialog (const QString&, const QString&, QWidget* /TransferThis/, const char*, bool, QWidget*);
+%End
+
+ KURL selectedURL () const;
+ KURL::List selectedURLs () const;
+ KURL baseURL () const;
+ QString selectedFile () const;
+ QStringList selectedFiles () const;
+ void setURL (const KURL&, bool = 1);
+ void setSelection (const QString&);
+ void setOperationMode (KFileDialog::OperationMode);
+ KFileDialog::OperationMode operationMode () const;
+ void setKeepLocation (bool);
+ bool keepsLocation () const;
+ void setFilter (const QString&);
+ QString currentFilter () const;
+ void setFilterMimeType (const QString&, const KMimeType::List&, const KMimeType::Ptr&);
+ KMimeType::Ptr currentFilterMimeType ();
+ void setMimeFilter (const QStringList&, const QString& = QString ::null );
+ QString currentMimeFilter () const;
+ void clearFilter ();
+ void setPreviewWidget (const QWidget*);
+ void setPreviewWidget (const KPreviewWidgetBase*);
+ static QString getOpenFileName (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+%If ( KDE_3_4_0 - )
+ static QString getOpenFileNameWId (const QString&, const QString&, WId, const QString&);
+%End
+
+ static QStringList getOpenFileNames (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KURL getOpenURL (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static KURL::List getOpenURLs (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static QString getSaveFileName (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+%If ( KDE_3_4_0 - )
+ static QString getSaveFileNameWId (const QString&, const QString&, WId, const QString&);
+%End
+
+ static KURL getSaveURL (const QString& = QString ::null , const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ static QString getExistingDirectory (const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+%If ( KDE_3_1_0 - )
+ static KURL getExistingURL (const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+%End
+
+ static KURL getImageOpenURL (const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ virtual void show ();
+ void setMode (KFile::Mode);
+ void setMode (uint);
+ KFile::Mode mode () const;
+ void setLocationLabel (const QString&);
+ KToolBar* toolBar () const;
+ KPushButton* okButton () const;
+ KPushButton* cancelButton () const;
+
+%If ( KDE_3_2_0 - )
+ KURLBar* speedBar ();
+%End
+
+ KActionCollection* actionCollection () const;
+
+%If ( KDE_3_1_0 - )
+ int pathComboIndex ();
+ static KURL getStartURL (const QString&, QString&);
+
+%If ( KDE_3_2_0 - )
+ static void setStartDir (const KURL&);
+%End
+
+%End
+
+
+signals:
+ void fileSelected (const QString&);
+ void fileHighlighted (const QString&);
+ void selectionChanged ();
+ void filterChanged (const QString&);
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ virtual void keyPressEvent (QKeyEvent*);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ void init (const QString&, const QString&, QWidget*);
+%End
+
+ virtual void initGUI ();
+ void multiSelectionChanged ();
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+ virtual void readRecentFiles (KConfig*);
+ virtual void saveRecentFiles (KConfig*);
+ KURL::List tokenize (const QString&) const;
+
+%If ( KDE_3_2_0 - )
+ KURL getCompleteURL (const QString&);
+ QString currentFilterExtension ();
+ void updateAutoSelectExtension ();
+%End
+
+
+protected slots:
+ void urlEntered (const KURL&);
+ void enterURL (const KURL&);
+ void enterURL (const QString&);
+ void locationActivated (const QString&);
+ void toolbarCallback (int);
+ void pathComboChanged (const QString&);
+ void dirCompletion (const QString&);
+ void slotFilterChanged ();
+ void fileHighlighted (const KFileItem*);
+ void fileSelected (const KFileItem*);
+ void slotStatResult (KIO::Job*);
+ void slotLoadingFinished ();
+ void fileCompletion (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void toggleSpeedbar (bool);
+
+%If ( KDE_3_4_0 - )
+ void toggleBookmarks (bool);
+%End
+
+%End
+
+ virtual void updateStatusLine (int, int);
+ virtual void slotOk ();
+ virtual void accept ();
+ virtual void slotCancel ();
+
+%If ( KDE_3_2_0 - )
+ void slotAutoSelectExtClicked ();
+%End
+
+ void addToRecentDocuments ();
+
+%If ( KDE_3_1_0 - )
+ void initSpeedbar ();
+%End
+
+
+private:
+ KFileDialog (const KFileDialog&);
+
+protected:
+ KURL::List& parseSelectedURLs () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_2_0 )
+//ig void addDirEntry (KFileItem*, bool);
+%End
+
+
+}; // class KFileDialog
+
diff --git a/python/pykde/sip/kfile/kfilefiltercombo.sip b/python/pykde/sip/kfile/kfilefiltercombo.sip
new file mode 100644
index 00000000..f6b1e573
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilefiltercombo.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileFilterCombo : KComboBox
+{
+%TypeHeaderCode
+#include <kfilefiltercombo.h>
+%End
+
+
+public:
+ KFileFilterCombo (QWidget* /TransferThis/ = 0, const char* = 0);
+ void setFilter (const QString&);
+ QString currentFilter () const;
+
+%If ( KDE_3_4_0 - )
+ void setCurrentFilter (const QString&);
+%End
+
+ void setMimeFilter (const QStringList&, const QString&);
+ bool showsAllTypes () const;
+ void setDefaultFilter (const QString&);
+ QString defaultFilter () const;
+
+protected:
+ virtual bool eventFilter (QObject*, QEvent*);
+
+signals:
+ void filterChanged ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFileFilterCombo
+
diff --git a/python/pykde/sip/kfile/kfileiconview.sip b/python/pykde/sip/kfile/kfileiconview.sip
new file mode 100644
index 00000000..92bfc587
--- /dev/null
+++ b/python/pykde/sip/kfile/kfileiconview.sip
@@ -0,0 +1,141 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileIconViewItem : KIconViewItem
+{
+%TypeHeaderCode
+#include <kfileiconview.h>
+%End
+
+
+public:
+ KFileIconViewItem (QIconView* /TransferThis/, const QString&, const QPixmap&, KFileItem*);
+
+%If ( KDE_3_0_1 - )
+ KFileIconViewItem (QIconView* /TransferThis/, KFileItem*);
+%End
+
+ KFileItem* fileInfo () const;
+
+}; // class KFileIconViewItem
+
+
+class KFileIconView : KIconView, KFileView
+{
+%TypeHeaderCode
+#include <kfileiconview.h>
+%End
+
+
+public:
+ KFileIconView (QWidget* /TransferThis/, const char*);
+ virtual QWidget* widget ();
+ virtual void clearView ();
+ virtual void setAutoUpdate (bool);
+ virtual void updateView (bool);
+ virtual void updateView (const KFileItem*);
+ virtual void removeItem (const KFileItem*);
+ virtual void listingCompleted ();
+ virtual void insertItem (KFileItem*);
+ virtual void setSelectionMode (KFile::SelectionMode);
+ virtual void setSelected (const KFileItem*, bool);
+ virtual bool isSelected (const KFileItem*) const;
+ virtual void clearSelection ();
+ virtual void selectAll ();
+ virtual void invertSelection ();
+ virtual void setCurrentItem (const KFileItem*);
+ virtual KFileItem* currentFileItem () const;
+ virtual KFileItem* firstFileItem () const;
+ virtual KFileItem* nextItem (const KFileItem*) const;
+ virtual KFileItem* prevItem (const KFileItem*) const;
+ void setIconSize (int);
+ void setPreviewSize (int);
+
+%If ( KDE_3_4_0 - )
+ void setIgnoreMaximumSize (bool = 1);
+%End
+
+ int iconSize () const;
+ void ensureItemVisible (const KFileItem*);
+ virtual void setSorting (QDir::SortSpec);
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+ void mimeTypeDeterminationFinished ();
+ void determineIcon (KFileIconViewItem*);
+ QScrollView* scrollWidget () const;
+
+%If ( KDE_3_2_0 - )
+ void setAcceptDrops (bool);
+%End
+
+
+public slots:
+ void showPreviews ();
+
+%If ( KDE_3_2_0 - )
+ void zoomIn ();
+ void zoomOut ();
+%End
+
+
+%If ( KDE_3_1_0 - )
+ virtual void arrangeItemsInGrid (bool = 1);
+%End
+
+
+protected:
+ virtual void keyPressEvent (QKeyEvent*);
+ virtual void hideEvent (QHideEvent*);
+ virtual void showEvent (QShowEvent*);
+
+%If ( KDE_3_0_1 - )
+ virtual bool eventFilter (QObject*, QEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual QDragObject* dragObject ();
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+ virtual void contentsDragMoveEvent (QDragMoveEvent*);
+ virtual void contentsDragLeaveEvent (QDragLeaveEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+ bool acceptDrag (QDropEvent*) const;
+%End
+
+%End
+
+
+signals:
+
+%If ( KDE_3_2_0 - )
+ void dropped (QDropEvent*, KFileItem*);
+ void dropped (QDropEvent*, const KURL::List&, const KURL&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFileIconView
+
diff --git a/python/pykde/sip/kfile/kfilemod.sip b/python/pykde/sip/kfile/kfilemod.sip
new file mode 100644
index 00000000..c9ab4dc3
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilemod.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kfile
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include kcombiview.sip
+%Include kdiroperator.sip
+%Include kdirselectdialog.sip
+%Include kdirsize.sip
+%Include kfile.sip
+%Include kfiledetailview.sip
+%Include kfiledialog.sip
+%Include kfilefiltercombo.sip
+%Include kfileiconview.sip
+%Include kfilepreview.sip
+%Include kfiletreebranch.sip
+%Include kfiletreeview.sip
+%Include kfiletreeviewitem.sip
+%Include kfileview.sip
+%Include kicondialog.sip
+%Include kimagefilepreview.sip
+%Include kopenwith.sip
+%Include kpreviewwidgetbase.sip
+%Include kpropertiesdialog.sip
+%Include krecentdocument.sip
+%Include kurlbar.sip
+%Include kurlcombobox.sip
+%Include kurlrequester.sip
+%Include kurlrequesterdlg.sip
+%Include kcustommenueditor.sip
+%Include kdiskfreesp.sip
+%Include kencodingfiledialog.sip
+%Include kfilesharedlg.sip
+%Include knotifydialog.sip
diff --git a/python/pykde/sip/kfile/kfilemod.sip.in b/python/pykde/sip/kfile/kfilemod.sip.in
new file mode 100644
index 00000000..c67b321d
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilemod.sip.in
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kfile
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include kcombiview.sip
+%Include kdiroperator.sip
+%Include kdirselectdialog.sip
+%Include kdirsize.sip
+%Include kfile.sip
+%Include kfiledetailview.sip
+%Include kfiledialog.sip
+%Include kfilefiltercombo.sip
+%Include kfileiconview.sip
+%Include kfilepreview.sip
+%Include kfiletreebranch.sip
+%Include kfiletreeview.sip
+%Include kfiletreeviewitem.sip
+%Include kfileview.sip
+%Include kicondialog.sip
+%Include kimagefilepreview.sip
+%Include kopenwith.sip
+%Include kpreviewwidgetbase.sip
+%Include kpropertiesdialog.sip
+%Include krecentdocument.sip
+%Include kurlbar.sip
+%Include kurlcombobox.sip
+%Include kurlrequester.sip
+%Include kurlrequesterdlg.sip
+@mark@
diff --git a/python/pykde/sip/kfile/kfilepreview.sip b/python/pykde/sip/kfile/kfilepreview.sip
new file mode 100644
index 00000000..67cc1f00
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilepreview.sip
@@ -0,0 +1,80 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFilePreview : QSplitter, KFileView
+{
+%TypeHeaderCode
+#include <kfilepreview.h>
+%End
+
+
+public:
+ KFilePreview (QWidget* /TransferThis/, const char*);
+ KFilePreview (KFileView*, QWidget* /TransferThis/, const char*);
+ virtual QWidget* widget ();
+ virtual void clearView ();
+ void setFileView (KFileView*);
+ KFileView* fileView () const;
+ virtual void updateView (bool);
+ virtual void updateView (const KFileItem*);
+ virtual void removeItem (const KFileItem*);
+ virtual void listingCompleted ();
+ virtual void setSelectionMode (KFile::SelectionMode);
+ virtual void setSelected (const KFileItem*, bool);
+ virtual bool isSelected (const KFileItem*) const;
+ virtual void clearSelection ();
+ virtual void selectAll ();
+ virtual void invertSelection ();
+ virtual void insertItem (KFileItem*);
+ virtual void clear ();
+ virtual void setCurrentItem (const KFileItem*);
+ virtual KFileItem* currentFileItem () const;
+ virtual KFileItem* firstFileItem () const;
+ virtual KFileItem* nextItem (const KFileItem*) const;
+ virtual KFileItem* prevItem (const KFileItem*) const;
+ virtual void setSorting (QDir::SortSpec);
+
+%If ( KDE_3_1_0 - )
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+%End
+
+ virtual KActionCollection* actionCollection () const;
+ void ensureItemVisible (const KFileItem*);
+ void setPreviewWidget (const QWidget*, const KURL&);
+
+protected slots:
+ virtual void slotHighlighted (const KFileItem*);
+
+signals:
+ void showPreview (const KURL&);
+ void clearPreview ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFilePreview
+
diff --git a/python/pykde/sip/kfile/kfilereader.sip b/python/pykde/sip/kfile/kfilereader.sip
new file mode 100644
index 00000000..ba7209b2
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilereader.sip
@@ -0,0 +1,47 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileReader : KDirLister
+{
+%TypeHeaderCode
+#include <kfilereader.h>
+%End
+
+
+public:
+ KFileReader ();
+ KFileReader (const KURL&, const QString& = QString::null);
+ bool isRoot () const;
+ bool isReadable () const;
+
+protected:
+ virtual KFileItem* createFileItem (const KIO::UDSEntry&, const KURL&, bool);
+
+private:
+ KFileReader (const KFileReader&);
+
+}; // class KFileReader
+
diff --git a/python/pykde/sip/kfile/kfilesharedlg.sip b/python/pykde/sip/kfile/kfilesharedlg.sip
new file mode 100644
index 00000000..a7b53f59
--- /dev/null
+++ b/python/pykde/sip/kfile/kfilesharedlg.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KFileSharePropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kfilesharedlg.h>
+%End
+
+
+public:
+ KFileSharePropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (const KFileItemList&);
+ QWidget* page () const;
+
+protected slots:
+ void slotConfigureFileSharing ();
+
+%If ( KDE_3_4_0 - )
+ void slotConfigureFileSharingDone ();
+%End
+
+
+}; // class KFileSharePropsPlugin
+
+%End
+
diff --git a/python/pykde/sip/kfile/kfiletreebranch.sip b/python/pykde/sip/kfile/kfiletreebranch.sip
new file mode 100644
index 00000000..03f59af0
--- /dev/null
+++ b/python/pykde/sip/kfile/kfiletreebranch.sip
@@ -0,0 +1,235 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileTreeBranch : KDirLister
+{
+%TypeHeaderCode
+#include <kfiletreebranch.h>
+%End
+
+
+public:
+ KFileTreeBranch (KFileTreeView*, const KURL&, const QString&, const QPixmap&, bool = 0, KFileTreeViewItem* = 0);
+ KURL rootUrl () const;
+ virtual void setRoot (KFileTreeViewItem*);
+ KFileTreeViewItem* root ();
+ QString name () const;
+ virtual void setName (const QString);
+ const QPixmap& pixmap ();
+ const QPixmap& openPixmap ();
+ bool showExtensions () const;
+ void setOpen (bool = 1);
+ void setChildRecurse (bool = 1);
+ bool childRecurse ();
+
+public slots:
+ virtual bool populate (const KURL&, KFileTreeViewItem*);
+ virtual void setShowExtensions (bool = 1);
+ void setOpenPixmap (const QPixmap&);
+
+protected:
+ virtual KFileTreeViewItem* createTreeViewItem (KFileTreeViewItem* /Transfer/, KFileItem*);
+
+public:
+
+%If ( KDE_3_1_0 - )
+ virtual KFileTreeViewItem* findTVIByURL (const KURL&);
+%End
+
+
+signals:
+ void populateFinished (KFileTreeViewItem*);
+ void newTreeViewItems (KFileTreeBranch*, KFileTreeViewItemList&);
+ void directoryChildCount (KFileTreeViewItem*, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ virtual KFileTreeViewItem* findTVIByURL (const KURL&);
+%End
+
+
+}; // class KFileTreeBranch
+
+typedef QPtrList<KFileTreeBranch> KFileTreeBranchList;
+//ig typedef QPtrListIterator<KFileTreeBranch> KFileTreeBranchIterator;
+
+
+%MappedType QPtrList<KFileTreeViewItem>
+//converts a Python list of KFileTreeViewItem
+{
+%TypeHeaderCode
+#include <kfiletreeviewitem.h>
+typedef QPtrList<KFileTreeViewItem> KFileTreeViewItemList;
+#include <sipkfileKFileTreeViewItem.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of KFileTreeViewItem
+
+ if (!sipCpp)
+ return PyList_New(0);
+
+ PyObject *ftvilist;
+
+ // Create the list
+
+ if ((ftvilist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KFileTreeViewItem> *cList = (QPtrList<KFileTreeViewItem> *)sipCpp;
+ PyObject *item;
+ KFileTreeViewItem *ftvi;
+
+ for( ftvi = cList->first(); ftvi; ftvi = cList->next ())
+ {
+ item = sipConvertFromInstance (ftvi, sipClass_KFileTreeViewItem, sipTransferObj);
+ if ((item == NULL) || (PyList_Append (ftvilist, item) < 0))
+ {
+ Py_XDECREF (item);
+ Py_DECREF (ftvilist);
+ return NULL;
+ }
+ }
+
+ return ftvilist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to a KFileTreeViewItemList on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KFileTreeViewItem> *cList = new QPtrList<KFileTreeViewItem>;
+
+ PyObject *elem;
+ int iserr = 0;
+ KFileTreeViewItem *ftvi;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ ftvi = (KFileTreeViewItem *)sipForceConvertTo_KFileTreeViewItem (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (ftvi);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<KFileTreeBranch>
+//converts a Python list of KFileTreeBranch
+{
+%TypeHeaderCode
+#include <kfiletreebranch.h>
+#include <sipkfileKFileTreeBranch.h>
+//typedef QPtrList<KFileTreeBranch> KFileTreeBList;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of KFileTreeBranch
+
+ if (!sipCpp)
+ return PyList_New(0);
+
+ PyObject *ftblist;
+
+ // Create the list
+
+ if ((ftblist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KFileTreeBranch> *cList = (QPtrList<KFileTreeBranch> *)sipCpp;
+ PyObject *item;
+ KFileTreeBranch *ftb;
+
+ for( ftb = cList->first(); ftb; ftb = cList->next ())
+ {
+ item = sipConvertFromInstance (ftb, sipClass_KFileTreeBranch, sipTransferObj);
+ if ((item == NULL) || (PyList_Append (ftblist, item) < 0))
+ {
+ Py_XDECREF (item);
+ Py_DECREF (ftblist);
+ return NULL;
+ }
+ }
+
+ return ftblist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to a KFileTreeBranchList on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KFileTreeBranch> *cList = new QPtrList<KFileTreeBranch>;
+
+ PyObject *elem;
+ int iserr = 0;
+ KFileTreeBranch *ftb;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ ftb = (KFileTreeBranch *)sipForceConvertTo_KFileTreeBranch (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (ftb);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kfile/kfiletreeview.sip b/python/pykde/sip/kfile/kfiletreeview.sip
new file mode 100644
index 00000000..32b7ea3d
--- /dev/null
+++ b/python/pykde/sip/kfile/kfiletreeview.sip
@@ -0,0 +1,109 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileTreeViewToolTip : QToolTip
+{
+%TypeHeaderCode
+#include <kfiletreeview.h>
+%End
+
+
+public:
+ KFileTreeViewToolTip (QListView*);
+
+protected:
+ virtual void maybeTip (const QPoint&);
+
+}; // class KFileTreeViewToolTip
+
+
+class KFileTreeView : KListView
+{
+%TypeHeaderCode
+#include <kfiletreeview.h>
+%End
+
+
+public:
+ KFileTreeView (QWidget* /TransferThis/, const char* = 0);
+ KFileTreeViewItem* currentKFileTreeViewItem () const;
+ KURL currentURL () const;
+ KFileTreeBranch* addBranch (const KURL&, const QString&, bool = 0);
+ virtual KFileTreeBranch* addBranch (const KURL&, const QString&, const QPixmap&, bool = 0);
+ virtual KFileTreeBranch* addBranch (KFileTreeBranch*);
+ virtual bool removeBranch (KFileTreeBranch*);
+ KFileTreeBranch* branch (const QString&);
+ KFileTreeBranchList& branches ();
+ virtual void setDirOnlyMode (KFileTreeBranch*, bool);
+ KFileTreeViewItem* findItem (KFileTreeBranch*, const QString&);
+ KFileTreeViewItem* findItem (const QString&, const QString&);
+ bool showFolderOpenPixmap () const;
+
+public slots:
+ virtual void setShowFolderOpenPixmap (bool = 1);
+
+protected:
+ virtual bool acceptDrag (QDropEvent*) const;
+ virtual QDragObject* dragObject ();
+ virtual void startAnimation (KFileTreeViewItem*, const char* = "kde", uint = 6);
+ virtual void stopAnimation (KFileTreeViewItem*);
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+ virtual void contentsDragMoveEvent (QDragMoveEvent*);
+ virtual void contentsDragLeaveEvent (QDragLeaveEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+
+protected slots:
+ virtual void slotNewTreeViewItems (KFileTreeBranch*, KFileTreeViewItemList&);
+ virtual void slotSetNextUrlToSelect (const KURL&);
+ virtual QPixmap itemIcon (KFileTreeViewItem*, int = 0) const;
+
+signals:
+ void onItem (const QString&);
+ void dropped (QWidget*, QDropEvent*);
+ void dropped (QWidget*, QDropEvent*, KURL::List&);
+ void dropped (KURL::List&, KURL&);
+
+%If ( KDE_3_2_0 - )
+ void dropped (QWidget*, QDropEvent*, KURL::List&, KURL&);
+%End
+
+ void dropped (QDropEvent*, QListViewItem*);
+ void dropped (KFileTreeView*, QDropEvent*, QListViewItem*);
+ void dropped (QDropEvent*, QListViewItem*, QListViewItem*);
+ void dropped (KFileTreeView*, QDropEvent*, QListViewItem*, QListViewItem*);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+//force
+
+private:
+ void slotOnItem (QListViewItem*);
+//end
+
+}; // class KFileTreeView
+
diff --git a/python/pykde/sip/kfile/kfiletreeviewitem.sip b/python/pykde/sip/kfile/kfiletreeviewitem.sip
new file mode 100644
index 00000000..440bcb4f
--- /dev/null
+++ b/python/pykde/sip/kfile/kfiletreeviewitem.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileTreeViewItem : KListViewItem
+{
+%TypeHeaderCode
+#include <kfiletreeviewitem.h>
+%End
+
+
+public:
+ KFileTreeViewItem (KFileTreeViewItem*, KFileItem*, KFileTreeBranch*);
+ KFileTreeViewItem (KFileTreeView*, KFileItem*, KFileTreeBranch*);
+ KFileTreeBranch* branch () const;
+ KFileItem* fileItem () const;
+ QString path () const;
+ KURL url () const;
+ bool isDir () const;
+ bool alreadyListed () const;
+ void setListed (bool);
+
+}; // class KFileTreeViewItem
+
+typedef QPtrList<KFileTreeViewItem> KFileTreeViewItemList;
+//ig typedef QPtrListIterator<KFileTreeViewItem> KFileTreeViewItemListIterator;
diff --git a/python/pykde/sip/kfile/kfileview.sip b/python/pykde/sip/kfile/kfileview.sip
new file mode 100644
index 00000000..16db8d50
--- /dev/null
+++ b/python/pykde/sip/kfile/kfileview.sip
@@ -0,0 +1,153 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileViewSignaler : QObject
+{
+%TypeHeaderCode
+#include <kfileview.h>
+%End
+
+
+public:
+ void activate (const KFileItem*);
+ void highlightFile (const KFileItem*);
+ void activateMenu (const KFileItem*, const QPoint&);
+ void changeSorting (QDir::SortSpec);
+
+%If ( KDE_3_2_0 - )
+ void dropURLs (const KFileItem*, QDropEvent*, const KURL::List&);
+%End
+
+
+signals:
+ void dirActivated (const KFileItem*);
+ void sortingChanged (QDir::SortSpec);
+ void fileHighlighted (const KFileItem*);
+ void fileSelected (const KFileItem*);
+ void activatedMenu (const KFileItem*, const QPoint&);
+
+%If ( KDE_3_2_0 - )
+ void dropped (const KFileItem*, QDropEvent*, const KURL::List&);
+%End
+
+
+}; // class KFileViewSignaler
+
+
+class KFileView
+{
+%TypeHeaderCode
+#include <kfileview.h>
+%End
+
+
+public:
+ KFileView ();
+ void addItemList (const KFileItemList&);
+ virtual QWidget* widget () = 0;
+//ig QWidget* widget () const;
+ void setCurrentItem (const QString&);
+ virtual void setCurrentItem (const KFileItem*) = 0;
+ virtual KFileItem* currentFileItem () const = 0;
+ virtual void clear ();
+ virtual void updateView (bool = 1);
+ virtual void updateView (const KFileItem*);
+ virtual void removeItem (const KFileItem*);
+ virtual void listingCompleted ();
+ QDir::SortSpec sorting () const;
+ virtual void setSorting (QDir::SortSpec);
+ bool isReversed () const;
+ void sortReversed ();
+ uint count () const;
+ uint numFiles () const;
+ uint numDirs () const;
+ virtual void setSelectionMode (KFile::SelectionMode);
+ virtual KFile::SelectionMode selectionMode () const;
+
+ enum ViewMode
+ {
+ Files,
+ Directories,
+ All
+ };
+
+ virtual void setViewMode (KFileView::ViewMode);
+ virtual ViewMode viewMode () const;
+ QString viewName ();
+ void setViewName (const QString&);
+ virtual void setParentView (KFileView* /Transfer/);
+ virtual void insertItem (KFileItem*);
+ virtual void clearView () = 0;
+ virtual void ensureItemVisible (const KFileItem*) = 0;
+ virtual void clearSelection () = 0;
+ virtual void selectAll ();
+ virtual void invertSelection ();
+ virtual void setSelected (const KFileItem*, bool) = 0;
+ virtual bool isSelected (const KFileItem*) const = 0;
+ const KFileItemList* selectedItems () const;
+ const KFileItemList* items () const;
+ virtual KFileItem* firstFileItem () const = 0;
+ virtual KFileItem* nextItem (const KFileItem*) const = 0;
+ virtual KFileItem* prevItem (const KFileItem*) const = 0;
+ void setOnlyDoubleClickSelectsFiles (bool);
+ bool onlyDoubleClickSelectsFiles () const;
+ bool updateNumbers (const KFileItem*);
+ virtual KActionCollection* actionCollection () const;
+ KFileViewSignaler* signaler () const;
+ virtual void readConfig (KConfig*, const QString& = QString ::null );
+ virtual void writeConfig (KConfig*, const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+
+ enum DropOptions
+ {
+ AutoOpenDirs
+ };
+
+ void setDropOptions (int);
+ int dropOptions ();
+%End
+
+ static QString sortingKey (const QString&, bool, int);
+ static QString sortingKey (KIO::filesize_t, bool, int);
+
+%If ( KDE_3_2_0 - )
+ static int autoOpenDelay ();
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_2_0 - )
+ void setDropOptions_impl (int);
+%End
+
+
+}; // class KFileView
+
diff --git a/python/pykde/sip/kfile/kfileviewitem.sip b/python/pykde/sip/kfile/kfileviewitem.sip
new file mode 100644
index 00000000..bb5fa433
--- /dev/null
+++ b/python/pykde/sip/kfile/kfileviewitem.sip
@@ -0,0 +1,58 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileViewItem : KFileItem
+{
+%TypeHeaderCode
+#include <kfileviewitem.h>
+%End
+
+
+public:
+ KFileViewItem (const KURL&, const KIO::UDSEntry&);
+ KFileViewItem (mode_t, mode_t, const KURL&, bool);
+ KFileViewItem (const KFileViewItem&);
+ bool isFile () const;
+ QString urlString () const;
+ QPixmap pixmap (int, int = 0) const;
+ QPixmap pixmap () const;
+ QString date () const;
+ QString access () const;
+ void setViewItem (const KFileView*, const void*);
+//ig const void* viewItem (const KFileView*) const;
+ static QString dateTime (time_t);
+ KFileViewItem* next () const;
+ void setNext (KFileViewItem*);
+
+protected:
+ QString parsePermissions (mode_t) const;
+
+}; // class KFileViewItem
+
+//ig typedef QList<KFileViewItem> KFileViewItemList;
+//ig typedef QListIterator<KFileViewItem> KFileViewItemListIterator;
+
+
diff --git a/python/pykde/sip/kfile/kicondialog.sip b/python/pykde/sip/kfile/kicondialog.sip
new file mode 100644
index 00000000..942ce1d5
--- /dev/null
+++ b/python/pykde/sip/kfile/kicondialog.sip
@@ -0,0 +1,131 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KIconCanvas : KIconView
+{
+%TypeHeaderCode
+#include <kicondialog.h>
+%End
+
+
+public:
+ KIconCanvas (QWidget* /TransferThis/ = 0, const char* = 0);
+ void loadFiles (const QStringList&);
+ QString getCurrent ();
+
+public slots:
+ void stopLoading ();
+
+signals:
+//ig void nameChanged (QString);
+ void startLoading (int);
+ void progress (int);
+ void finished ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KIconCanvas
+
+
+class KIconDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kicondialog.h>
+%End
+
+
+public:
+ KIconDialog (QWidget* /TransferThis/ = 0, const char* = 0);
+ KIconDialog (KIconLoader*, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setStrictIconSize (bool);
+ bool strictIconSize () const;
+
+%If ( KDE_3_1_0 - )
+ void setCustomLocation (const QString&);
+%End
+
+ void setIconSize (int);
+ int iconSize () const;
+ QString selectIcon (KIcon::Group = KIcon ::Desktop , KIcon::Context = KIcon ::Application , bool = 0);
+ void setup (KIcon::Group, KIcon::Context = KIcon ::Application , bool = 0, int = 0, bool = 0);
+
+%If ( KDE_3_3_0 - )
+ void setup (KIcon::Group, KIcon::Context, bool, int, bool, bool, bool);
+%End
+
+ QString openDialog ();
+
+%If ( KDE_3_2_0 - )
+ void showDialog ();
+%End
+
+ static QString getIcon (KIcon::Group = KIcon ::Desktop , KIcon::Context = KIcon ::Application , bool = 0, int = 0, bool = 0, QWidget* /Transfer/ = 0, const QString& = QString ::null );
+
+signals:
+
+%If ( KDE_3_2_0 - )
+ void newIconName (const QString&);
+%End
+
+
+protected slots:
+
+%If ( KDE_3_2_0 - )
+ void slotOk ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KIconDialog
+
+
+class KIconButton : QPushButton
+{
+%TypeHeaderCode
+#include <kicondialog.h>
+%End
+
+
+public:
+ KIconButton (QWidget* /TransferThis/ = 0, const char* = 0);
+ KIconButton (KIconLoader*, QWidget* /TransferThis/, const char* = 0);
+ void setStrictIconSize (bool);
+ bool strictIconSize () const;
+ void setIconType (KIcon::Group, KIcon::Context, bool = 0);
+ void setIcon (const QString&);
+ void resetIcon ();
+ const QString icon ();
+ void setIconSize (int);
+ int iconSize () const;
+
+signals:
+//ig void iconChanged (QString);
+
+}; // class KIconButton
+
diff --git a/python/pykde/sip/kfile/kimagefilepreview.sip b/python/pykde/sip/kfile/kimagefilepreview.sip
new file mode 100644
index 00000000..2d51d5c7
--- /dev/null
+++ b/python/pykde/sip/kfile/kimagefilepreview.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KImageFilePreview : KPreviewWidgetBase
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+#include <kimagefilepreview.h>
+%End
+
+
+public:
+ KImageFilePreview (QWidget* /TransferThis/);
+ virtual QSize sizeHint () const;
+
+public slots:
+ virtual void showPreview (const KURL&);
+ virtual void clearPreview ();
+
+protected slots:
+ void showPreview ();
+ void showPreview (const KURL&, bool);
+ void toggleAuto (bool);
+ virtual void gotPreview (const KFileItem*, const QPixmap&);
+
+protected:
+ virtual void resizeEvent (QResizeEvent*);
+ virtual KIO::PreviewJob* createJob (const KURL&, int, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KImageFilePreview
+
diff --git a/python/pykde/sip/kfile/knotifydialog.sip b/python/pykde/sip/kfile/knotifydialog.sip
new file mode 100644
index 00000000..90da94d6
--- /dev/null
+++ b/python/pykde/sip/kfile/knotifydialog.sip
@@ -0,0 +1,315 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KNotifyDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <knotifydialog.h>
+%End
+
+
+public:
+ KNotifyDialog (QWidget* /TransferThis/ = 0, const char* = 0, bool = 1, const KAboutData* = 0);
+%MethodCode
+//takes parent | (QWidget = 0) | name | (char = 0) | modal | (bool = 1) | aboutData | (KAboutData = see note)
+//doc
+// The default value for aboutData in C++ is KGlobal::instance()->aboutData()
+// which sip is unable to parse. Since it's the last arg in the list, it has
+// to have a default value, and since the C++ code will fail if the default
+// value really is zero, the sip code silently substitutes the real default
+// value for a default value of 0 supplied from Python.
+//end
+
+ if (a3 == 0)
+ a3 = (KAboutData *)KGlobal::instance ()->aboutData ();
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipKNotifyDialog (a0, a1, a2, a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ static int configure (QWidget* /Transfer/ = 0, const char* = 0, const KAboutData* = 0);
+%MethodCode
+//returns (int)
+//takes parent | (QWidget = 0) | name | (a Python string = "") | aboutData | (KAboutData = see note)
+//doc
+// The default value for aboutData in C++ is KGlobal::instance()->aboutData()
+// which sip is unable to parse. Since it's the last arg in the list, it has
+// to have a default value, and since the C++ code will fail if the default
+// value really is zero, the sip code silently substitutes the real default
+// value for a default value of 0 supplied from Python.
+//end
+
+ if (a2 == 0)
+ a2 = (KAboutData *)KGlobal::instance ()->aboutData ();
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = KNotifyDialog::configure (a0, a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+
+ virtual void addApplicationEvents (const char*);
+ virtual void addApplicationEvents (const QString&);
+ virtual void clearApplicationEvents ();
+
+}; // class KNotifyDialog
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+namespace KNotify
+{
+typedef QPtrList<KNotify::Event> EventList;
+//ig typedef QPtrListIterator<KNotify::Application> ApplicationListIterator;
+//ig typedef QPtrListIterator<KNotify::Event> EventListIterator;
+
+class Application
+{
+%TypeHeaderCode
+#include <knotifydialog.h>
+%End
+
+
+public:
+ Application (const QString&);
+ QString text () const;
+ QString icon () const;
+ const KNotify::EventList& eventList ();
+ void reloadEvents (bool = 0);
+ void save ();
+ QString appName () const;
+
+}; // class Application
+
+
+%If ( KDE_3_2_0 - )
+
+//ig class KNotifyWidget : KNotifyWidgetBase;
+
+%End
+
+
+class Event
+{
+%TypeHeaderCode
+#include <knotifydialog.h>
+%End
+
+
+public:
+ QString text () const;
+ int presentation;
+ int dontShow;
+ QString logfile;
+ QString soundfile;
+ QString commandline;
+ const KNotify::Application* application () const;
+
+private:
+ Event (const KNotify::Application*);
+
+}; // class Event
+
+
+//ig class ListViewItem : QListViewItem;
+
+
+%If ( - KDE_3_2_0 )
+
+class KNotifyWidget : KNotifyWidgetBase
+{
+%TypeHeaderCode
+#include <knotifywidgetbase.h>
+#include <knotifydialog.h>
+%End
+
+
+public:
+ KNotifyWidget (QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ KListView* eventsView ();
+ void addVisibleApp (KNotify::Application*);
+ KNotify::Application* addApplicationEvents (const QString&);
+ void resetDefaults (bool);
+ void sort (bool = 1);
+
+public slots:
+ virtual void clear ();
+ virtual void clearVisible ();
+ virtual void save ();
+ virtual void showAdvanced (bool);
+ void toggleAdvanced ();
+
+signals:
+ void changed (bool);
+
+protected:
+ KNotify::Event* currentEvent ();
+ virtual void showEvent (QShowEvent*);
+ virtual void enableAll (int, bool);
+ void reload (bool = 0);
+
+protected slots:
+ void playSound ();
+
+public:
+ SIP_PYLIST visibleApps ();
+%MethodCode
+//returns (a Python list of KNotify.Application)
+ QPtrList<KNotify::Application> applist;
+
+ Py_BEGIN_ALLOW_THREADS
+ applist = sipCpp->visibleApps ();
+ Py_END_ALLOW_THREADS
+
+ KNotify::Application *app;
+ PyObject *inst;
+
+ for (app = applist.first (); app != 0; app = applist.next () )
+ {
+ inst = sipConvertFromInstance (app, sipClass_KNotify_Application, NULL);
+ PyList_Append (sipRes, inst);
+ }
+%End
+
+ SIP_PYLIST allApps ();
+%MethodCode
+//returns (a Python list of KNotify.Application)
+ QPtrList<KNotify::Application> applist;
+
+ Py_BEGIN_ALLOW_THREADS
+ applist = sipCpp->allApps ();
+ Py_END_ALLOW_THREADS
+
+ KNotify::Application *app;
+ PyObject *inst;
+
+ for(app = applist.first (); app != 0; app = applist.next () )
+ {
+ inst = sipConvertFromInstance (app, sipClass_KNotify_Application, NULL);
+ PyList_Append (sipRes, inst);
+ }
+%End
+
+
+}; // class KNotifyWidget
+
+%End
+
+//force
+
+class ApplicationList
+{
+%TypeHeaderCode
+#include <knotifydialog.h>
+%End
+
+
+}; // class ApplicationList
+
+//end
+}; // namespace KNotify
+
+%End
+
+
+
+%If (KDE_3_1_0 - )
+%MappedType QPtrList<KNotify::Event>
+//converts a Python list of KNotify.Event
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <knotifydialog.h>
+#include <sipkfileKNotifyEvent.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KNotify::Event> *cpplist = (QPtrList<KNotify::Event> *)sipCpp;
+ KNotify::Event *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KNotify_Event, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KNotify::Event> *cpplist = new QPtrList<KNotify::Event>;
+
+ PyObject *elem;
+ KNotify::Event *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KNotify::Event *)sipForceConvertTo_KNotify_Event (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kfile/knotifywidgetbase.sip b/python/pykde/sip/kfile/knotifywidgetbase.sip
new file mode 100644
index 00000000..95f3d900
--- /dev/null
+++ b/python/pykde/sip/kfile/knotifywidgetbase.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_4
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+class KNotifyWidgetBase : QWidget
+{
+%TypeHeaderCode
+#include <knotifywidgetbase.h>
+%End
+
+
+public:
+ KNotifyWidgetBase (QWidget*/TransferThis/ = 0, const char* = 0, WFlags = 0);
+ KListView* m_listview;
+ QGroupBox* m_actionsBox;
+ KURLRequester* m_logfilePath;
+ KURLRequester* m_soundPath;
+ QCheckBox* m_logToFile;
+ KURLRequester* m_executePath;
+ QCheckBox* m_playSound;
+ QPushButton* m_playButton;
+ QCheckBox* m_execute;
+ QCheckBox* m_messageBox;
+ QCheckBox* m_passivePopup;
+ QCheckBox* m_stderr;
+ QGroupBox* m_controlsBox;
+ QCheckBox* m_affectAllApps;
+ QPushButton* m_buttonDisable;
+ QPushButton* m_buttonEnable;
+ KComboBox* m_comboEnable;
+ KComboBox* m_comboDisable;
+ QPushButton* m_extension;
+ QPushButton* m_playerButton;
+
+protected:
+
+}; // class KNotifyWidgetBase
+
+%End
+
diff --git a/python/pykde/sip/kfile/kopenwith.sip b/python/pykde/sip/kfile/kopenwith.sip
new file mode 100644
index 00000000..e1175bd0
--- /dev/null
+++ b/python/pykde/sip/kfile/kopenwith.sip
@@ -0,0 +1,146 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KOpenWithDlg : QDialog
+{
+%TypeHeaderCode
+#include <kopenwith.h>
+%End
+
+
+public:
+ KOpenWithDlg (const KURL::List&, QWidget* /TransferThis/ = 0);
+ KOpenWithDlg (const KURL::List&, const QString&, const QString&, QWidget* /TransferThis/ = 0);
+ KOpenWithDlg (const QString&, const QString&, QWidget* /TransferThis/ = 0);
+
+%If ( KDE_3_1_0 - )
+ KOpenWithDlg (QWidget* /TransferThis/ = 0);
+%End
+
+ QString text ();
+
+%If ( KDE_3_2_0 - )
+ void hideNoCloseOnExit ();
+ void hideRunInTerminal ();
+%End
+
+ KService::Ptr service ();
+
+%If ( KDE_3_2_0 - )
+ void setSaveNewApplications (bool);
+%End
+
+
+public slots:
+ void slotClear ();
+ void slotSelected (const QString&, const QString&);
+ void slotHighlighted (const QString&, const QString&);
+ void slotTextChanged ();
+ void slotTerminalToggled (bool);
+ void slotDbClick ();
+ void slotOK ();
+
+protected slots:
+ virtual void accept ();
+
+protected:
+ void setServiceType (const KURL::List&);
+ void init (const QString&, const QString&);
+
+}; // class KOpenWithDlg
+
+
+class KFileOpenWithHandler : KOpenWithHandler
+{
+%TypeHeaderCode
+#include <kopenwith.h>
+%End
+
+
+public:
+ KFileOpenWithHandler ();
+ virtual bool displayOpenWithDialog (const KURL::List&);
+
+}; // class KFileOpenWithHandler
+
+
+%If ( - KDE_3_1_0 )
+
+class KAppTreeListItem : QListViewItem
+{
+%TypeHeaderCode
+#include <kopenwith.h>
+%End
+
+
+protected:
+ QString key (int, bool) const;
+ void init (const QPixmap&, bool, bool, QString, QString);
+
+public:
+ KAppTreeListItem (KListView* /TransferThis/, const QString&, const QPixmap&, bool, bool, QString, QString);
+ KAppTreeListItem (QListViewItem* /TransferThis/, const QString&, const QPixmap&, bool, bool, QString, QString);
+ bool isDirectory ();
+
+protected:
+ virtual void activate ();
+ virtual void setOpen (bool);
+
+}; // class KAppTreeListItem
+
+%End
+
+
+%If ( - KDE_3_1_0 )
+
+class KApplicationTree : KListView
+{
+%TypeHeaderCode
+#include <kopenwith.h>
+%End
+
+
+public:
+ KApplicationTree (QWidget* /TransferThis/);
+ void addDesktopGroup (QString, KAppTreeListItem* = 0);
+ KAppTreeListItem* it;
+ bool isDirSel ();
+
+protected:
+ void resizeEvent (QResizeEvent*);
+
+public slots:
+ void slotItemHighlighted (QListViewItem*);
+ void slotSelectionChanged (QListViewItem*);
+
+signals:
+ void selected (const QString&, const QString&);
+ void highlighted (const QString&, const QString&);
+
+}; // class KApplicationTree
+
+%End
+
diff --git a/python/pykde/sip/kfile/kpreviewwidgetbase.sip b/python/pykde/sip/kfile/kpreviewwidgetbase.sip
new file mode 100644
index 00000000..e7622273
--- /dev/null
+++ b/python/pykde/sip/kfile/kpreviewwidgetbase.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPreviewWidgetBase : QWidget
+{
+%TypeHeaderCode
+#include <kpreviewwidgetbase.h>
+%End
+
+
+public:
+ KPreviewWidgetBase (QWidget* /TransferThis/, const char* = 0);
+
+public slots:
+ virtual void showPreview (const KURL&) = 0;
+ virtual void clearPreview () = 0;
+
+%If ( KDE_3_2_0 - )
+ QStringList supportedMimeTypes () const;
+%End
+
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ void setSupportedMimeTypes (const QStringList&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPreviewWidgetBase
+
diff --git a/python/pykde/sip/kfile/kpropertiesdialog.sip b/python/pykde/sip/kfile/kpropertiesdialog.sip
new file mode 100644
index 00000000..bec90ab6
--- /dev/null
+++ b/python/pykde/sip/kfile/kpropertiesdialog.sip
@@ -0,0 +1,304 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPropertiesDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ static bool canDisplay (KFileItemList);
+ KPropertiesDialog (KFileItem*, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (KFileItemList, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const KURL&, mode_t, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const KURL&, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const KURL&, const KURL&, const QString&, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const QString&, QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+
+%If ( KDE_3_4_0 - )
+ static bool showDialog (KFileItem*, QWidget* /Transfer/ = 0, const char* = 0, bool = 0);
+ static bool showDialog (const KURL&, QWidget* /Transfer/ = 0, const char* = 0, bool = 0);
+ static bool showDialog (const KFileItemList&, QWidget* /Transfer/ = 0, const char* = 0, bool = 0);
+%End
+
+ void insertPlugin (KPropsDlgPlugin*);
+ const KURL& kurl () const;
+ KFileItem* item ();
+ KFileItemList items () const;
+ KDialogBase* dialog ();
+ const KURL& currentDir () const;
+ const QString& defaultName () const;
+ void updateUrl (const KURL&);
+ void rename (const QString&);
+ void abortApplying ();
+
+%If ( KDE_3_1_0 - )
+ void showFileSharingPage ();
+
+%If ( KDE_3_3_0 - )
+ void setFileSharingPage (QWidget*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void setFileNameReadOnly (bool);
+%End
+
+%End
+
+
+public slots:
+ virtual void slotOk ();
+ virtual void slotCancel ();
+
+signals:
+ void propertiesClosed ();
+ void applied ();
+ void canceled ();
+
+%If ( KDE_3_2_0 - )
+ void saveAs (const KURL&, KURL&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPropertiesDialog
+
+
+class KPropsDlgPlugin : QObject
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KPropsDlgPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool isDesktopFile (KFileItem*);
+ void setDirty (bool);
+ bool isDirty () const;
+
+public slots:
+ void setDirty ();
+
+signals:
+ void changed ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPropsDlgPlugin
+
+
+class KFilePropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KFilePropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+ void postApplyChanges ();
+
+%If ( KDE_3_2_0 - )
+ void setFileNameReadOnly (bool);
+%End
+
+
+protected slots:
+
+%If ( KDE_3_2_0 - )
+ void slotEditFileType ();
+%End
+
+ void slotCopyFinished (KIO::Job*);
+ void slotFileRenamed (KIO::Job*, const KURL&, const KURL&);
+
+%If ( KDE_3_2_0 - )
+ void slotDirSizeUpdate ();
+%End
+
+ void slotDirSizeFinished (KIO::Job*);
+ void slotFoundMountPoint (const QString&, ulong, ulong, ulong);
+ void slotSizeStop ();
+ void slotSizeDetermine ();
+
+}; // class KFilePropsPlugin
+
+
+class KFilePermissionsPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum PermissionsMode
+ {
+ PermissionsOnlyFiles,
+ PermissionsOnlyDirs,
+ PermissionsOnlyLinks,
+ PermissionsMixed
+ };
+
+
+ enum PermissionsTarget
+ {
+ PermissionsOwner,
+ PermissionsGroup,
+ PermissionsOthers
+ };
+
+%End
+
+ KFilePermissionsPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KFilePermissionsPropsPlugin
+
+
+class KURLPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KURLPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KURLPropsPlugin
+
+
+class KBindingPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KBindingPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KBindingPropsPlugin
+
+
+class KDevicePropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KDevicePropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KDevicePropsPlugin
+
+
+%If ( KDE_3_2_0 - )
+
+class KDesktopPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KDesktopPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+public slots:
+ void slotAddFiletype ();
+ void slotDelFiletype ();
+ void slotBrowseExec ();
+ void slotAdvanced ();
+ void slotSelectMimetype ();
+
+}; // class KDesktopPropsPlugin
+
+%End
+
+
+class KExecPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KExecPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+public slots:
+ void slotBrowseExec ();
+
+}; // class KExecPropsPlugin
+
+
+class KApplicationPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropertiesdialog.h>
+%End
+
+
+public:
+ KApplicationPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+public slots:
+ void slotDelExtension ();
+ void slotAddExtension ();
+
+}; // class KApplicationPropsPlugin
+
diff --git a/python/pykde/sip/kfile/kpropsdlg.sip b/python/pykde/sip/kfile/kpropsdlg.sip
new file mode 100644
index 00000000..2ec6275a
--- /dev/null
+++ b/python/pykde/sip/kfile/kpropsdlg.sip
@@ -0,0 +1,208 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_1_1
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPropertiesDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ static bool canDisplay (KFileItemList);
+ KPropertiesDialog (KFileItem*, QWidget*/TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (KFileItemList, QWidget*/TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const KURL&, mode_t = -1, QWidget*/TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const KURL&, const KURL&, const QString&, QWidget*/TransferThis/ = 0, const char* = 0, bool = 0, bool = 1);
+ KPropertiesDialog (const QString&, QWidget*/TransferThis/ = 0, const char* = 0, bool = 0);
+ void insertPlugin (KPropsDlgPlugin*);
+ const KURL& kurl () const;
+ KFileItem* item ();
+ KFileItemList items () const;
+ KDialogBase* dialog ();
+ const KURL& currentDir () const;
+ const QString& defaultName () const;
+ void updateUrl (const KURL&);
+ void rename (const QString&);
+ void abortApplying ();
+
+public slots:
+ virtual void slotOk ();
+ virtual void slotCancel ();
+
+signals:
+ void propertiesClosed ();
+ void applied ();
+ void canceled ();
+
+}; // class KPropertiesDialog
+
+
+class KPropsDlgPlugin : QObject
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KPropsDlgPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool isDesktopFile (KFileItem*);
+ void setDirty (bool);
+ bool isDirty () const;
+
+public slots:
+ void setDirty ();
+
+signals:
+ void changed ();
+
+protected:
+
+}; // class KPropsDlgPlugin
+
+
+class KFilePropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KFilePropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+ void postApplyChanges ();
+
+protected slots:
+ void slotCopyFinished (KIO::Job*);
+ void slotFileRenamed (KIO::Job*, const KURL&, const KURL&);
+ void slotDirSizeFinished (KIO::Job*);
+ void slotFoundMountPoint (const QString&, ulong, ulong, ulong);
+ void slotSizeStop ();
+ void slotSizeDetermine ();
+
+}; // class KFilePropsPlugin
+
+
+class KFilePermissionsPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KFilePermissionsPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KFilePermissionsPropsPlugin
+
+
+class KExecPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KExecPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+public slots:
+ void slotBrowseExec ();
+
+}; // class KExecPropsPlugin
+
+
+class KURLPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KURLPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KURLPropsPlugin
+
+
+class KApplicationPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KApplicationPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+public slots:
+ void slotDelExtension ();
+ void slotAddExtension ();
+
+}; // class KApplicationPropsPlugin
+
+
+class KBindingPropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KBindingPropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KBindingPropsPlugin
+
+
+class KDevicePropsPlugin : KPropsDlgPlugin
+{
+%TypeHeaderCode
+#include <kpropsdlg.h>
+%End
+
+
+public:
+ KDevicePropsPlugin (KPropertiesDialog*);
+ virtual void applyChanges ();
+ static bool supports (KFileItemList);
+
+}; // class KDevicePropsPlugin
+
diff --git a/python/pykde/sip/kfile/krecentdirs.sip b/python/pykde/sip/kfile/krecentdirs.sip
new file mode 100644
index 00000000..84784198
--- /dev/null
+++ b/python/pykde/sip/kfile/krecentdirs.sip
@@ -0,0 +1,40 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE_3_5_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRecentDirs
+{
+%TypeHeaderCode
+#include <krecentdirs.h>
+%End
+
+
+public:
+ static QStringList list (const QString&);
+ static QString dir (const QString&);
+ static void add (const QString&, const QString&);
+
+}; // class KRecentDirs
+
diff --git a/python/pykde/sip/kfile/krecentdocument.sip b/python/pykde/sip/kfile/krecentdocument.sip
new file mode 100644
index 00000000..c22a01d6
--- /dev/null
+++ b/python/pykde/sip/kfile/krecentdocument.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRecentDocument
+{
+%TypeHeaderCode
+#include <krecentdocument.h>
+%End
+
+
+public:
+ static QStringList recentDocuments ();
+ static void add (const KURL&);
+ static void add (const KURL&, const QString&);
+ static void add (const QString&, bool = 0);
+ static void clear ();
+ static int maximumItems ();
+ static QString recentDocumentDirectory ();
+
+}; // class KRecentDocument
+
diff --git a/python/pykde/sip/kfile/kurlbar.sip b/python/pykde/sip/kfile/kurlbar.sip
new file mode 100644
index 00000000..7f80e18f
--- /dev/null
+++ b/python/pykde/sip/kfile/kurlbar.sip
@@ -0,0 +1,213 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLBarItem : QListBoxPixmap
+{
+%TypeHeaderCode
+#include <kurlbar.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ KURLBarItem (KURLBar* /TransferThis/, const KURL&, bool, const QString& = QString ::null , const QString& = QString ::null , KIcon::Group = KIcon ::Panel );
+%End
+
+ KURLBarItem (KURLBar* /TransferThis/, const KURL&, const QString& = QString ::null , const QString& = QString ::null , KIcon::Group = KIcon ::Panel );
+ void setURL (const KURL&);
+ void setIcon (const QString&, KIcon::Group = KIcon ::Panel );
+ void setDescription (const QString&);
+ void setToolTip (const QString&);
+
+%If ( KDE_3_0_1 - )
+ QSize sizeHint () const;
+%End
+
+ virtual int width (const QListBox*) const;
+ virtual int height (const QListBox*) const;
+ const KURL& url () const;
+ const QString& description () const;
+ const QString& icon () const;
+ QString toolTip () const;
+ KIcon::Group iconGroup () const;
+ virtual const QPixmap* pixmap () const;
+ void setApplicationLocal (bool);
+ bool applicationLocal () const;
+
+%If ( KDE_3_2_0 - )
+ bool isPersistent () const;
+%End
+
+
+protected:
+ virtual void paint (QPainter*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLBarItem
+
+
+class KURLBar : QFrame
+{
+%TypeHeaderCode
+#include <kurlbar.h>
+%End
+
+
+public:
+ KURLBar (bool, QWidget* /TransferThis/ = 0, const char* = 0, WFlags = 0);
+ virtual KURLBarItem* insertItem (const KURL&, const QString&, bool = 1, const QString& = QString ::null , KIcon::Group = KIcon ::Panel );
+
+%If ( KDE_3_2_0 - )
+ virtual KURLBarItem* insertDynamicItem (const KURL&, const QString&, const QString& = QString ::null , KIcon::Group = KIcon ::Panel );
+%End
+
+ virtual void setOrientation (Qt::Orientation);
+ Qt::Orientation orientation () const;
+ virtual void setListBox (KURLBarListBox*);
+ KURLBarListBox* listBox () const;
+ virtual void setIconSize (int);
+ int iconSize () const;
+ virtual void clear ();
+ virtual QSize sizeHint () const;
+ virtual QSize minimumSizeHint () const;
+ virtual void readConfig (KConfig*, const QString&);
+ virtual void writeConfig (KConfig*, const QString&);
+ virtual void readItem (int, KConfig*, bool);
+ virtual void writeItem (KURLBarItem*, int, KConfig*, bool);
+ KURLBarItem* currentItem () const;
+ KURL currentURL () const;
+ bool isModified () const;
+
+%If ( KDE_3_1_1 - )
+ bool isImmutable () const;
+%End
+
+
+%If ( KDE_3_0_1 - )
+ bool isVertical () const;
+%End
+
+
+public slots:
+ virtual void setCurrentItem (const KURL&);
+
+signals:
+ void activated (const KURL&);
+
+protected:
+ virtual bool addNewItem ();
+ virtual bool editItem (KURLBarItem*);
+ virtual void resizeEvent (QResizeEvent*);
+
+%If ( KDE_3_4_0 - )
+ virtual void paletteChange (const QPalette&);
+%End
+
+
+protected slots:
+ virtual void slotContextMenuRequested (QListBoxItem*, const QPoint&);
+ virtual void slotSelected (QListBoxItem*);
+ virtual void slotDropped (QDropEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_0_1 )
+ bool isVertical () const;
+%End
+
+
+}; // class KURLBar
+
+
+class KURLBarListBox : KListBox
+{
+%TypeHeaderCode
+#include <kurlbar.h>
+%End
+
+
+public:
+ KURLBarListBox (QWidget* /TransferThis/ = 0, const char* = 0);
+ virtual void setOrientation (Qt::Orientation);
+ Qt::Orientation orientation () const;
+
+%If ( KDE_3_0_1 - )
+ bool isVertical () const;
+%End
+
+
+signals:
+ void dropped (QDropEvent*);
+
+protected:
+ virtual QDragObject* dragObject ();
+ virtual void contentsDragEnterEvent (QDragEnterEvent*);
+ virtual void contentsDropEvent (QDropEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual void contextMenuEvent (QContextMenuEvent*);
+
+%If ( KDE_3_4_0 - )
+ virtual void paintEvent (QPaintEvent*);
+%End
+
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLBarListBox
+
+
+class KURLBarItemDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kurlbar.h>
+%End
+
+
+public:
+ static bool getInformation (bool, KURL&, QString&, QString&, bool&, int, QWidget* /Transfer/ = 0);
+ KURLBarItemDialog (bool, const KURL&, const QString&, QString, bool = 1, int = KIcon ::SizeMedium , QWidget* /TransferThis/ = 0, const char* = 0);
+ KURL url () const;
+ QString description () const;
+ QString icon () const;
+ bool applicationLocal () const;
+
+protected:
+
+public slots:
+ void urlChanged (const QString&);
+
+}; // class KURLBarItemDialog
+
diff --git a/python/pykde/sip/kfile/kurlcombobox.sip b/python/pykde/sip/kfile/kurlcombobox.sip
new file mode 100644
index 00000000..f1dc5457
--- /dev/null
+++ b/python/pykde/sip/kfile/kurlcombobox.sip
@@ -0,0 +1,80 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLComboBox : KComboBox
+{
+%TypeHeaderCode
+#include <kurlcombobox.h>
+%End
+
+
+public:
+
+ enum Mode
+ {
+ Files,
+ Directories,
+ Both
+ };
+
+
+ enum OverLoadResolving
+ {
+ RemoveTop,
+ RemoveBottom
+ };
+
+ KURLComboBox (KURLComboBox::Mode, QWidget* /TransferThis/ = 0, const char* = 0);
+ KURLComboBox (KURLComboBox::Mode, bool, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setURL (const KURL&);
+ void setURLs (QStringList);
+ void setURLs (QStringList, KURLComboBox::OverLoadResolving);
+ QStringList urls () const;
+ void setMaxItems (int);
+ int maxItems () const;
+ void addDefaultURL (const KURL&, const QString& = QString ::null );
+ void addDefaultURL (const KURL&, const QPixmap&, const QString& = QString ::null );
+ void setDefaults ();
+ void removeURL (const KURL&, bool = 1);
+
+signals:
+ void urlActivated (const KURL&);
+
+protected slots:
+ void slotActivated (int);
+
+protected:
+
+//ig class _KURLComboItem;
+
+//ig typedef KURLComboBox::_KURLComboItem KURLComboItem;
+ void init (KURLComboBox::Mode);
+//ig void insertURLItem (const KURLComboBox::KURLComboItem*);
+ QPixmap getPixmap (const KURL&) const;
+//ig void updateItem (const KURLComboBox::KURLComboItem*, int, const QPixmap&);
+
+}; // class KURLComboBox
+
diff --git a/python/pykde/sip/kfile/kurlrequester.sip b/python/pykde/sip/kfile/kurlrequester.sip
new file mode 100644
index 00000000..512acacf
--- /dev/null
+++ b/python/pykde/sip/kfile/kurlrequester.sip
@@ -0,0 +1,112 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLRequester : QHBox
+{
+%TypeHeaderCode
+#include <kurlrequester.h>
+%End
+
+
+public:
+ KURLRequester (QWidget* /TransferThis/ = 0, const char* = 0);
+ KURLRequester (const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ KURLRequester (QWidget*, QWidget* /TransferThis/, const char* = 0);
+ QString url () const;
+ void setShowLocalProtocol (bool);
+ void setMode (uint);
+
+%If ( KDE_3_3_0 - )
+ uint mode () const;
+%End
+
+ void setFilter (const QString&);
+
+%If ( KDE_3_3_0 - )
+ QString filter () const;
+%End
+
+ bool showLocalProtocol () const;
+ virtual KFileDialog* fileDialog () const;
+ KLineEdit* lineEdit () const;
+ KComboBox* comboBox () const;
+ KPushButton* button () const;
+ KURLCompletion* completionObject () const;
+
+%If ( KDE_3_1_0 - )
+ KEditListBox::CustomEditor customEditor ();
+%End
+
+
+public slots:
+ void setURL (const QString&);
+
+%If ( KDE_3_4_0 - )
+ void setKURL (const KURL&);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ virtual void setCaption (const QString&);
+%End
+
+ void clear ();
+
+signals:
+ void textChanged (const QString&);
+ void returnPressed ();
+ void returnPressed (const QString&);
+ void openFileDialog (KURLRequester*);
+ void urlSelected (const QString&);
+
+protected:
+ void init ();
+
+protected slots:
+ void slotOpenDialog ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLRequester
+
+
+%If ( KDE_3_2_0 - )
+
+class KURLComboRequester : KURLRequester
+{
+%TypeHeaderCode
+#include <kurlrequester.h>
+%End
+
+
+public:
+ KURLComboRequester (QWidget* /TransferThis/ = 0, const char* = 0);
+
+}; // class KURLComboRequester
+
+%End
+
diff --git a/python/pykde/sip/kfile/kurlrequesterdlg.sip b/python/pykde/sip/kfile/kurlrequesterdlg.sip
new file mode 100644
index 00000000..62a8d70a
--- /dev/null
+++ b/python/pykde/sip/kfile/kurlrequesterdlg.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kfile version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLRequesterDlg : KDialogBase
+{
+%TypeHeaderCode
+#include <kurlrequesterdlg.h>
+%End
+
+
+public:
+ KURLRequesterDlg (const QString&, QWidget* /TransferThis/, const char*, bool = 1);
+ KURLRequesterDlg (const QString&, const QString&, QWidget* /TransferThis/, const char*, bool = 1);
+ KURL selectedURL () const;
+ static KURL getURL (const QString& = QString ::null , QWidget* /Transfer/ = 0, const QString& = QString ::null );
+ KFileDialog* fileDialog ();
+ KURLRequester* urlRequester ();
+
+}; // class KURLRequesterDlg
+
diff --git a/python/pykde/sip/khtml/css_rule.sip b/python/pykde/sip/khtml/css_rule.sip
new file mode 100644
index 00000000..6e097ba3
--- /dev/null
+++ b/python/pykde/sip/khtml/css_rule.sip
@@ -0,0 +1,259 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSRule ();
+ CSSRule (const DOM::CSSRule&);
+//ig CSSRule (CSSRuleImpl*);
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum RuleType
+ {
+ UNKNOWN_RULE,
+ STYLE_RULE,
+ CHARSET_RULE,
+ IMPORT_RULE,
+ MEDIA_RULE,
+ FONT_FACE_RULE,
+ PAGE_RULE,
+ QUIRKS_RULE
+ };
+
+%End
+
+ ushort type () const;
+ DOM::DOMString cssText () const;
+ void setCssText (const DOM::DOMString&);
+ DOM::CSSStyleSheet parentStyleSheet () const;
+ DOM::CSSRule parentRule () const;
+//ig CSSRuleImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+%If ( KDE_3_0_1 - )
+ void assignOther (const DOM::CSSRule&, DOM::CSSRule::RuleType);
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum RuleType
+ {
+ UNKNOWN_RULE,
+ STYLE_RULE,
+ CHARSET_RULE,
+ IMPORT_RULE,
+ MEDIA_RULE,
+ FONT_FACE_RULE,
+ PAGE_RULE
+ };
+
+%End
+
+
+}; // class CSSRule
+
+
+class CSSCharsetRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSCharsetRule ();
+ CSSCharsetRule (const DOM::CSSCharsetRule&);
+ CSSCharsetRule (const DOM::CSSRule&);
+//ig CSSCharsetRule (CSSCharsetRuleImpl*);
+
+public:
+ DOM::DOMString encoding () const;
+ void setEncoding (const DOM::DOMString&);
+
+}; // class CSSCharsetRule
+
+
+class CSSFontFaceRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSFontFaceRule ();
+ CSSFontFaceRule (const DOM::CSSFontFaceRule&);
+ CSSFontFaceRule (const DOM::CSSRule&);
+//ig CSSFontFaceRule (CSSFontFaceRuleImpl*);
+
+public:
+ DOM::CSSStyleDeclaration style () const;
+
+}; // class CSSFontFaceRule
+
+
+class CSSImportRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSImportRule ();
+ CSSImportRule (const DOM::CSSImportRule&);
+ CSSImportRule (const DOM::CSSRule&);
+//ig CSSImportRule (CSSImportRuleImpl*);
+
+public:
+ DOM::DOMString href () const;
+ DOM::MediaList media () const;
+ DOM::CSSStyleSheet styleSheet () const;
+
+}; // class CSSImportRule
+
+
+class CSSMediaRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSMediaRule ();
+ CSSMediaRule (const DOM::CSSMediaRule&);
+ CSSMediaRule (const DOM::CSSRule&);
+//ig CSSMediaRule (CSSMediaRuleImpl*);
+
+public:
+ DOM::MediaList media () const;
+ DOM::CSSRuleList cssRules () const;
+ ulong insertRule (const DOM::DOMString&, ulong);
+ void deleteRule (ulong);
+
+}; // class CSSMediaRule
+
+
+class CSSPageRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSPageRule ();
+ CSSPageRule (const DOM::CSSPageRule&);
+ CSSPageRule (const DOM::CSSRule&);
+//ig CSSPageRule (CSSPageRuleImpl*);
+
+public:
+ DOM::DOMString selectorText () const;
+ void setSelectorText (const DOM::DOMString&);
+ DOM::CSSStyleDeclaration style () const;
+
+}; // class CSSPageRule
+
+
+class CSSStyleRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSStyleRule ();
+ CSSStyleRule (const DOM::CSSStyleRule&);
+ CSSStyleRule (const DOM::CSSRule&);
+//ig CSSStyleRule (CSSStyleRuleImpl*);
+
+public:
+ DOM::DOMString selectorText () const;
+ void setSelectorText (const DOM::DOMString&);
+ DOM::CSSStyleDeclaration style () const;
+
+}; // class CSSStyleRule
+
+
+class CSSUnknownRule : DOM::CSSRule
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSUnknownRule ();
+ CSSUnknownRule (const DOM::CSSUnknownRule&);
+ CSSUnknownRule (const DOM::CSSRule&);
+//ig CSSUnknownRule (CSSUnknownRuleImpl*);
+
+}; // class CSSUnknownRule
+
+
+class CSSRuleList
+{
+%TypeHeaderCode
+#include <css_rule.h>
+%End
+
+
+public:
+ CSSRuleList ();
+ CSSRuleList (const DOM::CSSRuleList&);
+//ig CSSRuleList (CSSRuleListImpl*);
+//ig CSSRuleList (StyleListImpl*);
+
+public:
+ ulong length () const;
+ DOM::CSSRule item (ulong);
+//ig CSSRuleListImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+}; // class CSSRuleList
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/css_stylesheet.sip b/python/pykde/sip/khtml/css_stylesheet.sip
new file mode 100644
index 00000000..2340a508
--- /dev/null
+++ b/python/pykde/sip/khtml/css_stylesheet.sip
@@ -0,0 +1,197 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class StyleSheet
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ StyleSheet ();
+ StyleSheet (const DOM::StyleSheet&);
+//ig StyleSheet (StyleSheetImpl*);
+
+public:
+ DOM::DOMString type () const;
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::Node ownerNode () const;
+ DOM::StyleSheet parentStyleSheet () const;
+ DOM::DOMString href () const;
+ DOM::DOMString title () const;
+ DOM::MediaList media () const;
+ bool isCSSStyleSheet () const;
+//ig StyleSheetImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+}; // class StyleSheet
+
+
+class CSSException
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ CSSException (ushort);
+ CSSException (const DOM::CSSException&);
+ ushort code;
+
+ enum ExceptionCode
+ {
+ SYNTAX_ERR,
+ INVALID_MODIFICATION_ERR,
+ _EXCEPTION_OFFSET
+ };
+
+
+}; // class CSSException
+
+
+class CSSStyleSheet : DOM::StyleSheet
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ CSSStyleSheet ();
+ CSSStyleSheet (const DOM::CSSStyleSheet&);
+ CSSStyleSheet (const DOM::StyleSheet&);
+//ig CSSStyleSheet (CSSStyleSheetImpl*);
+
+public:
+ DOM::CSSRule ownerRule () const;
+ DOM::CSSRuleList cssRules () const;
+ ulong insertRule (const DOM::DOMString&, ulong);
+ void deleteRule (ulong);
+
+}; // class CSSStyleSheet
+
+
+class StyleSheetList
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ StyleSheetList ();
+ StyleSheetList (const DOM::StyleSheetList&);
+//ig StyleSheetList (StyleSheetListImpl*);
+
+public:
+ ulong length () const;
+ DOM::StyleSheet item (ulong);
+//ig StyleSheetListImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+}; // class StyleSheetList
+
+
+class MediaList
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ MediaList ();
+ MediaList (const DOM::MediaList&);
+//ig MediaList (MediaListImpl*);
+
+public:
+ DOM::DOMString mediaText ();
+ void setMediaText (const DOM::DOMString&);
+ ulong length ();
+ DOM::DOMString item (ulong);
+ void deleteMedium (const DOM::DOMString&);
+ void appendMedium (const DOM::DOMString&);
+//ig MediaListImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+}; // class MediaList
+
+
+class LinkStyle
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ LinkStyle ();
+ LinkStyle (const DOM::LinkStyle&);
+ DOM::StyleSheet sheet ();
+ bool isNull () const;
+
+protected:
+
+}; // class LinkStyle
+
+
+class DocumentStyle
+{
+%TypeHeaderCode
+#include <css_stylesheet.h>
+%End
+
+
+public:
+ DocumentStyle ();
+ DocumentStyle (const DOM::DocumentStyle&);
+ DOM::StyleSheetList styleSheets ();
+
+%If ( KDE_3_2_0 - )
+ DOM::DOMString preferredStylesheetSet () const;
+ DOM::DOMString selectedStylesheetSet () const;
+ void setSelectedStylesheetSet (const DOM::DOMString&);
+%End
+
+ bool isNull () const;
+
+protected:
+
+}; // class DocumentStyle
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/css_value.sip b/python/pykde/sip/khtml/css_value.sip
new file mode 100644
index 00000000..3859dfbd
--- /dev/null
+++ b/python/pykde/sip/khtml/css_value.sip
@@ -0,0 +1,320 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class CSSStyleDeclaration
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ CSSStyleDeclaration ();
+ CSSStyleDeclaration (const DOM::CSSStyleDeclaration&);
+//ig CSSStyleDeclaration (CSSStyleDeclarationImpl*);
+
+public:
+ DOM::DOMString cssText () const;
+ void setCssText (const DOM::DOMString&);
+ ulong length () const;
+ DOM::CSSRule parentRule () const;
+ DOM::DOMString getPropertyValue (const DOM::DOMString&);
+ DOM::CSSValue getPropertyCSSValue (const DOM::DOMString&);
+ DOM::DOMString removeProperty (const DOM::DOMString&);
+ DOM::DOMString getPropertyPriority (const DOM::DOMString&);
+ void setProperty (const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&);
+ DOM::DOMString item (ulong);
+//ig CSSStyleDeclarationImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+}; // class CSSStyleDeclaration
+
+
+class CSSValue
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ CSSValue ();
+ CSSValue (const DOM::CSSValue&);
+//ig CSSValue (CSSValueImpl*);
+
+public:
+
+%If ( KDE_3_2_1 - )
+
+ enum UnitTypes
+ {
+ CSS_INHERIT,
+ CSS_PRIMITIVE_VALUE,
+ CSS_VALUE_LIST,
+ CSS_CUSTOM,
+ CSS_INITIAL
+ };
+
+%End
+
+ DOM::DOMString cssText () const;
+ void setCssText (const DOM::DOMString&);
+ ushort cssValueType () const;
+ bool isCSSValueList () const;
+ bool isCSSPrimitiveValue () const;
+//ig CSSValueImpl* handle () const;
+ bool isNull () const;
+
+protected:
+
+public:
+
+%If ( - KDE_3_2_1 )
+
+ enum UnitTypes
+ {
+ CSS_INHERIT,
+ CSS_PRIMITIVE_VALUE,
+ CSS_VALUE_LIST,
+ CSS_CUSTOM
+ };
+
+%End
+
+
+}; // class CSSValue
+
+
+class CSSValueList : DOM::CSSValue
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ CSSValueList ();
+ CSSValueList (const DOM::CSSValueList&);
+ CSSValueList (const DOM::CSSValue&);
+//ig CSSValueList (CSSValueListImpl*);
+
+public:
+ ulong length () const;
+ DOM::CSSValue item (ulong);
+
+protected:
+
+}; // class CSSValueList
+
+
+class CSSPrimitiveValue : DOM::CSSValue
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ CSSPrimitiveValue ();
+ CSSPrimitiveValue (const DOM::CSSPrimitiveValue&);
+ CSSPrimitiveValue (const DOM::CSSValue&);
+//ig CSSPrimitiveValue (CSSPrimitiveValueImpl*);
+
+public:
+
+%If ( KDE_3_1_0 - )
+
+ enum UnitTypes
+ {
+ CSS_UNKNOWN,
+ CSS_NUMBER,
+ CSS_PERCENTAGE,
+ CSS_EMS,
+ CSS_EXS,
+ CSS_PX,
+ CSS_CM,
+ CSS_MM,
+ CSS_IN,
+ CSS_PT,
+ CSS_PC,
+ CSS_DEG,
+ CSS_RAD,
+ CSS_GRAD,
+ CSS_MS,
+ CSS_S,
+ CSS_HZ,
+ CSS_KHZ,
+ CSS_DIMENSION,
+ CSS_STRING,
+ CSS_URI,
+ CSS_IDENT,
+ CSS_ATTR,
+ CSS_COUNTER,
+ CSS_RECT,
+ CSS_RGBCOLOR,
+ CSS_HTML_RELATIVE
+ };
+
+%End
+
+ ushort primitiveType () const;
+ void setFloatValue (ushort, float);
+ float getFloatValue (ushort);
+ void setStringValue (ushort, const DOM::DOMString&);
+ DOM::DOMString getStringValue ();
+ DOM::Counter getCounterValue ();
+ DOM::Rect getRectValue ();
+ DOM::RGBColor getRGBColorValue ();
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum UnitTypes
+ {
+ CSS_UNKNOWN,
+ CSS_NUMBER,
+ CSS_PERCENTAGE,
+ CSS_EMS,
+ CSS_EXS,
+ CSS_PX,
+ CSS_CM,
+ CSS_MM,
+ CSS_IN,
+ CSS_PT,
+ CSS_PC,
+ CSS_DEG,
+ CSS_RAD,
+ CSS_GRAD,
+ CSS_MS,
+ CSS_S,
+ CSS_HZ,
+ CSS_KHZ,
+ CSS_DIMENSION,
+ CSS_STRING,
+ CSS_URI,
+ CSS_IDENT,
+ CSS_ATTR,
+ CSS_COUNTER,
+ CSS_RECT,
+ CSS_RGBCOLOR
+ };
+
+%End
+
+
+}; // class CSSPrimitiveValue
+
+
+class RGBColor
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ RGBColor ();
+ RGBColor (const QColor&);
+
+%If ( KDE_3_1_0 - )
+ RGBColor (QRgb);
+%End
+
+ RGBColor (const DOM::RGBColor&);
+ DOM::CSSPrimitiveValue red () const;
+ DOM::CSSPrimitiveValue green () const;
+ DOM::CSSPrimitiveValue blue () const;
+
+%If ( KDE_3_1_0 - )
+ QRgb color () const;
+%End
+
+
+protected:
+
+public:
+
+%If ( - KDE_3_1_0 )
+ const QColor& color () const;
+%End
+
+
+}; // class RGBColor
+
+
+class Rect
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ Rect ();
+ Rect (const DOM::Rect&);
+ DOM::CSSPrimitiveValue top () const;
+ DOM::CSSPrimitiveValue right () const;
+ DOM::CSSPrimitiveValue bottom () const;
+ DOM::CSSPrimitiveValue left () const;
+//ig RectImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig Rect (RectImpl*);
+
+}; // class Rect
+
+
+class Counter
+{
+%TypeHeaderCode
+#include <css_value.h>
+%End
+
+
+public:
+ Counter ();
+ Counter (const DOM::Counter&);
+
+public:
+ DOM::DOMString identifier () const;
+ DOM::DOMString listStyle () const;
+ DOM::DOMString separator () const;
+//ig CounterImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig Counter (CounterImpl*);
+
+}; // class Counter
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom2_events.sip b/python/pykde/sip/khtml/dom2_events.sip
new file mode 100644
index 00000000..2e1b4dac
--- /dev/null
+++ b/python/pykde/sip/khtml/dom2_events.sip
@@ -0,0 +1,251 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class EventListener : DOM::DomShared
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ EventListener ();
+ virtual void handleEvent (DOM::Event&);
+ virtual DOM::DOMString eventListenerType ();
+
+protected:
+
+}; // class EventListener
+
+
+class Event
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ Event ();
+ Event (const DOM::Event&);
+
+ enum PhaseType
+ {
+ CAPTURING_PHASE,
+ AT_TARGET,
+ BUBBLING_PHASE
+ };
+
+ DOM::DOMString type () const;
+ DOM::Node target () const;
+ DOM::Node currentTarget () const;
+ ushort eventPhase () const;
+ bool bubbles () const;
+ bool cancelable () const;
+ DOMTimeStamp timeStamp () const;
+ void stopPropagation ();
+ void preventDefault ();
+ void initEvent (const DOM::DOMString&, bool, bool);
+//ig EventImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig Event (EventImpl*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+ DOM::DOMString eventModuleName ();
+%End
+
+
+public:
+//force
+ typedef longlong DOMTimeStamp;
+//end
+
+}; // class Event
+
+
+class EventException
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ EventException (ushort);
+ EventException (const DOM::EventException&);
+
+ enum EventExceptionCode
+ {
+ UNSPECIFIED_EVENT_TYPE_ERR
+ };
+
+ ushort code;
+
+}; // class EventException
+
+
+class UIEvent : DOM::Event
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ UIEvent ();
+ UIEvent (const DOM::UIEvent&);
+ UIEvent (const DOM::Event&);
+ DOM::AbstractView view () const;
+ long detail () const;
+
+%If ( KDE_3_2_0 - )
+ int keyCode () const;
+
+%If ( KDE_3_4_0 - )
+ int charCode () const;
+%End
+
+
+%If ( KDE_3_2_1 - )
+ int pageX () const;
+ int pageY () const;
+%End
+
+ int layerX () const;
+ int layerY () const;
+ int which () const;
+%End
+
+ void initUIEvent (const DOM::DOMString&, bool, bool, const DOM::AbstractView&, long);
+
+protected:
+//ig UIEvent (UIEventImpl*);
+
+}; // class UIEvent
+
+
+class MouseEvent : DOM::UIEvent
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ MouseEvent ();
+ MouseEvent (const DOM::MouseEvent&);
+ MouseEvent (const DOM::Event&);
+ long screenX () const;
+ long screenY () const;
+ long clientX () const;
+ long clientY () const;
+ bool ctrlKey () const;
+ bool shiftKey () const;
+ bool altKey () const;
+ bool metaKey () const;
+ ushort button () const;
+ DOM::Node relatedTarget () const;
+ void initMouseEvent (const DOM::DOMString&, bool, bool, const DOM::AbstractView&, long, long, long, long, long, bool, bool, bool, bool, ushort, const DOM::Node&);
+
+protected:
+//ig MouseEvent (MouseEventImpl*);
+
+}; // class MouseEvent
+
+
+%If ( KDE_3_1_0 - )
+
+class TextEvent : DOM::UIEvent
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ TextEvent ();
+ TextEvent (const DOM::TextEvent&);
+ TextEvent (const DOM::Event&);
+ void initTextEvent (const DOM::DOMString&, bool, bool, const DOM::AbstractView&, long, const DOM::DOMString&, ulong, ulong, bool, bool);
+ void initModifier (ulong, bool);
+ bool inputGenerated () const;
+ ulong keyVal () const;
+ bool numPad () const;
+ DOM::DOMString outputString () const;
+ ulong virtKeyVal () const;
+ bool checkModifier (ulong);
+
+protected:
+//ig TextEvent (KeyEventBaseImpl*);
+
+}; // class TextEvent
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class MutationEvent : DOM::Event
+{
+%TypeHeaderCode
+#include <dom2_events.h>
+%End
+
+
+public:
+ MutationEvent ();
+ MutationEvent (const DOM::MutationEvent&);
+ MutationEvent (const DOM::Event&);
+
+ enum attrChangeType
+ {
+ MODIFICATION,
+ ADDITION,
+ REMOVAL
+ };
+
+ DOM::Node relatedNode () const;
+ DOM::DOMString prevValue () const;
+ DOM::DOMString newValue () const;
+ DOM::DOMString attrName () const;
+ ushort attrChange () const;
+ void initMutationEvent (const DOM::DOMString&, bool, bool, const DOM::Node&, const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&, ushort);
+
+protected:
+//ig MutationEvent (MutationEventImpl*);
+
+}; // class MutationEvent
+
+%End
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom2_range.sip b/python/pykde/sip/khtml/dom2_range.sip
new file mode 100644
index 00000000..9099fc53
--- /dev/null
+++ b/python/pykde/sip/khtml/dom2_range.sip
@@ -0,0 +1,115 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class RangeException
+{
+%TypeHeaderCode
+#include <dom2_range.h>
+%End
+
+
+public:
+ RangeException (ushort);
+ RangeException (const DOM::RangeException&);
+
+ enum RangeExceptionCode
+ {
+ BAD_BOUNDARYPOINTS_ERR,
+ INVALID_NODE_TYPE_ERR,
+ _EXCEPTION_OFFSET,
+ _EXCEPTION_MAX
+ };
+
+ ushort code;
+
+}; // class RangeException
+
+
+class Range
+{
+%TypeHeaderCode
+#include <dom2_range.h>
+%End
+
+
+public:
+ Range ();
+ Range (const DOM::Document);
+ Range (const DOM::Range&);
+ Range (const DOM::Node, const long, const DOM::Node, const long);
+ DOM::Node startContainer () const;
+ long startOffset () const;
+ DOM::Node endContainer () const;
+ long endOffset () const;
+ bool collapsed () const;
+ DOM::Node commonAncestorContainer ();
+ void setStart (const DOM::Node&, long);
+ void setEnd (const DOM::Node&, long);
+ void setStartBefore (const DOM::Node&);
+ void setStartAfter (const DOM::Node&);
+ void setEndBefore (const DOM::Node&);
+ void setEndAfter (const DOM::Node&);
+ void collapse (bool);
+ void selectNode (const DOM::Node&);
+ void selectNodeContents (const DOM::Node&);
+
+ enum CompareHow
+ {
+ START_TO_START,
+ START_TO_END,
+ END_TO_END,
+ END_TO_START
+ };
+
+ short compareBoundaryPoints (DOM::Range::CompareHow, const DOM::Range&);
+ bool boundaryPointsValid ();
+ void deleteContents ();
+ DOM::DocumentFragment extractContents ();
+ DOM::DocumentFragment cloneContents ();
+ void insertNode (const DOM::Node&);
+ void surroundContents (const DOM::Node&);
+ DOM::Range cloneRange ();
+ DOM::DOMString toString ();
+ DOM::DOMString toHTML ();
+
+%If ( KDE_3_2_0 - )
+ DOM::DocumentFragment createContextualFragment (const DOM::DOMString&);
+%End
+
+ void detach ();
+ bool isDetached () const;
+//ig RangeImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig Range (RangeImpl*);
+
+}; // class Range
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom2_traversal.sip b/python/pykde/sip/khtml/dom2_traversal.sip
new file mode 100644
index 00000000..9b057be0
--- /dev/null
+++ b/python/pykde/sip/khtml/dom2_traversal.sip
@@ -0,0 +1,176 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class NodeIterator
+{
+%TypeHeaderCode
+#include <dom2_traversal.h>
+%End
+
+
+public:
+ NodeIterator ();
+ NodeIterator (const DOM::NodeIterator&);
+ DOM::Node root ();
+ ulong whatToShow ();
+ DOM::NodeFilter filter ();
+ bool expandEntityReferences ();
+ DOM::Node nextNode ();
+ DOM::Node previousNode ();
+ void detach ();
+//ig NodeIteratorImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig NodeIterator (NodeIteratorImpl*);
+
+}; // class NodeIterator
+
+
+class NodeFilter
+{
+%TypeHeaderCode
+#include <dom2_traversal.h>
+%End
+
+
+public:
+ NodeFilter ();
+ NodeFilter (const DOM::NodeFilter&);
+
+%If ( KDE_3_2_1 - )
+//ig NodeFilter (NodeFilterImpl*);
+%End
+
+
+ enum AcceptCode
+ {
+ FILTER_ACCEPT,
+ FILTER_REJECT,
+ FILTER_SKIP
+ };
+
+
+ enum ShowCode
+ {
+ SHOW_ALL,
+ SHOW_ELEMENT,
+ SHOW_ATTRIBUTE,
+ SHOW_TEXT,
+ SHOW_CDATA_SECTION,
+ SHOW_ENTITY_REFERENCE,
+ SHOW_ENTITY,
+ SHOW_PROCESSING_INSTRUCTION,
+ SHOW_COMMENT,
+ SHOW_DOCUMENT,
+ SHOW_DOCUMENT_TYPE,
+ SHOW_DOCUMENT_FRAGMENT,
+ SHOW_NOTATION
+ };
+
+ virtual short acceptNode (const DOM::Node&);
+//ig virtual NodeFilterImpl* handle () const;
+ virtual bool isNull () const;
+ void setCustomNodeFilter (DOM::CustomNodeFilter*);
+ DOM::CustomNodeFilter* customNodeFilter ();
+ static DOM::NodeFilter createCustom (DOM::CustomNodeFilter*);
+
+protected:
+
+protected:
+
+%If ( - KDE_3_2_1 )
+//ig NodeFilter (NodeFilterImpl*);
+%End
+
+
+}; // class NodeFilter
+
+
+class CustomNodeFilter : DOM::DomShared
+{
+%TypeHeaderCode
+#include <dom2_traversal.h>
+%End
+
+
+public:
+ CustomNodeFilter ();
+ virtual short acceptNode (const DOM::Node&);
+ virtual bool isNull ();
+ virtual DOM::DOMString customNodeFilterType ();
+
+protected:
+
+}; // class CustomNodeFilter
+
+
+class TreeWalker
+{
+%TypeHeaderCode
+#include <dom2_traversal.h>
+%End
+
+
+public:
+ TreeWalker ();
+ TreeWalker (const DOM::TreeWalker&);
+ DOM::Node root ();
+ ulong whatToShow ();
+ DOM::NodeFilter filter ();
+ bool expandEntityReferences ();
+ DOM::Node currentNode ();
+
+%If ( KDE_3_2_1 - )
+ void setCurrentNode (const DOM::Node&);
+%End
+
+ DOM::Node parentNode ();
+ DOM::Node firstChild ();
+ DOM::Node lastChild ();
+ DOM::Node previousSibling ();
+ DOM::Node nextSibling ();
+ DOM::Node previousNode ();
+ DOM::Node nextNode ();
+//ig TreeWalkerImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig TreeWalker (TreeWalkerImpl*);
+
+public:
+
+%If ( - KDE_3_2_1 )
+ void setCurrentNode (const DOM::Node);
+%End
+
+
+}; // class TreeWalker
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom2_views.sip b/python/pykde/sip/khtml/dom2_views.sip
new file mode 100644
index 00000000..a37395a5
--- /dev/null
+++ b/python/pykde/sip/khtml/dom2_views.sip
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class AbstractView
+{
+%TypeHeaderCode
+#include <dom2_views.h>
+%End
+
+
+public:
+ AbstractView ();
+ AbstractView (const DOM::AbstractView&);
+ DOM::Document document () const;
+ DOM::CSSStyleDeclaration getComputedStyle (const DOM::Element&, const DOM::DOMString&);
+//ig AbstractViewImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig AbstractView (AbstractViewImpl*);
+
+}; // class AbstractView
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_doc.sip b/python/pykde/sip/khtml/dom_doc.sip
new file mode 100644
index 00000000..4ec443a9
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_doc.sip
@@ -0,0 +1,185 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class DOMImplementation
+{
+%TypeHeaderCode
+#include <dom_doc.h>
+%End
+
+
+public:
+ DOMImplementation ();
+ DOMImplementation (const DOM::DOMImplementation&);
+ bool hasFeature (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::DocumentType createDocumentType (const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&);
+ DOM::Document createDocument (const DOM::DOMString&, const DOM::DOMString&, const DOM::DocumentType&);
+ DOM::DOMImplementation getInterface (const DOM::DOMString&) const;
+ DOM::CSSStyleSheet createCSSStyleSheet (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::HTMLDocument createHTMLDocument (const DOM::DOMString&);
+//ig DOMImplementationImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig DOMImplementation (DOMImplementationImpl*);
+
+}; // class DOMImplementation
+
+
+class Document : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_doc.h>
+%End
+
+
+public:
+ Document ();
+ Document (bool);
+ Document (const DOM::Document&);
+ Document (const DOM::Node&);
+ DOM::DocumentType doctype () const;
+ DOM::DOMImplementation implementation () const;
+ DOM::Element documentElement () const;
+ DOM::Element createElement (const DOM::DOMString&);
+ DOM::Element createElementNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::DocumentFragment createDocumentFragment ();
+ DOM::Text createTextNode (const DOM::DOMString&);
+ DOM::Comment createComment (const DOM::DOMString&);
+ DOM::CDATASection createCDATASection (const DOM::DOMString&);
+ DOM::ProcessingInstruction createProcessingInstruction (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::Attr createAttribute (const DOM::DOMString&);
+ DOM::Attr createAttributeNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::EntityReference createEntityReference (const DOM::DOMString&);
+ DOM::Element getElementById (const DOM::DOMString&) const;
+ DOM::NodeList getElementsByTagName (const DOM::DOMString&);
+ DOM::NodeList getElementsByTagNameNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::Node importNode (const DOM::Node&, bool);
+ bool isHTMLDocument () const;
+ DOM::Range createRange ();
+ DOM::NodeIterator createNodeIterator (DOM::Node, ulong, DOM::NodeFilter, bool);
+ DOM::TreeWalker createTreeWalker (DOM::Node, ulong, DOM::NodeFilter, bool);
+ DOM::Event createEvent (const DOM::DOMString&);
+ DOM::AbstractView defaultView () const;
+ DOM::StyleSheetList styleSheets () const;
+
+%If ( KDE_3_2_0 - )
+ DOM::DOMString preferredStylesheetSet ();
+ DOM::DOMString selectedStylesheetSet ();
+ void setSelectedStylesheetSet (const DOM::DOMString&);
+
+%If ( KDE_3_4_0 - )
+ void addStyleSheet (const DOM::StyleSheet&);
+ void removeStyleSheet (const DOM::StyleSheet&);
+%End
+
+%End
+
+ KHTMLView* view () const;
+ DOM::CSSStyleDeclaration getOverrideStyle (const DOM::Element&, const DOM::DOMString&);
+
+%If ( KDE_3_2_0 - )
+ bool async () const;
+ void setAsync (bool);
+ void abort ();
+ void load (const DOM::DOMString&);
+ void loadXML (const DOM::DOMString&);
+ bool designMode () const;
+ void setDesignMode (bool);
+%End
+
+ DOM::DOMString completeURL (const DOM::DOMString&);
+
+%If ( KDE_3_3_0 - )
+ DOM::DOMString toString () const;
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void updateRendering ();
+
+%If ( KDE_3_3_0 - )
+//ig Document (DocumentImpl*);
+%End
+
+%End
+
+
+protected:
+
+%If ( - KDE_3_3_0 )
+//ig Document (DocumentImpl*);
+%End
+
+
+}; // class Document
+
+
+class DocumentFragment : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_doc.h>
+%End
+
+
+public:
+ DocumentFragment ();
+ DocumentFragment (const DOM::DocumentFragment&);
+ DocumentFragment (const DOM::Node&);
+
+protected:
+//ig DocumentFragment (DocumentFragmentImpl*);
+
+}; // class DocumentFragment
+
+
+class DocumentType : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_doc.h>
+%End
+
+
+public:
+ DocumentType ();
+ DocumentType (const DOM::DocumentType&);
+ DocumentType (const DOM::Node&);
+ DOM::DOMString name () const;
+ DOM::NamedNodeMap entities () const;
+ DOM::NamedNodeMap notations () const;
+ DOM::DOMString publicId () const;
+ DOM::DOMString systemId () const;
+ DOM::DOMString internalSubset () const;
+
+protected:
+//ig DocumentType (DocumentTypeImpl*);
+
+}; // class DocumentType
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_element.sip b/python/pykde/sip/khtml/dom_element.sip
new file mode 100644
index 00000000..0bbb4bb2
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_element.sip
@@ -0,0 +1,111 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class Attr : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_element.h>
+%End
+
+
+public:
+ Attr ();
+ Attr (const DOM::Node&);
+ Attr (const DOM::Attr&);
+ DOM::DOMString name () const;
+ bool specified () const;
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+ DOM::Element ownerElement () const;
+
+protected:
+//ig Attr (AttrImpl*);
+
+}; // class Attr
+
+
+class Element : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_element.h>
+%End
+
+
+public:
+ Element ();
+ Element (const DOM::Node&);
+ Element (const DOM::Element&);
+ DOM::DOMString tagName () const;
+ DOM::DOMString getAttribute (const DOM::DOMString&);
+ void setAttribute (const DOM::DOMString&, const DOM::DOMString&);
+ void removeAttribute (const DOM::DOMString&);
+ DOM::Attr getAttributeNode (const DOM::DOMString&);
+ DOM::Attr setAttributeNode (const DOM::Attr&);
+ DOM::Attr removeAttributeNode (const DOM::Attr&);
+ DOM::NodeList getElementsByTagName (const DOM::DOMString&);
+ DOM::NodeList getElementsByTagNameNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::DOMString getAttributeNS (const DOM::DOMString&, const DOM::DOMString&);
+ void setAttributeNS (const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&);
+ void removeAttributeNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::Attr getAttributeNodeNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::Attr setAttributeNodeNS (const DOM::Attr&);
+ bool hasAttribute (const DOM::DOMString&);
+ bool hasAttributeNS (const DOM::DOMString&, const DOM::DOMString&);
+ DOM::CSSStyleDeclaration style ();
+
+%If ( KDE_3_2_0 - )
+ bool contentEditable () const;
+ void setContentEditable (bool);
+%End
+
+ bool isHTMLElement () const;
+
+%If ( KDE_3_1_0 - )
+ DOM::Element form () const;
+%End
+
+ static bool khtmlValidAttrName (const DOM::DOMString&);
+ static bool khtmlValidPrefix (const DOM::DOMString&);
+ static bool khtmlValidQualifiedName (const DOM::DOMString&);
+ static bool khtmlMalformedQualifiedName (const DOM::DOMString&);
+ static bool khtmlMalformedPrefix (const DOM::DOMString&);
+
+protected:
+//ig Element (ElementImpl*);
+
+public:
+
+%If ( - KDE_3_1_2 )
+ void normalize ();
+%End
+
+
+}; // class Element
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_exception.sip b/python/pykde/sip/khtml/dom_exception.sip
new file mode 100644
index 00000000..634069d7
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_exception.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class DOMException
+{
+%TypeHeaderCode
+#include <dom_exception.h>
+%End
+
+
+public:
+ DOMException (ushort);
+ DOMException (const DOM::DOMException&);
+
+ enum ExceptionCode
+ {
+ INDEX_SIZE_ERR,
+ DOMSTRING_SIZE_ERR,
+ HIERARCHY_REQUEST_ERR,
+ WRONG_DOCUMENT_ERR,
+ INVALID_CHARACTER_ERR,
+ NO_DATA_ALLOWED_ERR,
+ NO_MODIFICATION_ALLOWED_ERR,
+ NOT_FOUND_ERR,
+ NOT_SUPPORTED_ERR,
+ INUSE_ATTRIBUTE_ERR,
+ INVALID_STATE_ERR,
+ SYNTAX_ERR,
+ INVALID_MODIFICATION_ERR,
+ NAMESPACE_ERR,
+ INVALID_ACCESS_ERR
+ };
+
+ ushort code;
+
+}; // class DOMException
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_misc.sip b/python/pykde/sip/khtml/dom_misc.sip
new file mode 100644
index 00000000..7d281eaf
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_misc.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class DomShared
+{
+%TypeHeaderCode
+#include <dom_misc.h>
+%End
+
+
+public:
+ DomShared ();
+ virtual bool deleteMe ();
+ void ref ();
+ void deref ();
+ bool hasOneRef ();
+ uint refCount () const;
+
+protected:
+
+}; // class DomShared
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_node.sip b/python/pykde/sip/khtml/dom_node.sip
new file mode 100644
index 00000000..3a371592
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_node.sip
@@ -0,0 +1,150 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class NamedNodeMap
+{
+%TypeHeaderCode
+#include <dom_node.h>
+%End
+
+
+public:
+ NamedNodeMap ();
+ NamedNodeMap (const DOM::NamedNodeMap&);
+ ulong length () const;
+ DOM::Node getNamedItem (const DOM::DOMString&) const;
+ DOM::Node setNamedItem (const DOM::Node&);
+ DOM::Node removeNamedItem (const DOM::DOMString&);
+ DOM::Node item (ulong) const;
+ DOM::Node getNamedItemNS (const DOM::DOMString&, const DOM::DOMString&) const;
+ DOM::Node setNamedItemNS (const DOM::Node&);
+ DOM::Node removeNamedItemNS (const DOM::DOMString&, const DOM::DOMString&);
+//ig NamedNodeMapImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig NamedNodeMap (NamedNodeMapImpl*);
+
+}; // class NamedNodeMap
+
+
+class Node
+{
+%TypeHeaderCode
+#include <dom_node.h>
+%End
+
+
+public:
+ Node ();
+ Node (const DOM::Node&);
+//ig Node (NodeImpl*);
+ bool operator == (const DOM::Node&);
+ bool operator != (const DOM::Node&);
+
+ enum NodeType
+ {
+ ELEMENT_NODE,
+ ATTRIBUTE_NODE,
+ TEXT_NODE,
+ CDATA_SECTION_NODE,
+ ENTITY_REFERENCE_NODE,
+ ENTITY_NODE,
+ PROCESSING_INSTRUCTION_NODE,
+ COMMENT_NODE,
+ DOCUMENT_NODE,
+ DOCUMENT_TYPE_NODE,
+ DOCUMENT_FRAGMENT_NODE,
+ NOTATION_NODE
+ };
+
+ DOM::DOMString nodeName () const;
+ DOM::DOMString nodeValue () const;
+ void setNodeValue (const DOM::DOMString&);
+ ushort nodeType () const;
+ DOM::Node parentNode () const;
+ DOM::NodeList childNodes () const;
+ DOM::Node firstChild () const;
+ DOM::Node lastChild () const;
+ DOM::Node previousSibling () const;
+ DOM::Node nextSibling () const;
+ DOM::NamedNodeMap attributes () const;
+ DOM::Document ownerDocument () const;
+ DOM::Node insertBefore (const DOM::Node&, const DOM::Node&);
+ DOM::Node replaceChild (const DOM::Node&, const DOM::Node&);
+ DOM::Node removeChild (const DOM::Node&);
+ DOM::Node appendChild (const DOM::Node&);
+ bool hasChildNodes ();
+ DOM::Node cloneNode (bool);
+ void normalize ();
+ bool isSupported (const DOM::DOMString&, const DOM::DOMString&) const;
+ DOM::DOMString namespaceURI () const;
+ DOM::DOMString prefix () const;
+ void setPrefix (const DOM::DOMString&);
+ DOM::DOMString localName () const;
+ bool hasAttributes ();
+ void addEventListener (const DOM::DOMString&, DOM::EventListener*, const bool);
+ void removeEventListener (const DOM::DOMString&, DOM::EventListener*, bool);
+ bool dispatchEvent (const DOM::Event&);
+ ulong elementId () const;
+ bool isNull () const;
+//ig NodeImpl* handle () const;
+ ulong index () const;
+ QString toHTML ();
+ void applyChanges ();
+ void getCursor (int, int&, int&, int&);
+ QRect getRect ();
+
+protected:
+
+}; // class Node
+
+
+class NodeList
+{
+%TypeHeaderCode
+#include <dom_node.h>
+%End
+
+
+public:
+ NodeList ();
+ NodeList (const DOM::NodeList&);
+ ulong length () const;
+ DOM::Node item (ulong) const;
+//ig NodeListImpl* handle () const;
+ bool isNull () const;
+
+protected:
+//ig NodeList (const NodeListImpl*);
+
+}; // class NodeList
+
+//ig typedef ulonglong DOMTimeStamp;
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_string.sip b/python/pykde/sip/khtml/dom_string.sip
new file mode 100644
index 00000000..c1c55c55
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_string.sip
@@ -0,0 +1,79 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class DOMString
+{
+%TypeHeaderCode
+#include <dom_string.h>
+%End
+
+
+public:
+ DOMString ();
+ DOMString (const QChar*, uint);
+ DOMString (const QString&);
+ DOMString (const char*);
+//ig DOMString (DOMStringImpl*);
+ DOMString (const DOM::DOMString&);
+ DOM::DOMString& operator += (const DOM::DOMString&);
+ DOM::DOMString operator + (const DOM::DOMString&);
+ void insert (DOM::DOMString, uint);
+ const QChar& operator [] (uint) const;
+%MethodCode
+//returns (QChar)
+//takes index | uint
+ sipRes = &((*sipCpp)[a0]);
+%End
+
+ int find (const QChar, int = 0) const;
+ uint length () const;
+ void truncate (uint);
+ void remove (uint, int = 1);
+ DOM::DOMString split (uint);
+ DOM::DOMString lower () const;
+ DOM::DOMString upper () const;
+ QChar* unicode () const;
+ QString string () const;
+ int toInt () const;
+ bool percentage (int&) const;
+ DOM::DOMString copy () const;
+ bool isNull () const;
+ bool isEmpty () const;
+//ig DOMStringImpl* implementation () const;
+
+protected:
+
+}; // class DOMString
+
+//igx bool operator == (const DOMString&, const DOMString&);
+//igx bool operator == (const DOMString&, const QString&);
+//igx bool operator == (const DOMString&, const char*);
+bool strcasecmp (const DOM::DOMString&, const DOM::DOMString&);
+bool strcasecmp (const DOM::DOMString&, const char*);
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_text.sip b/python/pykde/sip/khtml/dom_text.sip
new file mode 100644
index 00000000..444717c7
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_text.sip
@@ -0,0 +1,92 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class CharacterData : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_text.h>
+%End
+
+
+public:
+ CharacterData ();
+ CharacterData (const DOM::CharacterData&);
+ CharacterData (const DOM::Node&);
+ DOM::DOMString data () const;
+ void setData (const DOM::DOMString&);
+ ulong length () const;
+ DOM::DOMString substringData (const ulong, const ulong);
+ void appendData (const DOM::DOMString&);
+ void insertData (const ulong, const DOM::DOMString&);
+ void deleteData (const ulong, const ulong);
+ void replaceData (const ulong, const ulong, const DOM::DOMString&);
+
+protected:
+//ig CharacterData (CharacterDataImpl*);
+
+}; // class CharacterData
+
+
+class Comment : DOM::CharacterData
+{
+%TypeHeaderCode
+#include <dom_text.h>
+%End
+
+
+public:
+ Comment ();
+ Comment (const DOM::Comment&);
+ Comment (const DOM::Node&);
+
+protected:
+//ig Comment (CommentImpl*);
+
+}; // class Comment
+
+
+class Text : DOM::CharacterData
+{
+%TypeHeaderCode
+#include <dom_text.h>
+%End
+
+
+public:
+ Text ();
+ Text (const DOM::Text&);
+ Text (const DOM::Node&);
+ DOM::Text splitText (const ulong);
+
+protected:
+//ig Text (TextImpl*);
+
+}; // class Text
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/dom_xml.sip b/python/pykde/sip/khtml/dom_xml.sip
new file mode 100644
index 00000000..d9eef333
--- /dev/null
+++ b/python/pykde/sip/khtml/dom_xml.sip
@@ -0,0 +1,128 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class CDATASection : DOM::Text
+{
+%TypeHeaderCode
+#include <dom_xml.h>
+%End
+
+
+public:
+ CDATASection ();
+ CDATASection (const DOM::CDATASection&);
+ CDATASection (const DOM::Node&);
+
+protected:
+//ig CDATASection (CDATASectionImpl*);
+
+}; // class CDATASection
+
+
+class Entity : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_xml.h>
+%End
+
+
+public:
+ Entity ();
+ Entity (const DOM::Entity&);
+ Entity (const DOM::Node&);
+ DOM::DOMString publicId () const;
+ DOM::DOMString systemId () const;
+ DOM::DOMString notationName () const;
+
+protected:
+//ig Entity (EntityImpl*);
+
+}; // class Entity
+
+
+class EntityReference : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_xml.h>
+%End
+
+
+public:
+ EntityReference ();
+ EntityReference (const DOM::EntityReference&);
+ EntityReference (const DOM::Node&);
+
+protected:
+//ig EntityReference (EntityReferenceImpl*);
+
+}; // class EntityReference
+
+
+class Notation : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_xml.h>
+%End
+
+
+public:
+ Notation ();
+ Notation (const DOM::Notation&);
+ Notation (const DOM::Node&);
+ DOM::DOMString publicId () const;
+ DOM::DOMString systemId () const;
+
+protected:
+//ig Notation (NotationImpl*);
+
+}; // class Notation
+
+
+class ProcessingInstruction : DOM::Node
+{
+%TypeHeaderCode
+#include <dom_xml.h>
+%End
+
+
+public:
+ ProcessingInstruction ();
+ ProcessingInstruction (const DOM::ProcessingInstruction&);
+ ProcessingInstruction (const DOM::Node&);
+ DOM::DOMString target () const;
+ DOM::DOMString data () const;
+ void setData (const DOM::DOMString&);
+ DOM::StyleSheet sheet () const;
+
+protected:
+//ig ProcessingInstruction (ProcessingInstructionImpl*);
+
+}; // class ProcessingInstruction
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_base.sip b/python/pykde/sip/khtml/html_base.sip
new file mode 100644
index 00000000..64d6068b
--- /dev/null
+++ b/python/pykde/sip/khtml/html_base.sip
@@ -0,0 +1,207 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLBodyElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLBodyElement ();
+ HTMLBodyElement (const DOM::HTMLBodyElement&);
+ HTMLBodyElement (const DOM::Node&);
+
+protected:
+//ig HTMLBodyElement (HTMLBodyElementImpl*);
+
+public:
+ DOM::DOMString aLink () const;
+ void setALink (const DOM::DOMString&);
+ DOM::DOMString background () const;
+ void setBackground (const DOM::DOMString&);
+ DOM::DOMString bgColor () const;
+ void setBgColor (const DOM::DOMString&);
+ DOM::DOMString link () const;
+ void setLink (const DOM::DOMString&);
+ DOM::DOMString text () const;
+ void setText (const DOM::DOMString&);
+ DOM::DOMString vLink () const;
+ void setVLink (const DOM::DOMString&);
+
+}; // class HTMLBodyElement
+
+
+class HTMLFrameElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLFrameElement ();
+ HTMLFrameElement (const DOM::HTMLFrameElement&);
+ HTMLFrameElement (const DOM::Node&);
+
+protected:
+//ig HTMLFrameElement (HTMLFrameElementImpl*);
+
+public:
+ DOM::DOMString frameBorder () const;
+ void setFrameBorder (const DOM::DOMString&);
+ DOM::DOMString longDesc () const;
+ void setLongDesc (const DOM::DOMString&);
+ DOM::DOMString marginHeight () const;
+ void setMarginHeight (const DOM::DOMString&);
+ DOM::DOMString marginWidth () const;
+ void setMarginWidth (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ bool noResize () const;
+ void setNoResize (bool);
+ DOM::DOMString scrolling () const;
+ void setScrolling (const DOM::DOMString&);
+ DOM::DOMString src () const;
+ void setSrc (const DOM::DOMString&);
+ DOM::Document contentDocument () const;
+
+}; // class HTMLFrameElement
+
+
+class HTMLFrameSetElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLFrameSetElement ();
+ HTMLFrameSetElement (const DOM::HTMLFrameSetElement&);
+ HTMLFrameSetElement (const DOM::Node&);
+
+protected:
+//ig HTMLFrameSetElement (HTMLFrameSetElementImpl*);
+
+public:
+ DOM::DOMString cols () const;
+ void setCols (const DOM::DOMString&);
+ DOM::DOMString rows () const;
+ void setRows (const DOM::DOMString&);
+
+}; // class HTMLFrameSetElement
+
+
+class HTMLIFrameElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLIFrameElement ();
+ HTMLIFrameElement (const DOM::HTMLIFrameElement&);
+ HTMLIFrameElement (const DOM::Node&);
+
+protected:
+//ig HTMLIFrameElement (HTMLIFrameElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString frameBorder () const;
+ void setFrameBorder (const DOM::DOMString&);
+ DOM::DOMString height () const;
+ void setHeight (const DOM::DOMString&);
+ DOM::DOMString longDesc () const;
+ void setLongDesc (const DOM::DOMString&);
+ DOM::DOMString marginHeight () const;
+ void setMarginHeight (const DOM::DOMString&);
+ DOM::DOMString marginWidth () const;
+ void setMarginWidth (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString scrolling () const;
+ void setScrolling (const DOM::DOMString&);
+ DOM::DOMString src () const;
+ void setSrc (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+ DOM::Document contentDocument () const;
+
+}; // class HTMLIFrameElement
+
+
+class HTMLHeadElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLHeadElement ();
+ HTMLHeadElement (const DOM::HTMLHeadElement&);
+ HTMLHeadElement (const DOM::Node&);
+
+protected:
+//ig HTMLHeadElement (HTMLHeadElementImpl*);
+
+public:
+ DOM::DOMString profile () const;
+ void setProfile (const DOM::DOMString&);
+
+}; // class HTMLHeadElement
+
+
+class HTMLHtmlElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_base.h>
+%End
+
+
+public:
+ HTMLHtmlElement ();
+ HTMLHtmlElement (const DOM::HTMLHtmlElement&);
+ HTMLHtmlElement (const DOM::Node&);
+
+protected:
+//ig HTMLHtmlElement (HTMLHtmlElementImpl*);
+
+public:
+ DOM::DOMString version () const;
+ void setVersion (const DOM::DOMString&);
+
+}; // class HTMLHtmlElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_block.sip b/python/pykde/sip/khtml/html_block.sip
new file mode 100644
index 00000000..5c3234b4
--- /dev/null
+++ b/python/pykde/sip/khtml/html_block.sip
@@ -0,0 +1,233 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLBlockquoteElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLBlockquoteElement ();
+ HTMLBlockquoteElement (const DOM::HTMLBlockquoteElement&);
+ HTMLBlockquoteElement (const DOM::Node&);
+
+protected:
+
+%If ( KDE_3_1_0 - )
+//ig HTMLBlockquoteElement (HTMLElementImpl*);
+%End
+
+
+public:
+ DOM::DOMString cite () const;
+ void setCite (const DOM::DOMString&);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+//ig HTMLBlockquoteElement (HTMLBlockquoteElementImpl*);
+%End
+
+
+}; // class HTMLBlockquoteElement
+
+
+class HTMLDivElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLDivElement ();
+ HTMLDivElement (const DOM::HTMLDivElement&);
+ HTMLDivElement (const DOM::Node&);
+
+protected:
+//ig HTMLDivElement (HTMLDivElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+
+}; // class HTMLDivElement
+
+
+class HTMLHRElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLHRElement ();
+ HTMLHRElement (const DOM::HTMLHRElement&);
+ HTMLHRElement (const DOM::Node&);
+
+protected:
+//ig HTMLHRElement (HTMLHRElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ bool noShade () const;
+ void setNoShade (bool);
+ DOM::DOMString size () const;
+ void setSize (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+
+}; // class HTMLHRElement
+
+
+class HTMLHeadingElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLHeadingElement ();
+ HTMLHeadingElement (const DOM::HTMLHeadingElement&);
+ HTMLHeadingElement (const DOM::Node&);
+
+protected:
+
+%If ( KDE_3_1_0 - )
+//ig HTMLHeadingElement (HTMLElementImpl*);
+%End
+
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+//ig HTMLHeadingElement (HTMLHeadingElementImpl*);
+%End
+
+
+}; // class HTMLHeadingElement
+
+
+class HTMLParagraphElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLParagraphElement ();
+ HTMLParagraphElement (const DOM::HTMLParagraphElement&);
+ HTMLParagraphElement (const DOM::Node&);
+
+protected:
+
+%If ( KDE_3_1_0 - )
+//ig HTMLParagraphElement (HTMLElementImpl*);
+%End
+
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+//ig HTMLParagraphElement (HTMLParagraphElementImpl*);
+%End
+
+
+}; // class HTMLParagraphElement
+
+
+class HTMLPreElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLPreElement ();
+ HTMLPreElement (const DOM::HTMLPreElement&);
+ HTMLPreElement (const DOM::Node&);
+
+protected:
+//ig HTMLPreElement (HTMLPreElementImpl*);
+
+public:
+ long width () const;
+ void setWidth (long);
+
+}; // class HTMLPreElement
+
+
+%If ( KDE_3_3_2 - )
+
+class HTMLLayerElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_block.h>
+%End
+
+
+public:
+ HTMLLayerElement ();
+ HTMLLayerElement (const DOM::HTMLLayerElement&);
+ HTMLLayerElement (const DOM::Node&);
+
+protected:
+//igx HTMLLayerElement (HTMLLayerElementImpl*);
+
+public:
+ long top () const;
+ void setTop (long);
+ long left () const;
+ void setLeft (long);
+ DOM::DOMString visibility () const;
+ void setVisibility (const DOM::DOMString&);
+ DOM::DOMString bgColor () const;
+ void setBgColor (const DOM::DOMString&);
+ DOM::HTMLCollection layers () const;
+
+}; // class HTMLLayerElement
+
+%End
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_document.sip b/python/pykde/sip/khtml/html_document.sip
new file mode 100644
index 00000000..93b24470
--- /dev/null
+++ b/python/pykde/sip/khtml/html_document.sip
@@ -0,0 +1,77 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLDocument : DOM::Document
+{
+%TypeHeaderCode
+#include <html_document.h>
+%End
+
+
+public:
+ HTMLDocument ();
+ HTMLDocument (KHTMLView* /TransferThis/);
+ HTMLDocument (const DOM::HTMLDocument&);
+ HTMLDocument (const DOM::Node&);
+
+protected:
+//ig HTMLDocument (HTMLDocumentImpl*);
+
+public:
+ DOM::DOMString title () const;
+ void setTitle (const DOM::DOMString&);
+ DOM::DOMString referrer () const;
+ DOM::DOMString domain () const;
+ DOM::DOMString URL () const;
+ DOM::HTMLElement body () const;
+ void setBody (const DOM::HTMLElement&);
+ DOM::HTMLCollection images () const;
+ DOM::HTMLCollection applets () const;
+ DOM::HTMLCollection links () const;
+ DOM::HTMLCollection forms () const;
+
+%If ( KDE_3_3_2 - )
+ DOM::HTMLCollection layers () const;
+%End
+
+ DOM::HTMLCollection anchors () const;
+ DOM::DOMString cookie () const;
+ void setCookie (const DOM::DOMString&);
+ void open ();
+ void close ();
+ void write (const DOM::DOMString&);
+ void writeln (const DOM::DOMString&);
+ DOM::NodeList getElementsByName (const DOM::DOMString&);
+ DOM::DOMString completeURL (const DOM::DOMString&) const;
+ DOM::DOMString lastModified () const;
+ DOM::HTMLCollection all () const;
+
+}; // class HTMLDocument
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_element.sip b/python/pykde/sip/khtml/html_element.sip
new file mode 100644
index 00000000..de99a00f
--- /dev/null
+++ b/python/pykde/sip/khtml/html_element.sip
@@ -0,0 +1,78 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLElement : DOM::Element
+{
+%TypeHeaderCode
+#include <html_element.h>
+%End
+
+
+public:
+ HTMLElement ();
+ HTMLElement (const DOM::HTMLElement&);
+ HTMLElement (const DOM::Node&);
+
+protected:
+//ig HTMLElement (HTMLElementImpl*);
+
+public:
+ DOM::DOMString id () const;
+ void setId (const DOM::DOMString&);
+ DOM::DOMString title () const;
+ void setTitle (const DOM::DOMString&);
+ DOM::DOMString lang () const;
+ void setLang (const DOM::DOMString&);
+ DOM::DOMString dir () const;
+ void setDir (const DOM::DOMString&);
+ DOM::DOMString className () const;
+ void setClassName (const DOM::DOMString&);
+ DOM::DOMString innerHTML () const;
+ void setInnerHTML (const DOM::DOMString&);
+ DOM::DOMString innerText () const;
+ void setInnerText (const DOM::DOMString&);
+ DOM::HTMLCollection children () const;
+
+%If ( KDE_3_1_0 - )
+ DOM::HTMLCollection all () const;
+%End
+
+ void removeCSSProperty (const DOM::DOMString&);
+ void addCSSProperty (const DOM::DOMString&, const DOM::DOMString&);
+
+protected:
+
+%If ( KDE_3_0_1 - )
+ void assignOther (const DOM::Node&, int);
+%End
+
+
+}; // class HTMLElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_form.sip b/python/pykde/sip/khtml/html_form.sip
new file mode 100644
index 00000000..e386a445
--- /dev/null
+++ b/python/pykde/sip/khtml/html_form.sip
@@ -0,0 +1,436 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLButtonElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLButtonElement ();
+ HTMLButtonElement (const DOM::HTMLButtonElement&);
+ HTMLButtonElement (const DOM::Node&);
+
+protected:
+//ig HTMLButtonElement (HTMLButtonElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString type () const;
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+
+%If ( KDE_3_5_0 - )
+ void blur ();
+ void focus ();
+%End
+
+
+}; // class HTMLButtonElement
+
+
+class HTMLFieldSetElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLFieldSetElement ();
+ HTMLFieldSetElement (const DOM::HTMLFieldSetElement&);
+ HTMLFieldSetElement (const DOM::Node&);
+
+protected:
+//ig HTMLFieldSetElement (HTMLFieldSetElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+
+}; // class HTMLFieldSetElement
+
+
+class HTMLFormElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLFormElement ();
+ HTMLFormElement (const DOM::HTMLFormElement&);
+ HTMLFormElement (const DOM::Node&);
+
+protected:
+//ig HTMLFormElement (HTMLFormElementImpl*);
+
+public:
+ DOM::HTMLCollection elements () const;
+ long length () const;
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString acceptCharset () const;
+ void setAcceptCharset (const DOM::DOMString&);
+ DOM::DOMString action () const;
+ void setAction (const DOM::DOMString&);
+ DOM::DOMString enctype () const;
+ void setEnctype (const DOM::DOMString&);
+ DOM::DOMString method () const;
+ void setMethod (const DOM::DOMString&);
+ DOM::DOMString target () const;
+ void setTarget (const DOM::DOMString&);
+ void submit ();
+ void reset ();
+
+}; // class HTMLFormElement
+
+
+class HTMLInputElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLInputElement ();
+ HTMLInputElement (const DOM::HTMLInputElement&);
+ HTMLInputElement (const DOM::Node&);
+
+protected:
+//ig HTMLInputElement (HTMLInputElementImpl*);
+
+public:
+ DOM::DOMString defaultValue () const;
+ void setDefaultValue (const DOM::DOMString&);
+ bool defaultChecked () const;
+ void setDefaultChecked (bool);
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString accept () const;
+ void setAccept (const DOM::DOMString&);
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString alt () const;
+ void setAlt (const DOM::DOMString&);
+ bool checked () const;
+ void setChecked (bool);
+
+%If ( KDE_3_5_3 - )
+ bool indeterminate () const;
+ void setIndeterminate (bool);
+%End
+
+ bool disabled () const;
+ void setDisabled (bool);
+ long maxLength () const;
+ void setMaxLength (long);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ bool readOnly () const;
+ void setReadOnly (bool);
+ DOM::DOMString size () const;
+ void setSize (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getSize () const;
+ void setSize (long);
+%End
+
+ DOM::DOMString src () const;
+ void setSrc (const DOM::DOMString&);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ DOM::DOMString useMap () const;
+ void setUseMap (const DOM::DOMString&);
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+ void blur ();
+ void focus ();
+ void select ();
+ void click ();
+
+%If ( KDE_3_5_2 - )
+ long selectionStart ();
+ void setSelectionStart (long);
+ long selectionEnd ();
+ void setSelectionEnd (long);
+ void setSelectionRange (long, long);
+%End
+
+
+}; // class HTMLInputElement
+
+
+class HTMLLabelElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLLabelElement ();
+ HTMLLabelElement (const DOM::HTMLLabelElement&);
+ HTMLLabelElement (const DOM::Node&);
+
+protected:
+//ig HTMLLabelElement (HTMLLabelElementImpl*);
+
+public:
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ DOM::DOMString htmlFor () const;
+ void setHtmlFor (const DOM::DOMString&);
+
+public:
+
+%If ( - KDE_3_1_0 )
+ DOM::HTMLFormElement form () const;
+%End
+
+
+}; // class HTMLLabelElement
+
+
+class HTMLLegendElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLLegendElement ();
+ HTMLLegendElement (const DOM::HTMLLegendElement&);
+ HTMLLegendElement (const DOM::Node&);
+
+protected:
+//ig HTMLLegendElement (HTMLLegendElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+
+}; // class HTMLLegendElement
+
+
+class HTMLOptGroupElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLOptGroupElement ();
+ HTMLOptGroupElement (const DOM::HTMLOptGroupElement&);
+ HTMLOptGroupElement (const DOM::Node&);
+
+protected:
+//ig HTMLOptGroupElement (HTMLOptGroupElementImpl*);
+
+public:
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString label () const;
+ void setLabel (const DOM::DOMString&);
+
+}; // class HTMLOptGroupElement
+
+
+class HTMLSelectElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLSelectElement ();
+ HTMLSelectElement (const DOM::HTMLSelectElement&);
+ HTMLSelectElement (const DOM::Node&);
+
+protected:
+//ig HTMLSelectElement (HTMLSelectElementImpl*);
+
+public:
+ DOM::DOMString type () const;
+ long selectedIndex () const;
+ void setSelectedIndex (long);
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+ long length () const;
+ DOM::HTMLFormElement form () const;
+ DOM::HTMLCollection options () const;
+ bool disabled () const;
+ void setDisabled (bool);
+ bool multiple () const;
+ void setMultiple (bool);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ long size () const;
+ void setSize (long);
+ long tabIndex () const;
+ void setTabIndex (long);
+ void add (const DOM::HTMLElement&, const DOM::HTMLElement&);
+ void remove (long);
+ void blur ();
+ void focus ();
+
+}; // class HTMLSelectElement
+
+
+class HTMLTextAreaElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLTextAreaElement ();
+ HTMLTextAreaElement (const DOM::HTMLTextAreaElement&);
+ HTMLTextAreaElement (const DOM::Node&);
+
+protected:
+//ig HTMLTextAreaElement (HTMLTextAreaElementImpl*);
+
+public:
+ DOM::DOMString defaultValue () const;
+ void setDefaultValue (const DOM::DOMString&);
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ long cols () const;
+ void setCols (long);
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ bool readOnly () const;
+ void setReadOnly (bool);
+ long rows () const;
+ void setRows (long);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString type () const;
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+ void blur ();
+ void focus ();
+ void select ();
+
+%If ( KDE_3_5_2 - )
+ long selectionStart ();
+ void setSelectionStart (long);
+ long selectionEnd ();
+ void setSelectionEnd (long);
+ void setSelectionRange (long, long);
+ long textLength ();
+%End
+
+
+}; // class HTMLTextAreaElement
+
+
+class HTMLOptionElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLOptionElement ();
+ HTMLOptionElement (const DOM::HTMLOptionElement&);
+ HTMLOptionElement (const DOM::Node&);
+
+protected:
+//ig HTMLOptionElement (HTMLOptionElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+ bool defaultSelected () const;
+ void setDefaultSelected (bool);
+ DOM::DOMString text () const;
+ long index () const;
+ void setIndex (long);
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString label () const;
+ void setLabel (const DOM::DOMString&);
+ bool selected () const;
+ void setSelected (bool);
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+
+}; // class HTMLOptionElement
+
+
+class HTMLIsIndexElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_form.h>
+%End
+
+
+public:
+ HTMLIsIndexElement ();
+ HTMLIsIndexElement (const DOM::HTMLIsIndexElement&);
+ HTMLIsIndexElement (const DOM::Node&);
+
+protected:
+//ig HTMLIsIndexElement (HTMLIsIndexElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString prompt () const;
+ void setPrompt (const DOM::DOMString&);
+
+}; // class HTMLIsIndexElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_head.sip b/python/pykde/sip/khtml/html_head.sip
new file mode 100644
index 00000000..eb6d705c
--- /dev/null
+++ b/python/pykde/sip/khtml/html_head.sip
@@ -0,0 +1,203 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLBaseElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLBaseElement ();
+ HTMLBaseElement (const DOM::HTMLBaseElement&);
+ HTMLBaseElement (const DOM::Node&);
+
+protected:
+//ig HTMLBaseElement (HTMLBaseElementImpl*);
+
+public:
+ DOM::DOMString href () const;
+ void setHref (const DOM::DOMString&);
+ DOM::DOMString target () const;
+ void setTarget (const DOM::DOMString&);
+
+}; // class HTMLBaseElement
+
+
+class HTMLLinkElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLLinkElement ();
+ HTMLLinkElement (const DOM::HTMLLinkElement&);
+ HTMLLinkElement (const DOM::Node&);
+
+protected:
+//ig HTMLLinkElement (HTMLLinkElementImpl*);
+
+public:
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString charset () const;
+ void setCharset (const DOM::DOMString&);
+ DOM::DOMString href () const;
+ void setHref (const DOM::DOMString&);
+ DOM::DOMString hreflang () const;
+ void setHreflang (const DOM::DOMString&);
+ DOM::DOMString media () const;
+ void setMedia (const DOM::DOMString&);
+ DOM::DOMString rel () const;
+ void setRel (const DOM::DOMString&);
+ DOM::DOMString rev () const;
+ void setRev (const DOM::DOMString&);
+ DOM::DOMString target () const;
+ void setTarget (const DOM::DOMString&);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ DOM::StyleSheet sheet () const;
+
+}; // class HTMLLinkElement
+
+
+class HTMLMetaElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLMetaElement ();
+ HTMLMetaElement (const DOM::HTMLMetaElement&);
+ HTMLMetaElement (const DOM::Node&);
+
+protected:
+//ig HTMLMetaElement (HTMLMetaElementImpl*);
+
+public:
+ DOM::DOMString content () const;
+ void setContent (const DOM::DOMString&);
+ DOM::DOMString httpEquiv () const;
+ void setHttpEquiv (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString scheme () const;
+ void setScheme (const DOM::DOMString&);
+
+}; // class HTMLMetaElement
+
+
+class HTMLScriptElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLScriptElement ();
+ HTMLScriptElement (const DOM::HTMLScriptElement&);
+ HTMLScriptElement (const DOM::Node&);
+
+protected:
+//ig HTMLScriptElement (HTMLScriptElementImpl*);
+
+public:
+ DOM::DOMString text () const;
+ void setText (const DOM::DOMString&);
+ DOM::DOMString htmlFor () const;
+ void setHtmlFor (const DOM::DOMString&);
+ DOM::DOMString event () const;
+ void setEvent (const DOM::DOMString&);
+ DOM::DOMString charset () const;
+ void setCharset (const DOM::DOMString&);
+ bool defer () const;
+ void setDefer (bool);
+ DOM::DOMString src () const;
+ void setSrc (const DOM::DOMString&);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+
+}; // class HTMLScriptElement
+
+
+class HTMLStyleElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLStyleElement ();
+ HTMLStyleElement (const DOM::HTMLStyleElement&);
+ HTMLStyleElement (const DOM::Node&);
+
+protected:
+//ig HTMLStyleElement (HTMLStyleElementImpl*);
+
+public:
+ bool disabled () const;
+ void setDisabled (bool);
+ DOM::DOMString media () const;
+ void setMedia (const DOM::DOMString&);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ DOM::StyleSheet sheet () const;
+
+}; // class HTMLStyleElement
+
+
+class HTMLTitleElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_head.h>
+%End
+
+
+public:
+ HTMLTitleElement ();
+ HTMLTitleElement (const DOM::HTMLTitleElement&);
+ HTMLTitleElement (const DOM::Node&);
+
+protected:
+//ig HTMLTitleElement (HTMLTitleElementImpl*);
+
+public:
+ DOM::DOMString text () const;
+ void setText (const DOM::DOMString&);
+
+}; // class HTMLTitleElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_image.sip b/python/pykde/sip/khtml/html_image.sip
new file mode 100644
index 00000000..a039211f
--- /dev/null
+++ b/python/pykde/sip/khtml/html_image.sip
@@ -0,0 +1,144 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLAreaElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_image.h>
+%End
+
+
+public:
+ HTMLAreaElement ();
+ HTMLAreaElement (const DOM::HTMLAreaElement&);
+ HTMLAreaElement (const DOM::Node&);
+
+protected:
+//ig HTMLAreaElement (HTMLAreaElementImpl*);
+
+public:
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ DOM::DOMString alt () const;
+ void setAlt (const DOM::DOMString&);
+ DOM::DOMString coords () const;
+ void setCoords (const DOM::DOMString&);
+ DOM::DOMString href () const;
+ void setHref (const DOM::DOMString&);
+ bool noHref () const;
+ void setNoHref (bool);
+ DOM::DOMString shape () const;
+ void setShape (const DOM::DOMString&);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString target () const;
+ void setTarget (const DOM::DOMString&);
+
+}; // class HTMLAreaElement
+
+
+class HTMLImageElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_image.h>
+%End
+
+
+public:
+ HTMLImageElement ();
+ HTMLImageElement (const DOM::HTMLImageElement&);
+ HTMLImageElement (const DOM::Node&);
+
+protected:
+//ig HTMLImageElement (HTMLImageElementImpl*);
+
+public:
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString alt () const;
+ void setAlt (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ DOM::DOMString getBorder () const;
+ void setBorder (const DOM::DOMString&);
+%End
+
+ long border () const;
+ void setBorder (long);
+ long height () const;
+ void setHeight (long);
+ long hspace () const;
+ void setHspace (long);
+ bool isMap () const;
+ void setIsMap (bool);
+ DOM::DOMString longDesc () const;
+ void setLongDesc (const DOM::DOMString&);
+ DOM::DOMString src () const;
+ void setSrc (const DOM::DOMString&);
+ DOM::DOMString useMap () const;
+ void setUseMap (const DOM::DOMString&);
+ long vspace () const;
+ void setVspace (long);
+ long width () const;
+ void setWidth (long);
+
+%If ( KDE_3_2_0 - )
+ long x () const;
+ long y () const;
+%End
+
+
+}; // class HTMLImageElement
+
+
+class HTMLMapElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_image.h>
+%End
+
+
+public:
+ HTMLMapElement ();
+ HTMLMapElement (const DOM::HTMLMapElement&);
+ HTMLMapElement (const DOM::Node&);
+
+protected:
+//ig HTMLMapElement (HTMLMapElementImpl*);
+
+public:
+ DOM::HTMLCollection areas () const;
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+
+}; // class HTMLMapElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_inline.sip b/python/pykde/sip/khtml/html_inline.sip
new file mode 100644
index 00000000..22714fa9
--- /dev/null
+++ b/python/pykde/sip/khtml/html_inline.sip
@@ -0,0 +1,169 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLAnchorElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_inline.h>
+%End
+
+
+public:
+ HTMLAnchorElement ();
+ HTMLAnchorElement (const DOM::HTMLAnchorElement&);
+ HTMLAnchorElement (const DOM::Node&);
+
+protected:
+//ig HTMLAnchorElement (HTMLAnchorElementImpl*);
+
+public:
+ DOM::DOMString accessKey () const;
+ void setAccessKey (const DOM::DOMString&);
+ DOM::DOMString charset () const;
+ void setCharset (const DOM::DOMString&);
+ DOM::DOMString coords () const;
+ void setCoords (const DOM::DOMString&);
+ DOM::DOMString href () const;
+ void setHref (const DOM::DOMString&);
+ DOM::DOMString hreflang () const;
+ void setHreflang (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString rel () const;
+ void setRel (const DOM::DOMString&);
+ DOM::DOMString rev () const;
+ void setRev (const DOM::DOMString&);
+ DOM::DOMString shape () const;
+ void setShape (const DOM::DOMString&);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString target () const;
+ void setTarget (const DOM::DOMString&);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ void blur ();
+ void focus ();
+
+}; // class HTMLAnchorElement
+
+
+class HTMLBRElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_inline.h>
+%End
+
+
+public:
+ HTMLBRElement ();
+ HTMLBRElement (const DOM::HTMLBRElement&);
+ HTMLBRElement (const DOM::Node&);
+
+protected:
+//ig HTMLBRElement (HTMLBRElementImpl*);
+
+public:
+ DOM::DOMString clear () const;
+ void setClear (const DOM::DOMString&);
+
+}; // class HTMLBRElement
+
+
+class HTMLFontElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_inline.h>
+%End
+
+
+public:
+ HTMLFontElement ();
+ HTMLFontElement (const DOM::HTMLFontElement&);
+ HTMLFontElement (const DOM::Node&);
+
+protected:
+//ig HTMLFontElement (HTMLFontElementImpl*);
+
+public:
+ DOM::DOMString color () const;
+ void setColor (const DOM::DOMString&);
+ DOM::DOMString face () const;
+ void setFace (const DOM::DOMString&);
+ DOM::DOMString size () const;
+ void setSize (const DOM::DOMString&);
+
+}; // class HTMLFontElement
+
+
+class HTMLModElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_inline.h>
+%End
+
+
+public:
+ HTMLModElement ();
+ HTMLModElement (const DOM::HTMLModElement&);
+ HTMLModElement (const DOM::Node&);
+
+protected:
+//ig HTMLModElement (HTMLElementImpl*);
+
+public:
+ DOM::DOMString cite () const;
+ void setCite (const DOM::DOMString&);
+ DOM::DOMString dateTime () const;
+ void setDateTime (const DOM::DOMString&);
+
+}; // class HTMLModElement
+
+
+class HTMLQuoteElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_inline.h>
+%End
+
+
+public:
+ HTMLQuoteElement ();
+ HTMLQuoteElement (const DOM::HTMLQuoteElement&);
+ HTMLQuoteElement (const DOM::Node&);
+
+protected:
+//ig HTMLQuoteElement (HTMLGenericElementImpl*);
+
+public:
+ DOM::DOMString cite () const;
+ void setCite (const DOM::DOMString&);
+
+}; // class HTMLQuoteElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_list.sip b/python/pykde/sip/khtml/html_list.sip
new file mode 100644
index 00000000..224d8d7c
--- /dev/null
+++ b/python/pykde/sip/khtml/html_list.sip
@@ -0,0 +1,169 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLDListElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLDListElement ();
+ HTMLDListElement (const DOM::HTMLDListElement&);
+ HTMLDListElement (const DOM::Node&);
+
+protected:
+//ig HTMLDListElement (HTMLDListElementImpl*);
+
+public:
+ bool compact () const;
+ void setCompact (bool);
+
+}; // class HTMLDListElement
+
+
+class HTMLDirectoryElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLDirectoryElement ();
+ HTMLDirectoryElement (const DOM::HTMLDirectoryElement&);
+ HTMLDirectoryElement (const DOM::Node&);
+
+protected:
+//ig HTMLDirectoryElement (HTMLDirectoryElementImpl*);
+
+public:
+ bool compact () const;
+ void setCompact (bool);
+
+}; // class HTMLDirectoryElement
+
+
+class HTMLLIElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLLIElement ();
+ HTMLLIElement (const DOM::HTMLLIElement&);
+ HTMLLIElement (const DOM::Node&);
+
+protected:
+//ig HTMLLIElement (HTMLLIElementImpl*);
+
+public:
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ long value () const;
+ void setValue (long);
+
+}; // class HTMLLIElement
+
+
+class HTMLMenuElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLMenuElement ();
+ HTMLMenuElement (const DOM::HTMLMenuElement&);
+ HTMLMenuElement (const DOM::Node&);
+
+protected:
+//ig HTMLMenuElement (HTMLMenuElementImpl*);
+
+public:
+ bool compact () const;
+ void setCompact (bool);
+
+}; // class HTMLMenuElement
+
+
+class HTMLOListElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLOListElement ();
+ HTMLOListElement (const DOM::HTMLOListElement&);
+ HTMLOListElement (const DOM::Node&);
+
+protected:
+//ig HTMLOListElement (HTMLOListElementImpl*);
+
+public:
+ bool compact () const;
+ void setCompact (bool);
+ long start () const;
+ void setStart (long);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+
+}; // class HTMLOListElement
+
+
+class HTMLUListElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_list.h>
+%End
+
+
+public:
+ HTMLUListElement ();
+ HTMLUListElement (const DOM::HTMLUListElement&);
+ HTMLUListElement (const DOM::Node&);
+
+protected:
+//ig HTMLUListElement (HTMLUListElementImpl*);
+
+public:
+ bool compact () const;
+ void setCompact (bool);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+
+}; // class HTMLUListElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_misc.sip b/python/pykde/sip/khtml/html_misc.sip
new file mode 100644
index 00000000..10abdddb
--- /dev/null
+++ b/python/pykde/sip/khtml/html_misc.sip
@@ -0,0 +1,97 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLBaseFontElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_misc.h>
+%End
+
+
+public:
+ HTMLBaseFontElement ();
+ HTMLBaseFontElement (const DOM::HTMLBaseFontElement&);
+ HTMLBaseFontElement (const DOM::Node&);
+
+protected:
+//ig HTMLBaseFontElement (HTMLBaseFontElementImpl*);
+
+public:
+ DOM::DOMString color () const;
+ void setColor (const DOM::DOMString&);
+ DOM::DOMString face () const;
+ void setFace (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getSize () const;
+ void setSize (long);
+%End
+
+ DOM::DOMString size () const;
+ void setSize (const DOM::DOMString&);
+
+}; // class HTMLBaseFontElement
+
+
+class HTMLCollection
+{
+%TypeHeaderCode
+#include <html_misc.h>
+%End
+
+
+public:
+ HTMLCollection ();
+ HTMLCollection (const DOM::HTMLCollection&);
+
+protected:
+//ig HTMLCollection (NodeImpl*, int);
+
+public:
+ ulong length () const;
+ DOM::Node item (ulong) const;
+ DOM::Node namedItem (const DOM::DOMString&) const;
+ DOM::Node base () const;
+//ig HTMLCollectionImpl* handle () const;
+ bool isNull () const;
+ DOM::Node firstItem () const;
+ DOM::Node nextItem () const;
+ DOM::Node nextNamedItem (const DOM::DOMString&) const;
+
+protected:
+
+}; // class HTMLCollection
+
+
+//ig class HTMLFormCollection : DOM::HTMLCollection;
+
+
+//ig class HTMLMappedNameCollection : DOM::HTMLCollection;
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_object.sip b/python/pykde/sip/khtml/html_object.sip
new file mode 100644
index 00000000..850cf49b
--- /dev/null
+++ b/python/pykde/sip/khtml/html_object.sip
@@ -0,0 +1,179 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLAppletElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_object.h>
+%End
+
+
+public:
+ HTMLAppletElement ();
+ HTMLAppletElement (const DOM::HTMLAppletElement&);
+ HTMLAppletElement (const DOM::Node&);
+
+protected:
+//ig HTMLAppletElement (HTMLAppletElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString alt () const;
+ void setAlt (const DOM::DOMString&);
+ DOM::DOMString archive () const;
+ void setArchive (const DOM::DOMString&);
+ DOM::DOMString code () const;
+ void setCode (const DOM::DOMString&);
+ DOM::DOMString codeBase () const;
+ void setCodeBase (const DOM::DOMString&);
+ DOM::DOMString height () const;
+ void setHeight (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getHspace () const;
+ void setHspace (long);
+%End
+
+ DOM::DOMString hspace () const;
+ void setHspace (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString object () const;
+ void setObject (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getVspace () const;
+ void setVspace (long);
+%End
+
+ DOM::DOMString vspace () const;
+ void setVspace (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+
+}; // class HTMLAppletElement
+
+
+class HTMLObjectElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_object.h>
+%End
+
+
+public:
+ HTMLObjectElement ();
+ HTMLObjectElement (const DOM::HTMLObjectElement&);
+ HTMLObjectElement (const DOM::Node&);
+
+protected:
+//ig HTMLObjectElement (HTMLObjectElementImpl*);
+
+public:
+ DOM::HTMLFormElement form () const;
+ DOM::DOMString code () const;
+ void setCode (const DOM::DOMString&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString archive () const;
+ void setArchive (const DOM::DOMString&);
+ DOM::DOMString border () const;
+ void setBorder (const DOM::DOMString&);
+ DOM::DOMString codeBase () const;
+ void setCodeBase (const DOM::DOMString&);
+ DOM::DOMString codeType () const;
+ void setCodeType (const DOM::DOMString&);
+ DOM::DOMString data () const;
+ void setData (const DOM::DOMString&);
+ bool declare () const;
+ void setDeclare (bool);
+ DOM::DOMString height () const;
+ void setHeight (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getHspace () const;
+ void setHspace (long);
+%End
+
+ DOM::DOMString hspace () const;
+ void setHspace (const DOM::DOMString&);
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString standby () const;
+ void setStandby (const DOM::DOMString&);
+ long tabIndex () const;
+ void setTabIndex (long);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ DOM::DOMString useMap () const;
+ void setUseMap (const DOM::DOMString&);
+
+%If ( KDE_3_1_0 - )
+ long getVspace () const;
+ void setVspace (long);
+%End
+
+ DOM::DOMString vspace () const;
+ void setVspace (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+ DOM::Document contentDocument () const;
+
+}; // class HTMLObjectElement
+
+
+class HTMLParamElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_object.h>
+%End
+
+
+public:
+ HTMLParamElement ();
+ HTMLParamElement (const DOM::HTMLParamElement&);
+ HTMLParamElement (const DOM::Node&);
+
+protected:
+//ig HTMLParamElement (HTMLParamElementImpl*);
+
+public:
+ DOM::DOMString name () const;
+ void setName (const DOM::DOMString&);
+ DOM::DOMString type () const;
+ void setType (const DOM::DOMString&);
+ DOM::DOMString value () const;
+ void setValue (const DOM::DOMString&);
+ DOM::DOMString valueType () const;
+ void setValueType (const DOM::DOMString&);
+
+}; // class HTMLParamElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/html_table.sip b/python/pykde/sip/khtml/html_table.sip
new file mode 100644
index 00000000..8c765763
--- /dev/null
+++ b/python/pykde/sip/khtml/html_table.sip
@@ -0,0 +1,256 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace DOM
+{
+
+class HTMLTableCaptionElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableCaptionElement ();
+ HTMLTableCaptionElement (const DOM::HTMLTableCaptionElement&);
+ HTMLTableCaptionElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableCaptionElement (HTMLTableCaptionElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+
+}; // class HTMLTableCaptionElement
+
+
+class HTMLTableCellElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableCellElement ();
+ HTMLTableCellElement (const DOM::HTMLTableCellElement&);
+ HTMLTableCellElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableCellElement (HTMLTableCellElementImpl*);
+
+public:
+ long cellIndex () const;
+ void setCellIndex (long);
+ DOM::DOMString abbr () const;
+ void setAbbr (const DOM::DOMString&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString axis () const;
+ void setAxis (const DOM::DOMString&);
+ DOM::DOMString bgColor () const;
+ void setBgColor (const DOM::DOMString&);
+ DOM::DOMString ch () const;
+ void setCh (const DOM::DOMString&);
+ DOM::DOMString chOff () const;
+ void setChOff (const DOM::DOMString&);
+ long colSpan () const;
+ void setColSpan (long);
+ DOM::DOMString headers () const;
+ void setHeaders (const DOM::DOMString&);
+ DOM::DOMString height () const;
+ void setHeight (const DOM::DOMString&);
+ bool noWrap () const;
+ void setNoWrap (bool);
+ long rowSpan () const;
+ void setRowSpan (long);
+ DOM::DOMString scope () const;
+ void setScope (const DOM::DOMString&);
+ DOM::DOMString vAlign () const;
+ void setVAlign (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+
+}; // class HTMLTableCellElement
+
+
+class HTMLTableColElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableColElement ();
+ HTMLTableColElement (const DOM::HTMLTableColElement&);
+ HTMLTableColElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableColElement (HTMLTableColElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString ch () const;
+ void setCh (const DOM::DOMString&);
+ DOM::DOMString chOff () const;
+ void setChOff (const DOM::DOMString&);
+ long span () const;
+ void setSpan (long);
+ DOM::DOMString vAlign () const;
+ void setVAlign (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+
+}; // class HTMLTableColElement
+
+
+class HTMLTableElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableElement ();
+ HTMLTableElement (const DOM::HTMLTableElement&);
+ HTMLTableElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableElement (HTMLTableElementImpl*);
+
+public:
+ DOM::HTMLTableCaptionElement caption () const;
+ void setCaption (const DOM::HTMLTableCaptionElement&);
+ DOM::HTMLTableSectionElement tHead () const;
+ void setTHead (const DOM::HTMLTableSectionElement&);
+ DOM::HTMLTableSectionElement tFoot () const;
+ void setTFoot (const DOM::HTMLTableSectionElement&);
+ DOM::HTMLCollection rows () const;
+ DOM::HTMLCollection tBodies () const;
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString bgColor () const;
+ void setBgColor (const DOM::DOMString&);
+ DOM::DOMString border () const;
+ void setBorder (const DOM::DOMString&);
+ DOM::DOMString cellPadding () const;
+ void setCellPadding (const DOM::DOMString&);
+ DOM::DOMString cellSpacing () const;
+ void setCellSpacing (const DOM::DOMString&);
+ DOM::DOMString frame () const;
+ void setFrame (const DOM::DOMString&);
+ DOM::DOMString rules () const;
+ void setRules (const DOM::DOMString&);
+ DOM::DOMString summary () const;
+ void setSummary (const DOM::DOMString&);
+ DOM::DOMString width () const;
+ void setWidth (const DOM::DOMString&);
+ DOM::HTMLElement createTHead ();
+ void deleteTHead ();
+ DOM::HTMLElement createTFoot ();
+ void deleteTFoot ();
+ DOM::HTMLElement createCaption ();
+ void deleteCaption ();
+ DOM::HTMLElement insertRow (long);
+ void deleteRow (long);
+
+}; // class HTMLTableElement
+
+
+class HTMLTableRowElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableRowElement ();
+ HTMLTableRowElement (const DOM::HTMLTableRowElement&);
+ HTMLTableRowElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableRowElement (HTMLTableRowElementImpl*);
+
+public:
+ long rowIndex () const;
+ void setRowIndex (long);
+ long sectionRowIndex () const;
+ void setSectionRowIndex (long);
+ DOM::HTMLCollection cells () const;
+ void setCells (const DOM::HTMLCollection&);
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString bgColor () const;
+ void setBgColor (const DOM::DOMString&);
+ DOM::DOMString ch () const;
+ void setCh (const DOM::DOMString&);
+ DOM::DOMString chOff () const;
+ void setChOff (const DOM::DOMString&);
+ DOM::DOMString vAlign () const;
+ void setVAlign (const DOM::DOMString&);
+ DOM::HTMLElement insertCell (long);
+ void deleteCell (long);
+
+}; // class HTMLTableRowElement
+
+
+class HTMLTableSectionElement : DOM::HTMLElement
+{
+%TypeHeaderCode
+#include <html_table.h>
+%End
+
+
+public:
+ HTMLTableSectionElement ();
+ HTMLTableSectionElement (const DOM::HTMLTableSectionElement&);
+ HTMLTableSectionElement (const DOM::Node&);
+
+protected:
+//ig HTMLTableSectionElement (HTMLTableSectionElementImpl*);
+
+public:
+ DOM::DOMString align () const;
+ void setAlign (const DOM::DOMString&);
+ DOM::DOMString ch () const;
+ void setCh (const DOM::DOMString&);
+ DOM::DOMString chOff () const;
+ void setChOff (const DOM::DOMString&);
+ DOM::DOMString vAlign () const;
+ void setVAlign (const DOM::DOMString&);
+ DOM::HTMLCollection rows () const;
+ DOM::HTMLElement insertRow (long);
+ void deleteRow (long);
+
+}; // class HTMLTableSectionElement
+
+}; // namespace DOM
+
diff --git a/python/pykde/sip/khtml/khtml_part.sip b/python/pykde/sip/khtml/khtml_part.sip
new file mode 100644
index 00000000..8e22b4f0
--- /dev/null
+++ b/python/pykde/sip/khtml/khtml_part.sip
@@ -0,0 +1,282 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHTMLPart : KParts::ReadOnlyPart
+{
+%TypeHeaderCode
+#include <khtml_part.h>
+%End
+
+
+public:
+
+ enum GUIProfile
+ {
+ DefaultGUI,
+ BrowserViewGUI
+ };
+
+ KHTMLPart (QWidget* = 0, const char* = 0, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ KHTMLPart (KHTMLView*, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ virtual bool openURL (const KURL&);
+ virtual bool closeURL ();
+ virtual void showError (KIO::Job*);
+ DOM::HTMLDocument htmlDocument () const;
+ DOM::Document document () const;
+ DOM::Node activeNode () const;
+ KParts::BrowserExtension* browserExtension () const;
+
+%If ( KDE_3_1_0 - )
+//ig KParts::LiveConnectExtension* liveConnectExtension (const khtml::RenderPart*) const;
+%End
+
+ KHTMLView* view () const;
+ void setJScriptEnabled (bool);
+ bool jScriptEnabled () const;
+
+%If ( KDE_3_2_0 - )
+//ig KJS::Interpreter* jScriptInterpreter ();
+ void setStatusMessagesEnabled (bool);
+ bool statusMessagesEnabled () const;
+%End
+
+ void setMetaRefreshEnabled (bool);
+ bool metaRefreshEnabled () const;
+ QVariant executeScript (const DOM::Node&, const QString&);
+ void setDNDEnabled (bool);
+ bool dndEnabled () const;
+ void setJavaEnabled (bool);
+ bool javaEnabled () const;
+//ig KJavaAppletContext* javaContext ();
+//ig KJavaAppletContext* createJavaContext ();
+ void setPluginsEnabled (bool);
+ bool pluginsEnabled () const;
+ void setAutoloadImages (bool);
+ bool autoloadImages () const;
+ void setOnlyLocalReferences (bool);
+ bool onlyLocalReferences () const;
+
+%If ( KDE_3_2_0 - )
+ bool isCaretMode () const;
+ bool isEditable () const;
+ void setCaretPosition (DOM::Node, long, bool = 0);
+
+ enum CaretDisplayPolicy
+ {
+ CaretVisible,
+ CaretInvisible,
+ CaretBlink
+ };
+
+ KHTMLPart::CaretDisplayPolicy caretDisplayPolicyNonFocused () const;
+ void setCaretDisplayPolicyNonFocused (KHTMLPart::CaretDisplayPolicy);
+%End
+
+ void enableJScript (bool);
+ void enableJava (bool);
+ void enablePlugins (bool);
+ void autoloadImages (bool);
+ void enableMetaRefresh (bool);
+ bool setCharset (const QString&, bool = 0);
+ KURL baseURL () const;
+ QString baseTarget () const;
+ KURL backgroundURL () const;
+ void scheduleRedirection (int, const QString&, bool = 1);
+ virtual void begin (const KURL& = KURL (), int = 0, int = 0);
+ virtual void write (const char*, int = -1);
+ virtual void write (const QString&);
+ virtual void end ();
+ void paint (QPainter*, const QRect&, int = 0, bool* = 0);
+ bool setEncoding (const QString&, bool = 0);
+ QString encoding ();
+ void setUserStyleSheet (const KURL&);
+ void setUserStyleSheet (const QString&);
+
+public:
+ void setStandardFont (const QString&);
+ void setFixedFont (const QString&);
+ bool gotoAnchor (const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool nextAnchor ();
+ bool prevAnchor ();
+%End
+
+ void setURLCursor (const QCursor&);
+ QCursor urlCursor () const;
+
+%If ( KDE_3_3_0 - )
+
+ enum FindOptions
+ {
+ FindLinksOnly,
+ FindNoPopups
+ };
+
+ void findText ();
+ void findText (const QString&, long, QWidget* /Transfer/ = 0, KFindDialog* = 0);
+%End
+
+ void findTextBegin ();
+ bool findTextNext (const QString&, bool, bool, bool);
+
+%If ( KDE_3_3_0 - )
+ bool findTextNext ();
+%End
+
+ void setZoomFactor (int);
+ int zoomFactor () const;
+ virtual QString selectedText () const;
+ DOM::Range selection () const;
+
+%If ( KDE_3_2_0 - )
+ void selection (DOM::Node&, long&, DOM::Node&, long&) const;
+%End
+
+ void setSelection (const DOM::Range&);
+ bool hasSelection () const;
+ void selectAll ();
+ void show ();
+ void hide ();
+ KParts::PartManager* partManager ();
+ virtual void saveState (QDataStream&);
+ virtual void restoreState (QDataStream&);
+ DOM::Node nodeUnderMouse () const;
+ const KHTMLSettings* settings () const;
+ KHTMLPart* parentPart ();
+ QStringList frameNames () const;
+ QPtrList<KParts::ReadOnlyPart> frames () const;
+ KHTMLPart* findFrame (const QString&);
+ KParts::ReadOnlyPart* currentFrame () const;
+ bool frameExists (const QString&);
+ void setJSStatusBarText (const QString&);
+ void setJSDefaultStatusBarText (const QString&);
+ QString jsStatusBarText () const;
+ QString jsDefaultStatusBarText () const;
+ QString referrer () const;
+
+%If ( KDE_3_1_3 - )
+ QString pageReferrer () const;
+%End
+
+ QString lastModified () const;
+ void preloadStyleSheet (const QString&, const QString&);
+ void preloadScript (const QString&, const QString&);
+ bool restored () const;
+
+%If ( KDE_3_2_0 - )
+
+ enum FormNotification
+ {
+ NoNotification = 0,
+ Before,
+ Only,
+ Unused = 255
+ };
+
+ void setFormNotification (KHTMLPart::FormNotification);
+ KHTMLPart::FormNotification formNotification () const;
+ KURL toplevelURL ();
+
+%If ( KDE_3_3_0 - )
+ bool isModified () const;
+%End
+
+%End
+
+
+signals:
+ void onURL (const QString&);
+ void popupMenu (const QString&, const QPoint&);
+ void selectionChanged ();
+ void nodeActivated (const DOM::Node&);
+
+%If ( KDE_3_1_0 - )
+ void docCreated ();
+
+%If ( KDE_3_2_0 - )
+ void caretPositionChanged (const DOM::Node&, long);
+ void formSubmitNotification (const char*, const QString&, const QByteArray&, const QString&, const QString&, const QString&);
+%End
+
+%End
+
+
+protected:
+ KURL completeURL (const QString&);
+ void htmlError (int, const QString&, const KURL&);
+ virtual void customEvent (QCustomEvent*);
+//ig virtual void khtmlMousePressEvent (khtml::MousePressEvent*);
+//ig virtual void khtmlMouseDoubleClickEvent (khtml::MouseDoubleClickEvent*);
+//ig virtual void khtmlMouseMoveEvent (khtml::MouseMoveEvent*);
+//ig virtual void khtmlMouseReleaseEvent (khtml::MouseReleaseEvent*);
+//ig virtual void khtmlDrawContentsEvent (khtml::DrawContentsEvent*);
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+ virtual bool openFile ();
+ virtual void urlSelected (const QString&, int, int, const QString&, KParts::URLArgs = KParts ::URLArgs ());
+ virtual KParts::ReadOnlyPart* createPart (QWidget*, const char*, QObject* /Transfer/, const char*, const QString&, QString&, QStringList&, const QStringList&);
+
+%If ( KDE_3_1_0 - )
+ bool pluginPageQuestionAsked (const QString&) const;
+ void setPluginPageQuestionAsked (const QString&);
+
+%If ( KDE_3_2_0 - )
+//ig void setPageSecurity (KHTMLPart::PageSecurity);
+ virtual bool doOpenStream (const QString&);
+ virtual bool doWriteStream (const QByteArray&);
+ virtual bool doCloseStream ();
+%End
+
+%End
+
+
+public slots:
+ void setActiveNode (const DOM::Node&);
+ void stopAnimations ();
+ QCString dcopObjectId () const;
+
+%If ( KDE_3_2_0 - )
+ QVariant executeScript (const QString&);
+ void setCaretMode (bool);
+ void setEditable (bool);
+ void setCaretVisible (bool);
+ void submitFormProxy (const char*, const QString&, const QByteArray&, const QString&, const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+public:
+
+%If ( - KDE_3_2_0 )
+ QVariant executeScript (const QString&);
+%End
+
+//force
+
+private:
+ void setStatusBarText (const QString&, int);
+//end
+
+}; // class KHTMLPart
+
diff --git a/python/pykde/sip/khtml/khtml_part.sip.323 b/python/pykde/sip/khtml/khtml_part.sip.323
new file mode 100644
index 00000000..3423dfb9
--- /dev/null
+++ b/python/pykde/sip/khtml/khtml_part.sip.323
@@ -0,0 +1,272 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHTMLPart : KParts::ReadOnlyPart
+{
+%TypeHeaderCode
+#include <khtml_part.h>
+%End
+
+
+public:
+
+ enum GUIProfile
+ {
+ DefaultGUI,
+ BrowserViewGUI
+ };
+
+ KHTMLPart (QWidget* = 0, const char* = 0, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ KHTMLPart (KHTMLView*, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ virtual bool openURL (const KURL&);
+ virtual bool closeURL ();
+ virtual void showError (KIO::Job*);
+ DOM::HTMLDocument htmlDocument () const;
+ DOM::Document document () const;
+ DOM::Node activeNode () const;
+ KParts::BrowserExtension* browserExtension () const;
+
+%If ( KDE_3_1_0 - )
+//ig KParts::LiveConnectExtension* liveConnectExtension (const khtml::RenderPart*) const;
+%End
+
+ KHTMLView* view () const;
+ void setJScriptEnabled (bool);
+ bool jScriptEnabled () const;
+
+%If ( KDE_3_2_0 - )
+//ig KJS::Interpreter* jScriptInterpreter ();
+ void setStatusMessagesEnabled (bool);
+ bool statusMessagesEnabled () const;
+%End
+
+ void setMetaRefreshEnabled (bool);
+ bool metaRefreshEnabled () const;
+ QVariant executeScript (const DOM::Node&, const QString&);
+ void setDNDEnabled (bool);
+ bool dndEnabled () const;
+ void setJavaEnabled (bool);
+ bool javaEnabled () const;
+//ig KJavaAppletContext* javaContext ();
+//ig KJavaAppletContext* createJavaContext ();
+ void setPluginsEnabled (bool);
+ bool pluginsEnabled () const;
+ void setAutoloadImages (bool);
+ bool autoloadImages () const;
+ void setOnlyLocalReferences (bool);
+ bool onlyLocalReferences () const;
+
+%If ( KDE_3_2_0 - )
+ bool isCaretMode () const;
+ bool isEditable () const;
+ void setCaretPosition (DOM::Node, long, bool = 0);
+
+ enum CaretDisplayPolicy
+ {
+ CaretVisible,
+ CaretInvisible,
+ CaretBlink
+ };
+
+ KHTMLPart::CaretDisplayPolicy caretDisplayPolicyNonFocused () const;
+ void setCaretDisplayPolicyNonFocused (KHTMLPart::CaretDisplayPolicy);
+%End
+
+ void enableJScript (bool);
+ void enableJava (bool);
+ void enablePlugins (bool);
+ void autoloadImages (bool);
+ void enableMetaRefresh (bool);
+ bool setCharset (const QString&, bool = 0);
+ KURL baseURL () const;
+ QString baseTarget () const;
+ KURL backgroundURL () const;
+ void scheduleRedirection (int, const QString&, bool = 1);
+ virtual void begin (const KURL& = KURL (), int = 0, int = 0);
+ virtual void write (const char*, int = -1);
+ virtual void write (const QString&);
+ virtual void end ();
+ void paint (QPainter*, const QRect&, int = 0, bool* = 0);
+ bool setEncoding (const QString&, bool = 0);
+ QString encoding ();
+ void setUserStyleSheet (const KURL&);
+ void setUserStyleSheet (const QString&);
+
+public:
+ void setStandardFont (const QString&);
+ void setFixedFont (const QString&);
+ bool gotoAnchor (const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool nextAnchor ();
+ bool prevAnchor ();
+%End
+
+ void setURLCursor (const QCursor&);
+ QCursor urlCursor () const;
+
+
+ void findTextBegin ();
+ bool findTextNext (const QString&, bool, bool, bool);
+
+%If ( KDE_3_3_0 - )
+ void findText ();
+ bool findTextNext ();
+%End
+
+ void setZoomFactor (int);
+ int zoomFactor () const;
+ virtual QString selectedText () const;
+ DOM::Range selection () const;
+
+%If ( KDE_3_2_0 - )
+ void selection (DOM::Node&, long&, DOM::Node&, long&) const;
+%End
+
+ void setSelection (const DOM::Range&);
+ bool hasSelection () const;
+ void selectAll ();
+ void show ();
+ void hide ();
+ KParts::PartManager* partManager ();
+ virtual void saveState (QDataStream&);
+ virtual void restoreState (QDataStream&);
+ DOM::Node nodeUnderMouse () const;
+ const KHTMLSettings* settings () const;
+ KHTMLPart* parentPart ();
+ QStringList frameNames () const;
+ QPtrList<KParts::ReadOnlyPart> frames () const;
+ KHTMLPart* findFrame (const QString&);
+ KParts::ReadOnlyPart* currentFrame () const;
+ bool frameExists (const QString&);
+ void setJSStatusBarText (const QString&);
+ void setJSDefaultStatusBarText (const QString&);
+ QString jsStatusBarText () const;
+ QString jsDefaultStatusBarText () const;
+ QString referrer () const;
+
+%If ( KDE_3_1_3 - )
+ QString pageReferrer () const;
+%End
+
+ QString lastModified () const;
+ void preloadStyleSheet (const QString&, const QString&);
+ void preloadScript (const QString&, const QString&);
+ bool restored () const;
+
+%If ( KDE_3_2_0 - )
+
+ enum FormNotification
+ {
+ NoNotification = 0,
+ Before,
+ Only,
+ Unused = 255
+ };
+
+ void setFormNotification (KHTMLPart::FormNotification);
+ KHTMLPart::FormNotification formNotification () const;
+ KURL toplevelURL ();
+
+%If ( KDE_3_3_0 - )
+ bool isModified () const;
+%End
+
+%End
+
+
+signals:
+ void onURL (const QString&);
+ void popupMenu (const QString&, const QPoint&);
+ void selectionChanged ();
+ void nodeActivated (const DOM::Node&);
+
+%If ( KDE_3_1_0 - )
+ void docCreated ();
+
+%If ( KDE_3_2_0 - )
+ void caretPositionChanged (const DOM::Node&, long);
+ void formSubmitNotification (const char*, const QString&, const QByteArray&, const QString&, const QString&, const QString&);
+%End
+
+%End
+
+
+protected:
+ KURL completeURL (const QString&);
+ void htmlError (int, const QString&, const KURL&);
+ virtual void customEvent (QCustomEvent*);
+//ig virtual void khtmlMousePressEvent (khtml::MousePressEvent*);
+//ig virtual void khtmlMouseDoubleClickEvent (khtml::MouseDoubleClickEvent*);
+//ig virtual void khtmlMouseMoveEvent (khtml::MouseMoveEvent*);
+//ig virtual void khtmlMouseReleaseEvent (khtml::MouseReleaseEvent*);
+//ig virtual void khtmlDrawContentsEvent (khtml::DrawContentsEvent*);
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+ virtual bool openFile ();
+ virtual void urlSelected (const QString&, int, int, const QString&, KParts::URLArgs = KParts ::URLArgs ());
+ virtual KParts::ReadOnlyPart* createPart (QWidget*, const char*, QObject* /Transfer/, const char*, const QString&, QString&, QStringList&, const QStringList&);
+
+%If ( KDE_3_1_0 - )
+ bool pluginPageQuestionAsked (const QString&) const;
+ void setPluginPageQuestionAsked (const QString&);
+
+%If ( KDE_3_2_0 - )
+//ig void setPageSecurity (KHTMLPart::PageSecurity);
+ virtual bool doOpenStream (const QString&);
+ virtual bool doWriteStream (const QByteArray&);
+ virtual bool doCloseStream ();
+%End
+
+%End
+
+
+public slots:
+ void setActiveNode (const DOM::Node&);
+ void stopAnimations ();
+ QCString dcopObjectId () const;
+
+%If ( KDE_3_2_0 - )
+ QVariant executeScript (const QString&);
+ void setCaretMode (bool);
+ void setEditable (bool);
+ void setCaretVisible (bool);
+ void submitFormProxy (const char*, const QString&, const QByteArray&, const QString&, const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+public:
+
+%If ( - KDE_3_2_0 )
+ QVariant executeScript (const QString&);
+%End
+
+//force
+
+private:
+ void setStatusBarText (const QString&, int);
+//end
+
+}; // class KHTMLPart
+
diff --git a/python/pykde/sip/khtml/khtml_part.sip.330 b/python/pykde/sip/khtml/khtml_part.sip.330
new file mode 100644
index 00000000..8e22b4f0
--- /dev/null
+++ b/python/pykde/sip/khtml/khtml_part.sip.330
@@ -0,0 +1,282 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHTMLPart : KParts::ReadOnlyPart
+{
+%TypeHeaderCode
+#include <khtml_part.h>
+%End
+
+
+public:
+
+ enum GUIProfile
+ {
+ DefaultGUI,
+ BrowserViewGUI
+ };
+
+ KHTMLPart (QWidget* = 0, const char* = 0, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ KHTMLPart (KHTMLView*, QObject* /TransferThis/ = 0, const char* = 0, KHTMLPart::GUIProfile = DefaultGUI );
+ virtual bool openURL (const KURL&);
+ virtual bool closeURL ();
+ virtual void showError (KIO::Job*);
+ DOM::HTMLDocument htmlDocument () const;
+ DOM::Document document () const;
+ DOM::Node activeNode () const;
+ KParts::BrowserExtension* browserExtension () const;
+
+%If ( KDE_3_1_0 - )
+//ig KParts::LiveConnectExtension* liveConnectExtension (const khtml::RenderPart*) const;
+%End
+
+ KHTMLView* view () const;
+ void setJScriptEnabled (bool);
+ bool jScriptEnabled () const;
+
+%If ( KDE_3_2_0 - )
+//ig KJS::Interpreter* jScriptInterpreter ();
+ void setStatusMessagesEnabled (bool);
+ bool statusMessagesEnabled () const;
+%End
+
+ void setMetaRefreshEnabled (bool);
+ bool metaRefreshEnabled () const;
+ QVariant executeScript (const DOM::Node&, const QString&);
+ void setDNDEnabled (bool);
+ bool dndEnabled () const;
+ void setJavaEnabled (bool);
+ bool javaEnabled () const;
+//ig KJavaAppletContext* javaContext ();
+//ig KJavaAppletContext* createJavaContext ();
+ void setPluginsEnabled (bool);
+ bool pluginsEnabled () const;
+ void setAutoloadImages (bool);
+ bool autoloadImages () const;
+ void setOnlyLocalReferences (bool);
+ bool onlyLocalReferences () const;
+
+%If ( KDE_3_2_0 - )
+ bool isCaretMode () const;
+ bool isEditable () const;
+ void setCaretPosition (DOM::Node, long, bool = 0);
+
+ enum CaretDisplayPolicy
+ {
+ CaretVisible,
+ CaretInvisible,
+ CaretBlink
+ };
+
+ KHTMLPart::CaretDisplayPolicy caretDisplayPolicyNonFocused () const;
+ void setCaretDisplayPolicyNonFocused (KHTMLPart::CaretDisplayPolicy);
+%End
+
+ void enableJScript (bool);
+ void enableJava (bool);
+ void enablePlugins (bool);
+ void autoloadImages (bool);
+ void enableMetaRefresh (bool);
+ bool setCharset (const QString&, bool = 0);
+ KURL baseURL () const;
+ QString baseTarget () const;
+ KURL backgroundURL () const;
+ void scheduleRedirection (int, const QString&, bool = 1);
+ virtual void begin (const KURL& = KURL (), int = 0, int = 0);
+ virtual void write (const char*, int = -1);
+ virtual void write (const QString&);
+ virtual void end ();
+ void paint (QPainter*, const QRect&, int = 0, bool* = 0);
+ bool setEncoding (const QString&, bool = 0);
+ QString encoding ();
+ void setUserStyleSheet (const KURL&);
+ void setUserStyleSheet (const QString&);
+
+public:
+ void setStandardFont (const QString&);
+ void setFixedFont (const QString&);
+ bool gotoAnchor (const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool nextAnchor ();
+ bool prevAnchor ();
+%End
+
+ void setURLCursor (const QCursor&);
+ QCursor urlCursor () const;
+
+%If ( KDE_3_3_0 - )
+
+ enum FindOptions
+ {
+ FindLinksOnly,
+ FindNoPopups
+ };
+
+ void findText ();
+ void findText (const QString&, long, QWidget* /Transfer/ = 0, KFindDialog* = 0);
+%End
+
+ void findTextBegin ();
+ bool findTextNext (const QString&, bool, bool, bool);
+
+%If ( KDE_3_3_0 - )
+ bool findTextNext ();
+%End
+
+ void setZoomFactor (int);
+ int zoomFactor () const;
+ virtual QString selectedText () const;
+ DOM::Range selection () const;
+
+%If ( KDE_3_2_0 - )
+ void selection (DOM::Node&, long&, DOM::Node&, long&) const;
+%End
+
+ void setSelection (const DOM::Range&);
+ bool hasSelection () const;
+ void selectAll ();
+ void show ();
+ void hide ();
+ KParts::PartManager* partManager ();
+ virtual void saveState (QDataStream&);
+ virtual void restoreState (QDataStream&);
+ DOM::Node nodeUnderMouse () const;
+ const KHTMLSettings* settings () const;
+ KHTMLPart* parentPart ();
+ QStringList frameNames () const;
+ QPtrList<KParts::ReadOnlyPart> frames () const;
+ KHTMLPart* findFrame (const QString&);
+ KParts::ReadOnlyPart* currentFrame () const;
+ bool frameExists (const QString&);
+ void setJSStatusBarText (const QString&);
+ void setJSDefaultStatusBarText (const QString&);
+ QString jsStatusBarText () const;
+ QString jsDefaultStatusBarText () const;
+ QString referrer () const;
+
+%If ( KDE_3_1_3 - )
+ QString pageReferrer () const;
+%End
+
+ QString lastModified () const;
+ void preloadStyleSheet (const QString&, const QString&);
+ void preloadScript (const QString&, const QString&);
+ bool restored () const;
+
+%If ( KDE_3_2_0 - )
+
+ enum FormNotification
+ {
+ NoNotification = 0,
+ Before,
+ Only,
+ Unused = 255
+ };
+
+ void setFormNotification (KHTMLPart::FormNotification);
+ KHTMLPart::FormNotification formNotification () const;
+ KURL toplevelURL ();
+
+%If ( KDE_3_3_0 - )
+ bool isModified () const;
+%End
+
+%End
+
+
+signals:
+ void onURL (const QString&);
+ void popupMenu (const QString&, const QPoint&);
+ void selectionChanged ();
+ void nodeActivated (const DOM::Node&);
+
+%If ( KDE_3_1_0 - )
+ void docCreated ();
+
+%If ( KDE_3_2_0 - )
+ void caretPositionChanged (const DOM::Node&, long);
+ void formSubmitNotification (const char*, const QString&, const QByteArray&, const QString&, const QString&, const QString&);
+%End
+
+%End
+
+
+protected:
+ KURL completeURL (const QString&);
+ void htmlError (int, const QString&, const KURL&);
+ virtual void customEvent (QCustomEvent*);
+//ig virtual void khtmlMousePressEvent (khtml::MousePressEvent*);
+//ig virtual void khtmlMouseDoubleClickEvent (khtml::MouseDoubleClickEvent*);
+//ig virtual void khtmlMouseMoveEvent (khtml::MouseMoveEvent*);
+//ig virtual void khtmlMouseReleaseEvent (khtml::MouseReleaseEvent*);
+//ig virtual void khtmlDrawContentsEvent (khtml::DrawContentsEvent*);
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+ virtual bool openFile ();
+ virtual void urlSelected (const QString&, int, int, const QString&, KParts::URLArgs = KParts ::URLArgs ());
+ virtual KParts::ReadOnlyPart* createPart (QWidget*, const char*, QObject* /Transfer/, const char*, const QString&, QString&, QStringList&, const QStringList&);
+
+%If ( KDE_3_1_0 - )
+ bool pluginPageQuestionAsked (const QString&) const;
+ void setPluginPageQuestionAsked (const QString&);
+
+%If ( KDE_3_2_0 - )
+//ig void setPageSecurity (KHTMLPart::PageSecurity);
+ virtual bool doOpenStream (const QString&);
+ virtual bool doWriteStream (const QByteArray&);
+ virtual bool doCloseStream ();
+%End
+
+%End
+
+
+public slots:
+ void setActiveNode (const DOM::Node&);
+ void stopAnimations ();
+ QCString dcopObjectId () const;
+
+%If ( KDE_3_2_0 - )
+ QVariant executeScript (const QString&);
+ void setCaretMode (bool);
+ void setEditable (bool);
+ void setCaretVisible (bool);
+ void submitFormProxy (const char*, const QString&, const QByteArray&, const QString&, const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+public:
+
+%If ( - KDE_3_2_0 )
+ QVariant executeScript (const QString&);
+%End
+
+//force
+
+private:
+ void setStatusBarText (const QString&, int);
+//end
+
+}; // class KHTMLPart
+
diff --git a/python/pykde/sip/khtml/khtml_settings.sip b/python/pykde/sip/khtml/khtml_settings.sip
new file mode 100644
index 00000000..84889b47
--- /dev/null
+++ b/python/pykde/sip/khtml/khtml_settings.sip
@@ -0,0 +1,293 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KHTMLSettings
+{
+%TypeHeaderCode
+#include <khtml_settings.h>
+%End
+
+
+public:
+
+ enum KJavaScriptAdvice
+ {
+ KJavaScriptDunno,
+ KJavaScriptAccept,
+ KJavaScriptReject
+ };
+
+
+ enum KAnimationAdvice
+ {
+ KAnimationDisabled,
+ KAnimationLoopOnce,
+ KAnimationEnabled
+ };
+
+
+%If ( KDE_3_2_0 - )
+
+ enum KJSWindowOpenPolicy
+ {
+ KJSWindowOpenAllow,
+ KJSWindowOpenAsk,
+ KJSWindowOpenDeny,
+ KJSWindowOpenSmart
+ };
+
+
+ enum KJSWindowStatusPolicy
+ {
+ KJSWindowStatusAllow,
+ KJSWindowStatusIgnore
+ };
+
+
+ enum KJSWindowMovePolicy
+ {
+ KJSWindowMoveAllow,
+ KJSWindowMoveIgnore
+ };
+
+
+ enum KJSWindowResizePolicy
+ {
+ KJSWindowResizeAllow,
+ KJSWindowResizeIgnore
+ };
+
+
+ enum KJSWindowFocusPolicy
+ {
+ KJSWindowFocusAllow,
+ KJSWindowFocusIgnore
+ };
+
+%End
+
+ KHTMLSettings ();
+ KHTMLSettings (const KHTMLSettings&);
+ void init ();
+ void init (KConfig*, bool = 1);
+ bool changeCursor ();
+ bool underlineLink ();
+ bool hoverLink ();
+
+%If ( KDE_3_4_0 - )
+ bool allowTabulation () const;
+ bool autoSpellCheck () const;
+%End
+
+ KHTMLSettings::KAnimationAdvice showAnimations () const;
+ QString stdFontName () const;
+ QString fixedFontName () const;
+ QString serifFontName () const;
+ QString sansSerifFontName () const;
+ QString cursiveFontName () const;
+ QString fantasyFontName () const;
+ void setStdFontName (const QString&);
+ void setFixedFontName (const QString&);
+ int minFontSize () const;
+ int mediumFontSize () const;
+
+%If ( KDE_3_2_0 - )
+ bool jsErrorsEnabled () const;
+ void setJSErrorsEnabled (bool);
+%End
+
+ const QString& encoding () const;
+
+%If ( KDE_3_4_0 - )
+ bool followSystemColors () const;
+%End
+
+ const QColor& textColor ();
+
+%If ( KDE_3_4_0 - )
+ const QColor& baseColor () const;
+%End
+
+ const QColor& linkColor ();
+ const QColor& vLinkColor ();
+ bool autoLoadImages ();
+
+%If ( KDE_3_4_0 - )
+ bool unfinishedImageFrame () const;
+%End
+
+
+%If ( KDE_3_3_0 - )
+ bool isOpenMiddleClickEnabled ();
+%End
+
+
+%If ( KDE_3_1_0 - )
+ bool isBackRightClickEnabled ();
+%End
+
+ bool isJavaEnabled (const QString& = QString ::null );
+ bool isJavaScriptEnabled (const QString& = QString ::null );
+ bool isJavaScriptDebugEnabled (const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ bool isJavaScriptErrorReportingEnabled (const QString& = QString ::null ) const;
+%End
+
+ bool isPluginsEnabled (const QString& = QString ::null );
+
+%If ( KDE_3_5_0 - )
+ bool isAdFiltered (const QString&) const;
+ bool isAdFilterEnabled () const;
+ bool isHideAdsEnabled () const;
+ void addAdFilter (const QString&);
+ bool accessKeysEnabled () const;
+%End
+
+
+%If ( KDE_3_2_0 - )
+ KHTMLSettings::KJSWindowOpenPolicy windowOpenPolicy (const QString& = QString ::null ) const;
+ KHTMLSettings::KJSWindowMovePolicy windowMovePolicy (const QString& = QString ::null ) const;
+ KHTMLSettings::KJSWindowResizePolicy windowResizePolicy (const QString& = QString ::null ) const;
+ KHTMLSettings::KJSWindowStatusPolicy windowStatusPolicy (const QString& = QString ::null ) const;
+ KHTMLSettings::KJSWindowFocusPolicy windowFocusPolicy (const QString& = QString ::null ) const;
+%End
+
+ static KJavaScriptAdvice strToAdvice (const QString&);
+//ig static void splitDomainAdvice (const QString&, QString&, KHTMLSettings::KJavaScriptAdvice&, KHTMLSettings::KJavaScriptAdvice&);
+ static const char* adviceToStr (KHTMLSettings::KJavaScriptAdvice);
+
+%If ( KDE_3_2_0 - )
+//ig void readDomainSettings (KConfig*, bool, bool, KPerDomainSettings&);
+%End
+
+ QString settingsToCSS () const;
+ static const QString& availableFamilies ();
+ QString userStyleSheet () const;
+ bool isFormCompletionEnabled () const;
+ int maxFormCompletionItems () const;
+
+%If ( KDE_3_1_1 - )
+ bool isAutoDelayedActionsEnabled () const;
+
+%If ( KDE_3_5_0 - )
+ QValueList<QPair<QString,QChar>> fallbackAccessKeysAssignments () const;
+ void setJSPopupBlockerPassivePopup (bool);
+ bool jsPopupBlockerPassivePopup () const;
+%End
+
+%End
+
+
+}; // class KHTMLSettings
+
+
+
+%If (KDE_3_5_0 - )
+%MappedType QValueList<QPair<QString,QChar>>
+//converts a Python list of tuples (QString,QChar)
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <qstring.h>
+#include <khtml_settings.h>
+#include <sipqtQString.h>
+#include <sipqtQChar.h>
+#include <sipkhtmlKHTMLSettings.h>
+typedef QPair<QString,QChar> AssignPair;
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<AssignPair> *cpplist = (QValueList<AssignPair> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<AssignPair>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ QString s = (*it).first;
+ QChar c = (*it).second;
+ PyObject *pys = sipBuildResult (NULL, "N", new QString (s), sipClass_QString);
+ PyObject *pyc = sipBuildResult (NULL, "N", new QChar (c), sipClass_QChar);
+ if ((pys == NULL) || ((inst = Py_BuildValue ("NN", pys, pyc)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_XDECREF (inst);
+ Py_XDECREF (pys);
+ Py_XDECREF (pyc);
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<AssignPair> *cpplist = new QValueList<AssignPair>;
+
+ QString p1;
+ QChar p2;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ PyObject *elem = PyList_GET_ITEM (sipPy, i);
+ PyObject *pyp1 = PyTuple_GET_ITEM (elem, 0);
+ PyObject *pyp2 = PyTuple_GET_ITEM (elem, 1);
+ p1 = *(QString *)sipForceConvertTo_QString (pyp1, &iserr);
+ p2 = *(QChar *)sipForceConvertTo_QChar (pyp2, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (AssignPair (p1, p2));
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/khtml/khtmlmod.sip.in b/python/pykde/sip/khtml/khtmlmod.sip.in
new file mode 100644
index 00000000..2311d7c8
--- /dev/null
+++ b/python/pykde/sip/khtml/khtmlmod.sip.in
@@ -0,0 +1,71 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module khtml
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+%Import kutilsmod.sip
+%Import kpartsmod.sip
+
+%Include css_rule.sip
+%Include css_stylesheet.sip
+%Include css_value.sip
+%Include dom2_events.sip
+%Include dom2_range.sip
+%Include dom2_traversal.sip
+%Include dom2_views.sip
+%Include dom_doc.sip
+%Include dom_element.sip
+%Include dom_exception.sip
+%Include dom_misc.sip
+%Include dom_node.sip
+%Include dom_string.sip
+%Include dom_text.sip
+%Include dom_xml.sip
+%Include html_base.sip
+%Include html_block.sip
+%Include html_document.sip
+%Include html_element.sip
+%Include html_form.sip
+%Include html_head.sip
+%Include html_image.sip
+%Include html_inline.sip
+%Include html_list.sip
+%Include html_misc.sip
+%Include html_object.sip
+%Include html_table.sip
+%Include khtml_part.sip
+%Include khtml_settings.sip
+%Include khtmlview.sip
+@mark@
diff --git a/python/pykde/sip/khtml/khtmlview.sip b/python/pykde/sip/khtml/khtmlview.sip
new file mode 100644
index 00000000..bc1d5716
--- /dev/null
+++ b/python/pykde/sip/khtml/khtmlview.sip
@@ -0,0 +1,144 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module khtml version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+//ig namespace khtml;
+
+
+class KHTMLView : QScrollView
+{
+%TypeHeaderCode
+#include <khtmlview.h>
+%End
+
+
+public:
+ KHTMLView (KHTMLPart*, QWidget* /TransferThis/, const char* = 0);
+ KHTMLPart* part () const;
+ int frameWidth () const;
+ void setMarginWidth (int);
+ int marginWidth () const;
+ void setMarginHeight (int);
+ int marginHeight ();
+ virtual void setVScrollBarMode (ScrollBarMode);
+ virtual void setHScrollBarMode (ScrollBarMode);
+ void print () /PyName=print_/;
+
+%If ( KDE_3_2_0 - )
+ void print (bool);
+%End
+
+ void layout ();
+
+%If ( KDE_3_3_0 - )
+ void displayAccessKeys ();
+%End
+
+
+signals:
+
+%If ( KDE_3_3_0 - )
+ void finishedLayout ();
+%End
+
+ void cleared ();
+
+%If ( KDE_3_1_0 - )
+ void zoomView (int);
+
+%If ( KDE_3_3_0 - )
+ void hideAccessKeys ();
+ void repaintAccessKeys ();
+
+%If ( KDE_3_5_0 - )
+ void findAheadActive (bool);
+%End
+
+%End
+
+%End
+
+
+protected:
+ void clear ();
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void showEvent (QShowEvent*);
+ virtual void hideEvent (QHideEvent*);
+ virtual bool focusNextPrevChild (bool);
+ virtual void drawContents (QPainter*, int, int, int, int);
+ virtual void drawContents (QPainter*);
+ virtual void viewportMousePressEvent (QMouseEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual void focusInEvent (QFocusEvent*);
+%End
+
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void viewportMouseDoubleClickEvent (QMouseEvent*);
+ virtual void viewportMouseMoveEvent (QMouseEvent*);
+ virtual void viewportMouseReleaseEvent (QMouseEvent*);
+
+%If ( KDE_3_1_0 - )
+ virtual void viewportResizeEvent (QResizeEvent*);
+%End
+
+ virtual void viewportWheelEvent (QWheelEvent*);
+ virtual void dragEnterEvent (QDragEnterEvent*);
+ virtual void dropEvent (QDropEvent*);
+
+%If ( KDE_3_1_0 - )
+ virtual void closeEvent (QCloseEvent*);
+
+%If ( KDE_3_2_0 - )
+ virtual bool eventFilter (QObject*, QEvent*);
+%End
+
+%End
+
+ void keyPressEvent (QKeyEvent*);
+ void keyReleaseEvent (QKeyEvent*);
+ void contentsContextMenuEvent (QContextMenuEvent*);
+ void doAutoScroll ();
+ void timerEvent (QTimerEvent*);
+
+protected slots:
+ void slotPaletteChanged ();
+ void slotScrollBarMoved ();
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KHTMLView, &sipClass_KHTMLView},
+ {sipName_KHTMLPart, &sipClass_KHTMLPart},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class KHTMLView
+
diff --git a/python/pykde/sip/kio/authinfo.sip b/python/pykde/sip/kio/authinfo.sip
new file mode 100644
index 00000000..64fc9749
--- /dev/null
+++ b/python/pykde/sip/kio/authinfo.sip
@@ -0,0 +1,206 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class AuthInfo
+{
+%TypeHeaderCode
+#include <authinfo.h>
+%End
+
+
+public:
+ AuthInfo ();
+ AuthInfo (const KIO::AuthInfo&);
+ bool isModified () const;
+ void setModified (bool);
+ KURL url;
+ QString username;
+ QString password;
+ QString prompt;
+ QString caption;
+ QString comment;
+ QString commentLabel;
+ QString realmValue;
+ QString digestInfo;
+ bool verifyPath;
+ bool readOnly;
+ bool keepPassword;
+
+protected:
+
+}; // class AuthInfo
+
+
+%If ( KDE_3_1_4 - )
+//igx QDataStream& operator << (QDataStream&, const KIO::AuthInfo&);
+//igx QDataStream& operator >> (QDataStream&, KIO::AuthInfo&);
+%End
+
+
+class NetRC
+{
+%TypeHeaderCode
+#include <authinfo.h>
+%End
+
+
+public:
+
+ enum LookUpMode
+ {
+ exactOnly,
+ defaultOnly,
+ presetOnly
+ };
+
+
+ class AutoLogin
+ {
+
+ public:
+ QString type;
+ QString machine;
+ QString login;
+ QString password;
+ KStringListMap macdef;
+
+ }; // class AutoLogin
+
+
+public:
+ static KIO::NetRC* self ();
+ bool lookup (const KURL&, KIO::NetRC::AutoLogin&, bool = 0, QString = QString ::null , int = 6);
+ void reload ();
+
+protected:
+//ig QString extract (const char*, const char*, int&);
+ int openf (const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool parse (int);
+%End
+
+
+private:
+ NetRC ();
+ ~NetRC ();
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ void parse (int);
+%End
+
+
+}; // class NetRC
+
+}; // namespace KIO
+
+
+
+%MappedType KStringListMap
+{
+//converts a Python dict of QString:QStringList
+%TypeHeaderCode
+#include <sipqtQString.h>
+#include <sipqtQStringList.h>
+#include <qmap.h>
+typedef QMap<QString, QStringList> KStringListMap;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict.
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString, QStringList> map = *sipCpp;
+ QMap<QString, QStringList>::ConstIterator it;
+
+ for (it = map.begin (); it != map.end (); ++it)
+ {
+ PyObject *sKey = PyString_FromString ((const char *)((QString)it.key ()));
+ PyObject *sData = sipConvertFromInstance ((void *)&it.data (), sipClass_QStringList, sipTransferObj);
+
+ if ((sKey == NULL) || (sData == NULL) || (PyDict_SetItem (dict, sKey, sData) < 0))
+ {
+ Py_XDECREF (sKey);
+ Py_XDECREF (sData);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QMap<QString, QStringList> *map = new QMap<QString, QStringList>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QString *sKey;
+ QStringList *sData;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ sKey = (QString *)sipForceConvertTo_QString (key, &iserr);
+ sData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete map;
+ return 0;
+ }
+
+ map->insert (*sKey, *sData);
+ }
+
+ *sipCppPtr = map;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/chmodjob.sip b/python/pykde/sip/kio/chmodjob.sip
new file mode 100644
index 00000000..3b618b4a
--- /dev/null
+++ b/python/pykde/sip/kio/chmodjob.sip
@@ -0,0 +1,64 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class ChmodJob : KIO::Job
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+namespace KIO
+{
+class ChmodInfo
+{
+public:
+ KURL url;
+ int permissions;
+};
+};
+#include <chmodjob.h>
+%End
+
+
+public:
+ ChmodJob (const KFileItemList&, int, int, int, int, bool, bool);
+
+protected:
+ void chmodNextFile ();
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+ void slotEntries (KIO::Job*, const KIO::UDSEntryList&);
+ void processList ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class ChmodJob
+
+KIO::ChmodJob* chmod (const KFileItemList&, int, int, QString, QString, bool, bool = 1);
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/connection.sip b/python/pykde/sip/kio/connection.sip
new file mode 100644
index 00000000..17e8a111
--- /dev/null
+++ b/python/pykde/sip/kio/connection.sip
@@ -0,0 +1,72 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class Task
+{
+%TypeHeaderCode
+#include <connection.h>
+%End
+
+
+public:
+ int cmd;
+ QByteArray data;
+
+}; // class Task
+
+
+class Connection : QObject
+{
+%TypeHeaderCode
+#include <connection.h>
+%End
+
+
+public:
+ Connection ();
+ void init (KSocket*);
+ void init (int, int);
+ void connect (QObject* = 0, const char* = 0);
+ void close ();
+ int fd_from () const;
+ int fd_to () const;
+ bool inited () const;
+ void send (int, const QByteArray& = QByteArray ());
+ bool sendnow (int, const QByteArray&);
+//ig int read (int*, QByteArray&);
+ void suspend ();
+ void resume ();
+ bool suspended () const;
+
+protected slots:
+ void dequeue ();
+
+}; // class Connection
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/davjob.sip b/python/pykde/sip/kio/davjob.sip
new file mode 100644
index 00000000..7390bddb
--- /dev/null
+++ b/python/pykde/sip/kio/davjob.sip
@@ -0,0 +1,56 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KIO
+{
+
+class DavJob : KIO::TransferJob
+{
+%TypeHeaderCode
+#include <davjob.h>
+%End
+
+
+public:
+ DavJob (const KURL&, int, const QString&, bool);
+ QDomDocument& response ();
+
+protected slots:
+ virtual void slotFinished ();
+ virtual void slotData (const QByteArray&);
+
+protected:
+
+}; // class DavJob
+
+KIO::DavJob* davPropFind (const KURL&, const QDomDocument&, QString, bool = 1);
+KIO::DavJob* davPropPatch (const KURL&, const QDomDocument&, bool = 1);
+KIO::DavJob* davSearch (const KURL&, const QString&, const QString&, const QString&, bool = 1);
+}; // namespace KIO
+
+%End
+
diff --git a/python/pykde/sip/kio/defaultprogress.sip b/python/pykde/sip/kio/defaultprogress.sip
new file mode 100644
index 00000000..20bf0881
--- /dev/null
+++ b/python/pykde/sip/kio/defaultprogress.sip
@@ -0,0 +1,103 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class DefaultProgress : KIO::ProgressBase
+{
+%TypeHeaderCode
+#include <defaultprogress.h>
+%End
+
+
+public:
+ DefaultProgress (bool = 1);
+
+%If ( KDE_3_1_0 - )
+ DefaultProgress (QWidget* /TransferThis/, const char* = 0);
+
+%If ( KDE_3_2_1 - )
+ bool keepOpen () const;
+
+%If ( KDE_3_4_0 - )
+ static QString makePercentString (ulong, KIO::filesize_t, ulong);
+%End
+
+%End
+
+%End
+
+
+public slots:
+ virtual void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ virtual void slotTotalFiles (KIO::Job*, ulong);
+ virtual void slotTotalDirs (KIO::Job*, ulong);
+ virtual void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ virtual void slotProcessedFiles (KIO::Job*, ulong);
+ virtual void slotProcessedDirs (KIO::Job*, ulong);
+ virtual void slotSpeed (KIO::Job*, ulong);
+ virtual void slotPercent (KIO::Job*, ulong);
+ virtual void slotInfoMessage (KIO::Job*, const QString&);
+ virtual void slotCopying (KIO::Job*, const KURL&, const KURL&);
+ virtual void slotMoving (KIO::Job*, const KURL&, const KURL&);
+ virtual void slotDeleting (KIO::Job*, const KURL&);
+
+%If ( KDE_3_1_0 - )
+ void slotTransferring (KIO::Job*, const KURL&);
+%End
+
+ virtual void slotCreatingDir (KIO::Job*, const KURL&);
+ virtual void slotStating (KIO::Job*, const KURL&);
+ virtual void slotMounting (KIO::Job*, const QString&, const QString&);
+ virtual void slotUnmounting (KIO::Job*, const QString&);
+ virtual void slotCanResume (KIO::Job*, KIO::filesize_t);
+
+%If ( KDE_3_1_0 - )
+ void slotClean ();
+%End
+
+
+protected:
+
+%If ( KDE_3_1_0 - )
+ void init ();
+%End
+
+ void showTotals ();
+ void setDestVisible (bool);
+
+%If ( KDE_3_1_0 - )
+ void checkDestination (const KURL&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class DefaultProgress
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/forwardingslavebase.sip b/python/pykde/sip/kio/forwardingslavebase.sip
new file mode 100644
index 00000000..8ee059a7
--- /dev/null
+++ b/python/pykde/sip/kio/forwardingslavebase.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_4_0 - )
+namespace KIO
+{
+
+class ForwardingSlaveBase : QObject, KIO::SlaveBase
+{
+%TypeHeaderCode
+#include <forwardingslavebase.h>
+%End
+
+
+public:
+ ForwardingSlaveBase (const QCString&, const QCString&, const QCString&);
+ virtual void get (const KURL&);
+ virtual void put (const KURL&, int, bool, bool);
+ virtual void stat (const KURL&);
+ virtual void mimetype (const KURL&);
+ virtual void listDir (const KURL&);
+ virtual void mkdir (const KURL&, int);
+ virtual void rename (const KURL&, const KURL&, bool);
+ virtual void symlink (const QString&, const KURL&, bool);
+ virtual void chmod (const KURL&, int);
+ virtual void copy (const KURL&, const KURL&, int, bool);
+ virtual void del (const KURL&, bool);
+
+protected:
+ virtual bool rewriteURL (const KURL&, KURL&) = 0;
+ virtual void prepareUDSEntry (KIO::UDSEntry&, bool = 0) const;
+ KURL processedURL () const;
+ KURL requestedURL () const;
+
+}; // class ForwardingSlaveBase
+
+}; // namespace KIO
+
+%End
+
diff --git a/python/pykde/sip/kio/global.sip b/python/pykde/sip/kio/global.sip
new file mode 100644
index 00000000..cd63aaf0
--- /dev/null
+++ b/python/pykde/sip/kio/global.sip
@@ -0,0 +1,732 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <sipkioKIOUDSEntry.h>
+#include <sipkioKIOUDSEntryList.h>
+#include <sipkdecoreulonglong.h>
+%End
+
+namespace KIO
+{
+typedef longlong fileoffset_t;
+typedef ulonglong filesize_t;
+QString convertSize (KIO::filesize_t);
+
+%If ( KDE_3_5_0 - )
+QString convertSizeWithBytes (KIO::filesize_t);
+%End
+
+QString number (KIO::filesize_t);
+QString convertSizeFromKB (KIO::filesize_t);
+
+%If ( KDE_3_4_0 - )
+uint calculateRemainingSeconds (KIO::filesize_t, KIO::filesize_t, KIO::filesize_t);
+QString convertSeconds (uint);
+%End
+
+QTime calculateRemaining (KIO::filesize_t, KIO::filesize_t, KIO::filesize_t);
+QString itemsSummaryString (uint, uint, uint, KIO::filesize_t, bool);
+QString encodeFileName (const QString&);
+QString decodeFileName (const QString&);
+
+%If ( KDE_3_2_0 - )
+
+enum Command
+{
+ CMD_HOST,
+ CMD_CONNECT,
+ CMD_DISCONNECT,
+ CMD_SLAVE_STATUS,
+ CMD_SLAVE_CONNECT,
+ CMD_SLAVE_HOLD,
+ CMD_NONE,
+ CMD_TESTDIR,
+ CMD_GET,
+ CMD_PUT,
+ CMD_STAT,
+ CMD_MIMETYPE,
+ CMD_LISTDIR,
+ CMD_MKDIR,
+ CMD_RENAME,
+ CMD_COPY,
+ CMD_DEL,
+ CMD_CHMOD,
+ CMD_SPECIAL,
+ CMD_USERPASS,
+ CMD_REPARSECONFIGURATION,
+ CMD_META_DATA,
+ CMD_SYMLINK,
+ CMD_SUBURL,
+ CMD_MESSAGEBOXANSWER,
+ CMD_RESUMEANSWER,
+ CMD_CONFIG,
+ CMD_MULTI_GET
+};
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+enum Error
+{
+ ERR_CANNOT_OPEN_FOR_READING,
+ ERR_CANNOT_OPEN_FOR_WRITING,
+ ERR_CANNOT_LAUNCH_PROCESS,
+ ERR_INTERNAL,
+ ERR_MALFORMED_URL,
+ ERR_UNSUPPORTED_PROTOCOL,
+ ERR_NO_SOURCE_PROTOCOL,
+ ERR_UNSUPPORTED_ACTION,
+ ERR_IS_DIRECTORY,
+ ERR_IS_FILE,
+ ERR_DOES_NOT_EXIST,
+ ERR_FILE_ALREADY_EXIST,
+ ERR_DIR_ALREADY_EXIST,
+ ERR_UNKNOWN_HOST,
+ ERR_ACCESS_DENIED,
+ ERR_WRITE_ACCESS_DENIED,
+ ERR_CANNOT_ENTER_DIRECTORY,
+ ERR_PROTOCOL_IS_NOT_A_FILESYSTEM,
+ ERR_CYCLIC_LINK,
+ ERR_USER_CANCELED,
+ ERR_CYCLIC_COPY,
+ ERR_COULD_NOT_CREATE_SOCKET,
+ ERR_COULD_NOT_CONNECT,
+ ERR_CONNECTION_BROKEN,
+ ERR_NOT_FILTER_PROTOCOL,
+ ERR_COULD_NOT_MOUNT,
+ ERR_COULD_NOT_UNMOUNT,
+ ERR_COULD_NOT_READ,
+ ERR_COULD_NOT_WRITE,
+ ERR_COULD_NOT_BIND,
+ ERR_COULD_NOT_LISTEN,
+ ERR_COULD_NOT_ACCEPT,
+ ERR_COULD_NOT_LOGIN,
+ ERR_COULD_NOT_STAT,
+ ERR_COULD_NOT_CLOSEDIR,
+ ERR_COULD_NOT_MKDIR,
+ ERR_COULD_NOT_RMDIR,
+ ERR_CANNOT_RESUME,
+ ERR_CANNOT_RENAME,
+ ERR_CANNOT_CHMOD,
+ ERR_CANNOT_DELETE,
+ ERR_SLAVE_DIED,
+ ERR_OUT_OF_MEMORY,
+ ERR_UNKNOWN_PROXY_HOST,
+ ERR_COULD_NOT_AUTHENTICATE,
+ ERR_ABORTED,
+ ERR_INTERNAL_SERVER,
+ ERR_SERVER_TIMEOUT,
+ ERR_SERVICE_NOT_AVAILABLE,
+ ERR_UNKNOWN,
+ ERR_UNKNOWN_INTERRUPT,
+ ERR_CANNOT_DELETE_ORIGINAL,
+ ERR_CANNOT_DELETE_PARTIAL,
+ ERR_CANNOT_RENAME_ORIGINAL,
+ ERR_CANNOT_RENAME_PARTIAL,
+ ERR_NEED_PASSWD,
+ ERR_CANNOT_SYMLINK,
+ ERR_NO_CONTENT,
+ ERR_DISK_FULL,
+ ERR_IDENTICAL_FILES,
+ ERR_SLAVE_DEFINED,
+ ERR_UPGRADE_REQUIRED,
+ ERR_POST_DENIED
+};
+
+%End
+
+QString buildErrorString (int, const QString&);
+//ig QString buildHTMLErrorString (int, const QString&, const KURL* = 0, int = -1);
+QByteArray rawErrorDetail (int, const QString&, const KURL* = 0, int = -1);
+
+%If ( KDE_3_2_0 - )
+QString unsupportedActionErrorString (const QString&, int);
+
+%If ( KDE_3_5_1 - )
+
+enum UDSAtomTypes
+{
+ UDS_STRING,
+ UDS_LONG,
+ UDS_TIME,
+ UDS_SIZE,
+ UDS_SIZE_LARGE,
+ UDS_USER,
+ UDS_ICON_NAME,
+ UDS_GROUP,
+ UDS_EXTRA,
+ UDS_NAME,
+ UDS_LOCAL_PATH,
+ UDS_HIDDEN,
+ UDS_EXTENDED_ACL,
+ UDS_ACL_STRING,
+ UDS_DEFAULT_ACL_STRING,
+ UDS_ACCESS,
+ UDS_MODIFICATION_TIME,
+ UDS_ACCESS_TIME,
+ UDS_CREATION_TIME,
+ UDS_FILE_TYPE,
+ UDS_LINK_DEST,
+ UDS_URL,
+ UDS_MIME_TYPE,
+ UDS_GUESSED_MIME_TYPE,
+ UDS_XML_PROPERTIES
+};
+
+%End
+
+%End
+
+
+%If ( KDE_3_0_1 - )
+
+enum CacheControl
+{
+ CC_CacheOnly,
+ CC_Cache,
+ CC_Verify,
+ CC_Refresh,
+ CC_Reload
+};
+
+%End
+
+KIO::CacheControl parseCacheControl (const QString&);
+QString getCacheControlString (KIO::CacheControl);
+QString findDeviceMountPoint (const QString&);
+QString findPathMountPoint (const QString&);
+bool probably_slow_mounted (const QString&);
+
+%If ( KDE_3_1_0 - )
+bool manually_mounted (const QString&);
+
+%If ( KDE_3_2_0 - )
+
+enum FileSystemFlag
+{
+ SupportsChmod,
+ SupportsChown,
+ SupportsUTime,
+ SupportsSymlinks,
+ CaseInsensitive
+};
+
+bool testFileSystemFlag (const QString&, KIO::FileSystemFlag);
+%End
+
+%End
+
+
+class UDSAtom
+{
+%TypeHeaderCode
+#include <global.h>
+%End
+
+
+public:
+ QString m_str;
+ long m_long;
+ uint m_uds;
+
+}; // class UDSAtom
+
+//ig typedef QValueList<KIO::UDSAtom> UDSEntry;
+//ig typedef QValueList<KIO::UDSEntry> UDSEntryList;
+//ig typedef QValueListIterator<UDSEntry> UDSEntryListIterator;
+//ig typedef QValueListConstIterator<UDSEntry> UDSEntryListConstIterator;
+
+%If ( KDE_3_4_0 - KDE_3_5_1 )
+
+enum UDSAtomTypes
+{
+ UDS_STRING,
+ UDS_LONG,
+ UDS_TIME,
+ UDS_SIZE,
+ UDS_SIZE_LARGE,
+ UDS_USER,
+ UDS_ICON_NAME,
+ UDS_GROUP,
+ UDS_EXTRA,
+ UDS_NAME,
+ UDS_LOCAL_PATH,
+ UDS_ACCESS,
+ UDS_MODIFICATION_TIME,
+ UDS_ACCESS_TIME,
+ UDS_CREATION_TIME,
+ UDS_FILE_TYPE,
+ UDS_LINK_DEST,
+ UDS_URL,
+ UDS_MIME_TYPE,
+ UDS_GUESSED_MIME_TYPE,
+ UDS_XML_PROPERTIES
+};
+
+%End
+
+
+%If ( KDE_3_2_0 - KDE_3_4_0 )
+
+enum UDSAtomTypes
+{
+ UDS_STRING,
+ UDS_LONG,
+ UDS_TIME,
+ UDS_SIZE,
+ UDS_SIZE_LARGE,
+ UDS_USER,
+ UDS_ICON_NAME,
+ UDS_GROUP,
+ UDS_EXTRA,
+ UDS_NAME,
+ UDS_ACCESS,
+ UDS_MODIFICATION_TIME,
+ UDS_ACCESS_TIME,
+ UDS_CREATION_TIME,
+ UDS_FILE_TYPE,
+ UDS_LINK_DEST,
+ UDS_URL,
+ UDS_MIME_TYPE,
+ UDS_GUESSED_MIME_TYPE,
+ UDS_XML_PROPERTIES
+};
+
+%End
+
+
+%If ( KDE_3_1_0 - KDE_3_2_0 )
+
+enum UDSAtomTypes
+{
+ UDS_STRING,
+ UDS_LONG,
+ UDS_TIME,
+ UDS_SIZE,
+ UDS_SIZE_LARGE,
+ UDS_USER,
+ UDS_GROUP,
+ UDS_NAME,
+ UDS_ACCESS,
+ UDS_MODIFICATION_TIME,
+ UDS_ACCESS_TIME,
+ UDS_CREATION_TIME,
+ UDS_FILE_TYPE,
+ UDS_LINK_DEST,
+ UDS_URL,
+ UDS_MIME_TYPE,
+ UDS_GUESSED_MIME_TYPE,
+ UDS_XML_PROPERTIES
+};
+
+%End
+
+
+%If ( - KDE_3_1_0 )
+
+enum UDSAtomTypes
+{
+ UDS_STRING,
+ UDS_LONG,
+ UDS_TIME,
+ UDS_SIZE,
+ UDS_SIZE_LARGE,
+ UDS_USER,
+ UDS_GROUP,
+ UDS_NAME,
+ UDS_ACCESS,
+ UDS_MODIFICATION_TIME,
+ UDS_ACCESS_TIME,
+ UDS_CREATION_TIME,
+ UDS_FILE_TYPE,
+ UDS_LINK_DEST,
+ UDS_URL,
+ UDS_MIME_TYPE,
+ UDS_GUESSED_MIME_TYPE
+};
+
+
+enum Error
+{
+ ERR_CANNOT_OPEN_FOR_READING,
+ ERR_CANNOT_OPEN_FOR_WRITING,
+ ERR_CANNOT_LAUNCH_PROCESS,
+ ERR_INTERNAL,
+ ERR_MALFORMED_URL,
+ ERR_UNSUPPORTED_PROTOCOL,
+ ERR_NO_SOURCE_PROTOCOL,
+ ERR_UNSUPPORTED_ACTION,
+ ERR_IS_DIRECTORY,
+ ERR_IS_FILE,
+ ERR_DOES_NOT_EXIST,
+ ERR_FILE_ALREADY_EXIST,
+ ERR_DIR_ALREADY_EXIST,
+ ERR_UNKNOWN_HOST,
+ ERR_ACCESS_DENIED,
+ ERR_WRITE_ACCESS_DENIED,
+ ERR_CANNOT_ENTER_DIRECTORY,
+ ERR_PROTOCOL_IS_NOT_A_FILESYSTEM,
+ ERR_CYCLIC_LINK,
+ ERR_USER_CANCELED,
+ ERR_CYCLIC_COPY,
+ ERR_COULD_NOT_CREATE_SOCKET,
+ ERR_COULD_NOT_CONNECT,
+ ERR_CONNECTION_BROKEN,
+ ERR_NOT_FILTER_PROTOCOL,
+ ERR_COULD_NOT_MOUNT,
+ ERR_COULD_NOT_UNMOUNT,
+ ERR_COULD_NOT_READ,
+ ERR_COULD_NOT_WRITE,
+ ERR_COULD_NOT_BIND,
+ ERR_COULD_NOT_LISTEN,
+ ERR_COULD_NOT_ACCEPT,
+ ERR_COULD_NOT_LOGIN,
+ ERR_COULD_NOT_STAT,
+ ERR_COULD_NOT_CLOSEDIR,
+ ERR_COULD_NOT_MKDIR,
+ ERR_COULD_NOT_RMDIR,
+ ERR_CANNOT_RESUME,
+ ERR_CANNOT_RENAME,
+ ERR_CANNOT_CHMOD,
+ ERR_CANNOT_DELETE,
+ ERR_SLAVE_DIED,
+ ERR_OUT_OF_MEMORY,
+ ERR_UNKNOWN_PROXY_HOST,
+ ERR_COULD_NOT_AUTHENTICATE,
+ ERR_ABORTED,
+ ERR_INTERNAL_SERVER,
+ ERR_SERVER_TIMEOUT,
+ ERR_SERVICE_NOT_AVAILABLE,
+ ERR_UNKNOWN,
+ ERR_UNKNOWN_INTERRUPT,
+ ERR_CANNOT_DELETE_ORIGINAL,
+ ERR_CANNOT_DELETE_PARTIAL,
+ ERR_CANNOT_RENAME_ORIGINAL,
+ ERR_CANNOT_RENAME_PARTIAL,
+ ERR_NEED_PASSWD,
+ ERR_CANNOT_SYMLINK,
+ ERR_NO_CONTENT,
+ ERR_DISK_FULL,
+ ERR_IDENTICAL_FILES,
+ ERR_SLAVE_DEFINED
+};
+
+
+%If ( - KDE_3_0_1 )
+
+enum CacheControl
+{
+ CC_CacheOnly,
+ CC_Cache,
+ CC_Verify,
+ CC_Reload
+};
+
+%End
+
+%End
+
+//force
+//ig typedef QMap<QString,QString> MetaData;
+//end
+}; // namespace KIO
+
+//force
+KIO::UDSEntry testKIOUDSEntry (KIO::UDSEntry);
+%MethodCode
+//takes list | (KIO.UDSEntry)
+//returns (KIO.UDSEntry)
+ sipRes = a0;
+%End
+
+%ModuleHeaderCode
+#include <sipkioKIOUDSEntryList.h>
+%End
+
+KIO::UDSEntryList testKIOUDSEntryList (KIO::UDSEntryList);
+%MethodCode
+//takes list | (KIO.UDSEntryList)
+//returns (KIO.UDSEntryList)
+ sipRes = a0;
+%End
+
+%ModuleHeaderCode
+#include <sipkioKIOMetaData.h>
+#include <qmap.h>
+%End
+
+KIO::MetaData testKIOMetaData (KIO::MetaData);
+%MethodCode
+//takes dict | (KIO.MetaData)
+//returns (KIO.MetaData)
+
+
+ PyObject *dict;
+ if (sipParseArgs(&sipArgsParsed,sipArgs,"T", &PyDict_Type, &dict))
+ {
+ int isErr = 0;
+ KIO::MetaData *map = (KIO::MetaData *)sipForceConvertTo_KIO_MetaData (dict, &isErr);
+ if (isErr)
+ {
+ Py_INCREF (Py_None);
+ return Py_None;
+ }
+ return sipConvertFrom_KIO_MetaData ((KIO::MetaData *)map, NULL);
+ }
+%End
+
+//end
+
+
+%MappedType KIO::UDSEntry
+//converts a Python list of KIO.UDSAtom
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <global.h>
+#include <sipkioKIOUDSEntry.h>
+#include <sipkioKIOUDSAtom.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KIO::UDSAtom> *cpplist = (QValueList<KIO::UDSAtom> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KIO::UDSAtom>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KIO::UDSAtom (*it), sipClass_KIO_UDSAtom)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KIO::UDSAtom> *cpplist = new QValueList<KIO::UDSAtom>;
+
+ PyObject *elem;
+ KIO::UDSAtom *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KIO::UDSAtom *)sipForceConvertTo_KIO_UDSAtom (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType KIO::UDSEntryList
+//converts a Python list of KIO.UDSEntry
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <global.h>
+#include <sipkioKIOUDSEntry.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KIO::UDSEntry> *cpplist = (QValueList<KIO::UDSEntry> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KIO::UDSEntry>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ KIO::UDSEntry cpp = *it;
+ inst = sipConvertFrom_KIO_UDSEntry (&cpp, sipTransferObj);
+
+ if (PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KIO::UDSEntry> *cpplist = new QValueList<KIO::UDSEntry>;
+
+ PyObject *elem;
+ KIO::UDSEntry *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KIO::UDSEntry *)sipForceConvertTo_KIO_UDSEntry (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType KIO::MetaData
+//converts a Python dict of QString, QString
+{
+%TypeHeaderCode
+#include<qmap.h>
+#include <global.h>
+#include <sipqtQString.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString,QString> cppmap = *sipCpp;
+ QMap<QString,QString>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QString acpp = it.key ();
+ QString bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new QString (bcpp), sipClass_QString)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QString,QString> *cppmap = new QMap<QString,QString>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QString *acpp;
+ QString *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
+ bcpp = (QString *)sipForceConvertTo_QString (belem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = (KIO::MetaData *)cppmap;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/job.sip b/python/pykde/sip/kio/job.sip
new file mode 100644
index 00000000..b0b906e1
--- /dev/null
+++ b/python/pykde/sip/kio/job.sip
@@ -0,0 +1,73 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+KIO::SimpleJob* mkdir (const KURL&, int = -1);
+KIO::SimpleJob* rmdir (const KURL&);
+KIO::SimpleJob* chmod (const KURL&, int);
+KIO::SimpleJob* rename (const KURL&, const KURL&, bool);
+KIO::SimpleJob* symlink (const QString&, const KURL&, bool, bool = 1);
+KIO::SimpleJob* special (const KURL&, const QByteArray&, bool = 1);
+KIO::SimpleJob* mount (bool, const char*, const QString&, const QString&, bool = 1);
+KIO::SimpleJob* unmount (const QString&, bool = 1);
+KIO::SimpleJob* http_update_cache (const KURL&, bool, time_t);
+KIO::StatJob* stat (const KURL&, bool = 1);
+KIO::StatJob* stat (const KURL&, bool, short, bool = 1);
+KIO::TransferJob* get (const KURL&, bool = 0, bool = 1);
+KIO::TransferJob* put (const KURL&, int, bool, bool, bool = 1);
+KIO::TransferJob* http_post (const KURL&, const QByteArray&, bool = 1);
+
+%If ( KDE_3_3_0 - )
+KIO::StoredTransferJob* storedGet (const KURL&, bool = 0, bool = 1);
+KIO::StoredTransferJob* storedPut (const QByteArray&, const KURL&, int, bool, bool, bool = 1);
+%End
+
+KIO::MultiGetJob* multi_get (long, const KURL&, const KIO::MetaData&);
+KIO::MimetypeJob* mimetype (const KURL&, bool = 1);
+KIO::FileCopyJob* file_copy (const KURL&, const KURL&, int = -1, bool = 0, bool = 0, bool = 1);
+KIO::FileCopyJob* file_move (const KURL&, const KURL&, int = -1, bool = 0, bool = 0, bool = 1);
+KIO::SimpleJob* file_delete (const KURL&, bool = 1);
+KIO::ListJob* listDir (const KURL&, bool = 1, bool = 1);
+KIO::ListJob* listRecursive (const KURL&, bool = 1, bool = 1);
+KIO::CopyJob* copy (const KURL&, const KURL&, bool = 1);
+KIO::CopyJob* copyAs (const KURL&, const KURL&, bool = 1);
+KIO::CopyJob* copy (const KURL::List&, const KURL&, bool = 1);
+KIO::CopyJob* move (const KURL&, const KURL&, bool = 1);
+KIO::CopyJob* moveAs (const KURL&, const KURL&, bool = 1);
+KIO::CopyJob* move (const KURL::List&, const KURL&, bool = 1);
+KIO::CopyJob* link (const KURL&, const KURL&, bool = 1);
+KIO::CopyJob* link (const KURL::List&, const KURL&, bool = 1);
+KIO::CopyJob* linkAs (const KURL&, const KURL&, bool = 1);
+
+%If ( KDE_3_4_0 - )
+KIO::CopyJob* trash (const KURL&, bool = 1);
+KIO::CopyJob* trash (const KURL::List&, bool = 1);
+%End
+
+KIO::DeleteJob* del (const KURL&, bool = 0, bool = 1) /PyName=del_/;
+KIO::DeleteJob* del (const KURL::List&, bool = 0, bool = 1) /PyName=del_/;
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/jobclasses.sip b/python/pykde/sip/kio/jobclasses.sip
new file mode 100644
index 00000000..e3441bea
--- /dev/null
+++ b/python/pykde/sip/kio/jobclasses.sip
@@ -0,0 +1,748 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class Job : QObject
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+protected:
+ Job (bool);
+
+public:
+ virtual void kill (bool = 1);
+ int error ();
+ int progressId ();
+ const QString& errorText ();
+ QString errorString ();
+ QStringList detailedErrorStrings (const KURL* = 0, int = -1) const;
+ void showErrorDialog (QWidget* = 0);
+ void setAutoErrorHandlingEnabled (bool, QWidget* = 0);
+ bool isAutoErrorHandlingEnabled () const;
+
+%If ( KDE_3_5_0 - )
+ void setAutoWarningHandlingEnabled (bool);
+ bool isAutoWarningHandlingEnabled () const;
+%End
+
+
+%If ( KDE_3_4_3 - )
+ void setInteractive (bool);
+ bool isInteractive () const;
+%End
+
+ void setWindow (QWidget*);
+ QWidget* window () const;
+
+%If ( KDE_3_1_0 - )
+ void setParentJob (KIO::Job*);
+ KIO::Job* parentJob () const;
+%End
+
+ void setMetaData (const KIO::MetaData&);
+ void addMetaData (const QString&, const QString&);
+ void addMetaData (const QMap<QString,QString>&);
+ void mergeMetaData (const QMap<QString,QString>&);
+ KIO::MetaData outgoingMetaData () const;
+ KIO::MetaData metaData () const;
+ QString queryMetaData (const QString&);
+
+%If ( KDE_3_2_0 - )
+ KIO::filesize_t getProcessedSize ();
+%End
+
+
+signals:
+ void result (KIO::Job*);
+ void canceled (KIO::Job*);
+ void infoMessage (KIO::Job*, const QString&);
+
+%If ( KDE_3_5_0 - )
+ void warning (KIO::Job*, const QString&);
+%End
+
+ void connected (KIO::Job*);
+ void percent (KIO::Job*, ulong);
+ void totalSize (KIO::Job*, KIO::filesize_t);
+ void processedSize (KIO::Job*, KIO::filesize_t);
+ void speed (KIO::Job*, ulong);
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+ void slotSpeed (KIO::Job*, ulong);
+ void slotInfoMessage (KIO::Job*, const QString&);
+ void slotSpeedTimeout ();
+
+protected:
+ virtual void addSubjob (KIO::Job*, bool = 1);
+ virtual void removeSubjob (KIO::Job*);
+
+%If ( KDE_3_4_0 - )
+ void removeSubjob (KIO::Job*, bool, bool);
+%End
+
+ void emitPercent (KIO::filesize_t, KIO::filesize_t);
+ void emitSpeed (ulong);
+ void emitResult ();
+
+%If ( KDE_3_2_0 - )
+ void setProcessedSize (KIO::filesize_t);
+%End
+
+//ig int& extraFlags ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( KDE_3_2_0 - KDE_3_2_2 )
+ int extraFlags ();
+%MethodCode
+//returns (int)
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> sipProtect_extraFlags ();
+ Py_END_ALLOW_THREADS
+%End
+
+%End
+
+
+}; // class Job
+
+
+class SimpleJob : KIO::Job
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ SimpleJob (const KURL&, int, const QByteArray&, bool);
+ const KURL& url () const;
+ virtual void kill (bool = 1);
+ virtual void putOnHold ();
+ static void removeOnHold ();
+ virtual void start (KIO::Slave*);
+ void slaveDone ();
+ KIO::Slave* slave ();
+ int command ();
+
+public slots:
+
+%If ( KDE_3_1_0 - )
+ void slotTotalSize (KIO::filesize_t);
+%End
+
+
+protected slots:
+ virtual void slotFinished ();
+ void slotWarning (const QString&);
+ void slotInfoMessage (const QString&);
+ void slotConnected ();
+ void slotProcessedSize (KIO::filesize_t);
+ void slotSpeed (ulong);
+ virtual void slotMetaData (const KIO::MetaData&);
+
+public slots:
+ virtual void slotError (int, const QString&);
+
+protected slots:
+ void slotNeedProgressId ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_2_0 - )
+ void storeSSLSessionFromJob (const KURL&);
+%End
+
+
+protected slots:
+
+%If ( - KDE_3_1_0 )
+ void slotTotalSize (KIO::filesize_t);
+%End
+
+
+}; // class SimpleJob
+
+
+class StatJob : KIO::SimpleJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ StatJob (const KURL&, int, const QByteArray&, bool);
+ void setSide (bool);
+ void setDetails (short);
+ const KIO::UDSEntry& statResult () const;
+ virtual void start (KIO::Slave*);
+
+signals:
+ void redirection (KIO::Job*, const KURL&);
+
+%If ( KDE_3_1_0 - )
+ void permanentRedirection (KIO::Job*, const KURL&, const KURL&);
+%End
+
+
+protected slots:
+ void slotStatEntry (const KIO::UDSEntry&);
+ void slotRedirection (const KURL&);
+ virtual void slotFinished ();
+
+%If ( KDE_3_2_0 - )
+ virtual void slotMetaData (const KIO::MetaData&);
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class StatJob
+
+
+%If ( KDE_3_3_0 - )
+
+class MkdirJob : KIO::SimpleJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ MkdirJob (const KURL&, int, const QByteArray&, bool);
+ virtual void start (KIO::Slave*);
+
+signals:
+ void redirection (KIO::Job*, const KURL&);
+ void permanentRedirection (KIO::Job*, const KURL&, const KURL&);
+
+protected slots:
+ void slotRedirection (const KURL&);
+ virtual void slotFinished ();
+
+protected:
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class MkdirJob
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class DirectCopyJob : KIO::SimpleJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ DirectCopyJob (const KURL&, int, const QByteArray&, bool);
+ virtual void start (KIO::Slave*);
+
+signals:
+ void canResume (KIO::Job*, KIO::filesize_t);
+
+}; // class DirectCopyJob
+
+%End
+
+
+class TransferJob : KIO::SimpleJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ TransferJob (const KURL&, int, const QByteArray&, const QByteArray&, bool);
+ virtual void start (KIO::Slave*);
+ virtual void slotResult (KIO::Job*);
+ void suspend ();
+ void resume ();
+ bool isSuspended () const;
+ bool isErrorPage () const;
+
+%If ( KDE_3_2_0 - )
+ void setAsyncDataEnabled (bool);
+ void sendAsyncData (const QByteArray&);
+ void setReportDataSent (bool);
+ bool reportDataSent ();
+%End
+
+
+signals:
+ void data (KIO::Job*, const QByteArray&);
+ void dataReq (KIO::Job*, QByteArray&);
+ void redirection (KIO::Job*, const KURL&);
+
+%If ( KDE_3_1_0 - )
+ void permanentRedirection (KIO::Job*, const KURL&, const KURL&);
+%End
+
+ void mimetype (KIO::Job*, const QString&);
+ void canResume (KIO::Job*, KIO::filesize_t);
+
+protected slots:
+ virtual void slotRedirection (const KURL&);
+ virtual void slotFinished ();
+ virtual void slotData (const QByteArray&);
+ virtual void slotDataReq ();
+ virtual void slotMimetype (const QString&);
+ virtual void slotNeedSubURLData ();
+ virtual void slotSubURLData (KIO::Job*, const QByteArray&);
+
+%If ( KDE_3_2_0 - )
+ virtual void slotMetaData (const KIO::MetaData&);
+%End
+
+ void slotErrorPage ();
+ void slotCanResume (KIO::filesize_t);
+
+%If ( KDE_3_2_0 - )
+ void slotPostRedirection ();
+%End
+
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class TransferJob
+
+
+%If ( KDE_3_3_0 - )
+
+class StoredTransferJob : KIO::TransferJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ StoredTransferJob (const KURL&, int, const QByteArray&, const QByteArray&, bool);
+ void setData (const QByteArray&);
+ QByteArray data () const;
+
+}; // class StoredTransferJob
+
+%End
+
+
+class MultiGetJob : KIO::TransferJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ MultiGetJob (const KURL&, bool);
+ virtual void start (KIO::Slave*);
+ void get (long, const KURL&, const KIO::MetaData&);
+
+signals:
+ void data (long, const QByteArray&);
+ void mimetype (long, const QString&);
+ void result (long);
+
+protected slots:
+ virtual void slotRedirection (const KURL&);
+ virtual void slotFinished ();
+ virtual void slotData (const QByteArray&);
+ virtual void slotMimetype (const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class MultiGetJob
+
+
+class MimetypeJob : KIO::TransferJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ MimetypeJob (const KURL&, int, const QByteArray&, bool);
+ QString mimetype () const;
+ virtual void start (KIO::Slave*);
+
+protected slots:
+ virtual void slotFinished ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class MimetypeJob
+
+
+class FileCopyJob : KIO::Job
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ FileCopyJob (const KURL&, const KURL&, int, bool, bool, bool, bool);
+
+%If ( KDE_3_2_0 - )
+ void setSourceSize64 (KIO::filesize_t);
+
+%If ( KDE_3_5_2 - )
+ void setModificationTime (time_t);
+%End
+
+%End
+
+//ig void setSourceSize (off_t);
+ KURL srcURL () const;
+ KURL destURL () const;
+
+public slots:
+ void slotStart ();
+ void slotData (KIO::Job*, const QByteArray&);
+ void slotDataReq (KIO::Job*, QByteArray&);
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+ void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ void slotPercent (KIO::Job*, ulong);
+ void slotCanResume (KIO::Job*, KIO::filesize_t);
+
+protected:
+ void startCopyJob ();
+ void startCopyJob (const KURL&);
+
+%If ( KDE_3_4_0 - )
+ void startRenameJob (const KURL&);
+%End
+
+ void startDataPump ();
+ void connectSubjob (KIO::SimpleJob*);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class FileCopyJob
+
+
+class ListJob : KIO::SimpleJob
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ ListJob (const KURL&, bool, bool = 0, QString = QString ::null , bool = 1);
+ virtual void start (KIO::Slave*);
+
+%If ( KDE_3_4_3 - )
+ const KURL& redirectionURL () const;
+%End
+
+
+%If ( KDE_3_2_0 - )
+ void setUnrestricted (bool);
+%End
+
+
+signals:
+ void entries (KIO::Job*, const KIO::UDSEntryList&);
+ void redirection (KIO::Job*, const KURL&);
+
+%If ( KDE_3_1_0 - )
+ void permanentRedirection (KIO::Job*, const KURL&, const KURL&);
+%End
+
+
+protected slots:
+ virtual void slotFinished ();
+
+%If ( KDE_3_2_0 - )
+ virtual void slotMetaData (const KIO::MetaData&);
+%End
+
+ virtual void slotResult (KIO::Job*);
+ void slotListEntries (const KIO::UDSEntryList&);
+ void slotRedirection (const KURL&);
+ void gotEntries (KIO::Job*, const KIO::UDSEntryList&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class ListJob
+
+
+class CopyInfo
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ KURL uSource;
+ KURL uDest;
+ QString linkDest;
+ mode_t permissions;
+ time_t ctime;
+ time_t mtime;
+ off_t size;
+
+}; // class CopyInfo
+
+
+class CopyJob : KIO::Job
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+
+ enum CopyMode
+ {
+ Copy,
+ Move,
+ Link
+ };
+
+ CopyJob (const KURL::List&, const KURL&, KIO::CopyJob::CopyMode, bool, bool);
+ KURL::List srcURLs () const;
+ KURL destURL () const;
+
+%If ( KDE_3_2_3 - )
+ void setDefaultPermissions (bool);
+
+%If ( KDE_3_4_0 - )
+ void setInteractive (bool);
+%End
+
+%End
+
+
+signals:
+ void totalFiles (KIO::Job*, ulong);
+ void totalDirs (KIO::Job*, ulong);
+
+%If ( KDE_3_2_0 - )
+ void aboutToCreate (KIO::Job*, const QValueList<KIO::CopyInfo>&);
+%End
+
+ void processedFiles (KIO::Job*, ulong);
+ void processedDirs (KIO::Job*, ulong);
+ void copying (KIO::Job*, const KURL&, const KURL&);
+ void linking (KIO::Job*, const QString&, const KURL&);
+ void moving (KIO::Job*, const KURL&, const KURL&);
+ void creatingDir (KIO::Job*, const KURL&);
+ void renamed (KIO::Job*, const KURL&, const KURL&);
+ void copyingDone (KIO::Job*, const KURL&, const KURL&, bool, bool);
+ void copyingLinkDone (KIO::Job*, const KURL&, const QString&, const KURL&);
+
+protected:
+
+%If ( KDE_3_2_3 - )
+ void statCurrentSrc ();
+%End
+
+ void statNextSrc ();
+ void slotResultStating (KIO::Job*);
+ void startListing (const KURL&);
+ void slotResultCreatingDirs (KIO::Job*);
+ void slotResultConflictCreatingDirs (KIO::Job*);
+ void createNextDir ();
+ void slotResultCopyingFiles (KIO::Job*);
+ void slotResultConflictCopyingFiles (KIO::Job*);
+ void copyNextFile ();
+ void slotResultDeletingDirs (KIO::Job*);
+ void deleteNextDir ();
+ void skip (const KURL&);
+
+%If ( KDE_3_3_2 - )
+ void slotResultRenaming (KIO::Job*);
+
+%If ( KDE_3_5_2 - )
+ void setNextDirAttribute ();
+%End
+
+%End
+
+
+protected slots:
+ void slotStart ();
+ void slotEntries (KIO::Job*, const KIO::UDSEntryList&);
+ virtual void slotResult (KIO::Job*);
+ void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ void slotReport ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class CopyJob
+
+
+class DeleteJob : KIO::Job
+{
+%TypeHeaderCode
+#include <jobclasses.h>
+%End
+
+
+public:
+ DeleteJob (const KURL::List&, bool, bool);
+ KURL::List urls () const;
+
+signals:
+ void totalFiles (KIO::Job*, ulong);
+ void totalDirs (KIO::Job*, ulong);
+ void processedFiles (KIO::Job*, ulong);
+ void processedDirs (KIO::Job*, ulong);
+ void deleting (KIO::Job*, const KURL&);
+
+protected slots:
+ void slotStart ();
+ void slotEntries (KIO::Job*, const KIO::UDSEntryList&);
+ virtual void slotResult (KIO::Job*);
+ void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ void slotReport ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ void startNextJob ();
+ void deleteNextFile ();
+ void deleteNextDir ();
+%End
+
+
+}; // class DeleteJob
+
+}; // namespace KIO
+
+
+
+%MappedType QValueList<KIO::CopyInfo>
+//converts a Python list of KIO::CopyInfo
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KIO::CopyInfo> *cpplist = (QValueList<KIO::CopyInfo> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KIO::CopyInfo>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KIO::CopyInfo (*it), sipClass_KIO_CopyInfo)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KIO::CopyInfo> *cpplist = new QValueList<KIO::CopyInfo>;
+
+ PyObject *elem;
+ KIO::CopyInfo *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KIO::CopyInfo *)sipForceConvertTo_KIO_CopyInfo (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kacl.sip b/python/pykde/sip/kio/kacl.sip
new file mode 100644
index 00000000..3745dabe
--- /dev/null
+++ b/python/pykde/sip/kio/kacl.sip
@@ -0,0 +1,166 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_5_0 - )
+
+class KACL
+{
+%TypeHeaderCode
+#include <kacl.h>
+%End
+
+
+public:
+ KACL (const QString&);
+ KACL (const KACL&);
+ KACL (mode_t);
+ KACL ();
+ bool operator == (const KACL&) const;
+ bool operator != (const KACL&) const;
+ bool isValid () const;
+ ushort ownerPermissions () const;
+ bool setOwnerPermissions (ushort);
+ ushort owningGroupPermissions () const;
+ bool setOwningGroupPermissions (ushort);
+ ushort othersPermissions () const;
+ bool setOthersPermissions (ushort);
+ mode_t basePermissions () const;
+ bool isExtended () const;
+ ushort maskPermissions (bool&) const;
+ bool setMaskPermissions (ushort);
+ ushort namedUserPermissions (const QString&, bool*) const;
+ bool setNamedUserPermissions (const QString&, ushort);
+ ACLUserPermissionsList allUserPermissions () const;
+ bool setAllUserPermissions (const ACLUserPermissionsList&);
+ ushort namedGroupPermissions (const QString&, bool*) const;
+ bool setNamedGroupPermissions (const QString&, ushort);
+ ACLGroupPermissionsList allGroupPermissions () const;
+ bool setAllGroupPermissions (const ACLGroupPermissionsList&);
+ bool setACL (const QString&);
+ QString asString () const;
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KACL
+
+%End
+
+
+%If ( KDE_3_5_0 - )
+typedef QPair<QString,unsigned short> ACLUserPermissions;
+typedef QValueList<ACLUserPermissions> ACLUserPermissionsList;
+//igx typedef QValueListIterator<ACLUserPermissions> ACLUserPermissionsIterator;
+//igx typedef QValueListConstIterator<ACLUserPermissions> ACLUserPermissionsConstIterator;
+//igx typedef QPair<QString,unsigned short> ACLGroupPermissions;
+//igx typedef QValueList<ACLGroupPermissions> ACLGroupPermissionsList;
+//igx typedef QValueListIterator<ACLGroupPermissions> ACLGroupPermissionsIterator;
+//igx typedef QValueListConstIterator<ACLGroupPermissions> ACLGroupPermissionsConstIterator;
+//igx QDataStream& operator << (QDataStream&, const KACL&);
+//igx QDataStream& operator >> (QDataStream&, KACL&);
+//force
+typedef ACLUserPermissionsList ACLGroupPermissionsList;
+//end
+%End
+
+
+%MappedType QValueList<ACLUserPermissions>
+//converts a Python list of ACLUserPermissions tuples (QString, int)
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <qstring.h>
+#include <kacl.h>
+#include <sipqtQString.h>
+#include <sipkioKACL.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<ACLUserPermissions> *cpplist = (QValueList<ACLUserPermissions> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<ACLUserPermissions>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ QString s = (*it).first;
+ ushort u = (*it).second;
+ PyObject *pys = sipBuildResult (NULL, "N", new QString (s), sipClass_QString);
+ if ((pys == NULL) || ((inst = Py_BuildValue ("Ni", pys, u)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_XDECREF (inst);
+ Py_XDECREF (pys);
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<ACLUserPermissions> *cpplist = new QValueList<ACLUserPermissions>;
+
+ QString p1;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ PyObject *elem = PyList_GET_ITEM (sipPy, i);
+ PyObject *pyp1 = PyTuple_GET_ITEM (elem, 0);
+ p1 = *(QString *)sipForceConvertTo_QString (pyp1, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+ ushort p2 = (ushort)(PyInt_AS_LONG (PyTuple_GET_ITEM (elem, 1)));
+
+ cpplist->append (ACLUserPermissions (p1, p2));
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kar.sip b/python/pykde/sip/kio/kar.sip
new file mode 100644
index 00000000..cf7e2708
--- /dev/null
+++ b/python/pykde/sip/kio/kar.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KAr : KArchive
+{
+%TypeHeaderCode
+#include <kar.h>
+%End
+
+
+public:
+ KAr (const QString&);
+ KAr (QIODevice*);
+ QString fileName ();
+ virtual bool prepareWriting (const QString&, const QString&, const QString&, uint);
+ virtual bool doneWriting (uint);
+ virtual bool writeDir (const QString&, const QString&, const QString&);
+
+protected:
+ virtual bool openArchive (int);
+ virtual bool closeArchive ();
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+}; // class KAr
+
+%End
+
diff --git a/python/pykde/sip/kio/karchive.sip b/python/pykde/sip/kio/karchive.sip
new file mode 100644
index 00000000..cc80c8f0
--- /dev/null
+++ b/python/pykde/sip/kio/karchive.sip
@@ -0,0 +1,189 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KArchive
+{
+%TypeHeaderCode
+#include <karchive.h>
+%End
+
+
+protected:
+ KArchive (QIODevice*);
+
+public:
+ virtual bool open (int);
+ virtual void close ();
+
+%If ( KDE_3_5_0 - )
+ bool closeSucceeded () const;
+%End
+
+ bool isOpened () const;
+ int mode () const;
+ QIODevice* device () const;
+ const KArchiveDirectory* directory () const;
+
+%If ( KDE_3_2_0 - )
+ bool addLocalFile (const QString&, const QString&);
+ bool addLocalDirectory (const QString&, const QString&);
+%End
+
+ virtual bool writeDir (const QString&, const QString&, const QString&) = 0;
+
+%If ( KDE_3_2_0 - )
+ bool writeDir (const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+ bool writeSymLink (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+%End
+
+ virtual bool writeFile (const QString&, const QString&, const QString&, uint, const char*);
+
+%If ( KDE_3_2_0 - )
+ bool writeFile (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t, const char*);
+%End
+
+ virtual bool prepareWriting (const QString&, const QString&, const QString&, uint) = 0;
+
+%If ( KDE_3_2_0 - )
+ bool prepareWriting (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+ bool writeData (const char*, uint);
+%End
+
+ virtual bool doneWriting (uint) = 0;
+
+protected:
+ virtual bool openArchive (int) = 0;
+ virtual bool closeArchive () = 0;
+ virtual KArchiveDirectory* rootDir ();
+ KArchiveDirectory* findOrCreate (const QString&);
+ void setDevice (QIODevice*);
+ void setRootDir (KArchiveDirectory*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_2_0 - )
+ bool prepareWriting_impl (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+ bool writeFile_impl (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t, const char*);
+ bool writeDir_impl (const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+ bool writeSymLink_impl (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+ bool writeData_impl (const char*, uint);
+%End
+
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ ~KArchive ();
+%End
+
+
+}; // class KArchive
+
+
+class KArchiveEntry
+{
+%TypeHeaderCode
+#include <karchive.h>
+%End
+
+
+public:
+ KArchiveEntry (KArchive*, const QString&, int, int, const QString&, const QString&, const QString&);
+ QDateTime datetime () const;
+ int date () const;
+ QString name () const;
+ mode_t permissions () const;
+ QString user () const;
+ QString group () const;
+ QString symlink () const;
+ virtual bool isFile () const;
+ virtual bool isDirectory () const;
+
+protected:
+ KArchive* archive () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KArchiveEntry
+
+
+class KArchiveFile : KArchiveEntry
+{
+%TypeHeaderCode
+#include <karchive.h>
+%End
+
+
+public:
+ KArchiveFile (KArchive*, const QString&, int, int, const QString&, const QString&, const QString&, int, int);
+ int position () const;
+ int size () const;
+
+%If ( KDE_3_1_0 - )
+ void setSize (int);
+%End
+
+ virtual QByteArray data () const;
+ QIODevice* device () const;
+ virtual bool isFile () const;
+
+%If ( KDE_3_1_0 - )
+ void copyTo (const QString&) const;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KArchiveFile
+
+
+class KArchiveDirectory : KArchiveEntry
+{
+%TypeHeaderCode
+#include <karchive.h>
+%End
+
+
+public:
+ KArchiveDirectory (KArchive*, const QString&, int, int, const QString&, const QString&, const QString&);
+ QStringList entries () const;
+ KArchiveEntry* entry (QString);
+ void addEntry (KArchiveEntry*);
+ virtual bool isDirectory () const;
+
+%If ( KDE_3_1_0 - )
+ void copyTo (const QString&, bool = 1) const;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KArchiveDirectory
+
diff --git a/python/pykde/sip/kio/kautomount.sip b/python/pykde/sip/kio/kautomount.sip
new file mode 100644
index 00000000..e4720cd4
--- /dev/null
+++ b/python/pykde/sip/kio/kautomount.sip
@@ -0,0 +1,77 @@
+//
+// Copyright 2005 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2004 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE_3_3_2
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KAutoMount : QObject
+{
+%TypeHeaderCode
+#include <kautomount.h>
+%End
+
+
+public:
+ KAutoMount (bool, const QString&, const QString&, const QString&, const QString&, bool = 1);
+
+signals:
+ void finished ();
+ void error ();
+
+protected slots:
+ void slotResult (KIO::Job*);
+
+protected:
+//force
+
+private:
+ ~KAutoMount ();
+//end
+
+}; // class KAutoMount
+
+
+class KAutoUnmount : QObject
+{
+%TypeHeaderCode
+#include <kautomount.h>
+%End
+
+
+public:
+ KAutoUnmount (const QString&, const QString&);
+
+signals:
+ void finished ();
+ void error ();
+
+protected slots:
+ void slotResult (KIO::Job*);
+//force
+
+private:
+ ~KAutoUnmount ();
+//end
+
+}; // class KAutoUnmount
+
diff --git a/python/pykde/sip/kio/kdatatool.sip b/python/pykde/sip/kio/kdatatool.sip
new file mode 100644
index 00000000..e4f37f3f
--- /dev/null
+++ b/python/pykde/sip/kio/kdatatool.sip
@@ -0,0 +1,173 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDataToolInfo
+{
+%TypeHeaderCode
+#include <kdatatool.h>
+%End
+
+
+public:
+ KDataToolInfo ();
+ KDataToolInfo (const KService::Ptr&, KInstance*);
+ KDataToolInfo (const KDataToolInfo&);
+ QString dataType () const;
+ QStringList mimeTypes () const;
+ bool isReadOnly () const;
+ QPixmap icon () const;
+ QPixmap miniIcon () const;
+ QString iconName () const;
+ QStringList userCommands () const;
+ QStringList commands () const;
+ KDataTool* createTool (QObject* /Transfer/ = 0, const char* = 0) const;
+ KService::Ptr service () const;
+ KInstance* instance () const;
+ bool isValid () const;
+ static QValueList<KDataToolInfo> query (const QString&, const QString&, KInstance*);
+
+}; // class KDataToolInfo
+
+
+class KDataToolAction : KAction
+{
+%TypeHeaderCode
+#include <kdatatool.h>
+%End
+
+
+public:
+ KDataToolAction (const QString&, const KDataToolInfo&, const QString&, QObject* /TransferThis/ = 0, const char* = 0);
+ static QPtrList<KAction> dataToolActionList (const QValueList<KDataToolInfo>&, const QObject*, const char*);
+
+signals:
+ void toolActivated (const KDataToolInfo&, const QString&);
+
+protected:
+ virtual void slotActivated ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDataToolAction
+
+
+class KDataTool : QObject
+{
+%TypeHeaderCode
+#include <kdatatool.h>
+%End
+
+
+public:
+ KDataTool (QObject* /TransferThis/ = 0, const char* = 0);
+ void setInstance (KInstance*);
+ KInstance* instance () const;
+ virtual bool run (const QString&, void*, const QString&, const QString&) = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDataTool
+
+
+
+%MappedType QValueList<KDataToolInfo>
+//converts a Python list of KDataToolInfo
+{
+%TypeHeaderCode
+#include <kdatatool.h>
+#include <sipkioKDataToolInfo.h>
+%End
+
+%ConvertFromTypeCode
+// Convert to a Python list of KDataToolInfo
+
+ if (!sipCpp)
+ return PyList_New(0);
+
+ PyObject *dtiList;
+
+ // Create the list
+
+ if ((dtiList = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QValueList<KDataToolInfo> *dlist = (QValueList<KDataToolInfo> *)sipCpp;
+ PyObject *inst;
+
+
+ QValueList<KDataToolInfo>::Iterator it;
+ for( it = dlist->begin(); it != dlist->end(); ++it )
+ {
+ if ((inst = sipBuildResult (NULL, "N", new KDataToolInfo (*it), sipClass_KDataToolInfo)) == NULL
+ || PyList_Append (dtiList, inst) < 0)
+ {
+ Py_DECREF (dtiList);
+ return NULL;
+ }
+ }
+
+ return dtiList;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python list to a KDataToolInfoVList on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KDataToolInfo> *dList = new QValueList<KDataToolInfo>;
+
+ PyObject *elem;
+ KDataToolInfo *d;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ d = (KDataToolInfo *)sipForceConvertTo_KDataToolInfo (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete dList;
+ return 0;
+ }
+
+ dList->append (*d);
+ }
+
+ *sipCppPtr = dList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kdcopservicestarter.sip b/python/pykde/sip/kio/kdcopservicestarter.sip
new file mode 100644
index 00000000..0944f4fe
--- /dev/null
+++ b/python/pykde/sip/kio/kdcopservicestarter.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KDCOPServiceStarter
+{
+%TypeHeaderCode
+#include <kdcopservicestarter.h>
+%End
+
+
+public:
+ static KDCOPServiceStarter* self ();
+ int findServiceFor (const QString&, const QString& = QString ::null , const QString& = QString ::null , QString* = 0, QCString* = 0, int = 0);
+ virtual int startServiceFor (const QString&, const QString& = QString ::null , const QString& = QString ::null , QString* = 0, QCString* = 0, int = 0);
+
+protected:
+ KDCOPServiceStarter ();
+ ~KDCOPServiceStarter ();
+
+}; // class KDCOPServiceStarter
+
+%End
+
diff --git a/python/pykde/sip/kio/kdirlister.sip b/python/pykde/sip/kio/kdirlister.sip
new file mode 100644
index 00000000..279b0c45
--- /dev/null
+++ b/python/pykde/sip/kio/kdirlister.sip
@@ -0,0 +1,268 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirLister : QObject
+{
+%TypeHeaderCode
+#include <kdirlister.h>
+%End
+
+
+public:
+ KDirLister (bool = 0);
+ virtual bool openURL (const KURL&, bool = 0, bool = 0);
+ virtual void stop ();
+ virtual void stop (const KURL&);
+ bool autoUpdate () const;
+ virtual void setAutoUpdate (bool);
+ bool autoErrorHandlingEnabled () const;
+ void setAutoErrorHandlingEnabled (bool, QWidget* /Transfer/);
+ bool showingDotFiles () const;
+ virtual void setShowingDotFiles (bool);
+ bool dirOnlyMode () const;
+ virtual void setDirOnlyMode (bool);
+ const KURL& url () const;
+
+%If ( KDE_3_4_0 - )
+ const KURL::List& directories () const;
+%End
+
+ virtual void emitChanges ();
+ virtual void updateDirectory (const KURL&);
+ bool isFinished () const;
+ KFileItem* rootItem () const;
+ virtual KFileItem* findByURL (const KURL&) const;
+ KFileItem* find (const KURL&) const;
+ virtual KFileItem* findByName (const QString&) const;
+ virtual void setNameFilter (const QString&);
+ const QString& nameFilter () const;
+ virtual void setMimeFilter (const QStringList&);
+
+%If ( KDE_3_1_0 - )
+ void setMimeExcludeFilter (const QStringList&);
+%End
+
+ virtual void clearMimeFilter ();
+ const QStringList& mimeFilters () const;
+ bool matchesFilter (const QString&) const;
+ bool matchesMimeFilter (const QString&) const;
+
+%If ( KDE_3_1_0 - )
+ void setMainWindow (QWidget*);
+ QWidget* mainWindow ();
+
+ enum WhichItems
+ {
+ AllItems,
+ FilteredItems
+ };
+
+ KFileItemList items (KDirLister::WhichItems = FilteredItems ) const;
+ KFileItemList itemsForDir (const KURL&, KDirLister::WhichItems = FilteredItems ) const;
+%End
+
+
+signals:
+ void started (const KURL&);
+ void completed ();
+ void completed (const KURL&);
+ void canceled ();
+ void canceled (const KURL&);
+ void redirection (const KURL&);
+ void redirection (const KURL&, const KURL&);
+ void clear ();
+ void clear (const KURL&);
+ void newItems (const KFileItemList&);
+ void itemsFilteredByMime (const KFileItemList&);
+ void deleteItem (KFileItem*);
+ void refreshItems (const KFileItemList&);
+ void infoMessage (const QString&);
+ void percent (int);
+ void totalSize (KIO::filesize_t);
+ void processedSize (KIO::filesize_t);
+ void speed (int);
+
+protected:
+ virtual bool matchesFilter (const KFileItem*) const;
+ virtual bool matchesMimeFilter (const KFileItem*) const;
+ virtual bool doNameFilter (const QString&, const QPtrList<QRegExp>&) const;
+ virtual bool doMimeFilter (const QString&, const QStringList&) const;
+
+%If ( KDE_3_1_0 - )
+ bool doMimeExcludeFilter (const QString&, const QStringList&) const;
+%End
+
+ virtual bool validURL (const KURL&) const;
+ virtual void handleError (KIO::Job*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDirLister
+
+
+
+%MappedType KFileItemList
+//converts a Python list of KFileItem
+{
+%TypeHeaderCode
+#include <sipkioKFileItem.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KFileItem> *cpplist = (QPtrList<KFileItem> *)sipCpp;
+ KFileItem *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KFileItem, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KFileItem> *cpplist = new QPtrList<KFileItem>;
+
+ PyObject *elem;
+ KFileItem *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KFileItem *)sipForceConvertTo_KFileItem (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<QRegExp>
+//converts a Python list of QRegExp
+{
+%TypeHeaderCode
+#include <qregexp.h>
+#include <sipqtQRegExp.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<QRegExp> *cpplist = (QPtrList<QRegExp> *)sipCpp;
+ QRegExp *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_QRegExp, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<QRegExp> *cpplist = new QPtrList<QRegExp>;
+
+ PyObject *elem;
+ QRegExp *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (QRegExp *)sipForceConvertTo_QRegExp (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kdirnotify.sip b/python/pykde/sip/kio/kdirnotify.sip
new file mode 100644
index 00000000..ed39bae5
--- /dev/null
+++ b/python/pykde/sip/kio/kdirnotify.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirNotify : DCOPObject
+{
+%TypeHeaderCode
+#include <kdirnotify.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_4 - )
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ QCStringList functions ();
+ QCStringList interfaces ();
+%End
+
+
+protected:
+ KDirNotify ();
+ ~KDirNotify ();
+
+public:
+ virtual void FilesAdded (const KURL&) = 0;
+ virtual void FilesRemoved (const KURL::List&) = 0;
+ virtual void FilesChanged (const KURL::List&) = 0;
+ virtual void FileRenamed (const KURL&, const KURL&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDirNotify
+
diff --git a/python/pykde/sip/kio/kdirwatch.sip b/python/pykde/sip/kio/kdirwatch.sip
new file mode 100644
index 00000000..273ea36e
--- /dev/null
+++ b/python/pykde/sip/kio/kdirwatch.sip
@@ -0,0 +1,96 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KDirWatch : QObject
+{
+%TypeHeaderCode
+#include <kdirwatch.h>
+%End
+
+
+public:
+ KDirWatch (QObject* /TransferThis/ = 0, const char* = 0);
+ void addDir (const QString&, bool = 0, bool = 0);
+ void addFile (const QString&);
+ QDateTime ctime (const QString&);
+ void removeDir (const QString&);
+ void removeFile (const QString&);
+ bool stopDirScan (const QString&);
+ bool restartDirScan (const QString&);
+ void startScan (bool = 0, bool = 0);
+ void stopScan ();
+ bool isStopped ();
+ bool contains (const QString&) const;
+ static void statistics ();
+ void setCreated (const QString&);
+ void setDirty (const QString&);
+ void setDeleted (const QString&);
+
+%If ( KDE_3_5_1 - )
+
+ enum Method
+ {
+ FAM,
+ DNotify,
+ Stat,
+ INotify
+ };
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+ KDirWatch::Method internalMethod ();
+%End
+
+ static KDirWatch* self ();
+
+%If ( KDE_3_1_0 - )
+ static bool exists ();
+%End
+
+
+signals:
+ void dirty (const QString&);
+ void created (const QString&);
+ void deleted (const QString&);
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_5_1 )
+
+ enum Method
+ {
+ FAM,
+ DNotify,
+ Stat
+ };
+
+%End
+
+
+}; // class KDirWatch
+
diff --git a/python/pykde/sip/kio/kemailsettings.sip b/python/pykde/sip/kio/kemailsettings.sip
new file mode 100644
index 00000000..22d0040c
--- /dev/null
+++ b/python/pykde/sip/kio/kemailsettings.sip
@@ -0,0 +1,84 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KEMailSettings
+{
+%TypeHeaderCode
+#include <kemailsettings.h>
+%End
+
+
+public:
+
+ enum Setting
+ {
+ ClientProgram,
+ ClientTerminal,
+ RealName,
+ EmailAddress,
+ ReplyToAddress,
+ Organization,
+ OutServer,
+ OutServerLogin,
+ OutServerPass,
+ OutServerType,
+ OutServerCommand,
+ OutServerTLS,
+ InServer,
+ InServerLogin,
+ InServerPass,
+ InServerType,
+ InServerMBXType,
+ InServerTLS
+ };
+
+
+ enum Extension
+ {
+ POP3,
+ SMTP,
+ OTHER
+ };
+
+ KEMailSettings ();
+ QStringList profiles () const;
+ QString currentProfileName () const;
+ void setProfile (const QString&);
+ QString defaultProfileName () const;
+ void setDefault (const QString&);
+ QString getSetting (KEMailSettings::Setting);
+ void setSetting (KEMailSettings::Setting, const QString&);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig QString getExtendedSetting (KEMailSettings::Extension, const QString&);
+//ig void setExtendedSetting (KEMailSettings::Extension, const QString&, const QString&);
+%End
+
+
+}; // class KEMailSettings
+
diff --git a/python/pykde/sip/kio/kfilefilter.sip b/python/pykde/sip/kio/kfilefilter.sip
new file mode 100644
index 00000000..f565494f
--- /dev/null
+++ b/python/pykde/sip/kio/kfilefilter.sip
@@ -0,0 +1,81 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileFilter
+{
+%TypeHeaderCode
+#include <kfilefilter.h>
+%End
+
+
+public:
+ virtual bool passesFilter (const KFileItem*) const = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFileFilter
+
+
+class KSimpleFileFilter : KFileFilter
+{
+%TypeHeaderCode
+#include <kfilefilter.h>
+%End
+
+
+public:
+ KSimpleFileFilter ();
+ virtual void setFilterDotFiles (bool);
+ bool filterDotFiles () const;
+ virtual void setFilterSpecials (bool);
+ bool filterSpecials () const;
+
+%If ( KDE_3_1_0 - )
+ void setNameFilters (const QString&, bool, const QChar& = ' ');
+%End
+
+ virtual void setNameFilters (const QString&);
+ virtual void setMimeFilters (const QStringList&);
+ QStringList mimeFilters () const;
+ virtual void setModeFilter (mode_t);
+ mode_t modeFilter () const;
+ virtual bool passesFilter (const KFileItem*) const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig QString nameFilters () const;
+%End
+
+
+}; // class KSimpleFileFilter
+
diff --git a/python/pykde/sip/kio/kfileitem.sip b/python/pykde/sip/kio/kfileitem.sip
new file mode 100644
index 00000000..793c36db
--- /dev/null
+++ b/python/pykde/sip/kio/kfileitem.sip
@@ -0,0 +1,171 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileItem
+{
+%TypeHeaderCode
+#include <kfileitem.h>
+%End
+
+
+public:
+
+ enum
+ {
+ Unknown
+ };
+
+ KFileItem (const KIO::UDSEntry&, const KURL&, bool = 0, bool = 0);
+ KFileItem (mode_t, mode_t, const KURL&, bool = 0);
+ KFileItem (const KURL&, const QString&, mode_t);
+ KFileItem (const KFileItem&);
+ void refresh ();
+ void refreshMimeType ();
+ const KURL& url () const;
+ void setURL (const KURL&);
+
+%If ( KDE_3_2_0 - )
+ void setName (const QString&);
+%End
+
+ mode_t permissions () const;
+ QString permissionsString () const;
+
+%If ( KDE_3_5_0 - )
+ bool hasExtendedACL () const;
+ KACL ACL () const;
+ KACL defaultACL () const;
+%End
+
+ mode_t mode () const;
+ QString user () const;
+ QString group () const;
+ bool isLink () const;
+ bool isDir () const;
+ bool isFile () const;
+ bool isReadable () const;
+
+%If ( KDE_3_4_0 - )
+ bool isWritable () const;
+%End
+
+
+%If ( KDE_3_3_0 - )
+ bool isHidden () const;
+%End
+
+ QString linkDest () const;
+
+%If ( KDE_3_4_0 - )
+ QString localPath () const;
+%End
+
+ KIO::filesize_t size () const;
+
+%If ( KDE_3_5_0 - )
+ KIO::filesize_t size (bool& /Out/) const /PyName=sizeAndExists/;
+%End
+
+ time_t time (uint) const;
+
+%If ( KDE_3_5_0 - )
+ time_t time (uint, bool& /Out/) const /PyName=timeAndHasTime/;
+%End
+
+ QString timeString (uint = KIO ::UDS_MODIFICATION_TIME ) const;
+ bool isLocalFile () const;
+ const QString& text () const;
+ const QString& name (bool = 0) const;
+ QString mimetype () const;
+ KMimeType::Ptr determineMimeType ();
+ KMimeType::Ptr mimeTypePtr ();
+ bool isMimeTypeKnown () const;
+ QString mimeComment ();
+ QString iconName ();
+ QPixmap pixmap (int, int = 0) const;
+ int overlays () const;
+ QString getStatusBarInfo ();
+ QString getToolTipText (int = 6);
+ bool acceptsDrops ();
+ void run ();
+ const KIO::UDSEntry& entry () const;
+ bool isMarked () const;
+ void mark ();
+ void unmark ();
+ bool cmp (const KFileItem&);
+//ig virtual void setExtraData (const void*, void*);
+//ig virtual const void* extraData (const void*) const;
+//ig virtual void removeExtraData (const void*);
+ void setMetaInfo (const KFileMetaInfo&);
+
+%If ( KDE_3_5_0 - )
+ void setFileMode (mode_t);
+ void setMimeType (const QString&);
+%End
+
+ const KFileMetaInfo& metaInfo (bool = 1, int = KFileMetaInfo ::Fastest ) const;
+ void assign (const KFileItem&);
+
+%If ( KDE_3_4_3 - )
+ void setUDSEntry (const KIO::UDSEntry&, const KURL&, bool = 0, bool = 0);
+%End
+
+
+%If ( KDE_3_4_0 - )
+ KURL mostLocalURL (bool&) const;
+%End
+
+
+protected:
+ void init (bool);
+
+%If ( KDE_3_4_3 - )
+ void readUDSEntry (bool);
+%End
+
+ QString parsePermissions (mode_t) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFileItem
+
+typedef QPtrList<KFileItem> KFileItemList;
+
+%If ( KDE_3_1_4 - )
+//ig typedef QPtrListIterator<KFileItem> KFileItemListIterator;
+
+%If ( KDE_3_2_0 - )
+//igx QDataStream& operator << (QDataStream&, const KFileItem&);
+//igx QDataStream& operator >> (QDataStream&, KFileItem&);
+%End
+
+%End
+
+
+%If ( - KDE_3_1_4 )
+//ig typedef QListIterator<KFileItem> KFileItemListIterator;
+%End
diff --git a/python/pykde/sip/kio/kfilemetainfo.sip b/python/pykde/sip/kio/kfilemetainfo.sip
new file mode 100644
index 00000000..18ace519
--- /dev/null
+++ b/python/pykde/sip/kio/kfilemetainfo.sip
@@ -0,0 +1,458 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFileMimeTypeInfo
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ KFileMimeTypeInfo ();
+
+%If ( KDE_3_3_0 - )
+
+ enum Attributes
+ {
+ Addable,
+ Removable,
+ Modifiable,
+ Cumulative,
+ Cummulative,
+ Averaged,
+ MultiLine,
+ SqueezeText
+ };
+
+%End
+
+
+ enum Hint
+ {
+ NoHint,
+ Name,
+ Author,
+ Description,
+ Width,
+ Height,
+ Size,
+ Bitrate,
+ Length,
+ Hidden,
+ Thumbnail
+ };
+
+
+%If ( KDE_3_3_0 - )
+
+ enum Unit
+ {
+ NoUnit,
+ Seconds,
+ MilliSeconds,
+ BitsPerSecond,
+ Pixels,
+ Inches,
+ Centimeters,
+ Bytes,
+ FramesPerSecond,
+ DotsPerInch,
+ BitsPerPixel,
+ Hertz,
+ KiloBytes,
+ Millimeters
+ };
+
+%End
+
+
+ class GroupInfo
+ {
+
+ public:
+ QStringList supportedKeys () const;
+ const QString& name () const;
+ const QString& translatedName () const;
+ const KFileMimeTypeInfo::ItemInfo* itemInfo (const QString&) const;
+ uint attributes () const;
+ bool supportsVariableKeys () const;
+ const KFileMimeTypeInfo::ItemInfo* variableItemInfo () const;
+
+ private:
+ GroupInfo (const QString&, const QString&);
+
+ }; // class GroupInfo
+
+
+public:
+
+ class ItemInfo
+ {
+
+ public:
+ ItemInfo ();
+ const QString& prefix () const;
+ const QString& suffix () const;
+ QVariant::Type type () const;
+ const QString& key () const;
+
+%If ( KDE_3_1_0 - )
+ QString string (const QVariant&, bool = 1) const;
+%End
+
+ bool isVariableItem () const;
+ const QString& translatedKey () const;
+ uint attributes () const;
+ uint hint () const;
+ uint unit () const;
+
+ private:
+ ItemInfo (const QString&, const QString&, QVariant::Type);
+
+ }; // class ItemInfo
+
+
+public:
+ QValidator* createValidator (const QString&, const QString&, QObject* /Transfer/ = 0, const char* = 0) const;
+ QStringList supportedGroups () const;
+ QStringList translatedGroups () const;
+ QStringList preferredGroups () const;
+ QString mimeType () const;
+ const KFileMimeTypeInfo::GroupInfo* groupInfo (const QString&) const;
+ QStringList supportedKeys () const;
+ QStringList preferredKeys () const;
+ KFileMimeTypeInfo::GroupInfo* addGroupInfo (const QString&, const QString&);
+ QString m_translatedName;
+ QStringList m_supportedKeys;
+ uint m_attr;
+//ig QDict<ItemInfo> m_itemDict;
+
+protected:
+ KFileMimeTypeInfo (const QString&);
+
+public:
+
+%If ( KDE_3_1_0 - KDE_3_3_0 )
+
+ enum Attributes
+ {
+ Addable,
+ Removable,
+ Modifiable,
+ Cummulative,
+ Averaged,
+ MultiLine,
+ SqueezeText
+ };
+
+%End
+
+
+public:
+
+%If ( - KDE_3_1_0 )
+
+ enum Attributes
+ {
+ Addable,
+ Removable,
+ Modifiable,
+ Cummulative,
+ Averaged
+ };
+
+%End
+
+
+}; // class KFileMimeTypeInfo
+
+
+class KFileMetaInfoItem
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ typedef KFileMimeTypeInfo::Hint Hint;
+//ig typedef KFileMimeTypeInfo::Unit Unit;
+ typedef KFileMimeTypeInfo::Attributes Attributes;
+ KFileMetaInfoItem (const KFileMimeTypeInfo::ItemInfo*, const QString&, const QVariant&);
+ KFileMetaInfoItem (const KFileMetaInfoItem&);
+ KFileMetaInfoItem ();
+ QString key () const;
+ QString translatedKey () const;
+ const QVariant& value () const;
+ QString string (bool = 1) const;
+ bool setValue (const QVariant&);
+ QVariant::Type type () const;
+ bool isEditable () const;
+ bool isRemoved () const;
+ bool isModified () const;
+ QString prefix () const;
+ QString suffix () const;
+ uint hint () const;
+//ig uint unit () const;
+ uint attributes () const;
+ bool isValid () const;
+
+protected:
+ void setAdded ();
+
+%If ( KDE_3_1_0 - )
+ void setRemoved ();
+%End
+
+ void ref ();
+ void deref ();
+
+}; // class KFileMetaInfoItem
+
+
+class KFileMetaInfoGroup
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ KFileMetaInfoGroup (const QString&, const KFileMimeTypeInfo*);
+ KFileMetaInfoGroup (const KFileMetaInfoGroup&);
+ KFileMetaInfoGroup ();
+ bool isValid () const;
+ bool isEmpty () const;
+
+%If ( KDE_3_1_0 - )
+ bool isModified () const;
+
+%If ( KDE_3_1_4 - )
+ KFileMetaInfoItem operator [] (const QString&) const;
+%MethodCode
+//returns (KFileMetaInfoItem)
+//takes key | (QString)
+ sipRes = &((*sipCpp) [(const QString&) *a0]);
+%End
+
+%End
+
+%End
+
+ KFileMetaInfoItem item (const QString&) const;
+ KFileMetaInfoItem item (uint) const;
+ const QVariant value (const QString&) const;
+ QStringList supportedKeys () const;
+ bool supportsVariableKeys () const;
+ bool contains (const QString&) const;
+ QStringList keys () const;
+ QStringList preferredKeys () const;
+ KFileMetaInfoItem addItem (const QString&);
+ bool removeItem (const QString&);
+ QStringList removedItems ();
+ QString name () const;
+
+%If ( KDE_3_2_0 - )
+ QString translatedName () const;
+%End
+
+ uint attributes () const;
+
+protected:
+ void setAdded ();
+ KFileMetaInfoItem appendItem (const QString&, const QVariant&);
+ void ref ();
+ void deref ();
+
+}; // class KFileMetaInfoGroup
+
+
+class KFileMetaInfo
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ typedef KFileMimeTypeInfo::Hint Hint;
+//ig typedef KFileMimeTypeInfo::Unit Unit;
+ typedef KFileMimeTypeInfo::Attributes Attributes;
+
+ enum What
+ {
+ Fastest,
+ DontCare,
+ TechnicalInfo,
+ ContentInfo,
+ ExtenedAttr,
+ Thumbnail,
+ Preferred,
+ Everything
+ };
+
+ KFileMetaInfo (const QString&, const QString& = QString ::null , uint = Fastest );
+
+%If ( KDE_3_2_0 - )
+ KFileMetaInfo (const KURL&, const QString& = QString ::null , uint = Fastest );
+%End
+
+ KFileMetaInfo ();
+ KFileMetaInfo (const KFileMetaInfo&);
+ QStringList groups () const;
+ QStringList supportedGroups () const;
+ QStringList preferredGroups () const;
+ QStringList preferredKeys () const;
+ QStringList supportedKeys () const;
+ QStringList editableGroups () const;
+ KFileMetaInfoItem item (const QString&) const;
+ KFileMetaInfoItem item (const Hint) const;
+ KFileMetaInfoItem saveItem (const QString&, const QString& = QString ::null , bool = 1);
+ KFileMetaInfoGroup group (const QString&) const;
+
+%If ( KDE_3_1_4 - )
+ KFileMetaInfoGroup operator [] (const QString&) const;
+%MethodCode
+//returns (KFileMetaInfoGroup)
+//takes key | (QString)
+ sipRes = &((*sipCpp) [(const QString&)*a0]);
+%End
+
+%End
+
+ bool addGroup (const QString&);
+ bool removeGroup (const QString&);
+ QStringList removedGroups ();
+ bool applyChanges ();
+
+%If ( KDE_3_5_3 - )
+ bool applyChanges (const QString&);
+%End
+
+ bool contains (const QString&) const;
+ bool containsGroup (const QString&) const;
+ const QVariant value (const QString&) const;
+ bool isValid () const;
+ bool isEmpty () const;
+ QString mimeType () const;
+ QString path () const;
+
+%If ( KDE_3_2_0 - )
+ KURL url () const;
+%End
+
+
+protected:
+ KFileMetaInfoGroup appendGroup (const QString&);
+ KFilePlugin* plugin () const;
+ void ref ();
+ void deref ();
+
+}; // class KFileMetaInfo
+
+
+class KFilePlugin : QObject
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ KFilePlugin (QObject* /TransferThis/, const char*, const QStringList&);
+ virtual bool readInfo (KFileMetaInfo&, uint = KFileMetaInfo ::Fastest ) = 0;
+ virtual bool writeInfo (const KFileMetaInfo&) const;
+ virtual QValidator* createValidator (const QString&, const QString&, const QString&, QObject*, const char*) const;
+
+protected:
+ KFileMimeTypeInfo* addMimeTypeInfo (const QString&);
+ KFileMimeTypeInfo::GroupInfo* addGroupInfo (KFileMimeTypeInfo*, const QString&, const QString&) const;
+ void setAttributes (KFileMimeTypeInfo::GroupInfo*, uint) const;
+ void addVariableInfo (KFileMimeTypeInfo::GroupInfo*, QVariant::Type, uint) const;
+ KFileMimeTypeInfo::ItemInfo* addItemInfo (KFileMimeTypeInfo::GroupInfo*, const QString&, const QString&, QVariant::Type);
+ void setAttributes (KFileMimeTypeInfo::ItemInfo*, uint);
+ void setHint (KFileMimeTypeInfo::ItemInfo*, uint);
+ void setUnit (KFileMimeTypeInfo::ItemInfo*, uint);
+ void setPrefix (KFileMimeTypeInfo::ItemInfo*, const QString&);
+ void setSuffix (KFileMimeTypeInfo::ItemInfo*, const QString&);
+ KFileMetaInfoGroup appendGroup (KFileMetaInfo&, const QString&);
+ void appendItem (KFileMetaInfoGroup&, const QString&, QVariant);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFilePlugin
+
+
+class KFileMetaInfoProvider : QObject
+{
+%TypeHeaderCode
+#include <kfilemetainfo.h>
+%End
+
+
+public:
+ static KFileMetaInfoProvider* self ();
+ KFilePlugin* plugin (const QString&);
+
+%If ( KDE_3_4_0 - )
+ KFilePlugin* plugin (const QString&, const QString&);
+%End
+
+ const KFileMimeTypeInfo* mimeTypeInfo (const QString&);
+
+%If ( KDE_3_4_0 - )
+ const KFileMimeTypeInfo* mimeTypeInfo (const QString&, const QString&);
+%End
+
+ QStringList preferredKeys (const QString&) const;
+ QStringList preferredGroups (const QString&) const;
+
+%If ( KDE_3_1_0 - )
+ QStringList supportedMimeTypes () const;
+%End
+
+
+protected:
+//ig KFileMetaInfoProvider ();
+//force
+
+private:
+ KFileMetaInfoProvider ();
+//end
+
+}; // class KFileMetaInfoProvider
+
+
+%If ( KDE_3_1_4 - )
+//igx QDataStream& operator << (QDataStream&, const KFileMetaInfoItem&);
+//igx QDataStream& operator >> (QDataStream&, KFileMetaInfoItem&);
+//igx QDataStream& operator << (QDataStream&, const KFileMetaInfoGroup&);
+//igx QDataStream& operator >> (QDataStream&, KFileMetaInfoGroup&);
+//igx QDataStream& operator << (QDataStream&, const KFileMetaInfo&);
+//igx QDataStream& operator >> (QDataStream&, KFileMetaInfo&);
+%End
diff --git a/python/pykde/sip/kio/kfileshare.sip b/python/pykde/sip/kio/kfileshare.sip
new file mode 100644
index 00000000..83c7df3b
--- /dev/null
+++ b/python/pykde/sip/kio/kfileshare.sip
@@ -0,0 +1,87 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+//ig class KFileSharePrivate : QObject;
+
+
+%If ( KDE_3_1_0 - )
+
+class KFileShare
+{
+%TypeHeaderCode
+#include <kfileshare.h>
+%End
+
+
+public:
+ static void readConfig ();
+
+%If ( KDE_3_3_0 - )
+ static void readShareList ();
+%End
+
+ static bool isDirectoryShared (const QString&);
+
+ enum Authorization
+ {
+ NotInitialized,
+ ErrorNotFound,
+ Authorized,
+ UserNotAllowed
+ };
+
+ static KFileShare::Authorization authorization ();
+ static QString findExe (const char*);
+ static bool setShared (const QString&, bool);
+
+%If ( KDE_3_3_0 - )
+
+ enum ShareMode
+ {
+ Simple,
+ Advanced
+ };
+
+ static bool sharingEnabled ();
+ static bool isRestricted ();
+ static QString fileShareGroup ();
+ static KFileShare::ShareMode shareMode ();
+ static bool sambaEnabled ();
+ static bool nfsEnabled ();
+%End
+
+
+public:
+
+%If ( - KDE_3_1_5 )
+//ig static bool setShared (const QString&, bool, bool);
+%End
+
+
+}; // class KFileShare
+
+%End
+
diff --git a/python/pykde/sip/kio/kfilterbase.sip b/python/pykde/sip/kio/kfilterbase.sip
new file mode 100644
index 00000000..bbfa952d
--- /dev/null
+++ b/python/pykde/sip/kio/kfilterbase.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFilterBase : QObject
+{
+%TypeHeaderCode
+#include <qobject.h>
+#include <kfilterbase.h>
+%End
+
+
+public:
+ KFilterBase ();
+
+%If ( KDE_3_1_2 - )
+ void setDevice (QIODevice*, bool = 0);
+%End
+
+ QIODevice* device ();
+ virtual void init (int) = 0;
+ virtual int mode () const = 0;
+ virtual void terminate ();
+ virtual void reset ();
+ virtual bool readHeader () = 0;
+ virtual bool writeHeader (const QCString&) = 0;
+ virtual void setOutBuffer (char*, uint) = 0;
+ virtual void setInBuffer (const char*, uint) = 0;
+ virtual bool inBufferEmpty () const;
+ virtual int inBufferAvailable () const = 0;
+ virtual bool outBufferFull () const;
+ virtual int outBufferAvailable () const = 0;
+
+ enum Result
+ {
+ OK,
+ END,
+ ERROR
+ };
+
+ virtual Result uncompress () = 0;
+ virtual KFilterBase::Result compress (bool) = 0;
+ static KFilterBase* findFilterByFileName (const QString&);
+ static KFilterBase* findFilterByMimeType (const QString&);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFilterBase
+
diff --git a/python/pykde/sip/kio/kfilterdev.sip b/python/pykde/sip/kio/kfilterdev.sip
new file mode 100644
index 00000000..b07d1dd9
--- /dev/null
+++ b/python/pykde/sip/kio/kfilterdev.sip
@@ -0,0 +1,73 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KFilterDev : QIODevice
+{
+%TypeHeaderCode
+#include <kfilterdev.h>
+%End
+
+
+public:
+ KFilterDev (KFilterBase*, bool);
+ virtual bool open (int);
+ virtual void close ();
+ virtual void flush ();
+ void setOrigFileName (const QCString&);
+
+%If ( KDE_3_1_0 - )
+ void setSkipHeaders ();
+%End
+
+ virtual QIODevice::Offset size () const;
+ virtual QIODevice::Offset at () const;
+ virtual bool at (QIODevice::Offset);
+ virtual bool atEnd () const;
+//ig virtual Q_LONG readBlock (char*, Q_ULONG);
+//ig virtual Q_LONG writeBlock (const char*, Q_ULONG);
+ virtual int getch ();
+ virtual int putch (int);
+ virtual int ungetch (int);
+ static QIODevice* createFilterDevice (KFilterBase*, QFile*);
+
+public:
+ static QIODevice* deviceForFile (const QString&, const QString& = QString ::null , bool = 0);
+ static QIODevice* device (QIODevice*, const QString&);
+
+%If ( KDE_3_1_0 - )
+ static QIODevice* device (QIODevice*, const QString&, bool);
+%End
+
+
+public:
+
+%If ( - KDE_3_2_2 )
+ virtual long writeBlock (const char*, ulong);
+%End
+
+
+}; // class KFilterDev
+
diff --git a/python/pykde/sip/kio/kimageio.sip b/python/pykde/sip/kio/kimageio.sip
new file mode 100644
index 00000000..a3379c11
--- /dev/null
+++ b/python/pykde/sip/kio/kimageio.sip
@@ -0,0 +1,59 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KImageIO
+{
+%TypeHeaderCode
+#include <kimageio.h>
+%End
+
+
+public:
+
+ enum Mode
+ {
+ Reading,
+ Writing
+ };
+
+ static void registerFormats ();
+ static bool canWrite (const QString&);
+ static bool canRead (const QString&);
+ static QStringList types (KImageIO::Mode = Writing );
+ static QString pattern (KImageIO::Mode = Reading );
+ static QString suffix (const QString&);
+
+%If ( KDE_3_1_0 - )
+ static QString typeForMime (const QString&);
+%End
+
+ static QString type (const QString&);
+ static QStringList mimeTypes (KImageIO::Mode = Writing );
+ static bool isSupported (const QString&, KImageIO::Mode = Writing );
+ static QString mimeType (const QString&);
+
+}; // class KImageIO
+
diff --git a/python/pykde/sip/kio/kio-kde310.diff b/python/pykde/sip/kio/kio-kde310.diff
new file mode 100644
index 00000000..89a40fb8
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde310.diff
@@ -0,0 +1,5 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde311.diff b/python/pykde/sip/kio/kio-kde311.diff
new file mode 100644
index 00000000..de04c4f2
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde311.diff
@@ -0,0 +1,4 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde312.diff b/python/pykde/sip/kio/kio-kde312.diff
new file mode 100644
index 00000000..89a40fb8
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde312.diff
@@ -0,0 +1,5 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde313.diff b/python/pykde/sip/kio/kio-kde313.diff
new file mode 100644
index 00000000..89a40fb8
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde313.diff
@@ -0,0 +1,5 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde314.diff b/python/pykde/sip/kio/kio-kde314.diff
new file mode 100644
index 00000000..89a40fb8
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde314.diff
@@ -0,0 +1,5 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde315.diff b/python/pykde/sip/kio/kio-kde315.diff
new file mode 100644
index 00000000..89a40fb8
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde315.diff
@@ -0,0 +1,5 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde320.diff b/python/pykde/sip/kio/kio-kde320.diff
new file mode 100644
index 00000000..51249444
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde320.diff
@@ -0,0 +1,6 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde321.diff b/python/pykde/sip/kio/kio-kde321.diff
new file mode 100644
index 00000000..51249444
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde321.diff
@@ -0,0 +1,6 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde322.diff b/python/pykde/sip/kio/kio-kde322.diff
new file mode 100644
index 00000000..51249444
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde322.diff
@@ -0,0 +1,6 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde323.diff b/python/pykde/sip/kio/kio-kde323.diff
new file mode 100644
index 00000000..51249444
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde323.diff
@@ -0,0 +1,6 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde330.diff b/python/pykde/sip/kio/kio-kde330.diff
new file mode 100644
index 00000000..901fbebe
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde330.diff
@@ -0,0 +1,10 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde331.diff b/python/pykde/sip/kio/kio-kde331.diff
new file mode 100644
index 00000000..901fbebe
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde331.diff
@@ -0,0 +1,10 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde332.diff b/python/pykde/sip/kio/kio-kde332.diff
new file mode 100644
index 00000000..901fbebe
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde332.diff
@@ -0,0 +1,10 @@
++ %Include davjob.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde340.diff b/python/pykde/sip/kio/kio-kde340.diff
new file mode 100644
index 00000000..324b1d49
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde340.diff
@@ -0,0 +1,11 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde341.diff b/python/pykde/sip/kio/kio-kde341.diff
new file mode 100644
index 00000000..324b1d49
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde341.diff
@@ -0,0 +1,11 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde342.diff b/python/pykde/sip/kio/kio-kde342.diff
new file mode 100644
index 00000000..324b1d49
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde342.diff
@@ -0,0 +1,11 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde343.diff b/python/pykde/sip/kio/kio-kde343.diff
new file mode 100644
index 00000000..324b1d49
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde343.diff
@@ -0,0 +1,11 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde350.diff b/python/pykde/sip/kio/kio-kde350.diff
new file mode 100644
index 00000000..3d0cb015
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde350.diff
@@ -0,0 +1,12 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kacl.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde351.diff b/python/pykde/sip/kio/kio-kde351.diff
new file mode 100644
index 00000000..3d0cb015
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde351.diff
@@ -0,0 +1,12 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kacl.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde352.diff b/python/pykde/sip/kio/kio-kde352.diff
new file mode 100644
index 00000000..3d0cb015
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde352.diff
@@ -0,0 +1,12 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kacl.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kio-kde353.diff b/python/pykde/sip/kio/kio-kde353.diff
new file mode 100644
index 00000000..3d0cb015
--- /dev/null
+++ b/python/pykde/sip/kio/kio-kde353.diff
@@ -0,0 +1,12 @@
++ %Include davjob.sip
++ %Include forwardingslavebase.sip
++ %Include kacl.sip
++ %Include kar.sip
++ %Include kdcopservicestarter.sip
++ %Include kfileshare.sip
++ %Include kmimetypechooser.sip
++ %Include knfsshare.sip
++ %Include kremoteencoding.sip
++ %Include ksambashare.sip
++ %Include kzip.sip
++ %Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kiomod.sip b/python/pykde/sip/kio/kiomod.sip
new file mode 100644
index 00000000..0000f7a2
--- /dev/null
+++ b/python/pykde/sip/kio/kiomod.sip
@@ -0,0 +1,107 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kio
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+
+%Include authinfo.sip
+%Include chmodjob.sip
+%Include connection.sip
+%Include defaultprogress.sip
+%Include global.sip
+%Include job.sip
+%Include jobclasses.sip
+%Include karchive.sip
+%Include kautomount.sip
+%Include kdatatool.sip
+%Include kdirlister.sip
+%Include kdirnotify.sip
+%Include kdirwatch.sip
+%Include kemailsettings.sip
+%Include kfilefilter.sip
+%Include kfileitem.sip
+%Include kfilemetainfo.sip
+%Include kfilterbase.sip
+%Include kfilterdev.sip
+%Include kimageio.sip
+%Include kmimemagic.sip
+%Include kmimetype.sip
+%Include kprotocolinfo.sip
+%Include kprotocolmanager.sip
+%Include krun.sip
+%Include kscan.sip
+%Include kservice.sip
+%Include kservicegroup.sip
+%Include kservicetype.sip
+%Include kshellcompletion.sip
+%Include kshred.sip
+%Include ksycoca.sip
+%Include ksycocaentry.sip
+%Include ksycocafactory.sip
+%Include ksycocatype.sip
+%Include ktar.sip
+%Include ktrader.sip
+%Include kurifilter.sip
+%Include kurlcompletion.sip
+%Include kurlpixmapprovider.sip
+%Include kuserprofile.sip
+%Include netaccess.sip
+%Include observer.sip
+%Include passdlg.sip
+%Include paste.sip
+%Include previewjob.sip
+%Include progressbase.sip
+%Include renamedlg.sip
+%Include renamedlgplugin.sip
+%Include scheduler.sip
+%Include sessiondata.sip
+%Include skipdlg.sip
+%Include slave.sip
+%Include slavebase.sip
+%Include slaveconfig.sip
+%Include slaveinterface.sip
+%Include statusbarprogress.sip
+%Include tcpslavebase.sip
+%Include thumbcreator.sip
+%Include davjob.sip
+%Include forwardingslavebase.sip
+%Include kar.sip
+%Include kdcopservicestarter.sip
+%Include kfileshare.sip
+%Include kmimetypechooser.sip
+%Include knfsshare.sip
+%Include kremoteencoding.sip
+%Include ksambashare.sip
+%Include kzip.sip
+%Include metainfojob.sip
diff --git a/python/pykde/sip/kio/kiomod.sip.in b/python/pykde/sip/kio/kiomod.sip.in
new file mode 100644
index 00000000..1b13a01a
--- /dev/null
+++ b/python/pykde/sip/kio/kiomod.sip.in
@@ -0,0 +1,97 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kio
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+
+%Include authinfo.sip
+%Include chmodjob.sip
+%Include connection.sip
+%Include defaultprogress.sip
+%Include global.sip
+%Include job.sip
+%Include jobclasses.sip
+%Include karchive.sip
+%Include kautomount.sip
+%Include kdatatool.sip
+%Include kdirlister.sip
+%Include kdirnotify.sip
+%Include kdirwatch.sip
+%Include kemailsettings.sip
+%Include kfilefilter.sip
+%Include kfileitem.sip
+%Include kfilemetainfo.sip
+%Include kfilterbase.sip
+%Include kfilterdev.sip
+%Include kimageio.sip
+%Include kmimemagic.sip
+%Include kmimetype.sip
+%Include kprotocolinfo.sip
+%Include kprotocolmanager.sip
+%Include krun.sip
+%Include kscan.sip
+%Include kservice.sip
+%Include kservicegroup.sip
+%Include kservicetype.sip
+%Include kshellcompletion.sip
+%Include kshred.sip
+%Include ksycoca.sip
+%Include ksycocaentry.sip
+%Include ksycocafactory.sip
+%Include ksycocatype.sip
+%Include ktar.sip
+%Include ktrader.sip
+%Include kurifilter.sip
+%Include kurlcompletion.sip
+%Include kurlpixmapprovider.sip
+%Include kuserprofile.sip
+%Include netaccess.sip
+%Include observer.sip
+%Include passdlg.sip
+%Include paste.sip
+%Include previewjob.sip
+%Include progressbase.sip
+%Include renamedlg.sip
+%Include renamedlgplugin.sip
+%Include scheduler.sip
+%Include sessiondata.sip
+%Include skipdlg.sip
+%Include slave.sip
+%Include slavebase.sip
+%Include slaveconfig.sip
+%Include slaveinterface.sip
+%Include statusbarprogress.sip
+%Include tcpslavebase.sip
+%Include thumbcreator.sip
+@mark@
diff --git a/python/pykde/sip/kio/kmimemagic.sip b/python/pykde/sip/kio/kmimemagic.sip
new file mode 100644
index 00000000..dc9a83bf
--- /dev/null
+++ b/python/pykde/sip/kio/kmimemagic.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMimeMagicResult
+{
+%TypeHeaderCode
+#include <kmimemagic.h>
+%End
+
+
+public:
+ KMimeMagicResult ();
+ const QString mimeType ();
+ int accuracy ();
+ bool isValid ();
+ void setMimeType (const QString&);
+ void setAccuracy (int);
+ void setInvalid ();
+
+protected:
+
+}; // class KMimeMagicResult
+
+
+class KMimeMagic
+{
+%TypeHeaderCode
+#include <kmimemagic.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+ KMimeMagic ();
+%End
+
+ KMimeMagic (const QString&);
+ bool mergeConfig (const QString&);
+ bool mergeBufConfig (char*);
+ void setFollowLinks (bool);
+ KMimeMagicResult* findFileType (const QString&);
+ KMimeMagicResult* findBufferType (const QByteArray&);
+ KMimeMagicResult* findBufferFileType (const QByteArray&, const QString&);
+ static KMimeMagic* self ();
+
+protected:
+ static void initStatic ();
+
+}; // class KMimeMagic
+
diff --git a/python/pykde/sip/kio/kmimetype.sip b/python/pykde/sip/kio/kmimetype.sip
new file mode 100644
index 00000000..b4ce3ee0
--- /dev/null
+++ b/python/pykde/sip/kio/kmimetype.sip
@@ -0,0 +1,432 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMimeType : KServiceType
+{
+%TypeHeaderCode
+#include <kmimetype.h>
+%End
+
+
+public:
+
+ typedef KSharedPtr<KMimeType> Ptr;
+ typedef QValueList<KMimeType::Ptr> List;
+
+public:
+ KMimeType (const QString&, const QString&, const QString&, const QString&, const QStringList&);
+ KMimeType (const QString&);
+ KMimeType (KDesktopFile*);
+ KMimeType (QDataStream&, int);
+ virtual QString icon (const QString&, bool) const;
+ virtual QString icon (const KURL&, bool) const;
+ virtual QPixmap pixmap (KIcon::Group, int = 0, int = 0, QString* = 0) const;
+ virtual QPixmap pixmap (const KURL&, KIcon::Group, int = 0, int = 0, QString* = 0) const;
+ static QPixmap pixmapForURL (const KURL&, mode_t = 0, KIcon::Group = KIcon ::Desktop , int = 0, int = 0, QString* = 0);
+ static QString iconForURL (const KURL&, mode_t = 0);
+ static QString favIconForURL (const KURL&);
+ QString comment () const;
+ virtual QString comment (const QString&, bool) const;
+ virtual QString comment (const KURL&, bool) const;
+ const QStringList& patterns () const;
+ virtual void load (QDataStream&);
+ virtual void save (QDataStream&);
+ virtual QVariant property (const QString&) const;
+ virtual QStringList propertyNames () const;
+ static KMimeType::Ptr mimeType (const QString&);
+ static KMimeType::Ptr findByURL (const KURL&, mode_t = 0, bool = 0, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ static KMimeType::Ptr findByURL (const KURL&, mode_t, bool, bool, bool*);
+%End
+
+ static KMimeType::Ptr findByPath (const QString&, mode_t = 0, bool = 0);
+ static KMimeType::Ptr findByContent (const QByteArray&, int* = 0);
+ static KMimeType::Ptr findByFileContent (const QString&, int* = 0);
+
+%If ( KDE_3_2_1 - )
+
+ class Format
+ {
+
+ public:
+ bool text;
+
+ enum
+ {
+ NoCompression,
+ GZipCompression
+ };
+
+//ig int compression;
+ int dummy;
+
+ }; // class Format
+
+
+public:
+%End
+
+
+%If ( KDE_3_2_0 - )
+//ig static KMimeType::Format findFormatByFileContent (const QString&);
+%End
+
+ static KMimeType::List allMimeTypes ();
+ static const QString& defaultMimeType ();
+
+%If ( KDE_3_2_0 - )
+ static KMimeType::Ptr defaultMimeTypePtr ();
+ QString parentMimeType () const;
+ bool is (const QString&) const;
+ static KMimeType::Ptr diagnoseFileName (const QString&, QString&);
+%End
+
+
+protected:
+ void loadInternal (QDataStream&);
+ void init (KDesktopFile*);
+ static void errorMissingMimeType (const QString&);
+ static void buildDefaultType ();
+ static void checkEssentialMimeTypes ();
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ int patternsAccuracy () const;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KMimeType
+
+
+class KFolderType : KMimeType
+{
+%TypeHeaderCode
+#include <kmimetype.h>
+%End
+
+
+public:
+ KFolderType (KDesktopFile*);
+ KFolderType (QDataStream&, int);
+ virtual QString icon (const QString&, bool) const;
+ virtual QString icon (const KURL&, bool) const;
+ virtual QString comment (const QString&, bool) const;
+ virtual QString comment (const KURL&, bool) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KFolderType
+
+
+class KDEDesktopMimeType : KMimeType
+{
+%TypeHeaderCode
+#include <kmimetype.h>
+%End
+
+
+public:
+
+ enum ServiceType
+ {
+ ST_MOUNT,
+ ST_UNMOUNT,
+ ST_USER_DEFINED
+ };
+
+
+ class Service
+ {
+
+ public:
+ Service ();
+
+%If ( KDE_3_2_0 - )
+ bool isEmpty () const;
+%End
+
+ QString m_strName;
+ QString m_strIcon;
+ QString m_strExec;
+ KDEDesktopMimeType::ServiceType m_type;
+ bool m_display;
+
+ }; // class Service
+
+
+public:
+ KDEDesktopMimeType (KDesktopFile*);
+ KDEDesktopMimeType (QDataStream&, int);
+ virtual QString icon (const QString&, bool) const;
+ virtual QString icon (const KURL&, bool) const;
+ virtual QPixmap pixmap (const KURL&, KIcon::Group, int = 0, int = 0, QString* = 0) const;
+ virtual QString comment (const QString&, bool) const;
+ virtual QString comment (const KURL&, bool) const;
+ static QValueList<KDEDesktopMimeType::Service> builtinServices (const KURL&);
+ static QValueList<KDEDesktopMimeType::Service> userDefinedServices (const QString&, bool);
+
+%If ( KDE_3_4_0 - )
+ static QValueList<KDEDesktopMimeType::Service> userDefinedServices (const QString&, KConfig&, bool);
+
+%If ( KDE_3_5_0 - )
+ static QValueList<KDEDesktopMimeType::Service> userDefinedServices (const QString&, KConfig&, bool, const KURL::List&);
+%End
+
+%End
+
+ static void executeService (const QString&, KDEDesktopMimeType::Service&);
+ static void executeService (const KURL::List&, KDEDesktopMimeType::Service&);
+ static pid_t run (const KURL&, bool);
+
+protected:
+ virtual QPixmap pixmap (KIcon::Group, int, int, QString*) const;
+ static pid_t runFSDevice (const KURL&, const KSimpleConfig&);
+ static pid_t runApplication (const KURL&, const QString&);
+ static pid_t runLink (const KURL&, const KSimpleConfig&);
+ static pid_t runMimeType (const KURL&, const KSimpleConfig&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KDEDesktopMimeType
+
+
+class KExecMimeType : KMimeType
+{
+%TypeHeaderCode
+#include <kmimetype.h>
+%End
+
+
+public:
+ KExecMimeType (KDesktopFile*);
+ KExecMimeType (QDataStream&, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KExecMimeType
+
+
+
+%MappedType KMimeType::Ptr
+//converts KMimeType
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kmimetype.h>
+#include <sipkioKMimeType.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KMimeType> *cPtr = (KSharedPtr<KMimeType> *)sipCpp;
+ KMimeType *cpp = new KMimeType (*cPtr->data ());
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KMimeType, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KMimeType *cpp = (KMimeType *)sipForceConvertTo_KMimeType (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KMimeType> (cpp);
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<KDEDesktopMimeType::Service>
+//converts a Python list of KDEDesktopMimeType.Service
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkioKDEDesktopMimeType.h>
+#include <sipkioKDEDesktopMimeTypeService.h>
+#include <kmimetype.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KDEDesktopMimeType::Service> *cpplist = (QValueList<KDEDesktopMimeType::Service> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KDEDesktopMimeType::Service>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KDEDesktopMimeType::Service (*it), sipClass_KDEDesktopMimeType_Service)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KDEDesktopMimeType::Service> *cpplist = new QValueList<KDEDesktopMimeType::Service>;
+
+ PyObject *elem;
+ KDEDesktopMimeType::Service *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KDEDesktopMimeType::Service *)sipForceConvertTo_KDEDesktopMimeType_Service (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<KMimeType::Ptr>
+//converts a Python list of KMimeType
+{
+%TypeHeaderCode
+#include <kmimetype.h>
+#include <sipkioKMimeType.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KMimeType).
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QValueList<KMimeType::Ptr> *cList = (QValueList<KMimeType::Ptr> *)sipCpp;
+ PyObject *inst;
+ KMimeType *svc;
+
+ QValueList<KMimeType::Ptr>::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ svc = new KMimeType (*(KMimeType *)((KMimeType::Ptr)(*it)).data ());
+ inst = sipBuildResult (NULL, "N", svc, sipClass_KMimeType);
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KMimeType::Ptr> *cList = new QValueList<KMimeType::Ptr>;
+ PyObject *elem;
+ KMimeType *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KMimeType *)sipForceConvertTo_KMimeType (elem, &iserr);
+
+ KMimeType::Ptr *ptr = new KMimeType::Ptr (service);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kmimetypechooser.sip b/python/pykde/sip/kio/kmimetypechooser.sip
new file mode 100644
index 00000000..d1868c79
--- /dev/null
+++ b/python/pykde/sip/kio/kmimetypechooser.sip
@@ -0,0 +1,74 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KMimeTypeChooser : QVBox
+{
+%TypeHeaderCode
+#include <kmimetypechooser.h>
+%End
+
+
+public:
+
+ enum Visuals
+ {
+ Comments,
+ Patterns,
+ EditButton
+ };
+
+ KMimeTypeChooser (const QString& = QString ::null , const QStringList& = 0, const QString& = QString ::null , const QStringList& = QStringList (), int = Comments |Patterns |EditButton , QWidget* /TransferThis/ = 0, const char* = 0);
+ QStringList mimeTypes () const;
+ QStringList patterns () const;
+
+public slots:
+ void editMimeType ();
+
+}; // class KMimeTypeChooser
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class KMimeTypeChooserDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kmimetypechooser.h>
+%End
+
+
+public:
+ KMimeTypeChooserDialog (const QString& = QString ::null , const QString& = QString ::null , const QStringList& = QStringList (), const QString& = QString ::null , const QStringList& = QStringList (), int = KMimeTypeChooser ::Comments |KMimeTypeChooser ::Patterns |KMimeTypeChooser ::EditButton , QWidget* /TransferThis/ = 0, const char* = 0);
+ KMimeTypeChooserDialog (const QString&, const QString&, const QStringList&, const QString&, QWidget* /TransferThis/ = 0, const char* = 0);
+ KMimeTypeChooser* chooser ();
+
+}; // class KMimeTypeChooserDialog
+
+%End
+
diff --git a/python/pykde/sip/kio/knfsshare.sip b/python/pykde/sip/kio/knfsshare.sip
new file mode 100644
index 00000000..c43cd3a2
--- /dev/null
+++ b/python/pykde/sip/kio/knfsshare.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KNFSShare : QObject
+{
+%TypeHeaderCode
+#include <knfsshare.h>
+%End
+
+
+public:
+ static KNFSShare* instance ();
+ bool isDirectoryShared (const QString&) const;
+ QStringList sharedDirectories () const;
+ QString exportsPath () const;
+
+signals:
+ void changed ();
+
+private:
+ KNFSShare ();
+
+}; // class KNFSShare
+
+%End
+
diff --git a/python/pykde/sip/kio/kpac.sip b/python/pykde/sip/kio/kpac.sip
new file mode 100644
index 00000000..755c4fd1
--- /dev/null
+++ b/python/pykde/sip/kio/kpac.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2003 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2002 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE_3_1_4
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KPAC
+{
+%TypeHeaderCode
+#include <kpac.h>
+%End
+
+
+public:
+ virtual QString proxyForURL (const KURL&) = 0;
+ virtual bool init (const KURL&) = 0;
+ virtual bool discover () = 0;
+ virtual void badProxy (const QString&) = 0;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KPAC
+
diff --git a/python/pykde/sip/kio/kprotocolinfo.sip b/python/pykde/sip/kio/kprotocolinfo.sip
new file mode 100644
index 00000000..7d2dd12d
--- /dev/null
+++ b/python/pykde/sip/kio/kprotocolinfo.sip
@@ -0,0 +1,288 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProtocolInfo : KSycocaEntry
+{
+%TypeHeaderCode
+#include <kprotocolinfo.h>
+%End
+
+
+public:
+ typedef KSharedPtr<KProtocolInfo> Ptr;
+
+public:
+ KProtocolInfo (const QString&);
+ virtual bool isValid () const;
+ virtual QString name () const;
+ static QStringList protocols ();
+ static bool isKnownProtocol (const KURL&);
+ static bool isKnownProtocol (const QString&);
+ static QString exec (const QString&) /PyName=exec_/;
+
+ enum Type
+ {
+ T_STREAM,
+ T_FILESYSTEM,
+ T_NONE,
+ T_ERROR
+ };
+
+ static KProtocolInfo::Type inputType (const KURL&);
+ static KProtocolInfo::Type outputType (const KURL&);
+ static QStringList listing (const KURL&);
+
+%If ( KDE_3_2_0 - )
+
+ class ExtraField
+ {
+
+ public:
+ ExtraField ();
+ ExtraField (const QString&, const QString&);
+ QString name;
+ QString type;
+
+ }; // class ExtraField
+
+
+public:
+%End
+
+
+%If ( KDE_3_2_0 - )
+ typedef QValueList<KProtocolInfo::ExtraField> ExtraFieldList;
+ static KProtocolInfo::ExtraFieldList extraFields (const KURL&);
+%End
+
+ static bool isSourceProtocol (const KURL&);
+ static bool isHelperProtocol (const KURL&);
+ static bool isHelperProtocol (const QString&);
+ static bool isFilterProtocol (const KURL&);
+ static bool isFilterProtocol (const QString&);
+ static bool supportsListing (const KURL&);
+ static bool supportsReading (const KURL&);
+ static bool supportsWriting (const KURL&);
+ static bool supportsMakeDir (const KURL&);
+ static bool supportsDeleting (const KURL&);
+ static bool supportsLinking (const KURL&);
+ static bool supportsMoving (const KURL&);
+ static bool canCopyFromFile (const KURL&);
+ static bool canCopyToFile (const KURL&);
+
+%If ( KDE_3_4_0 - )
+ static bool canRenameFromFile (const KURL&);
+ static bool canRenameToFile (const KURL&);
+ static bool canDeleteRecursive (const KURL&);
+
+ enum FileNameUsedForCopying
+ {
+ Name,
+ FromURL
+ };
+
+ static KProtocolInfo::FileNameUsedForCopying fileNameUsedForCopying (const KURL&);
+%End
+
+ static QString defaultMimetype (const KURL&);
+ static QString icon (const QString&);
+ static QString config (const QString&);
+ static int maxSlaves (const QString&);
+ static bool determineMimetypeFromExtension (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static QString docPath (const QString&);
+ static QString protocolClass (const QString&);
+ static bool showFilePreview (const QString&);
+ static KURL::URIMode uriParseMode (const QString&);
+
+%If ( KDE_3_3_0 - )
+ static QStringList capabilities (const QString&);
+ static QString proxiedBy (const QString&);
+%End
+
+%End
+
+
+public:
+ KProtocolInfo (QDataStream&, int);
+ virtual void load (QDataStream&);
+ virtual void save (QDataStream&);
+ static Type inputType (const QString&);
+ static Type outputType (const QString&);
+ static QStringList listing (const QString&);
+ static bool isSourceProtocol (const QString&);
+ static bool supportsListing (const QString&);
+ static bool supportsReading (const QString&);
+ static bool supportsWriting (const QString&);
+ static bool supportsMakeDir (const QString&);
+ static bool supportsDeleting (const QString&);
+ static bool supportsLinking (const QString&);
+ static bool supportsMoving (const QString&);
+ static bool canCopyFromFile (const QString&);
+ static bool canCopyToFile (const QString&);
+ static QString defaultMimetype (const QString&);
+
+protected:
+
+%If ( KDE_3_5_1 - )
+ bool canRenameFromFile () const;
+ bool canRenameToFile () const;
+ bool canDeleteRecursive () const;
+ KProtocolInfo::FileNameUsedForCopying fileNameUsedForCopying () const;
+%End
+
+
+%If ( KDE_3_4_0 - )
+ static KProtocolInfo* findProtocol (const KURL&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KProtocolInfo
+
+
+%If ( KDE_3_2_0 - )
+//igx QDataStream& operator >> (QDataStream&, KProtocolInfo::ExtraField&);
+//igx QDataStream& operator << (QDataStream&, const KProtocolInfo::ExtraField&);
+%End
+
+
+%MappedType KProtocolInfo::Ptr
+//converts KProtocolInfo
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kprotocolinfo.h>
+#include <sipkioKProtocolInfo.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KProtocolInfo> *cPtr = new KSharedPtr<KProtocolInfo>(*(KSharedPtr<KProtocolInfo> *)sipCpp);
+ KProtocolInfo *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KProtocolInfo, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KProtocolInfo *cpp = (KProtocolInfo *)sipForceConvertTo_KProtocolInfo (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KProtocolInfo> (cpp);
+
+ return 1;
+%End
+};
+
+
+%If (KDE_3_2_0 - )
+%MappedType QValueList<KProtocolInfo::ExtraField>
+//converts a Python list of KProtocolInfo::ExtraField
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KProtocolInfo::ExtraField> *cpplist = (QValueList<KProtocolInfo::ExtraField> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KProtocolInfo::ExtraField>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KProtocolInfo::ExtraField (*it), sipClass_KProtocolInfo_ExtraField)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KProtocolInfo::ExtraField> *cpplist = new QValueList<KProtocolInfo::ExtraField>;
+
+ PyObject *elem;
+ KProtocolInfo::ExtraField *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KProtocolInfo::ExtraField *)sipForceConvertTo_KProtocolInfo_ExtraField (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kio/kprotocolmanager.sip b/python/pykde/sip/kio/kprotocolmanager.sip
new file mode 100644
index 00000000..169b1c13
--- /dev/null
+++ b/python/pykde/sip/kio/kprotocolmanager.sip
@@ -0,0 +1,99 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KProtocolManager
+{
+%TypeHeaderCode
+#include <kprotocolmanager.h>
+%End
+
+
+public:
+ static QString defaultUserAgent ();
+ static QString defaultUserAgent (const QString&);
+ static QString userAgentForHost (const QString&);
+ static int readTimeout ();
+ static int connectTimeout ();
+ static int proxyConnectTimeout ();
+ static int responseTimeout ();
+ static bool useProxy ();
+ static bool useReverseProxy ();
+
+ enum ProxyType
+ {
+ NoProxy,
+ ManualProxy,
+ PACProxy,
+ WPADProxy,
+ EnvVarProxy
+ };
+
+ static KProtocolManager::ProxyType proxyType ();
+
+ enum ProxyAuthMode
+ {
+ Prompt,
+ Automatic
+ };
+
+ static KProtocolManager::ProxyAuthMode proxyAuthMode ();
+ static QString noProxyFor ();
+
+%If ( KDE_3_5_1 - )
+ static QString noProxyForRaw ();
+%End
+
+ static QString proxyFor (const QString&);
+ static QString proxyForURL (const KURL&);
+ static void badProxy (const QString&);
+ static QString proxyConfigScript ();
+ static bool useCache ();
+ static int maxCacheAge ();
+ static int maxCacheSize ();
+ static QString cacheDir ();
+ static KIO::CacheControl cacheControl ();
+ static bool autoResume ();
+ static bool markPartial ();
+ static int minimumKeepSize ();
+
+%If ( KDE_3_1_0 - )
+ static bool persistentProxyConnection ();
+%End
+
+ static bool persistentConnections ();
+ static void reparseConfiguration ();
+ static QString slaveProtocol (const KURL&, QString&);
+ static KConfig* config ();
+
+public:
+
+%If ( - KDE_3_2_0 )
+//ig static int defaultConnectTimeout ();
+%End
+
+
+}; // class KProtocolManager
+
diff --git a/python/pykde/sip/kio/kremoteencoding.sip b/python/pykde/sip/kio/kremoteencoding.sip
new file mode 100644
index 00000000..26924b38
--- /dev/null
+++ b/python/pykde/sip/kio/kremoteencoding.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KRemoteEncoding
+{
+%TypeHeaderCode
+#include <kremoteencoding.h>
+%End
+
+
+public:
+ KRemoteEncoding (const char* = 0);
+ QString decode (const QCString&) const;
+ QCString encode (const QString&) const;
+ QCString encode (const KURL&) const;
+ QCString directory (const KURL&, bool = 1) const;
+ QCString fileName (const KURL&) const;
+ const char* encoding () const;
+
+%If ( KDE_3_5_0 - )
+ int encodingMib () const;
+%End
+
+ void setEncoding (const char*);
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+private:
+ KRemoteEncoding (const KRemoteEncoding&);
+
+}; // class KRemoteEncoding
+
+%End
+
diff --git a/python/pykde/sip/kio/krun.sip b/python/pykde/sip/kio/krun.sip
new file mode 100644
index 00000000..338e7b6a
--- /dev/null
+++ b/python/pykde/sip/kio/krun.sip
@@ -0,0 +1,206 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KRun : QObject
+{
+%TypeHeaderCode
+#include <krun.h>
+%End
+
+
+public:
+ KRun (const KURL&, mode_t = 0, bool = 0, bool = 1);
+
+%If ( KDE_3_2_0 - )
+ KRun (const KURL&, QWidget*, mode_t = 0, bool = 0, bool = 1);
+%End
+
+ void abort ();
+ bool hasError () const;
+ bool hasFinished () const;
+ bool autoDelete () const;
+ void setAutoDelete (bool);
+ void setPreferredService (const QString&);
+
+%If ( KDE_3_2_0 - )
+ void setRunExecutables (bool);
+
+%If ( KDE_3_4_0 - )
+ void setEnableExternalBrowser (bool);
+
+%If ( KDE_3_5_3 - )
+ void setSuggestedFileName (const QString&);
+%End
+
+
+%If ( KDE_3_5_2 - )
+ static pid_t run (const KService&, const KURL::List&, QWidget*, bool = 0);
+%End
+
+%End
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static pid_t run (const KService&, const KURL::List&, bool);
+%End
+
+ static pid_t run (const KService&, const KURL::List&);
+
+%If ( KDE_3_5_3 - )
+ static pid_t run (const KService&, const KURL::List&, QWidget*, bool, const QString&);
+%End
+
+ static pid_t run (const QString&, const KURL::List&, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+
+%If ( KDE_3_2_0 - )
+ static pid_t runURL (const KURL&, const QString&, bool, bool);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static pid_t runURL (const KURL&, const QString&, bool);
+%End
+
+ static pid_t runURL (const KURL&, const QString&);
+
+%If ( KDE_3_5_3 - )
+ static pid_t runURL (const KURL&, const QString&, bool, bool, const QString&);
+%End
+
+ static pid_t runCommand (QString);
+ static pid_t runCommand (const QString&, const QString&, const QString&);
+
+%If ( KDE_3_1_0 - )
+ static bool displayOpenWithDialog (const KURL::List&, bool);
+%End
+
+ static bool displayOpenWithDialog (const KURL::List&);
+
+%If ( KDE_3_5_3 - )
+ static bool displayOpenWithDialog (const KURL::List&, bool, const QString&);
+%End
+
+ static void shellQuote (QString&);
+
+%If ( KDE_3_1_0 - )
+ static QStringList processDesktopExec (const KService&, const KURL::List&, bool, bool);
+%End
+
+ static QStringList processDesktopExec (const KService&, const KURL::List&, bool);
+
+%If ( KDE_3_5_3 - )
+ static QStringList processDesktopExec (const KService&, const KURL::List&, bool, bool, const QString&);
+%End
+
+
+%If ( KDE_3_1_0 - )
+ static QString binaryName (const QString&, bool);
+
+%If ( KDE_3_2_0 - )
+ static bool isExecutable (const QString&);
+
+%If ( KDE_3_3_0 - )
+ static bool isExecutableFile (const KURL&, const QString&);
+
+%If ( KDE_3_4_0 - )
+ static bool checkStartupNotify (const QString&, const KService*, bool*, QCString*);
+%End
+
+%End
+
+%End
+
+%End
+
+
+signals:
+ void finished ();
+ void error ();
+
+protected slots:
+ void slotTimeout ();
+ void slotScanFinished (KIO::Job*);
+ void slotScanMimeType (KIO::Job*, const QString&);
+ virtual void slotStatResult (KIO::Job*);
+
+protected:
+ virtual void init ();
+ virtual void scanFile ();
+ virtual void foundMimeType (const QString&);
+ virtual void killJob ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KRun
+
+
+class KOpenWithHandler
+{
+%TypeHeaderCode
+#include <krun.h>
+%End
+
+
+public:
+ KOpenWithHandler ();
+ static bool exists ();
+
+}; // class KOpenWithHandler
+
+
+class KProcessRunner : QObject
+{
+%TypeHeaderCode
+#include <krun.h>
+%End
+
+
+public:
+ static pid_t run (KProcess*, const QString&);
+
+%If ( KDE_3_1_4 - )
+ static pid_t run (KProcess*, const QString&, const KStartupInfoId&);
+%End
+
+ pid_t pid () const;
+
+protected slots:
+ void slotProcessExited (KProcess*);
+
+private:
+ KProcessRunner (KProcess*, const QString&);
+
+%If ( KDE_3_1_4 - )
+ KProcessRunner (KProcess*, const QString&, const KStartupInfoId&);
+%End
+
+ KProcessRunner ();
+
+}; // class KProcessRunner
+
diff --git a/python/pykde/sip/kio/ksambashare.sip b/python/pykde/sip/kio/ksambashare.sip
new file mode 100644
index 00000000..6406664d
--- /dev/null
+++ b/python/pykde/sip/kio/ksambashare.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KSambaShare : QObject
+{
+%TypeHeaderCode
+#include <ksambashare.h>
+%End
+
+
+public:
+ static KSambaShare* instance ();
+ bool isDirectoryShared (const QString&) const;
+ QStringList sharedDirectories () const;
+ QString smbConfPath () const;
+
+signals:
+ void changed ();
+
+private:
+ KSambaShare ();
+
+}; // class KSambaShare
+
+%End
+
diff --git a/python/pykde/sip/kio/kscan.sip b/python/pykde/sip/kio/kscan.sip
new file mode 100644
index 00000000..fe18b1a7
--- /dev/null
+++ b/python/pykde/sip/kio/kscan.sip
@@ -0,0 +1,120 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KScanDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kscan.h>
+%End
+
+
+public:
+ static KScanDialog* getScanDialog (QWidget* /Transfer/ = 0, const char* = 0, bool = 0);
+ virtual bool setup ();
+
+protected:
+ KScanDialog (int = Tabbed , int = Close |Help , QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ int id () const;
+ int nextId ();
+
+signals:
+ void preview (const QImage&, int);
+ void finalImage (const QImage&, int);
+ void textRecognized (const QString&, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KScanDialog
+
+
+class KScanDialogFactory : KLibFactory
+{
+%TypeHeaderCode
+#include <kscan.h>
+%End
+
+
+public:
+ virtual KScanDialog* createDialog (QWidget* /Transfer/ = 0, const char* = 0, bool = 0) = 0;
+
+protected:
+ KScanDialogFactory (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual QObject* createObject (QObject* /Transfer/ = 0, const char* = 0, const char* = "QObject", const QStringList& = QStringList ());
+ void setName (const QCString&);
+ KInstance* instance () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KScanDialogFactory
+
+
+class KOCRDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kscan.h>
+%End
+
+
+public:
+ static KOCRDialog* getOCRDialog (QWidget* /Transfer/ = 0, const char* = 0, bool = 0);
+
+protected:
+ KOCRDialog (int = Tabbed , int = Close |Help , QWidget* /TransferThis/ = 0, const char* = 0, bool = 0);
+ int id () const;
+ int nextId ();
+
+signals:
+ void textRecognized (const QString&, int);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KOCRDialog
+
+
+class KOCRDialogFactory : KLibFactory
+{
+%TypeHeaderCode
+#include <kscan.h>
+%End
+
+
+public:
+ virtual KOCRDialog* createDialog (QWidget* /Transfer/ = 0, const char* = 0, bool = 0) = 0;
+
+protected:
+ KOCRDialogFactory (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual QObject* createObject (QObject* /Transfer/ = 0, const char* = 0, const char* = "QObject", const QStringList& = QStringList ());
+ void setName (const QCString&);
+ KInstance* instance () const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KOCRDialogFactory
+
diff --git a/python/pykde/sip/kio/kservice.sip b/python/pykde/sip/kio/kservice.sip
new file mode 100644
index 00000000..f1029621
--- /dev/null
+++ b/python/pykde/sip/kio/kservice.sip
@@ -0,0 +1,289 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KService : KSycocaEntry
+{
+%TypeHeaderCode
+#include <kservice.h>
+%End
+
+
+public:
+//ig typedef KSharedPtr<KService> Ptr;
+//ig typedef QValueList<KService::Ptr> List;
+
+public:
+ KService (const QString&, const QString&, const QString&);
+ KService (const QString&);
+ KService (KDesktopFile*);
+ KService (QDataStream&, int);
+ virtual QString type () /PyName=type_/;
+ virtual QString name () const;
+ QString exec () /PyName=exec_/;
+ QString library () const;
+ QString init () const;
+ QString icon () const;
+ QPixmap pixmap (KIcon::Group, int = 0, int = 0, QString* = 0) const;
+ bool terminal () const;
+ QString terminalOptions () const;
+ bool substituteUid () const;
+ QString username () const;
+ QString desktopEntryPath () const;
+ QString desktopEntryName () const;
+
+%If ( KDE_3_2_0 - )
+ QString menuId () const;
+ QString storageId () const;
+%End
+
+
+ enum DCOPServiceType_t
+ {
+ DCOP_None,
+ DCOP_Unique,
+ DCOP_Multi,
+ DCOP_Wait
+ };
+
+ DCOPServiceType_t DCOPServiceType () const;
+ QString path () const;
+ QString comment () const;
+ QString genericName () const;
+
+%If ( KDE_3_2_0 - )
+ QString untranslatedGenericName () const;
+%End
+
+ QStringList keywords () const;
+
+%If ( KDE_3_1_0 - )
+ QStringList categories () const;
+%End
+
+ QStringList serviceTypes () const;
+ bool hasServiceType (const QString&) const;
+ bool allowAsDefault () const;
+ bool allowMultipleFiles () const;
+ int initialPreference () const;
+
+%If ( KDE_3_2_0 - )
+ int initialPreferenceForMimeType (const QString&) const;
+%End
+
+ void setInitialPreference (int);
+ bool noDisplay () const;
+
+%If ( KDE_3_1_0 - )
+ QString parentApp () const;
+%End
+
+ virtual QVariant property (const QString&) const;
+
+%If ( KDE_3_2_0 - )
+ QVariant property (const QString&, QVariant::Type) const;
+%End
+
+ virtual QStringList propertyNames () const;
+ bool isValid () const;
+
+%If ( KDE_3_2_0 - )
+ QString locateLocal ();
+%End
+
+ virtual void load (QDataStream&);
+ virtual void save (QDataStream&);
+
+%If ( KDE_3_2_0 - )
+ void setMenuId (const QString&);
+ void setTerminal (bool);
+ void setTerminalOptions (const QString&);
+%End
+
+ static KService::Ptr serviceByName (const QString&);
+ static KService::Ptr serviceByDesktopPath (const QString&);
+ static KService::Ptr serviceByDesktopName (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static KService::Ptr serviceByMenuId (const QString&);
+ static KService::Ptr serviceByStorageId (const QString&);
+%End
+
+ static KService::List allServices ();
+ static KService::List allInitServices ();
+
+%If ( KDE_3_2_0 - )
+ static QString newServicePath (bool, const QString&, QString* = 0, const QStringList* = 0);
+ static void rebuildKSycoca (QWidget* /Transfer/);
+%End
+
+
+protected:
+ void init (KDesktopFile*);
+ QStringList& accessServiceTypes ();
+
+%If ( KDE_3_1_1 - )
+
+private:
+ KService (const KService&);
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KService
+
+
+
+%MappedType KService::Ptr
+//converts KService
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kservice.h>
+#include <sipkioKService.h>
+//typedef KSharedPtr<KService> SvcPtr;
+//typedef KService::Ptr SvcPtr;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KService> *cPtr = new KSharedPtr<KService> (*(KSharedPtr<KService> *)sipCpp);
+ KService *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KService, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KService *cpp = (KService *)sipForceConvertTo_KService (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KService> (cpp);
+
+ return 1;
+%End
+};
+
+
+%MappedType KService::List
+//converts a Python list of KService
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kservice.h>
+#include <sipkioKService.h>
+#include <sipkioKServicePtr.h>
+//typedef KSharedPtr<KService> Ptr;
+//typedef QValueList<Ptr> SvcList;
+//typedef KService::List SvcList;
+typedef QValueList<KService::Ptr> List;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KService).
+#define QUOTE ""
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+ KService::List *cList = (KService::List *)sipCpp;
+ PyObject *inst;
+ KSharedPtr<KService> *svc;
+
+ KService::List::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ svc = &(KService::Ptr)(*it);
+ inst = sipConvertFrom_KService_Ptr (svc, sipTransferObj);
+
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ KService::List *cList = new KService::List;
+
+ PyObject *elem;
+ KService *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KService *)sipForceConvertTo_KService (elem, &iserr);
+
+ KService::Ptr *ptr = new KService::Ptr (service);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kservicegroup.sip b/python/pykde/sip/kio/kservicegroup.sip
new file mode 100644
index 00000000..5c5ae5b1
--- /dev/null
+++ b/python/pykde/sip/kio/kservicegroup.sip
@@ -0,0 +1,291 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KServiceGroup : KSycocaEntry
+{
+%TypeHeaderCode
+#include <kservicegroup.h>
+%End
+
+
+public:
+//ig typedef KSharedPtr<KServiceGroup> Ptr;
+//ig typedef KSharedPtr<KSycocaEntry> SPtr;
+
+%If ( KDE_3_1_2 - )
+//ig typedef QValueList<KServiceGroup::SPtr> List;
+%End
+
+
+public:
+
+%If ( KDE_3_1_0 - )
+ KServiceGroup (const QString&);
+%End
+
+ KServiceGroup (const QString&, const QString&);
+ KServiceGroup (QDataStream&, int, bool);
+ bool isValid () const;
+ virtual QString name () const;
+ virtual QString relPath () const;
+ QString caption () const;
+ QString icon () const;
+ QString comment () const;
+ int childCount ();
+
+%If ( KDE_3_1_0 - )
+ bool noDisplay () const;
+
+%If ( KDE_3_5_0 - )
+ bool showEmptyMenu () const;
+ void setShowEmptyMenu (bool);
+ bool showInlineHeader () const;
+ void setShowInlineHeader (bool);
+ bool inlineAlias () const;
+ void setInlineAlias (bool);
+ bool allowInline () const;
+ void setAllowInline (bool);
+ int inlineValue () const;
+ void setInlineValue (int);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ QStringList suppressGenericNames () const;
+ void setLayoutInfo (const QStringList&);
+
+%If ( KDE_3_3_0 - )
+ QStringList layoutInfo () const;
+%End
+
+%End
+
+%End
+
+ virtual void load (QDataStream&);
+ virtual void save (QDataStream&);
+
+%If ( KDE_3_2_0 - )
+ KServiceGroup::List entries (bool, bool, bool, bool = 0);
+%End
+
+ virtual KSycocaEntry::List entries (bool, bool);
+
+%If ( KDE_3_1_2 - )
+ virtual KServiceGroup::List entries (bool = 0);
+%End
+
+ QString baseGroupName () const;
+
+%If ( KDE_3_2_0 - )
+ QString directoryEntryPath () const;
+%End
+
+ static KServiceGroup::Ptr baseGroup (const QString&);
+ static KServiceGroup::Ptr root ();
+ static KServiceGroup::Ptr group (const QString&);
+
+%If ( KDE_3_1_0 - )
+ static KServiceGroup::Ptr childGroup (const QString& /Transfer/);
+
+%If ( KDE_3_5_0 - )
+ void parseAttribute (const QString&, bool&, bool&, bool&, bool&, int&);
+%End
+
+%End
+
+
+protected:
+ void addEntry (KSycocaEntry*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( - KDE_3_1_2 )
+//ig typedef QValueList<Ptr> List;
+%End
+
+
+}; // class KServiceGroup
+
+
+%If ( KDE_3_2_0 - )
+
+class KServiceSeparator : KSycocaEntry
+{
+%TypeHeaderCode
+#include <kservicegroup.h>
+%End
+
+
+public:
+//ig typedef KSharedPtr<KServiceSeparator> Ptr;
+
+public:
+ KServiceSeparator ();
+ bool isValid () const;
+ virtual QString name () const;
+ virtual void load (QDataStream&);
+ virtual void save (QDataStream&);
+
+}; // class KServiceSeparator
+
+%End
+
+
+
+%MappedType KServiceGroup::Ptr
+//converts KServiceGroup
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kservicegroup.h>
+#include <sipkioKServiceGroup.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KServiceGroup> *cPtr = new KSharedPtr<KServiceGroup> (*(KSharedPtr<KServiceGroup> *)sipCpp);
+ KServiceGroup *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KServiceGroup, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KServiceGroup *cpp = (KServiceGroup *)sipForceConvertTo_KServiceGroup (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KServiceGroup> (cpp);
+
+ return 1;
+%End
+};
+
+
+%If (KDE_3_1_2 - )
+%MappedType KServiceGroup::List
+//converts a Python list of KServiceGroup
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kservice.h>
+#include <kservicegroup.h>
+#include <sipkioKService.h>
+#include <sipkioKServiceGroup.h>
+#include <sipkioKSycocaEntryPtr.h>
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KService).
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ KServiceGroup::List *cList = (KServiceGroup::List *)sipCpp;
+ PyObject *inst;
+ KSharedPtr <KSycocaEntry> *svcGroupType;
+
+ KServiceGroup::List::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ svcGroupType = &(KServiceGroup::SPtr)(*it);
+ inst = sipConvertFrom_KSycocaEntry_Ptr (svcGroupType, sipTransferObj);
+
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ KServiceGroup::List *cList = new KServiceGroup::List;
+
+ PyObject *elem;
+ KSycocaEntry *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ KServiceGroup::SPtr *ptr = new KServiceGroup::SPtr (service);
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kio/kservicetype.sip b/python/pykde/sip/kio/kservicetype.sip
new file mode 100644
index 00000000..305994bd
--- /dev/null
+++ b/python/pykde/sip/kio/kservicetype.sip
@@ -0,0 +1,292 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KServiceType : KSycocaEntry
+{
+%TypeHeaderCode
+#include <kservicetype.h>
+%End
+
+
+public:
+ typedef KSharedPtr<KServiceType> Ptr;
+ typedef QValueList<KServiceType::Ptr> List;
+
+public:
+ KServiceType (const QString&, const QString&, const QString&, const QString&);
+ KServiceType (const QString&);
+ KServiceType (KDesktopFile*);
+ KServiceType (QDataStream&, int);
+ QString icon () const;
+ QString comment () const;
+ QString name () const;
+ QString desktopEntryPath () const;
+ bool isDerived () const;
+ QString parentServiceType () const;
+
+%If ( KDE_3_1_0 - )
+ bool inherits (const QString&) const;
+%End
+
+ virtual QVariant property (const QString&) const;
+ virtual QStringList propertyNames () const;
+ bool isValid () const;
+ virtual QVariant::Type propertyDef (const QString&) const;
+ virtual QStringList propertyDefNames () const;
+ virtual const QMap<QString,QVariant::Type>& propertyDefs () const;
+ virtual void save (QDataStream&);
+ virtual void load (QDataStream&);
+
+%If ( KDE_3_2_0 - )
+ KServiceType::Ptr parentType ();
+ void addService (KService::Ptr);
+ KService::List services ();
+%End
+
+ static KServiceType::Ptr serviceType (const QString&);
+ static KService::List offers (const QString&);
+ static KServiceType::List allServiceTypes ();
+
+protected:
+ void init (KDesktopFile*);
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KServiceType
+
+
+
+%MappedType KServiceType::Ptr
+//converts KServiceType
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kservicetype.h>
+#include <sipkioKServiceType.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KServiceType::Ptr *cPtr = new KServiceType::Ptr (*(KServiceType::Ptr *)sipCpp);
+ KServiceType *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KServiceType, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KServiceType *cpp = (KServiceType *)sipForceConvertTo_KServiceType (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KServiceType::Ptr (cpp);
+
+ return 1;
+%End
+};
+
+
+%MappedType QMap<QString,QVariant::Type>
+//converts a Python dict of QString:QVariant
+{
+%TypeHeaderCode
+#include <qmap.h>
+#include <qvariant.h>
+#include <sipqtQString.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QString,QVariant::Type> cppmap = *sipCpp;
+ QMap<QString,QVariant::Type>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QString acpp = it.key ();
+ int bcpp = (int) it.data ();
+ PyObject *ainst;
+ PyObject *binst = PyInt_FromLong (bcpp);
+ if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QString,QVariant::Type> *cppmap = new QMap<QString,QVariant::Type>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QString *acpp;
+ QVariant::Type bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ if (!PyInt_Check (belem) || iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
+ bcpp = (QVariant::Type) PyInt_AS_LONG(belem);
+
+ cppmap->insert (*acpp, bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<KServiceType::Ptr>
+//converts a Python list of KServiceType
+{
+%TypeHeaderCode
+#include <kservicetype.h>
+#include <sipkioKServiceType.h>
+#include <sipkioKServiceTypePtr.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KServiceType).
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+ QValueList<KServiceType::Ptr> *cList = (QValueList<KServiceType::Ptr> *)sipCpp;
+ PyObject *inst;
+ KSharedPtr <KServiceType> *svc;
+
+ QValueList<KServiceType::Ptr>::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ svc = &(KServiceType::Ptr)(*it);
+ inst = sipConvertFrom_KServiceType_Ptr (svc, sipTransferObj);
+
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KServiceType::Ptr> *cList = new QValueList<KServiceType::Ptr>;
+
+ PyObject *elem;
+ KServiceType *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KServiceType *)sipForceConvertTo_KServiceType (elem, &iserr);
+
+ KServiceType::Ptr *ptr = new KServiceType::Ptr (service);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kshellcompletion.sip b/python/pykde/sip/kio/kshellcompletion.sip
new file mode 100644
index 00000000..bc0757b4
--- /dev/null
+++ b/python/pykde/sip/kio/kshellcompletion.sip
@@ -0,0 +1,47 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KShellCompletion : KURLCompletion
+{
+%TypeHeaderCode
+#include <kshellcompletion.h>
+%End
+
+
+public:
+ KShellCompletion ();
+ QString makeCompletion (const QString&);
+
+protected:
+ void postProcessMatch (QString*);
+ void postProcessMatches (QStringList*);
+//ig void postProcessMatches (KCompletionMatches*) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KShellCompletion
+
diff --git a/python/pykde/sip/kio/kshred.sip b/python/pykde/sip/kio/kshred.sip
new file mode 100644
index 00000000..1b881a80
--- /dev/null
+++ b/python/pykde/sip/kio/kshred.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KShred : QObject
+{
+%TypeHeaderCode
+#include <kshred.h>
+%End
+
+
+public:
+ KShred (QString);
+ bool fill1s ();
+ bool fill0s ();
+ bool fillbyte (uint);
+ bool fillrandom ();
+ bool fillpattern (uchar*, uint);
+ bool shred ();
+ static bool shred (QString);
+
+signals:
+ void processedSize (KIO::filesize_t);
+ void infoMessage (const QString&);
+
+}; // class KShred
+
diff --git a/python/pykde/sip/kio/ksycoca.sip b/python/pykde/sip/kio/ksycoca.sip
new file mode 100644
index 00000000..c3401602
--- /dev/null
+++ b/python/pykde/sip/kio/ksycoca.sip
@@ -0,0 +1,171 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSycoca : QObject, DCOPObject
+{
+%TypeHeaderCode
+#include <ksycoca.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_4 - )
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ QCStringList functions ();
+ QCStringList interfaces ();
+%End
+
+
+protected:
+ KSycoca (bool);
+
+public:
+ KSycoca ();
+ static KSycoca* self ();
+
+%If ( KDE_3_2_0 - )
+ static int version ();
+%End
+
+ QDataStream* findEntry (int, KSycocaType& /Out/);
+ QDataStream* findFactory (KSycocaFactoryId);
+ QString kfsstnd_prefixes ();
+ QString language ();
+ ulong timeStamp ();
+
+%If ( KDE_3_1_0 - )
+ ulong updateSignature ();
+
+%If ( KDE_3_2_0 - )
+ QStringList allResourceDirs ();
+%End
+
+%End
+
+ void addFactory (KSycocaFactory*);
+ virtual bool isBuilding ();
+
+%If ( KDE_3_1_2 - )
+ void disableAutoRebuild ();
+%End
+
+ static QString determineRelativePath (const QString&, const char*);
+ static bool isChanged (const char*);
+
+%If ( KDE_3_1_0 - )
+ static void flagError ();
+ static bool readError ();
+%End
+
+
+public:
+ void notifyDatabaseChanged (const QStringList&);
+
+signals:
+ void databaseChanged ();
+
+protected:
+ bool checkVersion (bool = 1);
+ bool openDatabase (bool = 1);
+ void closeDatabase ();
+
+public:
+
+%If ( KDE_3_1_0 - )
+//ig KSycoca* _self;
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_ChmodJob, &sipClass_KIO_ChmodJob},
+ {sipName_Connection, &sipClass_KIO_Connection},
+ {sipName_CopyJob, &sipClass_KIO_CopyJob},
+#if KDE_VERSION >= 0x030100
+ {sipName_DavJob, &sipClass_KIO_DavJob},
+#endif
+ {sipName_DefaultProgress, &sipClass_KIO_DefaultProgress},
+ {sipName_DeleteJob, &sipClass_KIO_DeleteJob},
+ {sipName_FileCopyJob, &sipClass_KIO_FileCopyJob},
+ {sipName_Job, &sipClass_KIO_Job},
+ {sipName_KAutoMount, &sipClass_KAutoMount},
+ {sipName_KAutoUnmount, &sipClass_KAutoUnmount},
+ {sipName_KDataTool, &sipClass_KDataTool},
+ {sipName_KDataToolAction, &sipClass_KDataToolAction},
+ {sipName_KDirLister, &sipClass_KDirLister},
+ {sipName_KDirWatch, &sipClass_KDirWatch},
+ {sipName_KFileMetaInfoProvider, &sipClass_KFileMetaInfoProvider},
+ {sipName_KFilePlugin, &sipClass_KFilePlugin},
+ {sipName_KFilterBase, &sipClass_KFilterBase},
+ {sipName_KOCRDialog, &sipClass_KOCRDialog},
+ {sipName_KOCRDialogFactory, &sipClass_KOCRDialogFactory},
+ {sipName_KProcessRunner, &sipClass_KProcessRunner},
+ {sipName_KRun, &sipClass_KRun},
+ {sipName_KScanDialog, &sipClass_KScanDialog},
+ {sipName_KScanDialogFactory, &sipClass_KScanDialogFactory},
+ {sipName_KShellCompletion, &sipClass_KShellCompletion},
+ {sipName_KShred, &sipClass_KShred},
+ {sipName_KSycoca, &sipClass_KSycoca},
+ {sipName_KTrader, &sipClass_KTrader},
+ {sipName_KURIFilterPlugin, &sipClass_KURIFilterPlugin},
+ {sipName_KURLCompletion, &sipClass_KURLCompletion},
+ {sipName_ListJob, &sipClass_KIO_ListJob},
+#if KDE_VERSION >= 0x030100
+ {sipName_MetaInfoJob, &sipClass_KIO_MetaInfoJob},
+#endif
+ {sipName_MimetypeJob, &sipClass_KIO_MimetypeJob},
+ {sipName_MultiGetJob, &sipClass_KIO_MultiGetJob},
+ {sipName_NetAccess, &sipClass_KIO_NetAccess},
+ {sipName_Observer, &sipClass_Observer},
+ {sipName_PasswordDialog, &sipClass_KIO_PasswordDialog},
+ {sipName_PreviewJob, &sipClass_KIO_PreviewJob},
+ {sipName_ProgressBase, &sipClass_KIO_ProgressBase},
+ {sipName_RenameDlgPlugin, &sipClass_RenameDlgPlugin},
+ {sipName_Scheduler, &sipClass_KIO_Scheduler},
+ {sipName_SessionData, &sipClass_KIO_SessionData},
+ {sipName_SimpleJob, &sipClass_KIO_SimpleJob},
+ {sipName_Slave, &sipClass_KIO_Slave},
+ {sipName_SlaveConfig, &sipClass_KIO_SlaveConfig},
+ {sipName_SlaveInterface, &sipClass_KIO_SlaveInterface},
+ {sipName_StatJob, &sipClass_KIO_StatJob},
+ {sipName_StatusbarProgress, &sipClass_KIO_StatusbarProgress},
+ {sipName_TransferJob, &sipClass_KIO_TransferJob},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class KSycoca
+
diff --git a/python/pykde/sip/kio/ksycocadict.sip b/python/pykde/sip/kio/ksycocadict.sip
new file mode 100644
index 00000000..a36bb67c
--- /dev/null
+++ b/python/pykde/sip/kio/ksycocadict.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KSycocaDict
+{
+%TypeHeaderCode
+#include <ksycocadict.h>
+%End
+
+public:
+ KSycocaDict ();
+ KSycocaDict (QDataStream*, int);
+ void add (const QString&, KSycocaEntry*);
+ void remove (const QString&);
+ int find_string (const QString&);
+ uint count ();
+ void clear ();
+ void save (QDataStream&);
+
+protected:
+ Q_UINT32 hashKey (const QString&);
+
+}; // class KSycocaDict
+
+%End
+
diff --git a/python/pykde/sip/kio/ksycocaentry.sip b/python/pykde/sip/kio/ksycocaentry.sip
new file mode 100644
index 00000000..099d1b1a
--- /dev/null
+++ b/python/pykde/sip/kio/ksycocaentry.sip
@@ -0,0 +1,213 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSycocaEntry : KShared
+{
+%TypeHeaderCode
+#include <ksycocaentry.h>
+%End
+
+
+public:
+ virtual bool isType (KSycocaType) const;
+ virtual KSycocaType sycocaType () const;
+
+public:
+//ig typedef KSharedPtr<KSycocaEntry> Ptr;
+//ig typedef QValueList<KSycocaEntry::Ptr> List;
+
+public:
+ KSycocaEntry (const QString&);
+
+%If ( KDE_3_1_0 - )
+ static void read (QDataStream&, QString&);
+ static void read (QDataStream&, QStringList&);
+%End
+
+ KSycocaEntry (QDataStream&, int);
+ virtual QString name () const = 0;
+ QString entryPath () const;
+ virtual bool isValid () const = 0;
+ virtual bool isDeleted () const;
+ int offset ();
+ virtual void save (QDataStream&);
+ virtual void load (QDataStream&) = 0;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSycocaEntry
+
+
+
+%MappedType KSycocaEntry::Ptr
+//converts KSycocaEntry
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <ksycocaentry.h>
+#include <sipkioKSycocaEntry.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python instance
+
+ if (!sipCpp)
+ return NULL;
+
+ KSharedPtr<KSycocaEntry> *cPtr = new KSharedPtr<KSycocaEntry> (*(KSharedPtr<KSycocaEntry> *)sipCpp);
+ KSycocaEntry *cpp = cPtr->data ();
+ PyObject *obj = sipConvertFromInstance (cpp, sipClass_KSycocaEntry, sipTransferObj);
+
+ return obj;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python instance to a Ptr on the heap.
+
+ if (sipIsErr == NULL)
+ return PyInstance_Check(sipPy);
+
+ int iserr = 0;
+ KSycocaEntry *cpp = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (sipPy, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new KSharedPtr<KSycocaEntry> (cpp);
+
+ return 1;
+%End
+};
+
+
+%MappedType KSycocaEntry::List
+//converts a Python list of KSycocaEntry
+{
+%TypeHeaderCode
+#include <ksharedptr.h>
+#include <kservice.h>
+#include <kservicegroup.h>
+#include <ksycocaentry.h>
+#include <sipkioKSycocaEntry.h>
+#include <ksycocatype.h>
+#include <sipkioKService.h>
+#include <sipkioKServicePtr.h>
+#include <sipkioKServiceGroup.h>
+#include <sipkioKServiceGroupPtr.h>
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of Ptr (KService).
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ KSycocaEntry::List *cList = (KSycocaEntry::List *)sipCpp;
+ PyObject *inst;
+ KSharedPtr<KSycocaEntry> *svc;
+ KSharedPtr <KService> *svcType;
+ KSharedPtr <KServiceGroup> *svcGroupType;
+
+ KSycocaEntry::List::Iterator it;
+ for( it = cList->begin(); it != cList->end(); ++it )
+ {
+ svc = &(KSycocaEntry::Ptr)(*it);
+ if (svc->data ()->sycocaType () == KST_KService)
+ {
+ svcType = (KSharedPtr<KService> *)svc;
+ inst = sipConvertFrom_KService_Ptr (svcType, sipTransferObj);
+ }
+ else if (svc->data ()->sycocaType () == KST_KServiceGroup)
+ {
+ svcGroupType = (KSharedPtr <KServiceGroup> *) svc;
+ inst = sipConvertFrom_KServiceGroup_Ptr (svcGroupType, sipTransferObj);
+ }
+ else
+ inst = NULL;
+
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to List on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ KSycocaEntry::List *cList = new KSycocaEntry::List;
+
+ PyObject *elem;
+ KSycocaEntry *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);
+
+ KSycocaEntry::Ptr *ptr = new KSycocaEntry::Ptr (service);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (*ptr);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/ksycocafactory.sip b/python/pykde/sip/kio/ksycocafactory.sip
new file mode 100644
index 00000000..da338234
--- /dev/null
+++ b/python/pykde/sip/kio/ksycocafactory.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSycocaFactory
+{
+%TypeHeaderCode
+#include <ksycocafactory.h>
+%End
+
+
+public:
+ virtual KSycocaFactoryId factoryId () const = 0;
+
+protected:
+ KSycocaFactory (KSycocaFactoryId);
+
+public:
+ int offset ();
+//ig KSycocaEntryDict* entryDict ();
+ virtual KSycocaEntry* createEntry (const QString&, const char*) = 0;
+ virtual void addEntry (KSycocaEntry*, const char*);
+
+%If ( KDE_3_2_0 - )
+ void removeEntry (KSycocaEntry*);
+%End
+
+ virtual KSycocaEntry* createEntry (int) = 0;
+ KSycocaEntry::List allEntries ();
+ virtual void save (QDataStream&);
+ virtual void saveHeader (QDataStream&);
+//ig virtual const KSycocaResourceList* resourceList () const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KSycocaFactory
+
+//ig typedef QDict<KSycocaEntry::Ptr> KSycocaEntryDict;
diff --git a/python/pykde/sip/kio/ksycocatype.sip b/python/pykde/sip/kio/ksycocatype.sip
new file mode 100644
index 00000000..d0229c13
--- /dev/null
+++ b/python/pykde/sip/kio/ksycocatype.sip
@@ -0,0 +1,76 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_1 - )
+
+enum KSycocaType
+{
+ KST_KSycocaEntry,
+ KST_KService,
+ KST_KServiceType,
+ KST_KMimeType,
+ KST_KFolderType,
+ KST_KDEDesktopMimeType,
+ KST_KExecMimeType,
+ KST_KServiceGroup,
+ KST_KImageIOFormat,
+ KST_KProtocolInfo,
+ KST_KServiceSeparator,
+ KST_KCustom
+};
+
+%End
+
+
+enum KSycocaFactoryId
+{
+ KST_KServiceFactory,
+ KST_KServiceTypeFactory,
+ KST_KServiceGroupFactory,
+ KST_KImageIO,
+ KST_KProtocolInfoFactory,
+ KST_CTimeInfo
+};
+
+
+%If ( - KDE_3_2_1 )
+
+enum KSycocaType
+{
+ KST_KSycocaEntry,
+ KST_KService,
+ KST_KServiceType,
+ KST_KMimeType,
+ KST_KFolderType,
+ KST_KDEDesktopMimeType,
+ KST_KExecMimeType,
+ KST_KServiceGroup,
+ KST_KImageIOFormat,
+ KST_KProtocolInfo,
+ KST_KCustom
+};
+
+%End
diff --git a/python/pykde/sip/kio/ktar.sip b/python/pykde/sip/kio/ktar.sip
new file mode 100644
index 00000000..6253b281
--- /dev/null
+++ b/python/pykde/sip/kio/ktar.sip
@@ -0,0 +1,73 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTar : KArchive
+{
+%TypeHeaderCode
+#include <ktar.h>
+%End
+
+
+public:
+ KTar (const QString&, const QString& = QString ::null );
+ KTar (QIODevice*);
+ QString fileName ();
+ void setOrigFileName (const QCString&);
+
+%If ( KDE_3_2_0 - )
+ bool writeSymLink (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+%End
+
+ virtual bool writeDir (const QString&, const QString&, const QString&);
+
+%If ( KDE_3_2_0 - )
+ bool writeDir (const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+%End
+
+ virtual bool prepareWriting (const QString&, const QString&, const QString&, uint);
+
+%If ( KDE_3_2_0 - )
+ bool prepareWriting (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+%End
+
+ virtual bool doneWriting (uint);
+
+protected:
+ virtual bool openArchive (int);
+ virtual bool closeArchive ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_2_0 - )
+ bool prepareWriting_impl (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+ bool writeDir_impl (const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+ bool writeSymLink_impl (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+%End
+
+
+}; // class KTar
+
diff --git a/python/pykde/sip/kio/ktrader.sip b/python/pykde/sip/kio/ktrader.sip
new file mode 100644
index 00000000..33432fc6
--- /dev/null
+++ b/python/pykde/sip/kio/ktrader.sip
@@ -0,0 +1,125 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KTrader : QObject
+{
+%TypeHeaderCode
+#include <ktrader.h>
+%End
+
+
+public:
+//ig typedef QValueList<KService::Ptr> OfferList;
+
+%If ( KDE_3_1_0 - )
+//ig typedef QValueListIterator<KService::Ptr> OfferListIterator;
+%End
+
+ virtual KTrader::OfferList query (const QString&, const QString& = QString ::null , const QString& = QString ::null ) const;
+ KTrader::OfferList query (const QString&, const QString&, const QString&, const QString&) const;
+ static KTrader* self ();
+
+protected:
+ KTrader ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KTrader
+
+
+
+%MappedType KTrader::OfferList
+//converts a Python list of KService
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <sipkioKServicePtr.h>
+#include <ktrader.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KService::Ptr> *cpplist = (QValueList<KService::Ptr> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KService::Ptr>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ KService::Ptr cpp = *it;
+ inst = sipConvertFrom_KService_Ptr (&cpp, NULL);
+
+ if (PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KService::Ptr> *cpplist = new QValueList<KService::Ptr>;
+
+ PyObject *elem;
+ KService::Ptr *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KService::Ptr *)sipForceConvertTo_KService_Ptr (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kurifilter.sip b/python/pykde/sip/kio/kurifilter.sip
new file mode 100644
index 00000000..4d694dab
--- /dev/null
+++ b/python/pykde/sip/kio/kurifilter.sip
@@ -0,0 +1,147 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURIFilterData
+{
+%TypeHeaderCode
+#include <qstringlist.h>
+#include <kurifilter.h>
+%End
+
+
+public:
+
+ enum URITypes
+ {
+ NET_PROTOCOL,
+ LOCAL_FILE,
+ LOCAL_DIR,
+ EXECUTABLE,
+ HELP,
+ SHELL,
+ BLOCKED,
+ ERROR,
+ UNKNOWN
+ };
+
+ KURIFilterData ();
+ KURIFilterData (const KURL&);
+ KURIFilterData (const QString&);
+ KURIFilterData (const KURIFilterData&);
+ bool hasBeenFiltered () const;
+ KURL uri () const;
+ QString errorMsg () const;
+ URITypes uriType () const;
+ void setData (const QString&);
+ void setData (const KURL&);
+ bool setAbsolutePath (const QString&);
+ QString absolutePath () const;
+ bool hasAbsolutePath () const;
+ QString argsAndOptions () const;
+ bool hasArgsAndOptions () const;
+ QString iconName ();
+
+%If ( KDE_3_2_0 - )
+ void setCheckForExecutables (bool);
+ bool checkForExecutables () const;
+ QString typedString () const;
+%End
+
+
+protected:
+ void init (const KURL&);
+ void init (const KURL& = KURL (QString ::null )) [void (QString&)];
+%MethodCode
+//takes url | (KURL = KURL(QString.null))
+
+ Py_BEGIN_ALLOW_THREADS
+ if (a0 == 0)
+ sipCpp -> sipProtect_init(QString::null);
+ else
+ sipCpp -> sipProtect_init(*a0);
+ Py_END_ALLOW_THREADS
+%End
+
+
+}; // class KURIFilterData
+
+
+class KURIFilterPlugin : QObject
+{
+%TypeHeaderCode
+#include <qstringlist.h>
+#include <kurifilter.h>
+%End
+
+
+public:
+ KURIFilterPlugin (QObject* = 0, const char* = 0, double = 1.0);
+ virtual QString name () const;
+ virtual double priority () const;
+ virtual bool filterURI (KURIFilterData&) const = 0;
+ virtual KCModule* configModule (QWidget*, const char*) const;
+ virtual QString configName () const;
+
+protected:
+ void setFilteredURI (KURIFilterData&, const KURL&) const;
+ void setErrorMsg (KURIFilterData&, const QString&) const;
+ void setURIType (KURIFilterData&, KURIFilterData::URITypes) const;
+ void setArguments (KURIFilterData&, const QString&) const;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURIFilterPlugin
+
+
+class KURIFilter
+{
+%TypeHeaderCode
+#include <qstringlist.h>
+#include <kurifilter.h>
+%End
+
+
+public:
+ static KURIFilter* self ();
+ bool filterURI (KURIFilterData&, const QStringList& = QStringList ());
+ bool filterURI (KURL&, const QStringList& = QStringList ());
+ bool filterURI (QString&, const QStringList& = QStringList ());
+ KURL filteredURI (const KURL&, const QStringList& = QStringList ());
+ QString filteredURI (const QString&, const QStringList& = QStringList ());
+//ig QPtrListIterator<KURIFilterPlugin> pluginsIterator () const;
+
+%If ( KDE_3_1_0 - )
+ QStringList pluginNames () const;
+%End
+
+
+protected:
+ KURIFilter ();
+ void loadPlugins ();
+
+}; // class KURIFilter
+
diff --git a/python/pykde/sip/kio/kurlcompletion.sip b/python/pykde/sip/kio/kurlcompletion.sip
new file mode 100644
index 00000000..150f5f35
--- /dev/null
+++ b/python/pykde/sip/kio/kurlcompletion.sip
@@ -0,0 +1,81 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLCompletion : KCompletion
+{
+%TypeHeaderCode
+#include <kurlcompletion.h>
+%End
+
+
+public:
+
+ enum Mode
+ {
+ ExeCompletion,
+ FileCompletion,
+ DirCompletion
+ };
+
+ KURLCompletion ();
+ KURLCompletion (KURLCompletion::Mode);
+ virtual QString makeCompletion (const QString&);
+ virtual void setDir (const QString&);
+ virtual QString dir ();
+ virtual bool isRunning ();
+ virtual void stop ();
+ virtual Mode mode ();
+ virtual void setMode (KURLCompletion::Mode);
+ virtual bool replaceEnv ();
+ virtual void setReplaceEnv (bool);
+ virtual bool replaceHome ();
+ virtual void setReplaceHome (bool);
+ QString replacedPath (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static QString replacedPath (const QString&, bool, bool = 1);
+%End
+
+
+protected:
+ void postProcessMatch (QString*);
+ void postProcessMatches (QStringList*);
+//ig void postProcessMatches (KCompletionMatches*) const;
+
+%If ( KDE_3_3_0 - )
+ virtual void customEvent (QCustomEvent*);
+%End
+
+
+protected slots:
+ void slotEntries (KIO::Job*, const KIO::UDSEntryList&);
+ void slotIOFinished (KIO::Job*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLCompletion
+
diff --git a/python/pykde/sip/kio/kurlpixmapprovider.sip b/python/pykde/sip/kio/kurlpixmapprovider.sip
new file mode 100644
index 00000000..4e80fdcb
--- /dev/null
+++ b/python/pykde/sip/kio/kurlpixmapprovider.sip
@@ -0,0 +1,41 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KURLPixmapProvider : KPixmapProvider
+{
+%TypeHeaderCode
+#include <kurlpixmapprovider.h>
+%End
+
+
+public:
+ virtual QPixmap pixmapFor (const QString&, int = 0);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class KURLPixmapProvider
+
diff --git a/python/pykde/sip/kio/kuserprofile.sip b/python/pykde/sip/kio/kuserprofile.sip
new file mode 100644
index 00000000..7d3d406f
--- /dev/null
+++ b/python/pykde/sip/kio/kuserprofile.sip
@@ -0,0 +1,224 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KServiceOffer
+{
+%TypeHeaderCode
+#include <kuserprofile.h>
+%End
+
+
+public:
+ KServiceOffer ();
+ KServiceOffer (const KServiceOffer&);
+ KServiceOffer (KService::Ptr, int, bool);
+
+%If ( KDE_3_1_4 - )
+ bool operator < (const KServiceOffer&) const;
+%End
+
+ bool allowAsDefault () const;
+ int preference () const;
+ KService::Ptr service () const;
+ bool isValid () const;
+
+}; // class KServiceOffer
+
+
+class KServiceTypeProfile
+{
+%TypeHeaderCode
+#include <kuserprofile.h>
+%End
+
+
+public:
+ typedef QValueList<KServiceOffer> OfferList;
+ int preference (const QString&) const;
+ bool allowAsDefault (const QString&) const;
+ KServiceTypeProfile::OfferList offers () const;
+ static KService::Ptr preferredService (const QString&, const QString&);
+ static KServiceTypeProfile* serviceTypeProfile (const QString&, const QString&);
+ static KServiceTypeProfile::OfferList offers (const QString&, const QString&);
+ static const QPtrList<KServiceTypeProfile>& serviceTypeProfiles ();
+ static void clear ();
+ static void setConfigurationMode ();
+ static bool configurationMode ();
+
+protected:
+ KServiceTypeProfile (const QString&, const QString& = QString ::null );
+ void addService (const QString&, int = 1, bool = 1);
+
+}; // class KServiceTypeProfile
+
+
+
+%MappedType KServiceTypeProfile::OfferList
+//converts a Python list of KServiceOffer
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kservicetype.h>
+#include <kuserprofile.h>
+#include <sipkioKServiceOffer.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KServiceOffer> *cpplist = (QValueList<KServiceOffer> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KServiceOffer>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KServiceOffer (*it), sipClass_KServiceOffer)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KServiceOffer> *cpplist = new QValueList<KServiceOffer>;
+
+ PyObject *elem;
+ KServiceOffer *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KServiceOffer *)sipForceConvertTo_KServiceOffer (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<KServiceTypeProfile>
+//converts a Python list of KServiceTypeProfile
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <kservicetype.h>
+#include <sipkioKServiceTypeProfile.h>
+//typedef QPtrList<KServiceTypeProfile> SvcTypeProfileList;
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of KServiceTypeProfile
+
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *plist;
+
+ // Create the list
+
+ if ((plist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KServiceTypeProfile> *cList = (QPtrList<KServiceTypeProfile> *)sipCpp;
+ PyObject *inst;
+ KServiceTypeProfile *svc;
+
+ for( svc = cList->first (); svc; svc = cList->next ())
+ {
+ inst = sipConvertFromInstance (svc, sipClass_KServiceTypeProfile, sipTransferObj);
+ if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+ {
+ Py_XDECREF (inst);
+ Py_DECREF (plist);
+ return NULL;
+ }
+ }
+
+ return plist;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list to SvcTypeProfileList on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KServiceTypeProfile> *cList = new QPtrList<KServiceTypeProfile>;
+
+ PyObject *elem;
+ KServiceTypeProfile *service;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ service = (KServiceTypeProfile *)sipForceConvertTo_KServiceTypeProfile (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cList;
+ return 0;
+ }
+
+ cList->append (service);
+ }
+
+ *sipCppPtr = cList;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kio/kzip.sip b/python/pykde/sip/kio/kzip.sip
new file mode 100644
index 00000000..4053ca4b
--- /dev/null
+++ b/python/pykde/sip/kio/kzip.sip
@@ -0,0 +1,120 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+
+class KZip : KArchive
+{
+%TypeHeaderCode
+#include <kzip.h>
+%End
+
+
+public:
+ KZip (const QString&);
+ KZip (QIODevice*);
+ QString fileName ();
+
+%If ( KDE_3_2_0 - )
+
+ enum ExtraField
+ {
+ NoExtraField,
+ ModificationTime,
+ DefaultExtraField
+ };
+
+ void setExtraField (KZip::ExtraField);
+ KZip::ExtraField extraField () const;
+%End
+
+
+ enum Compression
+ {
+ NoCompression,
+ DeflateCompression
+ };
+
+ void setCompression (KZip::Compression);
+ KZip::Compression compression () const;
+ virtual bool writeFile (const QString&, const QString&, const QString&, uint, const char*);
+ virtual bool prepareWriting (const QString&, const QString&, const QString&, uint);
+
+%If ( KDE_3_2_0 - )
+ bool writeSymLink (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+ bool prepareWriting (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+ bool writeFile (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t, const char*);
+%End
+
+ bool writeData (const char*, uint);
+ virtual bool doneWriting (uint);
+
+protected:
+ virtual bool openArchive (int);
+ virtual bool closeArchive ();
+ virtual bool writeDir (const QString&, const QString&, const QString&);
+
+protected:
+ virtual void virtual_hook (int, void*);
+
+%If ( KDE_3_2_0 - )
+ bool writeData_impl (const char*, uint);
+ bool prepareWriting_impl (const QString&, const QString&, const QString&, uint, mode_t, time_t, time_t, time_t);
+ bool writeSymLink_impl (const QString&, const QString&, const QString&, const QString&, mode_t, time_t, time_t, time_t);
+%End
+
+
+}; // class KZip
+
+%End
+
+
+%If ( KDE_3_1_0 - )
+
+class KZipFileEntry : KArchiveFile
+{
+%TypeHeaderCode
+#include <kzip.h>
+%End
+
+
+public:
+ KZipFileEntry (KZip*, const QString&, int, int, const QString&, const QString&, const QString&, const QString&, Q_LONG, Q_LONG, int, Q_LONG);
+ int encoding () const;
+ Q_LONG compressedSize () const;
+ void setCompressedSize (Q_LONG);
+ void setHeaderStart (Q_LONG);
+ Q_LONG headerStart () const;
+ ulong crc32 () const;
+ void setCRC32 (ulong);
+ QString path () const;
+ virtual QByteArray data () const;
+ QIODevice* device () const;
+
+}; // class KZipFileEntry
+
+%End
+
diff --git a/python/pykde/sip/kio/metainfojob.sip b/python/pykde/sip/kio/metainfojob.sip
new file mode 100644
index 00000000..a0242343
--- /dev/null
+++ b/python/pykde/sip/kio/metainfojob.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_1_0 - )
+namespace KIO
+{
+
+class MetaInfoJob : KIO::Job
+{
+%TypeHeaderCode
+#include <kfileitem.h>
+#include <jobclasses.h>
+#include <metainfojob.h>
+%End
+
+
+public:
+ MetaInfoJob (const KFileItemList&, bool = 0);
+ void removeItem (const KFileItem*);
+ static QStringList availablePlugins ();
+ static QStringList supportedMimeTypes ();
+
+signals:
+ void gotMetaInfo (const KFileItem*);
+ void failed (const KFileItem*);
+
+protected:
+ void getMetaInfo ();
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+
+}; // class MetaInfoJob
+
+KIO::MetaInfoJob* fileMetaInfo (const KFileItemList&);
+KIO::MetaInfoJob* fileMetaInfo (const KURL::List&);
+}; // namespace KIO
+
+%End
+
diff --git a/python/pykde/sip/kio/netaccess.sip b/python/pykde/sip/kio/netaccess.sip
new file mode 100644
index 00000000..60329d72
--- /dev/null
+++ b/python/pykde/sip/kio/netaccess.sip
@@ -0,0 +1,128 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class NetAccess : QObject
+{
+%TypeHeaderCode
+#include <netaccess.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+ static bool download (const KURL&, QString&, QWidget*);
+%End
+
+ static bool download (const KURL&, QString&);
+ static void removeTempFile (const QString&);
+
+%If ( KDE_3_2_0 - )
+ static bool upload (const QString&, const KURL&, QWidget*);
+%End
+
+ static bool upload (const QString&, const KURL&);
+
+%If ( KDE_3_2_0 - )
+ static bool copy (const KURL&, const KURL&, QWidget*);
+%End
+
+ static bool copy (const KURL&, const KURL&);
+
+%If ( KDE_3_2_0 - )
+ static bool file_copy (const KURL&, const KURL&, int = -1, bool = 0, bool = 0, QWidget* = 0);
+ static bool file_move (const KURL&, const KURL&, int = -1, bool = 0, bool = 0, QWidget* = 0);
+ static bool dircopy (const KURL&, const KURL&, QWidget*);
+%End
+
+ static bool dircopy (const KURL&, const KURL&);
+
+%If ( KDE_3_2_0 - )
+ static bool dircopy (const KURL::List&, const KURL&, QWidget* = 0);
+ static bool move (const KURL&, const KURL&, QWidget* = 0);
+ static bool move (const KURL::List&, const KURL&, QWidget* = 0);
+ static bool exists (const KURL&, bool, QWidget*);
+ static bool exists (const KURL&, QWidget*);
+%End
+
+ static bool exists (const KURL&);
+
+%If ( KDE_3_1_0 - )
+ static bool exists (const KURL&, bool);
+
+%If ( KDE_3_2_0 - )
+ static bool stat (const KURL&, KIO::UDSEntry&, QWidget*);
+%End
+
+%End
+
+ static bool stat (const KURL&, KIO::UDSEntry&);
+
+%If ( KDE_3_5_0 - )
+ static KURL mostLocalURL (const KURL&, QWidget*);
+%End
+
+
+%If ( KDE_3_2_0 - )
+ static bool del (const KURL&, QWidget*);
+%End
+
+ static bool del (const KURL&) /PyName=del_/;
+
+%If ( KDE_3_2_0 - )
+ static bool mkdir (const KURL&, QWidget*, int = -1);
+%End
+
+ static bool mkdir (const KURL&, int = -1);
+
+%If ( KDE_3_2_0 - )
+ static QString fish_execute (const KURL&, const QString, QWidget*);
+
+%If ( KDE_3_3_1 - )
+ static bool synchronousRun (KIO::Job*, QWidget*, QByteArray* = 0, KURL* = 0, QMap<QString,QString>* = 0);
+%End
+
+ static QString mimetype (const KURL&, QWidget*);
+%End
+
+//ig static QString mimetype (const KURL&);
+ static QString lastErrorString ();
+
+%If ( KDE_3_3_0 - )
+ static int lastError ();
+%End
+
+
+private:
+ NetAccess ();
+ ~NetAccess ();
+
+}; // class NetAccess
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/observer.sip b/python/pykde/sip/kio/observer.sip
new file mode 100644
index 00000000..45dd62fd
--- /dev/null
+++ b/python/pykde/sip/kio/observer.sip
@@ -0,0 +1,96 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class Observer : QObject, DCOPObject
+{
+%TypeHeaderCode
+#include <observer.h>
+%End
+
+
+public:
+
+%If ( KDE_3_1_4 - )
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ QCStringList functions ();
+ QCStringList interfaces ();
+%End
+
+
+public:
+ static Observer* self ();
+ int newJob (KIO::Job*, bool);
+ void jobFinished (int);
+ bool openPassDlg (const QString&, QString&, QString&, bool);
+ bool openPassDlg (KIO::AuthInfo&);
+ int messageBox (int, int, const QString&, const QString&, const QString&, const QString&);
+
+%If ( KDE_3_3_0 - )
+ static int messageBox (int, int, const QString&, const QString&, const QString&, const QString&, const QString&);
+%End
+
+ KIO::RenameDlg_Result open_RenameDlg (KIO::Job*, const QString&, const QString&, const QString&, KIO::RenameDlg_Mode, QString&, KIO::filesize_t = -1, KIO::filesize_t = -1, time_t = -1, time_t = -1, time_t = -1, time_t = -1);
+ KIO::SkipDlg_Result open_SkipDlg (KIO::Job*, bool, const QString&);
+
+public:
+ void killJob (int);
+ KIO::MetaData metadata (int);
+
+protected:
+ Observer ();
+ ~Observer ();
+
+public slots:
+ void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ void slotTotalFiles (KIO::Job*, ulong);
+ void slotTotalDirs (KIO::Job*, ulong);
+ void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ void slotProcessedFiles (KIO::Job*, ulong);
+ void slotProcessedDirs (KIO::Job*, ulong);
+ void slotSpeed (KIO::Job*, ulong);
+ void slotPercent (KIO::Job*, ulong);
+ void slotInfoMessage (KIO::Job*, const QString&);
+ void slotCopying (KIO::Job*, const KURL&, const KURL&);
+ void slotMoving (KIO::Job*, const KURL&, const KURL&);
+ void slotDeleting (KIO::Job*, const KURL&);
+
+%If ( KDE_3_1_0 - )
+ void slotTransferring (KIO::Job*, const KURL&);
+%End
+
+ void slotCreatingDir (KIO::Job*, const KURL&);
+ void slotCanResume (KIO::Job*, KIO::filesize_t);
+
+public:
+ void stating (KIO::Job*, const KURL&);
+ void mounting (KIO::Job*, const QString&, const QString&);
+ void unmounting (KIO::Job*, const QString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class Observer
+
diff --git a/python/pykde/sip/kio/passdlg.sip b/python/pykde/sip/kio/passdlg.sip
new file mode 100644
index 00000000..54a1537a
--- /dev/null
+++ b/python/pykde/sip/kio/passdlg.sip
@@ -0,0 +1,68 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class PasswordDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <passdlg.h>
+%End
+
+
+public:
+ PasswordDialog (const QString&, const QString&, bool = 0, bool = 1, QWidget* /TransferThis/ = 0, const char* = 0);
+ void setPrompt (const QString&);
+ void addCommentLine (const QString&, const QString);
+ QString password () const;
+ QString username () const;
+ bool keepPassword () const;
+
+%If ( KDE_3_2_0 - )
+ void setKeepPassword (bool);
+%End
+
+ void setUserReadOnly (bool);
+ void setEnableUserField (bool, bool = 0);
+
+%If ( KDE_3_1_0 - )
+ void setPassword (const QString&);
+
+%If ( KDE_3_4_0 - )
+ void setKnownLogins (const QMap<QString,QString>&);
+%End
+
+%End
+
+ static int getNameAndPassword (QString& /Out/, QString& /Out/, bool* /In, Out/, const QString& = QString ::null , bool = 0, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class PasswordDialog
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/paste.sip b/python/pykde/sip/kio/paste.sip
new file mode 100644
index 00000000..e8d27277
--- /dev/null
+++ b/python/pykde/sip/kio/paste.sip
@@ -0,0 +1,56 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <paste.h>
+%End
+
+namespace KIO
+{
+KIO::Job* pasteClipboard (const KURL&, bool = 0);
+void pasteData (const KURL&, const QByteArray&);
+
+%If ( KDE_3_2_0 - )
+KIO::CopyJob* pasteDataAsync (const KURL&, const QByteArray&);
+
+%If ( KDE_3_3_0 - )
+KIO::CopyJob* pasteDataAsync (const KURL&, const QByteArray&, const QString&);
+
+%If ( KDE_3_5_0 - )
+KIO::CopyJob* pasteMimeSource (QMimeSource*, const KURL&, const QString&, QWidget*, bool = 0);
+%End
+
+%End
+
+%End
+
+bool isClipboardEmpty ();
+
+%If ( KDE_3_5_0 - )
+QString pasteActionText ();
+%End
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/previewjob.sip b/python/pykde/sip/kio/previewjob.sip
new file mode 100644
index 00000000..df9c6e00
--- /dev/null
+++ b/python/pykde/sip/kio/previewjob.sip
@@ -0,0 +1,72 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class PreviewJob : KIO::Job
+{
+%TypeHeaderCode
+#include <previewjob.h>
+%End
+
+
+public:
+ PreviewJob (const KFileItemList&, int, int, int, int, bool, bool, const QStringList*, bool = 0);
+ void removeItem (const KFileItem*);
+
+%If ( KDE_3_4_0 - )
+ void setIgnoreMaximumSize (bool = 1);
+%End
+
+ static QStringList availablePlugins ();
+ static QStringList supportedMimeTypes ();
+
+%If ( KDE_3_5_1 - )
+ virtual void kill (bool = 1);
+%End
+
+
+signals:
+ void gotPreview (const KFileItem*, const QPixmap&);
+ void failed (const KFileItem*);
+
+protected:
+ void getOrCreateThumbnail ();
+ bool statResultThumbnail ();
+ void createThumbnail (QString);
+
+protected slots:
+ virtual void slotResult (KIO::Job*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class PreviewJob
+
+KIO::PreviewJob* filePreview (const KFileItemList&, int, int = 0, int = 0, int = 70, bool = 1, bool = 1, const QStringList* = 0);
+KIO::PreviewJob* filePreview (const KURL::List&, int, int = 0, int = 0, int = 70, bool = 1, bool = 1, const QStringList* = 0);
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/progressbase.sip b/python/pykde/sip/kio/progressbase.sip
new file mode 100644
index 00000000..f83811a8
--- /dev/null
+++ b/python/pykde/sip/kio/progressbase.sip
@@ -0,0 +1,95 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <progressbase.h>
+%End
+
+namespace KIO
+{
+
+enum Progress
+{
+ DEFAULT,
+ STATUSBAR,
+ LIST
+};
+
+
+class ProgressBase : QWidget
+{
+%TypeHeaderCode
+#include <progressbase.h>
+%End
+
+
+public:
+ ProgressBase (QWidget* /TransferThis/);
+ void setJob (KIO::Job*);
+ void setJob (KIO::CopyJob*);
+ void setJob (KIO::DeleteJob*);
+ void setStopOnClose (bool);
+ bool stopOnClose () const;
+ void setOnlyClean (bool);
+ bool onlyClean () const;
+
+%If ( KDE_3_1_0 - )
+ void finished ();
+%End
+
+
+public slots:
+ void slotStop ();
+ virtual void slotClean ();
+ virtual void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ virtual void slotTotalFiles (KIO::Job*, ulong);
+ virtual void slotTotalDirs (KIO::Job*, ulong);
+ virtual void slotProcessedSize (KIO::Job*, KIO::filesize_t);
+ virtual void slotProcessedFiles (KIO::Job*, ulong);
+ virtual void slotProcessedDirs (KIO::Job*, ulong);
+ virtual void slotSpeed (KIO::Job*, ulong);
+ virtual void slotPercent (KIO::Job*, ulong);
+ virtual void slotCopying (KIO::Job*, const KURL&, const KURL&);
+ virtual void slotMoving (KIO::Job*, const KURL&, const KURL&);
+ virtual void slotDeleting (KIO::Job*, const KURL&);
+ virtual void slotCreatingDir (KIO::Job*, const KURL&);
+ virtual void slotCanResume (KIO::Job*, KIO::filesize_t);
+
+signals:
+ void stopped ();
+
+protected slots:
+ void slotFinished (KIO::Job*);
+
+protected:
+ virtual void closeEvent (QCloseEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class ProgressBase
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/renamedlg.sip b/python/pykde/sip/kio/renamedlg.sip
new file mode 100644
index 00000000..b5bf7284
--- /dev/null
+++ b/python/pykde/sip/kio/renamedlg.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <renamedlg.h>
+%End
+
+namespace KIO
+{
+
+enum RenameDlg_Mode
+{
+ M_OVERWRITE,
+ M_OVERWRITE_ITSELF,
+ M_SKIP,
+ M_SINGLE,
+ M_MULTI,
+ M_RESUME,
+ M_NORENAME
+};
+
+
+enum RenameDlg_Result
+{
+ R_RESUME,
+ R_RESUME_ALL,
+ R_OVERWRITE,
+ R_OVERWRITE_ALL,
+ R_SKIP,
+ R_AUTO_SKIP,
+ R_RENAME,
+ R_CANCEL
+};
+
+
+//ig class RenameDlg : QDialog;
+
+//ig KIO::RenameDlg_Result open_RenameDlg (const QString&, const QString&, const QString&, KIO::RenameDlg_Mode, QString&, KIO::filesize_t = (KIO ::filesize_t )-1 , KIO::filesize_t = (KIO ::filesize_t )-1 , time_t = -1 , time_t = -1 , time_t = -1 , time_t = -1 );
+
+%If ( - KDE_3_1_5 )
+//ig KIO::RenameDlg_Result open_RenameDlg (const QString&, const QString&, const QString&, KIO::RenameDlg_Mode, QString&, ulong = -1, ulong = -1, time_t = -1, time_t = -1, time_t = -1, time_t = -1);
+%End
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/renamedlgplugin.sip b/python/pykde/sip/kio/renamedlgplugin.sip
new file mode 100644
index 00000000..f8328d76
--- /dev/null
+++ b/python/pykde/sip/kio/renamedlgplugin.sip
@@ -0,0 +1,39 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class RenameDlgPlugin : QWidget
+{
+%TypeHeaderCode
+#include <renamedlgplugin.h>
+%End
+
+
+public:
+ RenameDlgPlugin (QDialog*, const char*, const QStringList& = QStringList ());
+ virtual bool initialize (KIO::RenameDlg_Mode, const QString&, const QString&, const QString&, const QString&, KIO::filesize_t, KIO::filesize_t, time_t, time_t, time_t, time_t);
+
+}; // class RenameDlgPlugin
+
diff --git a/python/pykde/sip/kio/scheduler.sip b/python/pykde/sip/kio/scheduler.sip
new file mode 100644
index 00000000..c59ea07e
--- /dev/null
+++ b/python/pykde/sip/kio/scheduler.sip
@@ -0,0 +1,106 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class Scheduler : QObject, DCOPObject
+{
+%TypeHeaderCode
+#include <scheduler.h>
+%End
+
+
+public:
+//ig typedef QPtrList<KIO::SimpleJob> JobList;
+ static void doJob (KIO::SimpleJob*);
+ static void scheduleJob (KIO::SimpleJob*);
+ static void cancelJob (KIO::SimpleJob*);
+ static void jobFinished (KIO::SimpleJob*, KIO::Slave*);
+ static void putSlaveOnHold (KIO::SimpleJob*, const KURL&);
+ static void removeSlaveOnHold ();
+ static void publishSlaveOnHold ();
+//doc
+// There is no default value for config (KIO.MetaData) - pass an
+// empty Python dict if you need the default value
+//end
+ static KIO::Slave* getConnectedSlave (const KURL&, const KIO::MetaData&);
+ static bool assignJobToSlave (KIO::Slave*, KIO::SimpleJob*);
+ static bool disconnectSlave (KIO::Slave*);
+
+%If ( KDE_3_1_0 - )
+ static void registerWindow (QWidget*);
+
+%If ( KDE_3_2_0 - )
+ static void unregisterWindow (QObject*);
+%End
+
+%End
+
+ static bool connect (const char*, const QObject*, const char*);
+ static bool connect (const QObject*, const char*, const QObject*, const char*);
+ static bool disconnect (const QObject*, const char*, const QObject*, const char*);
+ bool connect (const QObject*, const char*, const char*);
+ static void checkSlaveOnHold (bool);
+ void debug_info ();
+ virtual bool process (const QCString&, const QByteArray&, QCString&, QByteArray&);
+ virtual QCStringList functions ();
+
+public slots:
+ void slotSlaveDied (KIO::Slave*);
+ void slotSlaveStatus (pid_t, const QCString&, const QString&, bool);
+
+signals:
+ void slaveConnected (KIO::Slave*);
+ void slaveError (KIO::Slave*, int, const QString&);
+
+protected:
+ void setupSlave (KIO::Slave*, const KURL&, const QString&, const QString&, bool, const KIO::MetaData* = 0);
+//ig bool startJobScheduled (KIO::Scheduler::ProtocolInfo*);
+ bool startJobDirect ();
+ Scheduler ();
+
+protected slots:
+ void startStep ();
+ void slotCleanIdleSlaves ();
+ void slotSlaveConnected ();
+ void slotSlaveError (int, const QString&);
+ void slotScheduleCoSlave ();
+
+%If ( KDE_3_1_0 - )
+ void slotUnregisterWindow (QObject*);
+%End
+
+
+private:
+ Scheduler (const KIO::Scheduler&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class Scheduler
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/sessiondata.sip b/python/pykde/sip/kio/sessiondata.sip
new file mode 100644
index 00000000..a1e97a2c
--- /dev/null
+++ b/python/pykde/sip/kio/sessiondata.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class SessionData : QObject
+{
+%TypeHeaderCode
+#include <sessiondata.h>
+%End
+
+
+public:
+ SessionData ();
+ virtual void configDataFor (KIO::MetaData&, const QString&, const QString&);
+ virtual void reset ();
+
+public slots:
+ void slotAuthData (const QCString&, const QCString&, bool);
+ void slotDelAuthData (const QCString&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class SessionData
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/skipdlg.sip b/python/pykde/sip/kio/skipdlg.sip
new file mode 100644
index 00000000..33f0bcf0
--- /dev/null
+++ b/python/pykde/sip/kio/skipdlg.sip
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <skipdlg.h>
+%End
+
+namespace KIO
+{
+
+enum SkipDlg_Result
+{
+ S_SKIP,
+ S_AUTO_SKIP,
+ S_CANCEL
+};
+
+//ig KIO::SkipDlg_Result open_SkipDlg (bool, const QString& = QString ::null );
+
+//ig class SkipDlg : KDialog;
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/slave.sip b/python/pykde/sip/kio/slave.sip
new file mode 100644
index 00000000..80d86da7
--- /dev/null
+++ b/python/pykde/sip/kio/slave.sip
@@ -0,0 +1,95 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class Slave : KIO::SlaveInterface
+{
+%TypeHeaderCode
+#include <slave.h>
+%End
+
+
+protected:
+
+%If ( KDE_3_2_0 - )
+ Slave (bool, KServerSocket*, const QString&, const QString&);
+%End
+
+
+public:
+ Slave (KServerSocket*, const QString&, const QString&);
+ void setPID (pid_t);
+ int slave_pid ();
+ void kill ();
+ bool isAlive ();
+ void setHost (const QString&, int, const QString&, const QString&);
+ void resetHost ();
+ void setConfig (const KIO::MetaData&);
+ QString protocol ();
+ void setProtocol (const QString&);
+ QString slaveProtocol ();
+ QString host ();
+ int port ();
+ QString user ();
+ QString passwd ();
+ static KIO::Slave* createSlave (const QString&, const KURL&, int& /Out/, QString& /Out/);
+ static KIO::Slave* holdSlave (const QString&, const KURL&);
+ void suspend ();
+ void resume ();
+ bool suspended ();
+
+%If ( KDE_3_2_0 - )
+ void send (int, const QByteArray& = QByteArray ());
+%End
+
+ void hold (const KURL&);
+ time_t idleTime ();
+ void setIdle ();
+ bool isConnected ();
+ void setConnected (bool);
+ KIO::Connection* connection ();
+ void ref ();
+ void deref ();
+
+public slots:
+ void accept (KSocket*);
+ void gotInput ();
+ void timeout ();
+
+signals:
+ void slaveDied (KIO::Slave*);
+
+protected:
+ void unlinkSocket ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class Slave
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/slavebase.sip b/python/pykde/sip/kio/slavebase.sip
new file mode 100644
index 00000000..d704a48b
--- /dev/null
+++ b/python/pykde/sip/kio/slavebase.sip
@@ -0,0 +1,187 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class SlaveBase
+{
+%TypeHeaderCode
+#include <slavebase.h>
+%End
+
+
+public:
+ SlaveBase (const QCString&, const QCString&, const QCString&);
+
+%If ( KDE_3_1_0 - )
+ void exit ();
+%End
+
+ void dispatchLoop ();
+ void setConnection (KIO::Connection*);
+ KIO::Connection* connection () const;
+ void data (const QByteArray&);
+ void dataReq ();
+ void error (int, const QString&);
+ void connected ();
+ void finished ();
+ void needSubURLData ();
+ void slaveStatus (const QString&, bool);
+ void statEntry (const KIO::UDSEntry&);
+ void listEntries (const KIO::UDSEntryList&);
+ bool canResume (KIO::filesize_t);
+ void canResume ();
+ void totalSize (KIO::filesize_t);
+ void processedSize (KIO::filesize_t);
+ void processedPercent (float);
+ void speed (ulong);
+ void redirection (const KURL&);
+ void errorPage ();
+ void mimeType (const QString&);
+ void warning (const QString&);
+ void infoMessage (const QString&);
+
+ enum MessageBoxType
+ {
+ QuestionYesNo,
+ WarningYesNo,
+ WarningContinueCancel,
+ WarningYesNoCancel,
+ Information,
+ SSLMessageBox
+ };
+
+ int messageBox (KIO::SlaveBase::MessageBoxType, const QString&, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+
+%If ( KDE_3_3_0 - )
+ int messageBox (const QString&, KIO::SlaveBase::MessageBoxType, const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null , const QString& = QString ::null );
+%End
+
+ void setMetaData (const QString&, const QString&);
+ bool hasMetaData (const QString&);
+ QString metaData (const QString&);
+
+%If ( KDE_3_5_2 - )
+ KIO::MetaData allMetaData () const;
+%End
+
+ KConfigBase* config ();
+
+%If ( KDE_3_3_0 - )
+ KRemoteEncoding* remoteEncoding ();
+%End
+
+ virtual void setHost (const QString&, int, const QString&, const QString&);
+ virtual void setSubURL (const KURL&);
+ virtual void openConnection ();
+ virtual void closeConnection ();
+ virtual void get (const KURL&);
+ virtual void put (const KURL&, int, bool, bool);
+ virtual void stat (const KURL&);
+ virtual void mimetype (const KURL&);
+ virtual void listDir (const KURL&);
+ virtual void mkdir (const KURL&, int);
+ virtual void rename (const KURL&, const KURL&, bool);
+ virtual void symlink (const QString&, const KURL&, bool);
+ virtual void chmod (const KURL&, int);
+ virtual void copy (const KURL&, const KURL&, int, bool);
+ virtual void del (const KURL&, bool) /PyName=del_/;
+ virtual void special (const QByteArray&);
+ virtual void multiGet (const QByteArray&);
+ virtual void slave_status ();
+ virtual void reparseConfiguration ();
+ int connectTimeout ();
+ int proxyConnectTimeout ();
+ int responseTimeout ();
+ int readTimeout ();
+
+%If ( KDE_3_1_0 - )
+ void setTimeoutSpecialCommand (int, const QByteArray& = QByteArray ());
+%End
+
+ static void sigsegv_handler (int);
+ static void sigpipe_handler (int);
+ virtual bool dispatch ();
+ virtual void dispatch (int, const QByteArray&);
+ int readData (QByteArray&);
+
+%If ( KDE_3_1_0 - )
+ void listEntry (const KIO::UDSEntry&, bool);
+ void connectSlave (const QString&);
+ void disconnectSlave ();
+ bool openPassDlg (KIO::AuthInfo&, const QString&);
+ bool openPassDlg (KIO::AuthInfo&);
+ bool checkCachedAuthentication (KIO::AuthInfo&);
+ bool cacheAuthentication (const KIO::AuthInfo&);
+ bool pingCacheDaemon () const;
+ QString createAuthCacheKey (const KURL&);
+ void sendAuthenticationKey (const QCString&, const QCString&, bool);
+ void delCachedAuthentication (const QString&);
+ void setMultipleAuthCaching (bool);
+ bool multipleAuthCaching () const;
+ bool requestNetwork (const QString& = QString ::null );
+ void dropNetwork (const QString& = QString ::null );
+ DCOPClient* dcopClient ();
+ int waitForAnswer (int, int, QByteArray&, int* = 0);
+ void sendMetaData ();
+ QCString mProtocol;
+ KIO::Connection* m_pConnection;
+ KIO::MetaData mOutgoingMetaData;
+ KIO::MetaData mIncomingMetaData;
+ bool wasKilled () const;
+ void setKillFlag ();
+%End
+
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+protected:
+
+%If ( - KDE_3_1_0 )
+ void listEntry (const KIO::UDSEntry&, bool);
+ void connectSlave (const QString&);
+ void disconnectSlave ();
+ bool pingCacheDaemon () const;
+ bool openPassDlg (KIO::AuthInfo&);
+ bool checkCachedAuthentication (KIO::AuthInfo&);
+ bool cacheAuthentication (const KIO::AuthInfo&);
+ QString createAuthCacheKey (const KURL&);
+ void sendAuthenticationKey (const QCString&, const QCString&, bool);
+ void delCachedAuthentication (const QString&);
+ void setMultipleAuthCaching (bool);
+ bool multipleAuthCaching () const;
+ bool requestNetwork (const QString& = QString ::null );
+ void dropNetwork (const QString& = QString ::null );
+ int waitForAnswer (int, int, QByteArray&, int* = 0);
+ void sendMetaData ();
+%End
+
+
+}; // class SlaveBase
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/slaveconfig.sip b/python/pykde/sip/kio/slaveconfig.sip
new file mode 100644
index 00000000..febf9c9c
--- /dev/null
+++ b/python/pykde/sip/kio/slaveconfig.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class SlaveConfig : QObject
+{
+%TypeHeaderCode
+#include <slaveconfig.h>
+%End
+
+
+public:
+ static KIO::SlaveConfig* self ();
+ void setConfigData (const QString&, const QString&, const QString&, const QString&);
+ void setConfigData (const QString&, const QString&, const KIO::MetaData&);
+ KIO::MetaData configData (const QString&, const QString&);
+ QString configData (const QString&, const QString&, const QString&);
+ void reset ();
+
+signals:
+ void configNeeded (const QString&, const QString&);
+
+protected:
+ SlaveConfig ();
+
+}; // class SlaveConfig
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/slaveinterface.sip b/python/pykde/sip/kio/slaveinterface.sip
new file mode 100644
index 00000000..cf66dd38
--- /dev/null
+++ b/python/pykde/sip/kio/slaveinterface.sip
@@ -0,0 +1,188 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <slaveinterface.h>
+%End
+
+namespace KIO
+{
+
+enum Info
+{
+ INF_TOTAL_SIZE,
+ INF_PROCESSED_SIZE,
+ INF_SPEED,
+ INF_REDIRECTION,
+ INF_MIME_TYPE,
+ INF_ERROR_PAGE,
+ INF_WARNING,
+ INF_GETTING_FILE,
+ INF_NEED_PASSWD,
+ INF_INFOMESSAGE,
+ INF_META_DATA,
+ INF_NETWORK_STATUS,
+ INF_MESSAGEBOX
+};
+
+
+%If ( KDE_3_1_2 - )
+
+enum Message
+{
+ MSG_DATA,
+ MSG_DATA_REQ,
+ MSG_ERROR,
+ MSG_CONNECTED,
+ MSG_FINISHED,
+ MSG_STAT_ENTRY,
+ MSG_LIST_ENTRIES,
+ MSG_RENAMED,
+ MSG_RESUME,
+ MSG_SLAVE_STATUS,
+ MSG_SLAVE_ACK,
+ MSG_NET_REQUEST,
+ MSG_NET_DROP,
+ MSG_NEED_SUBURL_DATA,
+ MSG_CANRESUME,
+ MSG_AUTH_KEY,
+ MSG_DEL_AUTH_KEY
+};
+
+%End
+
+
+class SlaveInterface : QObject
+{
+%TypeHeaderCode
+#include <slaveinterface.h>
+%End
+
+
+public:
+ SlaveInterface (KIO::Connection*);
+ void setConnection (KIO::Connection*);
+ KIO::Connection* connection () const;
+ void setProgressId (int);
+ int progressId () const;
+ void sendResumeAnswer (bool);
+ void setOffset (KIO::filesize_t);
+ KIO::filesize_t offset () const;
+
+signals:
+ void data (const QByteArray&);
+ void dataReq ();
+ void error (int, const QString&);
+ void connected ();
+ void finished ();
+ void slaveStatus (pid_t, const QCString&, const QString&, bool);
+ void listEntries (const KIO::UDSEntryList&);
+ void statEntry (const KIO::UDSEntry&);
+ void needSubURLData ();
+ void needProgressId ();
+ void canResume (KIO::filesize_t);
+ void metaData (const KIO::MetaData&);
+ void totalSize (KIO::filesize_t);
+ void processedSize (KIO::filesize_t);
+ void redirection (const KURL&);
+ void speed (ulong);
+ void errorPage ();
+ void mimeType (const QString&);
+ void warning (const QString&);
+ void infoMessage (const QString&);
+ void connectFinished ();
+ void authorizationKey (const QCString&, const QCString&, bool);
+ void delAuthorization (const QCString&);
+
+protected:
+ virtual bool dispatch ();
+ virtual bool dispatch (int, const QByteArray&);
+ void openPassDlg (KIO::AuthInfo&);
+ void openPassDlg (const QString&, const QString&, const QString&, const QString&, const QString&, bool);
+ void openPassDlg (const QString&, const QString&, bool);
+ void messageBox (int, const QString&, const QString&, const QString&, const QString&);
+
+%If ( KDE_3_3_0 - )
+ void messageBox (int, const QString&, const QString&, const QString&, const QString&, const QString&);
+%End
+
+ void requestNetwork (const QString&, const QString&);
+ void dropNetwork (const QString&, const QString&);
+ static void sigpipe_handler (int);
+
+protected slots:
+ void calcSpeed ();
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class SlaveInterface
+
+
+%If ( - KDE_3_2_0 )
+
+enum Command
+{
+ CMD_HOST,
+ CMD_CONNECT,
+ CMD_DISCONNECT,
+ CMD_SLAVE_STATUS,
+ CMD_SLAVE_CONNECT,
+ CMD_SLAVE_HOLD,
+ CMD_NONE,
+ CMD_TESTDIR,
+ CMD_GET,
+ CMD_PUT,
+ CMD_STAT,
+ CMD_MIMETYPE,
+ CMD_LISTDIR,
+ CMD_MKDIR,
+ CMD_RENAME,
+ CMD_COPY,
+ CMD_DEL,
+ CMD_CHMOD,
+ CMD_SPECIAL,
+ CMD_USERPASS,
+ CMD_REPARSECONFIGURATION,
+ CMD_META_DATA,
+ CMD_SYMLINK,
+ CMD_SUBURL,
+ CMD_MESSAGEBOXANSWER,
+ CMD_RESUMEANSWER,
+ CMD_CONFIG,
+ CMD_MULTI_GET
+};
+
+%End
+
+}; // namespace KIO
+
+
+%If ( KDE_3_1_4 - )
+//igx QDataStream& operator << (QDataStream&, const KIO::UDSEntry&);
+//igx QDataStream& operator >> (QDataStream&, KIO::UDSEntry&);
+%End
diff --git a/python/pykde/sip/kio/statusbarprogress.sip b/python/pykde/sip/kio/statusbarprogress.sip
new file mode 100644
index 00000000..a70ae4fd
--- /dev/null
+++ b/python/pykde/sip/kio/statusbarprogress.sip
@@ -0,0 +1,56 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class StatusbarProgress : KIO::ProgressBase
+{
+%TypeHeaderCode
+#include <statusbarprogress.h>
+%End
+
+
+public:
+ StatusbarProgress (QWidget* /TransferThis/, bool = 1);
+ void setJob (KIO::Job*);
+
+public slots:
+ virtual void slotClean ();
+ virtual void slotTotalSize (KIO::Job*, KIO::filesize_t);
+ virtual void slotPercent (KIO::Job*, ulong);
+ virtual void slotSpeed (KIO::Job*, ulong);
+
+protected:
+ void setMode ();
+ virtual bool eventFilter (QObject*, QEvent*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class StatusbarProgress
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/tcpslavebase.sip b/python/pykde/sip/kio/tcpslavebase.sip
new file mode 100644
index 00000000..f3fd4e45
--- /dev/null
+++ b/python/pykde/sip/kio/tcpslavebase.sip
@@ -0,0 +1,91 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KIO
+{
+
+class TCPSlaveBase : KIO::SlaveBase
+{
+%TypeHeaderCode
+#include <tcpslavebase.h>
+%End
+
+
+public:
+ TCPSlaveBase (ushort, const QCString&, const QCString&, const QCString&);
+ TCPSlaveBase (ushort, const QCString&, const QCString&, const QCString&, bool);
+
+protected:
+ ssize_t Write (const void*, ssize_t);
+ ssize_t Read (void*, ssize_t);
+ ssize_t ReadLine (char*, ssize_t);
+ ushort GetPort (ushort);
+ bool ConnectToHost (const QString&, uint, bool);
+ void CloseDescriptor ();
+ bool AtEOF ();
+ bool InitializeSSL ();
+ void CleanSSL ();
+ ssize_t write (const void*, ssize_t);
+ ssize_t read (void*, ssize_t);
+ ssize_t readLine (char*, ssize_t);
+ void setBlockSize (int);
+ ushort port (ushort);
+ bool connectToHost (const QString&, uint, bool = 1);
+
+%If ( KDE_3_2_0 - )
+ bool usingSSL () const;
+%End
+
+ bool usingTLS ();
+ bool canUseTLS ();
+ int startTLS ();
+ void stopTLS ();
+ void closeDescriptor ();
+ bool atEnd ();
+ void setSSLMetaData ();
+ bool initializeSSL ();
+ void cleanSSL ();
+ bool isConnectionValid ();
+ int connectResult ();
+ bool waitForResponse (int);
+ void setBlockConnection (bool);
+ void setConnectTimeout (int);
+ bool isSSLTunnelEnabled ();
+ void setEnableSSLTunnel (bool);
+ void setRealHost (const QString&);
+ void doConstructorStuff ();
+ int verifyCertificate ();
+ void certificatePrompt ();
+ bool userAborted () const;
+
+protected:
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class TCPSlaveBase
+
+}; // namespace KIO
+
diff --git a/python/pykde/sip/kio/thumbcreator.sip b/python/pykde/sip/kio/thumbcreator.sip
new file mode 100644
index 00000000..8d046a1e
--- /dev/null
+++ b/python/pykde/sip/kio/thumbcreator.sip
@@ -0,0 +1,47 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kio version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class ThumbCreator
+{
+%TypeHeaderCode
+#include <thumbcreator.h>
+%End
+
+
+public:
+
+ enum Flags
+ {
+ None,
+ DrawFrame,
+ BlendIcon
+ };
+
+ virtual bool create (const QString&, int, int, QImage&) = 0;
+ virtual ThumbCreator::Flags flags () const;
+
+}; // class ThumbCreator
+
diff --git a/python/pykde/sip/kmdi/kmdichildarea.sip b/python/pykde/sip/kmdi/kmdichildarea.sip
new file mode 100644
index 00000000..f92e2e96
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdichildarea.sip
@@ -0,0 +1,102 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiChildArea : QFrame
+{
+%TypeHeaderCode
+#include <kmdichildarea.h>
+%End
+
+
+public:
+//ig QPtrList<KMdiChildFrm>* m_pZ;
+ QSize m_defaultChildFrmSize;
+
+protected:
+
+public:
+ KMdiChildArea (QWidget*);
+ void manageChild (KMdiChildFrm*, bool = 1, bool = 1);
+ void destroyChild (KMdiChildFrm*, bool = 1);
+ void destroyChildButNotItsView (KMdiChildFrm*, bool = 1);
+ void setTopChild (KMdiChildFrm*, bool = 0);
+ KMdiChildFrm* topChild () const;
+ int getVisibleChildCount () const;
+ QPoint getCascadePoint (int = -1);
+ void setMdiCaptionFont (const QFont&);
+ void setMdiCaptionActiveForeColor (const QColor&);
+ void setMdiCaptionActiveBackColor (const QColor&);
+ void setMdiCaptionInactiveForeColor (const QColor&);
+ void setMdiCaptionInactiveBackColor (const QColor&);
+ static void getCaptionColors (const QPalette&, QColor&, QColor&, QColor&, QColor&);
+
+public slots:
+ void cascadeWindows ();
+ void cascadeMaximized ();
+ void expandVertical ();
+ void expandHorizontal ();
+ void focusTopChild ();
+ void tilePragma ();
+ void tileAnodine ();
+ void tileVertically ();
+ void layoutMinimizedChildren ();
+
+protected:
+ void tileAllInternal (int);
+ virtual void resizeEvent (QResizeEvent*);
+ void mousePressEvent (QMouseEvent*);
+ void childMinimized (KMdiChildFrm*, bool);
+
+signals:
+ void noMaximizedChildFrmLeft (KMdiChildFrm*);
+ void nowMaximized (bool);
+ void sysButtonConnectionsMustChange (KMdiChildFrm*, KMdiChildFrm*);
+ void popupWindowMenu (QPoint);
+ void lastChildFrmClosed ();
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KMdiChildArea, &sipClass_KMdiChildArea},
+ {sipName_KMdiChildFrm, &sipClass_KMdiChildFrm},
+ {sipName_KMdiChildView, &sipClass_KMdiChildView},
+ {sipName_KMdiChildFrmCaption, &sipClass_KMdiChildFrmCaption},
+ {sipName_KMdiMainFrm, &sipClass_KMdiMainFrm},
+ {sipName_KMdiTaskBar, &sipClass_KMdiTaskBar},
+ {sipName_KMdiTaskBarButton, &sipClass_KMdiTaskBarButton},
+ {sipName_KMdiToolViewAccessor, &sipClass_KMdiToolViewAccessor},
+ {sipName_KMdiWin32IconButton, &sipClass_KMdiWin32IconButton},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class KMdiChildArea
+
diff --git a/python/pykde/sip/kmdi/kmdichildfrm.sip b/python/pykde/sip/kmdi/kmdichildfrm.sip
new file mode 100644
index 00000000..9aed876e
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdichildfrm.sip
@@ -0,0 +1,276 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiWin32IconButton : QLabel
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiWin32IconButton (QWidget*, const char* = 0);
+ virtual void mousePressEvent (QMouseEvent*);
+
+signals:
+ void pressed ();
+
+}; // class KMdiWin32IconButton
+
+
+class KMdiChildFrmMoveEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiChildFrmMoveEvent (QMoveEvent*);
+
+}; // class KMdiChildFrmMoveEvent
+
+
+class KMdiChildFrmDragBeginEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiChildFrmDragBeginEvent (QMouseEvent*);
+
+}; // class KMdiChildFrmDragBeginEvent
+
+
+class KMdiChildFrmDragEndEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiChildFrmDragEndEvent (QMouseEvent*);
+
+}; // class KMdiChildFrmDragEndEvent
+
+
+class KMdiChildFrmResizeBeginEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiChildFrmResizeBeginEvent (QMouseEvent*);
+
+}; // class KMdiChildFrmResizeBeginEvent
+
+
+class KMdiChildFrmResizeEndEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+ KMdiChildFrmResizeEndEvent (QMouseEvent*);
+
+}; // class KMdiChildFrmResizeEndEvent
+
+
+class KMdiChildFrm : QFrame
+{
+%TypeHeaderCode
+#include <kmdichildfrm.h>
+%End
+
+
+public:
+
+ enum MdiWindowState
+ {
+ Normal,
+ Maximized,
+ Minimized
+ };
+
+ KMdiChildView* m_pClient;
+
+protected:
+
+public:
+ KMdiChildFrm (KMdiChildArea*);
+ void setClient (KMdiChildView*, bool = 0);
+ void unsetClient (QPoint = QPoint (0 ,0 ));
+ void setIcon (const QPixmap&);
+ QPixmap* icon () const;
+ void enableClose (bool);
+ void setCaption (const QString&);
+ const QString& caption ();
+ void setState (KMdiChildFrm::MdiWindowState, bool = 1);
+ KMdiChildFrm::MdiWindowState state () const;
+ QRect mdiAreaContentsRect () const;
+ QRect restoreGeometry () const;
+ void setRestoreGeometry (const QRect&);
+ void updateRects ();
+ QPopupMenu* systemMenu () const;
+ int captionHeight () const;
+ void redecorateButtons ();
+ bool isInDrag () const;
+ bool isInResize () const;
+ void raiseAndActivate ();
+ virtual void setMinimumSize (int, int);
+
+public slots:
+ void slot_resizeViaSystemMenu ();
+
+protected:
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void moveEvent (QMoveEvent*);
+ virtual void leaveEvent (QEvent*);
+ virtual bool eventFilter (QObject*, QEvent*);
+ void resizeWindow (int, int, int);
+ void setResizeCursor (int);
+ void unsetResizeCursor ();
+ virtual void switchToMinimizeLayout ();
+ void doResize ();
+ void doResize (bool);
+
+protected slots:
+ void maximizePressed ();
+ void restorePressed ();
+ void minimizePressed ();
+ void closePressed ();
+ void undockPressed ();
+ void showSystemMenu ();
+
+protected:
+//ig void linkChildren (QDict<FocusPolicy>*);
+ QDict<QWidget::FocusPolicy>* unlinkChildren ();
+ int getResizeCorner (int, int);
+
+protected:
+
+%If ( - KDE_3_2_2 )
+ void linkChildren (QDict<QWidget::FocusPolicy>*);
+%End
+
+
+}; // class KMdiChildFrm
+
+
+
+%MappedType QDict<QWidget::FocusPolicy>
+//converts a Python dict of QWidget::FocusPolicy
+{
+%TypeHeaderCode
+#include <qdict.h>
+#include <sipqtQWidget.h>
+#include <sipqtQString.h>
+%End
+
+%ConvertFromTypeCode
+// Convert to a Python dictionary
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QDict<QWidget::FocusPolicy> qdict = *sipCpp;
+ QDictIterator<QWidget::FocusPolicy> it (qdict);
+
+ while (it.current ())
+ {
+ PyObject *a0 = sipConvertFromInstance (&it.currentKey (), sipClass_QString, sipTransferObj);
+ PyObject *a1 = PyInt_FromLong ((long) it.current ());
+
+ if ((a0 == NULL) || (a1 == NULL) || (PyDict_SetItem (dict, a0, a1) < 0))
+ {
+ Py_XDECREF (a0);
+ Py_XDECREF (a1);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QDict<int> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+ QDict<QWidget::FocusPolicy>* qdict = new QDict<QWidget::FocusPolicy>;
+
+ PyObject *key, *value;
+ int pos = 0;
+ QString *a0;
+ QWidget::FocusPolicy a1;
+
+ while (PyDict_Next(sipPy, &pos, &key, &value))
+ {
+ int iserr = 0;
+
+ a0 = (QString *)sipForceConvertTo_QString (key, &iserr);
+
+ if ((iserr) || (!PyInt_Check (value)))
+ {
+ *sipIsErr = 1;
+ delete qdict;
+ return 0;
+ }
+
+ a1 = (QWidget::FocusPolicy) PyInt_AS_LONG (value);
+
+ qdict->insert (*a0, &a1);
+ }
+
+ *sipCppPtr = qdict;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kmdi/kmdichildfrmcaption.sip b/python/pykde/sip/kmdi/kmdichildfrmcaption.sip
new file mode 100644
index 00000000..c484faed
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdichildfrmcaption.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiChildFrmCaption : QWidget
+{
+%TypeHeaderCode
+#include <kmdichildfrmcaption.h>
+%End
+
+
+public:
+ KMdiChildFrmCaption (KMdiChildFrm*);
+ void setActive (bool);
+ void setCaption (const QString&);
+ int heightHint ();
+
+public slots:
+ void slot_moveViaSystemMenu ();
+
+protected:
+ virtual void paintEvent (QPaintEvent*);
+ virtual void mousePressEvent (QMouseEvent*);
+ virtual void mouseDoubleClickEvent (QMouseEvent*);
+ virtual void mouseReleaseEvent (QMouseEvent*);
+ virtual void mouseMoveEvent (QMouseEvent*);
+ QString abbreviateText (QString, int);
+
+public:
+ QString m_szCaption;
+
+protected:
+
+}; // class KMdiChildFrmCaption
+
diff --git a/python/pykde/sip/kmdi/kmdichildview.sip b/python/pykde/sip/kmdi/kmdichildview.sip
new file mode 100644
index 00000000..b411ee73
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdichildview.sip
@@ -0,0 +1,120 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiChildView : QWidget
+{
+%TypeHeaderCode
+#include <kmdichildview.h>
+%End
+
+
+protected:
+
+public:
+ KMdiChildView (const QString&, QWidget* = 0, const char* = 0, WFlags = 0);
+ KMdiChildView (QWidget* = 0, const char* = 0, WFlags = 0);
+ void activate ();
+ void setFirstFocusableChildWidget (QWidget*);
+ void setLastFocusableChildWidget (QWidget*);
+ QWidget* focusedChildWidget ();
+ bool isAttached () const;
+ const QString& caption () const;
+ const QString& tabCaption () const;
+ virtual void setCaption (const QString&);
+ virtual void setTabCaption (const QString&);
+ virtual void setMDICaption (const QString&);
+ KMdiChildFrm* mdiParent () const;
+ bool isMinimized () const;
+ bool isMaximized () const;
+ QRect internalGeometry () const;
+ void setInternalGeometry (const QRect&);
+ QRect externalGeometry () const;
+ void setExternalGeometry (const QRect&);
+ virtual QPixmap* myIconPtr ();
+ virtual void minimize (bool);
+ virtual void maximize (bool);
+ QRect restoreGeometry ();
+ void setRestoreGeometry (const QRect&);
+ void removeEventFilterForAllChildren ();
+ void setWindowMenuID (int);
+ virtual void setMinimumSize (int, int);
+ virtual void setMaximumSize (int, int);
+ bool isToolView () const;
+ void updateTimeStamp ();
+ const QDateTime& getTimeStamp () const;
+
+public slots:
+ virtual void attach ();
+ virtual void detach ();
+ virtual void minimize ();
+ virtual void maximize ();
+ virtual void restore ();
+ virtual void youAreAttached (KMdiChildFrm*);
+ virtual void youAreDetached ();
+ virtual void slot_clickedInWindowMenu ();
+ virtual void slot_clickedInDockMenu ();
+ virtual void show ();
+ virtual void hide ();
+ virtual void raise () /PyName=raise_/;
+ virtual void showMinimized ();
+ virtual void showMaximized ();
+ virtual void showNormal ();
+
+protected:
+ virtual void closeEvent (QCloseEvent*);
+ virtual bool eventFilter (QObject*, QEvent*);
+ virtual void focusInEvent (QFocusEvent*);
+ virtual void focusOutEvent (QFocusEvent*);
+ virtual void resizeEvent (QResizeEvent*);
+ void trackIconAndCaptionChanges (QWidget*);
+
+protected slots:
+ void slot_childDestroyed ();
+
+signals:
+ void attachWindow (KMdiChildView*, bool);
+ void detachWindow (KMdiChildView*, bool);
+ void focusInEventOccurs (KMdiChildView*);
+ void gotFocus (KMdiChildView*);
+ void activated (KMdiChildView*);
+ void lostFocus (KMdiChildView*);
+ void deactivated (KMdiChildView*);
+ void childWindowCloseRequest (KMdiChildView*);
+ void windowCaptionChanged (const QString&);
+ void tabCaptionChanged (const QString&);
+ void mdiParentNowMaximized (bool);
+ void clickedInWindowMenu (int);
+ void clickedInDockMenu (int);
+ void isMaximizedNow ();
+ void isMinimizedNow ();
+ void isRestoredNow ();
+ void isAttachedNow ();
+ void isDetachedNow ();
+ void iconUpdated (QWidget*, QPixmap);
+ void captionUpdated (QWidget*, const QString&);
+
+}; // class KMdiChildView
+
diff --git a/python/pykde/sip/kmdi/kmdidefines.sip b/python/pykde/sip/kmdi/kmdidefines.sip
new file mode 100644
index 00000000..32b54357
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdidefines.sip
@@ -0,0 +1,115 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <kmdidefines.h>
+%End
+
+namespace KMdi
+{
+
+enum EventType
+{
+ EV_Move,
+ EV_DragBegin,
+ EV_DragEnd,
+ EV_ResizeBegin,
+ EV_ResizeEnd
+};
+
+
+%If ( KDE_3_3_2 - )
+
+enum AddWindowFlags
+{
+ StandardAdd,
+ Maximize,
+ Minimize,
+ Hide,
+ Detach,
+ ToolWindow,
+ UseKMdiSizeHint,
+//ig AddWindowFlags
+};
+
+%End
+
+
+enum FrameDecor
+{
+ Win95Look,
+ KDE1Look,
+ KDELook,
+ KDELaptopLook
+};
+
+
+enum MdiMode
+{
+ UndefinedMode,
+ ToplevelMode,
+ ChildframeMode,
+ TabPageMode,
+ IDEAlMode
+};
+
+
+%If ( KDE_3_3_0 - )
+
+enum TabWidgetVisibility
+{
+ AlwaysShowTabs,
+ ShowWhenMoreThanOneTab,
+ NeverShowTabs
+};
+
+
+enum ToolviewStyle
+{
+ IconOnly,
+ TextOnly,
+ TextAndIcon
+};
+
+%End
+
+
+%If ( - KDE_3_3_2 )
+
+enum AddWindowFlags
+{
+ StandardAdd,
+ Maximize,
+ Minimize,
+ Hide,
+ Detach,
+ ToolWindow,
+ UseKMdiSizeHint
+};
+
+%End
+
+}; // namespace KMdi
+
diff --git a/python/pykde/sip/kmdi/kmdimainfrm.sip b/python/pykde/sip/kmdi/kmdimainfrm.sip
new file mode 100644
index 00000000..c071f0cc
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdimainfrm.sip
@@ -0,0 +1,339 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiViewCloseEvent : QCustomEvent
+{
+%TypeHeaderCode
+#include <kmdimainfrm.h>
+%End
+
+
+public:
+ KMdiViewCloseEvent (KMdiChildView*);
+
+}; // class KMdiViewCloseEvent
+
+
+class KMdiMainFrm : KParts::DockMainWindow
+{
+%TypeHeaderCode
+#include <kmdimainfrm.h>
+%End
+
+
+protected:
+
+public:
+ KMdiMainFrm (QWidget*, const char* = "", KMdi::MdiMode = KMdi ::ChildframeMode , WFlags = WType_TopLevel |WDestructiveClose );
+ void setStandardMDIMenuEnabled (bool = 1);
+ void setManagedDockPositionModeEnabled (bool);
+ bool isInMaximizedChildFrmMode ();
+ KMdi::MdiMode mdiMode ();
+ KMdiChildView* activeWindow ();
+ virtual QPopupMenu* taskBarPopup (KMdiChildView*, bool = 0);
+ virtual QPopupMenu* windowPopup (KMdiChildView*, bool = 1);
+ virtual void applyOptions ();
+ KMdiChildView* findWindow (const QString&);
+
+ enum ExistsAs
+ {
+ DocumentView,
+ ToolView,
+ AnyView
+ };
+
+ bool windowExists (KMdiChildView*, KMdiMainFrm::ExistsAs);
+ virtual bool event (QEvent*);
+ virtual void setSysButtonsAtMenuPosition ();
+ virtual int taskBarHeight ();
+ virtual void setUndockPositioningOffset (QPoint);
+//ig KMdiIterator<KMdiChildView*>* createIterator ();
+//ig void deleteIterator (KMdiIterator<KMdiChildView*>*);
+ QPopupMenu* windowMenu () const;
+ virtual void setBackgroundColor (const QColor&);
+ virtual void setBackgroundPixmap (const QPixmap&);
+ void setDefaultChildFrmSize (const QSize&);
+ QSize defaultChildFrmSize ();
+ virtual void setMinimumSize (int, int);
+ int childFrameModeHeight ();
+ virtual void setMenuForSDIModeSysButtons (KMenuBar* = 0);
+ static int frameDecorOfAttachedViews ();
+ void fakeSDIApplication ();
+ bool isFakingSDIApplication () const;
+ virtual bool eventFilter (QObject*, QEvent*);
+ void findRootDockWidgets (QPtrList<KDockWidget>*, QValueList<QRect>*);
+ void setSwitching (const bool);
+ bool switching () const;
+
+public slots:
+ KMdiChildView* createWrapper (QWidget*, const QString&, const QString&);
+ virtual void addWindow (KMdiChildView*, int = KMdi ::StandardAdd );
+
+%If ( KDE_3_3_0 - )
+ void addWindow (KMdiChildView*, int, int);
+%End
+
+ virtual void addWindow (KMdiChildView*, QPoint, int = KMdi ::StandardAdd );
+ virtual void addWindow (KMdiChildView*, QRect, int = KMdi ::StandardAdd );
+ virtual KMdiToolViewAccessor* addToolWindow (QWidget*, KDockWidget::DockPosition = KDockWidget ::DockNone , QWidget* = 0, int = 50, const QString& = 0, const QString& = 0);
+ virtual void deleteToolWindow (QWidget*);
+ virtual void deleteToolWindow (KMdiToolViewAccessor*);
+ KMdiToolViewAccessor* createToolWindow ();
+ virtual void removeWindowFromMdi (KMdiChildView*);
+ virtual void closeWindow (KMdiChildView*, bool = 1);
+ virtual void slot_toggleTaskBar ();
+ virtual void attachWindow (KMdiChildView*, bool = 1, bool = 0);
+ virtual void detachWindow (KMdiChildView*, bool = 1);
+ virtual void childWindowCloseRequest (KMdiChildView*);
+ virtual void closeAllViews ();
+ virtual void iconifyAllViews ();
+ virtual void closeActiveView ();
+ virtual void switchToToplevelMode ();
+ virtual void finishToplevelMode ();
+ virtual void switchToChildframeMode ();
+ virtual void finishChildframeMode ();
+ virtual void switchToTabPageMode ();
+ virtual void finishTabPageMode ();
+ virtual void switchToIDEAlMode ();
+ virtual void finishIDEAlMode (bool = 1);
+ void setIDEAlModeStyle (int);
+
+%If ( KDE_3_3_0 - )
+ void setToolviewStyle (int);
+%End
+
+ bool isViewTaskBarOn ();
+ virtual void showViewTaskBar ();
+ virtual void hideViewTaskBar ();
+ virtual void fillWindowMenu ();
+ virtual void cascadeWindows ();
+ virtual void cascadeMaximized ();
+ virtual void expandVertical ();
+ virtual void expandHorizontal ();
+ virtual void tilePragma ();
+ virtual void tileAnodine ();
+ virtual void tileVertically ();
+ virtual void setFrameDecorOfAttachedViews (int);
+ virtual void setEnableMaximizedChildFrmMode (bool);
+ virtual void activateNextWin ();
+ virtual void activatePrevWin ();
+ virtual void activateFirstWin ();
+ virtual void activateLastWin ();
+ virtual void activateView (int);
+
+protected:
+ virtual void resizeEvent (QResizeEvent*);
+ virtual void createTaskBar ();
+ virtual void createMdiManager ();
+ void blockClearingOfWindowMenu (bool);
+ void findToolViewsDockedToMain (QPtrList<KDockWidget>*, KDockWidget::DockPosition);
+ void dockToolViewsIntoContainers (QPtrList<KDockWidget>&, KDockWidget*);
+ QStringList prepareIdealToTabs (KDockWidget*);
+ void idealToolViewsToStandardTabs (QStringList, KDockWidget::DockPosition, int);
+//force
+%If ( KDE_3_4_0 - )
+ KTabWidget* tabWidget() const;
+%End
+//end
+
+%If ( KDE_3_3_0 - )
+ KMdi::TabWidgetVisibility tabWidgetVisibility ();
+ void setTabWidgetVisibility (KMdi::TabWidgetVisibility);
+%End
+
+
+protected slots:
+ virtual void activateView (KMdiChildView*);
+ virtual void taskbarButtonRightClicked (KMdiChildView*);
+ void switchOffMaximizeModeForMenu (KMdiChildFrm*);
+ void updateSysButtonConnections (KMdiChildFrm*, KMdiChildFrm*);
+ void windowMenuItemActivated (int);
+ void dockMenuItemActivated (int);
+ void popupWindowMenu (QPoint);
+ void dragEndTimeOut ();
+ void closeViewButtonPressed ();
+
+signals:
+ void lastChildFrmClosed ();
+ void lastChildViewClosed ();
+ void leftTopLevelMode ();
+ void childViewIsDetachedNow (QWidget*);
+ void collapseOverlapContainers ();
+ void mdiModeHasBeenChangedTo (KMdi::MdiMode);
+ void viewActivated (KMdiChildView*);
+ void viewDeactivated (KMdiChildView*);
+
+public slots:
+ void prevToolViewInDock ();
+ void nextToolViewInDock ();
+
+signals:
+ void toggleTop ();
+ void toggleLeft ();
+ void toggleRight ();
+ void toggleBottom ();
+
+}; // class KMdiMainFrm
+
+
+
+%MappedType QPtrList<KDockWidget>
+//converts a Python list of KDockWidget
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KDockWidget> *cpplist = (QPtrList<KDockWidget> *)sipCpp;
+ KDockWidget *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KDockWidget, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KDockWidget> *cpplist = new QPtrList<KDockWidget>;
+
+ PyObject *elem;
+ KDockWidget *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KDockWidget *)sipForceConvertTo_KDockWidget (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QValueList<QRect>
+//converts a Python list of QRect
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<QRect> *cpplist = (QValueList<QRect> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<QRect>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new QRect (*it), sipClass_QRect)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<QRect> *cpplist = new QValueList<QRect>;
+
+ PyObject *elem;
+ QRect *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (QRect *)sipForceConvertTo_QRect (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kmdi/kmdimod.sip b/python/pykde/sip/kmdi/kmdimod.sip
new file mode 100644
index 00000000..92551e64
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdimod.sip
@@ -0,0 +1,47 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kmdi
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import qtxml/qtxmlmod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+%Import kpartsmod.sip
+
+%Include kmdichildarea.sip
+%Include kmdichildfrm.sip
+%Include kmdichildfrmcaption.sip
+%Include kmdichildview.sip
+%Include kmdidefines.sip
+%Include kmdimainfrm.sip
+%Include kmditaskbar.sip
+%Include kmditoolviewaccessor.sip
diff --git a/python/pykde/sip/kmdi/kmdimod.sip.in b/python/pykde/sip/kmdi/kmdimod.sip.in
new file mode 100644
index 00000000..fc44999b
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmdimod.sip.in
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kmdi
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import qtxml/qtxmlmod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+%Import kpartsmod.sip
+
+%Include kmdichildarea.sip
+%Include kmdichildfrm.sip
+%Include kmdichildfrmcaption.sip
+%Include kmdichildview.sip
+%Include kmdidefines.sip
+%Include kmdimainfrm.sip
+%Include kmditaskbar.sip
+%Include kmditoolviewaccessor.sip
+@mark@
diff --git a/python/pykde/sip/kmdi/kmditaskbar.sip b/python/pykde/sip/kmdi/kmditaskbar.sip
new file mode 100644
index 00000000..70ac8c0f
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmditaskbar.sip
@@ -0,0 +1,88 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiTaskBarButton : QPushButton
+{
+%TypeHeaderCode
+#include <kmditaskbar.h>
+%End
+
+
+public:
+ KMdiTaskBarButton (KMdiTaskBar*, KMdiChildView*);
+ QString actualText () const;
+ void fitText (const QString&, int);
+ void setText (const QString&);
+
+signals:
+ void clicked (KMdiChildView*);
+ void leftMouseButtonClicked (KMdiChildView*);
+ void rightMouseButtonClicked (KMdiChildView*);
+ void buttonTextChanged (int);
+
+public slots:
+ void setNewText (const QString&);
+
+protected slots:
+ void mousePressEvent (QMouseEvent*);
+
+public:
+ KMdiChildView* m_pWindow;
+
+protected:
+
+}; // class KMdiTaskBarButton
+
+
+class KMdiTaskBar : KToolBar
+{
+%TypeHeaderCode
+#include <kmditaskbar.h>
+%End
+
+
+public:
+ KMdiTaskBar (KMdiMainFrm*, Qt::Dock);
+ KMdiTaskBarButton* addWinButton (KMdiChildView*);
+ void removeWinButton (KMdiChildView*, bool = 1);
+ KMdiTaskBarButton* getNextWindowButton (bool, KMdiChildView*);
+ KMdiTaskBarButton* getButton (KMdiChildView*);
+ void switchOn (bool);
+ bool isSwitchedOn () const;
+
+protected:
+ void resizeEvent (QResizeEvent*);
+
+protected slots:
+ void layoutTaskBar (int = 0);
+
+public slots:
+ void setActiveButton (KMdiChildView*);
+
+protected:
+
+}; // class KMdiTaskBar
+
diff --git a/python/pykde/sip/kmdi/kmditoolviewaccessor.sip b/python/pykde/sip/kmdi/kmditoolviewaccessor.sip
new file mode 100644
index 00000000..d36b2527
--- /dev/null
+++ b/python/pykde/sip/kmdi/kmditoolviewaccessor.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kmdi version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KMdiToolViewAccessor : QObject
+{
+%TypeHeaderCode
+#include <kmditoolviewaccessor.h>
+%End
+
+
+private:
+ KMdiToolViewAccessor (KMdiMainFrm*, QWidget*, const QString& = 0, const QString& = 0);
+ KMdiToolViewAccessor (KMdiMainFrm*);
+
+public:
+ QWidget* wrapperWidget ();
+ QWidget* wrappedWidget ();
+ void place (KDockWidget::DockPosition = KDockWidget ::DockNone , QWidget* = 0, int = 50);
+ void placeAndShow (KDockWidget::DockPosition = KDockWidget ::DockNone , QWidget* = 0, int = 50);
+ void show ();
+
+public slots:
+ void setWidgetToWrap (QWidget*, const QString& = 0, const QString& = 0);
+ void hide ();
+
+protected:
+ bool eventFilter (QObject*, QEvent*);
+
+}; // class KMdiToolViewAccessor
+
diff --git a/python/pykde/sip/kparts/browserextension.sip b/python/pykde/sip/kparts/browserextension.sip
new file mode 100644
index 00000000..3d5017ee
--- /dev/null
+++ b/python/pykde/sip/kparts/browserextension.sip
@@ -0,0 +1,603 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class URLArgs
+{
+%TypeHeaderCode
+#include <browserextension.h>
+#include <sipkioKIOMetaData.h>
+%End
+
+
+public:
+ URLArgs ();
+ URLArgs (const KParts::URLArgs&);
+ URLArgs (bool, int, int, const QString& = QString ::null );
+ QStringList docState;
+ bool reload;
+ int xOffset;
+ int yOffset;
+ QString serviceType;
+ QByteArray postData;
+ void setContentType (const QString&);
+ QString contentType () const;
+ void setDoPost (bool);
+ bool doPost () const;
+ void setLockHistory (bool);
+ bool lockHistory () const;
+
+%If ( KDE_3_1_0 - )
+ void setNewTab (bool);
+ bool newTab () const;
+%End
+
+ QMap<QString,QString>& metaData ();
+ QString frameName;
+ bool trustedSource;
+
+%If ( KDE_3_1_3 - )
+ bool redirectedRequest () const;
+ void setRedirectedRequest (bool);
+
+%If ( KDE_3_4_0 - )
+ void setForcesNewWindow (bool);
+ bool forcesNewWindow () const;
+%End
+
+%End
+
+//ig URLArgsPrivate* d;
+
+}; // class URLArgs
+
+
+class WindowArgs
+{
+%TypeHeaderCode
+#include <browserextension.h>
+%End
+
+
+public:
+ WindowArgs ();
+ WindowArgs (const KParts::WindowArgs&);
+ WindowArgs (const QRect&, bool, bool, bool, bool, bool);
+ WindowArgs (int, int, int, int, bool, bool, bool, bool, bool);
+ int x;
+ int y;
+ int width;
+ int height;
+ bool fullscreen;
+ bool menuBarVisible;
+ bool toolBarsVisible;
+ bool statusBarVisible;
+ bool resizable;
+ bool lowerWindow;
+
+%If ( KDE_3_5_0 - )
+ bool scrollBarsVisible;
+%End
+
+//ig WindowArgsPrivate* d;
+
+}; // class WindowArgs
+
+
+class OpenURLEvent : KParts::Event
+{
+%TypeHeaderCode
+#include <browserextension.h>
+%End
+
+
+public:
+ OpenURLEvent (KParts::ReadOnlyPart*, const KURL&, const KParts::URLArgs& = KParts ::URLArgs ());
+ KParts::ReadOnlyPart* part () const;
+ KURL url () const;
+ KParts::URLArgs args () const;
+ static bool test (const QEvent*);
+
+}; // class OpenURLEvent
+
+
+class BrowserExtension : QObject
+{
+%TypeHeaderCode
+#include <browserextension.h>
+%End
+
+
+public:
+ BrowserExtension (KParts::ReadOnlyPart* /TransferThis/, const char* = 0);
+
+%If ( KDE_3_2_0 - )
+ typedef uint PopupFlags;
+
+%If ( KDE_3_4_0 - )
+
+ enum
+ {
+ DefaultPopupItems,
+ ShowNavigationItems,
+ ShowUp,
+ ShowReload,
+ ShowBookmark,
+ ShowCreateDirectory,
+ ShowTextSelectionItems,
+ NoDeletion
+ };
+
+%End
+
+%End
+
+ virtual void setURLArgs (const KParts::URLArgs&);
+ KParts::URLArgs urlArgs () const;
+ virtual int xOffset ();
+ virtual int yOffset ();
+ virtual void saveState (QDataStream&);
+ virtual void restoreState (QDataStream&);
+ bool isURLDropHandlingEnabled () const;
+ void setURLDropHandlingEnabled (bool);
+ void setBrowserInterface (KParts::BrowserInterface*);
+ KParts::BrowserInterface* browserInterface () const;
+ bool isActionEnabled (const char*) const;
+
+%If ( KDE_3_5_0 - )
+ QString actionText (const char*) const;
+%End
+
+ typedef QMap<QCString,QCString> ActionSlotMap;
+ static KParts::BrowserExtension::ActionSlotMap actionSlotMap ();
+ static KParts::BrowserExtension::ActionSlotMap* actionSlotMapPtr ();
+ static KParts::BrowserExtension* childObject (QObject*);
+
+%If ( KDE_3_2_0 - )
+ void pasteRequest ();
+%End
+
+
+signals:
+ void enableAction (const char*, bool);
+
+%If ( KDE_3_5_0 - )
+ void setActionText (const char*, const QString&);
+%End
+
+ void openURLRequest (const KURL&, const KParts::URLArgs& = KParts ::URLArgs ());
+ void openURLRequestDelayed (const KURL&, const KParts::URLArgs& = KParts ::URLArgs ());
+ void openURLNotify ();
+ void setLocationBarURL (const QString&);
+ void setIconURL (const KURL&);
+ void createNewWindow (const KURL&, const KParts::URLArgs& = KParts ::URLArgs ());
+//ig void createNewWindow (const KURL&, const KParts::URLArgs&, const KParts::WindowArgs&, KParts::ReadOnlyPart*&);
+ void loadingProgress (int);
+ void speedProgress (int);
+ void infoMessage (const QString&);
+ void popupMenu (const QPoint&, const KFileItemList&);
+ void popupMenu (KXMLGUIClient*, const QPoint&, const KFileItemList&);
+
+%If ( KDE_3_2_0 - )
+ void popupMenu (KXMLGUIClient*, const QPoint&, const KFileItemList&, const KParts::URLArgs&, KParts::BrowserExtension::PopupFlags);
+%End
+
+ void popupMenu (const QPoint&, const KURL&, const QString&, mode_t = -1);
+ void popupMenu (KXMLGUIClient*, const QPoint&, const KURL&, const QString&, mode_t = -1);
+
+%If ( KDE_3_2_0 - )
+ void popupMenu (KXMLGUIClient*, const QPoint&, const KURL&, const KParts::URLArgs&, KParts::BrowserExtension::PopupFlags, mode_t = -1);
+%End
+
+ void selectionInfo (const KFileItemList&);
+ void selectionInfo (const QString&);
+ void selectionInfo (const KURL::List&);
+
+%If ( KDE_3_1_0 - )
+ void mouseOverInfo (const KFileItem*);
+
+%If ( KDE_3_2_0 - )
+ void addWebSideBar (const KURL&, const QString&);
+ void moveTopLevelWidget (int, int);
+ void resizeTopLevelWidget (int, int);
+
+%If ( KDE_3_3_1 - )
+ void requestFocus (KParts::ReadOnlyPart*);
+
+%If ( KDE_3_4_0 - )
+ void setPageSecurity (int);
+%End
+
+%End
+
+%End
+
+%End
+
+
+public:
+ typedef QMap<QCString,int> ActionNumberMap;
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+public:
+
+%If ( KDE_3_3_0 - KDE_3_4_0 )
+
+ enum
+ {
+ DefaultPopupItems,
+ ShowNavigationItems,
+ ShowUp,
+ ShowReload,
+ ShowBookmark,
+ ShowCreateDirectory,
+ ShowTextSelectionItems
+ };
+
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - KDE_3_3_0 )
+
+ enum
+ {
+ DefaultPopupItems,
+ ShowNavigationItems,
+ ShowUp,
+ ShowReload,
+ ShowBookmark,
+ ShowCreateDirectory
+ };
+
+%End
+
+
+}; // class BrowserExtension
+
+
+class BrowserHostExtension : QObject
+{
+%TypeHeaderCode
+#include <browserextension.h>
+%End
+
+
+public:
+ BrowserHostExtension (KParts::ReadOnlyPart* /TransferThis/, const char* = 0);
+ virtual QStringList frameNames () const;
+ virtual const QPtrList<KParts::ReadOnlyPart> frames () const;
+
+%If ( KDE_3_3_0 - )
+ KParts::BrowserHostExtension* findFrameParent (KParts::ReadOnlyPart*, const QString&);
+%End
+
+ virtual bool openURLInFrame (const KURL&, const KParts::URLArgs&);
+ static KParts::BrowserHostExtension* childObject (QObject*);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class BrowserHostExtension
+
+
+%If ( KDE_3_1_0 - )
+
+class LiveConnectExtension : QObject
+{
+%TypeHeaderCode
+#include <browserextension.h>
+%End
+
+
+public:
+
+ enum Type
+ {
+ TypeVoid,
+ TypeBool,
+ TypeFunction,
+ TypeNumber,
+ TypeObject,
+ TypeString
+ };
+
+//ig typedef QValueList<QPair<Type,QString>> ArgList;
+ LiveConnectExtension (KParts::ReadOnlyPart* /TransferThis/, const char* = 0);
+ virtual bool get (const ulong, const QString&, KParts::LiveConnectExtension::Type&, ulong&, QString&);
+ virtual bool put (const ulong, const QString&, const QString&);
+ virtual bool call (const ulong, const QString&, const QStringList&, KParts::LiveConnectExtension::Type&, ulong&, QString&);
+ virtual void unregister (const ulong);
+ static KParts::LiveConnectExtension* childObject (QObject*);
+
+signals:
+//ig virtual void partEvent (const ulong, const QString&, const KParts::LiveConnectExtension::ArgList&);
+
+}; // class LiveConnectExtension
+
+%End
+
+}; // namespace KParts
+
+
+%If ( - KDE_3_5_3 )
+//ig typedef QPtrList<KFileItem> KFileItemList;
+%End
+
+//force
+QMap<QCString,int> testQMapQCStringInt (QMap<QCString,int>);
+%MethodCode
+//takes dict | (QMap<QCString,int>)
+//returns (QMap<QCString,int>)
+
+ sipRes = a0;
+%End
+
+//end
+
+
+%MappedType QMap<QCString,QCString>
+//converts a Python dict of QCString:QCString
+{
+%TypeHeaderCode
+#include <qmap.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QCString,QCString> cppmap = *sipCpp;
+ QMap<QCString,QCString>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QCString acpp = it.key ();
+ QCString bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
+ || ((binst = sipBuildResult (NULL, "N", new QCString (bcpp), sipClass_QCString)) == NULL)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QCString,QCString> *cppmap = new QMap<QCString,QCString>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QCString *acpp;
+ QCString *bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
+ bcpp = (QCString *)sipForceConvertTo_QCString (belem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ cppmap->insert (*acpp, *bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
+%MappedType QMap<QCString,int>
+//converts a Python dict of QCString:int
+{
+%TypeHeaderCode
+#include <qmap.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python dict
+
+ if (!sipCpp)
+ return PyDict_New();
+
+ PyObject *dict;
+
+ // Create the dictionary.
+
+ if ((dict = PyDict_New()) == NULL)
+ return NULL;
+
+ // Get it.
+
+ const QMap<QCString,int> cppmap = *sipCpp;
+ QMap<QCString,int>::ConstIterator it;
+
+ for (it = cppmap.begin (); it != cppmap.end (); ++it)
+ {
+ QCString acpp = it.key ();
+ int bcpp = it.data ();
+ PyObject *ainst;
+ PyObject *binst;
+ if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
+ || ((binst = PyInt_FromLong (bcpp)) < 0)
+ || (PyDict_SetItem (dict, ainst, binst) < 0))
+ {
+ Py_XDECREF (ainst);
+ Py_XDECREF (binst);
+ Py_DECREF (dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python dictionary to a QMap on the heap.
+
+ if (sipIsErr == NULL)
+ return PyDict_Check(sipPy);
+
+
+ QMap<QCString,int> *cppmap = new QMap<QCString,int>;
+
+ PyObject *aelem, *belem;
+ int pos = 0;
+ QCString *acpp;
+ int bcpp;
+
+ while (PyDict_Next(sipPy, &pos, &aelem, &belem))
+ {
+ int iserr = 0;
+
+ if (iserr || !PyInt_Check (belem))
+ {
+ *sipIsErr = 1;
+ delete cppmap;
+ return 0;
+ }
+
+ acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
+ bcpp = PyInt_AS_LONG (belem);
+
+ cppmap->insert (*acpp, bcpp);
+ }
+
+ *sipCppPtr = cppmap;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<KParts::ReadOnlyPart>
+//converts a Python list of KParts.ReadOnlyPart
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KParts::ReadOnlyPart> *cpplist = (QPtrList<KParts::ReadOnlyPart> *)sipCpp;
+ KParts::ReadOnlyPart *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KParts_ReadOnlyPart, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KParts::ReadOnlyPart> *cpplist = new QPtrList<KParts::ReadOnlyPart>;
+
+ PyObject *elem;
+ KParts::ReadOnlyPart *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KParts::ReadOnlyPart *)sipForceConvertTo_KParts_ReadOnlyPart (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kparts/browserinterface.sip b/python/pykde/sip/kparts/browserinterface.sip
new file mode 100644
index 00000000..a486f0b0
--- /dev/null
+++ b/python/pykde/sip/kparts/browserinterface.sip
@@ -0,0 +1,43 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class BrowserInterface : QObject
+{
+%TypeHeaderCode
+#include <browserinterface.h>
+%End
+
+
+public:
+ BrowserInterface (QObject* /TransferThis/, const char* = 0);
+ void callMethod (const char*, const QVariant&);
+
+}; // class BrowserInterface
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/browserrun.sip b/python/pykde/sip/kparts/browserrun.sip
new file mode 100644
index 00000000..675e6c5c
--- /dev/null
+++ b/python/pykde/sip/kparts/browserrun.sip
@@ -0,0 +1,117 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class BrowserRun : KRun
+{
+%TypeHeaderCode
+#include <browserrun.h>
+%End
+
+
+public:
+ BrowserRun (const KURL&, const KParts::URLArgs&, KParts::ReadOnlyPart*, QWidget*, bool, bool);
+
+%If ( KDE_3_1_0 - )
+ BrowserRun (const KURL&, const KParts::URLArgs&, KParts::ReadOnlyPart*, QWidget*, bool, bool, bool);
+%End
+
+ KURL url () const;
+
+%If ( KDE_3_1_0 - )
+ bool hideErrorDialog () const;
+
+%If ( KDE_3_2_0 - )
+ QString suggestedFilename () const;
+
+%If ( KDE_3_5_2 - )
+ QString contentDisposition () const;
+ bool serverSuggestsSave () const;
+%End
+
+%End
+
+%End
+
+
+ enum AskSaveResult
+ {
+ Save,
+ Open,
+ Cancel
+ };
+
+ static KParts::BrowserRun::AskSaveResult askSave (const KURL&, KService::Ptr, const QString&, const QString& = QString ::null );
+
+%If ( KDE_3_5_2 - )
+
+ enum AskEmbedOrSaveFlags
+ {
+ InlineDisposition,
+ AttachmentDisposition
+ };
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+ static KParts::BrowserRun::AskSaveResult askEmbedOrSave (const KURL&, const QString&, const QString& = QString ::null , int = 0);
+%End
+
+ virtual void save (const KURL&, const QString&);
+
+%If ( KDE_3_2_0 - )
+ static void simpleSave (const KURL&, const QString&, QWidget*);
+%End
+
+ static void simpleSave (const KURL&, const QString&);
+ static bool allowExecution (const QString&, const KURL&);
+ static bool isExecutable (const QString&);
+ static bool isTextExecutable (const QString&);
+
+protected:
+ virtual void scanFile ();
+
+%If ( KDE_3_1_0 - )
+ virtual void init ();
+%End
+
+ virtual void handleError (KIO::Job*);
+//ig KParts::BrowserRun::NonEmbeddableResult handleNonEmbeddable (const QString&);
+
+protected slots:
+ void slotBrowserScanFinished (KIO::Job*);
+ void slotBrowserMimetype (KIO::Job*, const QString&);
+ void slotCopyToTempFileResult (KIO::Job*);
+ virtual void slotStatResult (KIO::Job*);
+
+protected:
+
+}; // class BrowserRun
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/dockmainwindow.sip b/python/pykde/sip/kparts/dockmainwindow.sip
new file mode 100644
index 00000000..22472c07
--- /dev/null
+++ b/python/pykde/sip/kparts/dockmainwindow.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class DockMainWindow : KDockMainWindow, KParts::PartBase
+{
+%TypeHeaderCode
+#include <dockmainwindow.h>
+%End
+
+
+public:
+ DockMainWindow (QWidget* /TransferThis/ = 0, const char* = 0, WFlags = WDestructiveClose );
+
+protected slots:
+ void createGUI (KParts::Part*);
+ virtual void slotSetStatusBarText (const QString&);
+
+protected:
+ virtual void createShellGUI (bool = 1);
+
+}; // class DockMainWindow
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/event.sip b/python/pykde/sip/kparts/event.sip
new file mode 100644
index 00000000..8af43b29
--- /dev/null
+++ b/python/pykde/sip/kparts/event.sip
@@ -0,0 +1,94 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class Event : QCustomEvent
+{
+%TypeHeaderCode
+#include <event.h>
+%End
+
+
+public:
+ Event (const char*);
+ virtual const char* eventName () const;
+ static bool test (const QEvent*);
+ static bool test (const QEvent*, const char*);
+
+}; // class Event
+
+
+class GUIActivateEvent : KParts::Event
+{
+%TypeHeaderCode
+#include <event.h>
+%End
+
+
+public:
+ GUIActivateEvent (bool);
+ bool activated () const;
+ static bool test (const QEvent*);
+
+}; // class GUIActivateEvent
+
+
+class PartActivateEvent : KParts::Event
+{
+%TypeHeaderCode
+#include <event.h>
+%End
+
+
+public:
+ PartActivateEvent (bool, KParts::Part*, QWidget*);
+ bool activated () const;
+ KParts::Part* part () const;
+ QWidget* widget () const;
+ static bool test (const QEvent*);
+
+}; // class PartActivateEvent
+
+
+class PartSelectEvent : KParts::Event
+{
+%TypeHeaderCode
+#include <event.h>
+%End
+
+
+public:
+ PartSelectEvent (bool, KParts::Part*, QWidget*);
+ bool selected () const;
+ KParts::Part* part () const;
+ QWidget* widget () const;
+ static bool test (const QEvent*);
+
+}; // class PartSelectEvent
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/factory.sip b/python/pykde/sip/kparts/factory.sip
new file mode 100644
index 00000000..c082296f
--- /dev/null
+++ b/python/pykde/sip/kparts/factory.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class Factory : KLibFactory
+{
+%TypeHeaderCode
+#include <factory.h>
+%End
+
+
+public:
+ Factory (QObject* /TransferThis/ = 0, const char* = 0);
+ KParts::Part* createPart (QWidget* = 0, const char* = 0, QObject* /Transfer/ = 0, const char* = 0, const char* = "KParts::Part", const QStringList& = QStringList ());
+
+%If ( KDE_3_2_0 - )
+ const KInstance* partInstance ();
+ static const KInstance* partInstanceFromLibrary (const QCString&);
+%End
+
+
+protected:
+ virtual KParts::Part* createPartObject (QWidget* = 0, const char* = 0, QObject* /Transfer/ = 0, const char* = 0, const char* = "KParts::Part", const QStringList& = QStringList ());
+ virtual QObject* createObject (QObject* /Transfer/ = 0, const char* = 0, const char* = "QObject", const QStringList& = QStringList ());
+
+}; // class Factory
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/genericfactory.sip b/python/pykde/sip/kparts/genericfactory.sip
new file mode 100644
index 00000000..24528ff5
--- /dev/null
+++ b/python/pykde/sip/kparts/genericfactory.sip
@@ -0,0 +1,25 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
diff --git a/python/pykde/sip/kparts/historyprovider.sip b/python/pykde/sip/kparts/historyprovider.sip
new file mode 100644
index 00000000..7ec3b7f5
--- /dev/null
+++ b/python/pykde/sip/kparts/historyprovider.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class HistoryProvider : QObject
+{
+%TypeHeaderCode
+#include <historyprovider.h>
+%End
+
+
+public:
+ static KParts::HistoryProvider* self ();
+ HistoryProvider (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual bool contains (const QString&) const;
+ virtual void insert (const QString&);
+ virtual void remove (const QString&);
+ virtual void clear ();
+
+signals:
+ void cleared ();
+ void updated (const QStringList&);
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class HistoryProvider
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/konsole_part.sip b/python/pykde/sip/kparts/konsole_part.sip
new file mode 100644
index 00000000..4c3128d6
--- /dev/null
+++ b/python/pykde/sip/kparts/konsole_part.sip
@@ -0,0 +1,177 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class konsoleFactory : KParts::Factory
+{
+%TypeHeaderCode
+#include <kprocess.h>
+#include <konsole_part.h>
+%End
+
+
+public:
+ konsoleFactory ();
+ virtual KParts::Part* createPartObject (QWidget* = 0, const char* = 0, QObject* /Transfer/ = 0, const char* = 0, const char* = "KParts::Part", const QStringList& = QStringList ());
+ static KInstance* instance ();
+
+}; // class konsoleFactory
+
+
+%If ( KDE_3_5_0 - )
+
+class konsolePart : KParts::ReadOnlyPart, TerminalInterface, ExtTerminalInterface
+{
+%TypeHeaderCode
+#include <kprocess.h>
+#include <konsole_part.h>
+%End
+
+
+public:
+ konsolePart (QWidget*, const char*, QObject* /TransferThis/, const char*, const char* = 0);
+
+signals:
+ void processExited (KProcess*);
+ void receivedData (const QString&);
+ void forkedChild ();
+
+protected:
+ virtual bool openURL (const KURL&);
+ virtual bool openFile ();
+ virtual bool closeURL ();
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+
+protected slots:
+ void showShell ();
+ void sessionDestroyed ();
+ void enableMasterModeConnections ();
+
+public:
+ void startProgram (const QString&, const QStrList&);
+ void newSession ();
+ void showShellInDir (const QString&);
+ void sendInput (const QString&);
+ void setAutoDestroy (bool);
+ void setAutoStartShell (bool);
+
+}; // class konsolePart
+
+%End
+
+
+class konsoleBrowserExtension : KParts::BrowserExtension
+{
+%TypeHeaderCode
+#include <kprocess.h>
+#include <konsole_part.h>
+%End
+
+
+public:
+ konsoleBrowserExtension (konsolePart*);
+ void emitOpenURLRequest (const KURL&);
+
+}; // class konsoleBrowserExtension
+
+
+%If ( - KDE_3_5_0 )
+
+class konsolePart : KParts::ReadOnlyPart, TerminalInterface
+{
+%TypeHeaderCode
+#include <kprocess.h>
+#include <konsole_part.h>
+%End
+
+
+public:
+ konsolePart (QWidget*, const char*, QObject* /TransferThis/, const char*, const char* = 0);
+
+signals:
+ void processExited ();
+ void receivedData (const QString&);
+
+protected:
+ virtual bool openURL (const KURL&);
+ virtual bool openFile ();
+ virtual bool closeURL ();
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+
+protected slots:
+ void showShell ();
+ void slotProcessExited ();
+ void slotReceivedData (const QString&);
+ void sessionDestroyed ();
+ void updateTitle ();
+ void enableMasterModeConnections ();
+
+public:
+ void startProgram (const QString&, const QStrList&);
+ void showShellInDir (const QString&);
+ void sendInput (const QString&);
+
+}; // class konsolePart
+
+%End
+
+//force
+
+class TerminalInterface
+{
+%TypeHeaderCode
+#include <kde_terminal_interface.h>
+%End
+
+
+public:
+ virtual void startProgram (const QString&, const QStrList&) = 0;
+ virtual void showShellInDir (const QString&) = 0;
+ virtual void sendInput (const QString&) = 0;
+
+}; // class TerminalInterface
+
+
+%If ( KDE_3_5_0 - )
+
+class ExtTerminalInterface
+{
+%TypeHeaderCode
+#include <kde_terminal_interface.h>
+%End
+
+
+public:
+ virtual void startProgram (const QString&, const QStrList&) = 0;
+ virtual void showShellInDir (const QString&) = 0;
+ virtual void sendInput (const QString&) = 0;
+ virtual void setAutoStartShell (bool) = 0;
+ virtual void setAutoDestroy (bool) = 0;
+
+}; // class ExtTerminalInterface
+
+%End
+
+//end
diff --git a/python/pykde/sip/kparts/kparts-kde320.diff b/python/pykde/sip/kparts/kparts-kde320.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde320.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde321.diff b/python/pykde/sip/kparts/kparts-kde321.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde321.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde322.diff b/python/pykde/sip/kparts/kparts-kde322.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde322.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde323.diff b/python/pykde/sip/kparts/kparts-kde323.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde323.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde330.diff b/python/pykde/sip/kparts/kparts-kde330.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde330.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde331.diff b/python/pykde/sip/kparts/kparts-kde331.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde331.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde332.diff b/python/pykde/sip/kparts/kparts-kde332.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde332.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde340.diff b/python/pykde/sip/kparts/kparts-kde340.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde340.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde341.diff b/python/pykde/sip/kparts/kparts-kde341.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde341.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde342.diff b/python/pykde/sip/kparts/kparts-kde342.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde342.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde343.diff b/python/pykde/sip/kparts/kparts-kde343.diff
new file mode 100644
index 00000000..8ad0226b
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde343.diff
@@ -0,0 +1 @@
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde350.diff b/python/pykde/sip/kparts/kparts-kde350.diff
new file mode 100644
index 00000000..8920fa04
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde350.diff
@@ -0,0 +1,2 @@
++ %Include konsole_part.sip
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde351.diff b/python/pykde/sip/kparts/kparts-kde351.diff
new file mode 100644
index 00000000..8920fa04
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde351.diff
@@ -0,0 +1,2 @@
++ %Include konsole_part.sip
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde352.diff b/python/pykde/sip/kparts/kparts-kde352.diff
new file mode 100644
index 00000000..8920fa04
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde352.diff
@@ -0,0 +1,2 @@
++ %Include konsole_part.sip
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kparts-kde353.diff b/python/pykde/sip/kparts/kparts-kde353.diff
new file mode 100644
index 00000000..8920fa04
--- /dev/null
+++ b/python/pykde/sip/kparts/kparts-kde353.diff
@@ -0,0 +1,2 @@
++ %Include konsole_part.sip
++ %Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kpartsmod.sip b/python/pykde/sip/kparts/kpartsmod.sip
new file mode 100644
index 00000000..30bf1405
--- /dev/null
+++ b/python/pykde/sip/kparts/kpartsmod.sip
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kparts
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include browserextension.sip
+%Include browserinterface.sip
+%Include browserrun.sip
+%Include dockmainwindow.sip
+%Include event.sip
+%Include factory.sip
+%Include genericfactory.sip
+%Include historyprovider.sip
+%Include mainwindow.sip
+%Include part.sip
+%Include partmanager.sip
+%Include plugin.sip
+%Include statusbarextension.sip
diff --git a/python/pykde/sip/kparts/kpartsmod.sip.in b/python/pykde/sip/kparts/kpartsmod.sip.in
new file mode 100644
index 00000000..0d856cb9
--- /dev/null
+++ b/python/pykde/sip/kparts/kpartsmod.sip.in
@@ -0,0 +1,51 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kparts
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include browserextension.sip
+%Include browserinterface.sip
+%Include browserrun.sip
+%Include dockmainwindow.sip
+%Include event.sip
+%Include factory.sip
+%Include genericfactory.sip
+%Include historyprovider.sip
+%Include mainwindow.sip
+%Include part.sip
+%Include partmanager.sip
+%Include plugin.sip
+@mark@
diff --git a/python/pykde/sip/kparts/mainwindow.sip b/python/pykde/sip/kparts/mainwindow.sip
new file mode 100644
index 00000000..e983c366
--- /dev/null
+++ b/python/pykde/sip/kparts/mainwindow.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class MainWindow : KMainWindow, KParts::PartBase
+{
+%TypeHeaderCode
+#include <mainwindow.h>
+%End
+
+
+public:
+ MainWindow (QWidget* /TransferThis/, const char* = 0, WFlags = WType_TopLevel |WDestructiveClose );
+ MainWindow (const char* = 0, WFlags = WDestructiveClose );
+
+%If ( KDE_3_2_0 - )
+ MainWindow (int, QWidget* /TransferThis/, const char* = 0, WFlags = WType_TopLevel |WDestructiveClose );
+%End
+
+
+protected slots:
+ void createGUI (KParts::Part*);
+ virtual void slotSetStatusBarText (const QString&);
+
+%If ( KDE_3_4_0 - )
+ void saveNewToolbarConfig ();
+%End
+
+
+protected:
+ virtual void createShellGUI (bool = 1);
+
+}; // class MainWindow
+
+}; // namespace KParts
+
diff --git a/python/pykde/sip/kparts/part.sip b/python/pykde/sip/kparts/part.sip
new file mode 100644
index 00000000..43609ad3
--- /dev/null
+++ b/python/pykde/sip/kparts/part.sip
@@ -0,0 +1,312 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class PartBase : KXMLGUIClient
+{
+%TypeHeaderCode
+#include <part.h>
+%End
+
+
+public:
+ PartBase ();
+ void setPartObject (QObject*);
+ QObject* partObject () const;
+
+protected:
+ virtual void setInstance (KInstance*);
+ virtual void setInstance (KInstance*, bool);
+
+%If ( KDE_3_1_0 - )
+ void loadPlugins (QObject* /Transfer/, KXMLGUIClient*, KInstance*);
+//ig void setPluginLoadingMode (KParts::PartBase::PluginLoadingMode);
+%End
+
+
+}; // class PartBase
+
+
+class Part : QObject, KParts::PartBase
+{
+%TypeHeaderCode
+#include <part.h>
+%End
+
+
+public:
+ Part (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual void embed (QWidget*);
+ virtual QWidget* widget ();
+ virtual void setManager (KParts::PartManager*);
+ KParts::PartManager* manager ();
+ virtual KParts::Part* hitTest (QWidget*, const QPoint&);
+ virtual void setSelectable (bool);
+ bool isSelectable () const;
+
+signals:
+ void setWindowCaption (const QString&);
+ void setStatusBarText (const QString&);
+
+protected:
+ virtual void setWidget (QWidget*);
+ virtual void customEvent (QCustomEvent*);
+ virtual void partActivateEvent (KParts::PartActivateEvent*);
+ virtual void partSelectEvent (KParts::PartSelectEvent*);
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+ QWidget* hostContainer (const QString&);
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_BrowserExtension, &sipClass_KParts_BrowserExtension},
+ {sipName_BrowserHostExtension, &sipClass_KParts_BrowserHostExtension},
+ {sipName_BrowserInterface, &sipClass_KParts_BrowserInterface},
+ {sipName_BrowserRun, &sipClass_KParts_BrowserRun},
+ {sipName_Factory, &sipClass_KParts_Factory},
+ {sipName_HistoryProvider, &sipClass_KParts_HistoryProvider},
+#if KDE_VERSION >= 0x030100
+ {sipName_LiveConnectExtension, &sipClass_KParts_LiveConnectExtension},
+#endif
+ {sipName_MainWindow, &sipClass_KParts_MainWindow},
+ {sipName_Part, &sipClass_KParts_Part},
+ {sipName_PartManager, &sipClass_KParts_PartManager},
+ {sipName_Plugin, &sipClass_KParts_Plugin},
+ {sipName_ReadOnlyPart, &sipClass_KParts_ReadOnlyPart},
+ {sipName_ReadWritePart, &sipClass_KParts_ReadWritePart},
+// {sipName_konsolePart, &sipClass_konsolePart},
+// {sipName_konsoleBrowserExtension, &sipClass_konsoleBrowserExtension},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+
+}; // class Part
+
+//doc
+// Even though this is an abstract class, you can use
+// createReadOnlyPart (see below) without creating
+// a concrete instance of this class.
+//end
+
+class ReadOnlyPart : KParts::Part
+{
+%TypeHeaderCode
+#include <part.h>
+%End
+
+
+public:
+ ReadOnlyPart (QObject* /TransferThis/ = 0, const char* = 0);
+ void setProgressInfoEnabled (bool);
+ bool isProgressInfoEnabled () const;
+ void showProgressInfo (bool);
+
+public slots:
+ virtual bool openURL (const KURL&);
+
+public:
+ KURL url () const;
+ virtual bool closeURL ();
+
+public:
+ bool openStream (const QString&, const KURL&);
+ bool writeStream (const QByteArray&);
+ bool closeStream ();
+
+signals:
+ void started (KIO::Job*);
+ void completed ();
+ void completed (bool);
+ void canceled (const QString&);
+
+protected slots:
+ void slotJobFinished (KIO::Job*);
+
+protected:
+ virtual bool openFile () = 0;
+ void abortLoad ();
+ virtual void guiActivateEvent (KParts::GUIActivateEvent*);
+
+}; // class ReadOnlyPart
+
+//doc
+// Even though this is an abstract class, you can use
+// createReadWritePart (see below) without creating a concrete instance
+// of this class.
+//end
+
+class ReadWritePart : KParts::ReadOnlyPart
+{
+%TypeHeaderCode
+#include <part.h>
+%End
+
+
+public:
+ ReadWritePart (QObject* /TransferThis/ = 0, const char* = 0);
+ bool isReadWrite () const;
+ virtual void setReadWrite (bool = 1);
+ bool isModified () const;
+
+%If ( KDE_3_1_3 - )
+ bool queryClose ();
+%End
+
+ virtual bool closeURL ();
+
+%If ( KDE_3_1_3 - )
+ bool closeURL (bool);
+%End
+
+ virtual bool saveAs (const KURL&);
+ virtual void setModified (bool);
+
+signals:
+
+%If ( KDE_3_2_0 - )
+//ig void sigQueryClose (bool*, bool*);
+%End
+
+
+public slots:
+ virtual void setModified ();
+ virtual bool save ();
+
+%If ( KDE_3_2_0 - )
+ bool waitSaveComplete ();
+%End
+
+
+protected:
+ virtual bool saveFile () = 0;
+ virtual bool saveToURL ();
+
+protected slots:
+ void slotUploadFinished (KIO::Job*);
+
+}; // class ReadWritePart
+
+}; // namespace KParts
+
+//force
+//doc
+// <para>
+// This is a PyKDE-only function that handles the machinery necessary
+// to create a KParts::ReadOnlyPart. It executes the following C++ code:
+// </para>
+// <pre class="PROGRAMLISTING">
+// KParts::ReadOnlyPart *createReadOnlyPart (const QString&amp; lib, QObject *parent,
+// const QString&amp; name, const char *className,
+// const QStringList &amp;args)
+// {
+// KLibFactory *factory = KLibLoader::self ()-&gt;factory ((const char *)lib);
+//
+// if (factory)
+// return static_cast&lt;KParts::ReadOnlyPart*&gt; (factory-&gt;create (parent,
+// (const char *)name, className, args));
+// else
+// return NULL;
+// </pre>
+// <para>
+// Notice that it takes care of creating the KLibFactory for you, and
+// returns the part cast to type KParts::ReadOnlyPart. The actual
+// part has a different class (derived from KParts::ReadOnlyPart),
+// and calls to openURL or openFile will use the part's overloaded
+// methods. Currently it isn't possible to call KParts::ReadOnlyPart::openURL
+// if it has been overloaded.
+// </para>
+// <para>
+// Usage: KParts.createReadOnlyPart (lib, parent, name, className, args)
+// </para>
+//end
+KParts::ReadOnlyPart* createReadOnlyPart (const QString&, QObject* = 0, const QString& = QString ::null , const char* = "KParts::ReadOnlyPart", const QStringList& = QStringList ());
+//doc
+// <para>
+// This is a PyKDE-only function that handles the machinery necessary
+// to create a KParts::ReadWritePart. It executes the following C++ code:
+// </para>
+// <pre class="PROGRAMLISTING">
+// KParts::ReadWritePart *createReadWritePart (const QString&amp; lib, QObject *parent,
+// const QString&amp; name, const char *className,
+// const QStringList &amp;args)
+// {
+// KLibFactory *factory = KLibLoader::self ()-&gt;factory ((const char *)lib);
+//
+// if (factory)
+// return static_cast&lt;KParts::ReadWritePart*&gt; (factory-&gt;create (parent,
+// (const char *)name, className, args));
+// else
+// return NULL;
+// </pre>
+// <para>
+// Notice that it takes care of creating the KLibFactory for you, and
+// returns the part cast to type KParts::ReadWritePart. The actual
+// part has a different class (derived from KParts::ReadWritePart),
+// and calls to openURL or openFile will use the part's overloaded
+// methods. Currently it isn't possible to call KParts::ReadWritePart::openURL
+// if it has been overloaded.
+// </para>
+// <para>
+// Usage: KParts.createReadWritePart (lib, parent, name, className, args)
+// </para>
+//end
+KParts::ReadWritePart* createReadWritePart (const QString&, QObject* = 0, const QString& = QString ::null , const char* = "KParts::ReadWritePart", const QStringList& = QStringList ());
+//end
+
+
+%ModuleCode
+KParts::ReadOnlyPart *createReadOnlyPart (const QString& lib, QObject *parent, const QString& name, const char *className,
+ const QStringList &args)
+{
+ KParts::ReadOnlyPart *res = NULL;
+
+ KLibFactory *factory = KLibLoader::self ()->factory ((const char *)lib);
+
+ if (factory)
+ res = static_cast<KParts::ReadOnlyPart*> (factory->create (parent, (const char *)name, className, args));
+
+ return res;
+}
+
+KParts::ReadWritePart *createReadWritePart (const QString& lib, QObject *parent, const QString& name, const char *className,
+ const QStringList &args)
+{
+ KParts::ReadWritePart *res = NULL;
+
+ KLibFactory *factory = KLibLoader::self ()->factory ((const char *)lib);
+
+ if (factory)
+ res = static_cast<KParts::ReadWritePart*> (factory->create (parent, (const char *)name, className, args));
+
+ return res;
+}
+%End
diff --git a/python/pykde/sip/kparts/partmanager.sip b/python/pykde/sip/kparts/partmanager.sip
new file mode 100644
index 00000000..b5973872
--- /dev/null
+++ b/python/pykde/sip/kparts/partmanager.sip
@@ -0,0 +1,181 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class PartManager : QObject
+{
+%TypeHeaderCode
+#include <partmanager.h>
+%End
+
+
+public:
+
+ enum SelectionPolicy
+ {
+ Direct,
+ TriState
+ };
+
+
+%If ( KDE_3_3_0 - )
+
+ enum Reason
+ {
+ ReasonLeftClick,
+ ReasonMidClick,
+ ReasonRightClick,
+ NoReason
+ };
+
+%End
+
+ PartManager (QWidget* /TransferThis/, const char* = 0);
+ PartManager (QWidget*, QObject* /TransferThis/, const char* = 0);
+ void setSelectionPolicy (KParts::PartManager::SelectionPolicy);
+ KParts::PartManager::SelectionPolicy selectionPolicy () const;
+ void setAllowNestedParts (bool);
+ bool allowNestedParts () const;
+ void setIgnoreScrollBars (bool);
+ bool ignoreScrollBars () const;
+
+%If ( KDE_3_1_0 - )
+ void setActivationButtonMask (short);
+ short activationButtonMask () const;
+%End
+
+ virtual bool eventFilter (QObject*, QEvent*);
+ virtual void addPart (KParts::Part*, bool = 1);
+ virtual void removePart (KParts::Part*);
+ virtual void replacePart (KParts::Part*, KParts::Part*, bool = 1);
+ virtual void setActivePart (KParts::Part*, QWidget* = 0);
+ virtual KParts::Part* activePart () const;
+ virtual QWidget* activeWidget () const;
+ virtual void setSelectedPart (KParts::Part*, QWidget* = 0);
+ virtual KParts::Part* selectedPart () const;
+ virtual QWidget* selectedWidget () const;
+ const QPtrList<KParts::Part>* parts () const;
+ void addManagedTopLevelWidget (const QWidget*);
+ void removeManagedTopLevelWidget (const QWidget*);
+
+%If ( KDE_3_3_0 - )
+ int reason () const;
+%End
+
+
+signals:
+ void partAdded (KParts::Part*);
+ void partRemoved (KParts::Part*);
+ void activePartChanged (KParts::Part*);
+
+protected:
+ virtual void setActiveInstance (KInstance*);
+
+protected slots:
+ void slotObjectDestroyed ();
+ void slotWidgetDestroyed ();
+ void slotManagedTopLevelWidgetDestroyed ();
+
+protected:
+//igx virtual void virtual_hook (int, void*);
+
+}; // class PartManager
+
+}; // namespace KParts
+
+
+
+%MappedType QPtrList<KParts::Part>
+//converts a Python list of KParts.Part
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KParts::Part> *cpplist = (QPtrList<KParts::Part> *)sipCpp;
+ KParts::Part *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KParts_Part, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KParts::Part> *cpplist = new QPtrList<KParts::Part>;
+
+ PyObject *elem;
+ KParts::Part *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KParts::Part *)sipForceConvertTo_KParts_Part (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kparts/plugin.sip b/python/pykde/sip/kparts/plugin.sip
new file mode 100644
index 00000000..a9a4e589
--- /dev/null
+++ b/python/pykde/sip/kparts/plugin.sip
@@ -0,0 +1,210 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+namespace KParts
+{
+
+class Plugin : QObject, KXMLGUIClient
+{
+%TypeHeaderCode
+#include <plugin.h>
+%End
+
+
+public:
+
+ class PluginInfo
+ {
+
+ public:
+ QString m_relXMLFileName;
+ QString m_absXMLFileName;
+ QDomDocument m_document;
+
+ }; // class PluginInfo
+
+
+public:
+ Plugin (QObject* /TransferThis/ = 0, const char* = 0);
+ virtual QString xmlFile () const;
+ virtual QString localXMLFile () const;
+ static void loadPlugins (QObject* /Transfer/, const KInstance*);
+ static void loadPlugins (QObject* /Transfer/, const QValueList<KParts::Plugin::PluginInfo>&);
+ static void loadPlugins (QObject* /Transfer/, const QValueList<KParts::Plugin::PluginInfo>&, const KInstance*);
+
+%If ( KDE_3_1_0 - )
+ static void loadPlugins (QObject* /Transfer/, KXMLGUIClient*, KInstance*, bool = 1);
+%End
+
+ static QPtrList<KParts::Plugin> pluginObjects (QObject* /Transfer/);
+
+protected:
+ static QValueList<KParts::Plugin::PluginInfo> pluginInfos (const KInstance*);
+ static KParts::Plugin* loadPlugin (QObject* /Transfer/, const char*);
+ virtual void setInstance (KInstance*);
+
+}; // class Plugin
+
+}; // namespace KParts
+
+
+
+%MappedType QValueList<KParts::Plugin::PluginInfo>
+//converts a Python list of KParts.Plugin.PluginInfo
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KParts::Plugin::PluginInfo> *cpplist = (QValueList<KParts::Plugin::PluginInfo> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KParts::Plugin::PluginInfo>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipBuildResult (NULL, "N", new KParts::Plugin::PluginInfo (*it), sipClass_KParts_Plugin_PluginInfo)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KParts::Plugin::PluginInfo> *cpplist = new QValueList<KParts::Plugin::PluginInfo>;
+
+ PyObject *elem;
+ KParts::Plugin::PluginInfo *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KParts::Plugin::PluginInfo *)sipForceConvertTo_KParts_Plugin_PluginInfo (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (*cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
+%MappedType QPtrList<KParts::Plugin>
+//converts a Python list of KParts.Plugin
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KParts::Plugin> *cpplist = (QPtrList<KParts::Plugin> *)sipCpp;
+ KParts::Plugin *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KParts_Plugin, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KParts::Plugin> *cpplist = new QPtrList<KParts::Plugin>;
+
+ PyObject *elem;
+ KParts::Plugin *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KParts::Plugin *)sipForceConvertTo_KParts_Plugin (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+
+
diff --git a/python/pykde/sip/kparts/statusbarextension.sip b/python/pykde/sip/kparts/statusbarextension.sip
new file mode 100644
index 00000000..32f5bc5a
--- /dev/null
+++ b/python/pykde/sip/kparts/statusbarextension.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kparts version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KParts
+{
+
+class StatusBarExtension : QObject
+{
+%TypeHeaderCode
+#include <statusbarextension.h>
+%End
+
+
+public:
+ StatusBarExtension (KParts::ReadOnlyPart* /TransferThis/, const char* = 0);
+ void addStatusBarItem (QWidget*, int, bool);
+ void removeStatusBarItem (QWidget*);
+ KStatusBar* statusBar () const;
+ void setStatusBar (KStatusBar*);
+ static KParts::StatusBarExtension* childObject (QObject*);
+ virtual bool eventFilter (QObject*, QEvent*);
+
+}; // class StatusBarExtension
+
+}; // namespace KParts
+
+%End
+
diff --git a/python/pykde/sip/kresources/configdialog.sip b/python/pykde/sip/kresources/configdialog.sip
new file mode 100644
index 00000000..f6f840fe
--- /dev/null
+++ b/python/pykde/sip/kresources/configdialog.sip
@@ -0,0 +1,52 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class ConfigDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <configdialog.h>
+%End
+
+
+public:
+ ConfigDialog (QWidget*, const QString&, KRES::Resource*, const char* = 0);
+ void setInEditMode (bool);
+
+protected slots:
+ void accept ();
+ void setReadOnly (bool);
+ void slotNameChanged (const QString&);
+
+}; // class ConfigDialog
+
+}; // namespace KRES
+
+%End
+
diff --git a/python/pykde/sip/kresources/configpage.sip b/python/pykde/sip/kresources/configpage.sip
new file mode 100644
index 00000000..dfd8f9ed
--- /dev/null
+++ b/python/pykde/sip/kresources/configpage.sip
@@ -0,0 +1,48 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class ResourcePageInfo : KShared
+{
+%TypeHeaderCode
+#include <configpage.h>
+%End
+
+
+public:
+ ResourcePageInfo ();
+//ig Manager<Resource>* mManager;
+ KConfig* mConfig;
+
+}; // class ResourcePageInfo
+
+}; // namespace KRES
+
+%End
+
diff --git a/python/pykde/sip/kresources/configwidget.sip b/python/pykde/sip/kresources/configwidget.sip
new file mode 100644
index 00000000..8fc724a6
--- /dev/null
+++ b/python/pykde/sip/kresources/configwidget.sip
@@ -0,0 +1,56 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class ConfigWidget : QWidget
+{
+%TypeHeaderCode
+#include <configwidget.h>
+%End
+
+
+public:
+ ConfigWidget (QWidget* = 0, const char* = 0);
+ virtual void setInEditMode (bool);
+
+public slots:
+ virtual void loadSettings (KRES::Resource*) = 0;
+ virtual void saveSettings (KRES::Resource*) = 0;
+
+signals:
+ void setReadOnly (bool);
+
+protected:
+
+}; // class ConfigWidget
+
+}; // namespace KRES
+
+%End
+
diff --git a/python/pykde/sip/kresources/factory.sip b/python/pykde/sip/kresources/factory.sip
new file mode 100644
index 00000000..31851a3b
--- /dev/null
+++ b/python/pykde/sip/kresources/factory.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class Factory
+{
+%TypeHeaderCode
+#include <factory.h>
+%End
+
+
+public:
+ static KRES::Factory* self (const QString&);
+ KRES::ConfigWidget* configWidget (const QString&, QWidget* = 0);
+ KRES::Resource* resource (const QString&, const KConfig*);
+ QStringList typeNames () const;
+ QString typeName (const QString&) const;
+ QString typeDescription (const QString&) const;
+
+protected:
+ Factory (const QString&);
+
+}; // class Factory
+
+}; // namespace KRES
+
+%End
+
diff --git a/python/pykde/sip/kresources/kresourcesmod.sip b/python/pykde/sip/kresources/kresourcesmod.sip
new file mode 100644
index 00000000..2843d6c5
--- /dev/null
+++ b/python/pykde/sip/kresources/kresourcesmod.sip
@@ -0,0 +1,44 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kresources
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include configdialog.sip
+%Include configpage.sip
+%Include configwidget.sip
+%Include factory.sip
+%Include resource.sip
+%Include selectdialog.sip
diff --git a/python/pykde/sip/kresources/kresourcesmod.sip.in b/python/pykde/sip/kresources/kresourcesmod.sip.in
new file mode 100644
index 00000000..990ee683
--- /dev/null
+++ b/python/pykde/sip/kresources/kresourcesmod.sip.in
@@ -0,0 +1,45 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kresources
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include configdialog.sip
+%Include configpage.sip
+%Include configwidget.sip
+%Include factory.sip
+%Include resource.sip
+%Include selectdialog.sip
+@mark@
diff --git a/python/pykde/sip/kresources/resource.sip b/python/pykde/sip/kresources/resource.sip
new file mode 100644
index 00000000..f3d3d8d6
--- /dev/null
+++ b/python/pykde/sip/kresources/resource.sip
@@ -0,0 +1,84 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class Resource : QObject
+{
+%TypeHeaderCode
+#include <kconfig.h>
+#include <resource.h>
+%End
+
+
+public:
+ typedef QValueList<KRES::Resource*> List;
+ Resource (const KConfig*);
+ virtual void writeConfig (KConfig*);
+ bool open ();
+ void close ();
+ bool isOpen () const;
+ QString identifier () const;
+ QString type () const;
+ virtual void setReadOnly (bool);
+ virtual bool readOnly () const;
+ virtual void setResourceName (const QString&);
+ virtual QString resourceName () const;
+ void setActive (bool);
+ bool isActive () const;
+ virtual void dump () const;
+
+protected:
+ virtual bool doOpen ();
+ virtual void doClose ();
+ void setIdentifier (const QString&);
+ void setType (const QString&);
+
+}; // class Resource
+
+
+class PluginFactoryBase : KLibFactory
+{
+%TypeHeaderCode
+#include <resource.h>
+%End
+
+
+public:
+ virtual KRES::Resource* resource (const KConfig*) = 0;
+ virtual KRES::ConfigWidget* configWidget (QWidget*) = 0;
+
+protected:
+ virtual QObject* createObject (QObject*, const char*, const char*, const QStringList&);
+
+}; // class PluginFactoryBase
+
+}; // namespace KRES
+
+%End
+
diff --git a/python/pykde/sip/kresources/selectdialog.sip b/python/pykde/sip/kresources/selectdialog.sip
new file mode 100644
index 00000000..fb473c5c
--- /dev/null
+++ b/python/pykde/sip/kresources/selectdialog.sip
@@ -0,0 +1,133 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kresources version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%ModuleHeaderCode
+#include <qwidget.h>
+%End
+
+
+%If ( KDE_3_2_0 - )
+namespace KRES
+{
+
+class SelectDialog
+{
+%TypeHeaderCode
+#include <selectdialog.h>
+%End
+
+
+public:
+ SelectDialog (QPtrList<KRES::Resource>, QWidget* = 0, const char* = 0);
+ KRES::Resource* resource ();
+ static KRES::Resource* getResource (QPtrList<KRES::Resource>, QWidget* = 0);
+//force
+
+private:
+ SelectDialog (const KRES::SelectDialog&);
+//end
+
+}; // class SelectDialog
+
+}; // namespace KRES
+
+%End
+
+
+
+%If (KDE_3_2_0 - )
+%MappedType QPtrList<KRES::Resource>
+//converts a Python list of KRES::Resource
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+#include <resource.h>
+#include <sipkresourcesKRESResource.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New (0);
+
+ PyObject *pylist;
+
+ // Create the list
+
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ // Get it.
+
+ QPtrList<KRES::Resource> *cpplist = (QPtrList<KRES::Resource> *)sipCpp;
+ KRES::Resource *cpp;
+ PyObject *inst;
+
+ // the loop depends on the type of iterator the tmeplate makes available
+ for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
+ {
+ if (((inst = sipConvertFromInstance (cpp, sipClass_KRES_Resource, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QPtrList<KRES::Resource> *cpplist = new QPtrList<KRES::Resource>;
+
+ PyObject *elem;
+ KRES::Resource *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KRES::Resource *)sipForceConvertTo_KRES_Resource (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kspell/ksconfig.sip b/python/pykde/sip/kspell/ksconfig.sip
new file mode 100644
index 00000000..49ca587c
--- /dev/null
+++ b/python/pykde/sip/kspell/ksconfig.sip
@@ -0,0 +1,210 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSpellConfig : QWidget
+{
+%TypeHeaderCode
+#include <ksconfig.h>
+%End
+
+
+public:
+ KSpellConfig (QWidget* /TransferThis/ = 0, const char* = 0, KSpellConfig* = 0, bool = 1);
+ KSpellConfig (const KSpellConfig&);
+
+%If ( KDE_3_2_0 - )
+ void fillDicts (QComboBox*, QStringList* = 0);
+%End
+
+ void setIgnoreList (QStringList);
+
+%If ( KDE_3_1_0 - )
+ void setReplaceAllList (QStringList);
+%End
+
+ void setNoRootAffix (bool);
+ void setRunTogether (bool);
+ void setDictionary (const QString);
+ void setDictFromList (bool);
+ void setEncoding (int);
+ void setClient (int);
+ bool noRootAffix () const;
+ bool runTogether () const;
+ const QString dictionary () const;
+ bool dictFromList () const;
+ int encoding () const;
+ QStringList ignoreList () const;
+
+%If ( KDE_3_1_0 - )
+ QStringList replaceAllList () const;
+%End
+
+ int client () const;
+ bool writeGlobalSettings ();
+
+%If ( KDE_3_2_0 - )
+ bool readGlobalSettings ();
+%End
+
+
+protected:
+ void fillInDialog ();
+ bool interpret (QString&, QString&, QString&);
+
+public slots:
+ void activateHelp ();
+
+protected slots:
+ void sHelp ();
+ void sNoAff (bool);
+ void sRunTogether (bool);
+ void sDictionary (bool);
+ void sPathDictionary (bool);
+ void sSetDictionary (int);
+ void sChangeEncoding (int);
+ void sChangeClient (int);
+
+protected:
+
+signals:
+ void configChanged ();
+
+protected:
+
+%If ( - KDE_3_2_0 )
+ bool readGlobalSettings ();
+%End
+
+
+}; // class KSpellConfig
+
+
+%If ( KDE_3_1_4 - )
+
+enum Encoding
+{
+ KS_E_ASCII,
+ KS_E_LATIN1,
+ KS_E_LATIN2,
+ KS_E_LATIN3,
+ KS_E_LATIN4,
+ KS_E_LATIN5,
+ KS_E_LATIN7,
+ KS_E_LATIN8,
+ KS_E_LATIN9,
+ KS_E_LATIN13,
+ KS_E_LATIN15,
+ KS_E_UTF8,
+ KS_E_KOI8R,
+ KS_E_KOI8U,
+ KS_E_CP1251,
+ KS_E_CP1255
+};
+
+
+%If ( KDE_3_5_0 - )
+
+enum KSpellClients
+{
+ KS_CLIENT_ISPELL,
+ KS_CLIENT_ASPELL,
+ KS_CLIENT_HSPELL,
+ KS_CLIENT_ZEMBEREK
+};
+
+%End
+
+%End
+
+
+%If ( KDE_3_1_2 - KDE_3_5_0 )
+
+enum KSpellClients
+{
+ KS_CLIENT_ISPELL,
+ KS_CLIENT_ASPELL,
+ KS_CLIENT_HSPELL
+};
+
+%End
+
+
+%If ( KDE_3_0_3 - KDE_3_1_4 )
+
+enum Encoding
+{
+ KS_E_ASCII,
+ KS_E_LATIN1,
+ KS_E_LATIN2,
+ KS_E_LATIN3,
+ KS_E_LATIN4,
+ KS_E_LATIN5,
+ KS_E_LATIN7,
+ KS_E_LATIN8,
+ KS_E_LATIN9,
+ KS_E_LATIN13,
+ KS_E_LATIN15,
+ KS_E_UTF8,
+ KS_E_KOI8R,
+ KS_E_KOI8U,
+ KS_E_CP1251
+};
+
+%End
+
+
+%If ( - KDE_3_1_2 )
+
+enum KSpellClients
+{
+ KS_CLIENT_ISPELL,
+ KS_CLIENT_ASPELL
+};
+
+
+%If ( - KDE_3_0_3 )
+
+enum Encoding
+{
+ KS_E_ASCII,
+ KS_E_LATIN1,
+ KS_E_LATIN2,
+ KS_E_LATIN3,
+ KS_E_LATIN4,
+ KS_E_LATIN5,
+ KS_E_LATIN7,
+ KS_E_LATIN8,
+ KS_E_LATIN9,
+ KS_E_LATIN15,
+ KS_E_UTF8,
+ KS_E_KOI8R,
+ KS_E_KOI8U,
+ KS_E_CP1251,
+ KS_E_LATIN13
+};
+
+%End
+%End
diff --git a/python/pykde/sip/kspell/kspell-kde320.diff b/python/pykde/sip/kspell/kspell-kde320.diff
new file mode 100644
index 00000000..303f31f5
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde320.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde321.diff b/python/pykde/sip/kspell/kspell-kde321.diff
new file mode 100644
index 00000000..303f31f5
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde321.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde322.diff b/python/pykde/sip/kspell/kspell-kde322.diff
new file mode 100644
index 00000000..303f31f5
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde322.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde323.diff b/python/pykde/sip/kspell/kspell-kde323.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde323.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde330.diff b/python/pykde/sip/kspell/kspell-kde330.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde330.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde331.diff b/python/pykde/sip/kspell/kspell-kde331.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde331.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde332.diff b/python/pykde/sip/kspell/kspell-kde332.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde332.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde340.diff b/python/pykde/sip/kspell/kspell-kde340.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde340.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde341.diff b/python/pykde/sip/kspell/kspell-kde341.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde341.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde342.diff b/python/pykde/sip/kspell/kspell-kde342.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde342.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde343.diff b/python/pykde/sip/kspell/kspell-kde343.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde343.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde350.diff b/python/pykde/sip/kspell/kspell-kde350.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde350.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde351.diff b/python/pykde/sip/kspell/kspell-kde351.diff
new file mode 100644
index 00000000..1aa2b6c5
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde351.diff
@@ -0,0 +1,3 @@
+- %Include ksconfig.sip
+- %Include kspell.sip
+- %Include kspelldlg.sip
diff --git a/python/pykde/sip/kspell/kspell-kde352.diff b/python/pykde/sip/kspell/kspell-kde352.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde352.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell-kde353.diff b/python/pykde/sip/kspell/kspell-kde353.diff
new file mode 100644
index 00000000..5fa0372a
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell-kde353.diff
@@ -0,0 +1 @@
++ %Include ksyntaxhighlighter.sip
diff --git a/python/pykde/sip/kspell/kspell.sip b/python/pykde/sip/kspell/kspell.sip
new file mode 100644
index 00000000..1a51edc4
--- /dev/null
+++ b/python/pykde/sip/kspell/kspell.sip
@@ -0,0 +1,190 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSpell : QObject
+{
+%TypeHeaderCode
+#include <kspell.h>
+%End
+
+
+public:
+
+%If ( KDE_3_2_0 - )
+
+ enum spellStatus
+ {
+ Starting,
+ Running,
+ Cleaning,
+ Finished,
+ Error,
+ Crashed,
+ FinishedNoMisspellingsEncountered
+ };
+
+
+ enum SpellerType
+ {
+ Text,
+ HTML,
+ TeX,
+ Nroff
+ };
+
+%End
+
+ KSpell (QWidget* /TransferThis/, const QString&, QObject*, const char*, KSpellConfig* = 0, bool = 1, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ KSpell (QWidget* /TransferThis/, const QString&, QObject*, const char*, KSpellConfig*, bool, bool, KSpell::SpellerType);
+%End
+
+ spellStatus status ();
+ virtual void cleanUp ();
+ void setAutoDelete (bool);
+ virtual bool check (const QString&, bool = 1);
+ int lastPosition ();
+ virtual bool checkList (QStringList*, bool = 1);
+ virtual bool checkWord (const QString&, bool = 0);
+
+%If ( KDE_3_2_0 - )
+ bool checkWord (const QString&, bool, bool);
+%End
+
+ void hide ();
+ QStringList suggestions () const;
+ int dlgResult ();
+ void moveDlg (int, int);
+ int heightDlg ();
+ int widthDlg ();
+ QString intermediateBuffer () const;
+ virtual bool ignore (const QString&);
+ virtual bool addPersonal (const QString&);
+ KSpellConfig ksConfig () const;
+ void setProgressResolution (uint);
+ static int modalCheck (QString&);
+ static int modalCheck (QString&, KSpellConfig*);
+ void setIgnoreUpperWords (bool);
+ void setIgnoreTitleCase (bool);
+
+signals:
+ void misspelling (const QString&, const QStringList&, uint);
+ void corrected (const QString&, const QString&, uint);
+ void ignoreall (const QString&);
+ void ignoreword (const QString&);
+ void addword (const QString&);
+
+%If ( KDE_3_1_0 - )
+ void replaceall (const QString&, const QString&);
+%End
+
+ void ready (KSpell*);
+ void progress (uint);
+ void done (const QString&);
+ void done (bool);
+ void death ();
+
+protected slots:
+ void KSpell2 (KProcIO*);
+ void checkWord2 (KProcIO*);
+ void checkWord3 ();
+ void check2 (KProcIO*);
+ void checkList2 ();
+ void checkList3a (KProcIO*);
+ void checkListReplaceCurrent ();
+ void checkList4 ();
+ void dialog2 (int);
+ void check3 ();
+
+%If ( KDE_3_2_0 - )
+ void suggestWord (KProcIO*);
+%End
+
+ void slotStopCancel (int);
+ void ispellExit (KProcess*);
+ void emitDeath ();
+ void ispellErrors (KProcess*, char*, int);
+
+%If ( KDE_3_2_0 - )
+ void checkNext ();
+%End
+
+
+signals:
+ void dialog3 ();
+
+protected:
+ int parseOneResponse (const QString&, QString&, QStringList&);
+ QString funnyWord (const QString&);
+ void dialog (const QString&, QStringList&, const char*);
+ QString replacement ();
+ void setUpDialog (bool = 1);
+ void emitProgress ();
+ bool cleanFputs (const QString&, bool = 1);
+ bool cleanFputsWord (const QString&, bool = 1);
+ void startIspell ();
+ bool writePersonalDictionary ();
+
+%If ( KDE_3_2_0 - )
+ void initialize (QWidget*, const QString&, SIP_RXOBJ_CON, SIP_SLOT_CON (), KSpellConfig*, bool, bool, KSpell::SpellerType);
+%End
+
+
+public:
+
+%If ( - KDE_3_2_0 )
+
+ enum spellStatus
+ {
+ Starting,
+ Running,
+ Cleaning,
+ Finished,
+ Error,
+ Crashed
+ };
+
+
+//force
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_KSpell, &sipClass_KSpell},
+ {sipName_KSpellConfig, &sipClass_KSpellConfig},
+ {sipName_KSpellDlg, &sipClass_KSpellDlg},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+%End
+
+
+}; // class KSpell
+
diff --git a/python/pykde/sip/kspell/kspelldlg.sip b/python/pykde/sip/kspell/kspelldlg.sip
new file mode 100644
index 00000000..d489ede5
--- /dev/null
+++ b/python/pykde/sip/kspell/kspelldlg.sip
@@ -0,0 +1,123 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+class KSpellDlg : KDialogBase
+{
+%TypeHeaderCode
+#include <kspelldlg.h>
+%End
+
+
+public:
+ KSpellDlg (QWidget* /TransferThis/, const char*, bool = 0, bool = 0);
+ QString replacement ();
+ void init (const QString&, QStringList*);
+
+%If ( KDE_3_2_0 - )
+ void init (const QString&, QStringList*, const QString&);
+%End
+
+ void standby ();
+
+public slots:
+ void slotProgress (uint);
+
+protected:
+ virtual void closeEvent (QCloseEvent*);
+ void done (int);
+
+signals:
+ void command (int);
+ void ready (bool);
+
+protected slots:
+ void ignore ();
+ void add ();
+ void ignoreAll ();
+ void cancel ();
+ void replace ();
+ void replaceAll ();
+
+%If ( KDE_3_2_0 - )
+ void suggest ();
+%End
+
+ void stop ();
+
+%If ( KDE_3_2_0 - )
+ void slotConfigChanged ();
+%End
+
+ void textChanged (const QString&);
+
+%If ( KDE_3_2_0 - )
+ void slotSelectionChanged (QListViewItem*);
+%End
+
+
+protected slots:
+
+%If ( - KDE_3_2_0 )
+ void selected (int);
+ void highlighted (int);
+%End
+
+
+}; // class KSpellDlg
+
+
+%If ( KDE_3_2_0 - )
+
+enum KS_RESULT
+{
+ KS_CANCEL,
+ KS_REPLACE,
+ KS_REPLACEALL,
+ KS_IGNORE,
+ KS_IGNOREALL,
+ KS_ADD,
+ KS_STOP,
+ KS_SUGGEST,
+ KS_CONFIG
+};
+
+%End
+
+
+%If ( - KDE_3_2_0 )
+
+enum KS_RESULT
+{
+ KS_CANCEL,
+ KS_REPLACE,
+ KS_REPLACEALL,
+ KS_IGNORE,
+ KS_IGNOREALL,
+ KS_ADD,
+ KS_STOP
+};
+
+%End
diff --git a/python/pykde/sip/kspell/kspellmod.sip.in b/python/pykde/sip/kspell/kspellmod.sip.in
new file mode 100644
index 00000000..bc978065
--- /dev/null
+++ b/python/pykde/sip/kspell/kspellmod.sip.in
@@ -0,0 +1,42 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kspell
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kfilemod.sip
+
+%Include ksconfig.sip
+%Include kspell.sip
+%Include kspelldlg.sip
+@mark@
diff --git a/python/pykde/sip/kspell/ksyntaxhighlighter.sip b/python/pykde/sip/kspell/ksyntaxhighlighter.sip
new file mode 100644
index 00000000..e239ae78
--- /dev/null
+++ b/python/pykde/sip/kspell/ksyntaxhighlighter.sip
@@ -0,0 +1,114 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_2_0 - )
+
+class KSyntaxHighlighter : QSyntaxHighlighter
+{
+%TypeHeaderCode
+#include <ksyntaxhighlighter.h>
+%End
+
+
+public:
+
+ enum SyntaxMode
+ {
+ PlainTextMode,
+ RichTextMode
+ };
+
+ KSyntaxHighlighter (QTextEdit*, bool = 0, const QColor& = Qt ::black , const QColor& = QColor (0x00 ,0x80 ,0x00 ), const QColor& = QColor (0x00 ,0x80 ,0x00 ), const QColor& = QColor (0x00 ,0x80 ,0x00 ), KSyntaxHighlighter::SyntaxMode = PlainTextMode );
+ int highlightParagraph (const QString&, int);
+
+}; // class KSyntaxHighlighter
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KSpellingHighlighter : KSyntaxHighlighter
+{
+%TypeHeaderCode
+#include <ksyntaxhighlighter.h>
+%End
+
+
+public:
+ KSpellingHighlighter (QTextEdit*, const QColor& = Qt ::red , bool = 0, const QColor& = Qt ::black , const QColor& = QColor (0x00 ,0x80 ,0x00 ), const QColor& = QColor (0x00 ,0x80 ,0x00 ), const QColor& = QColor (0x00 ,0x80 ,0x00 ));
+ virtual int highlightParagraph (const QString&, int);
+ virtual bool isMisspelled (const QString&) = 0;
+ bool intraWordEditing () const;
+ void setIntraWordEditing (bool);
+ static QStringList personalWords ();
+
+}; // class KSpellingHighlighter
+
+%End
+
+
+%If ( KDE_3_2_0 - )
+
+class KDictSpellingHighlighter : QObject, KSpellingHighlighter
+{
+%TypeHeaderCode
+#include <ksyntaxhighlighter.h>
+%End
+
+
+public:
+ KDictSpellingHighlighter (QTextEdit*, bool = 1, bool = 1, const QColor& = Qt ::red , bool = 0, const QColor& = Qt ::black , const QColor& = QColor (0x00 ,0x80 ,0x00 ), const QColor& = QColor (0x00 ,0x70 ,0x00 ), const QColor& = QColor (0x00 ,0x60 ,0x00 ), KSpellConfig* = 0);
+ virtual bool isMisspelled (const QString&);
+ static void dictionaryChanged ();
+ void restartBackgroundSpellCheck ();
+ void setActive (bool);
+ bool isActive () const;
+ void setAutomatic (bool);
+ bool automatic () const;
+
+signals:
+ void activeChanged (const QString&);
+ void newSuggestions (const QString&, const QStringList&, uint);
+
+protected:
+ QString spellKey ();
+ bool eventFilter (QObject*, QEvent*);
+
+protected slots:
+ void slotMisspelling (const QString&, const QStringList&, uint);
+ void slotCorrected (const QString&, const QString&, uint);
+ void slotRehighlight ();
+ void slotDictionaryChanged ();
+ void slotSpellReady (KSpell*);
+ void slotAutoDetection ();
+ void slotLocalSpellConfigChanged ();
+ void slotKSpellNotResponding ();
+
+}; // class KDictSpellingHighlighter
+
+%End
+
diff --git a/python/pykde/sip/kspell2/backgroundchecker.sip b/python/pykde/sip/kspell2/backgroundchecker.sip
new file mode 100644
index 00000000..56ab44c9
--- /dev/null
+++ b/python/pykde/sip/kspell2/backgroundchecker.sip
@@ -0,0 +1,68 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class BackgroundChecker : QObject
+{
+%TypeHeaderCode
+#include <backgroundchecker.h>
+%End
+
+public:
+ BackgroundChecker (const Broker::Ptr&, QObject* = 0, const char* = 0);
+ void checkText (const QString&);
+ KSpell2::Filter* filter () const;
+ KSpell2::Broker* broker () const;
+ void changeLanguage (const QString&);
+ bool checkWord (const QString&);
+ QStringList suggest (const QString&) const;
+
+public slots:
+ virtual void setFilter (KSpell2::Filter*);
+ virtual void start ();
+ virtual void stop ();
+ virtual void continueChecking ();
+
+signals:
+ void misspelling (const QString&, int);
+ void done ();
+
+protected:
+ virtual QString getMoreText ();
+ virtual void finishedCurrentFeed ();
+
+protected slots:
+ void slotEngineDone ();
+
+}; // class BackgroundChecker
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/broker.sip b/python/pykde/sip/kspell2/broker.sip
new file mode 100644
index 00000000..fce46354
--- /dev/null
+++ b/python/pykde/sip/kspell2/broker.sip
@@ -0,0 +1,62 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Broker : QObject, KShared
+{
+%TypeHeaderCode
+#include <broker.h>
+%End
+
+public:
+ typedef KSharedPtr<Broker> Ptr;
+ static KSpell2::Broker* openBroker (KSharedConfig* = 0);
+
+public:
+ KSpell2::DefaultDictionary* defaultDictionary () const;
+ KSpell2::Dictionary* dictionary (const QString& = QString ::null , const QString& = QString ::null ) const;
+ QStringList clients () const;
+ QStringList languages () const;
+ KSpell2::Settings* settings () const;
+
+signals:
+ void configurationChanged ();
+
+protected:
+ void changed ();
+
+private:
+ Broker (KSharedConfig*);
+
+}; // class Broker
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/configdialog.sip b/python/pykde/sip/kspell2/configdialog.sip
new file mode 100644
index 00000000..27581de0
--- /dev/null
+++ b/python/pykde/sip/kspell2/configdialog.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class ConfigDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <configdialog.h>
+%End
+
+public:
+ ConfigDialog (KSpell2::Broker*, QWidget*);
+
+protected slots:
+ virtual void slotOk ();
+ virtual void slotApply ();
+
+}; // class ConfigDialog
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/configwidget.sip b/python/pykde/sip/kspell2/configwidget.sip
new file mode 100644
index 00000000..459c5692
--- /dev/null
+++ b/python/pykde/sip/kspell2/configwidget.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class ConfigWidget : QWidget
+{
+%TypeHeaderCode
+#include <configwidget.h>
+%End
+
+public:
+ ConfigWidget (KSpell2::Broker*, QWidget*, const char* = 0);
+ bool backgroundCheckingButtonShown () const;
+
+public slots:
+ void save ();
+ void setBackgroundCheckingButtonShown (bool);
+ void slotDefault ();
+
+protected slots:
+ void slotChanged ();
+
+}; // class ConfigWidget
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/defaultdictionary.sip b/python/pykde/sip/kspell2/defaultdictionary.sip
new file mode 100644
index 00000000..f57ffbce
--- /dev/null
+++ b/python/pykde/sip/kspell2/defaultdictionary.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class DefaultDictionary : QObject, KSpell2::Dictionary
+{
+%TypeHeaderCode
+#include <defaultdictionary.h>
+%End
+
+public:
+ DefaultDictionary (const QString&, KSpell2::Broker*);
+
+public:
+ bool isValid () const;
+ virtual bool check (const QString&);
+ virtual QStringList suggest (const QString&);
+ virtual bool checkAndSuggest (const QString&, QStringList&);
+ virtual bool storeReplacement (const QString&, const QString&);
+ virtual bool addToPersonal (const QString&);
+ virtual bool addToSession (const QString&);
+
+signals:
+ void changed ();
+
+protected slots:
+ void defaultConfigurationChanged ();
+
+}; // class DefaultDictionary
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/dialog.sip b/python/pykde/sip/kspell2/dialog.sip
new file mode 100644
index 00000000..448a4283
--- /dev/null
+++ b/python/pykde/sip/kspell2/dialog.sip
@@ -0,0 +1,61 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Dialog : KDialogBase
+{
+%TypeHeaderCode
+#include <dialog.h>
+%End
+
+public:
+ Dialog (KSpell2::BackgroundChecker*, QWidget*, const char* = 0);
+ QString originalBuffer () const;
+ QString buffer () const;
+ void show ();
+ void activeAutoCorrect (bool);
+
+public slots:
+ void setBuffer (const QString&);
+ void setFilter (KSpell2::Filter*);
+
+signals:
+ void done (const QString&);
+ void misspelling (const QString&, int);
+ void replace (const QString&, int, const QString&);
+ void stop ();
+ void cancel ();
+ void autoCorrect (const QString&, const QString&);
+
+}; // class Dialog
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/dictionary.sip b/python/pykde/sip/kspell2/dictionary.sip
new file mode 100644
index 00000000..b5b7ce05
--- /dev/null
+++ b/python/pykde/sip/kspell2/dictionary.sip
@@ -0,0 +1,57 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Dictionary
+{
+%TypeHeaderCode
+#include <dictionary.h>
+%End
+
+public:
+ virtual bool check (const QString&) = 0;
+ virtual QStringList suggest (const QString&) = 0;
+ virtual bool checkAndSuggest (const QString&, QStringList&) = 0;
+ virtual bool storeReplacement (const QString&, const QString&) = 0;
+ virtual bool addToPersonal (const QString&) = 0;
+ virtual bool addToSession (const QString&) = 0;
+ QString language () const;
+ bool isDefault () const;
+
+protected:
+ Dictionary (const QString&, bool = 0);
+
+protected:
+
+}; // class Dictionary
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/filter.sip b/python/pykde/sip/kspell2/filter.sip
new file mode 100644
index 00000000..915ba463
--- /dev/null
+++ b/python/pykde/sip/kspell2/filter.sip
@@ -0,0 +1,87 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Word
+{
+%TypeHeaderCode
+#include <filter.h>
+%End
+
+public:
+ Word ();
+ Word (const QString&, int, bool = 0);
+ Word (const KSpell2::Word&);
+ QString word;
+ uint start;
+ bool end;
+
+}; // class Word
+
+
+class Filter
+{
+%TypeHeaderCode
+#include <filter.h>
+%End
+
+public:
+ static KSpell2::Filter* defaultFilter ();
+
+public:
+ Filter ();
+ static KSpell2::Word end ();
+ void setSettings (KSpell2::Settings*);
+ KSpell2::Settings* settings () const;
+ bool atEnd () const;
+ void setBuffer (const QString&);
+ QString buffer () const;
+ void restart ();
+ virtual KSpell2::Word nextWord () const;
+ virtual KSpell2::Word previousWord () const;
+ virtual KSpell2::Word wordAtPosition (uint) const;
+ virtual void setCurrentPosition (int);
+ virtual int currentPosition () const;
+ virtual void replace (const KSpell2::Word&, const QString&);
+ virtual QString context () const;
+
+protected:
+ bool trySkipLinks () const;
+ bool ignore (const QString&) const;
+ QChar skipToLetter (uint&) const;
+ bool shouldBeSkipped (bool, bool, const QString&) const;
+
+protected:
+
+}; // class Filter
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/highlighter.sip b/python/pykde/sip/kspell2/highlighter.sip
new file mode 100644
index 00000000..b64814af
--- /dev/null
+++ b/python/pykde/sip/kspell2/highlighter.sip
@@ -0,0 +1,54 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Highlighter : QSyntaxHighlighter
+{
+%TypeHeaderCode
+#include <highlighter.h>
+%End
+
+public:
+ Highlighter (QTextEdit*, const QString& = QString ::null , KSpell2::Filter* = Filter ::defaultFilter ());
+ virtual int highlightParagraph (const QString&, int);
+ KSpell2::Filter* currentFilter () const;
+ void setCurrentFilter (KSpell2::Filter*);
+ QString currentLanguage () const;
+ void setCurrentLanguage (const QString&);
+
+protected:
+ virtual void setMisspelled (int, int);
+ virtual void unsetMisspelled (int, int);
+
+}; // class Highlighter
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kspell2/kspell2mod.sip.in b/python/pykde/sip/kspell2/kspell2mod.sip.in
new file mode 100644
index 00000000..c18a5155
--- /dev/null
+++ b/python/pykde/sip/kspell2/kspell2mod.sip.in
@@ -0,0 +1,48 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kspell2
+
+%Import qt/qtmod.sip
+%Import qtxml/qtxmlmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+
+%Include backgroundchecker.sip
+%Include broker.sip
+%Include configdialog.sip
+%Include configwidget.sip
+%Include defaultdictionary.sip
+%Include dialog.sip
+%Include dictionary.sip
+%Include filter.sip
+%Include highlighter.sip
+%Include settings.sip
+@mark@
diff --git a/python/pykde/sip/kspell2/settings.sip b/python/pykde/sip/kspell2/settings.sip
new file mode 100644
index 00000000..ded7b04e
--- /dev/null
+++ b/python/pykde/sip/kspell2/settings.sip
@@ -0,0 +1,63 @@
+//
+// Copyright 2004 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kspell2 version KDE_3_3_0
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+namespace KSpell2
+{
+
+class Settings
+{
+%TypeHeaderCode
+#include <settings.h>
+%End
+
+public:
+ void setDefaultLanguage (const QString&);
+ QString defaultLanguage () const;
+ void setDefaultClient (const QString&);
+ QString defaultClient () const;
+ void setCheckUppercase (bool);
+ bool checkUppercase () const;
+ void setSkipRunTogether (bool);
+ bool skipRunTogether () const;
+ void setBackgroundCheckerEnabled (bool);
+ bool backgroundCheckerEnabled () const;
+ void setCurrentIgnoreList (const QStringList&);
+ void addWordToIgnore (const QString&);
+ QStringList currentIgnoreList () const;
+ bool ignore (const QString&);
+ void save ();
+ KSharedConfig* sharedConfig () const;
+
+private:
+ Settings (KSpell2::Broker*, KSharedConfig*);
+
+}; // class Settings
+
+}; // namespace KSpell2
+
+%End
+
diff --git a/python/pykde/sip/kutils/kcmoduleinfo.sip b/python/pykde/sip/kutils/kcmoduleinfo.sip
new file mode 100644
index 00000000..35eec98a
--- /dev/null
+++ b/python/pykde/sip/kutils/kcmoduleinfo.sip
@@ -0,0 +1,91 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KCModuleInfo
+{
+%TypeHeaderCode
+#include <kcmoduleinfo.h>
+%End
+
+
+public:
+ KCModuleInfo (const QString&);
+ KCModuleInfo (KService::Ptr);
+ KCModuleInfo (const KCModuleInfo&);
+
+%If ( KDE_3_4_0 - )
+ KCModuleInfo ();
+%End
+
+ bool operator == (const KCModuleInfo&) const;
+ bool operator != (const KCModuleInfo&) const;
+ QString fileName () const;
+ const QStringList& keywords () const;
+
+%If ( KDE_3_4_0 - )
+ QString factoryName () const;
+%End
+
+ QString moduleName () const;
+ KService::Ptr service () const;
+ QString comment () const;
+ QString icon () const;
+ QString docPath () const;
+ QString library () const;
+ QString handle () const;
+ int weight () const;
+ bool needsRootPrivileges () const;
+ bool isHiddenByDefault () const;
+
+%If ( KDE_3_4_0 - )
+ bool needsTest () const;
+%End
+
+
+protected:
+ void setKeywords (const QStringList&);
+ void setName (const QString&);
+ void setComment (const QString&);
+ void setIcon (const QString&);
+ void setLibrary (const QString&);
+ void setHandle (const QString&);
+ void setWeight (int);
+
+%If ( KDE_3_4_0 - )
+ void setNeedsTest (bool);
+%End
+
+ void setNeedsRootPrivileges (bool);
+ void setIsHiddenByDefault (bool);
+ void setDocPath (const QString&);
+ void loadAll ();
+
+}; // class KCModuleInfo
+
+%End
+
diff --git a/python/pykde/sip/kutils/kcmoduleloader.sip b/python/pykde/sip/kutils/kcmoduleloader.sip
new file mode 100644
index 00000000..dc732bdc
--- /dev/null
+++ b/python/pykde/sip/kutils/kcmoduleloader.sip
@@ -0,0 +1,67 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KCModuleLoader
+{
+%TypeHeaderCode
+#include <kcmoduleloader.h>
+%End
+
+
+public:
+ static KCModule* loadModule (const KCModuleInfo&, bool = 1, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+ static KCModule* loadModule (const QString&, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+
+%If ( KDE_3_4_0 - )
+
+ enum ErrorReporting
+ {
+ None,
+ Inline,
+ Dialog,
+ Both
+ };
+
+ static KCModule* loadModule (const KCModuleInfo&, KCModuleLoader::ErrorReporting, bool = 1, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+ static KCModule* loadModule (const QString&, KCModuleLoader::ErrorReporting, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+%End
+
+ static void unloadModule (const KCModuleInfo&);
+ static void showLastLoaderError (QWidget*);
+
+%If ( KDE_3_4_0 - )
+ static bool testModule (const QString&);
+ static bool testModule (const KCModuleInfo&);
+ static KCModule* reportError (KCModuleLoader::ErrorReporting, const QString&, QString, QWidget*);
+%End
+
+
+}; // class KCModuleLoader
+
+%End
+
diff --git a/python/pykde/sip/kutils/kcmoduleproxy.sip b/python/pykde/sip/kutils/kcmoduleproxy.sip
new file mode 100644
index 00000000..e0df6304
--- /dev/null
+++ b/python/pykde/sip/kutils/kcmoduleproxy.sip
@@ -0,0 +1,104 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KCModuleProxy : QWidget
+{
+%TypeHeaderCode
+#include <kcmoduleproxy.h>
+%End
+
+
+public:
+ KCModuleProxy (const KCModuleInfo&, bool = 0, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+
+%If ( KDE_3_4_0 - )
+ KCModuleProxy (const QString&, bool = 1, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+ KCModuleProxy (const KService::Ptr&, bool = 1, QWidget* = 0, const char* = 0, const QStringList& = QStringList ());
+%End
+
+ void load ();
+ void save ();
+ QString quickHelp () const;
+ const KAboutData* aboutData () const;
+ int buttons () const;
+ QString rootOnlyMsg () const;
+ bool useRootOnlyMsg () const;
+ KInstance* instance () const;
+ bool changed () const;
+
+%If ( KDE_3_4_0 - )
+ bool rootMode () const;
+%End
+
+ KCModule* realModule () const;
+ const KCModuleInfo& moduleInfo () const;
+
+%If ( KDE_3_4_0 - )
+ QCString dcopName () const;
+%End
+
+
+public slots:
+
+%If ( KDE_3_4_0 - )
+ void runAsRoot ();
+ void defaults ();
+ void deleteClient ();
+%End
+
+
+signals:
+ void changed (bool);
+
+%If ( KDE_3_4_0 - )
+ void changed (KCModuleProxy*);
+ void childClosed ();
+ void quickHelpChanged ();
+%End
+
+
+protected:
+ void showEvent (QShowEvent*);
+
+%If ( KDE_3_4_0 - )
+ void init (const KCModuleInfo&);
+ void emitQuickHelpChanged ();
+%End
+
+
+public:
+
+%If ( - KDE_3_4_0 )
+ void defaults ();
+%End
+
+
+}; // class KCModuleProxy
+
+%End
+
diff --git a/python/pykde/sip/kutils/kcmultidialog.sip b/python/pykde/sip/kutils/kcmultidialog.sip
new file mode 100644
index 00000000..0d827091
--- /dev/null
+++ b/python/pykde/sip/kutils/kcmultidialog.sip
@@ -0,0 +1,86 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KCMultiDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kcmultidialog.h>
+%End
+
+
+public:
+ KCMultiDialog (QWidget* = 0, const char* = 0, bool = 0);
+ KCMultiDialog (int, const QString&, QWidget* = 0, const char* = 0, bool = 0);
+ KCMultiDialog (int, const KGuiItem&, const KGuiItem& = KGuiItem (), int = User2 , const QString& = i18n ("Configure" ), QWidget* = 0, const char* = 0, bool = 0);
+ void addModule (const QString&, bool = 1) /ReleaseGIL/;
+ void addModule (const KCModuleInfo&, QStringList = QStringList (), bool = 0);
+ void removeAllModules ();
+ void show ();
+
+signals:
+ void configCommitted ();
+ void configCommitted (const QCString&);
+
+protected slots:
+ virtual void slotDefault ();
+ virtual void slotUser1 ();
+ virtual void slotApply ();
+ virtual void slotOk ();
+ virtual void slotHelp ();
+//force
+
+private:
+ void apply ();
+
+//force
+%ConvertToSubClassCode
+// The table of Python class objects indexed by their names. The table
+// must be sorted by name.
+
+static sipStringTypeClassMap map[] = {
+{sipName_KCModuleProxy, &sipClass_KCModuleProxy},
+{sipName_KCMultiDialog, &sipClass_KCMultiDialog},
+{sipName_KFind, &sipClass_KFind},
+{sipName_KFindDialog, &sipClass_KFindDialog},
+{sipName_KMultiTabBar, &sipClass_KMultiTabBar},
+{sipName_KMultiTabBarButton, &sipClass_KMultiTabBarButton},
+{sipName_KMultiTabBar, &sipClass_KMultiTabBar},
+{sipName_KPluginSelector, &sipClass_KPluginSelector},
+{sipName_KReplace, &sipClass_KReplace},
+{sipName_KReplaceDialog, &sipClass_KReplaceDialog},
+};
+
+sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+//end
+//end
+
+}; // class KCMultiDialog
+
+%End
+
diff --git a/python/pykde/sip/kutils/kfind.sip b/python/pykde/sip/kutils/kfind.sip
new file mode 100644
index 00000000..382a572a
--- /dev/null
+++ b/python/pykde/sip/kutils/kfind.sip
@@ -0,0 +1,83 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KFind : QObject
+{
+%TypeHeaderCode
+#include <kfind.h>
+%End
+
+
+public:
+ KFind (const QString&, long, QWidget*);
+ KFind (const QString&, long, QWidget*, QWidget*);
+
+ enum Result
+ {
+ NoMatch,
+ Match
+ };
+
+ bool needData () const;
+ void setData (const QString&, int = -1);
+ void setData (int, const QString&, int = -1);
+ KFind::Result find ();
+ long options () const;
+ virtual void setOptions (long);
+ QString pattern () const;
+ void setPattern (const QString&);
+ int numMatches () const;
+ virtual void resetCounts ();
+ virtual bool validateMatch (const QString&, int, int);
+ virtual bool shouldRestart (bool = 0, bool = 1) const;
+ static int find (const QString&, const QString&, int, long, int*);
+ static int find (const QString&, const QRegExp&, int, long, int*);
+ virtual void displayFinalDialog () const;
+ KDialogBase* findNextDialog (bool = 0);
+ void closeFindNextDialog ();
+ int index () const;
+
+signals:
+ void highlight (const QString&, int, int);
+ void highlight (int, int, int);
+ void findNext ();
+ void optionsChanged ();
+ void dialogClosed ();
+
+protected:
+ QWidget* parentWidget () const;
+ QWidget* dialogsParent () const;
+
+protected slots:
+ void slotFindNext ();
+ void slotDialogClosed ();
+
+}; // class KFind
+
+%End
+
diff --git a/python/pykde/sip/kutils/kfinddialog.sip b/python/pykde/sip/kutils/kfinddialog.sip
new file mode 100644
index 00000000..7241ad99
--- /dev/null
+++ b/python/pykde/sip/kutils/kfinddialog.sip
@@ -0,0 +1,86 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KFindDialog : KDialogBase
+{
+%TypeHeaderCode
+#include <kfinddialog.h>
+%End
+
+
+public:
+
+ enum Options
+ {
+ WholeWordsOnly,
+ FromCursor,
+ SelectedText,
+ CaseSensitive,
+ FindBackwards,
+ RegularExpression,
+ FindIncremental,
+ MinimumUserOption
+ };
+
+ KFindDialog (QWidget* = 0, const char* = 0, long = 0, const QStringList& = QStringList (), bool = 0);
+ KFindDialog (bool, QWidget* = 0, const char* = 0, long = 0, const QStringList& = QStringList (), bool = 0);
+ void setFindHistory (const QStringList&);
+ QStringList findHistory () const;
+ void setHasSelection (bool);
+ void setHasCursor (bool);
+
+%If ( KDE_3_4_0 - )
+ void setSupportsBackwardsFind (bool);
+ void setSupportsCaseSensitiveFind (bool);
+ void setSupportsWholeWordsFind (bool);
+ void setSupportsRegularExpressionFind (bool);
+%End
+
+ void setOptions (long);
+ long options () const;
+ QString pattern () const;
+ void setPattern (const QString&);
+ QWidget* findExtension ();
+
+protected slots:
+ void slotOk ();
+ void slotSelectedTextToggled (bool);
+ void showPatterns ();
+ void showPlaceholders ();
+ void textSearchChanged (const QString&);
+
+protected:
+ virtual void showEvent (QShowEvent*);
+
+private:
+ KFindDialog (QWidget*, const char*, bool);
+
+}; // class KFindDialog
+
+%End
+
diff --git a/python/pykde/sip/kutils/kmultitabbar.sip b/python/pykde/sip/kutils/kmultitabbar.sip
new file mode 100644
index 00000000..d9224422
--- /dev/null
+++ b/python/pykde/sip/kutils/kmultitabbar.sip
@@ -0,0 +1,167 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KMultiTabBar : QWidget
+{
+%TypeHeaderCode
+#include <kmultitabbar.h>
+%End
+
+
+public:
+
+ enum KMultiTabBarMode
+ {
+ Horizontal,
+ Vertical
+ };
+
+
+ enum KMultiTabBarPosition
+ {
+ Left,
+ Right,
+ Top,
+ Bottom
+ };
+
+
+ enum KMultiTabBarStyle
+ {
+ VSNET,
+ KDEV3,
+ KONQSBC,
+ KDEV3ICON,
+ STYLELAST
+ };
+
+ KMultiTabBar (KMultiTabBar::KMultiTabBarMode, QWidget* = 0, const char* = 0);
+ int appendButton (const QPixmap&, int = -1, QPopupMenu* = 0, const QString& = QString ::null );
+ void removeButton (int);
+ int appendTab (const QPixmap&, int = -1, const QString& = QString ::null );
+ void removeTab (int);
+ void setTab (int, bool);
+ bool isTabRaised (int) const;
+ KMultiTabBarButton* button (int) const;
+ KMultiTabBarTab* tab (int) const;
+ void setPosition (KMultiTabBar::KMultiTabBarPosition);
+
+%If ( KDE_3_5_0 - )
+ KMultiTabBar::KMultiTabBarPosition position () const;
+%End
+
+ void setStyle (KMultiTabBar::KMultiTabBarStyle);
+
+%If ( KDE_3_5_0 - )
+ KMultiTabBar::KMultiTabBarStyle tabStyle () const;
+%End
+
+//ig QPtrList<KMultiTabBarTab>* tabs ();
+//ig QPtrList<KMultiTabBarButton>* buttons ();
+ void showActiveTabTexts (bool = 1);
+
+protected:
+ virtual void fontChange (const QFont&);
+ void updateSeparator ();
+
+}; // class KMultiTabBar
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class KMultiTabBarButton : QPushButton
+{
+%TypeHeaderCode
+#include <kmultitabbar.h>
+%End
+
+
+public:
+ KMultiTabBarButton (const QPixmap&, const QString&, QPopupMenu*, int, QWidget*, KMultiTabBar::KMultiTabBarPosition, KMultiTabBar::KMultiTabBarStyle);
+ KMultiTabBarButton (const QString&, QPopupMenu*, int, QWidget*, KMultiTabBar::KMultiTabBarPosition, KMultiTabBar::KMultiTabBarStyle);
+ int id () const;
+
+public slots:
+ void setPosition (KMultiTabBar::KMultiTabBarPosition);
+ void setStyle (KMultiTabBar::KMultiTabBarStyle);
+ void setText (const QString&);
+ QSize sizeHint () const;
+
+protected:
+ virtual void hideEvent (QHideEvent*);
+ virtual void showEvent (QShowEvent*);
+
+signals:
+ void clicked (int);
+
+protected slots:
+ virtual void slotClicked ();
+
+}; // class KMultiTabBarButton
+
+%End
+
+
+%If ( KDE_3_3_0 - )
+
+class KMultiTabBarTab : KMultiTabBarButton
+{
+%TypeHeaderCode
+#include <kmultitabbar.h>
+%End
+
+
+public:
+ KMultiTabBarTab (const QPixmap&, const QString&, int, QWidget*, KMultiTabBar::KMultiTabBarPosition, KMultiTabBar::KMultiTabBarStyle);
+ void setState (bool);
+ void showActiveTabText (bool);
+ void resize ();
+
+protected:
+ void setSize (int);
+ int neededSize ();
+ void updateState ();
+ virtual void drawButton (QPainter*);
+ virtual void drawButtonLabel (QPainter*);
+ void drawButtonStyled (QPainter*);
+ void drawButtonClassic (QPainter*);
+
+protected slots:
+ virtual void slotClicked ();
+ void setTabsPosition (KMultiTabBar::KMultiTabBarPosition);
+
+public slots:
+ virtual void setIcon (const QString&);
+ virtual void setIcon (const QPixmap&);
+
+}; // class KMultiTabBarTab
+
+%End
+
diff --git a/python/pykde/sip/kutils/kplugininfo.sip b/python/pykde/sip/kutils/kplugininfo.sip
new file mode 100644
index 00000000..e58d9899
--- /dev/null
+++ b/python/pykde/sip/kutils/kplugininfo.sip
@@ -0,0 +1,149 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KPluginInfo
+{
+%TypeHeaderCode
+#include <kplugininfo.h>
+%End
+
+
+public:
+ typedef QValueList<KPluginInfo*> List;
+ KPluginInfo (const QString&, const char* = 0);
+ KPluginInfo (const KService::Ptr);
+ static KPluginInfo::List fromServices (const KService::List&, KConfig* = 0, const QString& = QString ::null );
+ static KPluginInfo::List fromFiles (const QStringList&, KConfig* = 0, const QString& = QString ::null );
+ static KPluginInfo::List fromKPartsInstanceName (const QString&, KConfig* = 0, const QString& = QString ::null );
+ bool isHidden () const;
+ virtual void setPluginEnabled (bool);
+ virtual bool isPluginEnabled () const;
+ bool isPluginEnabledByDefault () const;
+ QVariant property (const QString&) const;
+//ig QVariant operator [] (const QString&) const;
+ const QString& name () const;
+ const QString& comment () const;
+ const QString& icon () const;
+ const QString& specfile () const;
+ const QString& author () const;
+ const QString& email () const;
+ const QString& category () const;
+ const QString& pluginName () const;
+ const QString& version () const;
+ const QString& website () const;
+ const QString& license () const;
+ const QStringList& dependencies () const;
+ KService::Ptr service () const;
+//ig const QValueList<KService::Ptr>& kcmServices () const;
+ void setConfig (KConfig*, const QString&);
+ KConfig* config () const;
+ const QString& configgroup () const;
+ virtual void save (KConfigGroup* = 0);
+ virtual void load (KConfigGroup* = 0);
+ virtual void defaults ();
+
+private:
+ KPluginInfo (const KPluginInfo&);
+
+}; // class KPluginInfo
+
+%End
+
+
+
+%If (KDE_3_3_0 - )
+%MappedType KPluginInfo::List
+//converts a Python list of KPluginInfo
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+#include <kplugininfo.h>
+#include <sipkutilsKPluginInfo.h>
+%End
+
+%ConvertFromTypeCode
+ if (!sipCpp)
+ return PyList_New(0);
+
+ // Create the list
+ PyObject *pylist;
+ if ((pylist = PyList_New(0)) == NULL)
+ return NULL;
+
+ QValueList<KPluginInfo *> *cpplist = (QValueList<KPluginInfo *> *)sipCpp;
+ PyObject *inst;
+
+ // Get it.
+ QValueList<KPluginInfo *>::Iterator it;
+ for( it = cpplist->begin(); it != cpplist->end(); ++it )
+ {
+ if (((inst = sipConvertFromInstance ((KPluginInfo *)(*it), sipClass_KPluginInfo, sipTransferObj)) == NULL)
+ || PyList_Append (pylist, inst) < 0)
+ {
+ Py_DECREF (pylist);
+ return NULL;
+ }
+ }
+
+ return pylist;
+%End
+
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<KPluginInfo *> *cpplist = new QValueList<KPluginInfo *>;
+
+ PyObject *elem;
+ KPluginInfo *cpp;
+ int iserr = 0;
+
+ for (int i = 0; i < PyList_Size (sipPy); i++)
+ {
+ elem = PyList_GET_ITEM (sipPy, i);
+ cpp = (KPluginInfo *)sipForceConvertTo_KPluginInfo (elem, &iserr);
+
+ if (iserr)
+ {
+ *sipIsErr = 1;
+ delete cpplist;
+ return 0;
+ }
+
+ cpplist->append (cpp);
+ }
+
+ *sipCppPtr = cpplist;
+
+ return 1;
+%End
+};
+%End
+
+
diff --git a/python/pykde/sip/kutils/kpluginselector.sip b/python/pykde/sip/kutils/kpluginselector.sip
new file mode 100644
index 00000000..2ef12ed3
--- /dev/null
+++ b/python/pykde/sip/kutils/kpluginselector.sip
@@ -0,0 +1,53 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KPluginSelector : QWidget
+{
+%TypeHeaderCode
+#include <kpluginselector.h>
+%End
+
+
+public:
+ KPluginSelector (QWidget*, const char* = 0);
+ void addPlugins (const QString&, const QString& = QString ::null , const QString& = QString ::null , KConfig* = 0);
+ void addPlugins (const KInstance*, const QString& = QString ::null , const QString& = QString ::null , KConfig* = 0);
+//ig void addPlugins (const QValueList<KPluginInfo*>&, const QString& = QString ::null , const QString& = QString ::null , KConfig* = 0);
+ void setShowEmptyConfigPage (bool);
+ void load ();
+ void save ();
+ void defaults ();
+
+signals:
+ void changed (bool);
+ void configCommitted (const QCString&);
+
+}; // class KPluginSelector
+
+%End
+
diff --git a/python/pykde/sip/kutils/kreplace.sip b/python/pykde/sip/kutils/kreplace.sip
new file mode 100644
index 00000000..bfed876e
--- /dev/null
+++ b/python/pykde/sip/kutils/kreplace.sip
@@ -0,0 +1,60 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KReplace : KFind
+{
+%TypeHeaderCode
+#include <kreplace.h>
+%End
+
+
+public:
+ KReplace (const QString&, const QString&, long, QWidget* = 0);
+ KReplace (const QString&, const QString&, long, QWidget*, QWidget*);
+ int numReplacements () const;
+ virtual void resetCounts ();
+ Result replace ();
+ KDialogBase* replaceNextDialog (bool = 0);
+ void closeReplaceNextDialog ();
+ static int replace (QString&, const QString&, const QString&, int, long, int*);
+ static int replace (QString&, const QRegExp&, const QString&, int, long, int*);
+ virtual bool shouldRestart (bool = 0, bool = 1) const;
+ virtual void displayFinalDialog () const;
+
+signals:
+ void replace (const QString&, int, int, int);
+
+protected slots:
+ void slotSkip ();
+ void slotReplace ();
+ void slotReplaceAll ();
+
+}; // class KReplace
+
+%End
+
diff --git a/python/pykde/sip/kutils/kreplacedialog.sip b/python/pykde/sip/kutils/kreplacedialog.sip
new file mode 100644
index 00000000..5657adad
--- /dev/null
+++ b/python/pykde/sip/kutils/kreplacedialog.sip
@@ -0,0 +1,59 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE 3.5.3
+
+
+// This software is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this library; see the file COPYING.
+// If not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If ( KDE_3_3_0 - )
+
+class KReplaceDialog : KFindDialog
+{
+%TypeHeaderCode
+#include <kreplacedialog.h>
+%End
+
+
+public:
+
+ enum Options
+ {
+ PromptOnReplace,
+ BackReference
+ };
+
+ KReplaceDialog (QWidget* = 0, const char* = 0, long = 0, const QStringList& = QStringList (), const QStringList& = QStringList (), bool = 1);
+ void setReplacementHistory (const QStringList&);
+ QStringList replacementHistory () const;
+ void setOptions (long);
+ long options () const;
+ QString replacement () const;
+ QWidget* replaceExtension ();
+
+protected slots:
+ void slotOk ();
+ virtual void showEvent (QShowEvent*);
+
+}; // class KReplaceDialog
+
+%End
+
diff --git a/python/pykde/sip/kutils/kutils-kde340.diff b/python/pykde/sip/kutils/kutils-kde340.diff
new file mode 100644
index 00000000..d37bf3db
--- /dev/null
+++ b/python/pykde/sip/kutils/kutils-kde340.diff
@@ -0,0 +1 @@
++ %Include kcmodulecontainer.sip
diff --git a/python/pykde/sip/kutils/kutils-kde341.diff b/python/pykde/sip/kutils/kutils-kde341.diff
new file mode 100644
index 00000000..d37bf3db
--- /dev/null
+++ b/python/pykde/sip/kutils/kutils-kde341.diff
@@ -0,0 +1 @@
++ %Include kcmodulecontainer.sip
diff --git a/python/pykde/sip/kutils/kutilsmod.sip b/python/pykde/sip/kutils/kutilsmod.sip
new file mode 100644
index 00000000..bfce8f0d
--- /dev/null
+++ b/python/pykde/sip/kutils/kutilsmod.sip
@@ -0,0 +1,49 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kutils
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import qtxml/qtxmlmod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include kcmoduleinfo.sip
+%Include kcmoduleloader.sip
+%Include kcmoduleproxy.sip
+%Include kcmultidialog.sip
+%Include kfind.sip
+%Include kfinddialog.sip
+%Include kmultitabbar.sip
+%Include kplugininfo.sip
+%Include kpluginselector.sip
+%Include kreplace.sip
+%Include kreplacedialog.sip
diff --git a/python/pykde/sip/kutils/kutilsmod.sip.in b/python/pykde/sip/kutils/kutilsmod.sip.in
new file mode 100644
index 00000000..fbfb4ad0
--- /dev/null
+++ b/python/pykde/sip/kutils/kutilsmod.sip.in
@@ -0,0 +1,50 @@
+//
+// Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
+// Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
+// may also apply
+
+
+// Generated by preSip
+// module kutils version KDE_3_5_2
+
+%Copying
+
+ This software is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this library; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+%End
+
+%Module kutils
+
+%Import qt/qtmod.sip
+%Import dcopmod.sip
+%Import kdecoremod.sip
+%Import qtxml/qtxmlmod.sip
+%Import kdefxmod.sip
+%Import kdeuimod.sip
+%Import kiomod.sip
+
+%Include kcmoduleinfo.sip
+%Include kcmoduleloader.sip
+%Include kcmoduleproxy.sip
+%Include kcmultidialog.sip
+%Include kfind.sip
+%Include kfinddialog.sip
+%Include kmultitabbar.sip
+%Include kplugininfo.sip
+%Include kpluginselector.sip
+%Include kreplace.sip
+%Include kreplacedialog.sip
+@mark@
diff --git a/python/pykde/svnmerge.py b/python/pykde/svnmerge.py
new file mode 100644
index 00000000..7b90652b
--- /dev/null
+++ b/python/pykde/svnmerge.py
@@ -0,0 +1,47 @@
+import os, os.path
+
+svnbase = "/home/jim/PyKDE/"
+newbase = "/home/jim/PyKDE352/"
+
+newfiles = os.listdir (os.path.join (newbase, "sip"))
+
+for file in newfiles:
+ newpath = os.path.join (newbase, "sip", file)
+ if os.path.isdir (newpath):
+ svnpath = os.path.join (svnbase, "sip", file)
+ if os.path.exists (svnpath):
+ newsip = os.listdir (newpath)
+ svnsip = os.listdir (svnpath)
+ for sip in newsip:
+ os.system ("cp %s %s" % (os.path.join (newpath, sip), svnpath))
+ if sip not in svnsip:
+ os.system ("svn add %s" % (os.path.join (svnpath, sip)))
+ print "added %s" % sip
+ else:
+ os.system ("cp -R %s %s" % (newpath, svnpath))
+ os.system ("svn add %s" % svnpath)
+ print "added %s" % svnpath
+
+newfiles = os.listdir (os.path.join (newbase, "extra"))
+
+for file in newfiles:
+ newpath = os.path.join (newbase, "extra", file)
+ if os.path.isdir (newpath):
+ svnpath = os.path.join (svnbase, "extra", file)
+ if os.path.exists (svnpath):
+ newextra = os.listdir (newpath)
+ svnextra = os.listdir (svnpath)
+ for extra in newextra:
+ os.system ("cp %s %s" % (os.path.join (newpath, extra), svnpath))
+ if extra not in svnextra:
+ os.system ("svn add %s" % (os.path.join (svnpath, extra)))
+ print "added %s" % extra
+ else:
+ os.system ("cp -R %s %s" % (newpath, svnpath))
+ os.system ("svn add %s" % svnpath)
+ print "added %s" % svnpath
+
+files = ["configure.py", "*.prj", "svnm*"]
+
+for file in files:
+ os.system ("cp %s %s" % (os.path.join (newbase, file), os.path.join (svnbase, file))) \ No newline at end of file
diff --git a/python/pykde/svnmergedocs.py b/python/pykde/svnmergedocs.py
new file mode 100644
index 00000000..e77a908d
--- /dev/null
+++ b/python/pykde/svnmergedocs.py
@@ -0,0 +1,30 @@
+import os, os.path
+
+svnbase = "/home/jim/PyKDE/doc/classref"
+newbase = "/home/jim/PyKDE352/doc/classref"
+
+newfiles = os.listdir (newbase)
+
+for file in newfiles:
+ if os.path.isdir (file):
+ newpath = os.path.join (newbase, file)
+ svnpath = os.path.join (svnbase, file)
+ if os.path.exists (svnpath):
+ newdoc = os.listdir (newpath)
+ svndoc = os.listdir (svnpath)
+ for doc in newdoc:
+ os.system ("cp %s %s" % (os.path.join (newpath, doc), svnpath))
+ if doc not in svndoc:
+ os.system ("svn add %s" % (os.path.join (svnpath, doc)))
+ print "added %s" % doc
+ else:
+ os.system ("cp -R %s %s" % (newpath, svnpath))
+ os.system ("svn add %s" % svnpath)
+ else:
+ if os.path.exists (os.path.join (svnbase, file)):
+ os.system ("cp %s %s" % (os.path.join (newbase, file), svnbase))
+ else:
+ os.system ("cp %s %s" % (os.path.join (newbase, file), svnbase))
+ os.system ("svn add %s" % (os.path.join (svnbase, file)))
+
+ \ No newline at end of file
diff --git a/python/pykde/templates/annotated/basicapp.py b/python/pykde/templates/annotated/basicapp.py
new file mode 100644
index 00000000..04300b48
--- /dev/null
+++ b/python/pykde/templates/annotated/basicapp.py
@@ -0,0 +1,113 @@
+"""
+This is a minimal PyKDE app template - it constructs an application
+and a main window, but does nothing else.
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+import sys
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from kdeui import KMainWindow
+
+"""
+Most PyKDE applications will need a main window - the is the top
+level widget (the parent for all other widgets). KMainWindow has
+more functionality than shown here (see more complex templates).
+It has the ability to create the other major parts of the user
+interface - the main view, menus, toolbars, etc.
+
+Usually you provide a subclass of KMainWindow, construct menus
+and toolbars in the subclass' __init__ method, and provide
+slots for menu/toolbar actions in separate methods.
+"""
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+
+#-------------------- main ------------------------------------------------
+
+# set up some basic information about the program in
+# a KAboutData object - this affects the application's
+# title bar caption and makes it easy to set up a
+# Help | About dialog box for your app
+appName = "some app"
+programName = "some program"
+description = "A basic application template"
+license = KAboutData.License_GPL
+version = "1.0"
+copyright = "(C) 2003 whoever the author is"
+
+aboutData = KAboutData (appName, programName, version, description, license, copyright)
+
+# you can add the names of the app's authors here
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+# Pass the command line arguments and aboutData to
+# KCmdLineArgs - this is where KDE will look for
+# this information. The KApplication constructor
+# used below *requires* the args are processed
+# *before* KApplication is instantiated. There
+# is an alternate constructor that takes sys.argv
+# as an argument (see minimal.py)
+
+# Note that instead of argc/argv, this constructor
+# only takes a single argument - sys.argv - which
+# is a Python list
+KCmdLineArgs.init (sys.argv, aboutData)
+
+# Set up the command line options (switches) you
+# want your app to be able to process (you could
+# use Python's getopt module instead, but it works
+# a little differently)
+
+# Note that the argument for this method is a list
+# of tuples
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+# instantiate KApplication - no other QObject
+# or QWidget based classes can be instantiated
+# until there is a KApplication instance
+app = KApplication ()
+
+# instantiate the subclass of KMainWindow
+mainWindow = MainWin (None, "main window")
+
+# create the display
+mainWindow.show()
+
+# run KApplication's event loop until the
+# program exits
+app.exec_loop()
+
diff --git a/python/pykde/templates/annotated/menuapp1.py b/python/pykde/templates/annotated/menuapp1.py
new file mode 100644
index 00000000..8a634bf1
--- /dev/null
+++ b/python/pykde/templates/annotated/menuapp1.py
@@ -0,0 +1,270 @@
+"""
+This template constructs an application with menus, toolbar and statusbar,
+HOWEVER it is not recommended this template actually be used. It presents
+the "KDE 1.0" method for constructing menus and toolbars - later versions
+of KDE have introduced better (easier and more powerful) methods for
+doing this job - see other menuapp*.py templates for these methods
+"""
+
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KStdAccel, KIcon, KIconLoader
+from kdeui import KMainWindow, KMessageBox
+
+TOOLBAR_NEW = 1
+TOOLBAR_OPEN = 2
+TOOLBAR_SAVE = 3
+TOOLBAR_CUT = 4
+TOOLBAR_COPY = 5
+TOOLBAR_PASTE = 6
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initMenus ()
+ self.initToolBar ()
+ self.initStatusBar ()
+
+ def initMenus (self):
+ # Create a QPopupMenu - all menus are "popup" menus
+
+ fileMenu = QPopupMenu (self)
+
+ # This is the "simple" KDE-1.0 way. It is not suggested that this
+ # template actually be used in an application, but it's
+ # provided to show the underlying mechanics of menu construction
+ # that KDE makes much easier with other methods (see other
+ # menuapp*.py templates for usable examples)
+
+ # All menu item strings are wrapped with i18n - this allows
+ # internationalization
+
+ # Predefined accelerators are in KStdAccel - these are
+ # the standard accelerators. For custom accelerators, use
+ # KAccel. All KStdAccel methods are static, so there is no
+ # need to instantiate KStdAccel
+
+ # "File" menu items
+ fileMenu.insertItem (i18n ("New"), self.slotNew, KStdAccel.openNew ())
+ fileMenu.insertItem (i18n ("Open"), self.slotOpen, KStdAccel.open ())
+ fileMenu.insertSeparator ();
+ fileMenu.insertItem (i18n ("Save"), self.slotSave, KStdAccel.save ())
+
+ # KStdAccel doesn't have a standard accelerator for 'Save As',
+ # so we omit it - insertItem uses the default value
+
+ fileMenu.insertItem (i18n ("SaveAs"), self.slotSaveAs)
+
+ # This inserts a line between groups of items in a menu
+
+ fileMenu.insertSeparator ();
+
+ # Note the "KStdAccel.print_" has a trailing underscore, unlike the
+ # equivalent KDE method - the underscore is necessary to prevent a
+ # clash with the Python keyword 'print'
+
+ fileMenu.insertItem (i18n ("Print"), self.slotPrint, KStdAccel.print_ ())
+
+ fileMenu.insertSeparator ();
+ fileMenu.insertItem (i18n ("&Quit"), self.slotQuit, KStdAccel.quit ());
+
+ # Put fileMenu (as the File menu) into the menu bar
+ # 'menuBar' is a predefined object owned by KMainWindow
+
+ self.menuBar ().insertItem (i18n ("&File"), fileMenu)
+
+
+ editMenu = QPopupMenu (self)
+
+ # "Edit" menu items
+ editMenu.insertItem (i18n ("Undo"), self.slotUndo, KStdAccel.undo ())
+ editMenu.insertItem (i18n ("Redo"), self.slotRedo, KStdAccel.redo ())
+ editMenu.insertSeparator ();
+ editMenu.insertItem (i18n ("Cut"), self.slotCut, KStdAccel.cut ())
+ editMenu.insertItem (i18n ("Copy"), self.slotCopy, KStdAccel.copy ())
+ editMenu.insertItem (i18n ("Paste"), self.slotPaste, KStdAccel.paste ())
+ editMenu.insertSeparator ();
+ editMenu.insertItem (i18n ("Find"), self.slotFind, KStdAccel.find ())
+ editMenu.insertItem (i18n ("Find Next"), self.slotFindNext, KStdAccel.findNext ())
+ editMenu.insertItem (i18n ("Replace"), self.slotReplace, KStdAccel.replace ())
+
+ # Put editMenu (as the Edit menu) into the menu bar
+
+ self.menuBar ().insertItem (i18n ("&Edit"), editMenu)
+
+ # Let KDE generate a nifty help menu
+
+ # The KAboutData/KCmdLineArgs data from the main part of the program
+ # will be used to generate the About dialog
+
+ helpMenu = self.helpMenu ("")
+ self.menuBar ().insertItem (i18n ("&Help"), helpMenu)
+
+ def initToolBar (self):
+ # KIconLoader will make it easy to locate the standard KDE icons for
+ # toolbar buttons. For custom icons, a complete path to the icon
+ # (without the loadIcon call) is needed
+ icons = KIconLoader ()
+
+ # KMainWindow owns at least one KToolBar instance, which is returned
+ # by 'self.toolBar ()'. To obtain additional toolbars, add an argument
+ # to the call -- self.toolBar (1) will return another toolbar you can
+ # add buttons to.
+
+ # Add buttons to the toolbar. The icon name, id value (eg TOOLBAR_NEW),
+ # signal to connect (eg clicked) and the slot to connect to all need
+ # to be specified,as does the tooltip (the last string argument). There
+ # are easier ways to do this - see other menuapp templates for easier
+ # methods using KAction/KStdAction
+
+ self.toolBar ().insertButton (icons.loadIcon ("filenew", KIcon.Toolbar), TOOLBAR_NEW, SIGNAL ("clicked (int)"), self.slotNew,\
+ True, "New")
+ self.toolBar ().insertButton (icons.loadIcon ("fileopen", KIcon.Toolbar), TOOLBAR_OPEN, SIGNAL ("clicked (int)"), self.slotOpen,\
+ True, "Open")
+ self.toolBar ().insertButton (icons.loadIcon ("filesave", KIcon.Toolbar), TOOLBAR_SAVE, SIGNAL ("clicked (int)"), self.slotSave,\
+ True, "Save")
+ self.toolBar ().insertButton (icons.loadIcon ("editcut", KIcon.Toolbar), TOOLBAR_CUT, SIGNAL ("clicked (int)"), self.slotCut,\
+ True, "Cut")
+ self.toolBar ().insertButton (icons.loadIcon ("editcopy", KIcon.Toolbar), TOOLBAR_COPY, SIGNAL ("clicked (int)"), self.slotCopy,\
+ True, "Copy")
+ self.toolBar ().insertButton (icons.loadIcon ("editpaste", KIcon.Toolbar), TOOLBAR_PASTE, SIGNAL ("clicked (int)"), self.slotPaste,\
+ True, "Paste")
+
+ def initStatusBar (self):
+ # KMainWindow also owns a KStatusBar instance. The first
+ # call creates a KStatusBar instance. See 'notImpl' below
+ # for an example of writing to the status bar. You can
+ # also add widgets (labels, progress bars, etc) to the
+ # status bar
+
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+
+#-------------------- slots -----------------------------------------------
+
+ # Slots which can be called from both the menu toolbar
+ # have a second parameter with a default value (id = -1)
+ # This is because menu signals expect to connect to a
+ # slot that takes no arguments, while toolbar signals
+ # expect to send a signal with an int argument for the
+ # id of the toolbar button. The default value allows
+ # both cases to work.
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+# See athe minimal.py and basicapp.py templates for
+# explantion of the basic app and main window setup
+
+# The following data is passed to KCmdLineArgs, which in
+# turn makes it available to the "about" box in the Help
+# menu (when the Help menu is created as above)
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/templates/annotated/menuapp2.py b/python/pykde/templates/annotated/menuapp2.py
new file mode 100644
index 00000000..07523b86
--- /dev/null
+++ b/python/pykde/templates/annotated/menuapp2.py
@@ -0,0 +1,244 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses KDE classes and methods that simplify the task of building and
+operating a GUI. It is recommended that this approach be used, rather
+than the primitive approach in menuapp1.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ # Create the actions that will populate
+ # the menus and toolbars
+ self.initActions ()
+
+ # Plug actions into menus
+ self.initMenus ()
+
+ # Plug actions into toolbars
+ self.initToolBar ()
+
+ # Create the status bar
+ self.initStatusBar ()
+
+ # Usings actions, only a single line is required
+ # to enable/disable both the menu item and corresponding
+ # toolbar button from anywhere in the program
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # Most of the functions selectable by menu are "standard"
+ # actions (open a file, cut, paste, etc) - you customize
+ # how they behave in your code, but menu, toolbar, and
+ # accelerator settings are the same across all programs.
+ # Standard actions also have tooltips already assigned
+
+ # To create most of the actions below, KStdAction is
+ # is used, since it takes care of everything with
+ # a single line of code.
+
+ # The standard actions only need to specify the slot
+ # where the code for the action is located
+
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew)
+ self.openAction = KStdAction.open (self.slotOpen)
+ self.saveAction = KStdAction.save (self.slotSave)
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs)
+ self.printAction = KStdAction.print_ (self.slotPrint)
+ self.quitAction = KStdAction.quit (self.slotQuit)
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo)
+ self.redoAction = KStdAction.redo (self.slotRedo)
+ self.cutAction = KStdAction.cut (self.slotCut)
+ self.copyAction = KStdAction.copy (self.slotCopy)
+ self.pasteAction = KStdAction.paste (self.slotPaste)
+ self.findAction = KStdAction.find (self.slotFind)
+ self.findNextAction = KStdAction.findNext (self.slotFindNext)
+ self.replaceAction = KStdAction.replace (self.slotReplace)
+
+ # For actions that are not "standard", you can create your
+ # own actions using KAction. This example doesn't include
+ # an icon, but there is a KAction constructor that will
+ # allow you to specify an icon (for toolbar use, for instance),
+ # or you can use KAction.setIcon to set/change the icon. You
+ # can also add a tooltip with KAction.setToolTip
+
+ # This KAction constructor requires a QString, an accelerator (0
+ # in this case), a slot, and a QObject (None in this case)
+
+ self.specialAction = KAction (i18n ("Special"), 0, self.slotSpecial, None)
+
+ def initMenus (self):
+ # plug the actions into the menus
+
+ fileMenu = QPopupMenu (self)
+ self.newAction.plug (fileMenu)
+ self.openAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.saveAction.plug (fileMenu)
+ self.saveAsAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.printAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.quitAction.plug (fileMenu)
+ self.menuBar ().insertItem (i18n ("&File"), fileMenu)
+
+ editMenu = QPopupMenu (self)
+ self.undoAction.plug (editMenu)
+ self.redoAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.cutAction.plug (editMenu)
+ self.copyAction.plug (editMenu)
+ self.pasteAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.findAction.plug (editMenu)
+ self.findNextAction.plug (editMenu)
+ self.replaceAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.specialAction.plug (editMenu)
+ self.menuBar ().insertItem (i18n ("&Edit"), editMenu)
+
+ # Uses the info from KAboutData (specified below)
+ # to construct the "About" box in the Help menu
+
+ helpMenu = self.helpMenu ("")
+ self.menuBar ().insertItem (i18n ("&Help"), helpMenu)
+
+ def initToolBar (self):
+ # Add some (but not all) actions to the toolbar
+
+ self.newAction.plug (self.toolBar ())
+ self.openAction.plug (self.toolBar ())
+ self.saveAction.plug (self.toolBar ())
+ self.cutAction.plug (self.toolBar ())
+ self.copyAction.plug (self.toolBar ())
+ self.pasteAction.plug (self.toolBar ())
+
+ def initStatusBar (self):
+ # Initialize the status bar
+
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/templates/annotated/menuapp3.py b/python/pykde/templates/annotated/menuapp3.py
new file mode 100644
index 00000000..1935ce59
--- /dev/null
+++ b/python/pykde/templates/annotated/menuapp3.py
@@ -0,0 +1,209 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses an XML file (menuapp3ui.rc) to specify the menu layout; all menu
+items have a corresponding action defined, but no menus are created
+explicitly in code. This app has the same menu layout as menuapp2.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction, KActionCollection
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ # Create actions that correspond to those in the XML file
+ self.initActions ()
+
+ # Parse the default XML file (<appName>ui.rc> and create
+ # the menus and toolbar. This single line (and the XML
+ # file it reads) replace initMenus and initToolBar from
+ # menuapp2.py. Otherwise, the menuapp2 and menuapp3
+ # are identical 'createGUI' expects to find 'menuapp3ui.rc'
+ # either in the directory menuapp3.py is run from, or
+ # in $KDEDIR/apps/menuapp3/
+ self.createGUI ()
+
+ # Create the status bar
+ self.initStatusBar ()
+
+ # Disable a couple of menu items using their actions
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # Most of the functions selectable by menu are "standard"
+ # actions (open a file, cut, paste, etc) - you customize
+ # how they behave in your code, but menu, toolbar, and
+ # accelerator settings are the same across all programs.
+ # Standard actions also have tooltips already assigned
+
+ # To create most of the actions below, KStdAction is
+ # is used, since it takes care of everything with
+ # a single line of code.
+
+ # The standard actions only need to specify the slot
+ # where the code for the action is located
+
+ # Because the XMLGUI mechanism parses $KDEDIR/config/ui/ui_standards.rc
+ # before parsing and merging menuapp3ui.rc, it actually isn't
+ # necessary to list KStdAction actions in menuapp3.rc. THE XMLGUI
+ # code will create menu/toolbar items and place them *automatically*
+ # if you defined the KStdActions as below. In fact, you can't override
+ # this behavior using KStdActions - if you want menus to be "non-standard"
+ # KDE menus (eg 'Cut' in the 'File' menu), you'll need to create your
+ # actions from KAction instead of KStdAction. Obviously it makes more
+ # sense to use the mechanism provided to produce consistent menus and
+ # toolbars. You can "unplug" items if, for example, you don't want them
+ # in the toolBar.
+
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew, self.actionCollection ())
+ self.openAction = KStdAction.open (self.slotOpen, self.actionCollection ())
+ self.saveAction = KStdAction.save (self.slotSave, self.actionCollection ())
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, self.actionCollection ())
+ self.printAction = KStdAction.print_ (self.slotPrint, self.actionCollection ())
+ self.quitAction = KStdAction.quit (self.slotQuit, self.actionCollection ())
+
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo, self.actionCollection ())
+ self.redoAction = KStdAction.redo (self.slotRedo, self.actionCollection ())
+ self.cutAction = KStdAction.cut (self.slotCut, self.actionCollection ())
+ self.copyAction = KStdAction.copy (self.slotCopy, self.actionCollection ())
+ self.pasteAction = KStdAction.paste (self.slotPaste, self.actionCollection ())
+ self.findAction = KStdAction.find (self.slotFind, self.actionCollection ())
+ self.findNextAction = KStdAction.findNext (self.slotFindNext, self.actionCollection ())
+ self.replaceAction = KStdAction.replace (self.slotReplace, self.actionCollection ())
+
+ # For ANYTHING constructed from KAction or its descendants (KActionMenu, KActionSeparator,
+ # KFontAction, etc) you MUST provide the self.actionCollection () parent and an object
+ # name ("specialActionName") or the XMLGUI mechanism will not be able to locate the
+ # action. XMLGUI finds the action via its member name value, NOT via its variable name.
+ self.specialAction = KAction (i18n ("Special"), 0, self.slotSpecial, self.actionCollection (), "specialActionName")
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+
+# To use the XMLGUI mechanism, you MUST provide an appName
+# (the first argument to KAboutData below) - the XML spec
+# for the interface will be in <appName>ui.rc (don't forget
+# the "ui" suffix to the application name)
+aboutData = KAboutData ("menuapp3", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
+
diff --git a/python/pykde/templates/annotated/menuapp3ui.rc b/python/pykde/templates/annotated/menuapp3ui.rc
new file mode 100644
index 00000000..60120e21
--- /dev/null
+++ b/python/pykde/templates/annotated/menuapp3ui.rc
@@ -0,0 +1,24 @@
+<!DOCTYPE kpartgui>
+<kpartgui name = "menuapp3">
+<MenuBar>
+ <Menu name="file"><text>&amp;File</text>
+ <Action name ="newAction"/>
+ <Action name ="openAction"/>
+ <Action name ="saveAction"/>
+ <Action name ="saveAsAction"/>
+ <Action name ="printAction"/>
+ <Action name ="quitAction"/>
+ </Menu>
+ <Menu name = "edit"><text>&amp;Edit</text>
+ <Action name ="undoAction"/>
+ <Action name ="redoAction"/>
+ <Action name ="cutAction"/>
+ <Action name ="copyAction"/>
+ <Action name ="pasteAction"/>
+ <Action name ="findAction"/>
+ <Action name ="findNextAction"/>
+ <Action name ="replaceAction"/>
+ <Action name ="specialActionName"/>
+ </Menu>
+</MenuBar>
+</kpartgui> \ No newline at end of file
diff --git a/python/pykde/templates/annotated/minimal.py b/python/pykde/templates/annotated/minimal.py
new file mode 100644
index 00000000..a3e87c8a
--- /dev/null
+++ b/python/pykde/templates/annotated/minimal.py
@@ -0,0 +1,75 @@
+"""
+This is a minimal PyKDE app template - it constructs an application
+and a main window, but does nothing else.
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from kdecore import KApplication
+from kdeui import KMainWindow
+
+
+"""
+Most PyKDE applications will need a main window - the is the top
+level widget (the parent for all other widgets). KMainWindow has
+more functionality than shown here (see more complex templates).
+It has the ability to create the other major parts of the user
+interface - the main view, menus, toolbars, etc.
+
+Usually you provide a subclass of KMainWindow, construct menus
+and toolbars in the subclass' __init__ method, and provide
+slots for menu/toolbar actions in separate methods.
+"""
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+
+#-------------------- main ------------------------------------------------
+
+# instantiate KApplication - no other QObject
+# or QWidget based classes can be instantiated
+# until there is a KApplication instance
+appName = "template"
+app = KApplication (sys.argv, appName)
+
+# instantiate the subclass of KMainWindow
+mainWindow = MainWin (None, "main window")
+
+# create the display
+mainWindow.show()
+
+# run KApplication's event loop until the
+# program exits
+app.exec_loop()
+
+
diff --git a/python/pykde/templates/annotated/panelapplet.py b/python/pykde/templates/annotated/panelapplet.py
new file mode 100644
index 00000000..009ee56b
--- /dev/null
+++ b/python/pykde/templates/annotated/panelapplet.py
@@ -0,0 +1,64 @@
+"""
+A basic panel applet template - working examples are in the
+pykpanelapplet/ directory
+"""
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+from kdeui import PyKPanelApplet, KPanelApplet
+
+
+# Any panel applet written in Python must include THIS "factory" function
+# The name must be createApplet, and it must take the two args shown; it
+# must return a PyKPanelApplet subclass
+
+# Change "PanelAppletName" to something meaningful here and in the class
+# declaration
+def createApplet (parent, configFile):
+ return PanelAppletName (configFile, KPanelApplet.Normal, 0, parent, "nameMe")
+
+
+# Define the PyKPanelApplet subclass in a fashion similar to this
+# (PyKPanelApplet is a subclass of KPanelApplet, and exposes all of
+# KPanelApplet's methods)
+
+# You can change the arg list for __init__ as needed (and make the corresponding
+# change in the call in createApplet), as long as you have the basic info
+# needed to call PyKPanelApplet.__init__
+class PanelAppletName (PyKPanelApplet):
+ def __init__ (self, configFile, t, actions, parent, name, f = 0):
+ PyKPanelApplet.__init__ (self, configFile, t, actions, parent, name, f)
+
+# Change these methods to have kicker size your applet appropriately
+# As written, they provide a square applet window
+ def widthForHeight (self, h):
+ return h
+
+ def heightForWidth (self, w ):
+ return w
diff --git a/python/pykde/templates/annotated/systray.py b/python/pykde/templates/annotated/systray.py
new file mode 100644
index 00000000..41dc62a2
--- /dev/null
+++ b/python/pykde/templates/annotated/systray.py
@@ -0,0 +1,82 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QWidget, SIGNAL
+from kdecore import KApplication, KIcon, KIconLoader
+from kdeui import KSystemTray
+
+"""
+Typically an application's "main window" will be a KMainWindow or
+a subclass of KMainWindow (KMainWindow provides simple mechanisms
+for constructing mens, toolbars, statusbars, etc). The problem with
+using KMainWindow in a System Tray application is that when
+KMainWindow is closed, it also shuts down KApplication and the
+program terminates.
+
+One way around that (not necessarily the best way - see systray1.py)
+is to make the "main window" a QWidget or other QWidget subclass
+that's not KMainWindow.
+"""
+
+class MainWin (QWidget):
+ def __init__ (self, *args):
+ apply (QWidget.__init__, (self,) + args)
+
+#-------------------- main ------------------------------------------------
+
+# This slot receives the "quitSelected ()" signal that's emitted
+# when the user right clicks the icon in the system tray and
+# selects "Quit" from the popup menu
+def slotQuitSelected ():
+ KApplication.kApplication ().quit ()
+
+# The usual stuff
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+
+# System tray apps need an icon
+icons = KIconLoader ()
+
+# The KSystemTray widget shows or hides it's parent widget
+# when clicked, so parent needs to be the main window
+systray = KSystemTray (mainWindow)
+
+systray.setPixmap (icons.loadIcon("stop", KIcon.Desktop))
+systray.connect (systray, SIGNAL ("quitSelected ()"), slotQuitSelected)
+systray.show ()
+
+# Comment this out if you don't want the main window to show
+# immediately when the application loads
+mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pykde/templates/annotated/systray1.py b/python/pykde/templates/annotated/systray1.py
new file mode 100644
index 00000000..99b7f03a
--- /dev/null
+++ b/python/pykde/templates/annotated/systray1.py
@@ -0,0 +1,87 @@
+"""
+A basic system tray application - you can combine this with code from
+menuapp2.py or menuapp3.py to quickly build a full-blown application
+framework.
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QLabel, QWidget, SIGNAL
+from kdecore import KApplication, KIcon, KIconLoader
+from kdeui import KMainWindow, KSystemTray
+
+# This template uses KMainWindow as the main window widget
+# It solves the problem described in systray.py by using
+# a flag to control the return value from queryClose - if
+# :quit" is signalled from anywhere EXCEPT the system tray
+# icon's menu, self.exitFlag == False, and as the return
+# value for queryClose, it stops the application from shutting
+# down; if self.exitFlag is True, the application shuts down
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.exitFlag = False
+
+ icons = KIconLoader ()
+
+ # KSystemTray hides or shows its parent when the system tray icon is clicked
+ self.systray = KSystemTray (self)
+ self.systray.setPixmap (icons.loadIcon("stop", KIcon.Desktop))
+ self.systray.connect (self.systray, SIGNAL ("quitSelected ()"), self.slotQuitSelected)
+ self.systray.show ()
+
+ # Controls whether or not the application really exits
+ def queryClose (self):
+ self.hide ()
+ return self.exitFlag
+
+ # Receives the signal emitted when the user selects Quit from the
+ # system tray icon's menu
+ def slotQuitSelected (self):
+ self.exitFlag = True
+ KApplication.kApplication ().quit ()
+
+#-------------------- main ------------------------------------------------
+
+# The usual stuff - you can also use the KAboutData/KCmdLineArgs version
+# for program startup used in other templates - the KApplication constructor
+# used here may be obsoleted eventually
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+
+mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pykde/templates/basic/basicapp.py b/python/pykde/templates/basic/basicapp.py
new file mode 100644
index 00000000..2146f637
--- /dev/null
+++ b/python/pykde/templates/basic/basicapp.py
@@ -0,0 +1,58 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import SIGNAL
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from kdeui import KMainWindow
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ KMainWindow.__init__ (self)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.connect (app, SIGNAL ("lastWindowClosed ()"), app.quit)
+app.exec_loop()
diff --git a/python/pykde/templates/basic/menuapp1.py b/python/pykde/templates/basic/menuapp1.py
new file mode 100644
index 00000000..a482c2a2
--- /dev/null
+++ b/python/pykde/templates/basic/menuapp1.py
@@ -0,0 +1,194 @@
+"""
+This template constructs an application with menus, toolbar and statusbar,
+HOWEVER it is not recommended this template actually be used. It presents
+the "KDE 1.0" method for constructing menus and toolbars - later versions
+of KDE have introduced better (easier and more powerful) methods for
+doing this job - see other menuapp*.py templates for these methods
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KStdAccel, KIcon, KIconLoader
+from kdeui import KMainWindow, KMessageBox
+
+TOOLBAR_NEW = 1
+TOOLBAR_OPEN = 2
+TOOLBAR_SAVE = 3
+TOOLBAR_CUT = 4
+TOOLBAR_COPY = 5
+TOOLBAR_PASTE = 6
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initMenus ()
+ self.initToolBar ()
+ self.initStatusBar ()
+
+ def initMenus (self):
+ fileMenu = QPopupMenu (self)
+
+ # "File" menu items
+ fileMenu.insertItem (i18n ("New"), self.slotNew, KStdAccel.openNew ().keyCodeQt ())
+ fileMenu.insertItem (i18n ("Open"), self.slotOpen, KStdAccel.open ().keyCodeQt ())
+ fileMenu.insertSeparator ();
+ fileMenu.insertItem (i18n ("Save"), self.slotSave, KStdAccel.save ().keyCodeQt ())
+ fileMenu.insertItem (i18n ("SaveAs"), self.slotSaveAs)
+ fileMenu.insertSeparator ();
+ fileMenu.insertItem (i18n ("Print"), self.slotPrint, KStdAccel.print_ ().keyCodeQt ())
+ fileMenu.insertSeparator ();
+ fileMenu.insertItem (i18n ("&Quit"), self.slotQuit, KStdAccel.quit ().keyCodeQt ());
+
+ self.menuBar ().insertItem (i18n ("&File"), fileMenu)
+
+ editMenu = QPopupMenu (self)
+
+ # "Edit" menu items
+ editMenu.insertItem (i18n ("Undo"), self.slotUndo, KStdAccel.undo ().keyCodeQt ())
+ editMenu.insertItem (i18n ("Redo"), self.slotRedo, KStdAccel.redo ().keyCodeQt ())
+ editMenu.insertSeparator ();
+ editMenu.insertItem (i18n ("Cut"), self.slotCut, KStdAccel.cut ().keyCodeQt ())
+ editMenu.insertItem (i18n ("Copy"), self.slotCopy, KStdAccel.copy ().keyCodeQt ())
+ editMenu.insertItem (i18n ("Paste"), self.slotPaste, KStdAccel.paste ().keyCodeQt ())
+ editMenu.insertSeparator ();
+ editMenu.insertItem (i18n ("Find"), self.slotFind, KStdAccel.find ().keyCodeQt ())
+ editMenu.insertItem (i18n ("Find Next"), self.slotFindNext, KStdAccel.findNext ().keyCodeQt ())
+ editMenu.insertItem (i18n ("Replace"), self.slotReplace, KStdAccel.replace ().keyCodeQt ())
+
+ self.menuBar ().insertItem (i18n ("&Edit"), editMenu)
+
+ helpMenu = self.helpMenu ("")
+ self.menuBar ().insertItem (i18n ("&Help"), helpMenu)
+
+ def initToolBar (self):
+ icons = KIconLoader ()
+
+ self.toolBar ().insertButton (icons.loadIcon ("filenew", KIcon.Toolbar), TOOLBAR_NEW, SIGNAL ("clicked (int)"), self.slotNew,\
+ True, "New")
+ self.toolBar ().insertButton (icons.loadIcon ("fileopen", KIcon.Toolbar), TOOLBAR_OPEN, SIGNAL ("clicked (int)"), self.slotOpen,\
+ True, "Open")
+ self.toolBar ().insertButton (icons.loadIcon ("filesave", KIcon.Toolbar), TOOLBAR_SAVE, SIGNAL ("clicked (int)"), self.slotSave,\
+ True, "Save")
+ self.toolBar ().insertButton (icons.loadIcon ("editcut", KIcon.Toolbar), TOOLBAR_CUT, SIGNAL ("clicked (int)"), self.slotCut,\
+ True, "Cut")
+ self.toolBar ().insertButton (icons.loadIcon ("editcopy", KIcon.Toolbar), TOOLBAR_COPY, SIGNAL ("clicked (int)"), self.slotCopy,\
+ True, "Copy")
+ self.toolBar ().insertButton (icons.loadIcon ("editpaste", KIcon.Toolbar), TOOLBAR_PASTE, SIGNAL ("clicked (int)"), self.slotPaste,\
+ True, "Paste")
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/templates/basic/menuapp2.py b/python/pykde/templates/basic/menuapp2.py
new file mode 100644
index 00000000..394eca80
--- /dev/null
+++ b/python/pykde/templates/basic/menuapp2.py
@@ -0,0 +1,200 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses KDE classes and methods that simplify the task of building and
+operating a GUI. It is recommended that this approach be used, rather
+than the primitive approach in menuapp1.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KShortcut
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initActions ()
+ self.initMenus ()
+ self.initToolBar ()
+ self.initStatusBar ()
+
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew, self.actionCollection ())
+ self.openAction = KStdAction.open (self.slotOpen, self.actionCollection ())
+ self.saveAction = KStdAction.save (self.slotSave, self.actionCollection ())
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, self.actionCollection ())
+ self.printAction = KStdAction.print_ (self.slotPrint, self.actionCollection ())
+ self.quitAction = KStdAction.quit (self.slotQuit, self.actionCollection ())
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo, self.actionCollection ())
+ self.redoAction = KStdAction.redo (self.slotRedo, self.actionCollection ())
+ self.cutAction = KStdAction.cut (self.slotCut, self.actionCollection ())
+ self.copyAction = KStdAction.copy (self.slotCopy, self.actionCollection ())
+ self.pasteAction = KStdAction.paste (self.slotPaste, self.actionCollection ())
+ self.findAction = KStdAction.find (self.slotFind, self.actionCollection ())
+ self.findNextAction = KStdAction.findNext (self.slotFindNext, self.actionCollection ())
+ self.replaceAction = KStdAction.replace (self.slotReplace, self.actionCollection ())
+ self.specialAction = KAction (i18n ("Special"), KShortcut.null (), self.slotSpecial, self.actionCollection (), None)
+
+ def initMenus (self):
+ fileMenu = QPopupMenu (self)
+ self.newAction.plug (fileMenu)
+ self.openAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.saveAction.plug (fileMenu)
+ self.saveAsAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.printAction.plug (fileMenu)
+ fileMenu.insertSeparator ()
+ self.quitAction.plug (fileMenu)
+ self.menuBar ().insertItem (i18n ("&File"), fileMenu)
+
+ editMenu = QPopupMenu (self)
+ self.undoAction.plug (editMenu)
+ self.redoAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.cutAction.plug (editMenu)
+ self.copyAction.plug (editMenu)
+ self.pasteAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.findAction.plug (editMenu)
+ self.findNextAction.plug (editMenu)
+ self.replaceAction.plug (editMenu)
+ editMenu.insertSeparator ()
+ self.specialAction.plug (editMenu)
+ self.menuBar ().insertItem (i18n ("&Edit"), editMenu)
+
+ helpMenu = self.helpMenu ("")
+ self.menuBar ().insertItem (i18n ("&Help"), helpMenu)
+
+ def initToolBar (self):
+ self.newAction.plug (self.toolBar ())
+ self.openAction.plug (self.toolBar ())
+ self.saveAction.plug (self.toolBar ())
+ self.cutAction.plug (self.toolBar ())
+ self.copyAction.plug (self.toolBar ())
+ self.pasteAction.plug (self.toolBar ())
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
diff --git a/python/pykde/templates/basic/menuapp3.py b/python/pykde/templates/basic/menuapp3.py
new file mode 100644
index 00000000..e729d6d1
--- /dev/null
+++ b/python/pykde/templates/basic/menuapp3.py
@@ -0,0 +1,162 @@
+"""
+This template constructs an application with menus, toolbar and statusbar.
+It uses an XML file (menuapp3ui.rc) to specify the menu layout; all menu
+items have a corresponding action defined, but no menus are created
+explicitly in code. This app has the same menu layout as menuapp2.py
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+False = 0
+True = not False
+
+
+import sys
+
+from qt import QPopupMenu, SIGNAL
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KShortcut
+from kdeui import KMainWindow, KMessageBox, KStdAction, KAction, KActionCollection
+
+STATUSBAR_LEFT = 1
+STATUSBAR_MIDDLE = 2
+STATUSBAR_RIGHT = 3
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.initActions ()
+ self.createGUI ()
+ self.initStatusBar ()
+
+ self.saveAction.setEnabled (False)
+ self.saveAsAction.setEnabled (False)
+
+ def initActions (self):
+ # "File" menu items
+ self.newAction = KStdAction.openNew (self.slotNew, self.actionCollection ())
+ self.openAction = KStdAction.open (self.slotOpen, self.actionCollection ())
+ self.saveAction = KStdAction.save (self.slotSave, self.actionCollection ())
+ self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, self.actionCollection ())
+ self.printAction = KStdAction.print_ (self.slotPrint, self.actionCollection ())
+ self.quitAction = KStdAction.quit (self.slotQuit, self.actionCollection ())
+
+
+ # "Edit" menu items
+ self.undoAction = KStdAction.undo (self.slotUndo, self.actionCollection ())
+ self.redoAction = KStdAction.redo (self.slotRedo, self.actionCollection ())
+ self.cutAction = KStdAction.cut (self.slotCut, self.actionCollection ())
+ self.copyAction = KStdAction.copy (self.slotCopy, self.actionCollection ())
+ self.pasteAction = KStdAction.paste (self.slotPaste, self.actionCollection ())
+ self.findAction = KStdAction.find (self.slotFind, self.actionCollection ())
+ self.findNextAction = KStdAction.findNext (self.slotFindNext, self.actionCollection ())
+ self.replaceAction = KStdAction.replace (self.slotReplace, self.actionCollection ())
+ self.specialAction = KAction (i18n ("Special"), KShortcut.null (), self.slotSpecial, self.actionCollection (), "specialActionName")
+
+ def initStatusBar (self):
+ self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
+ self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
+
+#-------------------- slots -----------------------------------------------
+
+ def slotNew (self, id = -1):
+ self.notImpl ("New")
+
+ def slotOpen(self, id = -1):
+ self.notImpl ("Open")
+
+ def slotSave (self, id = -1):
+ self.notImpl ("Save")
+
+ def slotSaveAs (self):
+ self.notImpl ("Save As")
+
+ def slotPrint (self):
+ self.notImpl ("Print")
+
+ def slotQuit (self):
+ self.notImpl ("Quit")
+
+ def slotUndo (self):
+ self.notImpl ("Undo")
+
+ def slotRedo (self):
+ self.notImpl ("Redo")
+
+ def slotCut (self, id = -1):
+ self.notImpl ("Cut")
+
+ def slotCopy (self, id = -1):
+ self.notImpl ("Copy")
+
+ def slotPaste (self, id = -1):
+ self.notImpl ("Paste")
+
+ def slotFind (self):
+ self.notImpl ("Find")
+
+ def slotFindNext (self):
+ self.notImpl ("Find Next")
+
+ def slotReplace (self):
+ self.notImpl ("Replace")
+
+ def slotSpecial (self):
+ self.notImpl ("Special")
+
+ def notImpl (self, item = "Feature"):
+ self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
+ KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
+ self.statusBar ().changeItem ("", STATUSBAR_LEFT)
+
+
+#-------------------- main ------------------------------------------------
+
+description = "A basic application template"
+version = "1.0"
+aboutData = KAboutData ("menuapp3", "",\
+ version, description, KAboutData.License_GPL,\
+ "(C) 2003 whoever the author is")
+
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+KCmdLineArgs.init (sys.argv, aboutData)
+
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+app = KApplication ()
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
+
diff --git a/python/pykde/templates/basic/menuapp3ui.rc b/python/pykde/templates/basic/menuapp3ui.rc
new file mode 100644
index 00000000..60120e21
--- /dev/null
+++ b/python/pykde/templates/basic/menuapp3ui.rc
@@ -0,0 +1,24 @@
+<!DOCTYPE kpartgui>
+<kpartgui name = "menuapp3">
+<MenuBar>
+ <Menu name="file"><text>&amp;File</text>
+ <Action name ="newAction"/>
+ <Action name ="openAction"/>
+ <Action name ="saveAction"/>
+ <Action name ="saveAsAction"/>
+ <Action name ="printAction"/>
+ <Action name ="quitAction"/>
+ </Menu>
+ <Menu name = "edit"><text>&amp;Edit</text>
+ <Action name ="undoAction"/>
+ <Action name ="redoAction"/>
+ <Action name ="cutAction"/>
+ <Action name ="copyAction"/>
+ <Action name ="pasteAction"/>
+ <Action name ="findAction"/>
+ <Action name ="findNextAction"/>
+ <Action name ="replaceAction"/>
+ <Action name ="specialActionName"/>
+ </Menu>
+</MenuBar>
+</kpartgui> \ No newline at end of file
diff --git a/python/pykde/templates/basic/minimal.py b/python/pykde/templates/basic/minimal.py
new file mode 100644
index 00000000..72ff3bea
--- /dev/null
+++ b/python/pykde/templates/basic/minimal.py
@@ -0,0 +1,48 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from kdecore import KApplication
+from kdeui import KMainWindow
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+
+#-------------------- main ------------------------------------------------
+
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pykde/templates/basic/panelapplet.py b/python/pykde/templates/basic/panelapplet.py
new file mode 100644
index 00000000..4ac8016f
--- /dev/null
+++ b/python/pykde/templates/basic/panelapplet.py
@@ -0,0 +1,49 @@
+"""
+A basic panel applet template - working examples are in the
+pykpanelapplet/ directory
+"""
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+from kdeui import PyKPanelApplet, KPanelApplet
+
+
+def createApplet (parent, configFile):
+ return PanelAppletName (configFile, KPanelApplet.Normal, 0, parent, "nameMe")
+
+
+class PanelAppletName (PyKPanelApplet):
+ def __init__ (self, configFile, t, actions, parent, name, f = 0):
+ PyKPanelApplet.__init__ (self, configFile, t, actions, parent, name, f)
+
+ def widthForHeight (self, h):
+ return h
+
+ def heightForWidth (self, w ):
+ return w
diff --git a/python/pykde/templates/basic/systray.py b/python/pykde/templates/basic/systray.py
new file mode 100644
index 00000000..1363dac7
--- /dev/null
+++ b/python/pykde/templates/basic/systray.py
@@ -0,0 +1,61 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QWidget, SIGNAL
+from kdecore import KApplication, KIcon, KIconLoader
+from kdeui import KSystemTray
+
+
+class MainWin (QWidget):
+ def __init__ (self, *args):
+ apply (QWidget.__init__, (self,) + args)
+
+#-------------------- main ------------------------------------------------
+
+def slotQuitSelected ():
+ KApplication.kApplication ().quit ()
+
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+
+icons = KIconLoader ()
+
+systray = KSystemTray (mainWindow)
+
+systray.setPixmap (icons.loadIcon("stop", KIcon.Desktop))
+systray.connect (systray, SIGNAL ("quitSelected ()"), slotQuitSelected)
+systray.show ()
+
+mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pykde/templates/basic/systray1.py b/python/pykde/templates/basic/systray1.py
new file mode 100644
index 00000000..bd5da9d4
--- /dev/null
+++ b/python/pykde/templates/basic/systray1.py
@@ -0,0 +1,67 @@
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+import sys
+
+from qt import QLabel, QWidget, SIGNAL
+from kdecore import KApplication, KIcon, KIconLoader
+from kdeui import KMainWindow, KSystemTray
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+ self.exitFlag = False
+
+ icons = KIconLoader ()
+
+ self.systray = KSystemTray (self)
+ self.systray.setPixmap (icons.loadIcon("stop", KIcon.Desktop))
+ self.systray.connect (self.systray, SIGNAL ("quitSelected ()"), self.slotQuitSelected)
+ self.systray.show ()
+
+ def queryClose (self):
+ self.hide ()
+ return self.exitFlag
+
+ def slotQuitSelected (self):
+ self.exitFlag = True
+ KApplication.kApplication ().quit ()
+
+#-------------------- main ------------------------------------------------
+
+
+appName = "template"
+app = KApplication (sys.argv, appName)
+mainWindow = MainWin (None, "main window")
+
+mainWindow.show()
+app.exec_loop()
+
+
diff --git a/python/pyqt/ChangeLog b/python/pyqt/ChangeLog
new file mode 100644
index 00000000..e9933799
--- /dev/null
+++ b/python/pyqt/ChangeLog
@@ -0,0 +1,3223 @@
+2007/04/25 12:25:19 phil
+Released as v3.17.2.
+
+
+2007/04/21 14:13:36 phil
+Backed out the recent change to remove the /ReleaseGIL/ from
+QApplication.postEvent() as it turns out it avoids a potential deadlock.
+
+
+2007/04/10 16:13:51 phil
+Released as v3.17.1.
+
+
+2007/04/02 15:27:03 phil
+Updated the NEWS file.
+SIP v4.6 is now required.
+The QLayoutItem sub-class code no longer handles QLayout and leaves it to the
+QObject sub-class code to deal with.
+
+
+2007/02/20 10:58:40 phil
+Removed the unneeded /ReleaseGIL/ from QApplication::postEvent().
+Removed the GIL manipulation in QCustomEvent (in particular in the traverse
+code).
+
+
+2007/01/27 16:02:18 phil
+Removed knowledge of the optional parts of the Qt support API so that it is no
+longer necessary to update PyQt when new optional parts are added.
+
+
+2007/01/27 15:37:47 phil
+Updated the Qt support API for the latest SIP.
+
+
+2007/01/21 16:29:15 phil
+Implemented sipQtFindConnection() so that lambda slots can be handled by the
+cyclic garbage collector.
+
+
+2007/01/17 16:58:32 phil
+Updated the copyright notices.
+
+
+2006/11/30 20:58:48 phil
+Fixed bug in QApplication ctor handwritten code that caused a crash if a
+QApplication was created a second time with no arguments.
+
+
+2006/11/04 22:08:33 phil
+Released as v3.17.
+
+
+2006/10/27 17:13:44 phil
+Updated the news file.
+
+
+2006/10/21 14:10:23 phil
+Switched the internal build system to Qt v3.3.7.
+
+
+2006/10/06 17:44:27 phil
+Synched with the latest QScintilla1 API.
+
+
+2006/09/09 17:59:52 phil
+Added QextScintilla.setFont().
+The internal build system now uses -j2.
+
+
+2006/09/02 13:35:03 phil
+Removed the use of -c in the internal build systems invocation of configure.py
+as it causes problems for GCC v4.
+
+
+2006/08/17 9:36:39 phil
+Added the missing QListView.setSelectionAnchor().
+
+
+2006/07/30 17:16:35 phil
+Updated for the latest QScintilla v1 snapshot.
+
+
+2006/07/19 23:30:28 phil
+Some tweaks for Windows64 support based on patches from Gerard.
+
+
+2006/07/16 12:38:36 phil
+Adapted the handwritten code for Python v2.5.
+
+
+2006/07/08 19:25:44 phil
+Added QextScintilla.isCallTipActive().
+
+
+2006/07/03 19:40:22 phil
+Added pyqt_config_args to pyqtconfig.py.
+Fixed QTextEdit.setAutoFormatting().
+
+
+2006/07/02 14:28:05 phil
+Added setWrapVisualFlags(), WrapMode::WrapCharacter, WrapVisualFlag to
+QextScintilla.
+
+
+2006/07/01 18:57:30 phil
+Added cancelList(), firstVisibleLine(), isListActive(), showUserList(),
+textHeight() and userListActivated() to QextScintilla.
+
+
+2006/06/28 22:12:57 phil
+QextScintilla.foldAll() can now optionally fold all child fold points.
+Added autoCompleteFromAll() and setAutoCompletionStartCharacters() to
+QextScintilla.
+Added AcsAll as an auto-completion source.
+
+
+2006/06/25 21:52:03 phil
+Added defaultColor() and setDefaultColor() to QextScintillaLexer.
+Added color() and setColor() to QextScintilla.
+Renamed eraseColor() and setEraseColor() to paper() and setPaper() in
+QextScintilla.
+
+
+2006/06/25 16:21:32 phil
+Added defaultPaper() and setDefaultPaper() to QextScintillaLexer.
+Added eraseColor() and setEraseColor() to QextScintilla.
+
+
+2006/06/22 19:29:38 phil
+The mkfeatures helper is now always built without debugging.
+configure.py now states that the -u flag on Windows needs a debug version of
+Python.
+
+
+2006/06/20 15:57:55 phil
+Latest QScintilla updates.
+
+
+2006/06/19 21:00:47 phil
+Synced with the latest QScintilla snapshot - including the significantly
+changed Ruby lexer.
+
+
+2006/06/19 15:55:42 phil
+Solaris warnings fixes from Ulli.
+
+
+2006/06/18 23:51:34 phil
+Sync with the latest QScintilla changes: highlighted identifiers and decorators
+in the Python lexer.
+
+
+2006/06/18 16:40:31 phil
+Updated for the latest QScintilla snapshot.
+
+
+2006/05/17 8:39:39 phil
+Removed some inaccessable methods from QCString.
+
+
+2006/05/11 19:04:27 phil
+Another fix for Qt v3.1 in qnamespace.sip.
+
+
+2006/04/28 20:47:46 phil
+Replaced long long with PY_LONG_LONG for MSVC 6.
+
+
+2006/04/07 23:29:54 phil
+Tidy ups to the internal build system.
+
+
+2006/04/06 12:26:09 phil
+Fixed Qt::MacintoshVersion for Qt v3.0.x and v3.1.x.
+
+
+2006/04/05 12:11:43 phil
+Removed all functions that were hidden by overloads with the same Python
+signature (ie. both of them).
+
+
+2006/03/30 8:09:58 phil
+Added QStringList::operator+=(const QString &).
+
+
+2006/03/29 11:38:21 phil
+Added the missing QImage.bitBlt() function.
+
+
+2006/03/24 23:54:13 phil
+Released as v3.16.
+
+
+2006/03/23 21:34:09 phil
+Added a missing /Transfer/ from QGLWidget().
+
+
+2006/03/20 21:00:58 phil
+Removed the "Filter" functions from the documentation.
+
+
+2006/03/20 20:59:23 phil
+Removed the "Filter" versions of the QFileDialog static methods as they aren't
+necessary after all (just not obvious how to use them properly).
+
+
+2006/03/14 22:45:09 phil
+pyuic now specifies the Latin1 encoding when the -embed flag is used.
+
+
+2006/03/13 11:55:09 phil
+Build system changes so that PyQt builds on MacOS properly.
+
+
+2006/03/11 19:16:56 phil
+Removed some leftovers from when PyQt3 and 4 shared a single config.py. PyQt3
+no longer searches PATH for the Qt bin directory.
+
+
+2006/03/11 15:15:15 phil
+Fixed build problem with Qt v1.x.
+
+
+2006/03/10 22:37:30 phil
+Updates for Qt v3.3.6.
+
+
+2006/03/04 16:06:40 phil
+Documentation updates.
+Applied the same transfer rule to QPopupMenu.exec() as is applied to
+QDialog.exec().
+Added getOpenFileNameFilter(), getSaveFileNameFilter() and
+getOpenFileNamesFilter() to QFileDialog that return a tuple of the selected
+files and the current filter.
+
+
+2006/02/26 13:56:28 phil
+Added support for signed char to the Qt API.
+
+
+2006/02/21 15:22:08 phil
+Changed the signal/slot handling so that unsigned int and unsigned short are
+implemented as long objects rather than integer objects.
+
+
+2006/02/19 16:43:48 phil
+Updates to the internal Qt API.
+
+
+2006/02/18 21:05:56 phil
+Added new stubs in the Qt support API (not used by PyQt3).
+
+
+2006/02/14 19:16:05 phil
+The destroyed() signal can now be received by a Python slot.
+
+
+2006/02/13 20:02:22 phil
+Fixed a typo in configure.py.
+
+
+2006/02/13 0:24:55 phil
+Updated the handwritten code to use the current SIP API.
+
+
+2006/02/12 1:14:11 phil
+Removed all calls sipForceConvertTo*().
+Removed all uses of newly deprecated calls.
+
+
+2006/01/26 16:40:38 phil
+Changed the signal/slot support required by the latest SIP changes.
+
+
+2006/01/16 18:58:26 phil
+Removed PYQT_BUILD.
+
+
+2006/01/10 19:13:07 phil
+Fixed a typo in the last change.
+
+
+2006/01/10 18:20:02 phil
+Fixed the sipForceConvertToTransfer_*() calls.
+
+
+2005/12/30 14:30:08 phil
+More changes to handwritten code that should be handling sipSelfWasArg.
+
+
+2005/12/28 19:35:10 phil
+Updated all handwritten convertor code for the latest SIP changes.
+
+
+2005/12/24 17:02:31 phil
+Changes required by the introduction of sipSelfWasArg in the SIP snapshot.
+
+
+2005/12/22 16:22:48 phil
+Really fixed the QApplication argc bug this time.
+
+
+2005/12/19 17:43:42 phil
+Changes to the build system for the latest SIP snapshot.
+
+
+2005/12/18 11:00:06 phil
+Stripped the Qt4 specific stuff from configure.py.
+
+
+2005/12/18 10:06:25 phil
+Updated the internal build system not to include the .svn directory in
+packages.
+
+
+2005/12/17 19:43:36 phil
+Changes to the internal build system for the CVS to SVN transfer.
+
+
+2005/12/07 00:54:04 phil
+Added a missing #include from qstring.sip in PyQt3.
+
+
+2005/12/04 18:41:31 phil
+Fixed the handling of horizontal and vertical stretch in QSizePolicy.
+
+
+2005/11/29 13:06:37 phil
+Fixed a long standing bug with QApplication ctors that only showed itself with
+Qt4.
+
+
+2005/11/24 17:45:09 phil
+Added the missing /ReleaseGIL/ to QThread.exit().
+
+
+2005/11/24 17:22:31 phil
+Changes required for the modified mapped type template syntax.
+
+
+2005/11/20 18:41:02 phil
+The HTML documentation is now maintained manually rather than being
+auto-generated.
+
+
+2005/11/17 18:24:48 phil
+Fixed bug in pyuic related to QKeySequence.
+
+
+2005/11/12 10:29:13 phil
+Added the missing ctor to QApplication.
+
+
+2005/11/10 21:10:46 phil
+Removed the /TransferThis/ annotations from the QTableItem (and sub-classes)
+ctors. The Qt documentation is wrong.
+
+
+2005/11/09 18:00:47 phil
+Fixed the GIL bug in qInstallMsgHandler().
+
+
+2005/11/01 22:08:32 phil
+Implemented the PyQt3 changes for the new Qt support API.
+
+
+2005/10/26 14:34:57 phil
+Modified the QString buffer interface to be reentrant and to try and use the
+default Python codec.
+
+
+2005/10/23 16:02:47 phil
+QObject.sender() now supports Python signals.
+
+
+2005/10/22 22:38:54 phil
+Implemented the buffer interface for QString.
+
+
+2005/10/19 13:38:24 phil
+Improved the fix to QClipboard.setData().
+
+
+2005/10/16 16:09:29 phil
+Used mapped type templates in PyQt3 where possible.
+
+
+2005/10/13 18:52:02 phil
+Fixed the handling of QClipboard.setMimeType() and a related memory leak.
+
+
+2005/10/12 21:11:15 phil
+Fixed bug in configure.py when the Qt bin directory isn't on the path.
+Fixed compilation problem with QAxBase handwritten code and MinGW.
+Added the * and *= operators to QString.
+Removed some QString methods that were passing or returning arrays.
+
+
+2005/10/11 21:13:48 phil
+Added /Numeric/ to the QString + operator. The improved behaviour (being able
+to write s = "foo" + QString("bar")) should now work in both PyQt3 and 4.
+
+
+2005/10/07 18:15:37 phil
+Changed the PyQt3 QString behaviour with long and ulong to match PyQt4.
+
+
+2005/09/22 20:18:39 phil
+Updated the build system now that all Qt specific configuration data has been
+removed from sipconfig.
+
+
+2005/09/10 21:33:59 phil
+Fixed bug in configure.py when reporting an incorrect SIP version.
+
+
+2005/09/08 20:16:33 phil
+Updated the universal slot support to fit with the latest SIP snapshot.
+Changed the way universal slots are implemented so they get destroyed when the
+corresponding transmitter gets destroyed.
+
+
+2005/09/07 20:53:52 phil
+Removed support for SIP v3 in configure.py.
+Minor pyuic fix taken from uic v3.3.5.
+Added the missing MacintoshVersion enum.
+Added the -f flag to configure to use any existing features file (by default it
+is recreated).
+
+
+2005/09/06 20:33:43 phil
+Removed support for SIP v3 from configure.py.
+Added the new Qt support code taken out of SIP.
+
+
+2005/08/30 17:31:05 phil
+Released as v3.15.
+
+
+2005/08/17 22:30:17 phil
+Replaced all the (now deprecated) sipTransfer() calls in handwritten code.
+
+
+2005/08/10 22:10:29 phil
+Synced with the latest QScintilla.
+Updated the documentation.
+
+
+2005/07/26 11:08:23 phil
+Synced with the current QScintilla.
+
+
+2005/07/25 18:24:29 phil
+Added the sipTransfer() to QDialog.exec_loop().
+
+
+2005/07/24 20:16:51 phil
+Synced with the latest QScintilla.
+Added the registerWeakActiveObject() and revokeActiveObject() utility
+functions to QAxBase.
+
+
+2005/07/10 09:46:49 phil
+Added %ConvertSubClassCode to QLayoutItem.
+
+
+2005/07/09 17:55:30 phil
+Sync'ed with the latest QScintilla changes.
+
+
+2005/07/06 18:20:26 phil
+Fixed the bug in QObject's type conversion graph.
+Added the QextScintillaLexerPOV class.
+Fixed configure.py so that it properly enables support for the latest
+QScintilla.
+
+
+2005/07/05 21:04:26 phil
+Added the extra flag to QextScintilla.findFirst().
+
+
+2005/07/04 19:17:38 phil
+Synced with the latest version of QScintilla.
+
+
+2005/07/03 16:58:21 phil
+Added support for QAxBase now that SIP has better support for abstract
+classes.
+
+
+2005/06/30 15:38:41 phil
+Reimplemented all the %ConvertToSubClassCode for QObjects so that it returns
+the most specific type that it can, even if it doesn't recognise the exact
+type.
+
+
+2005/06/19 13:49:51 phil
+Hopefully fixed QImage() for colours with unsigned 32 bit values.
+
+
+2005/06/10 16:45:00 phil
+Fixed the return value of QMenuData.insertSeparator().
+
+
+2005/05/20 17:25:45 phil
+Fixed a problem where the readBlock() and readLine() methods of QIODevice were
+wrongly expecting a tuple result from a Python reimplementation.
+
+
+2005/05/04 18:41:49 phil
+Fixed pyuic bug where a required QIconSet ctor wasn't being generated.
+
+
+2005/04/17 09:04:01 phil
+Documented the limitations with super.
+Fixed the qdir.py example bugs tiggered by SIP doing some more rigourous
+checks.
+
+
+2005/04/15 13:31:55 phil
+Added missing Py_DECREF() from QObject.queryList() %MethodCode.
+
+
+2005/04/14 18:17:58 phil
+Implemented the QString '+' operator.
+
+
+2005/04/09 15:35:48 phil
+When None is passed as a QString (or QByteArray or QCString) then it is now
+converted to NULL rather than a null QString.
+
+
+2005/04/04 15:59:27 phil
+Fixed a problem with the internal build system caused by the new SIP garbage
+collector directives.
+
+
+2005/04/02 23:10:46 phil
+Fixed the QCustomEvent %GCClear code.
+
+
+2005/04/02 22:28:50 phil
+Added the new %GCTraverseCode and %GCClearCode to QCustomEvent.
+Now requires SIP v4.3.
+
+
+2005/04/02 09:53:27 phil
+Replaced the new /NoConvertor/ annotation with /Constrained/.
+
+
+2005/03/25 20:18:32 phil
+Accel and AccelOverride should now result in QKeyEvent instances rather than
+QEvent instances.
+Added missing private dtors.
+
+
+2005/03/25 14:24:45 phil
+Fixed bug in configure.py when reporting incorrect SIP versions.
+
+
+2005/03/11 19:18:46 phil
+Fixed qInstallMsgHandler() for SIP v3.
+
+
+2005/03/10 18:55:52 phil
+Fixed QPixmapCache.insert().
+
+
+2005/03/06 10:09:06 phil
+Released as v3.14.1.
+
+
+2005/02/26 11:22:18 phil
+Fixed problem with relative path arguments to configure.py.
+
+
+2005/02/25 17:46:51 phil
+Added the missing /ReleaseGIL/ annotations from the static QFileDialog methods.
+Fixed QObject.queryList() (for SIP v4 only).
+
+
+2005/02/19 15:23:42 phil
+Added the QextScintillaLexerLua class.
+Released as 3.14.
+
+
+2005/02/18 19:01:46 phil
+Fixed the dirview.py example so that it drags local filenames properly and the
+folderSelected() signal works the same way as the C++ version.
+Added the qdir.py example from Hans-Peter Jansen.
+Updated the QAxObject and QAxWidget documentation.
+Added qInstallMsgHandler().
+Added the missing classes from the qtext subclass convertor code.
+
+
+2005/02/13 10:47:50 phil
+Updated the documentation on QFilePreview.
+Fixed a bug in pyuic related to QDataBrowser.del().
+
+
+2005/02/11 22:54:02 phil
+Updated the NEWS file and the documentation.
+
+
+2005/02/11 17:19:19 phil
+Fixed broken QObject.inherits() and QObject.isA() (for SIP v4 only).
+Changes in version numbers for Qt v2.3.10.
+Removed the "Extracting ..." message from pyuic as it isn't always true.
+
+
+2005/02/06 14:39:57 phil
+Release the GIL on calling QApplication.enter_loop().
+
+
+2005/01/29 10:15:48 phil
+Synced pyuic with Qt v3.3.4.
+
+
+2005/01/22 18:13:35 phil
+PyQt now requires SIP v4.2 or later.
+
+
+2005/01/22 11:54:13 phil
+Fixed bug in pyuic where it wasn't importing QDataView when it should.
+
+
+2005/01/21 17:29:52 phil
+Added a missing /Transfer/ from QScrollView.setCornerWidget().
+Synced with the current QScintilla snapshot.
+
+
+2005/01/17 13:04:46 phil
+Fixed a bug in the internal build system.
+
+
+2005/01/16 13:06:16 phil
+Fixed bugs related to most implementations of readBlock() and readLine().
+
+
+2005/01/14 23:30:27 phil
+Removed the out of date README.Linux file.
+
+
+2005/01/14 17:36:52 phil
+Backed out the changes to QListBox now that SIP (again) has strict enum
+checking.
+Fixed enum related bugs in the widgets.py example.
+Updated the copyright notices.
+Added support for Ulli's VendorID package.
+Updated the documentation on application deployment.
+Added support for debug builds to the internal build system.
+
+
+2005/01/09 14:02:11 phil
+Fixed QListBox so that setRowMode() and setColumnMode() work properly with the
+newly relaxed enum type checking in SIP 4.
+
+
+2004/12/29 18:54:44 phil
+Added missing const to QDataTable.setDateFormat().
+
+
+2004/12/26 12:32:59 phil
+Added support for the QextScintillaLexerRuby class.
+
+
+2004/12/24 17:54:25 phil
+Removed the -g flag from the configure.py help as the corresponding sip flag is
+now deprecated.
+Hopefully fixed conversions from Python unicode objects to QStrings where
+Python uses longs to represent a character.
+Allow for spaces in the path to the SIP binary.
+
+
+2004/12/23 22:44:18 phil
+Updated the documentation regarding application deployment.
+
+
+2004/12/19 19:29:04 phil
+Added the option to build static modules to the internal build system.
+
+
+2004/12/10 19:03:18 phil
+Fixed a pyuic bug triggered by the new enum handling in SIP v4.2.
+
+
+2004/12/10 18:07:52 phil
+Fixed debug builds on Windows.
+
+
+2004/12/05 14:53:42 phil
+Fixed pyuic bug (introduced in 3.13) that broke support for QAxWidget based
+instances.
+
+
+2004/12/03 19:00:06 phil
+Added a missing /TransferThis/ to QSyntaxHighlighter.
+
+
+2004/10/31 16:33:07 phil
+Sync'd to the current QScintilla snapshot.
+
+
+2004/10/17 19:27:08 phil
+Minor change to the documentation.
+
+
+2004/10/02 11:51:27 phil
+A couple of bug fixes for the webbrowser.py example.
+
+
+2004/10/01 23:09:30 phil
+Changed the SIP tag of the educational version.
+Added the webbrowser example to the distribution.
+Minor fix for the webbrowser example.
+
+
+2004/09/21 14:17:09 phil
+Fixed a bug in pyuic2.
+Released as v3.13.
+
+
+2004/09/21 11:14:48 phil
+Updated the NEWS file.
+
+
+2004/09/15 12:40:09 phil
+Added the QMetaObject and QMetaProperty classes.
+Added the QObject.metaObject() method.
+
+
+2004/09/12 11:41:49 phil
+Added support for the QextScintillaLexerBash class.
+
+
+2004/09/10 22:38:09 phil
+Removed redundant implementations of QSqlRecord.field().
+Replaced whrandom with random in all examples.
+
+
+2004/08/25 15:29:20 phil
+Added explicit support for QScintilla to pyuic.
+
+
+2004/08/22 15:51:05 phil
+Added support for what will become QScintilla v1.4.
+
+
+2004/08/20 11:07:56 phil
+Brought the documentation up to date.
+Added support for QUuid.
+
+
+2004/08/19 10:32:31 phil
+Pushed out support of QAxObject to SIP v4.2.
+Added /ReleaseGIL/ to any QApplication and QThread method that might cause
+events to be dispatched.
+
+
+2004/08/15 23:34:28 phil
+Updated pyuic from Qt 3.3.3.
+pyuic now never uses the SLOT() macro in case the connection is to a method of
+a Python custom widget.
+
+
+2004/08/04 18:05:25 phil
+Added the comparison operators between QChar and QChar and char.
+
+
+2004/08/04 14:06:41 phil
+Implemented all the QDataStream << and >> operators for classes.
+
+
+2004/08/03 22:19:59 phil
+Build system fix for when QWindowsXPStyle is a plugin.
+
+
+2004/07/19 18:41:53 phil
+Fixed a bug in the fontdisplayer.py example.
+
+
+2004/07/08 08:40:54 phil
+Minor internal changes.
+
+
+2004/06/27 08:43:19 phil
+Added a missing /TransferThis/ from one of the QPushButton ctors.
+
+
+2004/05/26 22:15:40 phil
+Added another missing /ReleaseGIL/ to QApplication.
+
+
+2004/05/25 17:05:27 phil
+Fixed bug in QArray for old versions of Qt.
+Fixed QAssistantClient bug in configure.py for old versions of Qt.
+Fixed QSocket bug for old versions of Qt.
+Released as v3.12.
+
+
+2004/05/25 13:55:07 phil
+Added missing /ReleaseGIL/ to QThread.
+
+
+2004/05/25 11:26:37 phil
+Internal build system changes.
+
+
+2004/05/18 18:33:03 phil
+Added the webbrowser.py example (which will have to wait until SIP v4.1 before
+it works).
+Added missing /ReleaseGIL/ to QWaitCondition, QMutex and QMutexLocker.
+
+
+2004/05/15 14:18:24 phil
+Fixed bug that accidentally disabled the qtsql module for the free edition.
+Disabled the qtaxcontainer module until SIP v4.1.
+
+
+2004/05/09 11:19:26 phil
+Minor pyuic3 changes to support QAxWidget.
+Marked the qtaxcontainer classes as experimental.
+
+
+2004/05/04 16:01:57 phil
+qwindowdefs.sip for all platforms is now included in the commercial package.
+Changed the SIP3 dependency to v3.10.2.
+QValueList<QIconDragItem> is now dependent on the Qt_ICONVIEW feature.
+pyuic and pylupdate will now build on the Enterprise Edition even if the qtxml
+module has been disabled.
+Compiler error messages during configuration are suppressed if possible, but
+can be seen with the new -w flag.
+configure.py now explicitly checks QAssistantClient rather than assume it is
+present in the Enterprise Edition.
+The qtaxcontainer module now builds on Windows.
+
+
+2004/05/02 00:38:16 phil
+Sync with the latest QScintilla snapshot.
+
+
+2004/05/01 17:10:57 phil
+Fixed more minor build problems.
+The commercial version now has identical code on all platforms.
+
+
+2004/04/30 21:50:33 phil
+Fixed an internal build problem.
+Implemented QValueList<QVariant> as a mapped type. (Done in the previous
+commit but I forgot to mention it.)
+
+
+2004/04/25 22:09:09 phil
+Added the qtaxcontainer module - doesn't work yet, but shouldn't break
+anything.
+
+
+2004/04/24 08:43:22 phil
+Update the documentation to say that Qt v3.3.2 is supported.
+
+
+2004/04/18 15:45:12 phil
+Changed the build system to deal with the evaluation version of PyQt.
+
+
+2004/04/13 18:24:04 phil
+QAssistantClient is disabled for the Professional Edition because it requires
+code from the Enterprise Edition (only seems to affect Windows though).
+
+
+2004/04/12 14:49:33 phil
+Added the QextScintillaLexerPerl class to the qtext module.
+
+
+2004/04/04 17:01:11 phil
+Minor fixes to the dirview.py example.
+Sync'ed with the current QScintilla snapshot.
+
+
+2004/03/30 18:22:25 phil
+Fixed a bug where the destruction of QTab instances wasn't noticed.
+
+
+2004/03/28 15:16:50 phil
+Updated to the latest QScintilla snapshot.
+
+
+2004/03/27 18:26:02 phil
+Updated for the latest changes to QScintilla.
+
+
+2004/03/21 21:09:25 phil
+Changed the configure.py message when testing for plugins to be the right
+"sense".
+Updated the QScintilla support for v1.3.
+
+
+2004/03/11 19:05:38 phil
+Changed the SIP v3 dependency to v3.10.1.
+Released as v3.11.
+
+
+2004/03/11 01:22:12 phil
+Minor changes to the internal build system.
+
+
+2004/03/10 18:29:30 phil
+Brought the documentation up to date.
+Minor internal build system changes.
+The build system now disables style classes built as plugins.
+Changed the handwritten code to use the SIP generated feature #defines rather
+than the unreliable (in the case of plugins) Qt ones.
+
+
+2004/02/26 18:56:39 phil
+Updated the documentation to say that PyQt has been tested against Qt v3.3.1.
+Updated the internal build system to exploit distcc.
+Fixed bug in the conversion from Python lists to QMemArrays.
+
+
+2004/02/15 22:34:39 phil
+Fixed the canvas.py example's handling of multiple views.
+
+
+2004/02/11 19:24:10 phil
+Fixed the old build system for Qt v3.3.0.
+
+
+2004/02/07 17:38:52 phil
+Fixed a couple of bugs in pyuic3 and added the spacer.ui form to verify it.
+
+
+2004/02/02 22:27:48 phil
+Updated pyuic from Qt v3.3.0.
+
+
+2004/02/01 14:38:18 phil
+Added the QLocale class from Qt v3.3.0.
+Updated all existing classes for Qt v3.3.0.
+Added the missing += operators for QString.
+Added the missing QSocketDevice class.
+
+
+2004/01/31 23:09:45 phil
+Added the missing /Transfer/ from QMimeSourceFactory.setData() and
+QMimeSourceFactory.setDefaultFactory().
+Added the missing /TransferBack/ from QMimeSourceFactory.takeDefaultFactory().
+Added the missing /Factory/ from createEditor() in QTableItem and sub-classes.
+Added the missing /Factory/ in QTextCodec.makeDecoder(),
+QTextCodec.makeEncoder() and QTextEdit.createPopupMenu().
+Added Qt v3.3.0 support to the build system.
+PyQt now builds against Qt v3.3.0.
+
+
+2004/01/29 19:19:36 phil
+Minor change to the internal build system.
+Added README.AIX from Ulli Berning.
+
+
+2004/01/27 08:34:21 phil
+Reverted the accidental change to QTextEdit.find().
+Fixed a couple of markup problems in the documentation.
+Added the missing QHttp, QFtp and QLocalFs to the appropriate
+%ConvertToSubClassCode.
+
+
+2004/01/21 18:34:02 phil
+Added some fixes for Qtopia v1.6 from Mickey Lauer.
+
+
+2004/01/16 20:53:09 phil
+Released as v3.10.
+
+
+2004/01/15 20:04:11 phil
+Changed configure.py to check that SIP was built with Qt support enabled as
+early as possible.
+
+
+2004/01/15 19:27:58 phil
+Added a check for the SIP version number in configure.py.
+Fixed pyuic3 not to use iostream and avoid warning messages with MSVC.
+
+
+2004/01/04 18:52:29 phil
+Minor updates to the build system.
+
+
+2004/01/03 23:57:31 phil
+Updated the copyright notices.
+Changed pyuic3 to only #include zlib.h for Qt versions before 3.1.0.
+Documented pyqtconfig.
+
+
+2004/01/02 18:41:01 phil
+Minor changes to the build system.
+Repaired the completely broken pyqtconfig module.
+
+
+2003/12/26 23:34:47 phil
+Changes to the build system based on patches from Ulrich Berning.
+
+
+2003/12/26 19:32:31 phil
+Added the missing QFtp class.
+
+
+2003/12/26 19:31:23 phil
+Added the missing QHttp, QHttpHeader, QHttpRequestHeader, QHttpResponseHeader,
+QLocalFs classes.
+
+
+2003/12/21 17:28:16 phil
+Documented sip.voidptr.asstring().
+
+
+2003/12/21 16:07:00 phil
+Fixed a bug when automatically converting to a QKeySequence.
+
+
+2003/12/06 20:21:54 phil
+Fixed a bug in the old build system for Windows.
+Brought the documentation up to date.
+Released as v3.9.
+
+
+2003/12/04 19:35:28 phil
+Updated the README for the new build system.
+
+
+2003/12/02 00:00:35 phil
+Slight change to handwritten code forced by the change to sipParseResult().
+
+
+2003/11/23 17:04:10 phil
+Removed qInstallPathSysconf() on Windows.
+
+
+2003/11/22 20:54:01 phil
+Windows related changes to the new build system.
+
+
+2003/11/22 00:50:23 phil
+Portability fixes for Qt v2 and Qtopia.
+
+
+2003/11/21 23:06:14 phil
+More changes to the new build system. Tested with SIP v4 and Qt Professional
+on Linux and SIP v3 and Python v1.5.2 on Linux.
+
+
+2003/11/21 07:32:01 phil
+SCons is now completely removed from the new build system. PyQt will now build
+with SIP v3 and SIP v4 on Linux.
+
+
+2003/11/15 11:20:17 phil
+More changes to the new build system.
+
+
+2003/11/13 19:41:35 phil
+More changes to the new build system. PyQt now builds against the Professional
+Edition.
+
+
+2003/11/13 13:12:47 phil
+New build system changes. PyQt now builds correctly on Linux for SIP v3 and SIP
+v4.
+
+
+2003/11/12 22:22:50 phil
+Added more of the new build system.
+Fixed a bug in pyuic3 handling of encoded strings (thanks to Joerg Kaercher).
+Added the QImageIO class.
+
+
+2003/11/05 20:33:43 phil
+Added QListViewItemIterator.
+Added the QDockArea << and >> operators.
+Started on the new build system.
+
+
+2003/10/27 23:23:07 phil
+Removed more handwritten code now that SIP fully supports pointers and
+references to base types.
+Fixed a GIL problem with the QCanvasItem sub-class conversion code.
+
+
+2003/10/26 22:53:03 phil
+Added the missing QSettings.readBoolEntry().
+Removed lots of non-virtual %MethodCode now that SIP automatically handles
+returning multiple arguments.
+
+
+2003/10/24 08:34:44 phil
+Added /ReleaseGIL/ wherever looked sensible.
+
+
+2003/10/23 18:27:30 phil
+Used %Build rather than the deprecated %Makefile.
+Used %ModuleHeaderCode and %TypeHeaderCode rather than the deprecated
+%HeaderCode.
+Used %ModuleCode and %TypeCode rather than the deprecated %C++Code.
+
+
+2003/10/22 18:40:32 phil
+Added %ConvertToSubClassCode for QTableItem and QCanvasItem.
+Added the missing qtui module documentation.
+Refactored the internal and external build systems so that the .sip files are
+arranged in a hierarchy and are installed.
+Added the -v flag to build.py to specify where the .sip are installed to.
+
+
+2003/10/21 16:40:12 phil
+Fix to build.py for the Mac.
+
+
+2003/10/21 13:39:18 phil
+Fixed Windows warning message from qmemarray.sip handwritten code.
+Fixed internal build.py to generate Mac packages properly.
+
+
+2003/10/20 18:50:07 phil
+More MacOS/X related changes.
+Compiler warnings are now enabled when building with SIP v4.
+PyQt builds with no warnings with SIP v4.
+
+
+2003/10/19 19:47:35 phil
+Documentation updates.
+Removed the tests for missing functions in early versions of Qt for MacOS/X.
+Updates to the build system for MacOS/X.
+
+
+2003/10/16 15:50:38 phil
+Replaced the use of __cmp__ in QString because it doesn't work with SIP v4 if
+the argument isn't of the same type - it's just the way new-style classes work.
+Removed the QString.__cmp__() unit test as the implementation no longer uses
+handwritten code.
+
+
+2003/10/15 18:19:07 phil
+Added the "-r" flag to build.py to build with tracing enabled.
+Rewrote all the unit tests to work with PyQt generated with SIP v4.
+
+
+2003/10/11 21:57:20 phil
+Brought the documentation up to date.
+Changed handwritten code for the changes to sipCallMethod(), sipParseResult()
+and sipBadCatcherResult().
+
+
+2003/10/08 15:04:46 phil
+Fixed the internal build system (again).
+
+
+2003/10/07 19:33:13 phil
+Fixed QIODevice handwritten code which looked very broken.
+Checked all virtual abstract functions that need handwritten code.
+Added /TransferBack/ for function return values where needed.
+Added the missing qInstallPath(), qInstallPathDocs(), qInstallPathHeaders(),
+qInstallPathLibs(), qInstallPathBins(), qInstallPathPlugins(),
+qInstallPathData(), qInstallPathTranslations(), qInstallPathSysconf().
+Made sure all handwritten code uses functions that are part of the SIP v4 API.
+
+
+2003/10/04 16:14:45 phil
+Changed how sipClassName() is used now that it returns a new reference.
+
+
+2003/10/04 11:16:21 phil
+Migrated the remaining %MemberCode to %MethodCode.
+Changed the QApplication dtor code slightly to keep the public SIP API simple.
+(It means that disowning a top level widget now adds the extra reference, but
+this shouldn't make a difference.)
+
+
+2003/10/02 22:54:43 phil
+Documented QLayoutIterator.next().
+Fixed problem with build system that was preventing snapshots being generated
+after the addition of %MethodCode.
+Fixed QSpinBox.mapTextToValue() to take zero parameters.
+Converted most of %MemberCode to %MethodCode (ie. the easy ones).
+
+
+2003/10/01 14:00:15 phil
+Converted all ctor %MemberCode to %MethodCode.
+
+
+2003/09/23 19:33:07 phil
+Converted all Python special methods and operators from %MemberCode to
+%MethodCode.
+Fixed bug in build system that disabled thread support.
+
+
+2003/09/19 15:30:09 phil
+Changes to the build system for SIP v4's new build system.
+
+
+2003/09/19 00:28:39 phil
+Fixed converting Python wide Unicode strings to QString for Qt v2. (Actually
+done with an earlier change but I forgot to mention it.)
+Updated the documentation on application deployment to reflect the changes to
+the build system.
+The documentation is now a single HTML file with a TOC.
+More changes to the build system. Tested with tmake and Windows.
+
+
+2003/09/18 13:47:07 phil
+More changes to the build system after initial testing.
+
+
+2003/09/17 18:28:40 phil
+Re-factored build.py to use the sipconfig module. Only tested on Linux with
+Qt v3.2.1 Enterprise and Python v2.3.
+
+
+2003/09/06 13:35:02 phil
+QWMatrix fixes from Torsten Marek.
+Added the undocumented "*" operators to QWMatrix.
+Updated the educational version to v3.2.0.
+Released as v3.8.1.
+
+
+2003/08/24 18:43:40 phil
+Updated the tutorials so that they have a consistent coding style and don't use
+"import *".
+Updated the documentation to say that Qt v3.2.1 is supported.
+
+
+2003/08/17 12:25:57 phil
+Fixed QPrinter.winPageSize() for Qt versions before v3.
+Released as v3.8.
+
+
+2003/08/17 10:02:11 phil
+Fixed problem with QRect | and & operators.
+
+
+2003/08/16 21:14:09 phil
+Fixed the code generated by pyuic3 when the -x and -subimpl flags are both
+given.
+Brought the documentation up to date.
+
+
+2003/08/13 17:50:14 phil
+The == and != operators have been implemented for QBrush, QColor, QDomNode,
+QFont, QImage, QKeySequence, QPalette, QPen and QRegExp.
+The +, +=, -, -=, *, *=, /, /=, ==, != and __nonzero__() operators have been
+implemented for QSize.
+The ==, != and QString() operators have been implemented for QUrl.
+The &, &=, |, |=, ==, !=, __contains__() and __nonzero__() operators have been
+implemented for QRect.
+The |, |=, +, +=, &, &=, -, -=, ^, ^=, ==, !=, __contains__() and __nonzero__()
+operators have been implemented for QRegion.
+The ==, != and *= operators have been added to QWMatrix.
+The __len__(), __contains__(), == and != operators have been implemented for
+QDir.
+The comparison operators and __nonzero__() have been implemented for QDate,
+QDateTime and QTime.
+Added some consts to the QString operators.
+Added the QDate, QDateTime, QDir, QRect, QRegion, QSize and QTime unit tests.
+Added the runtests.py master unit test runner.
+
+
+2003/08/12 20:34:29 phil
+Fixed memory leak in QStringList * operator.
+Added the QPoint operators (thanks to Torsten Marek).
+Added the QPoint unit test.
+
+
+2003/08/12 15:31:24 phil
+Fixed deprecated use of iostream.h in pyuic3.
+Updated the QScintilla support.
+
+
+2003/08/11 18:52:45 phil
+Fixed version problem with QToolBox.
+
+
+2003/08/01 09:42:10 phil
+Added the missing Qt.ButtonState.MetaButton.
+Added support for the [], in, len and comparison operators to QString (thanks
+to Torsten Marek).
+Added the test_QString.py test script.
+
+
+2003/07/25 23:38:36 phil
+Refined the pyuic3 changes - because KWrite is crap.
+
+
+2003/07/25 23:36:11 phil
+Added the menus.ui test form.
+Some pyuic3 format changes from Detlev.
+
+
+2003/07/25 12:13:44 phil
+Updated pyuic for Qt v3.2.0.
+
+
+2003/07/24 17:20:59 phil
+Added QSplashScreen, QSqlSelectCursor and QToolBox for Qt v3.2.0.
+Fix to build.py error message.
+
+
+2003/07/24 10:52:38 phil
+Minor license handling changes.
+Fixed memory leak in QStringList[] when using slices.
+Added the -k flag to build.py to create static modules.
+Updated README.MacOSX from Willard Myers.
+Updated all existing classes for Qt v3.2.0.
+
+
+2003/07/05 10:31:55 phil
+Fixed problem with include directories when using tmake.
+Released as v3.7.
+
+
+2003/07/05 09:59:37 phil
+Provisional release of v3.7.
+
+
+2003/07/03 16:17:55 phil
+pyuic3 now says what it is extracting on stderr rather than stdout.
+
+
+2003/07/01 14:18:37 phil
+Brought the documentation up to date.
+Added README.MacOSX (thanks to Bill Myers).
+Added lots of new examples from Jorge Arroyo.
+
+
+2003/06/30 09:23:25 phil
+Changed all handwritten code to use the new 'L' format character where
+appropriate.
+Implemented __setitem__(), __delitem__(), __add__(), __iadd__(), __mul__(),
+__imul__(), __eq__() and __ne__() for QStringList.
+Added the internal QStringList unit tests.
+
+
+2003/06/22 11:26:32 phil
+%DtorCode has been renamed %VirtualCode.
+
+
+2003/06/21 11:37:58 phil
+Fixed the internal build process to deal with the new %DtorCode.
+
+
+2003/06/19 23:53:49 phil
+More changes to QCustomEvent which shouldn't now leak memory under any
+circumstances.
+
+
+2003/06/19 16:31:57 phil
+QEvent.data() now returns a Python object without increasing it's reference
+count.
+The QEvent dtor is now virtual so that the Python wrapper object gets garbage
+collected when Qt deletes the event when it's passed to
+QApplication.postEvent().
+
+
+2003/06/10 14:51:23 phil
+(Hopefully) fixed pyuic3 compile bug under Windows.
+Added the progressbar.py example from Jorge Arroyo.
+
+
+2003/06/08 12:25:08 phil
+Lots of build tidy ups from Hans-Peter Jansen.
+
+
+2003/06/06 12:59:26 phil
+pylupdate now recognises the __tr() and __trUtf8() methods generated by pyuic.
+Added some missing /Transfer/ flags from QMenuData.
+Updated the menu.py example so that it matches the latest Qt version.
+
+
+2003/05/31 12:19:22 phil
+Changed the build system to generate .in files which are then patched so that
+the patched files stay around to aid debugging.
+Removed unneeded directories from INCLUDEPATH in .pro files.
+
+
+2003/05/30 17:52:06 phil
+Don't generate the internal __tr() and __trUtf8() methods if the user passes
+their own function name.
+
+
+2003/05/30 17:47:57 phil
+Added the listbox.py and listboxcombo.py examples from Jorge Arroyo.
+build.py improvement in detecting executable programs.
+Changed pyuic3 to generate calls to qApp.translate() rather than self.tr().
+Documented the issues related to translations.
+
+
+2003/05/23 22:03:05 phil
+Fixed some bugs and inefficiencies in the canvas.py example so that it no
+longer segfaults on exit when a sprite has been created.
+Added bits(), scanLine(), jumpTable() and colorTable() to QImage.
+
+
+2003/05/22 21:50:05 phil
+Added the QWindowsXPStyle class. (Thanks to Ulrich Berning.)
+
+
+2003/05/20 10:36:10 phil
+Added QextScintilla.modificationAttempted().
+
+
+2003/05/18 20:59:53 phil
+Added QextScintillaBase.SCN_MODIFYATTEMPTRO.
+Fixed pyuic3's broken handling of the -x flag.
+Fixed pyuic3's broken generation of embedded images.
+Fixed QImage ctor to use an internal colour table instead of an external one
+that was garbage collected too soon.
+
+
+2003/05/13 09:50:54 phil
+Added the QSignalMapper class (thanks to Gordon Tyler).
+
+
+2003/05/12 10:00:59 phil
+Added toShort(), toUShort(), toInt(), toUInt(), toLong(), toULong(), toFloat()
+and toDouble() to QCString and QString.
+
+
+2003/05/11 10:26:44 phil
+Added the QextScintillaLexerHTML class.
+
+
+2003/05/07 21:07:04 phil
+Changed the handling of version numbers so that we assume the latest SIP tags
+if we find a QScintilla snapshot.
+
+
+2003/05/07 16:53:05 phil
+Updated the documentation to explicitly mention the problems of using lambda
+expressions as slots.
+Added the QextScintillaLexerSQL class.
+Changed build.py to support QScintilla version control.
+
+
+2003/05/04 09:57:19 phil
+Fixed silly typo in build.py.
+
+
+2003/05/03 14:50:03 phil
+Removed some dead code from build.py.
+The qt module was ignoring the release/debug option and the debug version of
+the Python library wasn't being searched for.
+Added the unittest tests for pyuic.
+Fixed the last pyuic3 bugs related to embedded images.
+Added the -test flag to pyuic3 to support fully automated unittest tests.
+
+
+2003/04/26 15:24:45 phil
+Released as v3.6.
+
+
+2003/04/26 14:36:12 phil
+Fixed tmake related breakages introduced with SIP v4 support in .pro files.
+
+
+2003/04/26 13:58:00 phil
+Fixed bug in concatanating source files.
+
+
+2003/04/23 14:53:00 phil
+Changed to the C++ style operators where possible.
+
+
+2003/04/22 16:05:10 phil
+Adjusted handwritten code for Python slots so that it will be compatible with
+SIP v3 and v4.
+QStringList.__getitem__ will now handle extended slices.
+
+
+2003/04/18 22:17:26 phil
+Tracked the latest QScintilla changes.
+
+
+2003/04/16 11:42:45 phil
+Fixed build.py for when SIP v4 is used.
+Python v2.3 is now required if SIP v4 is being used.
+Changed QCustomEvent.data() to deal with the changed support of SIP_PYOBJECT.
+
+
+2003/04/13 15:42:08 phil
+Temporarily made some handrwritten code dependent on SIP v3 while debugging
+SIP v4.
+Fix to pylupdate from Detlev.
+Fix to pyuic3 related to pixmaps.
+
+
+2003/04/07 11:52:33 phil
+QCommonStyle is now always included (to fit with Qt v3), but it should still be
+configured properly for the Zaurus.
+
+
+2003/04/04 14:24:00 phil
+Fixed typo in qpixmap.sip where some Qt v3 methods had been added to the Qt v2
+definition.
+Fixed some pyuic3 problems with embedded and external images.
+
+
+2003/04/04 10:32:45 phil
+SIP v4 related fixes to %VirtualCode.
+Fixed some sipParseArgs() format bugs in qtxml handwritten code.
+Added missing /TransferThis/ from QTableItem (and derived classes) ctors.
+Added other missing transfer flags from some QTable methods.
+
+
+2003/04/01 20:44:55 phil
+Added support for the educational version.
+Don't delete the .lib and .exp files as part of the installation on Windows.
+Added the -j, -r and -t flags to build.py based on patches from Hans-Peter
+Jansen.
+Changed all sipNames to the new style.
+
+
+2003/03/31 23:39:02 phil
+Made sure Python.h is included before stdio.h for LFS support under Solaris.
+Removed all uses of %ExportedHeaderCode for compatibility with SIP v4.
+Implemented the %VirtualCode that is to be used with SIP v4.
+Fixed some bugs in existing %VirtualCode.
+Removed QTextEdit.getFormat() and QTextEdit.getParagraphFormat() as they are
+undocumented and marked as "don't use".
+
+
+2003/03/26 22:21:58 phil
+Slightly changed the implementation of QObject.sender() to maintain
+compatibility with SIP v4.
+The build process no longer checks for sipQt.h as it isn't in SIP v4.
+Added a missing #include in qnetwork.sip that only showed up with SIP v4.
+
+
+2003/03/25 17:52:22 phil
+Work around the problem that qmake doesn't like targets called "qt". (For
+SIP v4.)
+
+
+2003/03/21 00:20:19 phil
+Reverted the "fix" for libqassistantclient on HP-UX, and wait to see if anybody
+complains.
+pyuic now includes the PyQt version number in the generated output.
+Fixed QPixmap handling bug in pyuic.
+
+
+2003/03/16 16:24:24 phil
+Tracked latest QScintilla changes.
+Fixed an internal build problem with the documentation.
+
+
+2003/03/15 23:42:55 phil
+Tracked the latest QScintilla changes.
+Brought the documentation up to date.
+
+
+2003/03/14 19:49:44 phil
+Added the missing %ConvertToSubClass code for the qtext module.
+
+
+2003/03/13 12:59:44 phil
+Tracked the latest QScintilla changes.
+
+
+2003/03/09 18:37:13 phil
+Tracked the latest QScintilla changes.
+
+
+2003/03/06 10:35:32 phil
+Tracked latest QScintilla changes.
+Fixes for the mdi.py example from Ken Godee.
+Further improvements to the build system's parsing of the Python version
+number.
+Fixes to the Qt class and pyuic to deal with the use of the internal
+WState_Polished.
+
+
+2003/03/03 18:03:41 phil
+Tracked the latest QScintilla changes.
+
+
+2003/02/27 16:21:33 phil
+Updates for Qt v3.2.1.
+Build system changes for alpha and beta versions of Python.
+
+
+2003/02/26 23:40:22 phil
+Tracked latest QScintilla changes.
+
+
+2003/02/26 19:31:26 phil
+Tracked latest QScintilla changes.
+Fixed QListBox.eventFilter().
+Added the qtui module.
+Added /Factory/ to everywhere it seems to be needed.
+Fixed Python 1.5.2 problems in the build system.
+Updated the menu.py example for Qt3 (thanks to Selim Tuvi).
+Fixed a bug in pyuic3 related to pixmaps in QListViewItems.
+Fixed a bug in the canvas.py example.
+PYQT_VERSION is now the version encoded as a hexadecimal value.
+Added PYQT_VERSION_STR as the ASCII version (unless it is a snapshot).
+
+
+2003/01/25 15:39:58 phil
+Fixed bug in QPointArray.putPoints().
+The sub-class convertors are now declared as static as SIP now puts them in the
+main module code.
+Changed the way that the QAssistantClient library is linked in to work around
+problems linking static and shared libraries under HP-UX.
+Fixed QSpinBox.eventFilter().
+
+
+2003/01/20 10:24:19 phil
+Applied Lars Heete's patch for QString for when Python is built with wide
+Unicode support.
+Tracked the latest QScintilla changes.
+
+
+2003/01/14 09:55:52 phil
+Added the version number to the %Module directives for SIP v4.
+
+
+2003/01/11 15:15:49 phil
+pyuic3 will look in the directory containing the .ui file for any .ui.h file.
+
+
+2003/01/06 09:35:29 phil
+pyuic3 now properly extracts embedded slot code that takes arguments.
+Improved the layout of the pyuic3 generated code slightly.
+
+
+2003/01/04 19:45:03 phil
+Updated the copyright notices for 2003.
+SLOT(), SIGNAL(), PYSIGNAL(), QT_TR_NOOP() and QT_TRANSLATE_NOOP() are now
+implemented as wrapped functions.
+PYQT_BUILD is now a string.
+
+
+2003/01/02 16:00:47 phil
+Fixed a bug in the build process for sip v3.
+
+
+2002/12/28 17:34:17 phil
+Changed the build system to cope with the changes that will be needed for
+SIP v4.
+
+
+2002/12/25 10:48:22 phil
+Added the checklists.py and drawlines.py examples from Oleksandr Yakovlyev.
+Added support for PEP 263 in the code generated by pyuic3.
+Tracked latest QScintilla changes.
+Implemented the QTextStream << QMainWindow and QTextStream >> QMainWindow
+operators.
+
+
+2002/12/20 18:51:37 phil
+Added the biff.py example from Oleksandr Yakovlyev.
+
+
+2002/12/20 18:46:10 phil
+QString.startsWith() was introduced in Qt v2.2.0 and not Qt v3.0.0.
+Added the updated buttongroups.py example from Oleksandr Yakovlyev.
+
+
+2002/12/17 15:33:12 phil
+pyuic3 will now extract Python code (tagged with "Python:") from the comments
+in a .ui file and copy it to the generated output.
+
+
+2002/12/17 13:20:37 phil
+Tracked the latest QScintilla changes, including the new QextScintillaPrinter
+class.
+
+
+2002/12/13 18:27:26 phil
+Change the build system to ensure that SIP .h files in the location specified
+by the -s flag are used in preference to any others in the standard Python
+location.
+Added the Qtopia QCopEnvelope class.
+
+
+2002/12/11 13:50:58 phil
+Ensure that generated Makefiles have a later timestamp than the project file.
+Released as v3.5.
+
+
+2002/12/10 23:12:00 phil
+Build change where FORCE wasn't being handled properly now that it is version
+dependent.
+Brought the NEWS file up to date.
+
+
+2002/12/10 14:21:09 phil
+Changes related to Qt v3.1.1.
+Made Qtopia v1.5.0 the baseline version.
+Added the AppLnk, AppLnkSet, Config, DateFormat, DocLnk, DocLnkSet,
+FileManager, FileSelector, FileSelectorItem, FontDatabase, Global, MenuButton,
+QDawg, QList<AppLnk>, QList<DocLnk> and Resource Qtopia classes.
+Added QArray<int> for Qt 1.x and Qt 2.x.
+
+
+2002/12/09 10:40:54 phil
+Minor changes for building under Qt/E.
+
+
+2002/12/08 17:56:27 phil
+Worked around the Qt Windows bug in QSemaphore += and -= so that the
+semaphore.py example now works properly with affected versions of Qt.
+
+
+2002/12/05 17:28:24 phil
+Added the script to create the test database for the SQL examples for
+PostgreSQL (thanks to Kenneth Godee).
+pyuic3 and pylupdate3 changes so that they compile against the Qt Professional
+Edition.
+Brought the documentation up to date.
+Build system change for Qt v3.0.x and FORCE in Makefiles.
+
+
+2002/11/29 10:59:32 phil
+Fixed bugs in pyuic3 related to menus and embedded images.
+Implemented QMenuItem.setText(), even though it is an internal class, because
+it is used in code generated by pyuic3.
+
+
+2002/11/26 12:50:45 phil
+eric is now no longer part of the distribution.
+Tracked the latest QScintilla changes.
+Removed the automatic test for -fno-exceptions and added the -f flag to the
+build system so that it can be explicitly set.
+Fixed a pyuic3 indentation bug.
+
+
+2002/11/22 22:43:29 phil
+Tracked the latest QScintilla changes.
+
+
+2002/11/22 10:15:46 phil
+Fixed a couple of bugs in pyuic3's handling of embedded images.
+
+
+2002/11/21 18:57:34 phil
+Tracked the latest QScintilla changes.
+
+
+2002/11/18 19:36:53 phil
+The missing Windows QEventLoop methods should be added to Qt v3.1.1.
+Fixed generation of QString::null in pyuic3.
+Tracked latest QScintilla changes.
+
+
+2002/11/14 22:44:42 phil
+Fixed problems compiling against Qt v3.0.x introduced with the support for Qt
+v3.1.0.
+
+
+2002/11/14 22:32:14 phil
+Minor build changes for Windows.
+Removed the QEventLoop methods that seem to be missing under Windows.
+QGLColormap was actually introduced in Qt v3.0 rather than Qt v3.1.
+
+
+2002/11/13 20:23:43 phil
+Tracked the latest QScintilla changes.
+
+
+2002/11/11 11:59:24 phil
+Added the missing QDockWindow.drawFrame() and QGLWidget.reparent() methods.
+The build system will now recognise Qt v3.1.0.
+Added the QAssistantClient, QEventLoop, QGLColormap, QIconFactory,
+QIMComposeEvent, QMutexLocker and QSyntaxHighlighter Qt 3.1.0 classes.
+QListView.sort() is now virtual for Qt3.
+Fixed a bug in the widgets.py example for both Qt2 and Qt3.
+Updated pyuic from Qt 3.1.0.
+Added the qCompress and qUncompress Qt 3.1.0 functions.
+
+
+2002/11/06 23:56:57 phil
+Fixed QWidgetStack.addWidget().
+
+
+2002/11/05 15:08:21 phil
+Addition of new licenses to the internal build system.
+
+
+2002/11/03 20:15:36 phil
+Tracked the latest version of QScintilla, including updating to Scintilla
+v1.49.
+
+
+2002/10/25 19:00:47 phil
+Updated the canvas.py example.
+Tracked the latest QScintilla changes.
+
+
+2002/10/24 08:55:46 phil
+Tracked the latest QScintilla changes.
+
+
+2002/10/22 21:28:20 phil
+Tracked the latest QScintilla changes.
+
+
+2002/10/21 21:25:52 phil
+Tracked the latest QScintilla changes.
+
+
+2002/10/20 22:28:46 phil
+Tracked the latest changes to QScintilla.
+Added the missing QMainWindow.lineUpDockWindows().
+
+
+2002/10/19 18:43:13 phil
+Tracked the latest changes to QScintilla.
+
+
+2002/10/18 17:30:24 phil
+More build system changes to fix directory names containing spaces.
+Added the QextScintillaLexerCPP, QextScintillaLexerCSharp,
+QextScintillaLexerIDL, QextScintillaLexerJava and QextScintillaLexerJavaScript
+classes.
+Added support for Qt v3.0.6.
+
+
+2002/10/12 23:45:52 phil
+Tracked the latest QScintilla changes.
+QStringList.__getitem__() now handles slices and negative indices properly.
+
+
+2002/10/11 14:11:53 phil
+Fixed the build system where the Python directory path contains spaces.
+Another go at fixing the internal build system so that it generates .sip files
+for the GPL version that support both X11 and Qt/E.
+Updated the QScintilla bindings.
+
+
+2002/10/06 21:21:05 phil
+Fixed a silly internal build system bug preventing the qwindowdefs_qws.sip from
+being included in the GPL version.
+
+
+2002/10/06 16:04:31 phil
+Tracked the latest changes to QextScintilla including the addition of
+QextScintillaLexer and QextScintillaLexerPython.
+
+
+2002/10/05 15:03:01 phil
+Fixed the internal build system to make sure Qt/Embedded support isn't stripped
+out of the GPL version.
+
+
+2002/10/05 13:36:58 phil
+Changed the internal build system so that internal development versions are
+marked as such.
+The user build system now handles conflicting licenses.
+pyuic and pylupdate should now build using the professional edition of Qt3.
+Added support for margins and markers to QextScintilla.
+
+
+2002/10/03 10:42:28 phil
+Synchronised to the latest QScintilla snapshot.
+
+
+2002/10/01 17:38:18 phil
+Fixed the i18n example script.
+Changed the qtext module build for QScintilla under Windows.
+
+
+2002/09/30 15:32:53 phil
+Added the QextScintillaBase.SendScintilla() overload.
+
+
+2002/09/28 08:57:26 phil
+Further separated out the Windows .sip files.
+Added QextScintillaBase.Colourise().
+Fixed the problem with QTextEdit.find().
+
+
+2002/09/22 00:39:05 phil
+Added eric's missing ViewManager.py file to CVS.
+
+
+2002/09/22 00:37:14 phil
+Fixed the internal build system to copy eric's pixmaps directory properly.
+
+
+2002/09/21 17:58:08 phil
+Updated eric to v2.1.4 (plus a later patch).
+The internal build system now strips down the .sip files for the non-commercial
+version.
+
+
+2002/09/18 08:36:18 phil
+Added the qtext module containing support for QScintilla.
+
+
+2002/09/13 07:20:57 phil
+Fixed QFontDatabase.families() for Qt3.
+
+
+2002/09/10 12:55:34 phil
+Minor documentation changes.
+Released as v3.4.
+
+
+2002/09/08 21:38:49 phil
+Added the missing lib/LICENSE.nc.short.
+
+
+2002/09/08 21:37:30 phil
+Added the wtypes.h file to the definitions of MSG and POINT.
+
+
+2002/09/08 12:20:10 phil
+The user now has to explicitly accept any non-GPL license.
+
+
+2002/09/07 20:50:13 phil
+Added QApplication.winEventFilter(), QWidget.winEvent(), MSG and POINT under
+Windows.
+
+
+2002/09/06 17:48:11 phil
+Added the new licenses and changed the internal build process to support them.
+Updated the NEWS file.
+
+
+2002/09/02 12:05:21 phil
+Added a comment to the Signal/Slot documentation about slot reference counts.
+Added the mdi.py example from Sadi Kose.
+Added the progress.py example from Hans-Peter Jansen.
+More license related hooks.
+
+
+2002/08/27 19:09:22 phil
+Added the canvas example from Sadi Kose.
+Split qwindowdefs.sip into generic and platform specific variants.
+Changed the internal build system to support different platforms.
+Added a delay to the build system before running make to avoid potential
+timestamp problems.
+
+
+2002/08/17 00:48:22 phil
+Added Detlev's i18n example.
+Added the latest version of eric from Detlev.
+Added Fredrik Juhlin's patch to the build system to support debug builds.
+
+
+2002/08/12 14:06:56 phil
+Added helpviewer as a standalone application.
+
+
+2002/08/11 20:41:33 phil
+Added QT_TR_NOOP() and QT_TRANSLATE_NOOP().
+Added the pylupdate program from Detlev.
+
+
+2002/08/10 20:01:47 phil
+Fixed problems with QObject.tr() and QObject.trUtf8().
+Brought the NEWS file up to date.
+
+
+2002/08/06 19:45:26 phil
+Build system fixes for Python 1.5.2.
+
+
+2002/08/05 18:02:08 phil
+More eric changes from Detelev.
+
+
+2002/07/29 20:54:56 phil
+Another eric update from Detlev, including the help browser.
+
+
+2002/07/29 14:16:11 phil
+Added QTextEdit.WrapPolicy.AtWhiteSpace as it isn't clear if this is deprecated
+or not. (The header file says one thing, the documentation says the opposite.)
+
+
+2002/07/26 13:54:48 phil
+Fix a problem with the build system if OpenGL wasn't installed.
+
+
+2002/07/22 21:40:15 phil
+Added @BL_INCLUDEPATH@ to the project files for pyuic2 and pyuic3.
+Eric's .py files are now compiled by the build system.
+
+
+2002/07/21 23:14:03 phil
+Added Detlev's latest patches for eric, including the new qtunittest. Updated
+the documentation and build system accordingly.
+
+
+2002/07/20 18:30:07 phil
+Added "opengl" to the qtgl project file template.
+Changed the build system so that it uses "opengl" when necessary.
+
+
+2002/07/12 13:04:44 phil
+Fixed a problem detecting the Qt version in the build system.
+Released as 3.3.2.
+
+
+2002/07/12 10:20:20 phil
+More internal build system changes.
+
+
+2002/07/11 23:09:40 phil
+Internal build system changes.
+
+
+2002/07/11 12:07:40 phil
+Added missing /TransferThis/ to all relevant QListBoxText and QListBoxPixmap
+ctors.
+
+
+2002/07/09 22:07:10 phil
+Added support for Qt 3.0.5.
+Released as 3.3.1.
+
+
+2002/07/07 19:20:54 phil
+More eric patches from Detlev.
+Windows fixes for the build system.
+Released as 3.3.
+
+
+2002/07/06 13:35:41 phil
+More eric patches from Detlev.
+Updated SQL examples from Hans-Peter.
+Fixed a bug in pyuic3 when extracting Python slot code when the slot had an
+argument.
+
+
+2002/07/05 21:56:20 phil
+Backed out the change in the order of attempts to convert Python objects to
+QStrings so it is now Unicode objects before string objects.
+
+
+2002/07/05 17:59:16 phil
+Fixed a few indentation issues with the dirview examples.
+Fixed the same bug in every mapped type based on the QValueList template.
+
+
+2002/07/05 08:54:46 phil
+More eric patches from Detlev.
+QSqlRecordInfo is now implemented as a Python list of QSqlFieldInfo instances.
+The build system now ignores qmake if present when building for Qt 1.x and 2.x.
+
+
+2002/07/04 10:08:24 phil
+Still another attempt at a portable features generator.
+
+
+2002/07/04 10:02:04 phil
+Another attempt to make the C++ program that generates the feature flags more
+portable.
+
+
+2002/07/03 17:43:43 phil
+Build system changes for Windows.
+Released as 3.3rc3.
+
+
+2002/07/02 22:13:50 phil
+Fix a Python warning in build.py.
+
+
+2002/07/02 18:34:32 phil
+Changes to the build system for the qtpe module.
+
+
+2002/07/02 14:55:45 phil
+More eric patches from Detlev.
+Added the missing QString.compare() and QString.localeAwareCompare() overloads.
+Changed the build system in line with the way SIP now handles features.
+
+
+2002/06/30 16:24:16 phil
+Minor changes to build system messages.
+Removed support for the -r flag in the build system as tmake handles -fno-rtti.
+Added the -e flag to the build system to explicitly specify the location of the
+SIP header files (usually used when cross compiling).
+More eric patches from Detlev.
+Fixed QDataBrowser.setSqlCursor().
+
+
+2002/06/29 18:57:01 phil
+The build system now determines the Qt version by parsing qglobal.h rather than
+running a program (which is no good when cross compiling).
+The sipQtFeatures.h file is only generated by the build system is it doesn't
+already exist (again to help cross compiling).
+Updated the SQL examples.
+Fixed an SQL related bug in pyuic3.
+Added %MemberCode to QDataTable.setSqlCursor() to transfer ownership of the
+cursor if the autoDelete flag is set.
+
+
+2002/06/29 13:09:51 phil
+The build system now installs eric for Qt3.
+More eric patches from Detlev.
+
+
+2002/06/28 22:45:22 phil
+More build.py fixes.
+Changed the build system so that project files are restored to their original
+contents.
+Added the -c flag to the build system to concatenate a module's C++ files prior
+to compilation. Compiling PyQt on my 750MHz PIII now takes 10 minutes. (Thanks
+to Jim Bublitz and Ricardo Cardenes.)
+
+
+2002/06/28 12:45:25 phil
+Added the missing qtpemod.sip.
+Added the missing /TransferThis/ to the obsolete QToolBar ctor.
+Added the missing %MemberCode for QStyle.getButtonShift(),
+QStyle.scrollBarMetrics() and Qstyle.tabbarMetrics().
+More eric patches from Detlev Offenbach.
+Added Hans-Peter Jansen's SQL examples.
+Fixed a bug in the build system where the path to tmake was explicitly
+specified.
+Added the -r flag to the build system to explicitly enable -fno-rtti.
+Released as 3.3rc2.
+
+
+2002/06/23 19:44:58 phil
+Added support for the evaluation version of Qt to the build system.
+Applied more eric patches from Detlev Offenbach.
+SQL related fixes for pyuic for Qt3.
+
+
+2002/06/22 14:29:05 phil
+Applied a couple of eric patches from Detlev Offenbach.
+Released as 3.3rc1.
+
+
+2002/06/22 00:53:57 phil
+The documentation is now up to date.
+Added notes about the limitations on custom editor widgets to the
+QSqlPropertyMap documentation.
+The default installation directory for pyuic under UNIX/Linux is now
+/usr/local/bin rather than where the Python executable is installed.
+Fixed a bug with the build system under Windows.
+Fixed a problem with QVariant where a numeric value would be recognised as a
+QKeySequence.
+Added the -i flag to build.py to allow the directory containing the Qt header
+files to be explicitly specified.
+
+
+2002/06/20 21:33:34 phil
+Fixed bug in QDataTable that stopped in working properly.
+
+
+2002/06/20 18:52:31 phil
+Added the qmag.py example script from Hans-Peter Jansen.
+Added Christian Bird's notes about his pyuic patch.
+Changes to the build system to support Qt/Embedded.
+Changes to the build system to handle the lack of site-packages under Windows
+before Python v2.2.
+
+
+2002/06/19 17:43:26 phil
+Minor changes to eric so that it seems to work under Qt3.
+
+
+2002/06/19 17:29:06 phil
+Applied Christian Bird's patch to pyuic for Qt3 to extract slot code written in
+Python.
+
+
+2002/06/19 17:14:00 phil
+Added the missing qtsqlmod.sip.
+
+
+2002/06/19 07:56:07 phil
+Added the missing /Transfer/ from QCanvasPixmapArray.setImage(),
+QDataTable.installEditorFactory(), QDataTable.installPropertyMap() and
+QSqlForm.installPropertyMap().
+Added Hans-Peter Jansen's bigtable.py, lineedits.py, smalltable.py and
+tablestatistics.py example scripts.
+Added the missing qxmlmod.sip.
+
+
+2002/06/16 23:15:17 phil
+Minor build system changes as a result of moving SIP to its new build system.
+
+
+2002/06/16 15:17:01 phil
+Changes to the new build system so that it works under Windows.
+Removed all vestiges of the old build system.
+
+
+2002/06/14 16:35:41 phil
+The new build process now works with Python v1.5.x.
+
+
+2002/06/14 08:46:36 phil
+Changes needed to the build system to support tmake.
+The compiled Python scripts will now be installed properly if qmake is used.
+
+
+2002/06/13 18:05:24 phil
+More minor build changes related to process for generating automatic snapshots.
+
+
+2002/06/13 17:48:28 phil
+Minor build changes.
+
+
+2002/06/13 16:16:19 phil
+Added the missing QFontMetrics.boundingRect() variant and QFontMetrics.size().
+Removed the incorrect /TransferBack/ from QTabBar.removeTab().
+The new build system has been tested on Python v2.2/qmake/Linux.
+
+
+2002/06/04 23:33:33 phil
+Remove the last of the BlackAdder related files.
+Fixed the .spec file.
+More updates related to the new build system.
+
+
+2002/06/04 23:26:00 phil
+Lots of tidying up of redundant files for the new build system.
+Set the release number to v3.2.4 to align with the last official release.
+
+
+2002/06/04 23:04:40 phil
+Initial import of PyQt to the Riverbank Computing repository.
+
+
+2002/06/01 11:08:36 phil
+Correction to signature of QDir.rename().
+Added README.SunOS.
+QValueList<QPixmap> is now fully implemented as a mapping to a Python list of
+QPixmap instances.
+Added the missing QDoubleValidator.setBottom(), QDoubleValidator.setDecimals(),
+QDoubleValidator.setTop, QIntValidator.setBottom() and QIntValidator.setTop().
+
+
+2002/05/21 14:40:56 phil
+Added the missing /Transfer/ to QClipboard.setData().
+Fixed a pyuic3 bug that generates an extra ')' when using the -subimpl flag.
+
+
+2002/05/17 19:04:33 phil
+Minor documentation changes.
+Released as v3.2.4.
+
+
+2002/05/16 15:28:17 phil
+Removed MacOS X support from the build process - until SIP v4.
+
+
+2002/05/15 17:11:34 phil
+Modules are now created as simple .so files, ie. without any release number.
+The obsolete QMainWindow.setToolBarsMovable() was replaced with
+QMainWindow.setDockWindowsMovable().
+
+
+2002/05/15 11:31:23 phil
+Fixed a bug in QInputDialog.getText() for Qt3.
+
+
+2002/05/11 17:38:20 phil
+Documentation changes for the latest release.
+Released as v3.2.2.
+
+
+2002/05/09 00:19:11 phil
+Fixed QPrinter ctor for Qt3.
+
+
+2002/05/07 21:17:32 phil
+Added information about "--without-x" to the MacOS installation notes.
+Put the -module flag back in for MacOS.
+Fixed a bug in pyuic3 where QPixmaps needed to be explicitly converted to
+QIconSets.
+
+
+2002/05/05 13:42:46 phil
+Added a version that supports the MacOS evaluation version to the list of
+"common" source packages.
+Released as v3.2.1.
+
+
+2002/05/03 22:35:24 phil
+Added INSTALL.MacX.
+Removed -module from LDFLAGS as it seemed to make things worse on MacOS.
+Released as v3.2.
+
+
+2002/05/01 22:49:37 phil
+Updated the documentation regarding support for void *.
+
+
+2002/04/30 07:52:35 phil
+configure will now search fro Qt v3.0.4.
+Changes required for Qt v3.0.4.
+Another minor bug fix related to X11 support and Qt/E.
+
+
+2002/04/29 18:10:04 phil
+Added README.Linux describing the broken Qt packages in Mandrake and Debian.
+
+
+2002/04/29 10:17:47 phil
+configure doesn't search for X11 for Qt/E.
+Added the QPEMenuBar and QPEToolBar classes.
+
+
+2002/04/27 14:19:22 phil
+Removed the bug description at the top of the semaphore.py example now that it
+is fixed.
+Changed %ConvertToSubClassCode for QObject to conform to the latest SIP.
+Replaced calls to sipMapCppToSelf() with sipMapCppToSelfSubClass() where
+appropriate.
+
+
+2002/04/22 22:56:31 phil
+Changed the Windows installation instructions to put things in site-packages.
+Fixed the missing QT_THREAD_SUPPORT when building sip_helper on Windows.
+Added -module to all LDFLAGS.
+
+
+2002/04/21 19:08:25 phil
+QCustomEvent now expects a PyObject * as its data.
+
+
+2002/04/20 22:43:13 phil
+Convert instances of the internal class QTableHeader to QHeader.
+Fixed a bug in pyuic for Qt3 relating to the format of slot signatures.
+
+
+2002/04/20 16:02:00 phil
+Added missing /Transfer/ to QTable.setCellWidget() and QTable.setItem().
+
+
+2002/04/18 23:17:07 phil
+Disabled QFont.dirty(), QClipboard.ownsClipboard(), QClipboard.ownsSelection()
+and qAppName() for MacOS.
+
+
+2002/04/18 12:10:42 phil
+Updated the NEWS file regarding MacOS X support.
+qt.py now defines PYQT_VERSION as the PyQt release as a string.
+configure no longer fails if X11 couldn't be found (for MacOS X).
+
+
+2002/04/17 19:10:15 phil
+Added support for MacOS X (untested).
+
+
+2002/04/17 09:00:35 phil
+Added the missing /TransferThis/ options from all QCanvasItem ctors.
+Fixed QCanvasItem.setCanvas() to handle acquiring and losing a parent canvas.
+
+
+2002/04/16 14:17:44 phil
+Removed all the /ReleaseLock/ options.
+Added Py_BEGIN_ALLOW_THREADS, Py_END_ALLOW_THREADS, SIP_BLOCK_THREADS and
+SIP_UNBLOCK_THREADS to all handwritten code.
+Thread support is only enabled if it is also enabled in Python.
+Added /CreatesThread/ and /NewThread/ to QThread.
+
+
+2002/04/14 18:07:56 phil
+Reinstated PyQtDisownTopLevelWidgets() because it solves the problem where we
+can't guarantee that the order in which qApp and the top level widgets will be
+destroyed.
+Changed -MT to -MD for Windows (thanks to Paul Felix).
+
+
+2002/04/06 17:38:53 phil
+Added the %ConvertToSubClassCode for QObject and all its sub-classes.
+Added the missing QToolTip.setEnabled() and QToolTip.enabled() methods.
+Fixed the build process so that the naming of the Qtopia package is more
+consistent with other packages.
+
+
+2002/03/30 00:50:10 phil
+Make sure the ChangeLog is distributed and that autom4te.cache isn't.
+Merged the different versions of QEvent.Type.
+Fixed a bug in QStringList.__getitem__().
+
+
+2002/03/22 10:52:29 phil
+Released as v3.1.
+Slight change to the build process so make sure that Windows Makefiles always
+use the very latest Qt library.
+
+
+2002/03/22 10:40:21 phil
+configure will now use qt-mt in preference to qt if it finds both.
+Removed build.py from the distribution until it is finished.
+Added /Transfer/ to QThread.postEvent().
+Added /ReleaseLock/ to QThread.postEvent(), which might not be required but
+shouldn't do any harm.
+
+
+2002/03/20 15:58:33 phil
+configure now handles Qt v3.0.3.
+Integration of uic changes in Qt v3.0.3.
+Applied Rene Hogendoorn's latest patch for slot signatures for pyuic3.
+
+
+2002/03/19 00:19:32 phil
+Removed the rebuild-src and rebuild-doc targets as they are no longer
+maintained.
+Documentation changes prior to the release of v3.1.
+
+
+2002/03/17 17:37:38 phil
+Removed the import of GLUT from the gears.py example.
+
+
+2002/03/12 19:31:13 phil
+Added the missing build instructions for the qtgl module in INSTALL.win32.
+Upgraded to autoconf-2.53 and automake-1.6.
+Fixed a couple of pyuic3 bugs related to SQL forms (thanks to Rene Hogendoom).
+
+
+2002/03/09 18:15:48 phil
+Various build changes for Windows.
+Fixed a bug in QDomDocument.setContent().
+Fixed the qtxml module so that it doesn't get a DLL load failure on Windows.
+
+
+2002/03/04 17:18:31 phil
+A couple of changes to eric to reflect the new module structure.
+Fixed QThread for Qt v2.
+Fixed QTable.setNumRows() in pyuic for Qt v3.
+
+
+2002/02/25 16:26:19 phil
+Some enum definitions have been rationalised now that SIP supports individual
+values having different versions.
+
+
+2002/02/24 14:59:43 phil
+Went through everything adding /ReleaseLock/ to methods that might block.
+
+
+2002/02/24 01:36:06 phil
+configure now searches for Qt v3.0.2.
+Added QLineEdit.setPasswordChar() and QLineEdit.passwordChar() for Qt v3.0.2
+but left them commented out at they are marked as incompatible add ons.
+Updated pyuic3 from the changes in Qt v3.0.2.
+Added thread support, ie. QApplication.lock(), QApplication.unlock(),
+QApplication.locked(), QApplication.tryLock() and the QMutex, QSemaphore,
+QThread and QWaitCondition classes.
+Re-did all of the special methods following the SIP changes.
+
+
+2002/02/15 14:45:33 phil
+Added the missing QPixmap.grabWidget().
+
+
+2002/02/14 14:18:35 phil
+Fixed bug in pyuic fro Qt v3 related to "black" and "white".
+
+
+2002/02/08 15:51:02 phil
+Updated the documentation for the 3.1 pre-releases.
+The tr() methods now honour QT_NO_TRANSLATION.
+
+
+2002/02/08 11:54:11 phil
+More work on the new build system.
+Fixed a bug in eric for PyQt v3.
+Fixed a couple of QTable related bugs in pyuic for Qt v3.
+Fixed a QToolBar related bug in pyuic for Qt v3.
+Fixed bugs with QSqlCursor.
+
+
+2002/01/28 13:42:24 phil
+Fixed bug relating to escaping double quotes in pyuic for Qt v2.x.
+
+
+2002/01/28 11:09:08 phil
+Removed the Zaurus README.
+Changes to configure now that the sip library is a Python module.
+Added the start of an alternative build system driven by Python and using qmake
+or tmake.
+
+
+2002/01/09 11:47:32 phil
+Put version control into the qtpe module and changed the build system so that
+it uses a version compatible with both Qtopia and the Zaurus v1.02 ROMs.
+Updated README.Zaurus.
+Removed the qtpe module from the documentation until SIP is changed to be
+tolerant of missing version information.
+
+
+2002/01/08 20:17:11 phil
+Removed PyQtDisownTopLevelWidgets() from the QApplication and QPEApplication
+dtors because the Qt widget mapper doesn't delete the widgets in the map.
+
+
+2002/01/05 13:16:45 phil
+Added the warning about using flash devices as swap on the Zaurus.
+Added the missing QActionGroup.add() and QActionGroup.addSeparator() methods.
+Implemented enough additional features for the Large configuration of Qt/E.
+
+
+2002/01/04 23:32:42 phil
+Added the dragdrop example from Issac Trotts.
+
+
+2002/01/04 15:41:11 phil
+Added the Zaurus information.
+Minor updates to READMEs etc.
+
+
+2002/01/03 00:41:26 phil
+The build script now copes when tmake and/or sgmltools is missing.
+Added support to the build system for QPE.
+Added the qtpe module.
+Added the QPEApplication class (not yet working).
+Changed the build system so that there is only one instance of the helper code
+and it is more a part of the build system rather than being so closely tied in
+which SIP.
+configure now allows the directory where the Python modules are to be installed
+to be specified.
+
+
+2001/12/27 12:28:07 phil
+Fixed all Qt3 writeBlock() methods.
+Changes required by the latest SIP.
+Support for Qt/Embedded on the Sharp Zaurus.
+Removed the QDragResponseEvent internal class.
+Added the missing QImageTextKeyLang class.
+Added the missing QImage.dotsPerMeterX(), QImage.dotsPerMeterY(),
+QImage.setDotsPerMeterX(), QImage.setDotsPerMeterY(), QImage.offset(),
+QImage.setOffset(), QImage.textList(), QImage.textLanguages(),
+QImage.textKeys(), QImage.text() and QImage.setText() methods.
+Added the QValueList<QImageTextLangKey> mapped type.
+
+
+2001/12/09 11:38:47 phil
+configure now looks for Qt v3.0.1.
+The build system now handles Qt v3.0.1.
+.sip file changes needed by Qt v3.0.1.
+Updated pyuic3 from Qt v3.0.1.
+
+
+2001/12/06 11:03:29 phil
+Fixed more pyuic3 bugs.
+Fixed the ownership bug in all QCheckListItem ctors.
+
+
+2001/12/04 10:40:56 phil
+Fixed bugs in QSocket.readLine() and QSocket.readBlock().
+
+
+2001/12/01 18:37:31 phil
+Fixed QWidget.reparent().
+Removed the QDateTimeEditBase internal class.
+Bug fixes for pyuic3.
+configure now allows the location of zlib to be specified.
+Used AC_HELP_STRING throughout acinclude.m4.
+
+
+2001/11/25 18:27:27 phil
+Minor fixes for pyuic3.
+
+
+2001/11/17 14:48:19 phil
+Added the missing qInitNetworkProtocols() function to the qtnetwork module.
+Added the missing QRect.contains() variant.
+Changed QByteArray, QCString and QString %ConvertToTypeCode to convert None
+objects to empty instances.
+Changed QFileInfoList, QKeySequence, QList<QNetworkOperation>, QMemArray<int>,
+QObjectList, QPair<int,int>, QPtrList<QNetworkOperation>,
+QPtrList<QWindowsMime>, QStrList, QValueList<QUrlInfo>, QValueList<int> and
+QWidgetList %ConvertToTypeCode to handle None objects.
+Fixes to the .spec file.
+Fixed ownership issues with QWidget.reparent().
+
+
+2001/11/11 19:01:27 phil
+configure will search for Qt v2.3.2.
+Fixed bugs in pyuic for Qt3 (thanks to Andreas Gerstlauer).
+Fixed bug in Windows detection (thanks to Andreas Gerstlauer).
+Fixed the Qt3 QSizePolicy ctor.
+
+
+2001/10/28 10:33:03 phil
+Generated with the latest SIP.
+
+
+2001/10/26 23:33:45 phil
+Fixed the ChangeLog.
+
+
+2001/10/26 23:32:23 phil
+Changed the way Python special methods are defined to conform to the latest
+SIP.
+Added __unicode__ to QString for Python v2.2.
+Fixed a couple of bugs in pyuic for Qt3.
+Changed QString.__str__() to do the "right thing".
+
+
+2001/10/21 13:51:26 phil
+Fixed the new QImage ctor.
+Fixed the long standing problem converting a QString to Python using unicode().
+Fixed bugs with QFile.readBlock() and QFile.readLine().
+
+
+2001/10/19 23:34:04 phil
+Applied Alan Eldridge's patch for the .spec file.
+Made the second parameter to QObject.tr() and QObject.trUtf8() optional.
+Added the missing QImage ctor.
+Fixed pyuic for Qt3.
+
+
+2001/10/13 11:20:53 phil
+Fixed problem with QMenuData.insertItem() when the QKeySequence argument was
+omitted.
+Ported the remaining examples.
+
+
+2001/10/12 22:46:59 phil
+Minor fixes to get the SQL module to build.
+Created a separate examples directory for Qt3.
+Changes required for the final release of Qt v3.0.0.
+
+
+2001/10/12 10:19:27 phil
+Added the qtsql module.
+Added the QDataBrowser, QDataTable, QDataView, QEditorFactory, QGridView,
+QLibrary, QObjectCleanupHandler, QProcess, QSql, QSqlCursor, QSqlDatabase,
+QSqlDriver, QSqlEditorFactory, QSqlError, QSqlField, QSqlFieldInfo, QSqlForm,
+QSqlIndex, QSqlPropertyMap, QSqlQuery, QSqlRecord, QSqlRecordInfo, QSqlResult,
+QStyleFactory and QWindowsMime Qt3 classes.
+Implemented QPtrList<QWindowsMime>.
+Renamed QLineEdit.del() to QLineEdit.delChar().
+Renamed QMultiLineEdit.deleteChar() to QMultiLineEdit.delChar().
+Fixed QLineEdit super class for Qt3.
+
+
+2001/10/07 18:47:03 phil
+Updated the .spec file with the new modules.
+Fixed a bug in the build process.
+
+
+2001/10/06 18:20:00 phil
+Fixed QLayoutIterator.next().
+configure now handles multi-threaded Qt.
+Moved Canvas module classes to the new qtcanvas module.
+Moved Network module classes to the new qtnetwork module.
+Moved Table module classes to the new qttable module.
+Moved XML module classes to the new qtxml module.
+Added the QSound class.
+
+
+2001/10/04 21:33:48 phil
+Added the Qt3 classes QDateEdit, QDateTimeEdit, QTimeEdit, QErrorMessage,
+QPixmapCache and QSettings.
+Added the Qt2 class QDns.
+Added QCustomMenuEvent, QIMEvent and QTabletEvent to the list of new Qt3
+classes in the documentation.
+Restructure the top-level SIP files so that the documentation is completely
+separate.
+
+
+2001/09/30 10:48:01 phil
+Implemented QPair<int,int>.
+Bug fixing of revised hand-written code.
+Changes to get pyuic to compile against Qt3.
+
+
+2001/09/28 23:13:01 phil
+Upgraded to Qt v3.0.0Beta6.
+Changes required to handwritten code by the new sipParseArgs().
+Added the missing QObject.connect() variant.
+Renamed QDate.isValidDate() to QDate.isValid().
+Renamed QTime.isValidTime() to QTime.isValid().
+Renamed QFile.fileExists() to QFile.exists().
+Renamed QFile.removeFile() to QFile.remove().
+
+
+2001/09/23 20:04:21 phil
+Re-added QInterlaceStyle.
+Changes required by Qt v3.0.0 Beta5.
+Implemented QMenuItem as an opaque class.
+Added the missing QSGIStyle class.
+Added the missing QMenuData.findItem(), QMotifPlusStyle.drawMenuBarItem(),
+QMotifPlusStyle.drawPopupMenuItem(), QMotifStyle.drawPopupMenuItem(),
+QMotifStyle.extraPopupMenuItemWidth(), QMotifStyle.popupMenuItemHeight(),
+QPlatinumStyle.drawPopupMenuItem(), QPlatinumStyle.extraPopupMenuItemWidth(),
+QPlatinumStyle.popupMenuItemHeight(), QPopupMenu.drawItem(),
+QPopupMenu.itemHeight(), QStyle.drawPopupMenuItem(), QStyle.drawMenuBarItem(),
+QStyle.extraPopupMenuItemWidth(), QStyle.popupMenuItemHeight(),
+QWindowsStyle.drawMenuBarItem(), QWindowsStyle.extraPopupMenuItemWidth(),
+QWindowsStyle.popupMenuItemHeight().
+Added the QStyleOption Qt3 class.
+Classes converted to Qt3: QGL et al, QCDEStyle, QCommonStyle, QMotifPlusStyle,
+QMotifStyle, QPlatinumStyle, QStyle, QWindowsStyle.
+
+
+2001/09/21 17:12:07 phil
+The following classes were fully converted to Qt3: QFile, QFileDialog,
+QFileInfo, QFontDatabase, QFontDialog, QIconView, QIconViewItem, QInputDialog,
+QNetworkProtocol, QPaintDeviceMetrics, QPrintDialog, QPrinter, QProgressBar,
+QProgressDialog, QRadioButton, QSemiModal, QServerSocket, QSimpleRichText,
+QSizeGrip, QSocket, QSpinBox, QTabDialog, QTextBrowser, QTextStream, QUrl,
+QUrlOperator, QWhatsThis, QWidgetStack, QWizard, QWorkspace.
+Added the missing QFileIconProvider, QFontDialog, QTextBrowser and QWidgetStack
+private copy ctors.
+Added the missing QFileDialog.done(), QIconView.dropped(),
+QIconViewItem.dropped(), QNetworkProtocol.newChildren(),
+QPrintDialog.addButton(), QProgressDialog.forceShow(),
+QUrlOperator.newChildren() and QUrlOperator.startNextCopy() methods.
+Added the missing QIconDrag and QIconDragItem classes.
+Implemented QList<QNetworkOperation>, QPtrList<QNetworkOperation>,
+QValueList<QIconDragItem> and QValueList<QUrlInfo>.
+Added the missing TransferThis to the QPrintDialog ctor.
+Moved the QList<> and QPtrList<> templates to their own files.
+
+
+2001/09/21 00:32:29 phil
+Forgot to add the new qmemarray.sip file.
+
+
+2001/09/21 00:31:34 phil
+Fully converted the following classes to Qt3: QAction, QActionGroup,
+QColorDialog, QDial, QDom et al, QMessageBox, QPopupMenu, QPushButton,
+QScrollBar, QScrollView, QSplitter, QStatusBar, QTable, QTableItem, QTabWidget,
+QToolButton, QToolTip, QToolTipGroup.
+Added the following missing methods: QColorDialog.customColor(),
+QColorDialog.customCount(), QColorDialog.getRgba(),
+QColorDialog.setCustomColor(), QScrollBar.minValue(), QScrollBar.maxValue(),
+QScrollBar.setMinValue(), QScrollBar.setMaxValue(), QScrollBar.lineStep(),
+QScrollBar.pageStep(), QScrollBar.setLineStep(), QScrollBar.setPageStep(),
+QScrollBar.value(), QScrollBar.setValue(), QToolTip.hide(),
+QToolTipGroup.enabled(), QToolTipGroup.setEnabled().
+Added the missing QDir.match() variant.
+Removed the handling of QValueList<int> out of QSplitter and made it generic.
+Added the following Qt3 classes: QCheckTableItem, QComboItem.
+Removed QTabWidget.selected() as it is not part of the official API.
+
+
+2001/09/16 18:12:22 phil
+Removed the Transfer flag from the QWidget parameter to QLayout.add(),
+QGridLayout.addWidget(), QGridLayout.addMultiCellWidget(),
+QBoxLayout.addWidget() and QBoxLayout.insertWidget().
+Fixes to the build process so it works with the latest automake.
+
+
+2001/09/14 16:40:03 phil
+Added the missing QLayoutIterator.next() method.
+
+
+2001/09/14 15:17:17 phil
+Changes to QObject.tr() and QObject.trUtf8() so that they work as expected with
+Qt3.
+Put back the separate builds for Qt v2.3.0 and v2.3.1.
+Put back QPrinter.PageSize.Custom for Qt v2.3.1.
+Added the new /AutoGen/ option where needed.
+
+
+2001/09/09 16:26:16 phil
+QGrid, QLCDNumber, QListBox, QListBoxItem, QListBoxPixmap, QListBoxText,
+QMenuBar, QMenuData, QRangeControl and QSlider fully converted to Qt3.
+A QString or int can now be supplied whenever a QKeySequence is expected.
+The missing QListBox.isRubberSelecting(), QMenuBar.activateItemAt(),
+QMenuBar.focusInEvent(), QMenuBar.isDefaultUp(), QMenuBar.minimumSize(),
+QMenuBar.minimumSizeHint(), QMenuBar.setDefaultUp() methods have been added.
+
+
+2001/09/07 16:15:28 phil
+Added the new QKeySequence .sip file and remove the QInterlaceStyle .sip file.
+
+
+2001/09/07 16:13:22 phil
+Added the missing QAccel ctor.
+Added the missing QHeader.setUpdatesEnabled(), QHeader.showEvent() and
+QLineEdit.displayText() methods.
+Added the missing QColorDrag class.
+Converted all the Qt3 changes to Beta4.
+Added the QKeySequence Qt3 class.
+Fully converted QComboBox, QDialog, QDragObject, QGridLayout, QHeader, QLayout,
+QLineEdit, QUriDrag and QWidgetItem to Qt3.
+Removed the QBitArray related methods from QVariant.
+Removed the QInterlaceStyle class.
+Remove QPrinter.PageSize.Custom so that the v2.3.1 build is the same as v2.3.0.
+QObject.className() now works with Python classes.
+Upgraded to libtool-1.4.1.
+
+
+2001/09/02 17:13:50 phil
+Fully converted the following classes to Qt3: QButton, QButtonGroup, QCanvas et
+al, QCheckBox, QCheckListItem, QGroupBox, QLabel, QListView, QListViewItem.
+pyuic now generates double quoted strings rather than single quoted strings.
+Upgraded to autoconf-2.52 and automake-1.5.
+
+
+2001/08/15 19:18:39 phil
+Added the Qt3 classes QRegExpValidator and QTextEdit.
+Added the missing QPainter.pos() and QTranslator.messages() methods.
+Added all methods that use QDataStream now that it has been implemented.
+Removed QTableHeader as it isn't part of the documented API.
+Fully converted the QFrame, QHBox, QPainter, QPicture, QPointArray, QRect,
+QRegExp, QSessionManager, QStyleSheet, QStyleSheetItem, QTab, QTabBar,
+QTextCodec, QTextView, QTranslator, QTranslatorMessage, QVariant, QVBox and
+QWMatrix classes to Qt3.
+
+
+2001/08/14 16:10:26 phil
+Added the QDesktopWidget, QDockArea and QDockWindow Qt3 widgets.
+Fully converted the QApplication, QClipboard, QChar, QColorGroup, QDate,
+QDateTime, QFontMetrics, QIconSet, QMainWindow, QMimeSource,
+QMimeSourceFactory, QPalette, QString, QTime and QToolBar classes to Qt3.
+Added the missing QChar.nbsp, QChar.isLetterOrNumber(), QChar.mirroredChar(),
+QImage.inputFormatList(), QImage.outputFormatList(),
+QMimeSourceFactory.filePath(), QMimeSourceFactory.addFilePath() and
+QPalette.inactive() methods.
+Added the missing QString.append() and QString.prepend() variants.
+Renamed QTime.IsValidTime() to QTime.isValidTime().
+Made QList<QToolBar> a mapped type now that SIP can handle mapped templates.
+
+
+2001/08/10 18:03:56 phil
+Final documentation changes for v2.5.
+
+
+2001/08/10 14:54:29 phil
+Fixed typo in the Qt3 versioning.
+
+
+2001/08/08 23:28:38 phil
+User events get converted to QCustomEvents rather than QEvents.
+Finally decided to implement Display * as void *.
+QEvent etc., QFont, QFontInfo, QMultiLineEdit and QTableView converted to Qt3.
+
+
+2001/08/07 22:37:16 phil
+QWidget is now converted to Qt3.
+Added the missing QWidget.customEvent().
+Changed Display to be a class rather than a struct.
+Fix a problem with the normal build process caused by the new Qt3 stuff.
+Added the temporary qt3.sip-in file.
+
+
+2001/08/07 19:57:06 phil
+Fixed a typo in the clean target.
+Added Qt3 support for QColor, QCursor, QObject, QPaintDevice, QPixmap and
+QSizePolicy.
+Added QColor.getHsv().
+Added the Display opaque structure.
+Added qt_xdisplay(), qt_xscreen() and qt_xrootwin().
+Added QPaintDevice.x11Display(), QPaintDevice.x11AppDisplay,
+QPaintDevice.x11SetAppDpiX() and QPaintDevice.x11SetAppDpiY().
+Added the missing QPixmap.save() variant.
+
+
+2001/08/06 19:57:09 phil
+Build changes for the qtgl module under Windows.
+The HTML documentation is no longer put into a compressed tar file.
+Fixed a minor bug in the widgets.py example.
+Changed the configure test for OpenGL support.
+
+
+2001/08/01 22:15:38 phil
+More minor build changes.
+Fixed QApplication.winVersion().
+Fixed Windows pyuic Makefiles.
+
+
+2001/07/30 22:55:33 phil
+Changed the build process so that the current version doesn't have to be the
+latest version.
+Changed AMTAR to TAR.
+Generate Makefiles that support Qt-NC (untested).
+
+
+2001/07/27 22:18:26 phil
+The different types that are mapped to Python lists will now return an empty
+list (rather than None) when given a NULL pointer.
+Fixed a problem detecting -fno-exceptions.
+Added QDataStream.
+Added the QDom classes.
+
+
+2001/07/21 15:46:35 phil
+Used the new %Timeline and %ImportWithTimeline directives.
+Added version control to the qtgl module.
+
+
+2001/07/20 23:19:06 phil
+Fixed the memory leaks related to sipMapCppToSelf() in hand-written code.
+Changed the build system to handle different versions of PyQt for different
+versions of Qt.
+
+
+2001/07/17 07:44:09 phil
+Changes needed by the latest SIP - Version and %MappedType.
+Fixed QScrollView.addChild().
+
+
+2001/06/29 16:24:55 phil
+Minor changes to the BlackAdder DistUtils setup.
+
+
+2001/06/28 23:34:54 phil
+Addedpost-hooks to complement the existing pre-hooks.
+Added the Pizza example project.
+
+
+2001/06/24 15:12:44 phil
+Minor changes to pyuic for BlackAdder.
+Moved the BlackAdder specific stuff to its own directory.
+
+
+2001/06/19 15:54:23 phil
+Fixed the problems with QLineEdit.event() and QMultiLineEdit.event().
+
+
+2001/06/18 10:35:45 phil
+Re-enabled QInterlaceStype for Qt v2.3.1+.
+configure now looks for Qt v2.3.1.
+Added QPrinter.PageSize.Custom.
+Updates to pyuic from Qt v2.3.1.
+
+
+2001/06/02 17:02:01 phil
+Fixed the QTranslatorMessage documentation.
+
+
+2001/05/31 21:01:16 phil
+Added the missing QTranslator methods.
+Added the QTranslatorMessage class.
+
+
+2001/05/30 21:22:42 phil
+Fixed incorrect definition of QTextView.setText().
+Added the /Constraint/ argument everywhere it was needed.
+Removed all methods that could never be called because they had different C++
+signatures, but the same Python signatures.
+
+
+2001/05/22 19:36:24 phil
+Added the missing QWidget.reparent() variant.
+Added the qtgl module.
+
+
+2001/05/14 20:14:36 phil
+Removed the QInterlaceStyle class untill Trolltech fix the Windows port.
+
+
+2001/05/13 17:16:43 phil
+Added the missing variant of QInputDialog.getText().
+
+
+2001/05/07 16:50:14 phil
+Added fix to pyuic for escaping single quotes properly.
+
+
+2001/04/29 16:21:20 phil
+Minor configuration changes.
+
+
+2001/04/22 15:26:48 phil
+Added the missing QFileDialog.getExistingDirectory() method.
+Upgraded to automake v1.4d.
+
+
+2001/04/19 22:10:42 phil
+Final changes for the release of v2.4.
+
+
+2001/04/15 00:38:40 phil
+Added missing methods to QMotifStyle.
+Added missing enum value to QPalette.
+Updated the themes.py example.
+
+
+2001/04/13 13:52:21 phil
+Added QCustomEvent.
+
+
+2001/04/08 13:24:53 phil
+Added the missing final parameter to QMultiLineEdit.insertAt().
+Updated the documentation ready for v2.4.
+
+
+2001/03/05 23:13:16 phil
+Added the new methods and classes implemented in Qt v2.3.0-beta1.
+Updated pyuic from Qt v2.3.0-beta1.
+
+
+2001/03/04 16:22:05 phil
+Fixed bugs with argument parsing in some handwritten code. Only came to light
+with Python 2.1b1.
+
+
+2001/03/01 19:51:38 phil
+The generated configure now uses the Python interpreter to find where Python is
+installed.
+
+
+2001/02/16 10:53:21 phil
+Added a couple of methods missing from QLineEdit.
+
+
+2001/02/04 14:39:56 phil
+Configure now checks for Qt v2.2.4 and Python v2.1.
+Release as v2.3.
+
+
+2001/01/23 19:23:06 phil
+Added the BlackAdder project files.
+Various packaging changes for BlackAdder.
+
+
+2001/01/09 11:45:51 phil
+Added some missing QSlider methods.
+Added some documentation about multiple inheritance.
+
+
+2000/12/24 18:25:52 phil
+Fixed a couple of bugs in the examples.
+Updated the documentation ready for v2.3.
+
+
+2000/12/19 14:51:01 phil
+Added the pre-hooks just before all calls to the Qt event loop.
+Changed the QApplication hook to use the new sipCallHook() function.
+
+
+2000/12/13 20:15:55 phil
+Really fixed pyuic this time.
+pyuic now tries to do something sensible with custom widgets - it assumes they
+are in another module and tries to import them. The module name is the header
+file name specified in Qt Designer with any extension removed.
+
+
+2000/12/13 18:00:46 phil
+Repaired some damage to pyuic caused when integrating the Qt v2.2.3 changes.
+
+
+2000/12/13 10:42:19 phil
+Changed the configuration to look for Qt v2.2.3.
+Updated pyuic to track changes to uic in Qt v2.2.3.
+
+
+2000/12/12 17:46:14 phil
+Added QCustomMenuItem.
+Added the missing QMenuData.insertItem methods.
+Changed all the handwritten occurences of sipParseArgs() to use the new version
+that supports better error reporting.
+
+
+2000/12/11 12:15:48 phil
+Added the addressbook.py, buttongroups.py and menu.py examples.
+Removed the deprecated behaviour of repr() for QString, QCString and
+QByteArray.
+
+
+2000/12/03 17:44:41 phil
+Documented that you can't sub-class QCanvasItem.
+repr() of QString et al. now does the same as repr() of any other class.
+
+
+2000/12/01 01:31:48 phil
+Slight changes to some of the tutorials so that they will run with Python 1.x.
+Updated the application.py example.
+
+
+2000/11/30 15:57:54 phil
+Modified the tutorial example scripts to match the C++ ones with Qt v2.x.
+Removed the old Qt v1.x example scripts.
+
+
+2000/11/29 09:37:56 phil
+Added the missing QMessage.setTextFormat() and QMessage.textFormat().
+
+
+2000/11/24 12:04:04 phil
+Added QPushButton.isFlat() and QPushButton.setFlat().
+
+
+2000/11/12 21:22:02 phil
+pyuic fixed to handle QLabel buddies properly.
+
+
+2000/11/11 14:31:07 phil
+Added documentation to QListView and QListViewItem about how to delete child
+QListViewItems.
+Updated pyuic from Qt v2.2.2 uic.
+Updated configure to look for Qt v2.2.2.
+
+
+2000/11/09 10:16:24 phil
+Fixed compilation problem with QString with Qt v1.x.
+
+
+2000/11/08 12:43:56 phil
+A couple of minor fixes to pyuic.
+A couple of more major fixes to the debugger so that it will properly go into
+other modules of the same application.
+
+
+2000/11/05 20:59:51 phil
+Implemented __str__ for QByteArray, QCString and QString. Changed __repr__ to
+not raise an exception on null instances.
+Added a section to the documentation covering Python and Qt strings.
+Released v2.2.
+
+
+2000/11/02 14:57:18 phil
+Added missing %HeaderCode in qsizepolicy.sip.
+Added %Copying.
+Added __pyQtQAppHook__
+Fixed the debugger for Windows.
+Added QSocket, QServerSocket and QHostAddress.
+
+
+2000/10/20 23:30:22 phil
+Added the missing QPalette.setInactive().
+Colour related fixes to pyuic (thanks to Robert Roy).
+
+
+2000/10/18 16:24:37 phil
+Minor fixes to pyuic.
+Final updates for v2.1.
+
+
+2000/10/15 20:30:19 phil
+Fixed problem with the debugger code being included.
+Changed the documentation for v2.1pre1.
+
+
+2000/10/13 18:58:35 phil
+Fixed pyuic bug related to QToolTip.
+configure will now look for Qt v2.2.1.
+
+
+2000/10/11 17:21:59 phil
+Added the widgets.py example.
+Fixed bugs with slot arguments in QMovie.
+
+
+2000/10/11 13:32:25 phil
+The QApplication dtor now makes sure that any top-pevel windows don't get
+deleted twice.
+Changed the Shell banner in eric to be closer to Python 2.0.
+
+
+2000/10/08 16:31:50 phil
+Added the debugger code (forgot last time).
+
+
+2000/10/08 16:26:29 phil
+Added eric the debugger.
+
+
+2000/10/06 12:55:57 phil
+Updated pyuic for Qt v2.2.1.
+Fixed problems with QInputDialog.getValue() and QInputDialog.getText().
+
+
+2000/10/03 16:35:25 phil
+Added the missing /Transfer/ to QStatusBar.addWidget().
+Added the missing /TransferBack/ to QStatusBar.removeWidget().
+
+
+2000/10/02 21:45:56 phil
+Added the missing QCanvasPixmapArray ctor.
+Added the len, [] and in operators to QStringList.
+
+
+2000/10/01 12:37:31 phil
+Backed out the changes to the examples as they are no longer needed now that
+SIP allows slots to be called with more arguments than expected. This means
+that the breakage described in the previous ChangeLog entry has now been
+repaired.
+
+
+2000/10/01 00:50:32 phil
+Added the missing QMenuData.setItemParameter(), QMenuData.itemParameter() and
+QMenuData.activateItemAt().
+QMenuData.insertItem() and QAccel.connectItem() now expect slots that will take
+an argument. THIS WILL BREAK SCRIPTS - but is the correct behaviour because
+PyQt doesn't support the Qt feature of a slot consuming fewer arguments than a
+signal provides.
+
+
+2000/09/28 23:09:51 phil
+Added the missing /TransferThis/ in the QWorkspace ctor.
+
+
+2000/09/28 16:31:19 phil
+Added missing QWidget.isHidden(), QWidget.isMaximized() and
+QMultiLineEdit.getCursorPosition().
+
+
+2000/09/28 10:27:39 phil
+Added /Transfer/ to QApplication::postEvent().
+
+
+2000/09/27 17:21:27 phil
+Fixed the QDir ctor for Qt v2+.
+
+
+2000/09/25 12:02:15 phil
+Fixed QBoxLayout::findWidget() so that it compiles under Qt v2.0.x.
+
+
+2000/09/20 11:03:00 phil
+Added the README about building from the CVS.
+Minor changes prior to moving the CVS tree to theKompany.com.
+
+
+2000/09/19 08:25:47 phil
+Added the automatic ChangeLog.
+Added the missing keyReleaseEvent() from QButton.
+Added the missing QValidator::State::Intermediate.
+pyuic was generating bad code for QWizards. Also improved the standalone
+support code.
+
diff --git a/python/pyqt/LICENSE b/python/pyqt/LICENSE
new file mode 100644
index 00000000..c7aea189
--- /dev/null
+++ b/python/pyqt/LICENSE
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/python/pyqt/NEWS b/python/pyqt/NEWS
new file mode 100644
index 00000000..a18d29b3
--- /dev/null
+++ b/python/pyqt/NEWS
@@ -0,0 +1,544 @@
+v3.17.1 10th April 2007
+ - This version requires SIP v4.6 (or later).
+ - Changes to ensure compatibility with future SIP releases.
+
+v3.17 4th November 2006
+ - Added support for Python v2.5.
+ - Added the missing QImage.bitBlt() function.
+ - Added the missing QListView.setSelectionAnchor() method.
+ - Added the missing QStringList.__iadd__(QString) method.
+ - Updated the QScintilla bindings for v1.17.
+
+v3.16 24th March 2006
+ - This version requires SIP v4.4 (or later).
+ - PyQt3 can be installed alongside PyQt4.
+ - Concatenating Python strings and QStrings is now supported.
+ - QString now supports the * and *= operators that behave as they do for
+ Python strings.
+ - Removed some QString methods that weren't appropriate in a Python context
+ and would have caused problems had they ever been used.
+ - QString is more interoperable with Python string and unicode objects. For
+ example they can be passed as arguments to open() and to most (but not all)
+ string methods.
+ - QObject.sender() now handles Python signals.
+ - Added the missing MacintoshVersion enum.
+ - The convention for converting between a C/C++ null pointer and Python's
+ None object has now been universally applied. In previous versions a null
+ pointer to, for example, a Qt list container would often be converted to an
+ empty list rather than None.
+ - PYQT_BUILD has been removed.
+ - QPopupMenu (and sub-classes) instances now transfer ownership of the menu
+ to Python in the call to exec_loop(). This means the menu's resources are
+ all released when the Python wrapper is garbage collected without needing
+ to call QObject.deleteLater().
+
+v3.15.1 14th November 2005
+ - Added the missing QApplication constructor.
+ - Added the -f flag to configure.py to use any existing features file (by
+ default it is recreated).
+
+v3.15 30th August 2005
+ - This version requires SIP v4.3 (or later).
+ - Added registerWeakActiveObject() and revokeActiveObject() to QAxBase.
+ - Added the missing QString + operator.
+ - PyQt classes now support Python's cyclic garbage collector.
+ - QDialog (and sub-classes) instances now transfer ownership of the dialog to
+ Python in the call to exec_loop(). This means the dialog's resources are
+ all released when the Python wrapper is garbage collected without needing
+ to call QObject.deleteLater().
+ - Automatic type conversion to more specific sub-classes using available
+ real-time type information has been improved so that, if a sub-class isn't
+ recognised then the most specific sub-class is used rather than the base
+ class.
+ - Automatic type conversion for QLayoutItem and sub-classes has been added.
+ - Added support for QScintilla v1.6.
+
+v3.14.1 6th March 2005
+ - A minor bug fix release.
+
+v3.14 19th February 2005
+ - This version requires SIP v4.2 (or later) or SIP v3.12 (or later).
+ - Added the qInstallMsgHandler() function.
+ - Added support for QScintilla v1.5.
+ - Added support for the VendorID package.
+ - Added the qdir.py example.
+
+v3.13 21st September 2004
+ - Added the QUuid, QMetaObject and QMetaProperty classes.
+ - Added metaObject() to QObject.
+ - Added the comparison operators between QChar and QChar and char.
+ - Added all the QDataStream << and >> operators for classes.
+ - Added support for QScintilla v1.4.
+ - Added explicit support for QScintilla to pyuic.
+
+v3.12 25th May 2004
+ - QValueList<QVariant> is implemented as a Python list of QVariant instances.
+ - Added support for QScintilla v1.3.
+ - Compiler error messages are suppressed during configuration but can be seen
+ using the new -w flag to configure.py.
+
+v3.11 11th March 2004
+ - Added the QIconDragEvent and QLocale classes from Qt v3.3.0.
+ - Updated all existing classes to Qt v3.3.1.
+ - Added the missing QSocketDevice class.
+ - Added the missing QString += operators.
+
+v3.10 16th January 2004
+ - Added the QFtp, QHttp, QHttpHeader, QHttpRequestHeader,
+ QHttpResponseHeader, QLocalFs classes.
+
+v3.9 7th December 2003
+ - This version requires SIP v3.9 (or later) or SIP v4.0rc1 (or later).
+ - QLayoutIterator.next() is now documented.
+ - Added the QImageIO and QListViewItemIterator classes.
+ - Added the QDockArea << and >> operators.
+ - Added readBoolEntry() to QSettings.
+ - Added qInstallPath(), qInstallPathDocs(), qInstallPathHeaders(),
+ qInstallPathLibs(), qInstallPathBins(), qInstallPathPlugins(),
+ qInstallPathData(), qInstallPathTranslations(), qInstallPathSysconf().
+ - A new (configure.py) build system has been added which is independent of
+ tmake and qmake and installs a pyqtconfig module. The old (build.py) build
+ system remains.
+ - Added the -r flag to the build systems to enable tracing.
+ - Added the -v flag to the build systems to specify the default location for
+ .sip files.
+
+v3.8.1 6th September 2003
+ - Added the missing QWMatrix.mapRect() * operators.
+ - The supported educational version is now Qt v3.2.0.
+
+v3.8 17th August 2003
+ - Added the -k flag to build.py to build the PyQt modules as static
+ libraries.
+ - Added operators to QBrush, QColor, QDate, QDateTime, QDir, QDomeNode,
+ QFont, QImage, QKeySequence, QPalette, QPen, QPoint, QRect, QRegExp,
+ QRegion, QSize, QString, QTime, QUrl and QWMatrix (thanks to Torsten
+ Marek).
+ - Added the missing Qt.MetaButton.
+ - Updated all classes for Qt v3.2.0.
+ - Added the QSplashScreen, QSqlSelectCursor and QToolBox classes for Qt
+ v3.2.0.
+ - Added support for QScintilla v1.2.
+
+v3.7 5th July 2003
+ - Implemented __setitem__(), __delitem__(), __add__(), __iadd__(), __mul__(),
+ __imul__(), __eq__() and __ne__() for QStringList.
+ - Lots of new examples from Jorge Arroyo.
+ - dir() of a PyQt class now returns all attributes.
+ - Added bits(), scanLine(), jumpTable() and colorTable() to QImage.
+ - Added toShort(), toUShort(), toInt(), toUInt(), toLong(), toULong(),
+ toFloat() and toDouble() to QCString and QString.
+ - Added the QWindowsXPStyle (Windows XP only), QextScintillaLexerHTML,
+ QextScintillaLexerSQL and QSignalMapper classes.
+ - pyuic (for Qt v3) now accepts a "-test" command line argument to allow
+ generated code to be run to completion without needing any user
+ interaction.
+ - Added modificationAttempted() to QextScintilla.
+
+v3.6 26th April 2003
+ - Added the QextScintillaAPIs, QextScintillaCommand, QextScintillaCommandSet,
+ QextScintillaMacros and QextScintillaPrinter classes to the qtext module.
+ - Added the QCopEnvelope class to the qtpe module.
+ - QString.startsWith() was missing for Qt v2 starting with Qt v2.2.0.
+ - Implemented the QTextStream << QMainWindow and QTextStream >> QMainWindow
+ operators.
+ - pyuic will now extract Python code from the comments section of a .ui file.
+ - pyuic now supports PEP 263.
+ - Added the biff.py, checklists.py, drawlines.py and modified buttongroups.py
+ examples from Oleksandr Yakovlyev.
+ - Added the qtui module (thanks to Hans-Peter Jansen).
+ - Support for Qt v3.1.2 added.
+ - PYQT_VERSION is now the version encoded as a hexadecimal value.
+ - Added PYQT_VERSION_STR.
+
+v3.5 11th December 2002
+ - Added the qtext module containing the bindings for QScintilla.
+ - Added the missing QDockWindow.drawFrame(), QGLWidget.reparent() and
+ QMainWindow.lineUpDockWindows() methods.
+ - Added the missing QGLColorMap class.
+ - Support for Qt v3.0.6, v3.1.0 and v3.1.1 added.
+ - Added the Qt v3.1.x QAssistantClient, QEventLoop, QIconFactory,
+ - QIMComposeEvent, QMutexLocker and QSyntaxHighlighter classes, and
+ qCompress() and qUncompress functions.
+ - Removed eric from the distribution as it is now packaged separately.
+ - The SQL examples now support PostgreSQL as well as MySQL.
+ - Added the Qtopia v1.5.0 AppLnk, AppLnkSet, Config, DateFormat, DocLnk,
+ DocLnkSet, FileManager, FileSelector, FileSelectorItem, FontDatabase,
+ Global, MenuButton, QDawg, QList<AppLnk>, QList<DocLnk> and Resource
+ classes.
+
+v3.4 10th September 2002
+ - More eric updates from Detlev Offenbach, including pylupdate.
+ - helpviewer is now installed as a standalone application.
+ - Added the progress.py example from Hans-Peter Jansen.
+ - Added the mdi.py and canvas.py examples from Sadi Kose.
+ - Added QT_TR_NOOP() and QT_TRANSLATE_NOOP().
+ - Added QApplication.winEventFilter(), QWidget.winEvent(), MSG and POINT
+ under Windows.
+ - PyQt is now licensed under several licenses including the GPL and a
+ commercial license.
+
+v3.3.2 12th July 2002
+ - Build system changes.
+
+v3.3.1 9th July 2002
+ - Support for Qt v3.0.5 added.
+
+v3.3 7th July 2002
+ - Added README.SunOS.
+ - QValueList<QPixmap> is now fully implemented as a mapping to a Python list
+ of QPixmap instances.
+ - QSqlRecordInfo is now implemented as a Python list of QSqlFieldInfo
+ instances.
+ - Added the missing QDoubleValidator.setBottom(),
+ QDoubleValidator.setDecimals(), QDoubleValidator.setTop,
+ QFontMetrics.boundingRect(), QFontMetrics.size(),
+ QIntValidator.setBottom(), QIntValidator.setTop(), QString.compare() and
+ QString.localeAwareCompare().
+ - Added the qmake based build system.
+ - Added lots of eric patches from Detlev Offenbach. (eric should now work
+ again and has new features.)
+ - Added the SQL examples from Hans-Peter Jansen.
+ - pyuic for Qt v3 can now extract Python code from .ui files (thanks to
+ Christian Bird).
+
+v3.2.4 18th May 2002
+ - Bug fixes only from the latest SIP. (Skipped v3.2.3 to keep the version
+ number in line with SIP.)
+
+v3.2.2 11th May 2002
+ - Bug fixes only.
+
+v3.2.1 5th May 2002
+ - Bug fixes only from the latest SIP.
+
+v3.2 5th May 2002
+ - Instances that are sub-classes of QObject and created by Qt (by factory
+ methods, or plugin managers for example) will now have the correct Python
+ class.
+ - Added the missing QToolTip.setEnabled() and QToolTip.enabled().
+ - Added support for MacOS X.
+ - Added PYQT_VERSION as the PyQt release number as a string.
+ - Added the semaphore.py example.
+ - Any Python object can now be passed as the data element of a QCustomEvent.
+ - configure now searches for Qt v3.0.4.
+
+v3.1 23rd March 2002
+ - Removed the internal QDateTimeEditBase and QDragResponseEvent classes.
+ - Added the QValueList<QImageTextLangKey> mapped class.
+ - Added the missing QImageTextLangKey class.
+ - Added the missing QActionGroup.add(), QActionGroup.addSeparator(),
+ QImage.dotsPerMeterX(), QImage.dotsPerMeterY(), QImage.setDotsPerMeterX(),
+ QImage.setDotsPerMeterY(), QImage.offset(), QImage.setOffset(),
+ QImage.textList(), QImage.textLanguages(), QImage.textKeys(), QImage.text()
+ and QImage.setText() methods.
+ - Added support for Qt/Embedded on the Sharp Zaurus.
+ - Added the start of the qtpe (Qt Palmtop Environment) module.
+ - Changes required for Qt v3.0.1 and v3.0.2.
+ - configure now allows the location of zlib to be specified.
+ - configure now allows the directory to where the Python modules are
+ installed to be specified.
+ - configure now searches for Qt v3.0.1, v3.0.2 and v3.0.3.
+ - Changes required by the latest SIP.
+ - Added the dragdrop example from Issac Trotts.
+ - Added /ReleaseLock/ to everything that might block.
+ - Upgraded to autoconf-2.53 and automake-1.6.
+
+v3.0 17th November 2001
+ - Added the missing QChar.nbsp class variable.
+ - Added the missing QChar.isLetterOrNumber(), QChar.mirroredChar(),
+ QColorDialog.customColor(), QCustomDialog.customCount(),
+ QColorDialog.getRgba(), QCustomDialog.setCustomColor(), QFileDialog.done(),
+ QHeader.setUpdatesEnabled(), QHeader.showEvent(), QIconView.dropped(),
+ QIconViewItem.dropped(), QImage.inputFormatList(),
+ QImage.outputFormatList(), QLayoutIterator.next(), QLineEdit.displayText(),
+ QListBox.isRubberSelecting(), QMenuBar.activateItemAt(),
+ QMenuBar.focusInEvent(), QMenuBar.isDefaultUp(), QMenuBar.minimumSize(),
+ QMenuBar.minimumSizeHint(), QMenuBar.setDefaultUp(), QMenuData.findItem(),
+ QMimeSourceFactory.filePath(), QMimeSourceFactory.addFilePath(),
+ QMotifPlusStyle.drawMenuBarItem(), QMotifPlusStyle.drawPopupMenuItem(),
+ QMotifStyle.drawPopupMenuItem(), QMotifStyle.extraPopupMenuItemWidth(),
+ QMotifStyle.popupMenuItemHeight(), QNetworkProtocol.newChildren(),
+ QPlatinumStyle.drawPopupMenuItem(),
+ QPlatinumStyle.extraPopupMenuItemWidth(),
+ QPlatinumStyle.popupMenuItemHeight(), QPainter.pos(), QPalette.inactive(),
+ QPopupMenu.drawItem(), QPopupMenu.itemHeight(), QPrintDialog.addButton(),
+ QProgressDialog.forceShow(), QScrollBar.lineStep(), QScrollBar.maxValue(),
+ QScrollBar.minValue(), QScrollBar.pageStep(), QScrollBar.setLineStep(),
+ QScrollBar.setMaxValue(), QScrollBar.setMinValue(),
+ QScrollBar.setPageStep(), QScrollBar.setValue(), QScrollBar.value(),
+ QStyle.drawPopupMenuItem(), QStyle.drawMenuBarItem(),
+ QStyle.extraPopupMenuItemWidth(), QStyle.popupMenuItemHeight(),
+ QToolTip.hide(), QToolTipGroup.enabled(), QToolTipGroup.setEnabled(),
+ QTranslator.messages(), QUrlOperator.newChildren(),
+ QUrlOperator.startNextCopy(), QWindowsStyle.drawPopupMenuItem(),
+ QWindowsStyle.extraPopupMenuItemWidth() and
+ QWindowsStyle.popupMenuItemHeight() methods.
+ - Added all missing methods that use QDataStream.
+ - Added the missing QDir.match(), QObject.connect(), QRect.contains(),
+ QString.append() and QString.prepend() variants.
+ - Added the missing QAccel and QImage ctors.
+ - Added the missing QColorDrag, QDns, QIconDrag, QIconDragItem, QMenuItem,
+ QSGIStyle and QSound classes.
+ - Renamed QDate.isValidDate() to QDate.isValid(), QFile.fileExists() to
+ QFile.exists(), QFile.removeFile() to QFile.remove(), QLineEdit.del() to
+ QLineEdit.delChar(), QMultiLineEdit.deleteChar() to
+ QMultiLineEdit.delChar(), and QTime.IsValidTime() to QTime.isValid().
+ - Added the QCanvasSpline, QCheckTableItem, QComboTableItem,
+ QCustomMenuEvent, QDataBrowser, QDataTable, QDataView, QDateEdit,
+ QDateTimeEdit, QDesktopWidget, QDockArea, QDockWindow, QEditorFactory,
+ QErrorMessage, QGridView, QIMEvent, QKeySequence, QLibrary,
+ QObjectCleanupHandler, QPixmapCache, QProcess, QRegExpValidator, QSettings,
+ QSql, QSqlCursor, QSqlDatabase, QSqlDriver, QSqlEditorFactory, QSqlError,
+ QSqlField, QSqlFieldInfo, QSqlForm, QSqlIndex, QSqlPropertyMap, QSqlQuery,
+ QSqlRecord, QSqlRecordInfo, QSqlResult, QStyleFactory, QStyleOption,
+ QTabletEvent, QTextEdit, QTimeEdit and QWindowsMime Qt3 classes.
+ - Added the missing qInitNetworkProtocols() function to the qtnetwork module.
+ - Removed the QTableHeader class and QTabWidget.selected() as they are not
+ part of the documented API.
+ - Removed the /Transfer/ flag on the QWidget parameters of
+ QBoxLayout.addWidget(), QBoxLayout.insertWidget(),
+ QGridLayout.addMultiCellWidget(), QGridLayout.addWidget() and
+ QLayout.add().
+ - QObject.className() now works with Python classes that sub-class from
+ QObject derived classes.
+ - pyuic now generates double quoted strings rather than single quoted strings
+ (to help Qt Linguist).
+ - Moved the Canvas module classes to the new qtcanvas module.
+ - Moved the Network module classes to the new qtnetwork module.
+ - Moved the Table module classes to the new qttable module.
+ - Moved the XML module classes to the new qtxml module.
+ - configure now handles Qt-mt.
+ - Upgraded to autoconf-2.52, automake-1.5 and libtool-1.4.1.
+
+v2.5 11th August 2001
+ Minor configuration changes. Added the missing variants of
+ QPixmap.save(), QWidget.reparent() and QInputDialog.getText(). Added
+ the qtgl module and the gears.py example script (thanks to Toby J
+ Sargeant). QObject.sender() will now return an appropriate value.
+ Fixed QTextView.setText() and QScrollView.addChild(). Fixed the
+ problems with overloads with different C++ signatures but similar
+ Python signatures - QCString.setNum(), QLabel.setNum(),
+ QLCDNumber.checkOverflow(), QString.arg(), QString.number(),
+ QString.setNum(), QVariant() and QWMatrix.map(). Added the missing
+ QTranslator methods. Added the QTranslatorMessage class. configure
+ will now look for Qt v2.3.1. QInterlaceStyle is enabled only for Qt
+ v2.3.1+ as it is broken in 2.3.0 on Windows. Fixed problems with
+ QLineEdit.event() and QMultiLineEdit.event(). Added post-hooks to
+ complement the existing pre-hooks. Added the Pizza example from the Qt
+ Designer manual. Removed the Version keyword for the latest SIP.
+ Fixed the memory leaks related to sipMapCppToSelf() in handwritten
+ code. Changed the build system to handle different versions of PyQt
+ for different versions of Qt. NULL QCanvasItemList, QFileInfoList,
+ QObjectList, QStrList and QWidgetList pointers are now converted to an
+ empty Python list rather than None. Added QDataStream and the QDom
+ classes (thanks to Jim Bublitz). Added the qt_xdisplay(), qt_xscreen()
+ and qt_xrootwin() functions. Added the QColor.getHsv(),
+ QPaintDevice.x11Display(), QPaintDevice.x11AppDisplay(),
+ QPaintDevice.x11SetAppDpiX(), QPaintDevice.x11SetAppDpiY() and
+ QWidget.customEvent() methods.
+
+v2.4 22nd April 2001
+ Added the missing QFileDialog.getExistingDirectory(),
+ QLineEdit.setReadOnly(), QLineEdit.readOnly(),
+ QMotifStyle.comboButtonFocusRect(), QMotifStyle.comboButtonRect() and
+ QMotifStyle.drawComboButton() methods. Added the missing
+ QFileDialog.DirectoryOnly and QPalette.Inactive enum values. Updated
+ the themes.py example. configure now uses the python executable to get
+ the various Python locations. Added support of Qt v2.3.0, ie.
+ QApplication.type(), QFontDatabase.isFixedPitch(),
+ QScrollView.AutoOneFit, QToolBar.styleChange() and QInterlaceStyle.
+ Added the missing final argument to QMultiLineEdit.insertAt(). Added
+ the QCustomEvent class. Upgraded to automake v1.4d and libtool v1.3d.
+
+v2.3 4th February 2001
+ Added the missing QMessage.setTextFormat(), QMessage.textFormat(),
+ QPushButton.isFlat(), QPushButton.setFlat() and QMenuData.insertItem()
+ methods. Added the QCustomMenuItem class. pyuic assumes that custom
+ widgets are in another module and generates code to import them. Other
+ pyuic bug fixes and changes to keep track with Qt v2.2.4. eric bug
+ fixes. Added the addressbook.py, buttongroups.py and menu.py examples.
+ Updated all the tutorial scripts to match those in Qt v2.x. Removed
+ the Qt v1.x specific examples. Removed the deprecated behaviour of
+ repr() for QString, QCString and QByteArray. The Python objects that
+ correspond to C++ instances that are "owned" by Qt are now kept alive
+ without the Python program having to keep an explicit reference.
+ configure now looks for Python 2.1.
+
+v2.2 6th November 2000
+ Added the %Copying directive. Added the missing %HeaderCode in
+ qsizepolicy.sip. Added classes QServerSocket, QSocket and
+ QHostAddress. Added hooks to the QApplication ctors to tell the
+ debugger when it is safe to create QSocketNotifiers (with UNIX you can
+ create QSocketNotifiers before you create the QApplication, with
+ Windows you can't). Other fixes to eric to get it working with
+ Windows. Implemented __str__ of QByteArray, QCString and QString to
+ return an empty string for null instances. Changed __repr__ of the
+ same classes to return a descriptive string for null instances. Added
+ the missing QPalette.setInactive(). Colour related fixes to pyuic
+ (thanks to Robert Roy). Added the documentation section on Python
+ strings, Qt strings and Unicode.
+
+v2.1 18th October 2000
+ Added support for Qt v2.2.1. Added the widgets.py example. Added the
+ eric debugger. Added the missing QCanvasPixmapArray ctor. Added the
+ missing QMenuData.setItemParameter(), QMenuData.itemParameter(),
+ QMenuData.activateItemAt(), QWidget.isHidden(), QWidget.isMaximized(),
+ QMultiLineEdit.getCursorPosition() and QButton.keyReleaseEvent(). Add
+ the len, [] and in operators to QStringList. Various other bug fixes
+ (see ChangeLog).
+
+v2.0 14th September 2000
+ *NOTE* The implementation of enums has changed meaning that your
+ scripts will be need to be changed. Also repr() of a QString will
+ return a unicode object (rather than a string) with versions of Python
+ that support Unicode.
+ Added /Transfer/ to QObject.insertChild(). Added /TransferBack/ to
+ QObject.removeChild() and QTabBar.removeTab(). Changes needed by the
+ latest SIP. Fixed QFontInfo.family() for Qt v2.x (thanks to Joerg
+ Kollmann). Added /Transfer/ etc. to several places in QScrollView,
+ QObject, QHeader, QListView and QListViewItem (thanks to Pete Ware).
+ Updated everything for Qt v2.2.0. Added pyuic. Updated the examples
+ to handle to new form of enums. Added full support for Windows.
+ Install in site-packages if it exists. Changes to handwritten code to
+ support Python 1.6. Integrate QString with Python's Unicode support.
+
+v0.12 18th May 2000
+ The versions of the examples specific to Qt v1.x now get installed in
+ RPMs. Added QListBoxItem.selected(), QStringList.append() and
+ QStringList.prepend(). Added /Transfer/ to QApplication.setStyle(),
+ QLayout.addItem(), QBoxLayout.addItem() and QGridLayout.addItem().
+ Added themes.py to the examples. Clarified the software license.
+ Changes needed by the latest SIP.
+
+v0.11.1 1st April 2000
+ Fixed the documentation for QPixmap::fill(). Code now compiles with
+ gcc v2.95.2.
+
+v0.11 28th March 2000
+ Added Qt v2.x classes QCDEStyle, QChar, QColorDialog, QCommonStyle,
+ QCString, QFontDialog, QGLayoutIterator, QGrid, QHBox, QHButtonGroup,
+ QHGroupBox, QLayoutItem, QLayoutIterator, QMimeSource,
+ QMimeSourceFactory, QMotifStyle, QPlatinumStyle, QSessionManager,
+ QSimpleRichText, QSizeGrip, QSizePolicy, QSpacerItem, QStringList,
+ QStyle, QStyleSheet, QStyleSheetItem, Qt, QTabWidget, QTextBrowser,
+ QTextCodec, QTextDecoder, QTextEncoder, QTextIStream, QTextOStream,
+ QTextStream, QTextView, QTranslator, QUriDrag, QVBox, QVButtonGroup,
+ QVGroupBox, QWheelEvent, QWidgetItem, QWindowsStyle and QWizard. Many
+ other smaller changes for Qt v2.x. Added TransferThis where needed.
+
+v0.10.1 21st January 2000
+ Fixed a bug in the repr() functions for QString and QByteArray by
+ generating the code using the latest SIP.
+
+v0.10 19th December 1999
+ The .pyc files are now created by the installation process. Added
+ qAppName(), QCursor.handle(), QFont.handle(), QPaintDevice.handle(),
+ QPainter.handle(). Added most of the typedefs. Changed
+ examples/application.py so as not to use the obsolete (and
+ unimplemented) QMessageBox.message(). Fixed bug in QPixmap ctor.
+ Changed the format of version qualifiers for the latest SIP. Various
+ small changes to port to Windows. Added ReleaseLock to QDialog.exec().
+ Fixed a bug in QRect.coords(). Changed QString and QByteArray from
+ being mapped classes to being regular classes. Changed
+ examples/application.py, examples/dclock.py and examples/dirview.py to
+ explicitly convert from QString where needed.
+
+v0.9 6th September 1999
+ Separated the Qt and KDE bindings. These are the Qt bindings. Various
+ changes needed by the latest SIP. Re-introduced SLOT(). Changed the
+ examples to use SLOT() where possible. Added QObject.disconnect(),
+ QAccel.disconnectItem(), QMenuData.disconnectItem(),
+ QMovie.disconnectResize(), QMovie.disconnectStatus(),
+ QMovie.disconnectUpdate() and QApplication.clipboard(). Added the
+ QClipboard and QSocketNotifier classes. QEvent is automatically
+ converted to the correct sub-class. The Qt event loop now cooperates
+ with Python threads. Tested with Qt v1.44, Python v1.5.2, egcs v1.1.2
+ and glibc v2.1.
+
+v0.8 29th May 1999
+ Hopefully fixed the SuSE configuration problems. Fixed the QPointArray
+ ctor and QPointArray.setPoints() that took a list of points. Removed
+ the section in the documentation referring to the inability to handle
+ C++ references. Added lots of const keywords to suppress new warning
+ messages from the compiler. Changed the handwritten code for mapped
+ classes to follow the new NULL/None conventions, and for the
+ introduction of sipParseArgs(). Added Drag-and-Drop support to kmyapp.
+ Added Matt Gerassimoff's Qt examples. Added the QCursor global
+ cursors. Added QPainter.boundingRect(), KApplication.addDropZone(),
+ KApplication.removeDropZone, KApplication.setRootDropZone(). Added
+ QDragEnterEvent, QDragLeaveEvent, QDragMoveEvent, QDragObject,
+ QDragResponseEvent, QDropEvent, QDropSite, QHideEvent, QImageDrag,
+ QPaintDeviceMetrics, QShowEvent, QStoredDrag, QTextDrag, QTimer,
+ QUrlDrag, QWindow, KDNDDropZone, KDNDIcon, KDNDWidget, KPath, KSpell,
+ KSpellConfig, KSpellDlg, KTreeList, KTreeListItem. Tested with Qt
+ v1.44, KDE v1.1.1, Python v1.5.2, egcs v1.1.2 and glibc v2.1.1.
+
+v0.7.1 3rd May 1999
+ Fixed the detection of -fno-exceptions support. Added the necessary
+ Py_DECREF(sipArgs) to all handwritten code. Tested with Qt v1.44, KDE
+ v1.1.1, Python v1.5.2, egcs v1.1.2 and glibc v2.1.
+
+v0.7 16th April 1999
+ Build with -fno-exceptions if supported. Converted the documentation
+ to SGML. Replaced QT_VERSION and KDE_VERSION with the proper Qt and
+ KDE version constants. Fixed a bad bug converting from QStrings to
+ Python strings. The "connect" convenience function has been removed.
+ Added the class variables for all supported classes. Removed SLOT()
+ from all examples. Renamed some static functions in QDate, QTime and
+ QFile (needed because of the new implementation of static member
+ functions). Added the ordinary functions related to supported classes.
+ Added QListView, QListViewItem, QCheckListItem, KButton, KButtonBox,
+ KContainerLayout, KContainerLayoutItem, KControlApplication,
+ KControlDialog, KConfigWidget, KDatePicker, KDateTable, KDialog,
+ KDirectionButton, KGradientSelector, KIntegerLine, KLed, KLedLamp,
+ KListSpinBox, KNewPanner, KNumericSpinBox, KPanner, KPopupMenu,
+ KQuickHelp, KQuickHelpWindow, KRestrictedLine, KRuler, KSelector,
+ KSeparator, KSlider, KSpinBox, KTabBar, KTabButton, KTabCtl,
+ KToolBoxManager, KWizard, KWizardPage, KXYSelector. Tested with Qt
+ v1.44, KDE v1.1, Python v1.5.2, egcs v1.1.2 and glibc v2.1.
+
+v0.6 20th February 1999
+ Removed some handwritten code now that SIP automatically handles mapped
+ classes and slots. Changed QString to be mapped to/from Python
+ strings. Added the static member functions for all supported classes.
+ Added new member functions for KDE v1.1. Added QBoxLayout,
+ QButtonGroup, QChain, QCheckBox, QChildEvent, QDate, QDateTime,
+ QDialog, QDir, QFileDialog, QFileIconProvider, QFileInfo,
+ QFileInfoList, QGManager, QGroupBox, QGridLayout, QHBoxLayout, QHeader,
+ QIconSet, QLayout, QMainWindow, QMessageBox, QMovie, QMultiLineEdit,
+ QObjectList, QPrintDialog, QPrinter, QProgressBar, QProgressDialog,
+ QRadioButton, QScrollView, QSemiModal, QSpinBox, QSplitter, QStatusBar,
+ QTab, QTabBar, QTabDialog, QTime, QToolBar, QToolButton, QToolTip,
+ QToolTipGroup, QVBoxLayout, QWhatsThis, QWidgetList, QWidgetStack.
+ Added DlgLocation, KColorButton, KColorCombo, KColorDialog,
+ KColorGroup, KDirDialog, KDirEntry, KEdit, KFM, KFileBaseDialog,
+ KFileBookmark, KFileDialog, KFileInfo, KFileInfoContents,
+ KFileInfoList, KFontDialog, KHTMLView, KIconLoaderButton,
+ KIconLoaderDialog, KMsgBox, KPixmap, KProgress, KRadioGroup,
+ KSimpleConfig, KURL. Tested with Qt v1.42, KDE v1.1, egcs v1.1.1 and
+ glibc v2.1.
+
+v0.5 21st January 1999
+ The bindings are now packaged with autoconf configure scripts. The
+ enum in QFrame is now unnamed as it is in Qt. All the examples changed
+ to use the new form of enums. Added support for qApp, the global
+ QColors, kapp, i18n(), Icon() and ICON(). Same test environment as
+ v0.4.
+
+v0.4 9th January 1999
+ Enough Qt and KDE classes to implement the 14 Qt tutorials and KMyApp,
+ but still not that many that implement user interface widgets. Tested
+ with Qt v1.42, KDE v1.0 and gcc v2.8.1.
+
+v0.3 9th December 1998
+ Many more Qt classes, but still not many that implement user interface
+ widgets. Those classes that are implemented are almost all fully
+ implemented. Tested with Qt v1.42.
+
+v0.2 5th December 1999
+ Added the definitions of protected and virtual member functions.
+
+v0.1 1st November 1998
+ First release (with a very small set of classes implemented) to give
+ people a flavour. Tested with Qt v1.41.
diff --git a/python/pyqt/README b/python/pyqt/README
new file mode 100644
index 00000000..1af7d9f4
--- /dev/null
+++ b/python/pyqt/README
@@ -0,0 +1,64 @@
+ PyQt - Python Bindings for the Qt Toolkit
+
+
+INTRODUCTION
+
+These are the Python bindings for Qt. You must also have the SIP Python
+bindings generator installed.
+
+The homepage is http://www.riverbankcomputing.co.uk/pyqt/.
+
+The homepage of SIP is http://www.riverbankcomputing.co.uk/sip/.
+
+
+COMMERCIAL VERSION
+
+If you have the Commercial version of PyQt then you should also have a
+license file that you downloaded separately. The license file must be copied
+to the "sip" directory before starting to build PyQt.
+
+
+INSTALLATION
+
+Check for any other README files in this directory that relate to your
+particular platform. Feel free to contribute a README for your platform or to
+provide updates to any existing documentation.
+
+The first step is to configure PyQt by running the following command.
+
+ python configure.py
+
+This assumes that the correct Python interpreter is on your path. Something
+like the following may be appropriate on Windows.
+
+ c:\python23\python configure.py
+
+If you have multiple versions of Python installed then make sure you use the
+interpreter for which you wish to generate bindings for.
+
+The configure.py script takes many options. Use the "-h" command line option
+to display a full list of the available options.
+
+The next step is to build PyQt using your platform's make command.
+
+ make
+
+The final step is to install PyQt by running the following command. (Depending
+on your system you may require root or administrator privileges.)
+
+ make install
+
+
+THE REST OF THE DISTRIBUTION
+
+The "examples2" and "examples3" directories contain some examples (for Qt v2.x
+and Qt v3.x respectively) of Python scripts, including versions of the standard
+Qt tutorials and examples.
+
+The "doc" directory contains SGML and HTML documentation for the bindings.
+This documentation includes a section describing the differences visible to
+the Python programmer between this and the previous version - please read it.
+
+
+Phil Thompson
+phil@riverbankcomputing.co.uk
diff --git a/python/pyqt/README.AIX b/python/pyqt/README.AIX
new file mode 100644
index 00000000..d7db29b1
--- /dev/null
+++ b/python/pyqt/README.AIX
@@ -0,0 +1,68 @@
+This file describes some things to be aware of when building SIP (and PyQt)
+under AIX.
+
+I had success building SIP V3/V4 (and PyQt) on AIX 4.3.3 and on AIX 5.1 with
+VisualAge C++ and with gcc.
+
+VisualAge C++ was version 6.0 but it should also work with version 5.x.
+The GNU compiler was version 3.3.2 downloaded as a binary from
+http://aixpdslib.seas.ucla.edu/aixpdslib.html
+
+The Qt-Version was 3.2.3 but it should also work with previous versions.
+
+If you are using Python version 2.3.3 or higher, SIP (and PyQt) should build
+out of the box without any changes.
+
+If you are using a Python version before 2.3.3, you have to patch Python,
+because until this version, Python uses the system calls load() and
+loadbind() to load and bind shared objects. These system calls cannot load
+and bind C++ shared objects properly (constructors and destructors for static
+classes are not called with these system calls). Since AIX version 4.2 the
+system calls dlopen() and dlsym() are available and should be used in
+preference.
+
+The following patch changes the configure script of Python to use dlopen()
+and dlsym() if they are available. It also fixes a bug with the definition of
+_XOPEN_SOURCE:
+
+---8<-------------------------------------------------------------------->8---
+diff -uNr Python-2.3.2.orig/configure Python-2.3.2/configure
+--- Python-2.3.2.orig/configure 2003-09-27 10:58:55.000000000 +0200
++++ Python-2.3.2/configure 2003-10-28 11:33:58.000000000 +0100
+@@ -1452,6 +1452,11 @@
+ # but used in struct sockaddr.sa_family. Reported by Tim Rice.
+ SCO_SV/3.2)
+ define_xopen_source=no;;
++ # On AIX 4, mbstate_t is defined only when _XOPEN_SOURCE == 500 but used in
++ # wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined or
++ # has another value. By not (re)defining it, the defaults come in place.
++ AIX/4)
++ define_xopen_source=no;;
+ esac
+
+ if test $define_xopen_source = yes
+@@ -12965,7 +12970,12 @@
+ if test -z "$DYNLOADFILE"
+ then
+ case $ac_sys_system/$ac_sys_release in
+- AIX*) DYNLOADFILE="dynload_aix.o";;
++ AIX*) # Use dynload_shlib.c and dlopen() if we have it.
++ if test "$ac_cv_func_dlopen" = yes
++ then DYNLOADFILE="dynload_shlib.o"
++ else DYNLOADFILE="dynload_aix.o"
++ fi
++ ;;
+ BeOS*) DYNLOADFILE="dynload_beos.o";;
+ hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
+ Darwin/*) DYNLOADFILE="dynload_next.o";;
+---8<-------------------------------------------------------------------->8---
+
+Note: I did not mix the compilers when building Qt, Python, SIP and PyQt. At
+least Qt, SIP and PyQt must be built with the same compiler because of
+different name mangling schemes.
+
+If you have any problems or questions on building SIP or PyQt on AIX, either
+send an email to ulrich.berning@desys.de or use the PyKDE mailing list.
+
+Ulrich Berning
+DESYS GmbH
diff --git a/python/pyqt/README.SunOS b/python/pyqt/README.SunOS
new file mode 100644
index 00000000..5b176c85
--- /dev/null
+++ b/python/pyqt/README.SunOS
@@ -0,0 +1,44 @@
+
+ o Compiler Error: CC -DHAVE_CONFIG_H -I. -I. -I..
+ -I/users/toollib/include/python2.0 -I/users/pyqt/install/sip-3.2.1/include
+ -I/users/pyqt/install/qt-x11-commercial-3.0.4/include -I/usr/openwin/include
+ -c qtcmodule.cpp -KPIC -DPIC -o qtcmodule.o
+ "sipqtProxyqt.h", line 113: Error: Multiple declaration for
+ sipProxyqt::proxySlot(int).
+ "qtcmodule.cpp", line 5393: Error: sipProxyqt::proxySlot(int) already had a
+ body defined.
+
+ This occurs because the Sun Workshop C++ 4.2 compiler (and the Sun Forte
+ C++ 6.x compiler with -compat) can not distinguish between 'bool' and 'int'
+ types in overloaded method signatures and issues a compiler error.
+ In this case bool is declared in qt/include/qglobal.h as
+ 'typedef int bool;'. To workaround this '#if 0' out the the declaration
+ and body of 'proxySlot(bool)' in PyQt/qt/sipqtProxyqt.h and
+ PyQt/qt/qtcmodule.cpp. This resolves the compiler error but breaks
+ any 'sig(bool)' type signals. To workaround this, save the
+ PyQt/qt/sipqtProxyqt.moc generated after fixing the compiler error and
+ add the following bits of code:
+
+ ...
+ static const QUParameter param_slot_42[] = {
+ { 0, &static_QUType_bool, 0, QUParameter::In }
+ };
+ static const QUMethod slot_42 = {"proxySlot", 1, param_slot_42 };
+ static const QMetaData slot_tbl[] = {
+ ...
+ { "proxySlot(bool)", &slot_42, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "sipProxyqt", parentObject,
+ slot_tbl, 43,
+ ...
+ case 42: proxySlot(static_QUType_bool.get(_o+1)); break;
+
+ You will need to comment out the line in PyQt/qt/Makefile that re-generates
+ PyQt/qt/sipqtProxyqt.moc with moc to avoid the above changes from being
+ overwritten.
+
+ In order to test that everything has been done correctly, create a
+ toggle button and connect it's 'toggled(bool)' signal to a python slot,
+ if it works, your done!
+
diff --git a/python/pyqt/THANKS b/python/pyqt/THANKS
new file mode 100644
index 00000000..7204f8af
--- /dev/null
+++ b/python/pyqt/THANKS
@@ -0,0 +1,35 @@
+Torsten Marek
+ For going through the Qt classes and adding applicable operators to
+ PyQt.
+
+Detlev Offenbach
+ For picking up and enhancing eric.
+
+Hans-Peter Jansen
+ For the ports of the table and SQL based example scripts and for the
+ qtui module.
+
+Dimitri Papadopoulos-Orfanos
+ For all the help with the MacOS X port.
+
+Jim Bublitz
+ For QDataStream and the QDom classes, and picking up PyKDE.
+
+Pete Ware
+ For lots of patches for Qt v2.1+.
+
+Boudewijn Rempt
+ For evangelising and providing so much support to other users. Oh, and
+ writing a book about it all.
+
+Toby J Sargeant
+ For QSocketNotifier and getting Python threads working with Qt.
+
+Matt Gerassimoff
+ For his Python versions of many of the Qt example programs.
+
+Matt Gerassimoff, John Filo, Boudewijn Rempt
+ For testing and excellent bug reports.
+
+Rupert Thurner
+ For pointing out what env is for.
diff --git a/python/pyqt/build.py b/python/pyqt/build.py
new file mode 100644
index 00000000..ceaa5a92
--- /dev/null
+++ b/python/pyqt/build.py
@@ -0,0 +1,730 @@
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# This is the build script for PyQt. It should be run in the top level
+# directory of the source distribution and by the Python interpreter for which
+# it is being built. It uses either qmake or tmake to do the hard work of
+# generating the platform specific Makefiles.
+
+
+import sys
+import os
+import glob
+import tempfile
+import shutil
+import py_compile
+import compileall
+import string
+
+
+# Get the SIP configuration.
+try:
+ import sipconfig
+except:
+ print "Unable to import the sipconfig module. Please make sure you have"
+ print "SIP v3.9 or later installed."
+ sys.exit(1)
+
+config = sipconfig.SIPConfig("PyQt 3.17.2")
+
+
+# Initialise the globals.
+sipMajorVersion = config.sip_version >> 16
+sciIncDir = config.qt_inc_dir
+sciLibDir = config.qt_lib_dir
+sciLib = None
+sciVersion = None
+binDir = config.default_bin_dir
+modDir = config.default_mod_dir
+sipDir = config.default_sip_dir
+buildModules = ["qt"]
+tempBuildDir = None
+catCppFiles = 0
+catSplit = 1
+qpeTag = None
+trace = 0
+releaseGIL = 0
+
+
+def usage(rcode = 2):
+ """Display a usage message and exit.
+
+ rcode is the return code passed back to the calling process.
+ """
+ print "Usage:"
+ print " %s [-h] [-a version] [-b dir] [-c] [-d dir] [-g] [-j #] [-n dir] [-o dir] [-r] [-v dir]" % sipconfig.script()
+ print "where:"
+ print " -h display this help message"
+ print " -a tag explicitly enable the qtpe module"
+ print " -b dir where pyuic and pylupdate will be installed [default %s]" % config.default_bin_dir
+ print " -c concatenate each module's C++ source files"
+ print " -d dir where the PyQt modules will be installed [default %s]" % config.default_mod_dir
+ print " -g always release the GIL (SIP v3.x behaviour)"
+ print " -j # split the concatenated C++ source files into # pieces [default 1]"
+ print " -n dir the directory containing the QScintilla header files [default %s]" % config.qt_inc_dir
+ print " -o dir the directory containing the QScintilla library [default %s]" % config.qt_lib_dir
+ print " -r generate code with tracing enabled [default disabled]"
+ print " -v dir where the PyQt .sip files will be installed [default %s]" % config.default_sip_dir
+
+ sys.exit(rcode)
+
+
+def mkTempBuildDir(olddir=None):
+ """Create a temporary build directory for a console application called
+ qttest, complete with patched Makefile. The global tempBuildDir is set to
+ the name of the directory. The temporary directory becomes the current
+ directory.
+
+ olddir is None if the directory should be created, otherwise it is deleted.
+
+ Returns the name of the previous current directory.
+ """
+ global tempBuildDir
+
+ if olddir is None:
+ tempBuildDir = tempfile.mktemp()
+
+ try:
+ os.mkdir(tempBuildDir)
+ except:
+ sipconfig.error("Unable to create temporary directory.")
+
+ prevdir = sipconfig.push_dir(tempBuildDir)
+
+ sipconfig.copy_to_file("qttest.pro.in",
+"""TEMPLATE = app
+TARGET = qttest
+CONFIG += console warn_off @TEST_OPENGL@ @BLX_CONFIG_APP@
+INCLUDEPATH = @BLX_INCLUDEPATH@ @TEST_QSCINTILLA_INC@
+DEFINES = @BLX_DEFINES@
+SOURCES = qttest.cpp
+LIBS += @TEST_QUI_LIB@ @TEST_QSCINTILLA_LIB@
+""")
+
+ # Disable OpenGL, qui and QScintilla support by default.
+ config.patches["@TEST_OPENGL@"] = ""
+ config.patches["@TEST_QUI_LIB@"] = ""
+ config.patches["@TEST_QSCINTILLA_INC@"] = ""
+ config.patches["@TEST_QSCINTILLA_LIB@"] = ""
+
+ # Create a dummy source file to suppress a qmake warning.
+ sipconfig.copy_to_file("qttest.cpp", "")
+
+ config.create_makefile("qttest.pro")
+ else:
+ sipconfig.pop_dir(olddir)
+ prevdir = None
+
+ shutil.rmtree(tempBuildDir, 1)
+
+ return prevdir
+
+
+def tryModule(maindir, mname, incfile, ctor):
+ """See if a PyQt module should be built and update the buildModules list
+ accordingly.
+
+ maindir is the directory containing this script.
+ mname is the name of the PyQt module.
+ incfile is the C++ header file that defines the class being used for the
+ test.
+ ctor is the constructor of the class being used for the test.
+ """
+ # Check for the existence of the module .sip file.
+ msip = os.path.join(maindir, "sip", mname, mname + "mod.sip")
+
+ if not os.access(msip, os.F_OK):
+ return
+
+ sipconfig.copy_to_file("qttest.cpp",
+"""#include <%s>
+
+int main(int argc,char **argv)
+{
+ new %s;
+}
+""" % (incfile, ctor))
+
+ if sipconfig.run_make(None,0) == 0:
+ buildModules.append(mname)
+ sipconfig.inform("The %s module will be built." % mname)
+ else:
+ sipconfig.inform("The %s module will not be built." % mname)
+
+ sipconfig.run_make("clean")
+
+
+def checkQScintilla():
+ """See if QScintilla can be found and what its version is.
+ """
+ # Find the QScintilla header files.
+ sciglobal = os.path.join(sciIncDir, "qextscintillaglobal.h")
+
+ if os.access(sciglobal,os.F_OK):
+ config.patches["@PYQT_QSCINTILLA_INC@"] = sciIncDir
+
+ sipconfig.inform("%s contains qextscintillaglobal.h." % (sciIncDir))
+
+ # Get the QScintilla version number.
+ global sciVersion
+
+ sciVersion, sciversstr = sipconfig.read_version(sciglobal, "QScintilla", "QSCINTILLA_VERSION", "QSCINTILLA_VERSION_STR")
+
+ sipconfig.inform("QScintilla %s is being used." % (sciversstr))
+
+ # If we find a snapshot then set the version number to 0 as a special
+ # case.
+ if sciversstr[:8] == "snapshot":
+ sciVersion = 0
+
+ # Find the QScintilla library.
+ if sys.platform == "win32":
+ lpatt = "qscintilla.lib"
+ else:
+ lpatt = "libqscintilla.*"
+
+ if len(glob.glob(os.path.join(sciLibDir, lpatt))):
+ sipconfig.inform("%s contains the QScintilla library." % sciLibDir)
+
+ global sciLib
+
+ if sys.platform == "win32":
+ sciLib = sipconfig.escape(os.path.join(sciLibDir, "qscintilla.lib"))
+ else:
+ sciLib = sipconfig.escape("-L" + sciLibDir) + " -lqscintilla"
+
+ config.patches["@PYQT_QSCINTILLA_LIB@"] = sciLib
+ else:
+ sipconfig.inform("The QScintilla library could not be found in %s and so the qtext module will not be built. If QScintilla is installed then use the -o argument to explicitly specify the correct directory." % (sciLibDir))
+
+ sciVersion = -1
+ else:
+ sipconfig.inform("qextscintillaglobal.h could not be found in %s and so the qtext module will not be built. If QScintilla is installed then use the -n argument to explicitly specify the correct directory." % sciIncDir)
+
+ sciVersion = -1
+
+
+def moduleChecks(maindir):
+ """See which PyQt modules to build.
+ """
+ sipconfig.inform("Checking which additional PyQt modules to build.");
+
+ tryModule(maindir,"qtcanvas", "qcanvas.h", "QCanvas()")
+ tryModule(maindir,"qtnetwork", "qsocket.h", "QSocket()")
+ tryModule(maindir,"qttable", "qtable.h", "QTable()")
+ tryModule(maindir,"qtxml", "qdom.h", "QDomImplementation()")
+
+ if config.qt_version >= 0x030000:
+ tryModule(maindir,"qtsql", "qsql.h", "QSql()")
+
+ # We need a different Makefile for the qtgl module.
+ config.patches["@TEST_OPENGL@"] = "opengl"
+ config.create_makefile("qttest.pro")
+
+ tryModule(maindir,"qtgl", "qgl.h", "QGLWidget()")
+
+ # Put things back.
+ config.patches["@TEST_OPENGL@"] = ""
+ config.create_makefile("qttest.pro")
+
+ # Check for the qui library.
+ if config.qt_version >= 0x030000:
+ if sys.platform == "win32":
+ quilib = r"$(QTDIR)\lib\qui.lib"
+ else:
+ quilib = "-lqui"
+
+ config.patches["@PYQT_QUI_LIB@"] = quilib
+
+ config.patches["@TEST_QUI_LIB@"] = quilib
+ config.create_makefile("qttest.pro")
+
+ tryModule(maindir,"qtui", "qwidgetfactory.h", "QWidgetFactory()")
+
+ # Put things back.
+ config.patches["@TEST_QUI_LIB@"] = ""
+ config.create_makefile("qttest.pro")
+
+ # Check for the QScintilla library.
+ if sciVersion >= 0:
+ config.patches["@TEST_QSCINTILLA_INC@"] = sciIncDir
+ config.patches["@TEST_QSCINTILLA_LIB@"] = sciLib
+ config.create_makefile("qttest.pro")
+
+ tryModule(maindir,"qtext", "qextscintillabase.h", "QextScintillaBase()")
+
+ # Put things back.
+ config.patches["@TEST_QSCINTILLA_INC@"] = ""
+ config.patches["@TEST_QSCINTILLA_LIB@"] = ""
+ config.create_makefile("qttest.pro")
+
+
+def generateFeatures(featfile):
+ """Generate the header file describing the Qt features that are enabled if
+ it doesn't already exist. (If it already exists then we are probably cross
+ compiling and generated the file through other means.)
+
+ featfile is the name of the features file.
+ """
+ if os.access(featfile,os.F_OK):
+ sipconfig.inform("Using existing features file.")
+ return
+
+ sipconfig.inform("Generating the features file.")
+
+ # The features that a given Qt configuration may or may not support. Note
+ # that STYLE_WINDOWSXP requires special handling.
+ flist = ["ACTION", "CLIPBOARD", "CODECS", "COLORDIALOG", "DATASTREAM",
+ "DIAL", "DNS", "DOM", "DRAGANDDROP", "ICONVIEW", "IMAGE_TEXT",
+ "INPUTDIALOG", "FILEDIALOG", "FONTDATABASE", "FONTDIALOG",
+ "MESSAGEBOX", "MIMECLIPBOARD", "NETWORKPROTOCOL", "PICTURE",
+ "PRINTDIALOG", "PRINTER", "PROGRESSDIALOG", "PROPERTIES",
+ "SEMIMODAL", "SIZEGRIP", "SOUND", "SPLITTER", "STYLE_CDE",
+ "STYLE_INTERLACE", "STYLE_MOTIF", "STYLE_MOTIFPLUS",
+ "STYLE_PLATINUM", "STYLE_SGI", "STYLE_WINDOWS", "TABDIALOG",
+ "TABLE", "TABLEVIEW", "TRANSFORMATIONS", "TRANSLATION", "WIZARD",
+ "WORKSPACE"]
+
+ # Generate the program which will generate the features file.
+ f = open("qttest.cpp","w")
+
+ # Escape the backslashes so that the name can be embedded in a C++ string.
+ ffstr = string.replace(featfile, "\\", "\\\\")
+
+ f.write(
+"""#include <stdio.h>
+#include <qglobal.h>
+#include <qapplication.h>
+
+int main(int argc,char **argv)
+{
+ FILE *fp;
+ QApplication app(argc,argv,0);
+
+ if ((fp = fopen("%s","w")) == NULL)
+ {
+ printf("Unable to create '%s'\\n");
+ return 1;
+ }
+
+#if !defined(QT_THREAD_SUPPORT)
+ fprintf(fp,"-x Qt_THREAD_SUPPORT\\n");
+#endif
+
+#if (defined(Q_OS_WIN32) || defined(Q_OS_WIN64)) && QT_VERSION >= 0x030000
+ if (qWinVersion() != Qt::WV_XP)
+ fprintf(fp,"-x Qt_STYLE_WINDOWSXP\\n");
+#endif
+""" % (ffstr, ffstr))
+
+ for feat in flist:
+ f.write(
+"""
+#if defined(QT_NO_%s)
+ fprintf(fp,"-x Qt_%s\\n");
+#endif
+""" % (feat, feat))
+
+ f.write(
+"""
+ fclose(fp);
+
+ return 0;
+}
+""")
+
+ f.close()
+
+ sipconfig.run_make()
+ sipconfig.run_program(os.path.join(os.getcwd(), "qttest"))
+ sipconfig.run_make("clean")
+
+ sipconfig.inform("Generated the features file.")
+
+
+def generateSource(mname, plattag, qttag, xtrtag):
+ """Generate the C++ source code for a particular PyQt module.
+
+ mname is the name of the module.
+ plattag is the SIP tag for the platform.
+ qttag is the SIP tag for the Qt version.
+ xtrtag is an optional extra SIP tag.
+ """
+ sipconfig.inform("Generating the C++ source for the %s module." % mname)
+
+ try:
+ shutil.rmtree(mname)
+ except:
+ pass
+
+ try:
+ os.mkdir(mname)
+ except:
+ sipconfig.error("Unable to create the %s directory." % mname)
+
+ pro = mname + ".pro"
+
+ argv = ["-t", plattag,
+ "-t", qttag,
+ "-z", "features",
+ "-I", "sip",
+ "-m", mname + "/" + pro + ".in",
+ "-c", mname,
+ "sip/" + mname + "/" + mname + "mod.sip"]
+
+ if xtrtag:
+ argv.insert(0,xtrtag)
+ argv.insert(0,"-t")
+
+ if trace:
+ argv.insert(0,"-r")
+
+ if releaseGIL:
+ argv.insert(0,"-g")
+
+ sipconfig.run_program(config.sip_bin, argv)
+
+ # Generate the Makefile.
+ sipconfig.inform("Generating the Makefile for the %s module." % mname)
+
+ olddir = sipconfig.push_dir(mname)
+
+ if catCppFiles:
+ sipconfig.cat_source_files(mname, catSplit)
+
+ config.create_makefile(pro, mname)
+
+ icmds = []
+
+ if sipMajorVersion == 3:
+ icmds.append(("copy", mname + ".py", modDir))
+ icmds.append(("copy", mname + ".pyc", modDir))
+
+ config.add_install_target(icmds)
+
+ if sipMajorVersion == 3:
+ # Compile the Python part of the module.
+ pyname = mname + ".py"
+
+ sipconfig.inform("Compiling %s." % (pyname))
+ py_compile.compile(pyname)
+
+ sipconfig.pop_dir(olddir)
+
+
+def versionToTag(vers, tags, desc):
+ """Convert a version number to a tag.
+
+ vers is the version number.
+ tags is the dictionary of tags keyed by version number.
+ desc is the descriptive name of the package.
+
+ Returns the corresponding tag.
+ """
+ tag = None
+
+ vl = tags.keys()
+ vl.sort()
+
+ # For a snapshot use the latest tag.
+ if vers == 0:
+ tag = tags[vl[-1]]
+ else:
+ for v in vl:
+ if vers < v:
+ tag = tags[v]
+ break
+
+ if tag is None:
+ sipconfig.error("Invalid %s version: 0x%06x." % (desc, vers))
+
+ return tag
+
+
+def main(argv):
+ """The main function of the script.
+
+ argv is the list of command line arguments.
+ """
+ import getopt
+
+ # Parse the command line.
+ try:
+ optlist, args = getopt.getopt(argv[1:],"ha:b:cd:gj:n:o:rv:")
+ except getopt.GetoptError:
+ usage()
+
+ for opt, arg in optlist:
+ if opt == "-h":
+ usage(0)
+ elif opt == "-a":
+ global qpeTag
+ qpeTag = arg
+ elif opt == "-b":
+ global binDir
+ binDir = arg
+ elif opt == "-c":
+ global catCppFiles
+ catCppFiles = 1
+ elif opt == "-d":
+ global modDir
+ modDir = arg
+ elif opt == "-g":
+ global releaseGIL
+ releaseGIL = 1
+ elif opt == "-j":
+ global catSplit
+
+ try:
+ catSplit = int(arg)
+ except:
+ catSplit = 0
+
+ if catSplit < 1:
+ usage()
+ elif opt == "-n":
+ global sciIncDir
+ sciIncDir = arg
+ elif opt == "-o":
+ global sciLibDir
+ sciLibDir = arg
+ elif opt == "-r":
+ global trace
+ trace = 1
+ elif opt == "-v":
+ global sipDir
+ sipDir = arg
+
+ # Confirm the license.
+ sipconfig.confirm_license()
+
+ # If there should be a license file then check it is where it should be.
+ if config.license_file:
+ if os.access(os.path.join("sip", config.license_file), os.F_OK):
+ sipconfig.inform("Found the license file %s.\n" % config.license_file)
+ else:
+ sipconfig.error("Please copy the license file %s to the sip directory.\n" % config.license_file)
+
+ # Check the Qt version.
+ if config.qt_version == 0:
+ sipconfig.error("SIP has been built with Qt support disabled.\n")
+
+ # Early versions of Qt for the Mac didn't include everything. Rather than
+ # maintain these in the future we just mandate a later version.
+ if sys.platform == "darwin" and config.qt_version < 0x030100:
+ sipconfig.error("PyQt for MacOS/X requires Qt v3.1.0 or later.\n")
+
+ # Check the installation directory is valid and add it as a patch.
+ if not os.access(modDir,os.F_OK):
+ sipconfig.error("The %s PyQt destination directory does not seem to exist. Use the -d argument to set the correct directory." % (modDir))
+
+ config.patches["@PYQT_MODDIR@"] = sipconfig.escape(modDir)
+
+ sipconfig.inform("%s is the PyQt installation directory." % (modDir))
+
+ # Enable warnings for SIP v4 generated code.
+ if sipMajorVersion >= 4:
+ warn = "warn_on"
+ else:
+ warn = "warn_off"
+
+ config.patches["@PYQT_WARN@"] = warn
+
+ # Create patches to allow some modules to link against others.
+ if sipMajorVersion >= 4:
+ modlink = ""
+ elif sys.platform == "win32":
+ modlink = sipconfig.escape(os.path.join(modDir, "libqtc.lib"))
+ else:
+ modlink = sipconfig.escape("-L" + modDir) + " -lqtcmodule"
+
+ config.patches["@PYQT_QT_MODULE@"] = modlink
+
+ if sipMajorVersion >= 4:
+ modlink = ""
+ elif sys.platform == "win32":
+ modlink = sipconfig.escape(os.path.join(modDir, "libqttablec.lib")) + " " + sipconfig.escape(os.path.join(modDir, "libqtc.lib"))
+ else:
+ modlink = sipconfig.escape("-L" + modDir) + " -lqttablecmodule -lqtcmodule"
+
+ config.patches["@PYQT_QTTABLE_MODULE@"] = modlink
+
+ # The professional edition needs special handling if XML support is needed.
+ if config.qt_edition == "professional":
+ rbprof = "rbprof"
+ else:
+ rbprof = ""
+
+ config.patches["@PYQT_RBPROF@"] = rbprof
+
+ # Link in the qassistantclient library for Qt v3.1+.
+ qaclib = ""
+
+ if config.qt_version >= 0x030100:
+ if sys.platform == "win32":
+ qaclib = r"$(QTDIR)\lib\qassistantclient.lib"
+ else:
+ qaclib = "-lqassistantclient"
+
+ config.patches["@PYQT_QASSISTANTCLIENT_LIB@"] = qaclib
+
+ # Check for QScintilla.
+ if config.qt_version >= 0x030000:
+ checkQScintilla()
+
+ # Create a build directory that we can compile test programs.
+ maindir = mkTempBuildDir()
+
+ # Check what additional modules to build.
+ if config.qt_version >= 0x020000:
+ moduleChecks(maindir)
+
+ # Work out the platform and Qt version tags to pass to SIP to generate the
+ # code we need.
+ if config.qt_lib == "qte":
+ plattag = "WS_QWS"
+ elif sys.platform == "win32":
+ plattag = "WS_WIN"
+ elif sys.platform == "darwin":
+ plattag = "WS_MACX"
+ else:
+ plattag = "WS_X11"
+
+ qttags = {
+ 0x020000: "Qt_1_43",
+ 0x020100: "Qt_2_00",
+ 0x020200: "Qt_2_1_0",
+ 0x020300: "Qt_2_2_0",
+ 0x020301: "Qt_2_3_0",
+ 0x030000: "Qt_2_3_1",
+ 0x030001: "Qt_3_0_0",
+ 0x030002: "Qt_3_0_1",
+ 0x030004: "Qt_3_0_2",
+ 0x030005: "Qt_3_0_4",
+ 0x030006: "Qt_3_0_5",
+ 0x030100: "Qt_3_0_6",
+ 0x030101: "Qt_3_1_0",
+ 0x030102: "Qt_3_1_1",
+ 0x030200: "Qt_3_1_2",
+ 0x030300: "Qt_3_2_0",
+ 0x040000: "Qt_3_3_0"
+ }
+
+ qttag = versionToTag(config.qt_version, qttags, "Qt")
+
+ # Work out the QScintilla tag.
+ if sciVersion >= 0:
+ scitags = {
+ 0x010100: "QScintilla_1_0",
+ 0x010200: "QScintilla_1_1",
+ 0x020000: "QScintilla_1_2"
+ }
+
+ scitag = versionToTag(sciVersion, scitags, "QScintilla")
+ else:
+ scitag = None
+
+ # Generate the features file.
+ generateFeatures(os.path.join(maindir, "features"))
+
+ # We don't need the temporary build directory anymore.
+ mkTempBuildDir(maindir)
+
+ subdirs = []
+ for mname in buildModules:
+ if mname == "qtext":
+ xtratag = scitag
+ else:
+ xtratag = None
+
+ generateSource(mname, plattag, qttag, xtratag)
+ subdirs.append(mname)
+
+ # We handle the qtpe module explicitly rather than auto-detect. This is
+ # because it does things a bit differently and I'm too lazy to deal with it
+ # properly at the moment.
+ if qpeTag:
+ generateSource("qtpe", plattag, qttag, qpeTag)
+ subdirs.append("qtpe")
+
+ # Install the .sip files.
+ sipconfig.inform("Creating Makefile for .sip files.")
+ olddir = sipconfig.push_dir("sip")
+ sipconfig.copy_to_file("Makefile", "all:\n")
+
+ icmds = []
+
+ for mname in buildModules:
+ dstdir = os.path.join(sipDir, mname)
+
+ icmds.append(("mkdir", dstdir, None))
+
+ for sf in os.listdir(os.path.join(olddir, "sip", mname)):
+ icmds.append(("copy", os.path.join(mname, sf), os.path.join(dstdir, sf)))
+
+ config.add_install_target(icmds)
+ sipconfig.pop_dir(olddir)
+ subdirs.append("sip")
+
+ # See which version of pyuic to build.
+ config.patches["@PYQT_BINDIR@"] = sipconfig.escape(binDir)
+
+ if config.qt_version >= 0x030000:
+ sipconfig.inform("Creating Makefile for pyuic3.")
+ subdirs.append("pyuic3")
+ olddir = sipconfig.push_dir("pyuic3")
+ elif config.qt_version >= 0x020000:
+ sipconfig.inform("Creating Makefile for pyuic2.")
+ subdirs.append("pyuic2")
+ olddir = sipconfig.push_dir("pyuic2")
+
+ config.create_makefile("pyuic.pro", [])
+ sipconfig.pop_dir(olddir)
+
+ # Build pylupdate if Qt v3.0 or later.
+ if config.qt_version >= 0x030000:
+ sipconfig.inform("Creating Makefile for pylupdate3.")
+ subdirs.append("pylupdate3")
+ olddir = sipconfig.push_dir("pylupdate3")
+
+ config.create_makefile("pylupdate.pro", [])
+ sipconfig.pop_dir(olddir)
+
+ # Generate the top-level Makefile.
+ sipconfig.inform("Creating top level Makefile.")
+ sipconfig.copy_to_file("PyQt.pro.in", "TEMPLATE = subdirs\nSUBDIRS = " + string.join(subdirs) + "\n")
+ config.create_makefile("PyQt.pro")
+
+ # Tell the user what to do next.
+ msg = "The build of the PyQt source code for your system is now complete. To compile and install PyQt run \"%s\" and \"%s install\" with appropriate user privileges." % (config.make_bin, config.make_bin)
+
+ sipconfig.inform(msg)
+
+
+if __name__ == "__main__":
+ try:
+ main(sys.argv)
+ except SystemExit:
+ raise
+ except:
+ print \
+"""An internal error occured. Please report all the output from the program,
+including the following traceback, to support@riverbankcomputing.co.uk.
+"""
+ raise
diff --git a/python/pyqt/configure.py b/python/pyqt/configure.py
new file mode 100644
index 00000000..491302da
--- /dev/null
+++ b/python/pyqt/configure.py
@@ -0,0 +1,1438 @@
+# This script generates the PyQt configuration and generates the Makefiles.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+import sys
+import os
+import string
+import glob
+import getopt
+import shutil
+import py_compile
+
+import sipconfig
+
+
+# Initialise the globals.
+pyqt_version = 0x031102
+pyqt_version_str = "3.17.2"
+
+sip_min_version = 0x040600
+
+
+# Try and find a Qt installation to use as the default.
+try:
+ qt_dir = os.environ["QTDIR"]
+except KeyError:
+ qt_dir = ""
+
+
+qt_version = 0
+qt_edition = ""
+qt_incdir = None
+qt_libdir = None
+qt_threaded = 0
+qt_winconfig = ""
+
+pyqt = None
+pyqt_modules = []
+qt_sip_flags = []
+qtext_sip_flags = []
+qtpe_sip_flags = []
+qsci_version = 0
+disabled_classes = []
+
+if sys.platform == "win32":
+ qsci_define = "QEXTSCINTILLA_DLL"
+else:
+ qsci_define = ""
+
+# Get the SIP configuration.
+sipcfg = sipconfig.Configuration()
+
+# Command line options.
+opt_qtlib = None
+opt_qconfigdir = None
+opt_pyqtbindir = sipcfg.default_bin_dir
+opt_pyqtmoddir = sipcfg.default_mod_dir
+opt_pyqtsipdir = sipcfg.default_sip_dir
+opt_qtpetag = None
+opt_qsciincdir = None
+opt_qscilibdir = None
+opt_static = 0
+opt_debug = 0
+opt_concat = 0
+opt_split = 1
+opt_tracing = 0
+opt_verbose = 0
+opt_keepfeatures = 0
+
+opt_vendorcheck = 0
+opt_vendincdir = sipcfg.py_inc_dir
+opt_vendlibdir = sipcfg.py_lib_dir
+
+
+def usage(rcode = 2):
+ """Display a usage message and exit.
+
+ rcode is the return code passed back to the calling process.
+ """
+ if qt_dir:
+ def_qt_dir = qt_dir
+ else:
+ def_qt_dir = "none"
+
+ print "Usage:"
+ print " python configure.py [-h] [-a tag] [-b dir] [-c] [-d dir] [-f] [-g dir] [-i] [-j #] [-k] [-l dir] [-m dir] [-n dir] [-o dir] [-q dir] [-r] [-s] [-u] [-v dir] [-w] [-y lib] option=value option+=value ..."
+ print "where:"
+ print " -h display this help message"
+ print " -a tag explicitly enable the qtpe module"
+ print " -b dir where pyuic and pylupdate will be installed [default %s]" % opt_pyqtbindir
+ print " -c concatenate each module's C/C++ source files"
+ print " -d dir where the PyQt modules will be installed [default %s]" % opt_pyqtmoddir
+ print " -f keep any existing features file (when cross-compiling) [default remove]"
+ print " -g dir where the Qt qconfig.h file can be found [default Qt include directory]"
+ print " -i enable checking of signed interpreters using the VendorID package [default disabled]"
+ print " -j # split the concatenated C++ source files into # pieces [default 1]"
+ print " -k build the PyQt modules as static libraries"
+ print " -l dir the directory containing the VendorID header file [default %s]" % opt_vendincdir
+ print " -m dir the directory containing the VendorID library [default %s]" % opt_vendlibdir
+ print " -n dir the directory containing the QScintilla header files [default Qt include directory]"
+ print " -o dir the directory containing the QScintilla library [default Qt lib directory]"
+ print " -q dir the root directory of the Qt installation [default %s]" % def_qt_dir
+ print " -r generate code with tracing enabled [default disabled]"
+ print " -s QScintilla is a static library and not a DLL (Windows only)"
+ print " -u build with debugging symbols (requires a debug build of Python on Windows"
+ print " -v dir where the PyQt .sip files will be installed [default %s]" % opt_pyqtsipdir
+ print " -w don't suppress compiler output during configuration"
+ print " -y lib explicitly specify the type of Qt library, either qt, qt-mt, qte, qte-mt or qtmt"
+
+ sys.exit(rcode)
+
+
+class ConfigureBase:
+ """This is the base class for all PyQt version specific configurer classes.
+ Anything here is common to all configurers.
+ """
+ def check_modules(self):
+ """Check which modules should be built and add them to the global list.
+
+ Returns the name of any additional library that needs to be linked with
+ the main module.
+ """
+ return None
+
+ def sip_flags(self):
+ """Get the configuration specific SIP flags.
+
+ Returns a list of flags.
+ """
+ return []
+
+ def qt_version_tags(self):
+ """Get the versions tags for the configuration.
+
+ Returns a dictionary of versions and corresponding tags.
+ """
+ return {}
+
+ def code(self, extra_include_dirs, extra_lib_dir, extra_libs):
+ """Generate the code for a configuration.
+
+ extra_include_dirs is a list of directories to add to those supplied by
+ the SIP configuration.
+ extra_lib_dir is an optional directory to add to those supplied by the
+ SIP configuration.
+ extra_lib_dirs is an optional list of directories to add to those
+ supplied by the SIP configuration.
+ """
+ pass
+
+ def tools(self):
+ """Create the Makefiles for any other sub-directories and return a list
+ of those directories.
+
+ Returns a list of sub-directories with Makefile.
+ """
+ return []
+
+ def module_dir(self):
+ """Return the configuration's module directory.
+ """
+ return opt_pyqtmoddir
+
+ def module_installs(self):
+ """Return a list of files to install in the module directory other than
+ the modules themselves.
+ """
+ return ["pyqtconfig.py"]
+
+ def sip_dir(self):
+ """Return the configuration's .sip files directory.
+ """
+ return opt_pyqtsipdir
+
+
+class ConfigurePyQt3(ConfigureBase):
+ """This class defines the methods to configure PyQt v3.
+ """
+ def check_modules(self):
+ pyqt_modules.append("qt")
+
+ check_module("qtcanvas", "qcanvas.h", "QCanvas()")
+ check_module("qtnetwork", "qsocket.h", "QSocket()")
+ check_module("qttable", "qtable.h", "QTable()")
+ check_module("qtxml", "qdom.h", "QDomImplementation()")
+ check_module("qtgl", "qgl.h", "QGLWidget()", opengl=1)
+
+ if qt_version >= 0x030000:
+ check_module("qtui", "qwidgetfactory.h", "QWidgetFactory()", lib="qui")
+
+ if qt_edition in ("enterprise", "free"):
+ check_module("qtsql", "qsql.h", "QSql()")
+
+ if sys.platform == "win32" and sipcfg.sip_version >= 0x040200:
+ check_module("qtaxcontainer", "qaxobject.h", "QAxObject()", lib="qaxcontainer")
+
+ if qsci_version:
+ check_module("qtext", "qextscintillabase.h", "QextScintillaBase()", define=qsci_define, include_dir=opt_qsciincdir, lib_dir=opt_qscilibdir, lib="qscintilla")
+
+ if opt_qtpetag:
+ pyqt_modules.append("qtpe")
+
+ qtmod_lib = None
+
+ if qt_version >= 0x030100:
+ sipconfig.inform("Checking to see if the QAssistantClient class is available...")
+
+ if check_class("qassistantclient.h", "QAssistantClient(\"foo\")", lib="qassistantclient"):
+ qtmod_lib = "qassistantclient"
+ else:
+ disabled_classes.append("QAssistantClient")
+
+ return qtmod_lib
+
+ def sip_flags(self):
+ return get_feature_flags()
+
+ def qt_version_tags(self):
+ return {
+ 0x010403: None,
+ 0x020000: "Qt_1_43",
+ 0x020100: "Qt_2_00",
+ 0x020200: "Qt_2_1_0",
+ 0x020300: "Qt_2_2_0",
+ 0x020301: "Qt_2_3_0",
+ 0x030000: "Qt_2_3_1",
+ 0x030001: "Qt_3_0_0",
+ 0x030002: "Qt_3_0_1",
+ 0x030004: "Qt_3_0_2",
+ 0x030005: "Qt_3_0_4",
+ 0x030006: "Qt_3_0_5",
+ 0x030100: "Qt_3_0_6",
+ 0x030101: "Qt_3_1_0",
+ 0x030102: "Qt_3_1_1",
+ 0x030200: "Qt_3_1_2",
+ 0x030300: "Qt_3_2_0",
+ 0x030305: "Qt_3_3_0",
+ 0x030306: "Qt_3_3_5",
+ 0x040000: "Qt_3_3_6"
+ }
+
+ def code(self, extra_include_dirs, extra_lib_dir, extra_libs):
+ generate_code("qt", extra_include_dirs=extra_include_dirs, extra_lib_dir=extra_lib_dir, extra_libs=extra_libs)
+
+ if "qtext" in pyqt_modules:
+ generate_code("qtext", extra_define=qsci_define, extra_include_dirs=[opt_qsciincdir], extra_lib_dir=opt_qscilibdir, extra_libs=["qscintilla"], sip_flags=qtext_sip_flags)
+
+ if "qtgl" in pyqt_modules:
+ generate_code("qtgl", opengl=1)
+
+ if "qtpe" in pyqt_modules:
+ generate_code("qtpe", extra_libs=["qpe"], sip_flags=qtpe_sip_flags)
+
+ if "qtui" in pyqt_modules:
+ generate_code("qtui", extra_libs=["qui"])
+
+ if "qtaxcontainer" in pyqt_modules:
+ generate_code("qtaxcontainer", extra_libs=["qaxcontainer"])
+
+ # The rest don't need special handling.
+ for m in ("qtcanvas", "qtnetwork", "qtsql", "qttable", "qtxml"):
+ if m in pyqt_modules:
+ generate_code(m)
+
+ def tools(self):
+ tool_dirs = []
+
+ if qt_version >= 0x030000:
+ # The Professional Edition needs special handling.
+ prof = (qt_edition == "professional")
+
+ sipconfig.inform("Creating pyuic Makefile...")
+
+ if prof or "qtxml" not in pyqt_modules:
+ buildfile= "pyuic-prof.sbf"
+
+ for xml in ("qdom.cpp", "qxml.cpp"):
+ shutil.copyfile(qt_dir + "/src/xml/" + xml, "pyuic3/" + xml)
+ else:
+ buildfile= "pyuic.sbf"
+
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file=buildfile,
+ dir="pyuic3",
+ install_dir=opt_pyqtbindir,
+ console=1,
+ qt=1,
+ warnings=1
+ )
+
+ makefile.extra_defines.append("UIC")
+ makefile.extra_defines.append("QT_INTERNAL_XML")
+
+ if prof or "qtxml" not in pyqt_modules:
+ makefile.extra_defines.append("QT_MODULE_XML")
+
+ if qt_version < 0x030100:
+ makefile.extra_include_dirs.append(qt_dir + "/src/3rdparty/zlib")
+
+ makefile.generate()
+ tool_dirs.append("pyuic3")
+
+ sipconfig.inform("Creating pylupdate Makefile...")
+
+ if prof or "qtxml" not in pyqt_modules:
+ buildfile= "pylupdate-prof.sbf"
+
+ shutil.copyfile(qt_dir + "/src/xml/qxml.cpp", "pylupdate3/qxml.cpp")
+ else:
+ buildfile= "pylupdate.sbf"
+
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file=buildfile,
+ dir="pylupdate3",
+ install_dir=opt_pyqtbindir,
+ console=1,
+ qt=1,
+ warnings=1
+ )
+
+ makefile.extra_defines.append("QT_INTERNAL_XML")
+
+ if prof or "qtxml" not in pyqt_modules:
+ makefile.extra_defines.append("QT_MODULE_XML")
+
+ makefile.generate()
+ tool_dirs.append("pylupdate3")
+ elif qt_version >= 0x020000:
+ sipconfig.inform("Creating pyuic Makefile...")
+
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file="pyuic.sbf",
+ dir="pyuic2",
+ install_dir=opt_pyqtbindir,
+ console=1,
+ qt=1,
+ warnings=1
+ )
+
+ makefile.extra_defines.append("UIC")
+ makefile.extra_include_dirs.append(qt_dir + "/src/3rdparty/zlib")
+
+ makefile.generate()
+ tool_dirs.append("pyuic2")
+
+ return tool_dirs
+
+
+def inform_user():
+ """Tell the user the option values that are going to be used.
+ """
+ if qt_edition:
+ edstr = qt_edition + " edition "
+ else:
+ edstr = ""
+
+ sipconfig.inform("Qt v%s %sis being used." % (sipconfig.version_to_string(qt_version), edstr))
+ sipconfig.inform("SIP %s is being used." % sipcfg.sip_version_str)
+ sipconfig.inform("These PyQt modules will be built: %s." % string.join(pyqt_modules))
+
+ if disabled_classes:
+ sipconfig.inform("Support for these Qt classes has been disabled: %s." % string.join(disabled_classes))
+
+ sipconfig.inform("The PyQt modules will be installed in %s." % opt_pyqtmoddir)
+ sipconfig.inform("The PyQt .sip files will be installed in %s." % opt_pyqtsipdir)
+
+ sipconfig.inform("The Qt header files are in %s." % qt_incdir)
+ sipconfig.inform("The %s Qt library is in %s." % (opt_qtlib, qt_libdir))
+
+ if qt_version >= 0x020000:
+ sipconfig.inform("pyuic will be installed in %s." % opt_pyqtbindir)
+
+ if qt_version >= 0x030000:
+ sipconfig.inform("pylupdate will be installed in %s." % opt_pyqtbindir)
+
+ if opt_vendorcheck:
+ sipconfig.inform("PyQt will only be usable with signed interpreters.")
+
+
+def create_config(module, template, macros):
+ """Create the PyQt configuration module so that it can be imported by build
+ scripts.
+
+ module is the module file name.
+ template is the template file name.
+ macros is the dictionary of platform specific build macros.
+ """
+ sipconfig.inform("Creating %s..." % module)
+
+ content = {
+ "pyqt_config_args": sys.argv[1:],
+ "pyqt_version": pyqt_version,
+ "pyqt_version_str": pyqt_version_str,
+ "pyqt_bin_dir": opt_pyqtbindir,
+ "pyqt_mod_dir": opt_pyqtmoddir,
+ "pyqt_sip_dir": opt_pyqtsipdir,
+ "pyqt_modules": pyqt_modules,
+ "pyqt_qt_sip_flags": qt_sip_flags,
+ "qt_version": qt_version,
+ "qt_edition": qt_edition,
+ "qt_winconfig": qt_winconfig,
+ "qt_framework": 0,
+ "qt_threaded": qt_threaded,
+ "qt_dir": qt_dir,
+ "qt_inc_dir": qt_incdir,
+ "qt_lib": opt_qtlib,
+ "qt_lib_dir": qt_libdir
+ }
+
+ if "qtaxcontainer" in pyqt_modules:
+ content["pyqt_qtaxcontainer_sip_flags"] = qt_sip_flags
+
+ if "qtcanvas" in pyqt_modules:
+ content["pyqt_qtcanvas_sip_flags"] = qt_sip_flags
+
+ if "qtext" in pyqt_modules:
+ content["pyqt_qtext_sip_flags"] = qtext_sip_flags
+
+ # These are internal.
+ content["_pyqt_qscintilla_defines"] = qsci_define
+ content["_pyqt_qscintilla_inc_dir"] = opt_qsciincdir
+ content["_pyqt_qscintilla_lib_dir"] = opt_qscilibdir
+
+ if "qtgl" in pyqt_modules:
+ content["pyqt_qtgl_sip_flags"] = qt_sip_flags
+
+ if "qtnetwork" in pyqt_modules:
+ content["pyqt_qtnetwork_sip_flags"] = qt_sip_flags
+
+ if "qtpe" in pyqt_modules:
+ content["pyqt_qtpe_sip_flags"] = qtpe_sip_flags
+
+ if "qtsql" in pyqt_modules:
+ content["pyqt_qtsql_sip_flags"] = qt_sip_flags
+
+ if "qttable" in pyqt_modules:
+ content["pyqt_qttable_sip_flags"] = qt_sip_flags
+
+ if "qtui" in pyqt_modules:
+ content["pyqt_qtui_sip_flags"] = qt_sip_flags
+
+ if "qtxml" in pyqt_modules:
+ content["pyqt_qtxml_sip_flags"] = qt_sip_flags
+
+ sipconfig.create_config_module(module, template, content, macros)
+
+
+def compile_qt_program(name, define=None, include_dir=None, lib_dir=None, lib=None, opengl=0, python=0, debug=0):
+ """Compile a simple Qt application.
+
+ name is the name of the single source file.
+ define is a name to add to the list of preprocessor defines.
+ include_dir is the name of a directory to add to the list of include
+ directories.
+ lib_dir is the name of a directory to add to the list of library
+ directories.
+ lib is the name of a library to add to the list of libraries.
+ opengl is set if the application uses OpenGL.
+ python is set if the application #includes Python.h.
+ debug is set if this is a debug build.
+
+ Returns the name of the executable suitable for running or None if it
+ wasn't created.
+ """
+ makefile = sipconfig.ProgramMakefile(sipcfg, console=1, qt=1, warnings=0, opengl=opengl, python=python, debug=debug)
+
+ if define:
+ makefile.extra_defines.append(define)
+
+ if include_dir:
+ makefile.extra_include_dirs.append(include_dir)
+
+ if lib_dir:
+ makefile.extra_lib_dirs.append(lib_dir)
+
+ if lib:
+ makefile.extra_libs.append(lib)
+
+ exe, build = makefile.build_command(name)
+
+ # Make sure the executable file doesn't exist.
+ try:
+ os.remove(exe)
+ except OSError:
+ pass
+
+ if not opt_verbose and hasattr(os, "popen4"):
+ fin, fout = os.popen4(build)
+
+ # Read stdout and stderr until there is no more output.
+ lout = fout.readline()
+ while lout:
+ lout = fout.readline()
+
+ fin.close()
+ fout.close()
+
+ try:
+ os.wait()
+ except:
+ pass
+ else:
+ os.system(build)
+
+ if not os.access(exe, os.X_OK):
+ return None
+
+ if sys.platform != "win32":
+ exe = "./" + exe
+
+ return exe
+
+
+def check_qscintilla():
+ """See if QScintilla can be found and what its version is.
+ """
+ # Set the defaults if they haven't been explicitly specified.
+ global opt_qsciincdir, opt_qscilibdir
+
+ if opt_qsciincdir is None:
+ opt_qsciincdir = qt_incdir
+
+ if opt_qscilibdir is None:
+ opt_qscilibdir = qt_libdir
+
+ # Find the QScintilla header files.
+ sciglobal = os.path.join(opt_qsciincdir, "qextscintillaglobal.h")
+
+ if os.access(sciglobal, os.F_OK):
+ # Get the QScintilla version number.
+ global qsci_version
+
+ qsci_version, sciversstr = sipconfig.read_version(sciglobal, "QScintilla", "QSCINTILLA_VERSION", "QSCINTILLA_VERSION_STR")
+
+ if glob.glob(os.path.join(opt_qscilibdir, "*qscintilla*")):
+ sipconfig.inform("QScintilla %s is being used." % sciversstr)
+
+ # If we find a snapshot then set a negative version number as a
+ # special case.
+ if string.find(sciversstr, "snapshot") >= 0:
+ qsci_version = -1
+ else:
+ sipconfig.inform("The QScintilla library could not be found in %s and so the qtext module will not be built. If QScintilla is installed then use the -o argument to explicitly specify the correct directory." % opt_qscilibdir)
+ else:
+ sipconfig.inform("qextscintillaglobal.h could not be found in %s and so the qtext module will not be built. If QScintilla is installed then use the -n argument to explicitly specify the correct directory." % opt_qsciincdir)
+
+
+def check_vendorid():
+ """See if the VendorID library and include file can be found.
+ """
+ global opt_vendorcheck
+
+ if opt_vendorcheck:
+ if os.access(os.path.join(opt_vendincdir, "vendorid.h"), os.F_OK):
+ if glob.glob(os.path.join(opt_vendlibdir, "*vendorid*")):
+ sipconfig.inform("The VendorID package was found.")
+ else:
+ opt_vendorcheck = 0
+ sipconfig.inform("The VendorID library could not be found in %s and so signed interpreter checking will be disabled. If the VendorID library is installed then use the -m argument to explicitly specify the correct directory." % opt_vendlibdir)
+ else:
+ opt_vendorcheck = 0
+ sipconfig.inform("vendorid.h could not be found in %s and so signed interpreter checking will be disabled. If the VendorID package is installed then use the -l argument to explicitly specify the correct directory." % opt_vendincdir)
+
+
+def check_module(mname, incfile, ctor, define=None, include_dir=None, lib_dir=None, lib=None, opengl=0):
+ """See if a module can be built and, if so, add it to the global list of
+ modules.
+
+ mname is the name of the module.
+ incfile is the name of the include file needed for the test.
+ ctor is the C++ constructor of the class being used for the test.
+ define is a name to add to the list of preprocessor defines.
+ include_dir is the name of a directory to add to the list of include
+ directories.
+ lib_dir is the name of a directory to add to the list of library
+ directories.
+ lib is the name of a library to add to the list of libraries.
+ opengl is set if the application uses OpenGL.
+ """
+ # Check the module's main .sip file exists.
+ if os.access(os.path.join("sip", mname, mname + "mod.sip"), os.F_OK):
+ sipconfig.inform("Checking to see if the %s module should be built..." % mname)
+
+ if check_class(incfile, ctor, define, include_dir, lib_dir, lib, opengl):
+ pyqt_modules.append(mname)
+
+
+def check_class(incfile, ctor, define=None, include_dir=None, lib_dir=None, lib=None, opengl=0):
+ """Return non-zero if a class is available.
+
+ incfile is the name of the include file needed for the test.
+ ctor is the C++ constructor of the class.
+ define is a name to add to the list of preprocessor defines.
+ include_dir is the name of a directory to add to the list of include
+ directories.
+ lib_dir is the name of a directory to add to the list of library
+ directories.
+ lib is the name of a library to add to the list of libraries.
+ opengl is set if the application uses OpenGL.
+ """
+ cfgtest = "cfgtest.cpp"
+
+ f = open(cfgtest, "w")
+
+ f.write("""#include <%s>
+
+int main(int argc, char **argv)
+{
+ new %s;
+}
+""" % (incfile, ctor))
+
+ f.close()
+
+ return compile_qt_program(cfgtest, define, include_dir, lib_dir, lib, opengl)
+
+
+def check_plugin(cname, incfile):
+ """Return non-zero if a class that might be a plugin is in the main Qt
+ library.
+
+ cname is the name of the class.
+ incfile is the name of the include file needed for the test.
+ """
+ sipconfig.inform("Checking to see if the %s class is built in..." % cname)
+
+ return check_class(incfile, cname + "()")
+
+
+def create_features_file(name):
+ """Create the features file.
+
+ name is the name of the features file in the current directory.
+ """
+ # The features that a given Qt configuration may or may not support. Note
+ # that STYLE_WINDOWSXP and ASSISTANTCLIENT require special handling.
+ flist = ["ACTION", "CLIPBOARD", "CODECS", "COLORDIALOG", "DATASTREAM",
+ "DIAL", "DNS", "DOM", "DRAGANDDROP", "ICONVIEW", "IMAGE_TEXT",
+ "INPUTDIALOG", "FILEDIALOG", "FONTDATABASE", "FONTDIALOG",
+ "MESSAGEBOX", "MIMECLIPBOARD",
+ "NETWORKPROTOCOL", "NETWORKPROTOCOL_FTP", "NETWORKPROTOCOL_HTTP",
+ "PICTURE", "PRINTDIALOG", "PRINTER", "PROGRESSDIALOG",
+ "PROPERTIES",
+ "SEMIMODAL", "SIZEGRIP", "SOUND", "SPLITTER", "STYLE_CDE",
+ "STYLE_INTERLACE", "STYLE_MOTIF", "STYLE_MOTIFPLUS",
+ "STYLE_PLATINUM", "STYLE_SGI", "STYLE_WINDOWS",
+ "TABDIALOG", "TABLE", "TABLEVIEW", "TRANSFORMATIONS",
+ "TRANSLATION", "WIZARD", "WORKSPACE"]
+
+ # Generate the program which will generate the features file.
+ f = open("mkfeatures.cpp", "w")
+
+ f.write(
+"""#include <Python.h>
+#include <stdio.h>
+#include <qglobal.h>
+#include <qapplication.h>
+
+int main(int argc,char **argv)
+{
+ FILE *fp;
+ QApplication app(argc,argv,0);
+
+ if ((fp = fopen("%s","w")) == NULL)
+ {
+ printf("Unable to create '%s'\\n");
+ return 1;
+ }
+
+#if !defined(WITH_THREAD) || !defined(QT_THREAD_SUPPORT)
+ fprintf(fp,"-x Qt_THREAD_SUPPORT\\n");
+#endif
+
+#if !defined(Q_WS_WIN) || QT_VERSION < 0x030000 || defined(QT_NO_STYLE_WINDOWSXP)
+ fprintf(fp,"-x Qt_STYLE_WINDOWSXP\\n");
+#endif
+
+#if defined(Q_OS_WIN64)
+ fprintf(fp,"-x Qt_Q_LONG_IS_long\\n");
+#endif
+""" % (name, name))
+
+ for feat in flist:
+ f.write(
+"""
+#if defined(QT_NO_%s)
+ fprintf(fp,"-x Qt_%s\\n");
+#endif
+""" % (feat, feat))
+
+ # Disable QAssistantClient for the Professional Edition.
+ if "QAssistantClient" in disabled_classes:
+ f.write(
+"""
+ fprintf(fp,"-x Qt_ASSISTANTCLIENT\\n");
+""")
+
+ f.write(
+"""
+ fclose(fp);
+
+ return 0;
+}
+""")
+
+ f.close()
+
+ # Build the program.
+ exe = compile_qt_program("mkfeatures.cpp", include_dir=sipcfg.py_inc_dir, python=1)
+ if not exe:
+ sipconfig.error("Unable to build mkfeatures utility.")
+
+ os.system(exe)
+
+ # Check the file was created.
+ if not os.access(name, os.F_OK):
+ sipconfig.error("There was an error creating the features file.")
+
+ # Check what features have been implemented as plugins and disable them.
+ plugins = [("STYLE_CDE", "qcdestyle.h", "QCDEStyle"),
+ ("STYLE_INTERLACE", "qinterlacestyle.h", "QInterlaceStyle"),
+ ("STYLE_MOTIF", "qmotifstyle.h", "QMotifStyle"),
+ ("STYLE_MOTIFPLUS", "qmotifplusstyle.h", "QMotifPlusStyle"),
+ ("STYLE_PLATINUM", "qplatinumstyle.h", "QPlatinumStyle"),
+ ("STYLE_SGI", "qsgistyle.h", "QSGIStyle"),
+ ("STYLE_WINDOWSXP", "qwindowsxpstyle.h", "QWindowsXPStyle"),
+ ("STYLE_WINDOWS", "qwindowsstyle.h", "QWindowsStyle")]
+
+ f = open(name, "a")
+
+ for (feat, incfile, cname) in plugins:
+ if not check_plugin(cname, incfile):
+ f.write("-x Qt_%s\n" % feat)
+ disabled_classes.append(cname)
+
+ f.close()
+
+
+def get_feature_flags():
+ """Return the list of SIP flags that exclude unsupported Qt features.
+ """
+ featfile = "features"
+
+ # Create the features file if it doesn't exist and we are not keeping it.
+ if opt_keepfeatures and os.access(featfile,os.F_OK):
+ sipconfig.inform("Using existing features file.")
+ else:
+ sipconfig.inform("Creating features file...")
+ create_features_file(featfile)
+
+ # Parse the features file.
+ ff = open(featfile, "r")
+
+ flags = []
+
+ line = ff.readline()
+ while line:
+ flags.extend(string.split(line))
+ line = ff.readline()
+
+ return flags
+
+
+def set_sip_flags():
+ """Set the SIP platform, version and feature flags.
+ """
+ qt_sip_flags.extend(pyqt.sip_flags())
+
+ # If we don't check for signed interpreters, we exclude the 'VendorID'
+ # feature
+ if not opt_vendorcheck:
+ qt_sip_flags.append("-x")
+ qt_sip_flags.append("VendorID")
+
+ # Handle the platform tag.
+ if opt_qtpetag:
+ plattag = "WS_QWS"
+ elif sys.platform == "win32":
+ plattag = "WS_WIN"
+ elif sys.platform == "darwin":
+ if "__DARWIN_X11__" in sipcfg.build_macros()["DEFINES"]:
+ plattag = "WS_X11"
+ else:
+ plattag = "WS_MACX"
+ else:
+ plattag = "WS_X11"
+
+ qt_sip_flags.append("-t")
+ qt_sip_flags.append(plattag)
+
+ # Handle the Qt version tag.
+ verstag = sipconfig.version_to_sip_tag(qt_version, pyqt.qt_version_tags(), "Qt")
+
+ if verstag:
+ qt_sip_flags.append("-t")
+ qt_sip_flags.append(verstag)
+
+ # The flags so far are common.
+ for f in qt_sip_flags:
+ qtext_sip_flags.append(f)
+ qtpe_sip_flags.append(f)
+
+ # Handle the QScintilla version tag.
+ if qsci_version:
+ qscitags = {
+ 0x010100: None,
+ 0x010200: "QScintilla_1_1",
+ 0x010300: "QScintilla_1_2",
+ 0x010400: "QScintilla_1_3",
+ 0x010500: "QScintilla_1_4",
+ 0x010600: "QScintilla_1_5",
+ 0x010700: "QScintilla_1_6",
+ 0x020000: "QScintilla_1_7"
+ }
+
+ verstag = sipconfig.version_to_sip_tag(qsci_version, qscitags, "QScintilla")
+
+ if verstag:
+ qtext_sip_flags.append("-t")
+ qtext_sip_flags.append(verstag)
+
+ # Handle the Qtopia tag.
+ if opt_qtpetag:
+ qtpe_sip_flags.append("-t")
+ qtpe_sip_flags.append(opt_qtpetag)
+
+
+def generate_code(mname, extra_cflags=None, extra_cxxflags=None, extra_define=None, extra_include_dirs=None, extra_lflags=None, extra_lib_dir=None, extra_libs=None, opengl=0, sip_flags=None):
+ """Generate the code for a module.
+
+ mname is the name of the module.
+ extra_cflags is a string containing additional C compiler flags.
+ extra_cxxflags is a string containing additional C++ compiler flags.
+ extra_define is a name to add to the list of preprocessor defines.
+ extra_include_dirs is a list of directories to add to the list of include
+ directories.
+ extra_lflags is a string containing additional linker flags.
+ extra_lib_dir is the name of a directory to add to the list of library
+ directories.
+ extra_libs is a list of the names of extra libraries to add to the list of
+ libraries.
+ opengl is set if the module needs OpenGL support.
+ sip_flags is the list of sip flags to use instead of the defaults.
+ """
+ sipconfig.inform("Generating the C++ source for the %s module..." % mname)
+
+ try:
+ shutil.rmtree(mname)
+ except:
+ pass
+
+ try:
+ os.mkdir(mname)
+ except:
+ sipconfig.error("Unable to create the %s directory." % mname)
+
+ # Build the SIP command line.
+ argv = ['"' + sipcfg.sip_bin + '"']
+
+ if sip_flags is None:
+ sip_flags = qt_sip_flags
+
+ argv.extend(sip_flags)
+
+ if opt_concat:
+ argv.append("-j")
+ argv.append(str(opt_split))
+
+ if opt_tracing:
+ argv.append("-r")
+
+ argv.append("-c")
+ argv.append(mname)
+
+ buildfile = os.path.join(mname, mname + ".sbf")
+ argv.append("-b")
+ argv.append(buildfile)
+
+ argv.append("-I")
+ argv.append("sip")
+
+ # SIP assumes POSIX style path separators.
+ argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
+
+ os.system(string.join(argv))
+
+ # Check the result.
+ if not os.access(buildfile, os.F_OK):
+ sipconfig.error("Unable to create the C++ code.")
+
+ # Generate the Makefile.
+ sipconfig.inform("Creating the Makefile for the %s module..." % mname)
+
+ installs = []
+ sipfiles = []
+
+ for s in glob.glob("sip/" + mname + "/*.sip"):
+ sipfiles.append(os.path.join("..", "sip", mname, os.path.basename(s)))
+
+ installs.append([sipfiles, os.path.join(pyqt.sip_dir(), mname)])
+
+ makefile = sipconfig.SIPModuleMakefile(
+ configuration=sipcfg,
+ build_file=mname + ".sbf",
+ dir=mname,
+ install_dir=pyqt.module_dir(),
+ installs=installs,
+ qt=1,
+ opengl=opengl,
+ warnings=1,
+ static=opt_static,
+ debug=opt_debug
+ )
+
+ if extra_cflags:
+ makefile.extra_cflags.append(extra_cflags)
+
+ if extra_cxxflags:
+ makefile.extra_cxxflags.append(extra_cxxflags)
+
+ if extra_define:
+ makefile.extra_defines.append(extra_define)
+
+ if extra_include_dirs:
+ makefile.extra_include_dirs.extend(extra_include_dirs)
+
+ if extra_lflags:
+ makefile.extra_lflags.append(extra_lflags)
+
+ if extra_lib_dir:
+ makefile.extra_lib_dirs.append(extra_lib_dir)
+
+ if extra_libs:
+ makefile.extra_libs.extend(extra_libs)
+
+ makefile.generate()
+
+
+def check_license():
+ """Handle the validation of the PyQt license.
+ """
+ try:
+ import license
+ ltype = license.LicenseType
+ lname = license.LicenseName
+
+ try:
+ lfile = license.LicenseFile
+ except AttributeError:
+ lfile = None
+ except ImportError:
+ ltype = None
+
+ if ltype is None:
+ ltype = "GPL"
+ lname = "GNU General Public License"
+ lfile = None
+
+ sipconfig.inform("This is the %s version of PyQt %s (licensed under the %s) for Python %s on %s." % (ltype, pyqt_version_str, lname, string.split(sys.version)[0], sys.platform))
+
+ # Common checks.
+ if ltype == "GPL" and sys.platform == "win32":
+ error("You cannot use the GPL version of PyQt under Windows.")
+
+ try:
+ qted = qt_edition
+ except AttributeError:
+ qted = None
+
+ if qted and ltype != "internal":
+ if (qted == "free" and ltype != "GPL") or (qted != "free" and ltype == "GPL"):
+ sipconfig.error("This version of PyQt and the %s edition of Qt have incompatible licenses." % qted)
+
+ # Confirm the license.
+ print
+ print "Type 'L' to view the license."
+ print "Type 'yes' to accept the terms of the license."
+ print "Type 'no' to decline the terms of the license."
+ print
+
+ while 1:
+ try:
+ resp = raw_input("Do you accept the terms of the license? ")
+ except:
+ resp = ""
+
+ resp = string.lower(string.strip(resp))
+
+ if resp == "yes":
+ break
+
+ if resp == "no":
+ sys.exit(0)
+
+ if resp == "l":
+ os.system("more LICENSE")
+
+ # If there should be a license file then check it is where it should be.
+ if lfile:
+ if os.access(os.path.join("sip", lfile), os.F_OK):
+ sipconfig.inform("Found the license file %s." % lfile)
+ else:
+ sipconfig.error("Please copy the license file %s to the sip directory." % lfile)
+
+
+def get_build_macros(overrides):
+ """Return the dictionary of platform specific build macros from the Qt
+ installation. Return None if any of the overrides was invalid.
+
+ overrides is a list of macros overrides from the user.
+ """
+ # Get the name of the qmake configuration file to take the macros from.
+ if "QMAKESPEC" in os.environ.keys():
+ fname = os.path.join(qt_dir, "mkspecs", os.environ["QMAKESPEC"], "qmake.conf")
+ else:
+ fname = os.path.join(qt_dir, "mkspecs", "default", "qmake.conf")
+
+ if not os.access(fname, os.F_OK):
+ sipconfig.error("Unable to find the default configuration file %s. You can use the QMAKESPEC environment variable to specify the correct platform instead of \"default\"." % fname)
+
+ # Add the Qt specific macros to the default.
+ names = sipcfg.build_macros().keys()
+ names.append("INCDIR_QT")
+ names.append("LIBDIR_QT")
+ names.append("MOC")
+
+ # Make sure $QTDIR reflects any directory passed on the command line.
+ os.environ["QTDIR"] = qt_dir
+
+ properties = {
+ "QT_INSTALL_BINS": os.path.join(qt_dir, "bin"),
+ "QT_INSTALL_HEADERS": os.path.join(qt_dir, "include"),
+ "QT_INSTALL_LIBS": os.path.join(qt_dir, "lib")
+ }
+
+ return sipconfig.parse_build_macros(fname, names, overrides, properties)
+
+
+def check_qt_installation(macros):
+ """Check the Qt installation and get the version number and edition.
+
+ macros is the dictionary of build macros.
+ """
+ # Get the Makefile generator.
+ generator = macros["MAKEFILE_GENERATOR"]
+
+ # Set the Qt include and lib directories.
+ global qt_incdir, qt_libdir
+
+ qt_incdir = macros["INCDIR_QT"]
+
+ if not qt_incdir:
+ qt_incdir = os.path.join(qt_dir, "include")
+ macros["INCDIR_QT"] = qt_incdir
+
+ qt_libdir = macros["LIBDIR_QT"]
+
+ if not qt_libdir:
+ qt_libdir = os.path.join(qt_dir, "lib")
+ macros["LIBDIR_QT"] = qt_libdir
+
+ # Check the Qt header files have been installed. Quietly check for Qt v4.
+ qt4_d = os.path.join(qt_incdir, "QtCore")
+
+ qglobal = os.path.join(qt4_d, "qglobal.h")
+
+ if not os.access(qglobal, os.F_OK):
+ qglobal = os.path.join(qt_incdir, "qglobal.h")
+
+ if not os.access(qglobal, os.F_OK):
+ sipconfig.error("qglobal.h could not be found in %s." % qt_incdir)
+
+ # Get the Qt version number.
+ global qt_version
+
+ qt_version, ignore = sipconfig.read_version(qglobal, "Qt", "QT_VERSION")
+
+ # Early versions of Qt for the Mac didn't include everything. Rather than
+ # maintain these in the future we just mandate a later version.
+ if sys.platform == "darwin" and qt_version < 0x030100:
+ sipconfig.error("PyQt for MacOS/X requires Qt v3.1.0 or later.")
+
+ # The way SIP v4.2 and later handle connections between signals and Python
+ # slots only works with Qt v3 and later. Therefore Qt v2 and earlier needs
+ # SIP v3.
+ if qt_version < 0x030000:
+ sipconfig.error("Qt v2.x and earlier require SIP v3.x.")
+
+ if qt_version >= 0x040000:
+ sipconfig.error("Qt v4.x requires PyQt v4.x.")
+
+ # Try and work out which edition it is.
+ global qt_edition
+
+ if qt_version >= 0x030000:
+ if opt_qconfigdir:
+ qconfigdir = opt_qconfigdir
+ else:
+ qconfigdir = qt_incdir
+
+ qconfig = os.path.join(qconfigdir, "qconfig.h")
+
+ if not os.access(qconfig,os.F_OK):
+ sipconfig.error("qconfig.h could not be found in %s." % qconfigdir)
+
+ f = open(qconfig)
+ l = f.readline()
+
+ while l:
+ wl = string.split(l)
+ if len(wl) == 3 and wl[0] == "#define" and wl[1] == "QT_PRODUCT_LICENSE":
+ qt_edition = wl[2][4:-1]
+ break
+
+ l = f.readline()
+
+ f.close()
+
+ if not qt_edition:
+ sipconfig.error("The Qt edition could not be determined by parsing %s." % qconfig)
+ elif qt_version == 0x020300 and sys.platform == "win32":
+ # See if we have the Qt v2 non-commercial version.
+ if os.access(os.path.join(qt_libdir, "qt-mt230nc.lib"), os.F_OK):
+ qt_edition = "non-commercial"
+
+ if sys.platform == "win32":
+ # Work out how Qt was built on Windows.
+
+ global qt_winconfig
+
+ try:
+ f = open(os.path.join(qt_dir, ".qtwinconfig"), "r")
+ except IOError:
+ f = None
+
+ if f:
+ cfg = f.readline()
+ f.close()
+
+ val = string.find(cfg, "=")
+
+ if val >= 0:
+ qt_winconfig = string.strip(cfg[val + 1:])
+ else:
+ # Assume it was built as a DLL.
+ qt_winconfig = "shared"
+
+ # Determine the Qt library to link against and if it has thread support.
+ global qt_threaded
+
+ resolve_qt3_library(generator)
+
+ if opt_qtlib in ("qt-mt", "qt-mtedu", "qt-mteval", "qte-mt", "qtmt", "qtmtedu", "qtmteval"):
+ qt_threaded = 1
+
+ global pyqt
+
+ pyqt = ConfigurePyQt3()
+
+ # We haven't yet factored out sipconfig's knowledge of how to build Qt
+ # binaries and it is expecting to find these in the configuration when it
+ # generates the Makefiles.
+ sipcfg.qt_version = qt_version
+ sipcfg.qt_edition = qt_edition
+ sipcfg.qt_winconfig = qt_winconfig
+ sipcfg.qt_framework = 0
+ sipcfg.qt_threaded = qt_threaded
+ sipcfg.qt_dir = qt_dir
+ sipcfg.qt_lib = opt_qtlib
+ sipcfg.qt_lib_dir = qt_libdir
+
+
+def resolve_qt3_library(generator):
+ """See which version of the Qt v3 library can be found. (We can't trust
+ the configuration files.)
+
+ generator is the name of the Makefile generator.
+ """
+ global opt_qtlib
+
+ if opt_qtlib:
+ if not is_qt_library(generator, opt_qtlib):
+ sipconfig.error("The %s Qt library could not be found in %s." % (opt_qtlib, qt_libdir))
+ else:
+ stlib = is_qt_library(generator, "qt")
+ mtlib = is_qt_library(generator, "qt-mt")
+ edlib = is_qt_library(generator, "qt-mtedu")
+ evlib = is_qt_library(generator, "qt-mteval")
+ emlib = is_qt_library(generator, "qte")
+ etlib = is_qt_library(generator, "qte-mt")
+
+ # Borland likes to be a little different.
+ bmtlib = is_qt_library(generator, "qtmt")
+ bedlib = is_qt_library(generator, "qtmtedu")
+ bevlib = is_qt_library(generator, "qtmteval")
+
+ names = []
+
+ if stlib:
+ opt_qtlib = "qt"
+ names.append(opt_qtlib)
+
+ if mtlib:
+ opt_qtlib = "qt-mt"
+ names.append(opt_qtlib)
+
+ if edlib:
+ opt_qtlib = "qt-mtedu"
+ names.append(opt_qtlib)
+
+ if evlib:
+ opt_qtlib = "qt-mteval"
+ names.append(opt_qtlib)
+
+ if emlib:
+ opt_qtlib = "qte"
+ names.append(opt_qtlib)
+
+ if etlib:
+ opt_qtlib = "qte-mt"
+ names.append(opt_qtlib)
+
+ if bmtlib:
+ opt_qtlib = "qtmt"
+ names.append(opt_qtlib)
+
+ if bedlib:
+ opt_qtlib = "qtmtedu"
+ names.append(opt_qtlib)
+
+ if bevlib:
+ opt_qtlib = "qtmteval"
+ names.append(opt_qtlib)
+
+ if not names:
+ sipconfig.error("No Qt libraries could be found in %s." % qt_libdir)
+
+ if len(names) > 1:
+ sipconfig.error("These Qt libraries were found: %s. Use the -y argument to explicitly specify which you want to use." % string.join(names))
+
+
+def is_qt_library(generator, lib):
+ """See if a particular Qt library is installed.
+
+ generator is the name of the Makefile generator.
+ lib is the name of the library.
+ """
+ if generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ lpatts = [lib + "[0-9]*.lib", lib + ".lib"]
+ else:
+ lpatts = ["lib" + lib + ".*"]
+
+ for lpatt in lpatts:
+ lmatch = glob.glob(os.path.join(qt_libdir, lpatt))
+
+ if lmatch:
+ return lmatch
+
+ return []
+
+
+def main(argv):
+ """Create the configuration module module.
+
+ argv is the list of command line arguments.
+ """
+ # Check SIP is new enough.
+ if sipcfg.sip_version_str[:8] != "snapshot":
+ if sipcfg.sip_version < sip_min_version:
+ sipconfig.error("This version of PyQt requires SIP v%s or later" % sipconfig.version_to_string(sip_min_version))
+
+ # Parse the command line.
+ try:
+ optlist, args = getopt.getopt(argv[1:], "ha:b:cd:fg:ij:kl:m:n:o:q:rsuv:wy:")
+ except getopt.GetoptError:
+ usage()
+
+ global qt_dir, opt_qtlib, opt_qconfigdir
+ global opt_pyqtbindir, opt_pyqtmoddir, opt_pyqtsipdir
+ global opt_qtpetag, opt_static, opt_debug, opt_concat
+ global opt_split, opt_tracing, opt_verbose, opt_keepfeatures
+ global opt_qsciincdir, opt_qscilibdir, qsci_define
+ global opt_vendorcheck, opt_vendincdir, opt_vendlibdir
+
+ for opt, arg in optlist:
+ if opt == "-h":
+ usage(0)
+ elif opt == "-a":
+ opt_qtpetag = arg
+ elif opt == "-b":
+ opt_pyqtbindir = os.path.abspath(arg)
+ elif opt == "-c":
+ opt_concat = 1
+ elif opt == "-d":
+ opt_pyqtmoddir = os.path.abspath(arg)
+ elif opt == "-f":
+ opt_keepfeatures = 1
+ elif opt == "-g":
+ opt_qconfigdir = os.path.abspath(arg)
+ elif opt == "-i":
+ opt_vendorcheck = 1
+ elif opt == "-j":
+ try:
+ opt_split = int(arg)
+ except:
+ usage()
+ elif opt == "-k":
+ opt_static = 1
+ elif opt == "-l":
+ opt_vendincdir = arg
+ elif opt == "-m":
+ opt_vendlibdir = arg
+ elif opt == "-n":
+ opt_qsciincdir = arg
+ elif opt == "-o":
+ opt_qscilibdir = arg
+ elif opt == "-q":
+ qt_dir = os.path.abspath(arg)
+ elif opt == "-r":
+ opt_tracing = 1
+ elif opt == "-s":
+ qsci_define = ""
+ elif opt == "-u":
+ opt_debug = 1
+ elif opt == "-v":
+ opt_pyqtsipdir = os.path.abspath(arg)
+ elif opt == "-w":
+ opt_verbose = 1
+ elif opt == "-y":
+ if arg in ("qt", "qt-mt", "qt-mtedu", "qt-mteval", "qte", "qte-mt", "qtmt", "qtmtedu"):
+ opt_qtlib = arg
+ else:
+ usage()
+
+ # Check that we know the name of the Qt root directory.
+ if not qt_dir:
+ sipconfig.error("A Qt installation could not be found. Use use the -q argument or the QTDIR environment variable to explicitly specify the correct directory.")
+
+ # When building static libraries, signed interpreter checking makes no
+ # sense.
+ if opt_vendorcheck and opt_static:
+ sipconfig.error("Using the VendorID package when building static libraries makes no sense.")
+
+ # Replace the existing build macros with the ones from the Qt installation.
+ macros = get_build_macros(args)
+
+ if macros is None:
+ usage()
+
+ sipcfg.set_build_macros(macros)
+
+ # Check Qt is what we need.
+ check_qt_installation(macros)
+
+ # Check the licenses are compatible.
+ check_license()
+
+ # Check for QScintilla.
+ check_qscintilla()
+
+ # Check which modules to build.
+ qtmod_lib = pyqt.check_modules()
+
+ # Check for the VendorID package.
+ check_vendorid()
+
+ # Set the SIP platform, version and feature flags.
+ set_sip_flags()
+
+ # Tell the user what's been found.
+ inform_user()
+
+ # Generate the code.
+
+ extra_include_dirs = []
+ extra_libs = []
+
+ if qtmod_lib:
+ extra_libs.append(qtmod_lib)
+
+ if opt_vendorcheck:
+ extra_include_dirs.append(opt_vendincdir)
+ extra_lib_dir = opt_vendlibdir
+ extra_libs.append("vendorid")
+ else:
+ extra_lib_dir = None
+
+ pyqt.code(extra_include_dirs, extra_lib_dir, extra_libs)
+
+ # Create the additional Makefiles.
+ sipconfig.inform("Creating top level Makefile...")
+
+ sipconfig.ParentMakefile(
+ configuration=sipcfg,
+ subdirs=pyqt_modules + pyqt.tools(),
+ installs=(pyqt.module_installs(), pyqt.module_dir())
+ ).generate()
+
+ # Install the configuration module.
+ create_config("pyqtconfig.py", "pyqtconfig.py.in", macros)
+
+
+###############################################################################
+# The script starts here.
+###############################################################################
+
+if __name__ == "__main__":
+ try:
+ main(sys.argv)
+ except SystemExit:
+ raise
+ except:
+ print \
+"""An internal error occured. Please report all the output from the program,
+including the following traceback, to support@riverbankcomputing.co.uk.
+"""
+ raise
diff --git a/python/pyqt/doc/PyQt.html b/python/pyqt/doc/PyQt.html
new file mode 100644
index 00000000..c2768f33
--- /dev/null
+++ b/python/pyqt/doc/PyQt.html
@@ -0,0 +1,12845 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Python Bindings for Qt (3.17.2)</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
+><BODY
+CLASS="ARTICLE"
+><DIV
+CLASS="ARTICLE"
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="TITLE"
+><A
+NAME="AEN2"
+>Python Bindings for Qt (3.17.2)</A
+></H1
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN4"
+>Phil Thompson</A
+></H3
+><DIV
+><DIV
+CLASS="ABSTRACT"
+><P
+></P
+><A
+NAME="AEN7"
+></A
+><P
+> This document describes a set of Python bindings for the Qt widget set.
+ Contact the author at <CODE
+CLASS="EMAIL"
+>&#60;<A
+HREF="mailto:phil@riverbankcomputing.co.uk"
+>phil@riverbankcomputing.co.uk</A
+>&#62;</CODE
+>.
+ </P
+><P
+></P
+></DIV
+></DIV
+><HR></DIV
+><DIV
+CLASS="SECT1"
+><H2
+CLASS="SECT1"
+><A
+NAME="AEN10"
+>Introduction</A
+></H2
+><P
+>PyQt is a set of Python bindings for the Qt toolkit and available for all
+platforms supported by Qt, including Windows, Linux, UNIX, MacOS/X and embedded
+systems such as the Sharp Zaurus and the Compaq iPAQ. They have been tested
+against Qt versions 1.43 to 3.3.7, Qt Non-commercial, Qtopia 1.5.0, and Python
+versions 1.5 to 2.5. Qt/Embedded v3 is not supported. Qt v4 is supported
+by PyQt v4.</P
+><P
+>PyQt is available under the GPL license for use with the GPL version of Qt, a
+a commercial license for use with the commercial version of Qt, a
+non-commercial license for use with the non-commercial version of Qt v2, and an
+educational license for use with the educational version of Qt.</P
+><P
+>PyQt is built using SIP (a tool for generating Python extension modules for
+C++ class libraries). SIP v4.6 or later must be installed in order to build
+and run this version of PyQt.</P
+><P
+>PyQt for MacOS/X requires Qt v3.1.0 or later and Python v2.3 or later.</P
+><P
+>The bindings are implemented as a number of Python modules</P
+><P
+></P
+><UL
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qt</TT
+> is the main module and contains the core classes and most
+user interface widgets.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+> contains a sub-set of the classes implemented
+in Qt's QAxContainer module, part of Qt's ActiveQt framework.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtcanvas</TT
+> contains the classes implemented in Qt's Canvas
+module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtgl</TT
+> contains the classes implemented in Qt's OpenGL module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtnetwork</TT
+> contains the classes implemented in Qt's Network
+module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtpe</TT
+> contains the classes implemented in Qtopia (originally
+called the Qt Palmtop Environment). It is only supported with Qt/Embedded.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtsql</TT
+> contains the classes implemented in Qt's SQL module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qttable</TT
+> contains the classes implemented in Qt's Table
+module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtui</TT
+> contains the classes implemented in Qt's qui library.
+These allow GUIs to be created directly from Qt Designer's
+<TT
+CLASS="LITERAL"
+>.ui</TT
+> files.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtxml</TT
+> contains the classes implemented in Qt's XML module.</P
+></LI
+><LI
+><P
+><TT
+CLASS="LITERAL"
+>qtext</TT
+> contains useful third-party classes that are not part
+of Qt. At the moment it contains bindings for QScintilla, the port to Qt of
+the Scintilla programmer's editor class.</P
+></LI
+></UL
+><P
+>PyQt also includes the <TT
+CLASS="LITERAL"
+>pyuic</TT
+> and
+<TT
+CLASS="LITERAL"
+>pylupdate</TT
+> utilities which correspond to the Qt
+<TT
+CLASS="LITERAL"
+>uic</TT
+> and <TT
+CLASS="LITERAL"
+>lupdate</TT
+> utilities.
+<TT
+CLASS="LITERAL"
+>pyuic</TT
+> converts the GUI designs created with Qt Designer to
+executable Python code. <TT
+CLASS="LITERAL"
+>pylupdate</TT
+> scans Python code,
+extracts all strings that are candidates for internationalisation, and creates
+an XML file for use by Qt Linguist.</P
+>
+</DIV>
+<DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN95"
+>Other PyQt Goodies</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN97"
+>Using Qt Designer</A
+></H3
+><P
+>Qt Designer is a GPL'ed GUI design editor provided by Trolltech as part of Qt.
+It generates an XML description of a GUI design. Qt includes
+<TT
+CLASS="LITERAL"
+>uic</TT
+> which generates C++ code from that XML.</P
+><P
+>PyQt includes <TT
+CLASS="LITERAL"
+>pyuic</TT
+> which generates Python code from the
+same XML. The Python code is self contained and can be executed immediately.</P
+><P
+>It is sometimes useful to be able to include some specific Python code in the
+output generated by <TT
+CLASS="LITERAL"
+>pyuic</TT
+>. For example, if you are using
+custom widgets, <TT
+CLASS="LITERAL"
+>pyuic</TT
+> has no way of knowing the name of the
+Python module containing the widget and so cannot generate the required
+<TT
+CLASS="LITERAL"
+>import</TT
+> statement. To help get around this,
+<TT
+CLASS="LITERAL"
+>pyuic</TT
+> will extract any lines entered in the
+<TT
+CLASS="LITERAL"
+>Comment</TT
+> field of Qt Designer's
+<TT
+CLASS="LITERAL"
+>Form Settings</TT
+> dialog that begin with
+<TT
+CLASS="LITERAL"
+>Python:</TT
+> and copies them to the generated output.</P
+><P
+>Here's a simple example showing the contents of the <TT
+CLASS="LITERAL"
+>Comment</TT
+>
+field.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>This comment will be ignored by pyuic.
+Python:
+Python:# Import our custom widget.
+Python:from foo import bar</PRE
+></TD
+></TR
+></TABLE
+><P
+>Here's the corresponding output from <TT
+CLASS="LITERAL"
+>pyuic</TT
+>.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>from qt import *
+
+# Import our custom widget.
+from foo import bar</PRE
+></TD
+></TR
+></TABLE
+><P
+>Thanks to Christian Bird, <TT
+CLASS="LITERAL"
+>pyuic</TT
+> will extract Python code
+entered using Qt Designer to implement slots. In Qt Designer, when you need to
+edit a slot and the source editor appears, enter Python code between the curly
+braces. Don't worry about the correct starting indent level, each line is
+prepended with a correct indentation.</P
+><P
+>Make sure that the <TT
+CLASS="LITERAL"
+>ui.h</TT
+> file is in the same directory as the
+<TT
+CLASS="LITERAL"
+>.ui</TT
+> file when using <TT
+CLASS="LITERAL"
+>pyuic</TT
+>. The
+<TT
+CLASS="LITERAL"
+>.ui</TT
+> file implies the name of the <TT
+CLASS="LITERAL"
+>.ui.h</TT
+>
+file so there is no need to specify it on the command line.</P
+><P
+>Here's an example of a simple slot. </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void DebMainWindowFrm::browsePushButtonClicked()
+{
+if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+>Here is the resulting code when <TT
+CLASS="LITERAL"
+>pyuic</TT
+> is run.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>class DebMainWindowFrm(QMainWindow):
+ ...stuff...
+ def browsePushButtonClicked(self):
+ if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")</PRE
+></TD
+></TR
+></TABLE
+><P
+>Note that indenting is as normal and that <TT
+CLASS="LITERAL"
+>self</TT
+> and all other
+parameters passed to the slot are available.</P
+><P
+>If you use this, you will need to turn off all of the fancy options for the C++
+editor in Designer as it tries to force C++ syntax and that's naturally
+annoying when trying to code in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN133"
+>Using Qt Linguist</A
+></H3
+><P
+>Qt includes the <TT
+CLASS="LITERAL"
+>lupdate</TT
+> program which parses C++ source
+files converting calls to the <TT
+CLASS="LITERAL"
+>QT_TR_NOOP()</TT
+> and
+<TT
+CLASS="LITERAL"
+>QT_TRANSLATE_NOOP()</TT
+> macros to <TT
+CLASS="LITERAL"
+>.ts</TT
+>
+language source files. The <TT
+CLASS="LITERAL"
+>lrelease</TT
+> program is then used to
+generate <TT
+CLASS="LITERAL"
+>.qm</TT
+> binary language files that are distributed with
+your application.</P
+><P
+>Thanks to Detlev Offenbach, PyQt includes the <TT
+CLASS="LITERAL"
+>pylupdate</TT
+>
+program. This generates the same <TT
+CLASS="LITERAL"
+>.ts</TT
+> language source files
+from your PyQt source files.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN145"
+>Deploying Commercial PyQt Applications</A
+></H2
+><P
+>When deploying commercial PyQt applications it is necessary to discourage users
+from accessing the underlying PyQt modules for themselves. A user that used
+the modules shipped with your application to develop new applications would
+themselves be considered a developer and would need their own commercial Qt and
+PyQt licenses.</P
+><P
+>One solution to this problem is the
+<A
+HREF="http://www.riverbankcomputing.co.uk/vendorid/"
+TARGET="_top"
+>VendorID</A
+>
+package. This allows you to build Python extension modules that can only be
+imported by a digitally signed custom interpreter. The package enables you to
+create such an interpreter with your application embedded within it. The
+result is an interpreter that can only run your application, and PyQt modules
+that can only be imported by that interpreter. You can use the package to
+similarly restrict access to any extension module.</P
+><P
+>In order to build PyQt with support for the VendorID package, pass the
+<TT
+CLASS="LITERAL"
+>-i</TT
+> command line flag to <TT
+CLASS="LITERAL"
+>configure.py</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN153"
+><TT
+CLASS="LITERAL"
+>pyqtconfig</TT
+> and Build System Support</A
+></H2
+><P
+>The SIP build system (ie. the <TT
+CLASS="LITERAL"
+>sipconfig</TT
+> module) is described
+in the SIP documentation. PyQt includes the <TT
+CLASS="LITERAL"
+>pyqtconfig</TT
+>
+module that can be used by configuration scripts of other bindings that are
+built on top of PyQt.</P
+><P
+>The <TT
+CLASS="LITERAL"
+>pyqtconfig</TT
+> module contains the following classes:</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>Configuration(sipconfig.Configuration)</TT
+></DT
+><DD
+><P
+>This class encapsulates additional configuration values, specific to PyQt, that
+can be accessed as instance variables.</P
+><P
+>The following configuration values are provided (in addition to those provided
+by the <TT
+CLASS="LITERAL"
+>sipconfig.Configuration</TT
+> class):</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_bin_dir</TT
+></DT
+><DD
+><P
+>The name of the directory containing the <TT
+CLASS="LITERAL"
+>pyuic</TT
+> and
+<TT
+CLASS="LITERAL"
+>pylupdate</TT
+> executables.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_mod_dir</TT
+></DT
+><DD
+><P
+>The name of the directory containing the PyQt modules.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_modules</TT
+></DT
+><DD
+><P
+>A string containing the names of the PyQt modules that were installed.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qt_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qt</TT
+> module and which should be added to those needed by any
+module that imports the <TT
+CLASS="LITERAL"
+>qt</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtaxcontainer_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+> module and which should be added to those
+needed by any module that imports the <TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtcanvas_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtcanvas</TT
+> module and which should be added to those needed by
+any module that imports the <TT
+CLASS="LITERAL"
+>qtcanvas</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtext_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtext</TT
+> module and which should be added to those needed by
+any module that imports the <TT
+CLASS="LITERAL"
+>qtext</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtgl_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtgl</TT
+> module and which should be added to those needed by any
+module that imports the <TT
+CLASS="LITERAL"
+>qtgl</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtnetwork_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtnetwork</TT
+> module and which should be added to those needed
+by any module that imports the <TT
+CLASS="LITERAL"
+>qtnetwork</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtsql_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtsql</TT
+> module and which should be added to those needed by
+any module that imports the <TT
+CLASS="LITERAL"
+>qtsql</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qttable_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qttable</TT
+> module and which should be added to those needed by
+any module that imports the <TT
+CLASS="LITERAL"
+>qttable</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtui_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtui</TT
+> module and which should be added to those needed by any
+module that imports the <TT
+CLASS="LITERAL"
+>qtui</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_qtxml_sip_flags</TT
+></DT
+><DD
+><P
+>A string of the SIP flags used to generate the code for the
+<TT
+CLASS="LITERAL"
+>qtxml</TT
+> module and which should be added to those needed by
+any module that imports the <TT
+CLASS="LITERAL"
+>qtxml</TT
+> module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_sip_dir</TT
+></DT
+><DD
+><P
+>The name of the base directory where the <TT
+CLASS="LITERAL"
+>.sip</TT
+> files for each
+of the PyQt modules is installed. A sub-directory exists with the same name as
+the module.</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_version</TT
+></DT
+><DD
+><P
+>The PyQt version as a 3 part hexadecimal number (eg. v3.10 is represented as
+<TT
+CLASS="LITERAL"
+>0x030a00</TT
+>).</P
+><P
+></P
+><P
+></P
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>pyqt_version_str</TT
+></DT
+><DD
+><P
+>The PyQt version as a string. For development snapshots it will start with
+<TT
+CLASS="LITERAL"
+>snapshot-</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtModuleMakefile(sipconfig.SIPModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qt</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtAxContainerModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+>
+module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtCanvasModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtcanvas</TT
+>
+module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtExtModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtext</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtGLModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtgl</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtNetworkModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtnetwork</TT
+>
+module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtTableModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qttable</TT
+>
+module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtSQLModuleMakefile(QtTableModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtsql</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtUIModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtui</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+><DT
+><TT
+CLASS="LITERAL"
+>QtXMLModuleMakefile(QtModuleMakefile)</TT
+></DT
+><DD
+><P
+>The Makefile class for modules that import the <TT
+CLASS="LITERAL"
+>qtxml</TT
+> module.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="LITERAL"
+>finalise(self)</TT
+></DT
+><DD
+><P
+>This is a reimplementation of <TT
+CLASS="LITERAL"
+>sipconfig.Makefile.finalise()</TT
+>.</P
+><P
+></P
+><P
+></P
+></DD
+></DL
+></DIV
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN457"
+>Things to be Aware Of</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN459"
+>super and Wrapped Classes</A
+></H3
+><P
+>Internally PyQt implements a lazy technique for attribute lookup where
+attributes are only placed in type and instance dictionaries when they are
+first referenced. This technique is needed to reduce the time taken to import
+large modules such as PyQt.</P
+><P
+>In most circumstances this technique is transparent to an application. The
+exception is when <TT
+CLASS="LITERAL"
+>super</TT
+> is used with a PyQt class. The way
+that <TT
+CLASS="LITERAL"
+>super</TT
+> is currently implemented means that the lazy
+lookup is bypassed resulting in <TT
+CLASS="LITERAL"
+>AttributeError</TT
+> exceptions
+unless the attribute has been previously referenced.</P
+><P
+>Note that this restriction applies to any class wrapped by SIP and not just
+PyQt.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN467"
+>Python Strings, Qt Strings and Unicode</A
+></H3
+><P
+>Unicode support was added to Qt in v2.0 and to Python in v1.6. In Qt, Unicode
+support is implemented using the <TT
+CLASS="LITERAL"
+>QString</TT
+> class. It is
+important to understand that <TT
+CLASS="LITERAL"
+>QString</TT
+>s, Python string objects
+and Python Unicode objects are all different but conversions between them are
+automatic in many cases and easy to achieve manually when needed.</P
+><P
+>Whenever PyQt expects a <TT
+CLASS="LITERAL"
+>QString</TT
+> as a function argument, a
+Python string object or a Python Unicode object can be provided instead, and
+PyQt will do the necessary conversion automatically.</P
+><P
+>You may also manually convert Python string and Unicode objects to
+<TT
+CLASS="LITERAL"
+>QString</TT
+>s by using the <TT
+CLASS="LITERAL"
+>QString</TT
+> constructor
+as demonstrated in the following code fragment.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>qs1 = QString('Converted Python string object')
+qs2 = QString(u'Converted Python Unicode object')</PRE
+></TD
+></TR
+></TABLE
+><P
+>In order to convert a <TT
+CLASS="LITERAL"
+>QString</TT
+> to a Python string object use
+the Python <TT
+CLASS="LITERAL"
+>str()</TT
+> function. Applying
+<TT
+CLASS="LITERAL"
+>str()</TT
+> to a null <TT
+CLASS="LITERAL"
+>QString</TT
+> and an empty
+<TT
+CLASS="LITERAL"
+>QString</TT
+> both result in an empty Python string object.</P
+><P
+>In order to convert a <TT
+CLASS="LITERAL"
+>QString</TT
+> to a Python Unicode object use
+the Python <TT
+CLASS="LITERAL"
+>unicode()</TT
+> function. Applying
+<TT
+CLASS="LITERAL"
+>unicode()</TT
+> to a null <TT
+CLASS="LITERAL"
+>QString</TT
+> and an empty
+<TT
+CLASS="LITERAL"
+>QString</TT
+> both result in an empty Python Unicode object.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN490"
+>Access to Protected Member Functions</A
+></H3
+><P
+>When an instance of a C++ class is not created from Python it is not possible
+to access the protected member functions, or emit the signals, of that
+instance. Attempts to do so will raise a Python exception. Also, any Python
+methods corresponding to the instance's virtual member functions will never be
+called.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN493"
+><TT
+CLASS="LITERAL"
+>None</TT
+> and <TT
+CLASS="LITERAL"
+>NULL</TT
+></A
+></H3
+><P
+>Throughout the bindings, the <TT
+CLASS="LITERAL"
+>None</TT
+> value can be specified
+wherever <TT
+CLASS="LITERAL"
+>NULL</TT
+> is acceptable to the underlying C++ code.</P
+><P
+>Equally, <TT
+CLASS="LITERAL"
+>NULL</TT
+> is converted to <TT
+CLASS="LITERAL"
+>None</TT
+>
+whenever it is returned by the underlying C++ code.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN503"
+>Support for C++ <TT
+CLASS="LITERAL"
+>void *</TT
+> Data Types</A
+></H3
+><P
+>PyQt represents <TT
+CLASS="LITERAL"
+>void *</TT
+> values as objects of type
+<TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+>. Such values are often used to pass the
+addresses of external objects between different Python modules. To make this
+easier, a Python integer (or anything that Python can convert to an integer)
+can be used whenever a <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> is expected.</P
+><P
+>A <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> may be converted to a Python integer by using
+the <TT
+CLASS="LITERAL"
+>int()</TT
+> builtin function.</P
+><P
+>A <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> may be converted to a Python string by using
+its <TT
+CLASS="LITERAL"
+>asstring()</TT
+> method. The <TT
+CLASS="LITERAL"
+>asstring()</TT
+>
+method takes an integer argument which is the length of the data in bytes.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN517"
+>Support for Threads</A
+></H3
+><P
+>PyQt implements the full set of Qt's thread classes. Python, of course, also
+has its own thread extension modules. If you are using SIP v4 (or later) and
+Python v2.3.5 (or later) then PyQt does not impose any additional restrictions.
+(Read the relevant part of the Qt documentation to understand the restrictions
+imposed by the Qt API.)</P
+><P
+>If you are using earlier versions of either SIP or Python then it is possible
+to use either of the APIs so long as you follow some simple rules.</P
+><P
+></P
+><UL
+><LI
+><P
+>If you use the Qt API then the very first <TT
+CLASS="LITERAL"
+>import</TT
+> of one of
+the PyQt modules must be done from the main thread.</P
+></LI
+><LI
+><P
+>If you use the Python API then all calls to PyQt (including any
+<TT
+CLASS="LITERAL"
+>import</TT
+>s) must be done from one thread only. Therefore, if
+you want to make calls to PyQt from several threads then you must use the Qt
+API.</P
+></LI
+><LI
+><P
+>If you want to use both APIs in the same application then all calls to PyQt
+must be done from threads created using the Qt API.</P
+></LI
+></UL
+><P
+>The above comments actually apply to any SIP generated module, not just PyQt.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN531"
+>Garbage Collection</A
+></H3
+><P
+>C++ does not garbage collect unreferenced class instances, whereas Python does.
+In the following C++ fragment both colours exist even though the first can no
+longer be referenced from within the program:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>c = new QColor();
+c = new QColor();</PRE
+></TD
+></TR
+></TABLE
+><P
+>In the corresponding Python fragment, the first colour is destroyed when
+the second is assigned to <TT
+CLASS="LITERAL"
+>c</TT
+>:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>c = QColor()
+c = QColor()</PRE
+></TD
+></TR
+></TABLE
+><P
+>In Python, each colour must be assigned to different names. Typically this
+is done within class definitions, so the code fragment would be something like:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>self.c1 = QColor()
+self.c2 = QColor()</PRE
+></TD
+></TR
+></TABLE
+><P
+>Sometimes a Qt class instance will maintain a pointer to another instance and
+will eventually call the destructor of that second instance. The most common
+example is that a <TT
+CLASS="LITERAL"
+>QObject</TT
+> (and any of its sub-classes) keeps
+pointers to its children and will automatically call their destructors. In
+these cases, the corresponding Python object will also keep a reference to the
+corresponding child objects.</P
+><P
+>So, in the following Python fragment, the first <TT
+CLASS="LITERAL"
+>QLabel</TT
+> is
+not destroyed when the second is assigned to <TT
+CLASS="LITERAL"
+>l</TT
+> because the
+parent <TT
+CLASS="LITERAL"
+>QWidget</TT
+> still has a reference to it.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>p = QWidget()
+l = QLabel('First label',p)
+l = QLabel('Second label',p)</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN547"
+>C++ Variables</A
+></H3
+><P
+>Access to C++ variables is supported. They are accessed as Python instance
+variables. For example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>tab = QTab()
+tab.label = "First Tab"
+tab.r = QRect(10,10,75,30)</PRE
+></TD
+></TR
+></TABLE
+><P
+>Global variables and static class variables are effectively read-only. They
+can be assigned to, but the underlying C++ variable will not be changed. This
+may change in the future.</P
+><P
+>Access to protected C++ class variables is not supported. This may change in
+the future.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN553"
+>Multiple Inheritance</A
+></H3
+><P
+>It is not possible to define a new Python class that sub-classes from more than
+one Qt class.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN556"
+>i18n Support</A
+></H3
+><P
+>Qt implements i18n support through the Qt Linguist application, the
+<TT
+CLASS="LITERAL"
+>QTranslator</TT
+> class, and the
+<TT
+CLASS="LITERAL"
+>QApplication::translate()</TT
+>, <TT
+CLASS="LITERAL"
+>QObject::tr()</TT
+>
+and <TT
+CLASS="LITERAL"
+>QObject::trUtf8()</TT
+> methods. Usually the
+<TT
+CLASS="LITERAL"
+>tr()</TT
+> method is used to obtain the correct translation of a
+message. The translation process uses a message context to allow the same
+message to be translated differently. <TT
+CLASS="LITERAL"
+>tr()</TT
+> is actually
+generated by <TT
+CLASS="LITERAL"
+>moc</TT
+> and uses the hardcoded class name as the
+context. On the other hand, <TT
+CLASS="LITERAL"
+>QApplication::translate()</TT
+>
+allows to context to be explicitly stated.</P
+><P
+>Unfortunately, because of the way Qt implents <TT
+CLASS="LITERAL"
+>tr()</TT
+> (and
+<TT
+CLASS="LITERAL"
+>trUtf8()</TT
+>) it is not possible for PyQt to exactly reproduce
+its behavour. The PyQt implementation of <TT
+CLASS="LITERAL"
+>tr()</TT
+> (and
+<TT
+CLASS="LITERAL"
+>trUtf8()</TT
+>) uses the class name of the instance as the
+context. The key difference, and the source of potential problems, is that the
+context is determined dynamically in PyQt, but is hardcoded in Qt. In other
+words, the context of a translation may change depending on an instance's class
+hierarchy.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return self.tr("Hello")
+
+class B(A):
+ def __init__(self):
+ A.__init__(self)
+
+a = A()
+a.hello()
+
+b = B()
+b.hello()</PRE
+></TD
+></TR
+></TABLE
+><P
+>In the above the message is translated by <TT
+CLASS="LITERAL"
+>a.hello()</TT
+> using a
+context of <TT
+CLASS="LITERAL"
+>A</TT
+>, and by <TT
+CLASS="LITERAL"
+>b.hello()</TT
+> using a
+context of <TT
+CLASS="LITERAL"
+>B</TT
+>. In the equivalent C++ version the context
+would be <TT
+CLASS="LITERAL"
+>A</TT
+> in both cases.</P
+><P
+>The PyQt behaviour is unsatisfactory and may be changed in the future. It is
+recommended that <TT
+CLASS="LITERAL"
+>QApplication.translate()</TT
+> be used in
+preference to <TT
+CLASS="LITERAL"
+>tr()</TT
+> (and <TT
+CLASS="LITERAL"
+>trUtf8()</TT
+>). This
+is guaranteed to work with current and future versions of PyQt and makes it
+much easier to share message files between Python and C++ code. Below is the
+alternative implementation of <TT
+CLASS="LITERAL"
+>A</TT
+> that uses
+<TT
+CLASS="LITERAL"
+>QApplication.translate()</TT
+>.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return qApp.translate("A","Hello")</PRE
+></TD
+></TR
+></TABLE
+><P
+>Note that the code generated by <TT
+CLASS="LITERAL"
+>pyuic</TT
+> uses
+<TT
+CLASS="LITERAL"
+>QApplication.translate()</TT
+>.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN589"
+>Signal and Slot Support</A
+></H2
+><P
+>A signal may be either a Qt signal (specified using
+<TT
+CLASS="LITERAL"
+>SIGNAL()</TT
+>) or a Python signal (specified using
+<TT
+CLASS="LITERAL"
+>PYSIGNAL()</TT
+>).</P
+><P
+>A slot can be either a Python callable object, a Qt signal (specified using
+<TT
+CLASS="LITERAL"
+>SIGNAL()</TT
+>), a Python signal (specified using
+<TT
+CLASS="LITERAL"
+>PYSIGNAL()</TT
+>), or a Qt slot (specified using
+<TT
+CLASS="LITERAL"
+>SLOT()</TT
+>).</P
+><P
+>You connect signals to slots (and other signals) as you would from C++. For
+example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>QObject.connect(a,SIGNAL("QtSig()"),pyFunction)
+QObject.connect(a,SIGNAL("QtSig()"),pyClass.pyMethod)
+QObject.connect(a,SIGNAL("QtSig()"),PYSIGNAL("PySig"))
+QObject.connect(a,SIGNAL("QtSig()"),SLOT("QtSlot()"))
+QObject.connect(a,PYSIGNAL("PySig"),pyFunction)
+QObject.connect(a,PYSIGNAL("PySig"),pyClass.pyMethod)
+QObject.connect(a,PYSIGNAL("PySig"),SIGNAL("QtSig()"))
+QObject.connect(a,PYSIGNAL("PySig"),SLOT("QtSlot()"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>When a slot is a Python method that corresponds to a Qt slot then a signal can
+be connected to either the Python method or the Qt slot. The following
+connections achieve the same effect.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>sbar = QScrollBar()
+lcd = QLCDNumber()
+
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd.display)
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>The difference is that the second connection is made at the C++ level and is
+more efficient.</P
+><P
+>Disconnecting signals works in exactly the same way.</P
+><P
+>Any instance of a class that is derived from the <TT
+CLASS="LITERAL"
+>QObject</TT
+>
+class can emit a signal using the <TT
+CLASS="LITERAL"
+>emit</TT
+> method. This takes
+two arguments. The first is the Python or Qt signal, the second is a Python
+tuple which are the arguments to the signal. For example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>a.emit(SIGNAL("clicked()"),())
+a.emit(PYSIGNAL("pySig"),("Hello","World"))</PRE
+></TD
+></TR
+></TABLE
+><P
+>Note that when a slot is a Python callable object its reference count is not
+increased. This means that a class instance can be deleted without having to
+explicitly disconnect any signals connected to its methods. However, it also
+means that using lambda expressions as slots will not work unless you keep a
+separate reference to the expression to prevent it from being immediately
+garbage collected.</P
+><P
+>Qt allows a signal to be connected to a slot that requires fewer arguments than
+the signal passes. The extra arguments are quietly discarded. Python slots
+can be used in the same way. </P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN610"
+>Static Member Functions</A
+></H2
+><P
+>Static member functions are implemented as Python class functions.
+For example the C++ static member function
+<TT
+CLASS="LITERAL"
+>QObject::connect()</TT
+> is called from Python as
+<TT
+CLASS="LITERAL"
+>QObject.connect()</TT
+> or <TT
+CLASS="LITERAL"
+>self.connect()</TT
+> if
+called from a sub-class of <TT
+CLASS="LITERAL"
+>QObject</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN617"
+>Enumerated Types</A
+></H2
+><P
+>Enumerated types are implemented as a set of simple variables corresponding to
+the separate enumerated values.</P
+><P
+>When using an enumerated value the name of the class (or a sub-class) in which
+the enumerated type was defined in must be included. For example:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>Qt.SolidPattern
+QWidget.TabFocus
+QFrame.TabFocus</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN622"
+>Module Reference Documentation</A
+></H2
+><P
+>The following sections should be used in conjunction with the normal class
+documentation - only the differences specific to the Python bindings are
+documented here.</P
+><P
+>In these sections, <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Not yet implemented</I
+></SPAN
+>
+implies that the feature can be easily implemented if needed. <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Not
+implemented</I
+></SPAN
+> implies that the feature will not be implemented, either
+because it cannot be or because it is not appropriate.</P
+><P
+>If a class is described as being <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>fully implemented</I
+></SPAN
+> then
+all non-private member functions and all public class variables have been
+implemented.</P
+><P
+>If an operator has been implemented then it is stated explicitly.</P
+><P
+>Classes that are not mentioned have not yet been implemented.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN632"
+><TT
+CLASS="LITERAL"
+>qt</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN635"
+>Qt Constants</A
+></H3
+><P
+>All constant values defined by Qt have equivalent constants defined to Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN638"
+>Qt (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>Qt</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN642"
+>QAccel</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QAccel</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN646"
+>QAction (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QAction</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN650"
+>QActionGroup (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QActionGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN654"
+>QApplication</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN656"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QApplication</CODE
+>(int &amp;argc, char **argv);<P
+></P
+></DIV
+><P
+>This takes one parameter which is a list of argument strings. Arguments
+used by Qt are removed from the list.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN664"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QApplication</CODE
+>(int &amp;argc, char **argv, bool GUIenabled);<P
+></P
+></DIV
+><P
+>This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN674"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QApplication</CODE
+>(int &amp;argc, char **argv, Type type);<P
+></P
+></DIV
+><P
+>This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list. (Qt v2.2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN684"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN690"
+>QAssistantClient (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QAssistantClient</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN694"
+>QBitmap</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QBitmap</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN698"
+>QBrush</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QBrush</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN704"
+>QButton</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QButton</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN708"
+>QButtonGroup</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QButtonGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN712"
+>QByteArray</A
+></H3
+><P
+>A Python string can be used whenever a <TT
+CLASS="LITERAL"
+>QByteArray</TT
+> can be
+used. A <TT
+CLASS="LITERAL"
+>QByteArray</TT
+> can be converted to a Python string
+using the Python <TT
+CLASS="LITERAL"
+>str()</TT
+> function.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN718"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QByteArray &#38;assign</CODE
+>(const char *data, uint size);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN726"
+></A
+><CODE
+CLASS="FUNCDEF"
+>char &#38;at</CODE
+>(uint i);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN732"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int contains</CODE
+>(const char &#38;d);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN738"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool fill</CODE
+>(const char &#38;d, int size = -1);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN746"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int find</CODE
+>(const char &#38;d, uint i = 0);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN754"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void resetRawData</CODE
+>(const char *data, uintsize);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN762"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QByteArray &#38;setRawData</CODE
+>(const char *data, uintsize);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN770"
+>QCDEStyle (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCDEStyle</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN774"
+>QCheckBox</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCheckBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN778"
+>QClipboard</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN780"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void *data const</CODE
+>(const char *format);<P
+></P
+></DIV
+><P
+>Not yet implemented (Qt v1.x).</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN786"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setData</CODE
+>(const char *format, void *);<P
+></P
+></DIV
+><P
+>Not yet implemented (Qt v1.x).</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN794"
+>QColor</A
+></H3
+><P
+>The Python <TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators are
+supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN799"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getHsv</CODE
+>(int *h, int *s, int *v);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the <TT
+CLASS="LITERAL"
+>h</TT
+>,
+<TT
+CLASS="LITERAL"
+>s</TT
+> and <TT
+CLASS="LITERAL"
+>v</TT
+> values as a tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN812"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getRgb</CODE
+>(int *r, int *g, int *b);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the <TT
+CLASS="LITERAL"
+>r</TT
+>,
+<TT
+CLASS="LITERAL"
+>g</TT
+> and <TT
+CLASS="LITERAL"
+>b</TT
+> values as a tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN825"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void hsv</CODE
+>(int *h, int *s, int *v);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the <TT
+CLASS="LITERAL"
+>h</TT
+>,
+<TT
+CLASS="LITERAL"
+>s</TT
+> and <TT
+CLASS="LITERAL"
+>v</TT
+> values as a tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN838"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void rgb</CODE
+>(int *r, int *g, int *b);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the <TT
+CLASS="LITERAL"
+>r</TT
+>,
+<TT
+CLASS="LITERAL"
+>g</TT
+> and <TT
+CLASS="LITERAL"
+>b</TT
+> values as a tuple.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN851"
+>QColorDialog (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN853"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QRgb getRgba</CODE
+>(QRgb initial, bool *ok, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>initial</TT
+>, <TT
+CLASS="LITERAL"
+>parent</TT
+> and
+<TT
+CLASS="LITERAL"
+>name</TT
+> parameters and returns a tuple containing the
+<TT
+CLASS="LITERAL"
+>QRgb</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN870"
+>QColorGroup</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QColorGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN874"
+>QComboBox</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QComboBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN878"
+>QCommonStyle (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN880"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void getButtonShift</CODE
+>(int &amp;x, int &amp;y);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>x</TT
+> and
+<TT
+CLASS="LITERAL"
+>y</TT
+> values. (Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN890"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void tabbarMetrics</CODE
+>(const QTabBar *t, int &amp;hframe, int &amp;vframe, int &amp;overlap);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>t</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>hframe</TT
+>, <TT
+CLASS="LITERAL"
+>vframe</TT
+> and
+<TT
+CLASS="LITERAL"
+>overlap</TT
+> values. (Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN906"
+>QCString (Qt v2+)</A
+></H3
+><P
+>A Python string can be used whenever a <TT
+CLASS="LITERAL"
+>QCString</TT
+> can be used.
+A <TT
+CLASS="LITERAL"
+>QCString</TT
+> can be converted to a Python string using the
+Python <TT
+CLASS="LITERAL"
+>str()</TT
+> function.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN912"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCString &amp;sprintf</CODE
+>(const char *format, ...);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN919"
+></A
+><CODE
+CLASS="FUNCDEF"
+>short toShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>short</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN927"
+></A
+><CODE
+CLASS="FUNCDEF"
+>ushort toUShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ushort</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN935"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int toInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN943"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uint toUInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>uint</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN951"
+></A
+><CODE
+CLASS="FUNCDEF"
+>long toLong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>long</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN959"
+></A
+><CODE
+CLASS="FUNCDEF"
+>ulong toULong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ulong</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN967"
+></A
+><CODE
+CLASS="FUNCDEF"
+>float toFloat</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>float</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN975"
+></A
+><CODE
+CLASS="FUNCDEF"
+>double toDouble</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>double</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN983"
+>QCursor</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCursor</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN987"
+>QDataStream</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN989"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QDataStream &amp;readBytes</CODE
+>(const char *&amp;s, uint &amp;l);<P
+></P
+></DIV
+><P
+>This takes no parameters. The <TT
+CLASS="LITERAL"
+>QDataStream</TT
+> result and the
+data read are returned as a tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN998"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QDataStream &amp;readRawBytes</CODE
+>(const char *s, uint l);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>l</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>QDataStream</TT
+> result and the data read are returned as a
+tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1008"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QDataStream &amp;writeBytes</CODE
+>(const char *s, uint len);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>s</TT
+> and not passed as a
+parameter.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1018"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QDataStream &amp;writeRawBytes</CODE
+>(const char *s, uint len);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>s</TT
+> and not passed as a
+parameter.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1028"
+>QDate</A
+></H3
+><P
+>The Python
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&lt;</TT
+>, <TT
+CLASS="LITERAL"
+>&lt;=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&gt;</TT
+>, <TT
+CLASS="LITERAL"
+>&gt;=</TT
+>
+and <TT
+CLASS="LITERAL"
+>__nonzero__</TT
+>
+operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1038"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int weekNumber</CODE
+>(int *yearNum = 0);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the week number and the year number as a
+tuple. (Qt v3.1+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1044"
+>QDateTime</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDateTime</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&lt;</TT
+>, <TT
+CLASS="LITERAL"
+>&lt;=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&gt;</TT
+>, <TT
+CLASS="LITERAL"
+>&gt;=</TT
+>
+and <TT
+CLASS="LITERAL"
+>__nonzero__</TT
+>
+operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1055"
+>QTime</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTime</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&lt;</TT
+>, <TT
+CLASS="LITERAL"
+>&lt;=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&gt;</TT
+>, <TT
+CLASS="LITERAL"
+>&gt;=</TT
+>
+and <TT
+CLASS="LITERAL"
+>__nonzero__</TT
+>
+operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1066"
+>QDateEdit (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDateEdit</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1070"
+>QTimeEdit (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTimeEdit</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1074"
+>QDateTimeEdit (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDateTimeEdit</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1078"
+>QDesktopWidget (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDesktopWidget</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1082"
+>QDial (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDial</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1086"
+>QDialog</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1088"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+><P
+>This method also causes ownership of the underlying C++ dialog to be
+transfered to Python. This means that the C++ dialog will be deleted when the
+Python wrapper is garbage collected. Although this is a little inconsistent,
+it ensures that the dialog is deleted without having to explicity code it
+using <TT
+CLASS="LITERAL"
+>QObject.deleteLater()</TT
+> or other techniques.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1096"
+>QDir</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDir</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>len</TT
+>, <TT
+CLASS="LITERAL"
+>[]</TT
+> (for reading slices and
+individual elements), <TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+> and
+<TT
+CLASS="LITERAL"
+>in</TT
+> operators</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1105"
+>QFileInfoList</A
+></H3
+><P
+>This class isn't implemented. Whenever a <TT
+CLASS="LITERAL"
+>QFileInfoList</TT
+> is
+the return type of a function or the type of an argument, a Python list of
+<TT
+CLASS="LITERAL"
+>QFileInfo</TT
+> instances is used instead.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1110"
+>QDockArea (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1112"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool hasDockWindow const</CODE
+>(QDockWindow *w, int *index = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>w</TT
+> parameter and returns the index of the
+QDockWIndow or -1 if the QDockArea does not contain the QDockWindow.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1121"
+>QDockWindow (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDockWindow</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1125"
+>QColorDrag (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QColorDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1129"
+>QDragObject</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDragObject</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1133"
+>QImageDrag</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QImageDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1137"
+>QStoredDrag</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QStoredDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1141"
+>QTextDrag</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTextDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1145"
+>QUriDrag (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QUriDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1149"
+>QUrlDrag (Qt v1.x)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QUrlDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1153"
+>QDropSite</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDropSite</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1157"
+>QErrorMessage (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QErrorMessage</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1161"
+>QEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QEvent</TT
+> is fully implemented.</P
+><P
+>Instances of <TT
+CLASS="LITERAL"
+>QEvent</TT
+>s are automatically converted to the
+correct sub-class.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1167"
+>QChildEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QChildEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1171"
+>QCloseEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCloseEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1175"
+>QIconDragEvent (Qt v3.3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconDragEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1179"
+>QContextMenuEvent (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QContextMenuEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1183"
+>QCustomEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCustomEvent</TT
+> is fully implemented. Any Python object can be
+passed as the event data and its reference count is increased.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1187"
+>QDragEnterEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDragEnterEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1191"
+>QDragLeaveEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDragLeaveEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1195"
+>QDragMoveEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDragMoveEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1199"
+>QDropEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDropEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1203"
+>QFocusEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFocusEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1207"
+>QHideEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHideEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1211"
+>QIMComposeEvent (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIMComposeEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1215"
+>QIMEvent (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIMEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1219"
+>QKeyEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QKeyEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1223"
+>QMouseEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMouseEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1227"
+>QMoveEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMoveEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1231"
+>QPaintEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPaintEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1235"
+>QResizeEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QResizeEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1239"
+>QShowEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QShowEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1243"
+>QTabletEvent (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTabletEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1247"
+>QTimerEvent</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTimerEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1251"
+>QWheelEvent (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWheelEvent</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1255"
+>QEventLoop (Qt v3.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1257"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual int exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1263"
+>QFile</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1265"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool open</CODE
+>(int m, FILE *f);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1273"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readBlock</CODE
+>(char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>len</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>None</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1284"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readLine</CODE
+>(char *data, Q_ULONG maxlen);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>maxlen</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>None</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1295"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static void setDecodingFunction</CODE
+>(EncoderFn f);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1301"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static void setEncodingFunction</CODE
+>(EncoderFn f);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1307"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG writeBlock</CODE
+>(const char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>data</TT
+> and not passed
+as a parameter.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1317"
+>QFileDialog</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFileDialog</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1321"
+>QFileIconProvider</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFileIconProvider</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1325"
+>QFilePreview</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFilePreview</TT
+> is fully implemented. However it cannot be
+used from Python in the same way as it is used from C++ because PyQt does not
+support multiple inheritance involving more than one wrapped class. A trick
+that seems to work is to use composition rather than inheritance as in the
+following code fragment.</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>class FilePreview(QFilePreview):
+ pass
+
+class Preview(QLabel):
+ def __init__(self, parent=None):
+ QLabel.__init__(self, parent)
+ self.preview = FilePreview()
+ self.preview.previewUrl = self.previewUrl</PRE
+></TD
+></TR
+></TABLE
+><P
+>Note that QFilePreview cannot be instantiated directly because it is abstract.
+Thanks to Hans-Peter Jansen for this trick.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1331"
+>QFileInfo</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFileInfo</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1335"
+>QFont</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFont</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1341"
+>QFontDatabase (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFontDatabase</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1345"
+>QFontDialog (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1347"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QFont getFont</CODE
+>(bool *ok, const QFont &#38;def, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>def</TT
+>, <TT
+CLASS="LITERAL"
+>parent</TT
+> and
+<TT
+CLASS="LITERAL"
+>name</TT
+> parameters and returns a tuple containing the
+<TT
+CLASS="LITERAL"
+>QFont</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1364"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QFont getFont</CODE
+>(bool *ok, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>parent</TT
+> and <TT
+CLASS="LITERAL"
+>name</TT
+> parameters
+and returns a tuple containing the <TT
+CLASS="LITERAL"
+>QFont</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1378"
+>QFontInfo</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFontInfo</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1382"
+>QFontMetrics</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1384"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QRect boundingRect</CODE
+>(int x, int y, int w, int h, int flags, const QString &amp;str, int len = -1, int tabstops = 0, int *tabarray = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>tabarray</TT
+> parameter is a Python list of integers.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1407"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QSize size</CODE
+>(int flags, const QString &amp;str, int len = -1, int tabstops = 0, int *tabarray = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>tabarray</TT
+> parameter is a Python list of integers.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1422"
+>QFrame</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QFrame</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1426"
+>QGManager (Qt v1.x)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGManager</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1430"
+>QChain (Qt v1.x)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QChain</TT
+> is implemented as an opaque class.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1434"
+>QGrid (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGrid</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1438"
+>QGridView (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGridView</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1442"
+>QGroupBox</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGroupBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1446"
+>QHBox (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1450"
+>QHButtonGroup (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHButtonGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1454"
+>QHeader</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHeader</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1458"
+>QHGroupBox (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHGroupBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1462"
+>QIconSet</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconSet</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1466"
+>QIconFactory (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconFactory</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1470"
+>QIconView (Qt v2.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1472"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QIconViewItem *makeRowLayout</CODE
+>(QIconViewItem *begin, int &#38;y);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1480"
+>QIconViewItem (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconViewItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1484"
+>QIconDrag (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconDrag</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1488"
+>QIconDragItem (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIconDragItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1492"
+>QImage</A
+></H3
+><P
+>The Python <TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators are
+supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1497"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QImage</CODE
+>(const char *xpm[]);<P
+></P
+></DIV
+><P
+>This takes a list of strings as its parameter.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1503"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QImage</CODE
+>(uchar *data, int w, int h, int depth, QRgb *colorTable, int numColors, Endian bitOrder);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>colorTable</TT
+> parameter is a list of QRgb instances or
+None. (Qt v2.1+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1522"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uchar *bits</CODE
+>();<P
+></P
+></DIV
+><P
+>The return value is a <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> object which is only
+useful if passed to another Python module.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1528"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QRgb *colorTable</CODE
+>();<P
+></P
+></DIV
+><P
+>The return value is a <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> object which is only
+useful if passed to another Python module.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1534"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QImage convertDepthWithPalette</CODE
+>(int, QRgb *p, int pc, int cf = 0);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1545"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uchar **jumpTable</CODE
+>();<P
+></P
+></DIV
+><P
+>The return value is a <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> object which is only
+useful if passed to another Python module.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1551"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool loadFromData</CODE
+>(const uchar *buf, uint len, const char *format = 0, ColorMode mode = Auto);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>buf</TT
+> and not passed as
+a parameter.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1565"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uchar *scanLine</CODE
+>(int i);<P
+></P
+></DIV
+><P
+>The return value is a <TT
+CLASS="LITERAL"
+>sip.voidptr</TT
+> object which is only
+useful if passed to another Python module.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1572"
+>QImageIO</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1574"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static void defineIOHandler</CODE
+>(const char *format, const char *header, const char *flags, image_io_handler read_image, image_io_handler write_image);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1588"
+>QImageTextKeyLang</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QImageTextKeyLang</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1592"
+>QInputDialog (Qt v2.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1594"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QString getText</CODE
+>(const QString &amp;caption, const QString &amp;label, const QString &amp;text = QString::null, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QString</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.
+(Qt v2.1 - v2.3.1)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1613"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QString getText</CODE
+>(const QString &amp;caption, const QString &amp;label, QLineEdit::EchoModeecho, const QString &amp;text = QString::null, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QString</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.
+(Qt v2.2 - v2.3.1)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1634"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QString getText</CODE
+>(const QString &amp;caption, const QString &amp;label, QLineEdit::EchoModeecho = QLineEdit::Normal, const QString &amp;text = QString::null, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QString</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.
+(Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1655"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static int getInteger</CODE
+>(const QString &amp;caption, const QString &amp;label, int num = 0, int from = -2147483647, int to = 2147483647, int step = 1, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1680"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static double getDouble</CODE
+>(const QString &amp;caption, const QString &amp;label, double num = 0, double from = -2147483647, double to = 2147483647, int step = 1, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>double</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1705"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static QString getItem</CODE
+>(const QString &amp;caption, const QString &amp;label, const QStringList &#38;list, int current = 0, bool editable = TRUE, bool *ok = 0, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QString</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1728"
+>QInterlaceStyle (Qt v2.3.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1730"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QTabBar *sb, int &amp;sliderMin, int &amp;sliderMax, int &amp;sliderLength, int &amp;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1749"
+>QIODevice</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QIODevice</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1753"
+>QKeySequence (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QKeySequence</TT
+> is fully implemented including the operators
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>, <TT
+CLASS="LITERAL"
+>QString()</TT
+> and
+<TT
+CLASS="LITERAL"
+>int()</TT
+>. A <TT
+CLASS="LITERAL"
+>QString</TT
+> instance or a Python
+integer may be used whenever a <TT
+CLASS="LITERAL"
+>QKeySequence</TT
+> can be used.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1763"
+>QLabel</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLabel</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1767"
+>QLayout</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLayout</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1771"
+>QBoxLayout</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QBoxLayout</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1775"
+>QGLayoutIterator (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGLayoutIterator</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1779"
+>QGridLayout</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1781"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool findWidget</CODE
+>(QWidget *w, int *row, int *col);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>w</TT
+> parameter and returns a tuple containing
+the <TT
+CLASS="LITERAL"
+>bool</TT
+> result, <TT
+CLASS="LITERAL"
+>row</TT
+> and
+<TT
+CLASS="LITERAL"
+>col</TT
+>. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1795"
+>QHBoxLayout</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHBoxLayout</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1799"
+>QLayoutItem (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLayoutItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1803"
+>QLayoutIterator (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1805"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QLayoutItem *next</CODE
+>();<P
+></P
+></DIV
+><P
+>This is a wrapper around the <TT
+CLASS="LITERAL"
+>QLayoutIterator</TT
+>
+<TT
+CLASS="LITERAL"
+>++</TT
+> operator.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1812"
+>QSpacerItem (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSpacerItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1816"
+>QVBoxLayout</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QVBoxLayout</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1820"
+>QWidgetItem (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWidgetItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1824"
+>QLCDNumber</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLCDNumber</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1828"
+>QLibrary (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLibrary</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1832"
+>QLineEdit</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1834"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int characterAt</CODE
+>(int xpos, QChar *chr);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>xpos</TT
+> parameter and returns the int
+result and the <TT
+CLASS="LITERAL"
+>chr</TT
+> value as a tuple. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1844"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void del</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delChar</TT
+> in Python. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1850"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool getSelection</CODE
+>(int *start, int *end);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns the bool result and the
+<TT
+CLASS="LITERAL"
+>start</TT
+> and <TT
+CLASS="LITERAL"
+>end</TT
+> values as a tuple.
+(Qt v3+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1860"
+>QList&lt;type&gt; (Qt v2)</A
+></H3
+><P
+>Types based on the <TT
+CLASS="LITERAL"
+>QList</TT
+> template are automatically
+converted to and from Python lists of the type.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1864"
+>QListBox</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1866"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool itemYPos</CODE
+>(int index, int *yPos);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>index</TT
+> parameter and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and <TT
+CLASS="LITERAL"
+>yPos</TT
+>.
+(Qt v1.x)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1877"
+>QListBoxItem</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListBoxItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1881"
+>QListBoxPixmap</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListBoxPixmap</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1885"
+>QListBoxText</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListBoxText</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1889"
+>QListView</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListView</TT
+> is fully implemented.</P
+><P
+>Note that to remove a child <TT
+CLASS="LITERAL"
+>QListViewItem</TT
+> you must first
+call <TT
+CLASS="LITERAL"
+>takeItem()</TT
+> and then <TT
+CLASS="LITERAL"
+>del()</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1897"
+>QListViewItem</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListViewItem</TT
+> is fully implemented.</P
+><P
+>Note that to remove a child <TT
+CLASS="LITERAL"
+>QListViewItem</TT
+> you must first
+call <TT
+CLASS="LITERAL"
+>takeItem()</TT
+> and then <TT
+CLASS="LITERAL"
+>del()</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1905"
+>QCheckListItem</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCheckListItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1909"
+>QListViewItemIterator (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QListViewItemIterator</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1913"
+>QLocale (Qt v3.3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1915"
+></A
+><CODE
+CLASS="FUNCDEF"
+>short toShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>short</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1923"
+></A
+><CODE
+CLASS="FUNCDEF"
+>ushort toUShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ushort</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1931"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int toInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1939"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uint toUInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>uint</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1947"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG toLong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>long</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1955"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_ULONG toULong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ulong</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1963"
+></A
+><CODE
+CLASS="FUNCDEF"
+>float toFloat</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>float</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1971"
+></A
+><CODE
+CLASS="FUNCDEF"
+>double toDouble</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>double</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN1979"
+>QMainWindow</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1981"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextStream &amp;operator&lt;&lt;</CODE
+>(QTextStream &amp;, const QMainWindow &amp;);<P
+></P
+></DIV
+><P
+>This operator is fully implemented. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1989"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextStream &amp;operator&gt;&gt;</CODE
+>(QTextStream &amp;, QMainWindow &amp;);<P
+></P
+></DIV
+><P
+>This operator is fully implemented. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN1997"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool getLocation</CODE
+>(QToolBar *tb, ToolBarDock &amp;dock, int &amp;index, bool &amp;nl, int &amp;extraOffset);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>tb</TT
+> parameter and returns a tuple of the
+result, <TT
+CLASS="LITERAL"
+>dock</TT
+>, <TT
+CLASS="LITERAL"
+>index</TT
+>,
+<TT
+CLASS="LITERAL"
+>nl</TT
+> and <TT
+CLASS="LITERAL"
+>extraOffset</TT
+> values. (Qt v2.1.0+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2016"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QList&lt;QToolBar&gt; toolBars</CODE
+>(ToolBarDock dock);<P
+></P
+></DIV
+><P
+>This returns a list of <TT
+CLASS="LITERAL"
+>QToolBar</TT
+> instances. (Qt v2.1.0+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2023"
+>QMemArray&lt;type&gt; (Qt v3+)</A
+></H3
+><P
+>Types based on the <TT
+CLASS="LITERAL"
+>QMemArray</TT
+> template are automatically
+converted to and from Python lists of the type.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2027"
+>QMenuBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMenuBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2031"
+>QMenuData</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2033"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMenuItem *findItem</CODE
+>(int id, QMenuData **parent);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2041"
+>QCustomMenuItem (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCustomMenuItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2045"
+>QMenuItem</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMenuItem</TT
+> is an internal Qt class.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2049"
+>QMessageBox</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMessageBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2053"
+>QMetaObject</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2055"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int numClassInfo const</CODE
+>(bool super = FALSE);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2061"
+></A
+><CODE
+CLASS="FUNCDEF"
+>const QClassInfo *classInfo const</CODE
+>(bool super = FALSE);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2067"
+>QMetaProperty</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMetaProperty</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2071"
+>QMimeSource (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMimeSource</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2075"
+>QMimeSourceFactory (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMimeSourceFactory</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2079"
+>QWindowsMime (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWindowsMime</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2083"
+>QMotifPlusStyle (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2085"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getButtonShift</CODE
+>(int &amp;x, int &amp;y);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>x</TT
+> and
+<TT
+CLASS="LITERAL"
+>y</TT
+> values. (Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2095"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QScrollBar *sb, int &amp;sliderMin, int &amp;sliderMax, int &amp;sliderLength, int &amp;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2114"
+>QMotifStyle (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2116"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QTabBar *sb, int &#38;sliderMin, int &#38;sliderMax, int &#38;sliderLength, int &#38;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2135"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void tabbarMetrics</CODE
+>(const QTabBar *t, int &#38;hframe, int &#38;vframe, int &#38;overlap);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>t</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>hframe</TT
+>, <TT
+CLASS="LITERAL"
+>vframe</TT
+> and
+<TT
+CLASS="LITERAL"
+>overlap</TT
+> values. (Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2151"
+>QMovie</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2153"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMovie</CODE
+>(QDataSource *src, int bufsize = 1024);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2161"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void pushData</CODE
+>(const uchar *data, int length);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>length</TT
+> is derived from <TT
+CLASS="LITERAL"
+>data</TT
+> and not
+passed as a parameter. (Qt v2.2.0+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2171"
+>QMultiLineEdit</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2173"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void cursorPosition const</CODE
+>(int *line, int *col);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>line</TT
+> and
+<TT
+CLASS="LITERAL"
+>col</TT
+> values. (Qt v1.x, Qt v2.x)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2183"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void del</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delChar</TT
+> in Python. (Qt v1.x, Qt v2.x)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2189"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getCursorPosition const</CODE
+>(int *line, int *col);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>line</TT
+> and
+<TT
+CLASS="LITERAL"
+>col</TT
+> values. (Qt v1.x, Qt v2.x)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2199"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool getMarkedRegion</CODE
+>(int *line1, int *col1, int *line2, int *col2);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the bool result and the
+<TT
+CLASS="LITERAL"
+>line1</TT
+>, <TT
+CLASS="LITERAL"
+>col1</TT
+>, <TT
+CLASS="LITERAL"
+>line2</TT
+> and
+<TT
+CLASS="LITERAL"
+>col2</TT
+> values.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2215"
+>QMutex (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMutex</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2219"
+>QMutexLocker (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QMutexLocker</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2223"
+>QNetworkOperation (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QNetworkOperation</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2227"
+>QNetworkProtocol (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QNetworkProtocol</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2231"
+>QNetworkProtocolFactoryBase (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QNetworkProtocolFactoryBase</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2235"
+>QObject</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2237"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool disconnect</CODE
+>(const QObject *receiver, const char *member = 0);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2245"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool disconnect</CODE
+>(const char *signal = 0, const QObject *receiver = 0, const char *member = 0);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2255"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static bool disconnect</CODE
+>(const QObject *sender, const char *signal, const QObject *receiver, const char *member);<P
+></P
+></DIV
+><P
+>At the moment PyQt does not support the full behaviour of the corresponding Qt
+method. In particular, specifying None (ie. 0 in C++) for the
+<TT
+CLASS="LITERAL"
+>signal</TT
+> and <TT
+CLASS="LITERAL"
+>receiver</TT
+> parameters is not yet
+supported.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2269"
+>QObjectCleanupHandler (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QObjectCleanupHandler</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2273"
+>QObjectList</A
+></H3
+><P
+>This class isn't implemented. Whenever a <TT
+CLASS="LITERAL"
+>QObjectList</TT
+> is the
+return type of a function or the type of an argument, a Python list of
+<TT
+CLASS="LITERAL"
+>QObject</TT
+> instances is used instead.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2278"
+>QPaintDeviceMetrics</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPaintDeviceMetrics</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2282"
+>QPaintDevice</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2284"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual bool cmd</CODE
+>(int, QPainter *, QPDevCmdParam *);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2291"
+>QPainter</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2293"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QRect boundingRect</CODE
+>(int x, int y, int w, int h, int flags, const char *str, int len = -1, char **intern = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>intern</TT
+> parameter is not supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2314"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QRect boundingRect</CODE
+>(const QRect&#38;, int flags, const char *str, int len = -1, char **intern = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>intern</TT
+> parameter is not supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2328"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void drawText</CODE
+>(int x, int y, int w, int h, int flags, const char *str, int len = -1, QRect *br = 0, char **intern = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>intern</TT
+> parameter is not supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2351"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void drawText</CODE
+>(const QRect&#38;, int flags, const char *str, int len = -1, QRect *br = 0, char **intern = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>intern</TT
+> parameter is not supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2367"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setTabArray</CODE
+>(int *ta);<P
+></P
+></DIV
+><P
+>This takes a single parameter which is a list of tab stops.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2373"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int *tabArray</CODE
+>();<P
+></P
+></DIV
+><P
+>This returns a list of tab stops.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2378"
+>QPalette</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPalette</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2384"
+>QPixmap</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2386"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QPixmap</CODE
+>(const char *xpm[]);<P
+></P
+></DIV
+><P
+>This takes a list of strings as its parameter.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2392"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool loadFromData</CODE
+>(const uchar *buf, uint len, const char *format = 0, ColorMode mode = Auto);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>buf</TT
+> and not passed as
+a parameter.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2406"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool loadFromData</CODE
+>(const uchar *buf, uint len, const char *format, int conversion_flags);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2418"
+>QPixmapCache (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPixmapCache</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2422"
+>QPair&lt;type,type&gt; (Qt v3+)</A
+></H3
+><P
+>Types based on the <TT
+CLASS="LITERAL"
+>QPair</TT
+> template are automatically
+converted to and from Python tuples of two elements.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2426"
+>QPen</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPen</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2432"
+>QPicture</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2434"
+></A
+><CODE
+CLASS="FUNCDEF"
+>const char *data</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2439"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setData</CODE
+>(const char *data, uint size);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>size</TT
+> is derived from <TT
+CLASS="LITERAL"
+>data</TT
+> and not passed
+as a parameter.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2449"
+>QPlatinumStyle (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2451"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QTabBar *sb, int &#38;sliderMin, int &#38;sliderMax, int &#38;sliderLength, int &#38;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2470"
+>QPoint</A
+></H3
+><P
+>The Python
+<TT
+CLASS="LITERAL"
+>+</TT
+>, <TT
+CLASS="LITERAL"
+>+=</TT
+>,
+<TT
+CLASS="LITERAL"
+>-</TT
+>, <TT
+CLASS="LITERAL"
+>-=</TT
+>, unary <TT
+CLASS="LITERAL"
+>-</TT
+>,
+<TT
+CLASS="LITERAL"
+>*</TT
+>, <TT
+CLASS="LITERAL"
+>*=</TT
+>,
+<TT
+CLASS="LITERAL"
+>/</TT
+>, <TT
+CLASS="LITERAL"
+>/=</TT
+>,
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+> and <TT
+CLASS="LITERAL"
+>__nonzero__</TT
+>
+operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2485"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rx</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2490"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;ry</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2495"
+>QPointArray</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2497"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QPointArray</CODE
+>(int nPoints, const QCOORD *points);<P
+></P
+></DIV
+><P
+>This takes a single parameter which is a list of points.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2505"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void point</CODE
+>(uint i, int *x, int *y);<P
+></P
+></DIV
+><P
+>This takes the single parameter <TT
+CLASS="LITERAL"
+>i</TT
+> and returns the
+<TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+> values as a tuple.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2518"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool putPoints</CODE
+>(int index, int nPoints, const QCOORD *points);<P
+></P
+></DIV
+><P
+>This takes two parameters, <TT
+CLASS="LITERAL"
+>index</TT
+> and a list of points.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2529"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool putPoints</CODE
+>(int index, int nPoints, int firstx, int firsty, ...);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2542"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setPoints</CODE
+>(int nPoints, const QCOORD *points);<P
+></P
+></DIV
+><P
+>This takes a single parameter which is a list of points.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2550"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setPoints</CODE
+>(int nPoints, int firstx, int firsty, ...);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2561"
+>QPopupMenu</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2563"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2569"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int exec</CODE
+>(const QPoint &#38;pos, int indexAtPoint = 0);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2578"
+>QPrintDialog (X11)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPrintDialog</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2582"
+>QPrinter</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPrinter</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2586"
+>QProcess (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QProcess</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2590"
+>QProgressBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QProgressBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2594"
+>QProgressDialog</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QProgressDialog</TT
+> is fully implemented.
+value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2598"
+>QPtrList&lt;type&gt; (Qt v3+)</A
+></H3
+><P
+>Types based on the <TT
+CLASS="LITERAL"
+>QPtrList</TT
+> template are automatically
+converted to and from Python lists of the type.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2602"
+>QPushButton</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPushButton</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2606"
+>QRadioButton</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QRadioButton</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2610"
+>QRangeControl</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QRangeControl</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2614"
+>QRect</A
+></H3
+><P
+>The Python
+<TT
+CLASS="LITERAL"
+>&amp;</TT
+>, <TT
+CLASS="LITERAL"
+>&amp;=</TT
+>,
+<TT
+CLASS="LITERAL"
+>|</TT
+>, <TT
+CLASS="LITERAL"
+>|=</TT
+>,
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>, <TT
+CLASS="LITERAL"
+>in</TT
+> and
+<TT
+CLASS="LITERAL"
+>__nonzero__</TT
+> operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2625"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void coords</CODE
+>(int *x1, int *y1, int *x2, int *y2);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple containing the four values.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2637"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void rect</CODE
+>(int *x, int *y, int *w, int *h);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple containing the four values.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2649"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rBottom</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2654"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rLeft</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2659"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rRight</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2664"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rTop</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2669"
+>QRegExp</A
+></H3
+><P
+>The Python <TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators are
+supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2674"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int match</CODE
+>(const char *str, int index = 0, int *len = 0);<P
+></P
+></DIV
+><P
+>This takes <TT
+CLASS="LITERAL"
+>str</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> parameters and
+returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>len</TT
+> value. (Qt v1.x)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2688"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int match</CODE
+>(const QString &#38;str, int index = 0, int *len = 0);<P
+></P
+></DIV
+><P
+>This takes <TT
+CLASS="LITERAL"
+>str</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> parameters and
+returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>len</TT
+> value. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2702"
+>QRegion</A
+></H3
+><P
+>The Python
+<TT
+CLASS="LITERAL"
+>|</TT
+>, <TT
+CLASS="LITERAL"
+>|=</TT
+>,
+<TT
+CLASS="LITERAL"
+>+</TT
+>, <TT
+CLASS="LITERAL"
+>+=</TT
+>,
+<TT
+CLASS="LITERAL"
+>&amp;</TT
+>, <TT
+CLASS="LITERAL"
+>&amp;=</TT
+>,
+<TT
+CLASS="LITERAL"
+>-</TT
+>, <TT
+CLASS="LITERAL"
+>-=</TT
+>,
+<TT
+CLASS="LITERAL"
+>^</TT
+>, <TT
+CLASS="LITERAL"
+>^=</TT
+>,
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+>, <TT
+CLASS="LITERAL"
+>in</TT
+> and
+<TT
+CLASS="LITERAL"
+>__nonzero__</TT
+> operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2719"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QArray&lt;QRect&gt; rects</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2724"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setRects</CODE
+>(QRect *rects, int num);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2.2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2732"
+>QScrollBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QScrollBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2736"
+>QScrollView</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2738"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void contentsToViewport</CODE
+>(int x, int y, int &#38;vx, int &#38;vy);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+> parameters and
+returns a tuple containing the <TT
+CLASS="LITERAL"
+>vx</TT
+> and <TT
+CLASS="LITERAL"
+>vy</TT
+>
+values. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2754"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void viewportToContents</CODE
+>(int vx, int vy, int &#38;x, int &#38;y);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>vx</TT
+> and <TT
+CLASS="LITERAL"
+>vy</TT
+> parameters and
+returns a tuple containing the <TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+>
+values. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2770"
+>QSemaphore (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSemaphore</TT
+> is fully implemented. The <TT
+CLASS="LITERAL"
+>+=</TT
+>
+and <TT
+CLASS="LITERAL"
+>-=</TT
+> operators have also been implemented, but require
+Python v2.0 or later.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2776"
+>QSemiModal (Qt v1, v2)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSemiModal</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2780"
+>QSessionManager (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSessionManager</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2784"
+>QSettings (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2786"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool readBoolEntry</CODE
+>(const QString &amp;key, bool def = 0, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2799"
+></A
+><CODE
+CLASS="FUNCDEF"
+>double readDoubleEntry</CODE
+>(const QString &amp;key, double def = 0, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>double</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2812"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QString readEntry</CODE
+>(const QString &amp;key, const QString &amp;def = QString::null, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QString</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2825"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QStringList readListEntry</CODE
+>(const QString &amp;key, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QStringList</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2836"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QStringList readListEntry</CODE
+>(const QString &amp;key, const QChar &amp;separator, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>QStringList</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2849"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int readNumEntry</CODE
+>(const QString &amp;key, int def = 0, bool *ok = 0);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>ok</TT
+> is not passed and the returned value is a tuple of
+the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the <TT
+CLASS="LITERAL"
+>ok</TT
+> flag.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2862"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool writeEntry</CODE
+>(const QString &amp;key, bool value);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2870"
+>QSGIStyle (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2872"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QScrollBar *sb, int &amp;sliderMin, int &amp;sliderMax, int &amp;sliderLength, int &amp;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2891"
+>QSignalMapper</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSignalMapper</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2895"
+>QSimpleRichText (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSimpleRichText</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2899"
+>QSize</A
+></H3
+><P
+>The Python
+<TT
+CLASS="LITERAL"
+>+</TT
+>, <TT
+CLASS="LITERAL"
+>+=</TT
+>,
+<TT
+CLASS="LITERAL"
+>-</TT
+>, <TT
+CLASS="LITERAL"
+>-=</TT
+>,
+<TT
+CLASS="LITERAL"
+>*</TT
+>, <TT
+CLASS="LITERAL"
+>*=</TT
+>,
+<TT
+CLASS="LITERAL"
+>/</TT
+>, <TT
+CLASS="LITERAL"
+>/=</TT
+>,
+<TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+> and <TT
+CLASS="LITERAL"
+>__nonzero__</TT
+>
+operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2913"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rheight</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2918"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCOORD &amp;rwidth</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2923"
+>QSizeGrip (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSizeGrip</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2927"
+>QSizePolicy (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSizePolicy</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2931"
+>QSlider</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSlider</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2935"
+>QSocketNotifier</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSocketNotifier</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2939"
+>QSound (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSound</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2943"
+>QSpinBox</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2945"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual int mapTextToValue</CODE
+>(bool *ok);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the modified
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2953"
+>QSplashScreen (Qt v3.2.0+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSplashScreen</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2957"
+>QSplitter</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2959"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getRange</CODE
+>(int id, int *min, int *max);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>id</TT
+> parameter and returns the
+<TT
+CLASS="LITERAL"
+>min</TT
+> and <TT
+CLASS="LITERAL"
+>max</TT
+> values as a tuple. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2972"
+>QStatusBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QStatusBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2976"
+>QChar (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2978"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uchar &#38;cell const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN2983"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uchar &#38;row const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN2988"
+>QString</A
+></H3
+><P
+>A Python string object (or Unicode object) can be used whenever a
+<TT
+CLASS="LITERAL"
+>QString</TT
+> can be used. A <TT
+CLASS="LITERAL"
+>QString</TT
+> can be
+converted to a Python string object using the Python <TT
+CLASS="LITERAL"
+>str()</TT
+>
+function, and to a Python Unicode object using the Python
+<TT
+CLASS="LITERAL"
+>unicode()</TT
+> function.</P
+><P
+>The Python <TT
+CLASS="LITERAL"
+>+=</TT
+>, <TT
+CLASS="LITERAL"
+>len</TT
+>, <TT
+CLASS="LITERAL"
+>[]</TT
+>
+(for reading slices and individual characters), <TT
+CLASS="LITERAL"
+>in</TT
+> and
+comparison operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3000"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QCharRef at</CODE
+>(uint i);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3006"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QChar constref const</CODE
+>(uint i);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3012"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QChar &#38;ref</CODE
+>(uint i);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3018"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QString &#38;setUnicodeCodes</CODE
+>(const ushort *unicode_as_shorts, uint len);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v2.1+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3026"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QString &#38;sprintf</CODE
+>(const char *format, ...);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3033"
+></A
+><CODE
+CLASS="FUNCDEF"
+>short toShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>short</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3041"
+></A
+><CODE
+CLASS="FUNCDEF"
+>ushort toUShort</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ushort</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3049"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int toInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>int</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3057"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uint toUInt</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>uint</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3065"
+></A
+><CODE
+CLASS="FUNCDEF"
+>long toLong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>long</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3073"
+></A
+><CODE
+CLASS="FUNCDEF"
+>ulong toULong</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>ulong</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3081"
+></A
+><CODE
+CLASS="FUNCDEF"
+>float toFloat</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>float</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3089"
+></A
+><CODE
+CLASS="FUNCDEF"
+>double toDouble</CODE
+>(bool *ok = 0);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>double</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3097"
+>QStringList (Qt v2+)</A
+></H3
+><P
+>The Python <TT
+CLASS="LITERAL"
+>len</TT
+>, <TT
+CLASS="LITERAL"
+>[]</TT
+> (for both reading and
+writing slices and individual elements), <TT
+CLASS="LITERAL"
+>del</TT
+> (for deleting
+slices and individual elements), <TT
+CLASS="LITERAL"
+>+</TT
+>, <TT
+CLASS="LITERAL"
+>+=</TT
+>,
+<TT
+CLASS="LITERAL"
+>*</TT
+>, <TT
+CLASS="LITERAL"
+>*=</TT
+>, <TT
+CLASS="LITERAL"
+>==</TT
+>,
+<TT
+CLASS="LITERAL"
+>!=</TT
+> and <TT
+CLASS="LITERAL"
+>in</TT
+> operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3110"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Iterator append</CODE
+>(const QString &#38;x);<P
+></P
+></DIV
+><P
+>This does not return a value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3116"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Iterator prepend</CODE
+>(const QString &#38;x);<P
+></P
+></DIV
+><P
+>This does not return a value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3122"
+>QStrList</A
+></H3
+><P
+>This class isn't implemented. Whenever a <TT
+CLASS="LITERAL"
+>QStrList</TT
+> is the
+return type of a function or the type of an argument, a Python list of strings
+is used instead.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3126"
+>QStyle (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3128"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void getButtonShift</CODE
+>(int &amp;x, int &amp;y);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>x</TT
+> and
+<TT
+CLASS="LITERAL"
+>y</TT
+> values. (Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3138"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void scrollBarMetrics</CODE
+>(const QScrollBar *b, int &amp;sliderMin, int &amp;sliderMax, int &amp;sliderLength, int &amp;buttonDim);<P
+></P
+></DIV
+><P
+>Thus takes only the <TT
+CLASS="LITERAL"
+>b</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3157"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void tabbarMetrics</CODE
+>(const QTabBar *t, int &amp;hframe, int &amp;vframe, int &amp;overlap);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>t</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>hframe</TT
+>, <TT
+CLASS="LITERAL"
+>vframe</TT
+> and
+<TT
+CLASS="LITERAL"
+>overlap</TT
+> values. (Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3173"
+>QStyleOption (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QStyleOption</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3177"
+>QStyleSheet (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QStyleSheet</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3181"
+>QStyleSheetItem (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QStyleSheetItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3185"
+>QSyntaxHighlighter (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSyntaxHighlighter</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3189"
+>QTab</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTab</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3193"
+>QTabBar</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3195"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QList&lt;QTab&gt; tabList</CODE
+>();<P
+></P
+></DIV
+><P
+>This returns a list of <TT
+CLASS="LITERAL"
+>QTab</TT
+> instances.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3201"
+>QTabDialog</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTabDialog</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3205"
+>QTableView (Qt 1.x, Qt 2.x)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3207"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool colXPos</CODE
+>(int col, int *xPos);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>col</TT
+> parameter and returns a tuple containing
+the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and <TT
+CLASS="LITERAL"
+>xPos</TT
+>.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3218"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool rowYPos</CODE
+>(int row, int *yPos);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>row</TT
+> parameter and returns a tuple containing
+the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and <TT
+CLASS="LITERAL"
+>yPos</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3229"
+>QTabWidget (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTabWidget</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3233"
+>QTextBrowser (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTextBrowser</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3237"
+>QTextCodec (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3239"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual QCString fromUnicode</CODE
+>(const QString &amp;uc, int &amp;lenInOut);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>QCString</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>lenInOut</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3249"
+>QTextDecoder (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTextDecoder</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3253"
+>QTextEncoder (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3255"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual QCString fromUnicode = 0</CODE
+>(const QString &amp;uc, int &amp;lenInOut);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>QCString</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>lenInOut</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3265"
+>QTextEdit (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3267"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int charAt</CODE
+>(const QPoint &amp;pos, int *para = 0);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>pos</TT
+> parameter and returns a tuple of the
+value returned via the <TT
+CLASS="LITERAL"
+>para</TT
+> pointer and the int result.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3277"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void del</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delChar</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3283"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual bool find</CODE
+>(const QString &amp;expr, bool cs, bool wo, bool forward = TRUE, int *para = 0, int *index = 0);<P
+></P
+></DIV
+><P
+>If the <TT
+CLASS="LITERAL"
+>para</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> parameters are
+omitted then the bool result is returned. If both are supplied (as integers)
+then a tuple of the bool result and the modified values of
+<TT
+CLASS="LITERAL"
+>para</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3303"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getCursorPosition</CODE
+>(int *para, int *index);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the values returned via the
+<TT
+CLASS="LITERAL"
+>para</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> pointers.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3313"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getSelection</CODE
+>(int *paraFrom, int *indexFrom, int *paraTo, int *indexTo, int selNum = 0);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>selNum</TT
+> parameter and returns a tuple of
+the <TT
+CLASS="LITERAL"
+>paraFrom</TT
+>, <TT
+CLASS="LITERAL"
+>indexFrom</TT
+>,
+<TT
+CLASS="LITERAL"
+>paraTo</TT
+> and <TT
+CLASS="LITERAL"
+>indexTo</TT
+> values.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3332"
+>QTextStream</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3334"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextStream</CODE
+>(FILE *fp, int mode);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3342"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextStream &#38;readRawBytes</CODE
+>(char *buf, uint len);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3350"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextStream &#38;writeRawBytes</CODE
+>(const char *buf, uint len);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3358"
+>QTextIStream (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3360"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextIStream</CODE
+>(FILE *fp, int mode);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3368"
+>QTextOStream (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3370"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QTextOStream</CODE
+>(FILE *fp, int mode);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3378"
+>QTextView (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTextView</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3382"
+>QThread (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QThread</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3386"
+>QTimer</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTimer</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3390"
+>QToolBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QToolBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3394"
+>QToolBox (Qt v3.2.0+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QToolBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3398"
+>QToolButton</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QToolButton</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3402"
+>QToolTip</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QToolTip</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3406"
+>QToolTipGroup</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QToolTipGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3410"
+>QTranslator (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTranslator</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3414"
+>QTranslatorMessage (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTranslatorMessage</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3418"
+>QUrl (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QUrl</TT
+> is fully implemented, including the
+<TT
+CLASS="LITERAL"
+>QString()</TT
+>, <TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+>
+operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3425"
+>QUrlInfo (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QUrlInfo</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3429"
+>QUrlOperator (Qt v2.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3431"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual bool isDir</CODE
+>(bool *ok);<P
+></P
+></DIV
+><P
+>This returns a tuple of the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>ok</TT
+> value.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3439"
+>QUuid (Qt v3.0+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QUuid</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3443"
+>QValidator</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3445"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual State validate</CODE
+>(QString&#38; input, int&#38; pos);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>State</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>pos</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3455"
+>QDoubleValidator</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3457"
+></A
+><CODE
+CLASS="FUNCDEF"
+>State validate</CODE
+>(QString&#38; input, int&#38; pos);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>State</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>pos</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3467"
+>QIntValidator</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3469"
+></A
+><CODE
+CLASS="FUNCDEF"
+>State validate</CODE
+>(QString&#38; input, int&#38; pos);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>State</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>pos</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3479"
+>QRegExpValidator (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3481"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual State validate</CODE
+>(QString&#38; input, int&#38; pos);<P
+></P
+></DIV
+><P
+>The returned value is a tuple of the <TT
+CLASS="LITERAL"
+>State</TT
+> result and the
+updated <TT
+CLASS="LITERAL"
+>pos</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3491"
+>QValueList&lt;type&gt; (Qt v2+)</A
+></H3
+><P
+>Types based on the <TT
+CLASS="LITERAL"
+>QValueList</TT
+> template are automatically
+converted to and from Python lists of the type.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3495"
+>QVariant (Qt v2.1+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3497"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QVariant</CODE
+>(const char *val);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3503"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QVariant</CODE
+>(const QBitArray &amp;val);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3509"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QVariant</CODE
+>(const QValueList&lt;QVariant&gt; &amp;val);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3515"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QVariant</CODE
+>(const QMap&lt;QString,QVariant&gt; &amp;val);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3521"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QBitArray &amp;asBitArray</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3526"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool &amp;asBool</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3531"
+></A
+><CODE
+CLASS="FUNCDEF"
+>double &amp;asDouble</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3536"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int &amp;asInt</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3541"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QValueList&lt;QVariant&gt; &amp;asList</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3546"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMap&lt;QString,QVariant&gt; &amp;asMap</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3551"
+></A
+><CODE
+CLASS="FUNCDEF"
+>uint &amp;asUInt</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3556"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QValueListConstIterator&lt;QVariant&gt;listBegin const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3561"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QValueListConstIterator&lt;QVariant&gt;listEnd const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3566"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMapConstIterator&lt;QString,QVariant&gt;mapBegin const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3571"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMapConstIterator&lt;QString,QVariant&gt;mapEnd const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3576"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMapConstIterator&lt;QString,QVariant&gt;mapFind const</CODE
+>(const QString &#38;key);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3582"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QValueListConstIterator&lt;QString&gt;stringListBegin const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3587"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QValueListConstIterator&lt;QString&gt;stringListEnd const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3592"
+></A
+><CODE
+CLASS="FUNCDEF"
+>const QBitArray toBitArray const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3597"
+></A
+><CODE
+CLASS="FUNCDEF"
+>const QValueList&lt;QVariant&gt;toList const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3602"
+></A
+><CODE
+CLASS="FUNCDEF"
+>const QMap&lt;QString,QVariant&gt;toMap const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3607"
+>QVBox (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QVBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3611"
+>QVButtonGroup (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QVButtonGroup</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3615"
+>QVGroupBox (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QVGroupBox</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3619"
+>QWaitCondition (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWaitCondition</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3623"
+>QWhatsThis</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWhatsThis</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3627"
+>QWidget</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3629"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QWExtra *extraData</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3634"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QFocusData *focusData</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3639"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void lower</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>lowerW</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3645"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void raise</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>raiseW</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3651"
+>QWidgetList</A
+></H3
+><P
+>This class isn't implemented. Whenever a <TT
+CLASS="LITERAL"
+>QWidgetList</TT
+> is the
+return type of a function or the type of an argument, a Python list of
+instances is used instead.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3655"
+>QWidgetStack</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWidgetStack</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3659"
+>QWindow</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWindow</TT
+> is fully implemented (Qt v1.x).</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3663"
+>QWindowsStyle (Qt v2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3665"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getButtonShift</CODE
+>(int &#38;x, int &#38;y);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>x</TT
+> and
+<TT
+CLASS="LITERAL"
+>y</TT
+> values. (Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3675"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void scrollBarMetrics</CODE
+>(const QTabBar *sb, int &#38;sliderMin, int &#38;sliderMax, int &#38;sliderLength, int &#38;buttonDim);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>sb</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>sliderMin</TT
+>, <TT
+CLASS="LITERAL"
+>sliderMax</TT
+>,
+<TT
+CLASS="LITERAL"
+>sliderLength</TT
+> and <TT
+CLASS="LITERAL"
+>buttonDim</TT
+> values.
+(Qt v2)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3694"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void tabbarMetrics</CODE
+>(const QTabBar *t, int &#38;hframe, int &#38;vframe, int &#38;overlap);<P
+></P
+></DIV
+><P
+>This takes only the <TT
+CLASS="LITERAL"
+>t</TT
+> parameter and returns a tuple of the
+<TT
+CLASS="LITERAL"
+>hframe</TT
+>, <TT
+CLASS="LITERAL"
+>vframe</TT
+> and
+<TT
+CLASS="LITERAL"
+>overlap</TT
+> values. (Qt v2)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3710"
+>QWindowsXPStyle (Qt v3.0.1+, Windows)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWindowsXPStyle</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3714"
+>QWizard (Qt v2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWizard</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3718"
+>QWMatrix</A
+></H3
+><P
+>The Python <TT
+CLASS="LITERAL"
+>==</TT
+>, <TT
+CLASS="LITERAL"
+>!=</TT
+> and
+<TT
+CLASS="LITERAL"
+>*=</TT
+> operators are supported.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3724"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QWMatrix invert const</CODE
+>(bool *invertible = 0);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the <TT
+CLASS="LITERAL"
+>QWMatrix</TT
+>
+result and the <TT
+CLASS="LITERAL"
+>invertible</TT
+> value.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3732"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void map const</CODE
+>(int x, int y, int *tx, int *ty);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+> parameters and
+returns a tuple containing the <TT
+CLASS="LITERAL"
+>tx</TT
+> and <TT
+CLASS="LITERAL"
+>ty</TT
+>
+values.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3748"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void map const</CODE
+>(float x, float y, float *tx, float *ty);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+> parameters and
+returns a tuple containing the <TT
+CLASS="LITERAL"
+>tx</TT
+> and <TT
+CLASS="LITERAL"
+>ty</TT
+>
+values. (Qt v1.x)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3764"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void map const</CODE
+>(double x, double y, double *tx, double *ty);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>x</TT
+> and <TT
+CLASS="LITERAL"
+>y</TT
+> parameters and
+returns a tuple containing the <TT
+CLASS="LITERAL"
+>tx</TT
+> and <TT
+CLASS="LITERAL"
+>ty</TT
+>
+values. (Qt v2+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3780"
+>QWorkspace (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWorkspace</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN3784"
+><TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN3787"
+>QAxBase (Windows, Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3789"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QAxObject</CODE
+>(IUnknown *iface = 0);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3795"
+></A
+><CODE
+CLASS="FUNCDEF"
+>long queryInterface</CODE
+>(const QUuid &amp;uuid, void **iface);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3803"
+></A
+><CODE
+CLASS="FUNCDEF"
+>PropertyBag propertyBag const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3808"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setPropertyBag</CODE
+>(const PropertyBag &amp;bag);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3814"
+></A
+><CODE
+CLASS="FUNCDEF"
+>unsigned long registerWeakActiveObject</CODE
+>(const QString &amp;guid);<P
+></P
+></DIV
+><P
+>This is a utility method provided by PyQt to make it easier to use
+Mark Hammond's <TT
+CLASS="LITERAL"
+>win32com</TT
+> module to manipulate objects
+created by the <TT
+CLASS="LITERAL"
+>qtaxcontainer</TT
+> module.</P
+><P
+>The <TT
+CLASS="LITERAL"
+>RegisterActiveObject()</TT
+> COM function is called to
+register the <TT
+CLASS="LITERAL"
+>QAxBase</TT
+> instance as a weak object with the
+<TT
+CLASS="LITERAL"
+>guid</TT
+> GUID. The revoke handle is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3826"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static void revokeActiveObject</CODE
+>(unsigned long rhandle);<P
+></P
+></DIV
+><P
+>This is a wrapper around the <TT
+CLASS="LITERAL"
+>RevokeActiveObject()</TT
+> COM
+function and is called to revoke the object registered using
+<TT
+CLASS="LITERAL"
+>registerWeakActiveObject()</TT
+>. <TT
+CLASS="LITERAL"
+>rhandle</TT
+> is
+the revoke handle returned by <TT
+CLASS="LITERAL"
+>registerWeakActiveObject()</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3836"
+>QAxObject (Windows, Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3838"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QAxObject</CODE
+>(IUnknown *iface, QObject *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3848"
+>QAxWidget (Windows, Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3850"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QAxWidget</CODE
+>(IUnknown *iface, QWidget *parent = 0, const char *name = 0);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN3860"
+><TT
+CLASS="LITERAL"
+>qtcanvas</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN3863"
+>QCanvas (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvas</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3867"
+>QCanvasEllipse (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasEllipse</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3871"
+>QCanvasItem (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3875"
+>QCanvasItemList (Qt v2.2+)</A
+></H3
+><P
+>This class isn't implemented. Whenever a <TT
+CLASS="LITERAL"
+>QCanvasItemList</TT
+> is
+the return type of a function or the type of an argument, a Python list of
+<TT
+CLASS="LITERAL"
+>QCanvasItem</TT
+> instances is used instead.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3880"
+>QCanvasLine (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasLine</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3884"
+>QCanvasPixmap (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasPixmap</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3888"
+>QCanvasPixmapArray (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3890"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QPixmapArray</CODE
+>(QList&lt;QPixmap&gt; pixmaps, QList&lt;QPoint&gt; hotspots);<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>pixmaps</TT
+> argument is a Python list of QPixmap instances,
+and the <TT
+CLASS="LITERAL"
+>hotspots</TT
+> argument is a Python list of QPoint
+instances. (Qt v2.2.0 - Qt v2.3.1)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3900"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QPixmapArray</CODE
+>(QValueList&lt;QPixmap&gt; pixmaps, QPointArray hotspots = QPointArray());<P
+></P
+></DIV
+><P
+>The <TT
+CLASS="LITERAL"
+>pixmaps</TT
+> argument is a Python list of QPixmap instances.
+(Qt v3+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3909"
+>QCanvasPolygon (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasPolygon</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3913"
+>QCanvasPolygonalItem (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasPolygonalItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3917"
+>QCanvasRectangle (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasRectangle</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3921"
+>QCanvasSpline (Qt v3.0+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasSpline</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3925"
+>QCanvasSprite (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasSprite</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3929"
+>QCanvasText (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasText</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3933"
+>QCanvasView (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCanvasView</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN3937"
+><TT
+CLASS="LITERAL"
+>qtext</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN3940"
+>QextScintilla</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3942"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getCursorPosition</CODE
+>(int *line, int *index);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the values returned by the
+<TT
+CLASS="LITERAL"
+>line</TT
+> and <TT
+CLASS="LITERAL"
+>index</TT
+> pointers.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN3952"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void getSelection</CODE
+>(int *lineFrom, int *indexFrom, int *lineTo, int *indexTo);<P
+></P
+></DIV
+><P
+>This takes no parameters and returns a tuple of the values returned by the
+<TT
+CLASS="LITERAL"
+>lineFrom</TT
+>, <TT
+CLASS="LITERAL"
+>indexFrom</TT
+>,
+<TT
+CLASS="LITERAL"
+>lineTo</TT
+> and <TT
+CLASS="LITERAL"
+>indexTo</TT
+> pointers.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3968"
+>QextScintillaAPIs</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaAPIs</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3972"
+>QextScintillaBase</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaBase</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3976"
+>QextScintillaCommand</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaCommand</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3980"
+>QextScintillaCommandSet</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaCommandSet</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3984"
+>QextScintillaDocument</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaDocument</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3988"
+>QextScintillaLexer</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexer</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3992"
+>QextScintillaLexerBash (QScintilla v1.4+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerBash</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN3996"
+>QextScintillaLexerBatch (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerBatch</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4000"
+>QextScintillaLexerCPP</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerCPP</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4004"
+>QextScintillaLexerCSharp</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerCSharp</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4008"
+>QextScintillaLexerCSS (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerCSS</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4012"
+>QextScintillaLexerDiff (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerDiff</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4016"
+>QextScintillaLexerHTML (QScintilla v1.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerHTML</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4020"
+>QextScintillaLexerIDL</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerIDL</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4024"
+>QextScintillaLexerJava</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerJava</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4028"
+>QextScintillaLexerJavaScript</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerJavaScript</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4032"
+>QextScintillaLexerLua (QScintilla v1.5+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerLua</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4036"
+>QextScintillaLexerMakefile (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerMakefile</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4040"
+>QextScintillaLexerPerl</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerPerl</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4044"
+>QextScintillaLexerPOV (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerPOV</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4048"
+>QextScintillaLexerProperties (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerProperties</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4052"
+>QextScintillaLexerPython</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerPython</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4056"
+>QextScintillaLexerRuby (QScintilla v1.5+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerRuby</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4060"
+>QextScintillaLexerSQL (QScintilla v1.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerSQL</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4064"
+>QextScintillaLexerTeX (QScintilla v1.6+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaLexerTeX</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4068"
+>QextScintillaMacro</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaMacro</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4072"
+>QextScintillaPrinter</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QextScintillaPrinter</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4076"
+><TT
+CLASS="LITERAL"
+>qtgl</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4079"
+>QGL</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGL</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4083"
+>QGLContext</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGLContext</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4087"
+>QGLFormat</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGLFormat</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4091"
+>QGLWidget</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QGLWidget</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4095"
+>QGLColormap (Qt v3.0+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4097"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setEntries</CODE
+>(int count, const QRgb *colors, int base = 0);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4107"
+><TT
+CLASS="LITERAL"
+>qtnetwork</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4110"
+>QDns (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDns</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4114"
+>QFtp (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4116"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readBlock</CODE
+>(char *data, Q_ULONG maxlen);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>maxlen</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>None</TT
+> is returned.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4127"
+>QHostAddress (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4129"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QHostAddress</CODE
+>(Q_UINT8 *ip6Addr);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4135"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QHostAddress</CODE
+>(const Q_IPV6ADDR &amp;ip6Addr);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4141"
+></A
+><CODE
+CLASS="FUNCDEF"
+>void setAddress</CODE
+>(Q_UINT8 *ip6Addr);<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4147"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_IPV6ADDR toIPv6Address const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4153"
+>QHttp (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4155"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readBlock</CODE
+>(char *data, Q_ULONG maxlen);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>maxlen</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>None</TT
+> is returned.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4166"
+>QHttpHeader (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHttpHeader</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4170"
+>QHttpRequestHeader (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHttpRequestHeader</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4174"
+>QHttpResponseHeader (Qt v3.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QHttpResponseHeader</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4178"
+>QLocalFs (Qt v2.1+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QLocalFs</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4182"
+>QServerSocket (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QServerSocket</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4186"
+>QSocket (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4188"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readBlock</CODE
+>(char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>len</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>Py_None</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4199"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readLine</CODE
+>(char *data, Q_ULONG maxlen);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>maxlen</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>Py_None</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4210"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG writeBlock</CODE
+>(const char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>data</TT
+> and not passed
+as a parameter.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4220"
+>QSocketDevice (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4222"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG readBlock</CODE
+>(char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+>This takes a single <TT
+CLASS="LITERAL"
+>len</TT
+> parameter. The
+<TT
+CLASS="LITERAL"
+>data</TT
+> is returned if there was no error, otherwise
+<TT
+CLASS="LITERAL"
+>None</TT
+> is returned.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4233"
+></A
+><CODE
+CLASS="FUNCDEF"
+>Q_LONG writeBlock</CODE
+>(const char *data, Q_ULONG len);<P
+></P
+></DIV
+><P
+><TT
+CLASS="LITERAL"
+>len</TT
+> is derived from <TT
+CLASS="LITERAL"
+>data</TT
+> and not passed
+as a parameter.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4243"
+><TT
+CLASS="LITERAL"
+>qtpe</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4246"
+>QPEApplication</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4248"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QApplication</CODE
+>(int&#38; argc, char **argv, Type type);<P
+></P
+></DIV
+><P
+>This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4258"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_loop</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4264"
+>AppLnk</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4266"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual QString exec const</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_property</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4272"
+>AppLnkSet</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>AppLnkSet</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4276"
+>Config</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>Config</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4280"
+>DateFormat</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>DateFormat</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4284"
+>DocLnk</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4286"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QString exec const</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed to <TT
+CLASS="LITERAL"
+>exec_property</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4292"
+>DocLnkSet</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>DocLnkSet</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4296"
+>FileManager</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>FileManager</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4300"
+>FileSelector</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>FileSelector</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4304"
+>FileSelectorItem</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>FileSelectorItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4308"
+>FontDatabase</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>FontDatabase</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4312"
+>Global</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4314"
+></A
+><CODE
+CLASS="FUNCDEF"
+>static void setBuiltinCommands</CODE
+>(Command *);<P
+></P
+></DIV
+><P
+>Not implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4319"
+>MenuButton</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>MenuButton</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4323"
+>QCopEnvelope</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCopEnvelope</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4327"
+>QDawg</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDawg</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4331"
+>QPEMenuBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPEMenuBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4335"
+>QPEToolBar</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QPEToolBar</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4339"
+>Resource</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>Resource</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4343"
+><TT
+CLASS="LITERAL"
+>qtsql</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4346"
+>QDataBrowser (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4348"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual void del</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delOnCursor</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4354"
+>QDataTable (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDataTable</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4358"
+>QDataView (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDataView</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4362"
+>QEditorFactory (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QEditorFactory</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4366"
+>QSql (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSql</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4370"
+>QSqlCursor (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4372"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual int del</CODE
+>(bool invalidate = TRUE);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delRecords</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4379"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual int del</CODE
+>(const QString &amp;filter, bool invalidate = TRUE);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delRecords</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4388"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool exec</CODE
+>(const QString &amp;query);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>execQuery</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4395"
+>QSqlDatabase (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4397"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QSqlQuery exec</CODE
+>(const QString &amp;query = QString::null);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>execStatement</TT
+> in Python.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4404"
+>QSqlDriver (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlDriver</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4408"
+>QSqlEditorFactory (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlEditorFactory</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4412"
+>QSqlError (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlError</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4416"
+>QSqlField (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlField</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4420"
+>QSqlFieldInfo (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlFieldInfo</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4424"
+>QSqlForm (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlForm</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4428"
+>QSqlIndex (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlIndex</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4432"
+>QSqlPropertyMap (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlPropertyMap</TT
+> is fully implemented. However, because PyQt
+does not allow new properties to be defined, it is not possible to implement
+custom editor widgets in Python and add them to a property map. This will
+simple be ignored.</P
+><P
+>This problem may be addressed in a future release of PyQt.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4437"
+>QSqlQuery (Qt v3+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4439"
+></A
+><CODE
+CLASS="FUNCDEF"
+>QMap&lt;QString,QVariant&gt; boundValues const</CODE
+>();<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v3.2.0+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4444"
+></A
+><CODE
+CLASS="FUNCDEF"
+>virtual bool exec</CODE
+>(const QString &amp;query);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>execQuery</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4451"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool exec</CODE
+>();<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>execQuery</TT
+> in Python. (Qt v3.1+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4457"
+>QSqlRecord (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlRecord</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4461"
+>QSqlRecordInfo (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlRecordInfo</TT
+> is implemented as a Python list of
+<TT
+CLASS="LITERAL"
+>QSqlFieldInfo</TT
+> instances.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4466"
+>QSqlResult (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QSqlResult</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4470"
+>QSqlSelectCursor (Qt v3.2.0+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4472"
+></A
+><CODE
+CLASS="FUNCDEF"
+>int del</CODE
+>(bool invalidate = TRUE);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>delRecords</TT
+> in Python.</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4479"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool exec</CODE
+>(const QString &amp;query);<P
+></P
+></DIV
+><P
+>This has been renamed <TT
+CLASS="LITERAL"
+>execQuery</TT
+> in Python.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4486"
+><TT
+CLASS="LITERAL"
+>qttable</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4489"
+>QTable (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTable</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4493"
+>QTableItem (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTableItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4497"
+>QCheckTableItem (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QCheckTableItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4501"
+>QComboTableItem (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QComboTableItem</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4505"
+>QTableSelection (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QTableSelection</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4509"
+><TT
+CLASS="LITERAL"
+>qtui</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4512"
+>QWidgetFactory (Qt v3+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QWidgetFactory</TT
+> is fully implemented.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AEN4516"
+><TT
+CLASS="LITERAL"
+>qtxml</TT
+> Module Reference</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN4519"
+>QDomImplementation (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomImplementation</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4523"
+>QDomNode (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomNode</TT
+> is fully implemented, including the Python
+<TT
+CLASS="LITERAL"
+>==</TT
+> and <TT
+CLASS="LITERAL"
+>!=</TT
+> operators.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4529"
+>QDomNodeList (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomNodeList</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4533"
+>QDomDocument (Qt v2.2+)</A
+></H3
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4535"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QCString &amp;buffer, bool namespaceProcessing, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>buffer</TT
+> and
+<TT
+CLASS="LITERAL"
+>namespaceProcessing</TT
+> parameters and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4555"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QByteArray &amp;buffer, bool namespaceProcessing, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>buffer</TT
+> and
+<TT
+CLASS="LITERAL"
+>namespaceProcessing</TT
+> parameters and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4575"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QString &amp;text, bool namespaceProcessing, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>text</TT
+> and
+<TT
+CLASS="LITERAL"
+>namespaceProcessing</TT
+> parameters and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4595"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QIODevice *dev, bool namespaceProcessing, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>dev</TT
+> and
+<TT
+CLASS="LITERAL"
+>namespaceProcessing</TT
+> parameters and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4615"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QCString &amp;buffer, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>buffer</TT
+> parameter only and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4632"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QByteArray &amp;buffer, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>buffer</TT
+> parameter only and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4649"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QString &amp;text, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>text</TT
+> parameter only and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4666"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(const QIODevice *dev, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>This takes the <TT
+CLASS="LITERAL"
+>dev</TT
+> parameter only and returns a tuple
+containing the <TT
+CLASS="LITERAL"
+>bool</TT
+> result and the
+<TT
+CLASS="LITERAL"
+>errorMsg</TT
+>, <TT
+CLASS="LITERAL"
+>errorLine</TT
+> and
+<TT
+CLASS="LITERAL"
+>errorColumn</TT
+> values. (Qt v3+)</P
+><DIV
+CLASS="FUNCSYNOPSIS"
+><P
+></P
+><A
+NAME="AEN4683"
+></A
+><CODE
+CLASS="FUNCDEF"
+>bool setContent</CODE
+>(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg = 0, int *errorLine = 0, int *errorColumn = 0);<P
+></P
+></DIV
+><P
+>Not yet implemented. (Qt v3.2.0+)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4697"
+>QDomDocumentFragment (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomDocumentFragment</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4701"
+>QDomDocumentType (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomDocumentType</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4705"
+>QDomNamedNodeMap (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomNamedNodeMap</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4709"
+>QDomCharacterData (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomCharacterData</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4713"
+>QDomAttr (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomAttr</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4717"
+>QDomElement (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomElement</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4721"
+>QDomText (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomText</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4725"
+>QDomComment (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomComment</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4729"
+>QDomCDATASection (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomCDATASection</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4733"
+>QDomNotation (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomNotation</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4737"
+>QDomEntity (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomEntity</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4741"
+>QDomEntityReference (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomEntityReference</TT
+> is fully implemented.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN4745"
+>QDomProcessingInstruction (Qt v2.2+)</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>QDomProcessingInstruction</TT
+> is fully implemented.</P
+></DIV
+></DIV
+></DIV
+></BODY
+></HTML
+>
diff --git a/python/pyqt/doc/PyQt.sgml b/python/pyqt/doc/PyQt.sgml
new file mode 100644
index 00000000..62916248
--- /dev/null
+++ b/python/pyqt/doc/PyQt.sgml
@@ -0,0 +1,5807 @@
+<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
+<Article>
+<ArtHeader>
+ <Title>Python Bindings for Qt (3.17.2)</Title>
+ <Author>
+ <FirstName>Phil</FirstName>
+ <Surname>Thompson</Surname>
+ </Author>
+ <Abstract>
+ <Para>
+ This document describes a set of Python bindings for the Qt widget set.
+ Contact the author at <Email>phil@riverbankcomputing.co.uk</Email>.
+ </Para>
+ </Abstract>
+</ArtHeader>
+
+
+<Sect1><Title>Introduction</Title>
+<Para>
+PyQt is a set of Python bindings for the Qt toolkit and available for all
+platforms supported by Qt, including Windows, Linux, UNIX, MacOS/X and embedded
+systems such as the Sharp Zaurus and the Compaq iPAQ. They have been tested
+against Qt versions 1.43 to 3.3.6, Qt Non-commercial, Qtopia 1.5.0, and Python
+versions 1.5 to 2.4.2. Qt/Embedded v3 is not supported. Qt v4 is supported
+by PyQt v4.
+</Para>
+
+<Para>
+PyQt is available under the GPL license for use with the GPL version of Qt, a
+a commercial license for use with the commercial version of Qt, a
+non-commercial license for use with the non-commercial version of Qt v2, and an
+educational license for use with the educational version of Qt.
+</Para>
+
+<Para>
+There is also an evaluation version of PyQt for Windows. This must be used
+with the corresponding evaluation version of Qt.
+</Para>
+
+<Para>
+PyQt is built using SIP (a tool for generating Python extension modules for
+C++ class libraries). SIP v4.6 or later must be installed in order to build
+and run this version of PyQt.
+</Para>
+
+<Para>
+PyQt for MacOS/X requires Qt v3.1.0 or later and Python v2.3 or later.
+</Para>
+
+<Para>
+The bindings are implemented as a number of Python modules
+</Para>
+
+<ItemizedList>
+<ListItem>
+<Para>
+<Literal>qt</Literal> is the main module and contains the core classes and most
+user interface widgets.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtaxcontainer</Literal> contains a sub-set of the classes implemented
+in Qt's QAxContainer module, part of Qt's ActiveQt framework.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtcanvas</Literal> contains the classes implemented in Qt's Canvas
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtgl</Literal> contains the classes implemented in Qt's OpenGL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtnetwork</Literal> contains the classes implemented in Qt's Network
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtpe</Literal> contains the classes implemented in Qtopia (originally
+called the Qt Palmtop Environment). It is only supported with Qt/Embedded.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtsql</Literal> contains the classes implemented in Qt's SQL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qttable</Literal> contains the classes implemented in Qt's Table
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtui</Literal> contains the classes implemented in Qt's qui library.
+These allow GUIs to be created directly from Qt Designer's
+<Literal>.ui</Literal> files.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtxml</Literal> contains the classes implemented in Qt's XML module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtext</Literal> contains useful third-party classes that are not part
+of Qt. At the moment it contains bindings for QScintilla, the port to Qt of
+the Scintilla programmer's editor class.
+</Para>
+</ListItem>
+</ItemizedList>
+
+<Para>
+PyQt also includes the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> utilities which correspond to the Qt
+<Literal>uic</Literal> and <Literal>lupdate</Literal> utilities.
+<Literal>pyuic</Literal> converts the GUI designs created with Qt Designer to
+executable Python code. <Literal>pylupdate</Literal> scans Python code,
+extracts all strings that are candidates for internationalisation, and creates
+an XML file for use by Qt Linguist.
+</Para>
+
+<Sect2><Title>Changes</Title>
+<Para>
+The changes visible to the Python programmer in this release are as follows.
+</Para>
+<ItemizedList>
+
+<ListItem>
+<Para>
+This version requires SIP v4.4 (or later).
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+Concatenating Python strings and <Literal>QString</Literal>s is now supported.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> now supports the <Literal>*</Literal> and
+<Literal>*=</Literal> operators that behave as they do for Python strings.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> is more interoperable with Python string and unicode
+objects. For example they can be passed as arguments to
+<Literal>open()</Literal> and to most (but not all) string methods.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QPopupMenu</Literal> (and sub-classes) instances now transfer
+ownership of the menu to Python in the call to <Literal>exec_loop()</Literal>.
+This means the menu's resources are all released when the Python wrapper is
+garbage collected without needing to call
+<Literal>QObject.deleteLater()</Literal>.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QObject.sender()</Literal> now handles Python signals.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The missing <Literal>MacintoshVersion</Literal> enum has been added.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>PYQT_BUILD</Literal> has been removed.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The convention for converting between a C/C++ null pointer and Python's
+<Literal>None</Literal> object has now been universally applied. In previous
+versions a null pointer to, for example, a Qt list container would often be
+converted to an empty list rather than <Literal>None</Literal>.
+</Para>
+</ListItem>
+
+</ItemizedList>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Other PyQt Goodies</Title>
+<Sect2><Title>Using Qt Designer</Title>
+<Para>
+Qt Designer is a GPL'ed GUI design editor provided by Trolltech as part of Qt.
+It generates an XML description of a GUI design. Qt includes
+<Literal>uic</Literal> which generates C++ code from that XML.
+</Para>
+
+<Para>
+PyQt includes <Literal>pyuic</Literal> which generates Python code from the
+same XML. The Python code is self contained and can be executed immediately.
+</Para>
+
+<Para>
+It is sometimes useful to be able to include some specific Python code in the
+output generated by <Literal>pyuic</Literal>. For example, if you are using
+custom widgets, <Literal>pyuic</Literal> has no way of knowing the name of the
+Python module containing the widget and so cannot generate the required
+<Literal>import</Literal> statement. To help get around this,
+<Literal>pyuic</Literal> will extract any lines entered in the
+<Literal>Comment</Literal> field of Qt Designer's
+<Literal>Form Settings</Literal> dialog that begin with
+<Literal>Python:</Literal> and copies them to the generated output.
+</Para>
+
+<Para>
+Here's a simple example showing the contents of the <Literal>Comment</Literal>
+field.
+</Para>
+
+<ProgramListing>
+This comment will be ignored by pyuic.
+Python:
+Python:# Import our custom widget.
+Python:from foo import bar
+</ProgramListing>
+
+<Para>
+Here's the corresponding output from <Literal>pyuic</Literal>.
+</Para>
+
+<ProgramListing>
+from qt import *
+
+# Import our custom widget.
+from foo import bar
+</ProgramListing>
+
+<Para>
+Thanks to Christian Bird, <Literal>pyuic</Literal> will extract Python code
+entered using Qt Designer to implement slots. In Qt Designer, when you need to
+edit a slot and the source editor appears, enter Python code between the curly
+braces. Don't worry about the correct starting indent level, each line is
+prepended with a correct indentation.
+</Para>
+
+<Para>
+Make sure that the <Literal>ui.h</Literal> file is in the same directory as the
+<Literal>.ui</Literal> file when using <Literal>pyuic</Literal>. The
+<Literal>.ui</Literal> file implies the name of the <Literal>.ui.h</Literal>
+file so there is no need to specify it on the command line.
+</Para>
+
+<Para>
+Here's an example of a simple slot.
+</Para>
+
+<ProgramListing>
+void DebMainWindowFrm::browsePushButtonClicked()
+{
+if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+}
+</ProgramListing>
+
+<Para>
+Here is the resulting code when <Literal>pyuic</Literal> is run.
+</Para>
+
+<ProgramListing>
+class DebMainWindowFrm(QMainWindow):
+ ...stuff...
+ def browsePushButtonClicked(self):
+ if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+</ProgramListing>
+
+<Para>
+Note that indenting is as normal and that <Literal>self</Literal> and all other
+parameters passed to the slot are available.
+</Para>
+
+<Para>
+If you use this, you will need to turn off all of the fancy options for the C++
+editor in Designer as it tries to force C++ syntax and that's naturally
+annoying when trying to code in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>Using Qt Linguist</Title>
+<Para>
+Qt includes the <Literal>lupdate</Literal> program which parses C++ source
+files converting calls to the <Literal>QT_TR_NOOP()</Literal> and
+<Literal>QT_TRANSLATE_NOOP()</Literal> macros to <Literal>.ts</Literal>
+language source files. The <Literal>lrelease</Literal> program is then used to
+generate <Literal>.qm</Literal> binary language files that are distributed with
+your application.
+</Para>
+
+<Para>
+Thanks to Detlev Offenbach, PyQt includes the <Literal>pylupdate</Literal>
+program. This generates the same <Literal>.ts</Literal> language source files
+from your PyQt source files.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Deploying Commercial PyQt Applications</Title>
+<Para>
+When deploying commercial PyQt applications it is necessary to discourage users
+from accessing the underlying PyQt modules for themselves. A user that used
+the modules shipped with your application to develop new applications would
+themselves be considered a developer and would need their own commercial Qt and
+PyQt licenses.
+</Para>
+
+<Para>
+One solution to this problem is the
+<ULink url="http://www.riverbankcomputing.co.uk/vendorid/">VendorID</ULink>
+package. This allows you to build Python extension modules that can only be
+imported by a digitally signed custom interpreter. The package enables you to
+create such an interpreter with your application embedded within it. The
+result is an interpreter that can only run your application, and PyQt modules
+that can only be imported by that interpreter. You can use the package to
+similarly restrict access to any extension module.
+</Para>
+
+<Para>
+In order to build PyQt with support for the VendorID package, pass the
+<Literal>-i</Literal> command line flag to <Literal>configure.py</Literal>.
+</Para>
+</Sect1>
+
+<Sect1><Title><Literal>pyqtconfig</Literal> and Build System Support</Title>
+<Para>
+The SIP build system (ie. the <Literal>sipconfig</Literal> module) is described
+in the SIP documentation. PyQt includes the <Literal>pyqtconfig</Literal>
+module that can be used by configuration scripts of other bindings that are
+built on top of PyQt.
+</Para>
+
+<Para>
+The <Literal>pyqtconfig</Literal> module contains the following classes:
+</Para>
+
+<VariableList>
+<VarListEntry>
+<Term><Literal>Configuration(sipconfig.Configuration)</Literal></Term>
+<ListItem>
+<Para>
+This class encapsulates additional configuration values, specific to PyQt, that
+can be accessed as instance variables.
+</Para>
+
+<Para>
+The following configuration values are provided (in addition to those provided
+by the <Literal>sipconfig.Configuration</Literal> class):
+</Para>
+<VariableList>
+
+<VarListEntry>
+<Term><Literal>pyqt_bin_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> executables.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_config_args</Literal></Term>
+<ListItem>
+<Para>
+The command line passed to <Literal>configure.py</Literal> when PyQt was
+configured.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_mod_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the PyQt modules.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_modules</Literal></Term>
+<ListItem>
+<Para>
+A string containing the names of the PyQt modules that were installed.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qt_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qt</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qt</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtaxcontainer_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtaxcontainer</Literal> module and which should be added to those
+needed by any module that imports the <Literal>qtaxcontainer</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtcanvas_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtcanvas</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtcanvas</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtext_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtext</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtext</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtgl_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtgl</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtgl</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtnetwork_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtnetwork</Literal> module and which should be added to those needed
+by any module that imports the <Literal>qtnetwork</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtsql_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtsql</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtsql</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qttable_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qttable</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qttable</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtui_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtui</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtui</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtxml_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtxml</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtxml</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_sip_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the base directory where the <Literal>.sip</Literal> files for each
+of the PyQt modules is installed. A sub-directory exists with the same name as
+the module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a 3 part hexadecimal number (eg. v3.10 is represented as
+<Literal>0x030a00</Literal>).
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version_str</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a string. For development snapshots it will start with
+<Literal>snapshot-</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtModuleMakefile(sipconfig.SIPModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qt</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtAxContainerModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtaxcontainer</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtCanvasModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtcanvas</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtExtModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtext</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtGLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtgl</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtNetworkModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtnetwork</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtTableModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qttable</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtSQLModuleMakefile(QtTableModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtsql</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtUIModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtui</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtXMLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtxml</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</Sect1>
+<Sect1><Title>Things to be Aware Of</Title>
+<Sect2><Title>super and Wrapped Classes</Title>
+<Para>
+Internally PyQt implements a lazy technique for attribute lookup where
+attributes are only placed in type and instance dictionaries when they are
+first referenced. This technique is needed to reduce the time taken to import
+large modules such as PyQt.
+</Para>
+
+<Para>
+In most circumstances this technique is transparent to an application. The
+exception is when <Literal>super</Literal> is used with a PyQt class. The way
+that <Literal>super</Literal> is currently implemented means that the lazy
+lookup is bypassed resulting in <Literal>AttributeError</Literal> exceptions
+unless the attribute has been previously referenced.
+</Para>
+
+<Para>
+Note that this restriction applies to any class wrapped by SIP and not just
+PyQt.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Python Strings, Qt Strings and Unicode</Title>
+<Para>
+Unicode support was added to Qt in v2.0 and to Python in v1.6. In Qt, Unicode
+support is implemented using the <Literal>QString</Literal> class. It is
+important to understand that <Literal>QString</Literal>s, Python string objects
+and Python Unicode objects are all different but conversions between them are
+automatic in almost all cases and easy to achieve manually when needed.
+</Para>
+
+<Para>
+Whenever PyQt expects a <Literal>QString</Literal> as a function argument, a
+Python string object or a Python Unicode object can be provided instead, and
+PyQt will do the necessary conversion automatically.
+</Para>
+
+<Para>
+You may also manually convert Python string and Unicode objects to
+<Literal>QString</Literal>s by using the <Literal>QString</Literal> constructor
+as demonstrated in the following code fragment.
+</Para>
+
+<ProgramListing>
+qs1 = QString('Converted Python string object')
+qs2 = QString(u'Converted Python Unicode object')
+</ProgramListing>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python string object use
+the Python <Literal>str()</Literal> function. Applying
+<Literal>str()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python string object.
+</Para>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python Unicode object use
+the Python <Literal>unicode()</Literal> function. Applying
+<Literal>unicode()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python Unicode object.
+</Para>
+</Sect2>
+
+<Sect2><Title>Access to Protected Member Functions</Title>
+<Para>
+When an instance of a C++ class is not created from Python it is not possible
+to access the protected member functions, or emit the signals, of that
+instance. Attempts to do so will raise a Python exception. Also, any Python
+methods corresponding to the instance's virtual member functions will never be
+called.
+</Para>
+</Sect2>
+
+<Sect2><Title><Literal>None</Literal> and <Literal>NULL</Literal></Title>
+<Para>
+Throughout the bindings, the <Literal>None</Literal> value can be specified
+wherever <Literal>NULL</Literal> is acceptable to the underlying C++ code.
+</Para>
+
+<Para>
+Equally, <Literal>NULL</Literal> is converted to <Literal>None</Literal>
+whenever it is returned by the underlying C++ code.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for C++ <Literal>void *</Literal> Data Types</Title>
+<Para>
+PyQt represents <Literal>void *</Literal> values as objects of type
+<Literal>sip.voidptr</Literal>. Such values are often used to pass the
+addresses of external objects between different Python modules. To make this
+easier, a Python integer (or anything that Python can convert to an integer)
+can be used whenever a <Literal>sip.voidptr</Literal> is expected.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python integer by using
+the <Literal>int()</Literal> builtin function.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python string by using
+its <Literal>asstring()</Literal> method. The <Literal>asstring()</Literal>
+method takes an integer argument which is the length of the data in bytes.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for Threads</Title>
+<Para>
+PyQt implements the full set of Qt's thread classes. Python, of course, also
+has its own thread extension modules. If you are using SIP v4 (or later) and
+Python v2.3.5 (or later) then PyQt does not impose any additional restrictions.
+(Read the relevant part of the Qt documentation to understand the restrictions
+imposed by the Qt API.)
+</Para>
+<Para>
+If you are using earlier versions of either SIP or Python then it is possible
+to use either of the APIs so long as you follow some simple rules.
+</Para>
+<ItemizedList>
+<ListItem>
+<Para>
+If you use the Qt API then the very first <Literal>import</Literal> of one of
+the PyQt modules must be done from the main thread.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you use the Python API then all calls to PyQt (including any
+<Literal>import</Literal>s) must be done from one thread only. Therefore, if
+you want to make calls to PyQt from several threads then you must use the Qt
+API.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you want to use both APIs in the same application then all calls to PyQt
+must be done from threads created using the Qt API.
+</Para>
+</ListItem>
+</ItemizedList>
+<Para>
+The above comments actually apply to any SIP generated module, not just PyQt.
+</Para>
+</Sect2>
+
+<Sect2><Title>Garbage Collection</Title>
+<Para>
+C++ does not garbage collect unreferenced class instances, whereas Python does.
+In the following C++ fragment both colours exist even though the first can no
+longer be referenced from within the program:
+</Para>
+
+<ProgramListing>
+c = new QColor();
+c = new QColor();
+</ProgramListing>
+
+<Para>
+In the corresponding Python fragment, the first colour is destroyed when
+the second is assigned to <Literal>c</Literal>:
+</Para>
+
+<ProgramListing>
+c = QColor()
+c = QColor()
+</ProgramListing>
+
+<Para>
+In Python, each colour must be assigned to different names. Typically this
+is done within class definitions, so the code fragment would be something like:
+</Para>
+
+<ProgramListing>
+self.c1 = QColor()
+self.c2 = QColor()
+</ProgramListing>
+
+<Para>
+Sometimes a Qt class instance will maintain a pointer to another instance and
+will eventually call the destructor of that second instance. The most common
+example is that a <Literal>QObject</Literal> (and any of its sub-classes) keeps
+pointers to its children and will automatically call their destructors. In
+these cases, the corresponding Python object will also keep a reference to the
+corresponding child objects.
+</Para>
+
+<Para>
+So, in the following Python fragment, the first <Literal>QLabel</Literal> is
+not destroyed when the second is assigned to <Literal>l</Literal> because the
+parent <Literal>QWidget</Literal> still has a reference to it.
+</Para>
+
+<ProgramListing>
+p = QWidget()
+l = QLabel('First label',p)
+l = QLabel('Second label',p)
+</ProgramListing>
+</Sect2>
+
+<Sect2><Title>C++ Variables</Title>
+<Para>
+Access to C++ variables is supported. They are accessed as Python instance
+variables. For example:
+</Para>
+
+<ProgramListing>
+tab = QTab()
+tab.label = "First Tab"
+tab.r = QRect(10,10,75,30)
+</ProgramListing>
+
+<Para>
+Global variables and static class variables are effectively read-only. They
+can be assigned to, but the underlying C++ variable will not be changed. This
+may change in the future.
+</Para>
+
+<Para>
+Access to protected C++ class variables is not supported. This may change in
+the future.
+</Para>
+</Sect2>
+
+<Sect2><Title>Multiple Inheritance</Title>
+<Para>
+It is not possible to define a new Python class that sub-classes from more than
+one Qt class.
+</Para>
+</Sect2>
+
+<Sect2><Title>i18n Support</Title>
+<Para>
+Qt implements i18n support through the Qt Linguist application, the
+<Literal>QTranslator</Literal> class, and the
+<Literal>QApplication::translate()</Literal>, <Literal>QObject::tr()</Literal>
+and <Literal>QObject::trUtf8()</Literal> methods. Usually the
+<Literal>tr()</Literal> method is used to obtain the correct translation of a
+message. The translation process uses a message context to allow the same
+message to be translated differently. <Literal>tr()</Literal> is actually
+generated by <Literal>moc</Literal> and uses the hardcoded class name as the
+context. On the other hand, <Literal>QApplication::translate()</Literal>
+allows to context to be explicitly stated.
+</Para>
+
+<Para>
+Unfortunately, because of the way Qt implents <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) it is not possible for PyQt to exactly reproduce
+its behavour. The PyQt implementation of <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) uses the class name of the instance as the
+context. The key difference, and the source of potential problems, is that the
+context is determined dynamically in PyQt, but is hardcoded in Qt. In other
+words, the context of a translation may change depending on an instance's class
+hierarchy.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return self.tr("Hello")
+
+class B(A):
+ def __init__(self):
+ A.__init__(self)
+
+a = A()
+a.hello()
+
+b = B()
+b.hello()
+</ProgramListing>
+
+<Para>
+In the above the message is translated by <Literal>a.hello()</Literal> using a
+context of <Literal>A</Literal>, and by <Literal>b.hello()</Literal> using a
+context of <Literal>B</Literal>. In the equivalent C++ version the context
+would be <Literal>A</Literal> in both cases.
+</Para>
+
+<Para>
+The PyQt behaviour is unsatisfactory and may be changed in the future. It is
+recommended that <Literal>QApplication.translate()</Literal> be used in
+preference to <Literal>tr()</Literal> (and <Literal>trUtf8()</Literal>). This
+is guaranteed to work with current and future versions of PyQt and makes it
+much easier to share message files between Python and C++ code. Below is the
+alternative implementation of <Literal>A</Literal> that uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return qApp.translate("A","Hello")
+</ProgramListing>
+
+<Para>
+Note that the code generated by <Literal>pyuic</Literal> uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Signal and Slot Support</Title>
+<Para>
+A signal may be either a Qt signal (specified using
+<Literal>SIGNAL()</Literal>) or a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>).
+</Para>
+
+<Para>
+A slot can be either a Python callable object, a Qt signal (specified using
+<Literal>SIGNAL()</Literal>), a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>), or a Qt slot (specified using
+<Literal>SLOT()</Literal>).
+</Para>
+
+<Para>
+You connect signals to slots (and other signals) as you would from C++. For
+example:
+</Para>
+
+<ProgramListing>
+QObject.connect(a,SIGNAL("QtSig()"),pyFunction)
+QObject.connect(a,SIGNAL("QtSig()"),pyClass.pyMethod)
+QObject.connect(a,SIGNAL("QtSig()"),PYSIGNAL("PySig"))
+QObject.connect(a,SIGNAL("QtSig()"),SLOT("QtSlot()"))
+QObject.connect(a,PYSIGNAL("PySig"),pyFunction)
+QObject.connect(a,PYSIGNAL("PySig"),pyClass.pyMethod)
+QObject.connect(a,PYSIGNAL("PySig"),SIGNAL("QtSig()"))
+QObject.connect(a,PYSIGNAL("PySig"),SLOT("QtSlot()"))
+</ProgramListing>
+
+<Para>
+When a slot is a Python method that corresponds to a Qt slot then a signal can
+be connected to either the Python method or the Qt slot. The following
+connections achieve the same effect.
+</Para>
+
+<ProgramListing>
+sbar = QScrollBar()
+lcd = QLCDNumber()
+
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd.display)
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))
+</ProgramListing>
+
+<Para>
+The difference is that the second connection is made at the C++ level and is
+more efficient.
+</Para>
+
+<Para>
+Disconnecting signals works in exactly the same way.
+</Para>
+
+<Para>
+Any instance of a class that is derived from the <Literal>QObject</Literal>
+class can emit a signal using the <Literal>emit</Literal> method. This takes
+two arguments. The first is the Python or Qt signal, the second is a Python
+tuple which are the arguments to the signal. For example:
+</Para>
+
+<ProgramListing>
+a.emit(SIGNAL("clicked()"),())
+a.emit(PYSIGNAL("pySig"),("Hello","World"))
+</ProgramListing>
+
+<Para>
+Note that when a slot is a Python callable object its reference count is not
+increased. This means that a class instance can be deleted without having to
+explicitly disconnect any signals connected to its methods. However, it also
+means that using lambda expressions as slots will not work unless you keep a
+separate reference to the expression to prevent it from being immediately
+garbage collected.
+</Para>
+
+<Para>
+Qt allows a signal to be connected to a slot that requires fewer arguments than
+the signal passes. The extra arguments are quietly discarded. Python slots
+can be used in the same way.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Static Member Functions</Title>
+<Para>
+Static member functions are implemented as Python class functions.
+For example the C++ static member function
+<Literal>QObject::connect()</Literal> is called from Python as
+<Literal>QObject.connect()</Literal> or <Literal>self.connect()</Literal> if
+called from a sub-class of <Literal>QObject</Literal>.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Enumerated Types</Title>
+<Para>
+Enumerated types are implemented as a set of simple variables corresponding to
+the separate enumerated values.
+</Para>
+
+<Para>
+When using an enumerated value the name of the class (or a sub-class) in which
+the enumerated type was defined in must be included. For example:
+</Para>
+
+<ProgramListing>
+Qt.SolidPattern
+QWidget.TabFocus
+QFrame.TabFocus
+</ProgramListing>
+</Sect1>
+
+
+<Sect1><Title>Module Reference Documentation</Title>
+<Para>
+The following sections should be used in conjunction with the normal class
+documentation - only the differences specific to the Python bindings are
+documented here.
+</Para>
+
+<Para>
+In these sections, <Emphasis>Not yet implemented</Emphasis>
+implies that the feature can be easily implemented if needed. <Emphasis>Not
+implemented</Emphasis> implies that the feature will not be implemented, either
+because it cannot be or because it is not appropriate.
+</Para>
+
+<Para>
+If a class is described as being <Emphasis>fully implemented</Emphasis> then
+all non-private member functions and all public class variables have been
+implemented.
+</Para>
+
+<Para>
+If an operator has been implemented then it is stated explicitly.
+</Para>
+
+<Para>
+Classes that are not mentioned have not yet been implemented.
+</Para>
+</Sect1>
+
+
+<Sect1><Title><Literal>qt</Literal> Module Reference</Title>
+<Sect2><Title>Qt Constants</Title>
+<Para>
+All constant values defined by Qt have equivalent constants defined to Python.
+</Para>
+</Sect2>
+<Sect2><Title>Qt (Qt v2+)</Title>
+<Para>
+<Literal>Qt</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QAccel</Title>
+<Para>
+<Literal>QAccel</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QAction (Qt v2.2+)</Title>
+<Para>
+<Literal>QAction</Literal> is fully implemented.
+</Para>
+
+</Sect2>
+<Sect2><Title>QActionGroup (Qt v2.2+)</Title>
+<Para>
+<Literal>QActionGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QApplication</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes one parameter which is a list of argument strings. Arguments
+used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>GUIenabled</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>Type <Parameter>type</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list. (Qt v2.2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QAssistantClient (Qt v3.1+)</Title>
+<Para>
+<Literal>QAssistantClient</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QBitmap</Title>
+<Para>
+<Literal>QBitmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QBrush</Title>
+<Para>
+<Literal>QBrush</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+<Sect2><Title>QButton</Title>
+<Para>
+<Literal>QButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QButtonGroup</Title>
+<Para>
+<Literal>QButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QByteArray</Title>
+<Para>
+A Python string can be used whenever a <Literal>QByteArray</Literal> can be
+used. A <Literal>QByteArray</Literal> can be converted to a Python string
+using the Python <Literal>str()</Literal> function.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QByteArray &<Function>assign</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>char &<Function>at</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>contains</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>fill</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+ <ParamDef>int <Parameter>size</Parameter> = -1</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>find</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>i</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>resetRawData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint<Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QByteArray &<Function>setRawData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint<Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QCDEStyle (Qt v2+)</Title>
+<Para>
+<Literal>QCDEStyle</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QCheckBox</Title>
+<Para>
+<Literal>QCheckBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QClipboard</Title>
+<FuncSynopsis>
+ <FuncDef>void *<Function>data</Function> const</FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented (Qt v1.x).
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>void *<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented (Qt v1.x).
+</Para>
+</Sect2>
+<Sect2><Title>QColor</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getHsv</Function></FuncDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>v</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>h</Literal>,
+<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getRgb</Function></FuncDef>
+ <ParamDef>int *<Parameter>r</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>g</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>b</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>r</Literal>,
+<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>hsv</Function></FuncDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>v</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>h</Literal>,
+<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>rgb</Function></FuncDef>
+ <ParamDef>int *<Parameter>r</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>g</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>b</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>r</Literal>,
+<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
+</Para>
+</Sect2>
+<Sect2><Title>QColorDialog (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QRgb <Function>getRgba</Function></FuncDef>
+ <ParamDef>QRgb <Parameter>initial</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>initial</Literal>, <Literal>parent</Literal> and
+<Literal>name</Literal> parameters and returns a tuple containing the
+<Literal>QRgb</Literal> result and the <Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QColorGroup</Title>
+<Para>
+<Literal>QColorGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QComboBox</Title>
+<Para>
+<Literal>QComboBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QCommonStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QCString (Qt v2+)</Title>
+<Para>
+A Python string can be used whenever a <Literal>QCString</Literal> can be used.
+A <Literal>QCString</Literal> can be converted to a Python string using the
+Python <Literal>str()</Literal> function.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCString &amp;<Function>sprintf</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ulong <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QCursor</Title>
+<Para>
+<Literal>QCursor</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDataStream</Title>
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>readBytes</Function></FuncDef>
+ <ParamDef>const char *&amp;<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint &amp;<Parameter>l</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters. The <Literal>QDataStream</Literal> result and the
+data read are returned as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>readRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>l</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>l</Literal> parameter. The
+<Literal>QDataStream</Literal> result and the data read are returned as a
+tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>writeBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>s</Literal> and not passed as a
+parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>writeRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>s</Literal> and not passed as a
+parameter.
+</Para>
+</Sect2>
+<Sect2><Title>QDate</Title>
+<Para>
+The Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>weekNumber</Function></FuncDef>
+ <ParamDef>int *<Parameter>yearNum</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the week number and the year number as a
+tuple. (Qt v3.1+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QDateTime</Title>
+<Para>
+<Literal>QDateTime</Literal> is fully implemented, including the Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTime</Title>
+<Para>
+<Literal>QTime</Literal> is fully implemented, including the Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators.
+</Para>
+</Sect2>
+<Sect2><Title>QDateEdit (Qt v3+)</Title>
+<Para>
+<Literal>QDateEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTimeEdit (Qt v3+)</Title>
+<Para>
+<Literal>QTimeEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDateTimeEdit (Qt v3+)</Title>
+<Para>
+<Literal>QDateTimeEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDesktopWidget (Qt v3+)</Title>
+<Para>
+<Literal>QDesktopWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDial (Qt v2.2+)</Title>
+<Para>
+<Literal>QDial</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDialog</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ dialog to be transfered
+to Python. This means that the C++ dialog will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the dialog is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+</Sect2>
+<Sect2><Title>QDir</Title>
+<Para>
+<Literal>QDir</Literal> is fully implemented, including the Python
+<Literal>len</Literal>, <Literal>[]</Literal> (for reading slices and
+individual elements), <Literal>==</Literal>, <Literal>!=</Literal> and
+<Literal>in</Literal> operators
+</Para>
+</Sect2>
+
+<Sect2><Title>QFileInfoList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QFileInfoList</Literal> is
+the return type of a function or the type of an argument, a Python list of
+<Literal>QFileInfo</Literal> instances is used instead.
+</Para>
+</Sect2>
+<Sect2><Title>QDockArea (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>hasDockWindow</Function> const</FuncDef>
+ <ParamDef>QDockWindow *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>w</Literal> parameter and returns the index of the
+QDockWIndow or -1 if the QDockArea does not contain the QDockWindow.
+</Para>
+</Sect2>
+<Sect2><Title>QDockWindow (Qt v3+)</Title>
+<Para>
+<Literal>QDockWindow</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QColorDrag (Qt v2.1+)</Title>
+<Para>
+<Literal>QColorDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragObject</Title>
+<Para>
+<Literal>QDragObject</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageDrag</Title>
+<Para>
+<Literal>QImageDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QStoredDrag</Title>
+<Para>
+<Literal>QStoredDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextDrag</Title>
+<Para>
+<Literal>QTextDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QUriDrag (Qt v2+)</Title>
+<Para>
+<Literal>QUriDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QUrlDrag (Qt v1.x)</Title>
+<Para>
+<Literal>QUrlDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDropSite</Title>
+<Para>
+<Literal>QDropSite</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QErrorMessage (Qt v3+)</Title>
+<Para>
+<Literal>QErrorMessage</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QEvent</Title>
+<Para>
+<Literal>QEvent</Literal> is fully implemented.
+</Para>
+<Para>
+Instances of <Literal>QEvent</Literal>s are automatically converted to the
+correct sub-class.
+</Para>
+</Sect2>
+
+<Sect2><Title>QChildEvent</Title>
+<Para>
+<Literal>QChildEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCloseEvent</Title>
+<Para>
+<Literal>QCloseEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDragEvent (Qt v3.3+)</Title>
+<Para>
+<Literal>QIconDragEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QContextMenuEvent (Qt v3+)</Title>
+<Para>
+<Literal>QContextMenuEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCustomEvent</Title>
+<Para>
+<Literal>QCustomEvent</Literal> is fully implemented. Any Python object can be
+passed as the event data and its reference count is increased.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragEnterEvent</Title>
+<Para>
+<Literal>QDragEnterEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragLeaveEvent</Title>
+<Para>
+<Literal>QDragLeaveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragMoveEvent</Title>
+<Para>
+<Literal>QDragMoveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDropEvent</Title>
+<Para>
+<Literal>QDropEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFocusEvent</Title>
+<Para>
+<Literal>QFocusEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHideEvent</Title>
+<Para>
+<Literal>QHideEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIMComposeEvent (Qt v3.1+)</Title>
+<Para>
+<Literal>QIMComposeEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIMEvent (Qt v3+)</Title>
+<Para>
+<Literal>QIMEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QKeyEvent</Title>
+<Para>
+<Literal>QKeyEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMouseEvent</Title>
+<Para>
+<Literal>QMouseEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMoveEvent</Title>
+<Para>
+<Literal>QMoveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPaintEvent</Title>
+<Para>
+<Literal>QPaintEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QResizeEvent</Title>
+<Para>
+<Literal>QResizeEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QShowEvent</Title>
+<Para>
+<Literal>QShowEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTabletEvent (Qt v3+)</Title>
+<Para>
+<Literal>QTabletEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTimerEvent</Title>
+<Para>
+<Literal>QTimerEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWheelEvent (Qt v2+)</Title>
+<Para>
+<Literal>QWheelEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QEventLoop (Qt v3.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QFile</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>open</Function></FuncDef>
+ <ParamDef>int <Parameter>m</Parameter></ParamDef>
+ <ParamDef>FILE *<Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readLine</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>setDecodingFunction</Function></FuncDef>
+ <ParamDef>EncoderFn <Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>setEncodingFunction</Function></FuncDef>
+ <ParamDef>EncoderFn <Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+<Sect2><Title>QFileDialog</Title>
+<Para>
+<Literal>QFileDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFileIconProvider</Title>
+<Para>
+<Literal>QFileIconProvider</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFilePreview</Title>
+<Para>
+<Literal>QFilePreview</Literal> is fully implemented. However it cannot be
+used from Python in the same way as it is used from C++ because PyQt does not
+support multiple inheritance involving more than one wrapped class. A trick
+that seems to work is to use composition rather than inheritance as in the
+following code fragment.
+</Para>
+<ProgramListing>
+class FilePreview(QFilePreview):
+ pass
+
+class Preview(QLabel):
+ def __init__(self, parent=None):
+ QLabel.__init__(self, parent)
+ self.preview = FilePreview()
+ self.preview.previewUrl = self.previewUrl
+</ProgramListing>
+<Para>
+Note that QFilePreview cannot be instantiated directly because it is abstract.
+Thanks to Hans-Peter Jansen for this trick.
+</Para>
+</Sect2>
+<Sect2><Title>QFileInfo</Title>
+<Para>
+<Literal>QFileInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QFont</Title>
+<Para>
+<Literal>QFont</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+<Sect2><Title>QFontDatabase (Qt v2.1+)</Title>
+<Para>
+<Literal>QFontDatabase</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QFontDialog (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QFont <Function>getFont</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>const QFont &<Parameter>def</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>def</Literal>, <Literal>parent</Literal> and
+<Literal>name</Literal> parameters and returns a tuple containing the
+<Literal>QFont</Literal> result and the <Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QFont <Function>getFont</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>parent</Literal> and <Literal>name</Literal> parameters
+and returns a tuple containing the <Literal>QFont</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QFontInfo</Title>
+<Para>
+<Literal>QFontInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QFontMetrics</Title>
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>int <Parameter>tabstops</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>tabarray</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>tabarray</Literal> parameter is a Python list of integers.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QSize <Function>size</Function></FuncDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>int <Parameter>tabstops</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>tabarray</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>tabarray</Literal> parameter is a Python list of integers.
+</Para>
+</Sect2>
+<Sect2><Title>QFrame</Title>
+<Para>
+<Literal>QFrame</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QGManager (Qt v1.x)</Title>
+<Para>
+<Literal>QGManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QChain (Qt v1.x)</Title>
+<Para>
+<Literal>QChain</Literal> is implemented as an opaque class.
+</Para>
+</Sect2>
+<Sect2><Title>QGrid (Qt v2+)</Title>
+<Para>
+<Literal>QGrid</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QGridView (Qt v3+)</Title>
+<Para>
+<Literal>QGridView</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QGroupBox</Title>
+<Para>
+<Literal>QGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QHBox (Qt v2+)</Title>
+<Para>
+<Literal>QHBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QHButtonGroup (Qt v2+)</Title>
+<Para>
+<Literal>QHButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QHeader</Title>
+<Para>
+<Literal>QHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QHGroupBox (Qt v2+)</Title>
+<Para>
+<Literal>QHGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QIconSet</Title>
+<Para>
+<Literal>QIconSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconFactory (Qt v3.1+)</Title>
+<Para>
+<Literal>QIconFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QIconView (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>QIconViewItem *<Function>makeRowLayout</Function></FuncDef>
+ <ParamDef>QIconViewItem *<Parameter>begin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconViewItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconViewItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDrag (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDragItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconDragItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QImage</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QImage</Function></FuncDef>
+ <ParamDef>const char *<Parameter>xpm</Parameter>[]</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a list of strings as its parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QImage</Function></FuncDef>
+ <ParamDef>uchar *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>depth</Parameter></ParamDef>
+ <ParamDef>QRgb *<Parameter>colorTable</Parameter></ParamDef>
+ <ParamDef>int <Parameter>numColors</Parameter></ParamDef>
+ <ParamDef>Endian <Parameter>bitOrder</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>colorTable</Literal> parameter is a list of QRgb instances or
+None. (Qt v2.1+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar *<Function>bits</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QRgb *<Function>colorTable</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QImage <Function>convertDepthWithPalette</Function></FuncDef>
+ <ParamDef>int</ParamDef>
+ <ParamDef>QRgb *<Parameter>p</Parameter></ParamDef>
+ <ParamDef>int <Parameter>pc</Parameter></ParamDef>
+ <ParamDef>int <Parameter>cf</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar **<Function>jumpTable</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter> = 0</ParamDef>
+ <ParamDef>ColorMode <Parameter>mode</Parameter> = Auto</ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>buf</Literal> and not passed as
+a parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar *<Function>scanLine</Function></FuncDef>
+ <ParamDef>int <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageIO</Title>
+<FuncSynopsis>
+ <FuncDef>static void <Function>defineIOHandler</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>header</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>flags</Parameter></ParamDef>
+ <ParamDef>image_io_handler <Parameter>read_image</Parameter></ParamDef>
+ <ParamDef>image_io_handler <Parameter>write_image</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageTextKeyLang</Title>
+<Para>
+<Literal>QImageTextKeyLang</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QInputDialog (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v2.1 - v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>QLineEdit::EchoMode<Parameter>echo</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v2.2 - v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>QLineEdit::EchoMode<Parameter>echo</Parameter> = QLineEdit::Normal</ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static int <Function>getInteger</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>int <Parameter>num</Parameter> = 0</ParamDef>
+ <ParamDef>int <Parameter>from</Parameter> = -2147483647</ParamDef>
+ <ParamDef>int <Parameter>to</Parameter> = 2147483647</ParamDef>
+ <ParamDef>int <Parameter>step</Parameter> = 1</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>int</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static double <Function>getDouble</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>double <Parameter>num</Parameter> = 0</ParamDef>
+ <ParamDef>double <Parameter>from</Parameter> = -2147483647</ParamDef>
+ <ParamDef>double <Parameter>to</Parameter> = 2147483647</ParamDef>
+ <ParamDef>int <Parameter>step</Parameter> = 1</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>double</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getItem</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>const QStringList &<Parameter>list</Parameter></ParamDef>
+ <ParamDef>int <Parameter>current</Parameter> = 0</ParamDef>
+ <ParamDef>bool <Parameter>editable</Parameter> = TRUE</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+</Sect2>
+<Sect2><Title>QInterlaceStyle (Qt v2.3.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+</Para>
+</Sect2>
+<Sect2><Title>QIODevice</Title>
+<Para>
+<Literal>QIODevice</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QKeySequence (Qt v3+)</Title>
+<Para>
+<Literal>QKeySequence</Literal> is fully implemented including the operators
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>QString()</Literal> and
+<Literal>int()</Literal>. A <Literal>QString</Literal> instance or a Python
+integer may be used whenever a <Literal>QKeySequence</Literal> can be used.
+</Para>
+</Sect2>
+<Sect2><Title>QLabel</Title>
+<Para>
+<Literal>QLabel</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLayout</Title>
+<Para>
+<Literal>QLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QBoxLayout</Title>
+<Para>
+<Literal>QBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLayoutIterator (Qt v2+)</Title>
+<Para>
+<Literal>QGLayoutIterator</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGridLayout</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>findWidget</Function></FuncDef>
+ <ParamDef>QWidget *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>row</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>w</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result, <Literal>row</Literal> and
+<Literal>col</Literal>. (Qt v2+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QHBoxLayout</Title>
+<Para>
+<Literal>QHBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QLayoutItem (Qt v2+)</Title>
+<Para>
+<Literal>QLayoutItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QLayoutIterator (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>QLayoutItem *<Function>next</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a wrapper around the <Literal>QLayoutIterator</Literal>
+<Literal>++</Literal> operator.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSpacerItem (Qt v2+)</Title>
+<Para>
+<Literal>QSpacerItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QVBoxLayout</Title>
+<Para>
+<Literal>QVBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWidgetItem (Qt v2+)</Title>
+<Para>
+<Literal>QWidgetItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLCDNumber</Title>
+<Para>
+<Literal>QLCDNumber</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLibrary (Qt v3+)</Title>
+<Para>
+<Literal>QLibrary</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLineEdit</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>characterAt</Function></FuncDef>
+ <ParamDef>int <Parameter>xpos</Parameter></ParamDef>
+ <ParamDef>QChar *<Parameter>chr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>xpos</Literal> parameter and returns the int
+result and the <Literal>chr</Literal> value as a tuple. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>start</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>end</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the bool result and the
+<Literal>start</Literal> and <Literal>end</Literal> values as a tuple.
+(Qt v3+)
+</Para>
+</Sect2>
+<Sect2><Title>QList&lt;type&gt; (Qt v2)</Title>
+<Para>
+Types based on the <Literal>QList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+<Sect2><Title>QListBox</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>itemYPos</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>yPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>index</Literal> parameter and returns a tuple
+containing the <Literal>bool</Literal> result and <Literal>yPos</Literal>.
+(Qt v1.x)
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxItem</Title>
+<Para>
+<Literal>QListBoxItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxPixmap</Title>
+<Para>
+<Literal>QListBoxPixmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxText</Title>
+<Para>
+<Literal>QListBoxText</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QListView</Title>
+<Para>
+<Literal>QListView</Literal> is fully implemented.
+</Para>
+<Para>
+Note that to remove a child <Literal>QListViewItem</Literal> you must first
+call <Literal>takeItem()</Literal> and then <Literal>del()</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListViewItem</Title>
+<Para>
+<Literal>QListViewItem</Literal> is fully implemented.
+</Para>
+<Para>
+Note that to remove a child <Literal>QListViewItem</Literal> you must first
+call <Literal>takeItem()</Literal> and then <Literal>del()</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCheckListItem</Title>
+<Para>
+<Literal>QCheckListItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListViewItemIterator (Qt v2+)</Title>
+<Para>
+<Literal>QListViewItemIterator</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLocale (Qt v3.3+)</Title>
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_ULONG <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QMainWindow</Title>
+<FuncSynopsis>
+ <FuncDef>QTextStream &amp;<Function>operator&lt&lt;</Function></FuncDef>
+ <ParamDef>QTextStream &amp;<Parameter></Parameter></ParamDef>
+ <ParamDef>const QMainWindow &amp;<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This operator is fully implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &amp;<Function>operator&gt&gt;</Function></FuncDef>
+ <ParamDef>QTextStream &amp;<Parameter></Parameter></ParamDef>
+ <ParamDef>QMainWindow &amp;<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This operator is fully implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getLocation</Function></FuncDef>
+ <ParamDef>QToolBar *<Parameter>tb</Parameter></ParamDef>
+ <ParamDef>ToolBarDock &amp;<Parameter>dock</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>index</Parameter></ParamDef>
+ <ParamDef>bool &amp;<Parameter>nl</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>extraOffset</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>tb</Literal> parameter and returns a tuple of the
+result, <Literal>dock</Literal>, <Literal>index</Literal>,
+<Literal>nl</Literal> and <Literal>extraOffset</Literal> values. (Qt v2.1.0+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QList&lt;QToolBar&gt; <Function>toolBars</Function></FuncDef>
+ <ParamDef>ToolBarDock <Parameter>dock</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of <Literal>QToolBar</Literal> instances. (Qt v2.1.0+)
+</Para>
+</Sect2>
+<Sect2><Title>QMemArray&lt;type&gt; (Qt v3+)</Title>
+<Para>
+Types based on the <Literal>QMemArray</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+<Sect2><Title>QMenuBar</Title>
+<Para>
+<Literal>QMenuBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QMenuData</Title>
+<FuncSynopsis>
+ <FuncDef>QMenuItem *<Function>findItem</Function></FuncDef>
+ <ParamDef>int <Parameter>id</Parameter></ParamDef>
+ <ParamDef>QMenuData **<Parameter>parent</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCustomMenuItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QCustomMenuItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMenuItem</Title>
+<Para>
+<Literal>QMenuItem</Literal> is an internal Qt class.
+</Para>
+</Sect2>
+<Sect2><Title>QMessageBox</Title>
+<Para>
+<Literal>QMessageBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QMetaObject</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>numClassInfo</Function> const</FuncDef>
+ <ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QClassInfo *<Function>classInfo</Function> const</FuncDef>
+ <ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMetaProperty</Title>
+<Para>
+<Literal>QMetaProperty</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QMimeSource (Qt v2+)</Title>
+<Para>
+<Literal>QMimeSource</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMimeSourceFactory (Qt v2+)</Title>
+<Para>
+<Literal>QMimeSourceFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWindowsMime (Qt v3+)</Title>
+<Para>
+<Literal>QWindowsMime</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QMotifPlusStyle (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QMotifStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QMovie</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QMovie</Function></FuncDef>
+ <ParamDef>QDataSource *<Parameter>src</Parameter></ParamDef>
+ <ParamDef>int <Parameter>bufsize</Parameter> = 1024</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>pushData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>int <Parameter>length</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>length</Literal> is derived from <Literal>data</Literal> and not
+passed as a parameter. (Qt v2.2.0+)
+</Para>
+</Sect2>
+<Sect2><Title>QMultiLineEdit</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>cursorPosition</Function> const</FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>line</Literal> and
+<Literal>col</Literal> values. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getCursorPosition</Function> const</FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>line</Literal> and
+<Literal>col</Literal> values. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getMarkedRegion</Function></FuncDef>
+ <ParamDef>int *<Parameter>line1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>line2</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col2</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the bool result and the
+<Literal>line1</Literal>, <Literal>col1</Literal>, <Literal>line2</Literal> and
+<Literal>col2</Literal> values.
+</Para>
+</Sect2>
+<Sect2><Title>QMutex (Qt v2.2+)</Title>
+<Para>
+<Literal>QMutex</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMutexLocker (Qt v3.1+)</Title>
+<Para>
+<Literal>QMutexLocker</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QNetworkOperation (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkOperation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QNetworkProtocol (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkProtocol</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QNetworkProtocolFactoryBase (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkProtocolFactoryBase</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QObject</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const char *<Parameter>signal</Parameter> = 0</ParamDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const QObject *<Parameter>sender</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>signal</Parameter></ParamDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+At the moment PyQt does not support the full behaviour of the corresponding Qt
+method. In particular, specifying None (ie. 0 in C++) for the
+<Literal>signal</Literal> and <Literal>receiver</Literal> parameters is not yet
+supported.
+</Para>
+</Sect2>
+<Sect2><Title>QObjectCleanupHandler (Qt v3+)</Title>
+<Para>
+<Literal>QObjectCleanupHandler</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QObjectList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QObjectList</Literal> is the
+return type of a function or the type of an argument, a Python list of
+<Literal>QObject</Literal> instances is used instead.
+</Para>
+</Sect2>
+<Sect2><Title>QPaintDeviceMetrics</Title>
+<Para>
+<Literal>QPaintDeviceMetrics</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPaintDevice</Title>
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>cmd</Function></FuncDef>
+ <ParamDef>int</ParamDef>
+ <ParamDef>QPainter *</ParamDef>
+ <ParamDef>QPDevCmdParam *</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPainter</Title>
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>const QRect&</ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>drawText</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>QRect *<Parameter>br</Parameter> = 0</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>drawText</Function></FuncDef>
+ <ParamDef>const QRect&</ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>QRect *<Parameter>br</Parameter> = 0</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setTabArray</Function></FuncDef>
+ <ParamDef>int *<Parameter>ta</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of tab stops.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int *<Function>tabArray</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of tab stops.
+</Para>
+</Sect2>
+<Sect2><Title>QPalette</Title>
+<Para>
+<Literal>QPalette</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+<Sect2><Title>QPixmap</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPixmap</Function></FuncDef>
+ <ParamDef>const char *<Parameter>xpm</Parameter>[]</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a list of strings as its parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter> = 0</ParamDef>
+ <ParamDef>ColorMode <Parameter>mode</Parameter> = Auto</ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>buf</Literal> and not passed as
+a parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>int <Parameter>conversion_flags</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPixmapCache (Qt v3+)</Title>
+<Para>
+<Literal>QPixmapCache</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPair&lt;type,type&gt; (Qt v3+)</Title>
+<Para>
+Types based on the <Literal>QPair</Literal> template are automatically
+converted to and from Python tuples of two elements.
+</Para>
+</Sect2>
+<Sect2><Title>QPen</Title>
+<Para>
+<Literal>QPen</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+<Sect2><Title>QPicture</Title>
+<FuncSynopsis>
+ <FuncDef>const char *<Function>data</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>size</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+<Sect2><Title>QPlatinumStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QPoint</Title>
+<Para>
+The Python
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>, unary <Literal>-</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>,
+<Literal>/</Literal>, <Literal>/=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal> and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rx</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>ry</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPointArray</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPointArray</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>point</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the single parameter <Literal>i</Literal> and returns the
+<Literal>x</Literal> and <Literal>y</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>putPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, <Literal>index</Literal> and a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>putPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firstx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firsty</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firstx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firsty</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPopupMenu</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ menu to be transfered
+to Python. This means that the C++ menu will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the menu is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef>const QPoint &<Parameter>pos</Parameter></ParamDef>
+ <ParamDef>int <Parameter>indexAtPoint</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ menu to be transfered
+to Python. This means that the C++ menu will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the menu is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+</Sect2>
+<Sect2><Title>QPrintDialog (X11)</Title>
+<Para>
+<Literal>QPrintDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QPrinter</Title>
+<Para>
+<Literal>QPrinter</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QProcess (Qt v3+)</Title>
+<Para>
+<Literal>QProcess</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QProgressBar</Title>
+<Para>
+<Literal>QProgressBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QProgressDialog</Title>
+<Para>
+<Literal>QProgressDialog</Literal> is fully implemented.
+value.
+</Para>
+</Sect2>
+<Sect2><Title>QPtrList&lt;type&gt; (Qt v2+)</Title>
+<Para>
+Types based on the <Literal>QPtrList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+<Sect2><Title>QPushButton</Title>
+<Para>
+<Literal>QPushButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QRadioButton</Title>
+<Para>
+<Literal>QRadioButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QRangeControl</Title>
+<Para>
+<Literal>QRangeControl</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QRect</Title>
+<Para>
+The Python
+<Literal>&amp;</Literal>, <Literal>&amp;=</Literal>,
+<Literal>|</Literal>, <Literal>|=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>in</Literal> and
+<Literal>__nonzero__</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>coords</Function></FuncDef>
+ <ParamDef>int *<Parameter>x1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>x2</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y2</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple containing the four values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>rect</Function></FuncDef>
+ <ParamDef>int *<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple containing the four values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rBottom</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rLeft</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rRight</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rTop</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+</Sect2>
+<Sect2><Title>QRegExp</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>match</Function></FuncDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>index</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>len</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes <Literal>str</Literal> and <Literal>index</Literal> parameters and
+returns a tuple of the <Literal>int</Literal> result and the
+<Literal>len</Literal> value. (Qt v1.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>match</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>index</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>len</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes <Literal>str</Literal> and <Literal>index</Literal> parameters and
+returns a tuple of the <Literal>int</Literal> result and the
+<Literal>len</Literal> value. (Qt v2+)
+</Para>
+</Sect2>
+<Sect2><Title>QRegion</Title>
+<Para>
+The Python
+<Literal>|</Literal>, <Literal>|=</Literal>,
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>&amp;</Literal>, <Literal>&amp;=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>,
+<Literal>^</Literal>, <Literal>^=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>in</Literal> and
+<Literal>__nonzero__</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QArray&lt;QRect&gt; <Function>rects</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setRects</Function></FuncDef>
+ <ParamDef>QRect *<Parameter>rects</Parameter></ParamDef>
+ <ParamDef>int <Parameter>num</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2.2+)
+</Para>
+</Sect2>
+<Sect2><Title>QScrollBar</Title>
+<Para>
+<Literal>QScrollBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QScrollView</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>contentsToViewport</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vx</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vy</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>vx</Literal> and <Literal>vy</Literal>
+values. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>viewportToContents</Function></FuncDef>
+ <ParamDef>int <Parameter>vx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>vy</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>vx</Literal> and <Literal>vy</Literal> parameters and
+returns a tuple containing the <Literal>x</Literal> and <Literal>y</Literal>
+values. (Qt v2+)
+</Para>
+</Sect2>
+<Sect2><Title>QSemaphore (Qt v2.2+)</Title>
+<Para>
+<Literal>QSemaphore</Literal> is fully implemented. The <Literal>+=</Literal>
+and <Literal>-=</Literal> operators have also been implemented, but require
+Python v2.0 or later.
+</Para>
+</Sect2>
+<Sect2><Title>QSemiModal (Qt v1, v2)</Title>
+<Para>
+<Literal>QSemiModal</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSessionManager (Qt v2+)</Title>
+<Para>
+<Literal>QSessionManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSettings (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>readBoolEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>bool</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>double <Function>readDoubleEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>double <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>double</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QString <Function>readEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>def</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QStringList <Function>readListEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QStringList</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QStringList <Function>readListEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>const QChar &amp;<Parameter>separator</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QStringList</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>int <Function>readNumEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>int <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>int</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>writeEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>value</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSGIStyle (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QSignalMapper</Title>
+<Para>
+<Literal>QSignalMapper</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSimpleRichText (Qt v2+)</Title>
+<Para>
+<Literal>QSimpleRichText</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSize</Title>
+<Para>
+The Python
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>,
+<Literal>/</Literal>, <Literal>/=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal> and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rheight</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rwidth</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSizeGrip (Qt v2+)</Title>
+<Para>
+<Literal>QSizeGrip</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSizePolicy (Qt v2+)</Title>
+<Para>
+<Literal>QSizePolicy</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSlider</Title>
+<Para>
+<Literal>QSlider</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSocketNotifier</Title>
+<Para>
+<Literal>QSocketNotifier</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSound (Qt v2.2+)</Title>
+<Para>
+<Literal>QSound</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSpinBox</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>mapTextToValue</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the modified
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QSplashScreen (Qt v3.2.0+)</Title>
+<Para>
+<Literal>QSplashScreen</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSplitter</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getRange</Function></FuncDef>
+ <ParamDef>int <Parameter>id</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>min</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>max</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>id</Literal> parameter and returns the
+<Literal>min</Literal> and <Literal>max</Literal> values as a tuple. (Qt v2+)
+</Para>
+</Sect2>
+<Sect2><Title>QStatusBar</Title>
+<Para>
+<Literal>QStatusBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QChar (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>uchar &<Function>cell</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar &<Function>row</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QString</Title>
+<Para>
+A Python string object (or Unicode object) can be used whenever a
+<Literal>QString</Literal> can be used. A <Literal>QString</Literal> can be
+converted to a Python string object using the Python <Literal>str()</Literal>
+function, and to a Python Unicode object using the Python
+<Literal>unicode()</Literal> function.
+</Para>
+
+<Para>
+The Python <Literal>+</Literal>, <Literal>+=</Literal>, <Literal>*</Literal>,
+<Literal>*=</Literal>, <Literal>len</Literal>, <Literal>[]</Literal>
+(for reading slices and individual characters), <Literal>in</Literal> and
+comparison operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCharRef <Function>at</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QChar <Function>constref</Function> const</FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QChar &<Function>ref</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QString &<Function>setUnicodeCodes</Function></FuncDef>
+ <ParamDef>const ushort *<Parameter>unicode_as_shorts</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2.1+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QString &<Function>sprintf</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ulong <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QStringList (Qt v2+)</Title>
+<Para>
+The Python <Literal>len</Literal>, <Literal>[]</Literal> (for both reading and
+writing slices and individual elements), <Literal>del</Literal> (for deleting
+slices and individual elements), <Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>, <Literal>==</Literal>,
+<Literal>!=</Literal> and <Literal>in</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Iterator <Function>append</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>x</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This does not return a value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Iterator <Function>prepend</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>x</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This does not return a value.
+</Para>
+</Sect2>
+<Sect2><Title>QStrList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QStrList</Literal> is the
+return type of a function or the type of an argument, a Python list of strings
+is used instead.
+</Para>
+</Sect2>
+<Sect2><Title>QStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>b</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Thus takes only the <Literal>b</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+
+<Sect2><Title>QStyleOption (Qt v3+)</Title>
+<Para>
+<Literal>QStyleOption</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QStyleSheet (Qt v2+)</Title>
+<Para>
+<Literal>QStyleSheet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QStyleSheetItem (Qt v2+)</Title>
+<Para>
+<Literal>QStyleSheetItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSyntaxHighlighter (Qt v3.1+)</Title>
+<Para>
+<Literal>QSyntaxHighlighter</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTab</Title>
+<Para>
+<Literal>QTab</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTabBar</Title>
+<FuncSynopsis>
+ <FuncDef>QList&lt;QTab&gt; <Function>tabList</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of <Literal>QTab</Literal> instances.
+</Para>
+</Sect2>
+<Sect2><Title>QTabDialog</Title>
+<Para>
+<Literal>QTabDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTableView (Qt 1.x, Qt 2.x)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>colXPos</Function></FuncDef>
+ <ParamDef>int <Parameter>col</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>xPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>col</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result and <Literal>xPos</Literal>.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>rowYPos</Function></FuncDef>
+ <ParamDef>int <Parameter>row</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>yPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>row</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result and <Literal>yPos</Literal>.
+</Para>
+</Sect2>
+<Sect2><Title>QTabWidget (Qt v2+)</Title>
+<Para>
+<Literal>QTabWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTextBrowser (Qt v2+)</Title>
+<Para>
+<Literal>QTextBrowser</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTextCodec (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QCString <Function>fromUnicode</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>uc</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>lenInOut</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>QCString</Literal> result and the
+updated <Literal>lenInOut</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextDecoder (Qt v2+)</Title>
+<Para>
+<Literal>QTextDecoder</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextEncoder (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QCString <Function>fromUnicode</Function> = 0</FuncDef>
+ <ParamDef>const QString &amp;<Parameter>uc</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>lenInOut</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>QCString</Literal> result and the
+updated <Literal>lenInOut</Literal>.
+</Para>
+</Sect2>
+<Sect2><Title>QTextEdit (Qt v3+)</Title>
+<FuncSynopsis>
+<FuncDef>int <Function>charAt</Function></FuncDef>
+ <ParamDef>const QPoint &amp;<Parameter>pos</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>para</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>pos</Literal> parameter and returns a tuple of the
+value returned via the <Literal>para</Literal> pointer and the int result.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>virtual bool <Function>find</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>expr</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>cs</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>wo</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>forward</Parameter> = TRUE</ParamDef>
+ <ParamDef>int *<Parameter>para</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+If the <Literal>para</Literal> and <Literal>index</Literal> parameters are
+omitted then the bool result is returned. If both are supplied (as integers)
+then a tuple of the bool result and the modified values of
+<Literal>para</Literal> and <Literal>index</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>void <Function>getCursorPosition</Function></FuncDef>
+ <ParamDef>int *<Parameter>para</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned via the
+<Literal>para</Literal> and <Literal>index</Literal> pointers.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>void <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>paraFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>paraTo</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexTo</Parameter></ParamDef>
+ <ParamDef>int <Parameter>selNum</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>selNum</Literal> parameter and returns a tuple of
+the <Literal>paraFrom</Literal>, <Literal>indexFrom</Literal>,
+<Literal>paraTo</Literal> and <Literal>indexTo</Literal> values.
+</Para>
+</Sect2>
+<Sect2><Title>QTextStream</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &<Function>readRawBytes</Function></FuncDef>
+ <ParamDef>char *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &<Function>writeRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextIStream (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextIStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextOStream (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextOStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTextView (Qt v2+)</Title>
+<Para>
+<Literal>QTextView</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QThread (Qt v2.2+)</Title>
+<Para>
+<Literal>QThread</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTimer</Title>
+<Para>
+<Literal>QTimer</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QToolBar</Title>
+<Para>
+<Literal>QToolBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QToolBox (Qt v3.2.0+)</Title>
+<Para>
+<Literal>QToolBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QToolButton</Title>
+<Para>
+<Literal>QToolButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QToolTip</Title>
+<Para>
+<Literal>QToolTip</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QToolTipGroup</Title>
+<Para>
+<Literal>QToolTipGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QTranslator (Qt v2+)</Title>
+<Para>
+<Literal>QTranslator</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTranslatorMessage (Qt v2.2+)</Title>
+<Para>
+<Literal>QTranslatorMessage</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QUrl (Qt v2.1+)</Title>
+<Para>
+<Literal>QUrl</Literal> is fully implemented, including the
+<Literal>QString()</Literal>, <Literal>==</Literal> and <Literal>!=</Literal>
+operators.
+</Para>
+</Sect2>
+<Sect2><Title>QUrlInfo (Qt v2.1+)</Title>
+<Para>
+<Literal>QUrlInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QUrlOperator (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>isDir</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>bool</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+<Sect2><Title>QUuid (Qt v3.0+)</Title>
+<Para>
+<Literal>QUuid</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QValidator</Title>
+<FuncSynopsis>
+ <FuncDef>virtual State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDoubleValidator</Title>
+<FuncSynopsis>
+ <FuncDef>State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIntValidator</Title>
+<FuncSynopsis>
+ <FuncDef>State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QRegExpValidator (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+<Sect2><Title>QValueList&lt;type&gt; (Qt v2+)</Title>
+<Para>
+Types based on the <Literal>QValueList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+<Sect2><Title>QVariant (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const char *<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QBitArray &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QValueList&lt;QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QMap&lt;QString,QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QBitArray &amp;<Function>asBitArray</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool &amp;<Function>asBool</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double &amp;<Function>asDouble</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int &amp;<Function>asInt</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueList&lt;QVariant&gt; &amp;<Function>asList</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMap&lt;QString,QVariant&gt; &amp;<Function>asMap</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint &amp;<Function>asUInt</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapFind</Function> const</FuncDef>
+ <ParamDef>const QString &<Parameter>key</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QBitArray <Function>toBitArray</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QValueList&lt;QVariant&gt;<Function>toList</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QMap&lt;QString,QVariant&gt;<Function>toMap</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QVBox (Qt v2+)</Title>
+<Para>
+<Literal>QVBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QVButtonGroup (Qt v2+)</Title>
+<Para>
+<Literal>QVButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QVGroupBox (Qt v2+)</Title>
+<Para>
+<Literal>QVGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWaitCondition (Qt v2.2+)</Title>
+<Para>
+<Literal>QWaitCondition</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWhatsThis</Title>
+<Para>
+<Literal>QWhatsThis</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWidget</Title>
+<FuncSynopsis>
+ <FuncDef>QWExtra *<Function>extraData</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QFocusData *<Function>focusData</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>lower</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>lowerW</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>raise</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>raiseW</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QWidgetList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QWidgetList</Literal> is the
+return type of a function or the type of an argument, a Python list of
+instances is used instead.
+</Para>
+</Sect2>
+<Sect2><Title>QWidgetStack</Title>
+<Para>
+<Literal>QWidgetStack</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWindow</Title>
+<Para>
+<Literal>QWindow</Literal> is fully implemented (Qt v1.x).
+</Para>
+</Sect2>
+<Sect2><Title>QWindowsStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+<Sect2><Title>QWindowsXPStyle (Qt v3.0.1+, Windows)</Title>
+<Para>
+<Literal>QWindowsXPStyle</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWizard (Qt v2+)</Title>
+<Para>
+<Literal>QWizard</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QWMatrix</Title>
+<Para>
+The Python <Literal>==</Literal>, <Literal>!=</Literal> and
+<Literal>*=</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QWMatrix <Function>invert</Function> const</FuncDef>
+ <ParamDef>bool *<Parameter>invertible</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>QWMatrix</Literal>
+result and the <Literal>invertible</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>float <Parameter>x</Parameter></ParamDef>
+ <ParamDef>float <Parameter>y</Parameter></ParamDef>
+ <ParamDef>float *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>float *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values. (Qt v1.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>double <Parameter>x</Parameter></ParamDef>
+ <ParamDef>double <Parameter>y</Parameter></ParamDef>
+ <ParamDef>double *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>double *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values. (Qt v2+)
+</Para>
+</Sect2>
+<Sect2><Title>QWorkspace (Qt v2.1+)</Title>
+<Para>
+<Literal>QWorkspace</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtaxcontainer</Literal> Module Reference</Title>
+<Sect2><Title>QAxBase (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxObject</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>queryInterface</Function></FuncDef>
+ <ParamDef>const QUuid &amp;<Parameter>uuid</Parameter></ParamDef>
+ <ParamDef>void **<Parameter>iface</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>PropertyBag <Function>propertyBag</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setPropertyBag</Function></FuncDef>
+ <ParamDef>const PropertyBag &amp;<Parameter>bag</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>unsigned long <Function>registerWeakActiveObject</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>guid</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a utility method provided by PyQt to make it easier to use
+Mark Hammond's <Literal>win32com</Literal> module to manipulate objects
+created by the <Literal>qtaxcontainer</Literal> module.
+</Para>
+<Para>
+The <Literal>RegisterActiveObject()</Literal> COM function is called to
+register the <Literal>QAxBase</Literal> instance as a weak object with the
+<Literal>guid</Literal> GUID. The revoke handle is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>revokeActiveObject</Function></FuncDef>
+ <ParamDef>unsigned long <Parameter>rhandle</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a wrapper around the <Literal>RevokeActiveObject()</Literal> COM
+function and is called to revoke the object registered using
+<Literal>registerWeakActiveObject()</Literal>. <Literal>rhandle</Literal> is
+the revoke handle returned by <Literal>registerWeakActiveObject()</Literal>.
+</Para>
+</Sect2>
+<Sect2><Title>QAxObject (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxObject</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter></ParamDef>
+ <ParamDef>QObject *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QAxWidget (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxWidget</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtcanvas</Literal> Module Reference</Title>
+<Sect2><Title>QCanvas (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvas</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasEllipse (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasEllipse</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasItemList (Qt v2.2+)</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QCanvasItemList</Literal> is
+the return type of a function or the type of an argument, a Python list of
+<Literal>QCanvasItem</Literal> instances is used instead.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasLine (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasLine</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPixmap (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPixmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPixmapArray (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPixmapArray</Function></FuncDef>
+ <ParamDef>QList&lt;QPixmap&gt; <Parameter>pixmaps</Parameter></ParamDef>
+ <ParamDef>QList&lt;QPoint&gt; <Parameter>hotspots</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>pixmaps</Literal> argument is a Python list of QPixmap instances,
+and the <Literal>hotspots</Literal> argument is a Python list of QPoint
+instances. (Qt v2.2.0 - Qt v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QPixmapArray</Function></FuncDef>
+ <ParamDef>QValueList&lt;QPixmap&gt; <Parameter>pixmaps</Parameter></ParamDef>
+ <ParamDef>QPointArray <Parameter>hotspots</Parameter> = QPointArray()</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>pixmaps</Literal> argument is a Python list of QPixmap instances.
+(Qt v3+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPolygon (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPolygon</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPolygonalItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPolygonalItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasRectangle (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasRectangle</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasSpline (Qt v3.0+)</Title>
+<Para>
+<Literal>QCanvasSpline</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasSprite (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasSprite</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasText (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasText</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasView (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasView</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtext</Literal> Module Reference</Title>
+
+<Sect2><Title>QextScintilla</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getCursorPosition</Function></FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>line</Literal> and <Literal>index</Literal> pointers.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>lineFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>lineTo</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexTo</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>lineFrom</Literal>, <Literal>indexFrom</Literal>,
+<Literal>lineTo</Literal> and <Literal>indexTo</Literal> pointers.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaAPIs</Title>
+<Para>
+<Literal>QextScintillaAPIs</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaBase</Title>
+<Para>
+<Literal>QextScintillaBase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommand</Title>
+<Para>
+<Literal>QextScintillaCommand</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommandSet</Title>
+<Para>
+<Literal>QextScintillaCommandSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaDocument</Title>
+<Para>
+<Literal>QextScintillaDocument</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexer</Title>
+<Para>
+<Literal>QextScintillaLexer</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBash (QScintilla v1.4+)</Title>
+<Para>
+<Literal>QextScintillaLexerBash</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBatch (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerBatch</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCPP</Title>
+<Para>
+<Literal>QextScintillaLexerCPP</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSharp</Title>
+<Para>
+<Literal>QextScintillaLexerCSharp</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSS (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerCSS</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerDiff (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerDiff</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerHTML (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerHTML</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerIDL</Title>
+<Para>
+<Literal>QextScintillaLexerIDL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJava</Title>
+<Para>
+<Literal>QextScintillaLexerJava</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJavaScript</Title>
+<Para>
+<Literal>QextScintillaLexerJavaScript</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerLua (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerLua</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerMakefile (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerMakefile</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPerl</Title>
+<Para>
+<Literal>QextScintillaLexerPerl</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPOV (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerPOV</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerProperties (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerProperties</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPython</Title>
+<Para>
+<Literal>QextScintillaLexerPython</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerRuby (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerRuby</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerSQL (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerSQL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerTeX (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerTeX</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaMacro</Title>
+<Para>
+<Literal>QextScintillaMacro</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaPrinter</Title>
+<Para>
+<Literal>QextScintillaPrinter</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtgl</Literal> Module Reference</Title>
+<Sect2><Title>QGL</Title>
+<Para>
+<Literal>QGL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLContext</Title>
+<Para>
+<Literal>QGLContext</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLFormat</Title>
+<Para>
+<Literal>QGLFormat</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLWidget</Title>
+<Para>
+<Literal>QGLWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QGLColormap (Qt v3.0+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>setEntries</Function></FuncDef>
+ <ParamDef>int <Parameter>count</Parameter></ParamDef>
+ <ParamDef>const QRgb *<Parameter>colors</Parameter></ParamDef>
+ <ParamDef>int <Parameter>base</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtnetwork</Literal> Module Reference</Title>
+<Sect2><Title>QDns (Qt v2.2+)</Title>
+<Para>
+<Literal>QDns</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QFtp (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+</Sect2>
+<Sect2><Title>QHostAddress (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QHostAddress</Function></FuncDef>
+ <ParamDef>Q_UINT8 *<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QHostAddress</Function></FuncDef>
+ <ParamDef>const Q_IPV6ADDR &amp;<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setAddress</Function></FuncDef>
+ <ParamDef>Q_UINT8 *<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_IPV6ADDR <Function>toIPv6Address</Function> const</FuncDef>
+ <ParamDef><Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QHttp (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpRequestHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpRequestHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpResponseHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpResponseHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QLocalFs (Qt v2.1+)</Title>
+<Para>
+<Literal>QLocalFs</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QServerSocket (Qt v2.2+)</Title>
+<Para>
+<Literal>QServerSocket</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSocket (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>Py_None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readLine</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>Py_None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+<Sect2><Title>QSocketDevice (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtpe</Literal> Module Reference</Title>
+
+<Sect2><Title>QPEApplication</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int& <Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>Type <Parameter>type</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnk</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnkSet</Title>
+<Para>
+<Literal>AppLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Config</Title>
+<Para>
+<Literal>Config</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DateFormat</Title>
+<Para>
+<Literal>DateFormat</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnk</Title>
+<FuncSynopsis>
+ <FuncDef>QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnkSet</Title>
+<Para>
+<Literal>DocLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileManager</Title>
+<Para>
+<Literal>FileManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelector</Title>
+<Para>
+<Literal>FileSelector</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelectorItem</Title>
+<Para>
+<Literal>FileSelectorItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FontDatabase</Title>
+<Para>
+<Literal>FontDatabase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Global</Title>
+<FuncSynopsis>
+ <FuncDef>static void <Function>setBuiltinCommands</Function></FuncDef>
+ <ParamDef>Command *</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>MenuButton</Title>
+<Para>
+<Literal>MenuButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCopEnvelope</Title>
+<Para>
+<Literal>QCopEnvelope</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDawg</Title>
+<Para>
+<Literal>QDawg</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEMenuBar</Title>
+<Para>
+<Literal>QPEMenuBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEToolBar</Title>
+<Para>
+<Literal>QPEToolBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Resource</Title>
+<Para>
+<Literal>Resource</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+</Sect1>
+<Sect1><Title><Literal>qtsql</Literal> Module Reference</Title>
+<Sect2><Title>QDataBrowser (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delOnCursor</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QDataTable (Qt v3+)</Title>
+<Para>
+<Literal>QDataTable</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QDataView (Qt v3+)</Title>
+<Para>
+<Literal>QDataView</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QEditorFactory (Qt v3+)</Title>
+<Para>
+<Literal>QEditorFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSql (Qt v3+)</Title>
+<Para>
+<Literal>QSql</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlCursor (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>del</Function></FuncDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>del</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>filter</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlDatabase (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>QSqlQuery <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter> = QString::null</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execStatement</Literal> in Python.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlDriver (Qt v3+)</Title>
+<Para>
+<Literal>QSqlDriver</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlEditorFactory (Qt v3+)</Title>
+<Para>
+<Literal>QSqlEditorFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlError (Qt v3+)</Title>
+<Para>
+<Literal>QSqlError</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlField (Qt v3+)</Title>
+<Para>
+<Literal>QSqlField</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSqlFieldInfo (Qt v3+)</Title>
+<Para>
+<Literal>QSqlFieldInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlForm (Qt v3+)</Title>
+<Para>
+<Literal>QSqlForm</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlIndex (Qt v3+)</Title>
+<Para>
+<Literal>QSqlIndex</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlPropertyMap (Qt v3+)</Title>
+<Para>
+<Literal>QSqlPropertyMap</Literal> is fully implemented. However, because PyQt
+does not allow new properties to be defined, it is not possible to implement
+custom editor widgets in Python and add them to a property map. These will
+simply be ignored.
+</Para>
+
+<Para>
+This problem may be addressed in a future release of PyQt.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlQuery (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>QMap&lt;QString,QVariant&gt; <Function>boundValues</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3.2.0+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python. (Qt v3.1+)
+</Para>
+</Sect2>
+<Sect2><Title>QSqlRecord (Qt v3+)</Title>
+<Para>
+<Literal>QSqlRecord</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSqlRecordInfo (Qt v3+)</Title>
+<Para>
+<Literal>QSqlRecordInfo</Literal> is implemented as a Python list of
+<Literal>QSqlFieldInfo</Literal> instances.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlResult (Qt v3+)</Title>
+<Para>
+<Literal>QSqlResult</Literal> is fully implemented.
+</Para>
+</Sect2>
+<Sect2><Title>QSqlSelectCursor (Qt v3.2.0+)</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>del</Function></FuncDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qttable</Literal> Module Reference</Title>
+<Sect2><Title>QTable (Qt v2.2+)</Title>
+<Para>
+<Literal>QTable</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTableItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCheckTableItem (Qt v3+)</Title>
+<Para>
+<Literal>QCheckTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QComboTableItem (Qt v3+)</Title>
+<Para>
+<Literal>QComboTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTableSelection (Qt v2.2+)</Title>
+<Para>
+<Literal>QTableSelection</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtui</Literal> Module Reference</Title>
+<Sect2><Title>QWidgetFactory (Qt v3+)</Title>
+<Para>
+<Literal>QWidgetFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+<Sect1><Title><Literal>qtxml</Literal> Module Reference</Title>
+<Sect2><Title>QDomImplementation (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomImplementation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNode (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNode</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNodeList (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNodeList</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocument (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QCString &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QByteArray &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>text</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QIODevice *<Parameter>dev</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>dev</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QCString &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QByteArray &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>text</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QIODevice *<Parameter>dev</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>dev</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>QXmlInputSource *<Parameter>source</Parameter></ParamDef>
+ <ParamDef>QXmlReader *<Parameter>reader</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3.2.0+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocumentFragment (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomDocumentFragment</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocumentType (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomDocumentType</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNamedNodeMap (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNamedNodeMap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomCharacterData (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomCharacterData</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomAttr (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomAttr</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomElement (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomElement</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomText (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomText</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomComment (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomComment</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomCDATASection (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomCDATASection</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNotation (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNotation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomEntity (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomEntity</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomEntityReference (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomEntityReference</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomProcessingInstruction (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomProcessingInstruction</Literal> is fully implemented.
+</Para>
+</Sect2>
+</Sect1>
+</Article>
diff --git a/python/pyqt/doc/qtdocs.sip b/python/pyqt/doc/qtdocs.sip
new file mode 100644
index 00000000..070a4fb4
--- /dev/null
+++ b/python/pyqt/doc/qtdocs.sip
@@ -0,0 +1,1920 @@
+// This is the SIP file for organising the PyQt documentation.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module Dummy
+
+
+%Include qt/versions.sip
+
+
+%Doc
+<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
+<Article>
+<ArtHeader>
+ <Title>Python Bindings for Qt (3.17.2)</Title>
+ <Author>
+ <FirstName>Phil</FirstName>
+ <Surname>Thompson</Surname>
+ </Author>
+ <Abstract>
+ <Para>
+ This document describes a set of Python bindings for the Qt widget set.
+ Contact the author at <Email>phil@riverbankcomputing.co.uk</Email>.
+ </Para>
+ </Abstract>
+</ArtHeader>
+
+
+<Sect1><Title>Introduction</Title>
+<Para>
+PyQt is a set of Python bindings for the Qt toolkit and available for all
+platforms supported by Qt, including Windows, Linux, UNIX, MacOS/X and embedded
+systems such as the Sharp Zaurus and the Compaq iPAQ. They have been tested
+against Qt versions 1.43 to 3.3.6, Qt Non-commercial, Qtopia 1.5.0, and Python
+versions 1.5 to 2.4.2. Qt/Embedded v3 is not supported. Qt v4 is supported
+by PyQt v4.
+</Para>
+
+<Para>
+PyQt is available under the GPL license for use with the GPL version of Qt, a
+a commercial license for use with the commercial version of Qt, a
+non-commercial license for use with the non-commercial version of Qt v2, and an
+educational license for use with the educational version of Qt.
+</Para>
+
+<Para>
+There is also an evaluation version of PyQt for Windows. This must be used
+with the corresponding evaluation version of Qt.
+</Para>
+
+<Para>
+PyQt is built using SIP (a tool for generating Python extension modules for
+C++ class libraries). SIP v4.6 or later must be installed in order to build
+and run this version of PyQt.
+</Para>
+
+<Para>
+PyQt for MacOS/X requires Qt v3.1.0 or later and Python v2.3 or later.
+</Para>
+
+<Para>
+The bindings are implemented as a number of Python modules
+</Para>
+
+<ItemizedList>
+<ListItem>
+<Para>
+<Literal>qt</Literal> is the main module and contains the core classes and most
+user interface widgets.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtaxcontainer</Literal> contains a sub-set of the classes implemented
+in Qt's QAxContainer module, part of Qt's ActiveQt framework.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtcanvas</Literal> contains the classes implemented in Qt's Canvas
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtgl</Literal> contains the classes implemented in Qt's OpenGL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtnetwork</Literal> contains the classes implemented in Qt's Network
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtpe</Literal> contains the classes implemented in Qtopia (originally
+called the Qt Palmtop Environment). It is only supported with Qt/Embedded.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtsql</Literal> contains the classes implemented in Qt's SQL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qttable</Literal> contains the classes implemented in Qt's Table
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtui</Literal> contains the classes implemented in Qt's qui library.
+These allow GUIs to be created directly from Qt Designer's
+<Literal>.ui</Literal> files.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtxml</Literal> contains the classes implemented in Qt's XML module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtext</Literal> contains useful third-party classes that are not part
+of Qt. At the moment it contains bindings for QScintilla, the port to Qt of
+the Scintilla programmer's editor class.
+</Para>
+</ListItem>
+</ItemizedList>
+
+<Para>
+PyQt also includes the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> utilities which correspond to the Qt
+<Literal>uic</Literal> and <Literal>lupdate</Literal> utilities.
+<Literal>pyuic</Literal> converts the GUI designs created with Qt Designer to
+executable Python code. <Literal>pylupdate</Literal> scans Python code,
+extracts all strings that are candidates for internationalisation, and creates
+an XML file for use by Qt Linguist.
+</Para>
+
+<Sect2><Title>Changes</Title>
+<Para>
+The changes visible to the Python programmer in this release are as follows.
+</Para>
+<ItemizedList>
+
+<ListItem>
+<Para>
+This version requires SIP v4.4 (or later).
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+Concatenating Python strings and <Literal>QString</Literal>s is now supported.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> now supports the <Literal>*</Literal> and
+<Literal>*=</Literal> operators that behave as they do for Python strings.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> is more interoperable with Python string and unicode
+objects. For example they can be passed as arguments to
+<Literal>open()</Literal> and to most (but not all) string methods.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QPopupMenu</Literal> (and sub-classes) instances now transfer
+ownership of the menu to Python in the call to <Literal>exec_loop()</Literal>.
+This means the menu's resources are all released when the Python wrapper is
+garbage collected without needing to call
+<Literal>QObject.deleteLater()</Literal>.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QObject.sender()</Literal> now handles Python signals.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The missing <Literal>MacintoshVersion</Literal> enum has been added.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>PYQT_BUILD</Literal> has been removed.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The convention for converting between a C/C++ null pointer and Python's
+<Literal>None</Literal> object has now been universally applied. In previous
+versions a null pointer to, for example, a Qt list container would often be
+converted to an empty list rather than <Literal>None</Literal>.
+</Para>
+</ListItem>
+
+</ItemizedList>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Other PyQt Goodies</Title>
+<Sect2><Title>Using Qt Designer</Title>
+<Para>
+Qt Designer is a GPL'ed GUI design editor provided by Trolltech as part of Qt.
+It generates an XML description of a GUI design. Qt includes
+<Literal>uic</Literal> which generates C++ code from that XML.
+</Para>
+
+<Para>
+PyQt includes <Literal>pyuic</Literal> which generates Python code from the
+same XML. The Python code is self contained and can be executed immediately.
+</Para>
+
+<Para>
+It is sometimes useful to be able to include some specific Python code in the
+output generated by <Literal>pyuic</Literal>. For example, if you are using
+custom widgets, <Literal>pyuic</Literal> has no way of knowing the name of the
+Python module containing the widget and so cannot generate the required
+<Literal>import</Literal> statement. To help get around this,
+<Literal>pyuic</Literal> will extract any lines entered in the
+<Literal>Comment</Literal> field of Qt Designer's
+<Literal>Form Settings</Literal> dialog that begin with
+<Literal>Python:</Literal> and copies them to the generated output.
+</Para>
+
+<Para>
+Here's a simple example showing the contents of the <Literal>Comment</Literal>
+field.
+</Para>
+
+<ProgramListing>
+This comment will be ignored by pyuic.
+Python:
+Python:# Import our custom widget.
+Python:from foo import bar
+</ProgramListing>
+
+<Para>
+Here's the corresponding output from <Literal>pyuic</Literal>.
+</Para>
+
+<ProgramListing>
+from qt import *
+
+# Import our custom widget.
+from foo import bar
+</ProgramListing>
+
+<Para>
+Thanks to Christian Bird, <Literal>pyuic</Literal> will extract Python code
+entered using Qt Designer to implement slots. In Qt Designer, when you need to
+edit a slot and the source editor appears, enter Python code between the curly
+braces. Don't worry about the correct starting indent level, each line is
+prepended with a correct indentation.
+</Para>
+
+<Para>
+Make sure that the <Literal>ui.h</Literal> file is in the same directory as the
+<Literal>.ui</Literal> file when using <Literal>pyuic</Literal>. The
+<Literal>.ui</Literal> file implies the name of the <Literal>.ui.h</Literal>
+file so there is no need to specify it on the command line.
+</Para>
+
+<Para>
+Here's an example of a simple slot.
+</Para>
+
+<ProgramListing>
+void DebMainWindowFrm::browsePushButtonClicked()
+{
+if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+}
+</ProgramListing>
+
+<Para>
+Here is the resulting code when <Literal>pyuic</Literal> is run.
+</Para>
+
+<ProgramListing>
+class DebMainWindowFrm(QMainWindow):
+ ...stuff...
+ def browsePushButtonClicked(self):
+ if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+</ProgramListing>
+
+<Para>
+Note that indenting is as normal and that <Literal>self</Literal> and all other
+parameters passed to the slot are available.
+</Para>
+
+<Para>
+If you use this, you will need to turn off all of the fancy options for the C++
+editor in Designer as it tries to force C++ syntax and that's naturally
+annoying when trying to code in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>Using Qt Linguist</Title>
+<Para>
+Qt includes the <Literal>lupdate</Literal> program which parses C++ source
+files converting calls to the <Literal>QT_TR_NOOP()</Literal> and
+<Literal>QT_TRANSLATE_NOOP()</Literal> macros to <Literal>.ts</Literal>
+language source files. The <Literal>lrelease</Literal> program is then used to
+generate <Literal>.qm</Literal> binary language files that are distributed with
+your application.
+</Para>
+
+<Para>
+Thanks to Detlev Offenbach, PyQt includes the <Literal>pylupdate</Literal>
+program. This generates the same <Literal>.ts</Literal> language source files
+from your PyQt source files.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Deploying Commercial PyQt Applications</Title>
+<Para>
+When deploying commercial PyQt applications it is necessary to discourage users
+from accessing the underlying PyQt modules for themselves. A user that used
+the modules shipped with your application to develop new applications would
+themselves be considered a developer and would need their own commercial Qt and
+PyQt licenses.
+</Para>
+
+<Para>
+One solution to this problem is the
+<ULink url="http://www.riverbankcomputing.co.uk/vendorid/">VendorID</ULink>
+package. This allows you to build Python extension modules that can only be
+imported by a digitally signed custom interpreter. The package enables you to
+create such an interpreter with your application embedded within it. The
+result is an interpreter that can only run your application, and PyQt modules
+that can only be imported by that interpreter. You can use the package to
+similarly restrict access to any extension module.
+</Para>
+
+<Para>
+In order to build PyQt with support for the VendorID package, pass the
+<Literal>-i</Literal> command line flag to <Literal>configure.py</Literal>.
+</Para>
+</Sect1>
+
+<Sect1><Title><Literal>pyqtconfig</Literal> and Build System Support</Title>
+<Para>
+The SIP build system (ie. the <Literal>sipconfig</Literal> module) is described
+in the SIP documentation. PyQt includes the <Literal>pyqtconfig</Literal>
+module that can be used by configuration scripts of other bindings that are
+built on top of PyQt.
+</Para>
+
+<Para>
+The <Literal>pyqtconfig</Literal> module contains the following classes:
+</Para>
+
+<VariableList>
+<VarListEntry>
+<Term><Literal>Configuration(sipconfig.Configuration)</Literal></Term>
+<ListItem>
+<Para>
+This class encapsulates additional configuration values, specific to PyQt, that
+can be accessed as instance variables.
+</Para>
+
+<Para>
+The following configuration values are provided (in addition to those provided
+by the <Literal>sipconfig.Configuration</Literal> class):
+</Para>
+<VariableList>
+
+<VarListEntry>
+<Term><Literal>pyqt_bin_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> executables.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_config_args</Literal></Term>
+<ListItem>
+<Para>
+The command line passed to <Literal>configure.py</Literal> when PyQt was
+configured.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_mod_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the PyQt modules.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_modules</Literal></Term>
+<ListItem>
+<Para>
+A string containing the names of the PyQt modules that were installed.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qt_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qt</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qt</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtaxcontainer_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtaxcontainer</Literal> module and which should be added to those
+needed by any module that imports the <Literal>qtaxcontainer</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtcanvas_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtcanvas</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtcanvas</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtext_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtext</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtext</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtgl_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtgl</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtgl</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtnetwork_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtnetwork</Literal> module and which should be added to those needed
+by any module that imports the <Literal>qtnetwork</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtsql_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtsql</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtsql</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qttable_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qttable</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qttable</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtui_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtui</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtui</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtxml_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtxml</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtxml</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_sip_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the base directory where the <Literal>.sip</Literal> files for each
+of the PyQt modules is installed. A sub-directory exists with the same name as
+the module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a 3 part hexadecimal number (eg. v3.10 is represented as
+<Literal>0x030a00</Literal>).
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version_str</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a string. For development snapshots it will start with
+<Literal>snapshot-</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtModuleMakefile(sipconfig.SIPModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qt</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtAxContainerModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtaxcontainer</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtCanvasModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtcanvas</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtExtModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtext</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtGLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtgl</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtNetworkModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtnetwork</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtTableModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qttable</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtSQLModuleMakefile(QtTableModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtsql</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtUIModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtui</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtXMLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtxml</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title>Things to be Aware Of</Title>
+<Sect2><Title>super and Wrapped Classes</Title>
+<Para>
+Internally PyQt implements a lazy technique for attribute lookup where
+attributes are only placed in type and instance dictionaries when they are
+first referenced. This technique is needed to reduce the time taken to import
+large modules such as PyQt.
+</Para>
+
+<Para>
+In most circumstances this technique is transparent to an application. The
+exception is when <Literal>super</Literal> is used with a PyQt class. The way
+that <Literal>super</Literal> is currently implemented means that the lazy
+lookup is bypassed resulting in <Literal>AttributeError</Literal> exceptions
+unless the attribute has been previously referenced.
+</Para>
+
+<Para>
+Note that this restriction applies to any class wrapped by SIP and not just
+PyQt.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Python Strings, Qt Strings and Unicode</Title>
+<Para>
+Unicode support was added to Qt in v2.0 and to Python in v1.6. In Qt, Unicode
+support is implemented using the <Literal>QString</Literal> class. It is
+important to understand that <Literal>QString</Literal>s, Python string objects
+and Python Unicode objects are all different but conversions between them are
+automatic in almost all cases and easy to achieve manually when needed.
+</Para>
+
+<Para>
+Whenever PyQt expects a <Literal>QString</Literal> as a function argument, a
+Python string object or a Python Unicode object can be provided instead, and
+PyQt will do the necessary conversion automatically.
+</Para>
+
+<Para>
+You may also manually convert Python string and Unicode objects to
+<Literal>QString</Literal>s by using the <Literal>QString</Literal> constructor
+as demonstrated in the following code fragment.
+</Para>
+
+<ProgramListing>
+qs1 = QString('Converted Python string object')
+qs2 = QString(u'Converted Python Unicode object')
+</ProgramListing>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python string object use
+the Python <Literal>str()</Literal> function. Applying
+<Literal>str()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python string object.
+</Para>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python Unicode object use
+the Python <Literal>unicode()</Literal> function. Applying
+<Literal>unicode()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python Unicode object.
+</Para>
+</Sect2>
+
+<Sect2><Title>Access to Protected Member Functions</Title>
+<Para>
+When an instance of a C++ class is not created from Python it is not possible
+to access the protected member functions, or emit the signals, of that
+instance. Attempts to do so will raise a Python exception. Also, any Python
+methods corresponding to the instance's virtual member functions will never be
+called.
+</Para>
+</Sect2>
+
+<Sect2><Title><Literal>None</Literal> and <Literal>NULL</Literal></Title>
+<Para>
+Throughout the bindings, the <Literal>None</Literal> value can be specified
+wherever <Literal>NULL</Literal> is acceptable to the underlying C++ code.
+</Para>
+
+<Para>
+Equally, <Literal>NULL</Literal> is converted to <Literal>None</Literal>
+whenever it is returned by the underlying C++ code.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for C++ <Literal>void *</Literal> Data Types</Title>
+<Para>
+PyQt represents <Literal>void *</Literal> values as objects of type
+<Literal>sip.voidptr</Literal>. Such values are often used to pass the
+addresses of external objects between different Python modules. To make this
+easier, a Python integer (or anything that Python can convert to an integer)
+can be used whenever a <Literal>sip.voidptr</Literal> is expected.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python integer by using
+the <Literal>int()</Literal> builtin function.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python string by using
+its <Literal>asstring()</Literal> method. The <Literal>asstring()</Literal>
+method takes an integer argument which is the length of the data in bytes.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for Threads</Title>
+<Para>
+PyQt implements the full set of Qt's thread classes. Python, of course, also
+has its own thread extension modules. If you are using SIP v4 (or later) and
+Python v2.3.5 (or later) then PyQt does not impose any additional restrictions.
+(Read the relevant part of the Qt documentation to understand the restrictions
+imposed by the Qt API.)
+</Para>
+<Para>
+If you are using earlier versions of either SIP or Python then it is possible
+to use either of the APIs so long as you follow some simple rules.
+</Para>
+<ItemizedList>
+<ListItem>
+<Para>
+If you use the Qt API then the very first <Literal>import</Literal> of one of
+the PyQt modules must be done from the main thread.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you use the Python API then all calls to PyQt (including any
+<Literal>import</Literal>s) must be done from one thread only. Therefore, if
+you want to make calls to PyQt from several threads then you must use the Qt
+API.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you want to use both APIs in the same application then all calls to PyQt
+must be done from threads created using the Qt API.
+</Para>
+</ListItem>
+</ItemizedList>
+<Para>
+The above comments actually apply to any SIP generated module, not just PyQt.
+</Para>
+</Sect2>
+
+<Sect2><Title>Garbage Collection</Title>
+<Para>
+C++ does not garbage collect unreferenced class instances, whereas Python does.
+In the following C++ fragment both colours exist even though the first can no
+longer be referenced from within the program:
+</Para>
+
+<ProgramListing>
+c = new QColor();
+c = new QColor();
+</ProgramListing>
+
+<Para>
+In the corresponding Python fragment, the first colour is destroyed when
+the second is assigned to <Literal>c</Literal>:
+</Para>
+
+<ProgramListing>
+c = QColor()
+c = QColor()
+</ProgramListing>
+
+<Para>
+In Python, each colour must be assigned to different names. Typically this
+is done within class definitions, so the code fragment would be something like:
+</Para>
+
+<ProgramListing>
+self.c1 = QColor()
+self.c2 = QColor()
+</ProgramListing>
+
+<Para>
+Sometimes a Qt class instance will maintain a pointer to another instance and
+will eventually call the destructor of that second instance. The most common
+example is that a <Literal>QObject</Literal> (and any of its sub-classes) keeps
+pointers to its children and will automatically call their destructors. In
+these cases, the corresponding Python object will also keep a reference to the
+corresponding child objects.
+</Para>
+
+<Para>
+So, in the following Python fragment, the first <Literal>QLabel</Literal> is
+not destroyed when the second is assigned to <Literal>l</Literal> because the
+parent <Literal>QWidget</Literal> still has a reference to it.
+</Para>
+
+<ProgramListing>
+p = QWidget()
+l = QLabel('First label',p)
+l = QLabel('Second label',p)
+</ProgramListing>
+</Sect2>
+
+<Sect2><Title>C++ Variables</Title>
+<Para>
+Access to C++ variables is supported. They are accessed as Python instance
+variables. For example:
+</Para>
+
+<ProgramListing>
+tab = QTab()
+tab.label = "First Tab"
+tab.r = QRect(10,10,75,30)
+</ProgramListing>
+
+<Para>
+Global variables and static class variables are effectively read-only. They
+can be assigned to, but the underlying C++ variable will not be changed. This
+may change in the future.
+</Para>
+
+<Para>
+Access to protected C++ class variables is not supported. This may change in
+the future.
+</Para>
+</Sect2>
+
+<Sect2><Title>Multiple Inheritance</Title>
+<Para>
+It is not possible to define a new Python class that sub-classes from more than
+one Qt class.
+</Para>
+</Sect2>
+
+<Sect2><Title>i18n Support</Title>
+<Para>
+Qt implements i18n support through the Qt Linguist application, the
+<Literal>QTranslator</Literal> class, and the
+<Literal>QApplication::translate()</Literal>, <Literal>QObject::tr()</Literal>
+and <Literal>QObject::trUtf8()</Literal> methods. Usually the
+<Literal>tr()</Literal> method is used to obtain the correct translation of a
+message. The translation process uses a message context to allow the same
+message to be translated differently. <Literal>tr()</Literal> is actually
+generated by <Literal>moc</Literal> and uses the hardcoded class name as the
+context. On the other hand, <Literal>QApplication::translate()</Literal>
+allows to context to be explicitly stated.
+</Para>
+
+<Para>
+Unfortunately, because of the way Qt implents <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) it is not possible for PyQt to exactly reproduce
+its behavour. The PyQt implementation of <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) uses the class name of the instance as the
+context. The key difference, and the source of potential problems, is that the
+context is determined dynamically in PyQt, but is hardcoded in Qt. In other
+words, the context of a translation may change depending on an instance's class
+hierarchy.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return self.tr("Hello")
+
+class B(A):
+ def __init__(self):
+ A.__init__(self)
+
+a = A()
+a.hello()
+
+b = B()
+b.hello()
+</ProgramListing>
+
+<Para>
+In the above the message is translated by <Literal>a.hello()</Literal> using a
+context of <Literal>A</Literal>, and by <Literal>b.hello()</Literal> using a
+context of <Literal>B</Literal>. In the equivalent C++ version the context
+would be <Literal>A</Literal> in both cases.
+</Para>
+
+<Para>
+The PyQt behaviour is unsatisfactory and may be changed in the future. It is
+recommended that <Literal>QApplication.translate()</Literal> be used in
+preference to <Literal>tr()</Literal> (and <Literal>trUtf8()</Literal>). This
+is guaranteed to work with current and future versions of PyQt and makes it
+much easier to share message files between Python and C++ code. Below is the
+alternative implementation of <Literal>A</Literal> that uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return qApp.translate("A","Hello")
+</ProgramListing>
+
+<Para>
+Note that the code generated by <Literal>pyuic</Literal> uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Signal and Slot Support</Title>
+<Para>
+A signal may be either a Qt signal (specified using
+<Literal>SIGNAL()</Literal>) or a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>).
+</Para>
+
+<Para>
+A slot can be either a Python callable object, a Qt signal (specified using
+<Literal>SIGNAL()</Literal>), a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>), or a Qt slot (specified using
+<Literal>SLOT()</Literal>).
+</Para>
+
+<Para>
+You connect signals to slots (and other signals) as you would from C++. For
+example:
+</Para>
+
+<ProgramListing>
+QObject.connect(a,SIGNAL("QtSig()"),pyFunction)
+QObject.connect(a,SIGNAL("QtSig()"),pyClass.pyMethod)
+QObject.connect(a,SIGNAL("QtSig()"),PYSIGNAL("PySig"))
+QObject.connect(a,SIGNAL("QtSig()"),SLOT("QtSlot()"))
+QObject.connect(a,PYSIGNAL("PySig"),pyFunction)
+QObject.connect(a,PYSIGNAL("PySig"),pyClass.pyMethod)
+QObject.connect(a,PYSIGNAL("PySig"),SIGNAL("QtSig()"))
+QObject.connect(a,PYSIGNAL("PySig"),SLOT("QtSlot()"))
+</ProgramListing>
+
+<Para>
+When a slot is a Python method that corresponds to a Qt slot then a signal can
+be connected to either the Python method or the Qt slot. The following
+connections achieve the same effect.
+</Para>
+
+<ProgramListing>
+sbar = QScrollBar()
+lcd = QLCDNumber()
+
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd.display)
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))
+</ProgramListing>
+
+<Para>
+The difference is that the second connection is made at the C++ level and is
+more efficient.
+</Para>
+
+<Para>
+Disconnecting signals works in exactly the same way.
+</Para>
+
+<Para>
+Any instance of a class that is derived from the <Literal>QObject</Literal>
+class can emit a signal using the <Literal>emit</Literal> method. This takes
+two arguments. The first is the Python or Qt signal, the second is a Python
+tuple which are the arguments to the signal. For example:
+</Para>
+
+<ProgramListing>
+a.emit(SIGNAL("clicked()"),())
+a.emit(PYSIGNAL("pySig"),("Hello","World"))
+</ProgramListing>
+
+<Para>
+Note that when a slot is a Python callable object its reference count is not
+increased. This means that a class instance can be deleted without having to
+explicitly disconnect any signals connected to its methods. However, it also
+means that using lambda expressions as slots will not work unless you keep a
+separate reference to the expression to prevent it from being immediately
+garbage collected.
+</Para>
+
+<Para>
+Qt allows a signal to be connected to a slot that requires fewer arguments than
+the signal passes. The extra arguments are quietly discarded. Python slots
+can be used in the same way.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Static Member Functions</Title>
+<Para>
+Static member functions are implemented as Python class functions.
+For example the C++ static member function
+<Literal>QObject::connect()</Literal> is called from Python as
+<Literal>QObject.connect()</Literal> or <Literal>self.connect()</Literal> if
+called from a sub-class of <Literal>QObject</Literal>.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Enumerated Types</Title>
+<Para>
+Enumerated types are implemented as a set of simple variables corresponding to
+the separate enumerated values.
+</Para>
+
+<Para>
+When using an enumerated value the name of the class (or a sub-class) in which
+the enumerated type was defined in must be included. For example:
+</Para>
+
+<ProgramListing>
+Qt.SolidPattern
+QWidget.TabFocus
+QFrame.TabFocus
+</ProgramListing>
+</Sect1>
+
+
+<Sect1><Title>Module Reference Documentation</Title>
+<Para>
+The following sections should be used in conjunction with the normal class
+documentation - only the differences specific to the Python bindings are
+documented here.
+</Para>
+
+<Para>
+In these sections, <Emphasis>Not yet implemented</Emphasis>
+implies that the feature can be easily implemented if needed. <Emphasis>Not
+implemented</Emphasis> implies that the feature will not be implemented, either
+because it cannot be or because it is not appropriate.
+</Para>
+
+<Para>
+If a class is described as being <Emphasis>fully implemented</Emphasis> then
+all non-private member functions and all public class variables have been
+implemented.
+</Para>
+
+<Para>
+If an operator has been implemented then it is stated explicitly.
+</Para>
+
+<Para>
+Classes that are not mentioned have not yet been implemented.
+</Para>
+</Sect1>
+
+
+<Sect1><Title><Literal>qt</Literal> Module Reference</Title>
+%End
+
+%Include qt/qglobal.sip
+%Include qt/qwindowdefs.sip
+%Include qt/qnamespace.sip
+
+%Include qt/qaccel.sip
+%Include qt/qaction.sip
+%Include qt/qapplication.sip
+%Include qt/qassistantclient.sip
+%Include qt/qbitmap.sip
+%Include qt/qbrush.sip
+%Include qt/qbutton.sip
+%Include qt/qbuttongroup.sip
+%Include qt/qbytearray.sip
+%Include qt/qcdestyle.sip
+%Include qt/qcheckbox.sip
+%Include qt/qclipboard.sip
+%Include qt/qcolor.sip
+%Include qt/qcolordialog.sip
+%Include qt/qcolorgroup.sip
+%Include qt/qcombobox.sip
+%Include qt/qcommonstyle.sip
+%Include qt/qcstring.sip
+%Include qt/qcursor.sip
+%Include qt/qdatastream.sip
+%Include qt/qdatetime.sip
+%Include qt/qdatetimeedit.sip
+%Include qt/qdesktopwidget.sip
+%Include qt/qdial.sip
+%Include qt/qdialog.sip
+%Include qt/qdir.sip
+%Include qt/qdockarea.sip
+%Include qt/qdockwindow.sip
+%Include qt/qdragobject.sip
+%Include qt/qdrawutil.sip
+%Include qt/qdropsite.sip
+%Include qt/qerrormessage.sip
+%Include qt/qevent.sip
+%Include qt/qeventloop.sip
+%Include qt/qfile.sip
+%Include qt/qfiledialog.sip
+%Include qt/qfileinfo.sip
+%Include qt/qfont.sip
+%Include qt/qfontdatabase.sip
+%Include qt/qfontdialog.sip
+%Include qt/qfontinfo.sip
+%Include qt/qfontmetrics.sip
+%Include qt/qframe.sip
+%Include qt/qgmanager.sip
+%Include qt/qgrid.sip
+%Include qt/qgridview.sip
+%Include qt/qgroupbox.sip
+%Include qt/qhbox.sip
+%Include qt/qhbuttongroup.sip
+%Include qt/qheader.sip
+%Include qt/qhgroupbox.sip
+%Include qt/qiconset.sip
+%Include qt/qiconview.sip
+%Include qt/qimage.sip
+%Include qt/qinputdialog.sip
+%Include qt/qinterlacestyle.sip
+%Include qt/qiodevice.sip
+%Include qt/qkeycode.sip
+%Include qt/qkeysequence.sip
+%Include qt/qlabel.sip
+%Include qt/qlayout.sip
+%Include qt/qlcdnumber.sip
+%Include qt/qlibrary.sip
+%Include qt/qlineedit.sip
+%Include qt/qlist.sip
+%Include qt/qlistbox.sip
+%Include qt/qlistview.sip
+%Include qt/qlocale.sip
+%Include qt/qmainwindow.sip
+%Include qt/qmemarray.sip
+%Include qt/qmenubar.sip
+%Include qt/qmenudata.sip
+%Include qt/qmessagebox.sip
+%Include qt/qmetaobject.sip
+%Include qt/qmime.sip
+%Include qt/qmotifplusstyle.sip
+%Include qt/qmotifstyle.sip
+%Include qt/qmovie.sip
+%Include qt/qmultilinedit.sip
+%Include qt/qmutex.sip
+%Include qt/qnetworkprotocol.sip
+%Include qt/qobject.sip
+%Include qt/qobjectcleanuphandler.sip
+%Include qt/qobjectlist.sip
+%Include qt/qpaintdevicemetrics.sip
+%Include qt/qpaintdevice.sip
+%Include qt/qpainter.sip
+%Include qt/qpalette.sip
+%Include qt/qpixmap.sip
+%Include qt/qpixmapcache.sip
+%Include qt/qpair.sip
+%Include qt/qpen.sip
+%Include qt/qpicture.sip
+%Include qt/qplatinumstyle.sip
+%Include qt/qpoint.sip
+%Include qt/qpointarray.sip
+%Include qt/qpopupmenu.sip
+%Include qt/qprintdialog.sip
+%Include qt/qprinter.sip
+%Include qt/qprocess.sip
+%Include qt/qprogressbar.sip
+%Include qt/qprogressdialog.sip
+%Include qt/qptrlist.sip
+%Include qt/qpushbutton.sip
+%Include qt/qradiobutton.sip
+%Include qt/qrangecontrol.sip
+%Include qt/qrect.sip
+%Include qt/qregexp.sip
+%Include qt/qregion.sip
+%Include qt/qscrollbar.sip
+%Include qt/qscrollview.sip
+%Include qt/qsemaphore.sip
+%Include qt/qsemimodal.sip
+%Include qt/qsessionmanager.sip
+%Include qt/qsettings.sip
+%Include qt/qsgistyle.sip
+%Include qt/qsignalmapper.sip
+%Include qt/qsimplerichtext.sip
+%Include qt/qsize.sip
+%Include qt/qsizegrip.sip
+%Include qt/qsizepolicy.sip
+%Include qt/qslider.sip
+%Include qt/qsocketnotifier.sip
+%Include qt/qsound.sip
+%Include qt/qspinbox.sip
+%Include qt/qsplashscreen.sip
+%Include qt/qsplitter.sip
+%Include qt/qstatusbar.sip
+%Include qt/qstring.sip
+%Include qt/qstringlist.sip
+%Include qt/qstrlist.sip
+%Include qt/qstyle.sip
+%Include qt/qstylesheet.sip
+%Include qt/qsyntaxhighlighter.sip
+%Include qt/qtabbar.sip
+%Include qt/qtabdialog.sip
+%Include qt/qtableview.sip
+%Include qt/qtabwidget.sip
+%Include qt/qtextbrowser.sip
+%Include qt/qtextcodec.sip
+%Include qt/qtextedit.sip
+%Include qt/qtextstream.sip
+%Include qt/qtextview.sip
+%Include qt/qthread.sip
+%Include qt/qtimer.sip
+%Include qt/qtoolbar.sip
+%Include qt/qtoolbox.sip
+%Include qt/qtoolbutton.sip
+%Include qt/qtooltip.sip
+%Include qt/qtranslator.sip
+%Include qt/qurl.sip
+%Include qt/qurlinfo.sip
+%Include qt/qurloperator.sip
+%Include qt/quuid.sip
+%Include qt/qvalidator.sip
+%Include qt/qvaluelist.sip
+%Include qt/qvariant.sip
+%Include qt/qvbox.sip
+%Include qt/qvbuttongroup.sip
+%Include qt/qvgroupbox.sip
+%Include qt/qwaitcondition.sip
+%Include qt/qwhatsthis.sip
+%Include qt/qwidget.sip
+%Include qt/qwidgetlist.sip
+%Include qt/qwidgetstack.sip
+%Include qt/qwindow.sip
+%Include qt/qwindowsstyle.sip
+%Include qt/qwindowsxpstyle.sip
+%Include qt/qwizard.sip
+%Include qt/qwmatrix.sip
+%Include qt/qworkspace.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtaxcontainer</Literal> Module Reference</Title>
+%End
+
+%Include qtaxcontainer/qaxbase.sip
+%Include qtaxcontainer/qaxobject.sip
+%Include qtaxcontainer/qaxwidget.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtcanvas</Literal> Module Reference</Title>
+%End
+
+%Include qtcanvas/qcanvas.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtext</Literal> Module Reference</Title>
+
+<Sect2><Title>QextScintilla</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getCursorPosition</Function></FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>line</Literal> and <Literal>index</Literal> pointers.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>lineFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>lineTo</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexTo</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>lineFrom</Literal>, <Literal>indexFrom</Literal>,
+<Literal>lineTo</Literal> and <Literal>indexTo</Literal> pointers.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaAPIs</Title>
+<Para>
+<Literal>QextScintillaAPIs</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaBase</Title>
+<Para>
+<Literal>QextScintillaBase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommand</Title>
+<Para>
+<Literal>QextScintillaCommand</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommandSet</Title>
+<Para>
+<Literal>QextScintillaCommandSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaDocument</Title>
+<Para>
+<Literal>QextScintillaDocument</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexer</Title>
+<Para>
+<Literal>QextScintillaLexer</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBash (QScintilla v1.4+)</Title>
+<Para>
+<Literal>QextScintillaLexerBash</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBatch (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerBatch</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCPP</Title>
+<Para>
+<Literal>QextScintillaLexerCPP</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSharp</Title>
+<Para>
+<Literal>QextScintillaLexerCSharp</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSS (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerCSS</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerDiff (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerDiff</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerHTML (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerHTML</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerIDL</Title>
+<Para>
+<Literal>QextScintillaLexerIDL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJava</Title>
+<Para>
+<Literal>QextScintillaLexerJava</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJavaScript</Title>
+<Para>
+<Literal>QextScintillaLexerJavaScript</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerLua (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerLua</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerMakefile (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerMakefile</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPerl</Title>
+<Para>
+<Literal>QextScintillaLexerPerl</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPOV (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerPOV</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerProperties (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerProperties</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPython</Title>
+<Para>
+<Literal>QextScintillaLexerPython</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerRuby (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerRuby</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerSQL (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerSQL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerTeX (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerTeX</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaMacro</Title>
+<Para>
+<Literal>QextScintillaMacro</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaPrinter</Title>
+<Para>
+<Literal>QextScintillaPrinter</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtgl</Literal> Module Reference</Title>
+%End
+
+%Include qtgl/qgl.sip
+%Include qtgl/qglcolormap.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtnetwork</Literal> Module Reference</Title>
+%End
+
+%Include qtnetwork/qdns.sip
+%Include qtnetwork/qftp.sip
+%Include qtnetwork/qhostaddress.sip
+%Include qtnetwork/qhttp.sip
+%Include qtnetwork/qlocalfs.sip
+%Include qtnetwork/qnetwork.sip
+%Include qtnetwork/qserversocket.sip
+%Include qtnetwork/qsocket.sip
+%Include qtnetwork/qsocketdevice.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtpe</Literal> Module Reference</Title>
+
+<Sect2><Title>QPEApplication</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int& <Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>Type <Parameter>type</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnk</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnkSet</Title>
+<Para>
+<Literal>AppLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Config</Title>
+<Para>
+<Literal>Config</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DateFormat</Title>
+<Para>
+<Literal>DateFormat</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnk</Title>
+<FuncSynopsis>
+ <FuncDef>QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnkSet</Title>
+<Para>
+<Literal>DocLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileManager</Title>
+<Para>
+<Literal>FileManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelector</Title>
+<Para>
+<Literal>FileSelector</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelectorItem</Title>
+<Para>
+<Literal>FileSelectorItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FontDatabase</Title>
+<Para>
+<Literal>FontDatabase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Global</Title>
+<FuncSynopsis>
+ <FuncDef>static void <Function>setBuiltinCommands</Function></FuncDef>
+ <ParamDef>Command *</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>MenuButton</Title>
+<Para>
+<Literal>MenuButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCopEnvelope</Title>
+<Para>
+<Literal>QCopEnvelope</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDawg</Title>
+<Para>
+<Literal>QDawg</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEMenuBar</Title>
+<Para>
+<Literal>QPEMenuBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEToolBar</Title>
+<Para>
+<Literal>QPEToolBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Resource</Title>
+<Para>
+<Literal>Resource</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtsql</Literal> Module Reference</Title>
+%End
+
+%Include qtsql/qdatabrowser.sip
+%Include qtsql/qdatatable.sip
+%Include qtsql/qdataview.sip
+%Include qtsql/qeditorfactory.sip
+%Include qtsql/qsql.sip
+%Include qtsql/qsqlcursor.sip
+%Include qtsql/qsqldatabase.sip
+%Include qtsql/qsqldriver.sip
+%Include qtsql/qsqleditorfactory.sip
+%Include qtsql/qsqlerror.sip
+%Include qtsql/qsqlfield.sip
+%Include qtsql/qsqlform.sip
+%Include qtsql/qsqlindex.sip
+%Include qtsql/qsqlpropertymap.sip
+%Include qtsql/qsqlquery.sip
+%Include qtsql/qsqlrecord.sip
+%Include qtsql/qsqlresult.sip
+%Include qtsql/qsqlselectcursor.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qttable</Literal> Module Reference</Title>
+%End
+
+%Include qttable/qtable.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtui</Literal> Module Reference</Title>
+%End
+
+%Include qtui/qwidgetfactory.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtxml</Literal> Module Reference</Title>
+%End
+
+%Include qtxml/qdom.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%Doc
+</Article>
+%End
diff --git a/python/pyqt/examples2/README b/python/pyqt/examples2/README
new file mode 100644
index 00000000..1c1938f1
--- /dev/null
+++ b/python/pyqt/examples2/README
@@ -0,0 +1,11 @@
+To run these examples, make sure you have your PYTHONPATH environment variable
+set if needed and explicitly set the path to python at the top of each script
+if you don't have /usr/bin/env.
+
+The examples are written for Qt v2.x.
+
+A much better source of information about using PyQt is Boudewijn Rempt's
+book at http://stage.linuxports.com/projects/pyqt/.
+
+Phil Thompson
+phil@riverbankcomputing.co.uk
diff --git a/python/pyqt/examples2/aclock.py b/python/pyqt/examples2/aclock.py
new file mode 100755
index 00000000..38ed36c9
--- /dev/null
+++ b/python/pyqt/examples2/aclock.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+def QMIN(x, y):
+ if y > x: return y
+ return x
+class AnalogClock(QWidget):
+ def __init__(self, *args):
+ apply(QWidget.__init__,(self,) + args)
+ self.time = QTime.currentTime()
+ internalTimer = QTimer(self)
+ self.connect(internalTimer, SIGNAL("timeout()"), self.timeout)
+ internalTimer.start(5000)
+
+ def timeout(self):
+ new_time = QTime.currentTime()
+ if new_time.minute() != self.time.minute():
+ self.update()
+
+ def paintEvent(self, qe):
+ if not self.isVisible():
+ return
+ self.time = QTime.currentTime()
+
+ pts = QPointArray()
+ paint = QPainter(self)
+ paint.setBrush(self.foregroundColor())
+
+ cp = QPoint(self.rect().center())
+ d = QMIN(self.width(), self.height())
+ matrix = QWMatrix()
+ matrix.translate(cp.x(), cp.y())
+ matrix.scale(d/1000.0, d/1000.0)
+
+ h_angle = 30*(self.time.hour()%12 - 3) + self.time.minute()/2
+ matrix.rotate(h_angle)
+ paint.setWorldMatrix(matrix)
+ pts.setPoints([-20,0,0,-20,300,0,0,20])
+ paint.drawPolygon(pts)
+ matrix.rotate(-h_angle)
+
+ m_angle = (self.time.minute()-15)*6
+ matrix.rotate(m_angle)
+ paint.setWorldMatrix(matrix)
+ pts.setPoints([-10,0,0,-10,400,0,0,10])
+ paint.drawPolygon(pts)
+ matrix.rotate(-m_angle)
+
+ for i in range(0,12):
+ paint.setWorldMatrix(matrix)
+ paint.drawLine(450,0, 500,0)
+ matrix.rotate(30)
+
+a = QApplication(sys.argv)
+clock = AnalogClock()
+clock.resize(100,100)
+a.setMainWidget(clock)
+clock.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/addressbook.py b/python/pyqt/examples2/addressbook.py
new file mode 100755
index 00000000..d7316e33
--- /dev/null
+++ b/python/pyqt/examples2/addressbook.py
@@ -0,0 +1,457 @@
+#!/usr/bin/env python
+
+# A port to PyQt of the application example from Qt v2.x.
+
+
+import sys, string
+from qt import *
+
+TRUE = 1
+FALSE = 0
+fileopen = [
+' 16 13 5 1',
+'. c #040404',
+'# c #808304',
+'a c None',
+'b c #f3f704',
+'c c #f3f7f3',
+'aaaaaaaaa...aaaa',
+'aaaaaaaa.aaa.a.a',
+'aaaaaaaaaaaaa..a',
+'a...aaaaaaaa...a',
+'.bcb.......aaaaa',
+'.cbcbcbcbc.aaaaa',
+'.bcbcbcbcb.aaaaa',
+'.cbcb...........',
+'.bcb.#########.a',
+'.cb.#########.aa',
+'.b.#########.aaa',
+'..#########.aaaa',
+'...........aaaaa'
+]
+
+filesave = [
+' 14 14 4 1',
+'. c #040404',
+'# c #808304',
+'a c #bfc2bf',
+'b c None',
+'..............',
+'.#.aaaaaaaa.a.',
+'.#.aaaaaaaa...',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.##........##.',
+'.############.',
+'.##.........#.',
+'.##......aa.#.',
+'.##......aa.#.',
+'.##......aa.#.',
+'b.............'
+]
+
+fileprint = [
+' 16 14 6 1',
+'. c #000000',
+'# c #848284',
+'a c #c6c3c6',
+'b c #ffff00',
+'c c #ffffff',
+'d c None',
+'ddddd.........dd',
+'dddd.cccccccc.dd',
+'dddd.c.....c.ddd',
+'ddd.cccccccc.ddd',
+'ddd.c.....c....d',
+'dd.cccccccc.a.a.',
+'d..........a.a..',
+'.aaaaaaaaaa.a.a.',
+'.............aa.',
+'.aaaaaa###aa.a.d',
+'.aaaaaabbbaa...d',
+'.............a.d',
+'d.aaaaaaaaa.a.dd',
+'dd...........ddd'
+]
+
+class ABCentralWidget( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self, ) + args )
+ self.mainGrid = QGridLayout( self, 2, 1, 5, 5 )
+
+ self.setupTabWidget()
+ self.setupListView()
+
+ self.mainGrid.setRowStretch( 0, 0 )
+ self.mainGrid.setRowStretch( 1, 1 )
+
+ def save( self, filename ):
+ if not self.listView.firstChild():
+ return
+
+ f = QFile( filename )
+ if not f.open( IO_WriteOnly ):
+ return
+
+ t = QTextStream( f )
+
+ #it = QListViewItemIterator( self.listView )
+
+ while not t.eof():
+ item = QListViewItem( self.listView )
+ for i in range (0, 4):
+ t << item.text( i ) << '\n'
+ #for it in it.current():
+ #for i in range (0, 4):
+ #t << it.current().text[ i ] << "\n"
+
+ f.close()
+
+
+ def load( self, filename ):
+ self.listView.clear()
+
+ f = QFile( filename )
+ if not f.open( IO_ReadOnly ):
+ return
+
+ t = QTextStream( f )
+
+ while not t.eof():
+ item = QListViewItem( self.listView )
+ for i in range (0, 4):
+ item.setText( i, t.readLine() )
+
+ f.close();
+
+
+ def setupTabWidget( self ):
+ self.tabWidget = QTabWidget( self )
+
+ self.input = QWidget( self.tabWidget )
+ self.grid1 = QGridLayout( self.input, 2, 5, 5, 5 )
+
+ self.liFirstName = QLabel( 'First &Name', self.input )
+ self.liFirstName.resize( self.liFirstName.sizeHint() )
+ self.grid1.addWidget( self.liFirstName, 0, 0 )
+
+ self.liLastName = QLabel( '&Last Name', self.input )
+ self.liLastName.resize( self.liLastName.sizeHint() )
+ self.grid1.addWidget( self.liLastName, 0, 1 )
+
+ self.liAddress = QLabel( '&Address', self.input )
+ self.liAddress.resize( self.liAddress.sizeHint() )
+ self.grid1.addWidget( self.liAddress, 0, 2 )
+
+ self.liEMail = QLabel( '&E-Mail', self.input )
+ self.liEMail.resize( self.liEMail.sizeHint() )
+ self.grid1.addWidget( self.liEMail, 0, 3 )
+
+ self.add = QPushButton( '&Add', self.input )
+ self.add.resize( self.add.sizeHint() )
+ self.grid1.addWidget( self.add, 0, 4 )
+ self.connect( self.add, SIGNAL( 'clicked()' ), self.addEntry )
+
+ self.iFirstName = QLineEdit( self.input )
+ self.iFirstName.resize( self.iFirstName.sizeHint() )
+ self.grid1.addWidget( self.iFirstName, 1, 0 )
+ self.liFirstName.setBuddy( self.iFirstName )
+
+ self.iLastName = QLineEdit( self.input )
+ self.iLastName.resize( self.iLastName.sizeHint() )
+ self.grid1.addWidget( self.iLastName, 1, 1 )
+ self.liLastName.setBuddy( self.iLastName )
+
+ self.iAddress = QLineEdit( self.input )
+ self.iAddress.resize( self.iAddress.sizeHint() )
+ self.grid1.addWidget( self.iAddress, 1, 2 )
+ self.liAddress.setBuddy( self.iAddress )
+
+ self.iEMail = QLineEdit( self.input )
+ self.iEMail.resize( self.iEMail.sizeHint() )
+ self.grid1.addWidget( self.iEMail, 1, 3 )
+ self.liEMail.setBuddy( self.iEMail )
+
+ self.change = QPushButton( '&Change', self.input )
+ self.change.resize( self.change.sizeHint() )
+ self.grid1.addWidget( self.change, 1, 4 )
+ self.connect( self.change, SIGNAL( 'clicked()' ), self.changeEntry )
+
+ self.tabWidget.addTab( self.input, '&Add/Change Entry' )
+
+ # --------------------------------------
+
+ self.search = QWidget( self )
+ self.grid2 = QGridLayout( self.search, 2, 5, 5, 5 )
+
+ self.cFirstName = QCheckBox( 'First &Name', self.search )
+ self.cFirstName.resize( self.cFirstName.sizeHint() )
+ self.grid2.addWidget( self.cFirstName, 0, 0 )
+ self.connect( self.cFirstName, SIGNAL( 'clicked()' ), self.toggleFirstName )
+
+ self.cLastName = QCheckBox( '&Last Name', self.search )
+ self.cLastName.resize( self.cLastName.sizeHint() )
+ self.grid2.addWidget( self.cLastName, 0, 1 )
+ self.connect( self.cLastName, SIGNAL( 'clicked()' ), self.toggleLastName )
+
+ self.cAddress = QCheckBox( '&Address', self.search )
+ self.cAddress.resize( self.cAddress.sizeHint() )
+ self.grid2.addWidget( self.cAddress, 0, 2 )
+ self.connect( self.cAddress, SIGNAL( 'clicked()' ), self.toggleAddress )
+
+ self.cEMail = QCheckBox( '&E-Mail', self.search )
+ self.cEMail.resize( self.cEMail.sizeHint() )
+ self.grid2.addWidget( self.cEMail, 0, 3 )
+ self.connect( self.cEMail, SIGNAL( 'clicked()' ), self.toggleEMail )
+
+ self.sFirstName = QLineEdit( self.search )
+ self.sFirstName.resize( self.sFirstName.sizeHint() )
+ self.grid2.addWidget( self.sFirstName, 1, 0 )
+
+ self.sLastName = QLineEdit( self.search )
+ self.sLastName.resize( self.sLastName.sizeHint() )
+ self.grid2.addWidget( self.sLastName, 1, 1 )
+
+ self.sAddress = QLineEdit( self.search )
+ self.sAddress.resize( self.sAddress.sizeHint() )
+ self.grid2.addWidget( self.sAddress, 1, 2 )
+
+ self.sEMail = QLineEdit( self.search )
+ self.sEMail.resize( self.sEMail.sizeHint() )
+ self.grid2.addWidget( self.sEMail, 1, 3 )
+
+ self.find = QPushButton( '&Find', self.search )
+ self.find.resize( self.find.sizeHint() )
+ self.grid2.addWidget( self.find, 1, 4 )
+ self.connect( self.find, SIGNAL( 'clicked()' ), self.findEntries )
+
+ self.cFirstName.setChecked( TRUE )
+ self.sFirstName.setEnabled( TRUE )
+ self.sLastName.setEnabled( FALSE )
+ self.sAddress.setEnabled( FALSE )
+ self.sEMail.setEnabled( FALSE )
+
+ self.tabWidget.addTab( self.search, "&Search" )
+
+ self.mainGrid.addWidget( self.tabWidget, 0, 0 )
+
+ def setupListView( self ):
+ self.listView = QListView( self )
+ self.listView.addColumn( 'First Name' )
+ self.listView.addColumn( 'Last Name' )
+ self.listView.addColumn( 'Address' )
+ self.listView.addColumn( 'E-Mail' )
+
+ self.listView.setSelectionMode( QListView.Extended )
+
+ self.connect( self.listView, SIGNAL( 'clicked( QListViewItem* )' ), self.itemSelected )
+
+ self.mainGrid.addWidget( self.listView, 1, 0 )
+ self.listView.setAllColumnsShowFocus( TRUE )
+
+
+ def addEntry( self ):
+ if not self.iFirstName.text().isEmpty() or not self.iLastName.text().isEmpty() or \
+ not self.iAddress.text().isEmpty() or not self.iEMail.text().isEmpty() :
+ self.item = QListViewItem( self.listView )
+ self.item.setText( 0, self.iFirstName.text() )
+ self.item.setText( 1, self.iLastName.text() )
+ self.item.setText( 2, self.iAddress.text() )
+ self.item.setText( 3, self.iEMail.text() )
+
+ self.iFirstName.setText( '' )
+ self.iLastName.setText( '' )
+ self.iAddress.setText( '' )
+ self.iEMail.setText( '' )
+
+ def changeEntry( self ):
+ self.item = self.listView.currentItem()
+ if self.item and ( not self.iFirstName.text().isEmpty() or not self.iLastName.text().isEmpty() or \
+ not self.iAddress.text().isEmpty() or not self.iEMail.text().isEmpty() ) :
+ self.item.setText( 0, self.iFirstName.text() )
+ self.item.setText( 1, self.iLastName.text() )
+ self.item.setText( 2, self.iAddress.text() )
+ self.item.setText( 3, self.iEMail.text() )
+
+ def selectionChanged( self ):
+ self.iFirstName.setText( '' )
+ self.iLastName.setText( '' )
+ self.iAddress.setText( '' )
+ self.iEMail.setText( '' )
+
+ def itemSelected( self, item ):
+ self.item.setSelected( TRUE )
+ self.item.repaint()
+
+ self.iFirstName.setText( item.text( 0 ) )
+ self.iLastName.setText( item.text( 1 ) )
+ self.iAddress.setText( item.text( 2 ) )
+ self.iEMail.setText( item.text( 3 ) )
+
+ def toggleFirstName( self ):
+ self.sFirstName.setText( '' )
+ if self.cFirstName.isChecked():
+ self.sFirstName.setEnabled( TRUE )
+ self.sFirstName.setFocus()
+ else:
+ self.sFirstName.setEnabled( FALSE )
+
+ def toggleLastName( self ):
+ self.sLastName.setText( '' )
+ if self.cLastName.isChecked():
+ self.sLastName.setEnabled( TRUE )
+ self.sLastName.setFocus()
+ else:
+ self.sLastName.setEnabled( FALSE )
+
+
+ def toggleAddress( self ):
+ self.sAddress.setText( '' )
+ if self.cAddress.isChecked():
+ self.sAddress.setEnabled( TRUE )
+ self.sAddress.setFocus()
+ else:
+ self.sAddress.setEnabled( FALSE )
+
+
+ def toggleEMail( self ):
+ self.sEMail.setText( '' )
+ if self.cEMail.isChecked():
+ self.sEMail.setEnabled( TRUE )
+ self.sEMail.setFocus()
+
+ else:
+ self.sEMail.setEnabled( FALSE )
+
+
+ def findEntries( self ):
+ if not self.cFirstName.isChecked() and not self.cLastName.isChecked() and \
+ not self.cAddress.isChecked() and not self.cEMail.isChecked():
+ self.listView.clearSelection()
+ return
+
+ it = QListViewItemIterator( self.listView )
+
+ for it in it.current() :
+ select = TRUE
+
+ if self.cFirstName.isChecked():
+ if select and it.current().text( 0 ).contains( self.sFirstName.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cLastName.isChecked():
+ if select and it.current().text( 1 ).contains( self.sLastName.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cAddress.isChecked():
+ if select and it.current().text( 2 ).contains( self.sAddress.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cEMail.isChecked():
+ if select and it.current().text( 3 ).contains( self.sEMail.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+
+ if select:
+ it.current().setSelected( TRUE )
+ else:
+ it.current().setSelected( FALSE )
+ it.current().repaint()
+
+
+class ABMainWindow(QMainWindow):
+ def __init__( self ):
+ QMainWindow.__init__( self, None, 'example addressbook application' )
+
+ self.filename = QString.null
+ self.setupMenuBar()
+ self.setupFileTools()
+ self.setupStatusBar()
+ self.setupCentralWidget()
+
+ def setupMenuBar( self ):
+ self.file = QPopupMenu( self )
+ self.menuBar().insertItem( '&File', self.file )
+
+ openIcon = QIconSet( QPixmap( fileopen ) )
+ self.file.insertItem( 'New', self.fileNew, Qt.CTRL + Qt.Key_N )
+ self.file.insertItem( openIcon, 'Open', self.fileOpen, Qt.CTRL + Qt.Key_O )
+ self.file.insertSeparator()
+ saveIcon = QIconSet( QPixmap( filesave ) )
+ self.file.insertItem( saveIcon, 'Save', self.fileSave, Qt.CTRL + Qt.Key_S )
+ self.file.insertItem( 'Save As...', self.fileSaveAs )
+ self.file.insertSeparator()
+ printIcon = QIconSet( QPixmap( fileprint ) )
+ self.file.insertItem( printIcon, 'Print...', self.filePrint, Qt.CTRL + Qt.Key_P )
+ self.file.insertSeparator()
+ #self.file.insertItem( 'Close', self.closeWindow, Qt.CTRL + Qt.Key_W )
+ self.file.insertItem('Close', self, SLOT('close()'), Qt.CTRL+Qt.Key_W)
+ self.file.insertItem( 'Quit', qApp, SLOT( 'quit()' ), Qt.CTRL + Qt.Key_Q )
+
+ def setupFileTools( self ):
+ pass
+ #self.fileTools = QToolBar( self, 'file operations' )
+
+ def setupStatusBar( self ):
+ self.statusBar().message( "Ready", 2000 )
+
+ def setupCentralWidget( self ):
+ self.view = ABCentralWidget( self )
+ #self.view.show()
+ self.setCentralWidget( self.view )
+
+ def closeWindow( self ):
+ close()
+
+
+ def fileNew( self ):
+ pass
+
+ def fileOpen( self ):
+ fn = QFileDialog.getOpenFileName( QString.null, QString.null, self )
+ if not fn.isEmpty():
+ self.filename = fn
+ self.view.load( self.filename )
+
+ def fileSave( self ):
+ if self.filename.isEmpty():
+ self.fileSaveAs()
+ return
+
+ self.view.save( self.filename )
+
+ def fileSaveAs( self ):
+ fn = QFileDialog.getSaveFileName( QString.null, QString.null, self )
+ if not fn.isEmpty():
+ self.filename = fn
+ self.fileSave
+
+ def filePrint( self ):
+ pass
+
+
+a = QApplication( sys.argv )
+
+mw = ABMainWindow()
+#mw.setupMenuBar()
+#mw.setupFileTools
+#mw.setupStatusBar
+#mw.setupCentralWidget
+#view = ABCentralWidget()
+#mw.setCentralWidget( view )
+mw.setCaption( 'Addressbook 1' )
+a.setMainWidget( mw )
+mw.show()
+
+a.connect( a, SIGNAL( 'lastWindowClosed()' ), a, SLOT( 'quit()' ) )
+a.exec_loop()
diff --git a/python/pyqt/examples2/application.py b/python/pyqt/examples2/application.py
new file mode 100755
index 00000000..294c6cb4
--- /dev/null
+++ b/python/pyqt/examples2/application.py
@@ -0,0 +1,277 @@
+#!/usr/bin/env python
+
+# A simple application.
+
+
+import sys, string
+from qt import *
+
+
+fileopen = [
+ '16 13 5 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c None',
+ 'b c #f3f704',
+ 'c c #f3f7f3',
+ 'aaaaaaaaa...aaaa',
+ 'aaaaaaaa.aaa.a.a',
+ 'aaaaaaaaaaaaa..a',
+ 'a...aaaaaaaa...a',
+ '.bcb.......aaaaa',
+ '.cbcbcbcbc.aaaaa',
+ '.bcbcbcbcb.aaaaa',
+ '.cbcb...........',
+ '.bcb.#########.a',
+ '.cb.#########.aa',
+ '.b.#########.aaa',
+ '..#########.aaaa',
+ '...........aaaaa'
+]
+
+filesave = [
+ '14 14 4 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c #bfc2bf',
+ 'b c None',
+ '..............',
+ '.#.aaaaaaaa.a.',
+ '.#.aaaaaaaa...',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.##........##.',
+ '.############.',
+ '.##.........#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ 'b.............'
+]
+
+fileprint = [
+ '16 14 6 1',
+ '. c #000000',
+ '# c #848284',
+ 'a c #c6c3c6',
+ 'b c #ffff00',
+ 'c c #ffffff',
+ 'd c None',
+ 'ddddd.........dd',
+ 'dddd.cccccccc.dd',
+ 'dddd.c.....c.ddd',
+ 'ddd.cccccccc.ddd',
+ 'ddd.c.....c....d',
+ 'dd.cccccccc.a.a.',
+ 'd..........a.a..',
+ '.aaaaaaaaaa.a.a.',
+ '.............aa.',
+ '.aaaaaa###aa.a.d',
+ '.aaaaaabbbaa...d',
+ '.............a.d',
+ 'd.aaaaaaaaa.a.dd',
+ 'dd...........ddd'
+]
+
+
+fileOpenText = \
+'''<img source="fileopen">
+Click this button to open a <em>new file</em>.<br><br>
+You can also select the <b>Open</b> command from the <b>File</b> menu.'''
+
+fileSaveText = \
+'''Click this button to save the file you are editing.<br><br>
+You will be prompted for a filename.<br><br>
+You can also select the <b>Save</b> command from the <b>File</b> menu.'''
+
+filePrintText = \
+'''Click this button to print the file you are editing.<br><br>
+You can also select the <b>Print</b> command from the <b>File</b> menu.'''
+
+
+editorList = []
+
+
+class ApplicationWindow(QMainWindow):
+ def __init__(self):
+ QMainWindow.__init__(self,None,'example application main window',Qt.WDestructiveClose)
+
+ self.filename = QString.null
+ self.printer = QPrinter()
+
+ self.fileTools = QToolBar(self,'file operations')
+
+ openIcon = QPixmap(fileopen)
+ self.fileOpen = QToolButton(openIcon,'Open File',QString.null,self.load,self.fileTools,'open file')
+
+ saveIcon = QPixmap(filesave)
+ self.fileSave = QToolButton(saveIcon,'Save File',QString.null,self.save,self.fileTools,'save file')
+
+ printIcon = QPixmap(fileprint)
+ self.filePrint = QToolButton(printIcon,'Print File',QString.null,self.printDoc,self.fileTools,'print file')
+
+ QWhatsThis.whatsThisButton(self.fileTools)
+
+ QWhatsThis.add(self.fileOpen,fileOpenText)
+ QMimeSourceFactory.defaultFactory().setPixmap('fileopen',openIcon)
+ QWhatsThis.add(self.fileSave,fileSaveText)
+ QWhatsThis.add(self.filePrint,filePrintText)
+
+ self.file = QPopupMenu(self)
+ self.menuBar().insertItem('&File',self.file)
+
+ self.file.insertItem('&New',self.newDoc,Qt.CTRL + Qt.Key_N)
+
+ id = self.file.insertItem(QIconSet(openIcon),'&Open',self.load,Qt.CTRL + Qt.Key_O)
+ self.file.setWhatsThis(id,fileOpenText)
+
+ id = self.file.insertItem(QIconSet(saveIcon),'&Save',self.save,Qt.CTRL + Qt.Key_S)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ id = self.file.insertItem('Save &as',self.saveAs)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ self.file.insertSeparator()
+
+ id = self.file.insertItem(QIconSet(printIcon),'&Print',self.printDoc,Qt.CTRL + Qt.Key_P)
+ self.file.setWhatsThis(id,filePrintText)
+
+ self.file.insertSeparator()
+
+ self.file.insertItem('&Close',self,SLOT('close()'),Qt.CTRL + Qt.Key_W)
+ self.file.insertItem('&Quit',qApp,SLOT('closeAllWindows()'),Qt.CTRL + Qt.Key_Q)
+
+ self.help = QPopupMenu(self)
+ self.menuBar().insertSeparator()
+ self.menuBar().insertItem('&Help',self.help)
+
+ self.help.insertItem('&About',self.about,Qt.Key_F1)
+ self.help.insertItem('About &Qt',self.aboutQt)
+
+ self.e = QMultiLineEdit(self,'editor')
+ self.e.setFocus()
+ self.setCentralWidget(self.e)
+
+ self.statusBar().message('Ready',2000)
+ self.resize(450,600)
+
+ def newDoc(self):
+ ed = ApplicationWindow()
+ ed.show()
+ editorList.append(ed)
+
+ def load(self):
+ fn = QFileDialog.getOpenFileName(QString.null,QString.null,self)
+ if fn.isEmpty():
+ self.statusBar().message('Loading aborted',2000)
+ return
+
+ fileName = str(fn)
+
+ self.e.setAutoUpdate(0)
+ self.e.clear()
+
+ try:
+ f = open(fileName,'r')
+ except:
+ return
+
+ for l in f.readlines():
+ self.e.append(string.rstrip(l))
+
+ f.close()
+
+ self.e.setAutoUpdate(1)
+ self.e.repaint()
+ self.e.setEdited(0)
+ self.setCaption(fileName)
+ self.statusBar().message('Loaded document %s' % (fileName),2000)
+
+ def save(self):
+ if self.filename.isEmpty():
+ self.saveAs()
+ return
+
+ try:
+ f = open(str(self.filename),'w+')
+ except:
+ self.statusBar().message('Could not write to %s' % (self.filename),2000)
+ return
+
+ f.write(str(self.e.text()))
+ f.close()
+
+ self.e.setEdited(0)
+ self.setCaption(self.filename)
+ self.statusBar().message('File %s saved' % (self.filename),2000)
+
+ def saveAs(self):
+ fn = QFileDialog.getSaveFileName(QString.null,QString.null,self)
+ if not fn.isEmpty():
+ self.filename = fn
+ self.save()
+ else:
+ self.statusBar().message('Saving aborted',2000)
+
+ def printDoc(self):
+ Margin = 10
+ pageNo = 1
+
+ if self.printer.setup(self):
+ self.statusBar().message('Printing...')
+
+ p = QPainter()
+ p.begin(self.printer)
+ p.setFont(self.e.font())
+ yPos = 0
+ fm = p.fontMetrics()
+ metrics = QPaintDeviceMetrics(self.printer)
+
+ for i in range(self.e.numLines):
+ if Margin + yPos > metrics.height() - Margin:
+ pageNo = pageNo + 1
+ self.statusBar().message('Printing (page %d)...' % (pageNo))
+ self.printer.newPage()
+ yPos = 0
+
+ p.drawText(Margin,Margin + yPos,metrics.width(),fm.lineSpacing(),Qt.ExpandTabs | Qt.DontClip,self.e.textLine(i))
+ yPos = yPos + fm.lineSpacing()
+
+ p.end()
+ self.statusBar().message('Printing completed',2000)
+ else:
+ self.statusBar().message('Printing aborted',2000)
+
+ def closeEvent(self,ce):
+ if not self.e.edited():
+ ce.accept()
+ return
+
+ rc = QMessageBox.information(self,'Qt Application Example',
+ 'The document has been changed since the last save.',
+ 'Save Now','Cancel','Leave Anyway',0,1)
+
+ if rc == 0:
+ self.save()
+ ce.accept()
+ elif rc == 2:
+ ce.accept()
+ else:
+ ce.ignore()
+
+ def about(self):
+ QMessageBox.about(self,'Qt Application Example',
+ 'This example demonstrates simple use of QMainWindow,\nQMenuBar and QToolBar.')
+
+ def aboutQt(self):
+ QMessageBox.aboutQt(self,'Qt Application Example')
+
+
+a = QApplication(sys.argv)
+mw = ApplicationWindow()
+mw.setCaption('Document 1')
+mw.show()
+a.connect(a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()'))
+a.exec_loop()
diff --git a/python/pyqt/examples2/buttongroups.py b/python/pyqt/examples2/buttongroups.py
new file mode 100755
index 00000000..a8c94575
--- /dev/null
+++ b/python/pyqt/examples2/buttongroups.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+#/****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+#**
+#** This file is part of an example program for Qt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+##
+# Creates all child widgets of the ButtonGroups window
+##
+
+class ButtonsGroups( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+
+ # Create Widgets which allow easy layouting
+ self.vbox = QVBoxLayout( self )
+ self.box1 = QHBoxLayout( self.vbox )
+ self.box2 = QHBoxLayout( self.vbox )
+
+ # ------- first group
+
+ # Create an exclusive button group
+ self.grp1 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 1 (exclusive)", self )
+ self.box1.addWidget( self.grp1 )
+ self.grp1.setExclusive( TRUE )
+
+ # insert 3 radiobuttons
+ self.rb11 = QRadioButton( "&Radiobutton 1", self.grp1 )
+ self.rb11.setChecked( TRUE )
+ QRadioButton( "R&adiobutton 2", self.grp1 )
+ QRadioButton( "Ra&diobutton 3", self.grp1 )
+
+ # ------- second group
+
+ # Create a non-exclusive buttongroup
+ self.grp2 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 2 (non-exclusive)", self )
+ self.box1.addWidget( self.grp2 )
+ self.grp2.setExclusive( FALSE )
+
+ # insert 3 checkboxes
+ QCheckBox( "&Checkbox 1", self.grp2 )
+ self.cb12 = QCheckBox( "C&heckbox 2", self.grp2 )
+ self.cb12.setChecked( TRUE )
+ self.cb13 = QCheckBox( "Triple &State Button", self.grp2 )
+ self.cb13.setTristate( TRUE )
+ self.cb13.setChecked( TRUE )
+
+ # ------------ third group
+
+ # create a buttongroup which is exclusive for radiobuttons and non-exclusive for all other buttons
+ self.grp3 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 3 (Radiobutton-exclusive)", self )
+ self.box2.addWidget( self.grp3 )
+ self.grp3.setRadioButtonExclusive( TRUE )
+
+ # insert three radiobuttons
+ self.rb21 = QRadioButton( "Rad&iobutton 1", self.grp3 )
+ self.rb22 = QRadioButton( "Radi&obutton 2", self.grp3 )
+ self.rb23 = QRadioButton( "Radio&button 3", self.grp3 )
+ self.rb23.setChecked( TRUE )
+
+ # insert a checkbox...
+ self.state = QCheckBox( "E&nable Radiobuttons", self.grp3 )
+ self.state.setChecked( TRUE )
+ # ...and connect its SIGNAL clicked() with the SLOT slotChangeGrp3State()
+ self.connect( self.state, SIGNAL( "clicked()" ), self.slotChangeGrp3State )
+
+ # ------------ fourth group
+
+ # create a groupbox which layouts its childs in a columns
+ self.grp4 = QButtonGroup( 1, QGroupBox.Horizontal, "Groupbox with normal buttons", self )
+ self.box2.addWidget( self.grp4 )
+
+ # insert two pushbuttons...
+ QPushButton( "&Push Button", self.grp4 )
+ self.tb = QPushButton( "&Toggle Button", self.grp4 )
+
+ # ... and make the second one a toggle button
+ self.tb.setToggleButton( TRUE )
+ self.tb.setOn( TRUE )
+
+
+ #
+ # SLOT slotChangeGrp3State()
+ # enables/disables the radiobuttons of the third buttongroup
+ #
+
+ def slotChangeGrp3State( self ):
+ self.rb21.setEnabled( self.state.isChecked() )
+ self.rb22.setEnabled( self.state.isChecked() )
+ self.rb23.setEnabled( self.state.isChecked() )
+
+
+## main program
+a = QApplication( sys.argv )
+
+buttonsgroups = ButtonsGroups()
+buttonsgroups.resize( 500, 250 )
+buttonsgroups.setCaption( "Examples for Buttons and Groups" )
+a.setMainWidget( buttonsgroups )
+buttonsgroups.show()
+
+a.exec_loop()
diff --git a/python/pyqt/examples2/dclock.py b/python/pyqt/examples2/dclock.py
new file mode 100755
index 00000000..5382d4fa
--- /dev/null
+++ b/python/pyqt/examples2/dclock.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+# A port to PyQt of the dclock example from Qt v2.x.
+
+
+import sys, string
+from qt import *
+
+
+class DigitalClock(QLCDNumber):
+ def __init__(self, parent=None, name=None):
+ QLCDNumber.__init__(self, parent, name)
+ self.showingColon = 0
+ self.setFrameStyle(QFrame.Panel | QFrame.Raised)
+ self.setLineWidth(2)
+ self.showTime()
+ self.normalTimer = self.startTimer(500)
+ self.showDateTimer = -1
+
+ def timerEvent(self, e):
+ if e.timerId() == self.showDateTimer:
+ self.stopDate()
+ else:
+ if self.showDateTimer == -1:
+ self.showTime()
+
+ def mousePressEvent(self, e):
+ if e.button() == Qt.LeftButton:
+ self.showDate()
+
+ def showDate(self):
+ if self.showDateTimer != -1:
+ return
+ d = QDate.currentDate()
+ self.display('%2d %2d' % (d.month(), d.day()))
+ self.showDateTimer = self.startTimer(2000)
+
+ def stopDate(self):
+ self.killTimer(self.showDateTimer)
+ self.showDateTimer = -1
+ self.showTime()
+
+ def showTime(self):
+ self.showingColon = not self.showingColon
+ s = list(str(QTime.currentTime().toString())[:5]) #.left(5)
+ if not self.showingColon:
+ s[2] = ' '
+ if s[0] == '0':
+ s[0] = ' '
+ s = string.join(s,'')
+ self.display(s)
+
+a = QApplication(sys.argv)
+clock = DigitalClock()
+clock.resize(170,80)
+a.setMainWidget(clock)
+clock.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/desktop.py b/python/pyqt/examples2/desktop.py
new file mode 100755
index 00000000..a1177f24
--- /dev/null
+++ b/python/pyqt/examples2/desktop.py
@@ -0,0 +1,219 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+seed = 0.353535353535
+KINDA_RAND_MAX = 32767
+
+def kindaRand():
+ global seed
+ seed = seed * 147
+ seed = seed - int(seed)
+ return int(seed*(KINDA_RAND_MAX + 1))
+
+velmax = 15
+velmin = 4
+
+def velocity(i):
+ if i == 1 or i == 2:
+ i = (kindaRand()&0x7fff % velmax)/3 + velmin
+ else:
+ i = (kindaRand()&0x7fff % velmax) + velmin
+
+maxpoints = 5
+maxcurves = 8
+
+def poly():
+ d = QApplication.desktop()
+ d.setBackgroundColor(white)
+ xvel = [ 0 ] * 8
+ yvel = [ 0 ] * 8
+ head = 0
+ tail = -maxcurves + 2
+ a = QPointArray() * maxcurves
+ r = d.rect()
+ for i in range(maxcurves):
+ a[i].resize(maxpoints)
+ p = a[0]
+ for i in range(maxpoints):
+ p.setPoint(i, (kindaRand()&0x7fff) % r.width(),
+ (kindaRand()&0x7fff) % r.height() )
+ xvel[i] = velocity(i)
+ yvel[i] = velocity(i)
+
+ paint = QPainter()
+ paint.begin(d)
+
+ for ntimes in range(2000):
+ paint.setBrush(QColor(kindaRand()%360,180,255, QColor.Hsv))
+ paint.drawPolygon(a[head])
+ tail = tail + 1
+ if tail >= maxcurves:
+ tail = 0
+ minx = r.left()
+ maxx = r.right()
+ miny = r.top()
+ maxy = r.bottom()
+ p = a[head]
+ head = head + 1
+ if head >= maxcurves:
+ head = 0
+ for i in range(maxpoints):
+ x, y = p.point(i)
+ x = x + xvel[i]
+ y = y + yvel[i]
+ if x >= maxx:
+ x = maxx - (x - maxx + 1)
+ xvel[i] = -velocity(i)
+ if x <= minx:
+ x = minx + (minx - x + 1)
+ xvel[i] = velocity(i)
+ if y >= maxy:
+ y = maxy - (y - maxy + 1)
+ yvel[i] = -velocity(i)
+ if y <= miny:
+ y = miny + (miny - y + 1)
+ yvel[i] = velocity(i)
+ a[head].setPoint(i, x, y)
+ paint.end()
+
+def rotate():
+ w = 64
+ h = 64
+ image = QImage(w, h, 8, 128)
+ for i in range(128):
+ image.setColor(i, qRgb(i,0,0))
+ for y in range(h):
+ for x in range(w):
+ image.setPixel(x,y,(x+y)%128)
+
+ pm = QPixmap()
+ pm.convertFromImage(image)
+ #pm.optimize(1)
+
+ d = QApplication.desktop()
+
+ for i in range(0,361,2):
+ m = QWMatrix()
+ m.rotate(i)
+ rpm = pm.xForm(m)
+ d.setBackgroundPixmap(rpm)
+ d.update()
+
+def generateStone(pm, c1, c2, c3):
+ p = QPainter()
+ p1 = QPen(c1, 0)
+ p2 = QPen(c2, 0)
+ p3 = QPen(c3, 0)
+
+ p.begin(pm)
+ for i in range(pm.width()):
+ for j in range(pm.height()):
+ r = kindaRand()
+ if r < KINDA_RAND_MAX / 3:
+ p.setPen(p1)
+ elif r < KINDA_RAND_MAX / 3 * 2:
+ p.setPen(p2)
+ else:
+ p.setPen(p3)
+ p.drawPoint(i, j)
+ p.end()
+
+def drawShadeText(p, x, y, text, topColor, bottomColor, sw=2):
+ if not p.isActive():
+ return
+
+ p.setPen(bottomColor)
+ p.drawText(x+sw, y+sw, text)
+ p.setPen(topColor)
+ p.drawText(x, y, text)
+
+class DesktopWidget(QWidget):
+ def __init__(self, s, parent=None, name=''):
+ QWidget.__init__(self, parent, name, WType_Desktop | WPaintDesktop)
+ self.text = s
+ self.pm = None
+
+ def paintEvent(self, pe):
+ c1 = self.backgroundColor()
+ c2 = c1.light(104)
+ c3 = c1.dark(106)
+ if not self.pm:
+ self.pm = QPixmap(64, 64)
+ generateStone(self.pm, c1, c2, c3)
+ self.setBackgroundPixmap(self.pm)
+ self.update()
+ br = self.fontMetrics().boundingRect(self.text)
+ offscreen = QPixmap(br.width(), br.height())
+ x = self.width()/2 - br.width()/2
+ y = self.height()/2 - br.height()/2
+ offscreen.fill(self, x, y)
+ p = QPainter()
+ p.begin(offscreen)
+ drawShadeText(p, -br.x(), -br.y(), self.text, c2, c3, 3)
+ p.end()
+ bitBlt(self, x, y, offscreen)
+
+def desktopWidget(s='Troll Tech'):
+ t = DesktopWidget(s)
+ t.update()
+ qApp.exec_loop()
+
+def desktopText(s='Troll Tech'):
+ border = 20
+
+ c1 = qApp.palette().normal().background()
+ c2 = c1.light(104)
+ c3 = c1.dark(106)
+
+ pm = QPixmap(10, 10)
+ p = QPainter()
+ p.begin(pm)
+ r = p.fontMetrics().boundingRect(s)
+ p.end()
+
+ appWidth = qApp.desktop().width()
+ appHeight = qApp.desktop().height()
+ if r.width() > appWidth - border*2:
+ r.setWidth(appWidth - border*2)
+ if r.height() > appHeight - border*2:
+ r.setHeight(appHeight - border*2)
+
+ pm.resize(r.size().width()+border*2,r.size().height()+border*2)
+ generateStone(pm, c1, c2, c3)
+ p.begin(pm)
+ drawShadeText(p, -r.x()+border, -r.y()+border, s, c2, c3)
+ p.end()
+
+ qApp.desktop().setBackgroundPixmap(pm)
+
+a = QApplication(sys.argv)
+if len(sys.argv) > 1:
+ f = QFont('charter', 96, QFont.Weight.Black)
+ f.setStyleHint(QFont.StyleHint.Times)
+ a.setFont(f)
+validOptions = 0
+if len(sys.argv) == 2:
+ validOptions = 1
+ if sys.argv[1] == '-poly':
+ poly()
+ elif sys.argv[1] == '-rotate':
+ rotate()
+ elif sys.argv[1] == '-troll':
+ desktopText()
+ elif sys.argv[1] == '-trollwidget':
+ desktopWidget()
+ else:
+ validOptions = 0
+if len(sys.argv) == 3:
+ validOptions = 1
+ if sys.argv[1] == '-shadetext':
+ desktopText(sys.argv[2])
+ elif sys.argv[1] == '-shadewidget':
+ desktopWidget(sys.argv[2])
+ else:
+ validOptions = 0
+
+if not validOptions:
+ rotate()
diff --git a/python/pyqt/examples2/dirview.py b/python/pyqt/examples2/dirview.py
new file mode 100755
index 00000000..ae232e98
--- /dev/null
+++ b/python/pyqt/examples2/dirview.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+class Directory(QListViewItem):
+ def __init__(self, parent, name=None):
+ apply(QListViewItem.__init__,(self,parent))
+ if isinstance(parent, QListView):
+ self.p = None
+ self.f = '/'
+ else:
+ self.p = parent
+ self.f = name
+ self.c = []
+ self.readable = 1
+
+ def setOpen(self, o):
+ if o and not self.childCount():
+ s = self.fullName()
+ thisDir = QDir(s)
+ if not thisDir.isReadable():
+ self.readable = 0
+ return
+
+ files = thisDir.entryInfoList()
+ if files:
+ for f in files:
+ fileName = str(f.fileName())
+ if fileName == '.' or fileName == '..':
+ continue
+ elif f.isSymLink():
+ d = QListViewItem(self, fileName, 'Symbolic Link')
+ elif f.isDir():
+ d = Directory(self, fileName)
+ else:
+ if f.isFile():
+ s = 'File'
+ else:
+ s = 'Special'
+ d = QListViewItem(self, fileName, s)
+ self.c.append(d)
+
+ QListViewItem.setOpen(self, o)
+
+ def setup(self):
+ self.setExpandable(1)
+ QListViewItem.setup(self)
+
+ def fullName(self):
+ if self.p:
+ s = self.p.fullName() + self.f + '/'
+ else:
+ s = '/'
+ return s
+
+ def text(self, column):
+ if column == 0:
+ return self.f
+ elif self.readable:
+ return 'Directory'
+ else:
+ return 'Unreadable Directory'
+
+a = QApplication(sys.argv)
+mw = QListView()
+a.setMainWidget(mw)
+mw.setCaption('Directory Browser')
+mw.addColumn('Name')
+mw.addColumn('Type')
+mw.resize(400, 400)
+mw.setTreeStepSize(20)
+root = Directory(mw)
+root.setOpen(1)
+mw.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/dragdrop.py b/python/pyqt/examples2/dragdrop.py
new file mode 100755
index 00000000..4cc8c738
--- /dev/null
+++ b/python/pyqt/examples2/dragdrop.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# Ported to PyQt by Issac Trotts on Jan 1, 2002
+
+import sys
+from qt import *
+
+import dropsite, secret
+
+
+def addStuff( parent, yn_image, yn_secret = 0 ):
+ tll = QVBoxLayout( parent, 10 )
+ d = dropsite.DropSite( parent, 'dropsite' )
+ d.setFrameStyle( QFrame.Sunken + QFrame.WinPanel )
+ tll.addWidget( d )
+ if yn_image:
+ stuff = QPixmap()
+ if not stuff.load( "trolltech.bmp" ):
+ stuff = QPixmap(20,20)
+ stuff.fill(Qt.green)
+ d.setPixmap( stuff )
+ else:
+ d.setText("Drag and Drop")
+ d.setFont(QFont("Helvetica",18))
+ if secret:
+ s = secret.SecretSource( 42, parent )
+ tll.addWidget( s )
+
+ format = QLabel( "\n\n\n\nNone\n\n\n\n", parent )
+ tll.addWidget( format )
+ tll.activate()
+ parent.resize( parent.sizeHint() )
+
+ QObject.connect( d, PYSIGNAL('message(QString &)'),
+ format, SLOT('setText(QString &)') )
+
+
+app = QApplication( sys.argv )
+
+mw = QWidget()
+addStuff( mw, 1 )
+mw.setCaption( "Qt Example - Drag and Drop" )
+mw.show()
+
+mw2 = QWidget()
+addStuff( mw2, 0 )
+mw2.setCaption( "Qt Example - Drag and Drop" )
+mw2.show()
+
+mw3 = QWidget()
+addStuff( mw3, 1, 1 )
+mw3.setCaption( "Qt Example - Drag and Drop" )
+mw3.show()
+
+QObject.connect(qApp,SIGNAL('lastWindowClosed()'),qApp,SLOT('quit()'))
+
+app.exec_loop()
diff --git a/python/pyqt/examples2/dropsite.py b/python/pyqt/examples2/dropsite.py
new file mode 100644
index 00000000..7897109c
--- /dev/null
+++ b/python/pyqt/examples2/dropsite.py
@@ -0,0 +1,96 @@
+# This is part of the dragdrop example.
+
+
+from qt import *
+
+import secret
+
+
+class DropSite(QLabel):
+ def __init__(self, parent=None, name=None):
+ QLabel.__init__( self, parent, name )
+ self.setAcceptDrops(1)
+
+ # this is a normal event
+ def mousePressEvent( self, e ):
+ if ( self.pixmap() ) :
+ drobj = QImageDrag( self.pixmap().convertToImage(), self )
+ pm = QPixmap()
+ pm.convertFromImage(self.pixmap().convertToImage().smoothScale(
+ self.pixmap().width()/3,self.pixmap().height()/3))
+ drobj.setPixmap(pm,QPoint(-5,-7))
+ else :
+ drobj = QTextDrag( self.text(), self )
+ drobj.dragCopy()
+
+ def backgroundColorChange( self, qcolor ):
+ # Reduce flicker by using repaint() rather than update()
+ self.repaint()
+
+ def dragMoveEvent( self, e ):
+ # Check if you want the drag at e.pos()...
+ # Give the user some feedback...
+ pass
+
+ def dragEnterEvent( self, e ):
+ # Check if you want the drag...
+ if (secret.canDecode( e ) or
+ QTextDrag.canDecode( e ) or
+ QImageDrag.canDecode( e ) or
+ QUriDrag.canDecode( e )):
+ e.accept()
+
+ # Give the user some feedback...
+ t = ''
+ i = 0
+ while e.format( i ):
+ if ( t != '' ):
+ t += "\n"
+ t += str(e.format( i ))
+ i += 1
+ self.emit(PYSIGNAL('message(QString &)'), (QString(t),))
+ self.setBackgroundColor(Qt.white)
+
+ def dragLeaveEvent( self, QDragLeaveEvent ):
+ # Give the user some feedback...
+ self.emit(PYSIGNAL('message(QString &)'), (QString(''),))
+ self.setBackgroundColor(Qt.lightGray)
+
+ def dropEvent( self, e ):
+ self.setBackgroundColor(Qt.lightGray)
+ # Try to decode to the data you understand...
+ str = QString()
+ if ( QTextDrag.decode( e, str ) ) :
+ self.setText( str )
+ self.setMinimumSize( self.minimumSize().expandedTo(self.sizeHint()) )
+ return
+
+ pm = QPixmap()
+ if ( QImageDrag.decode( e, pm ) ) :
+ self.setPixmap( pm )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
+
+ # QStrList strings
+ #strings = QStrList()
+ strings = []
+ if ( QUriDrag.decode( e, strings ) ) :
+ m = QString("Full URLs:\n")
+ for u in strings:
+ m = m + " " + u + '\n'
+ # QStringList files
+ files = []
+ if ( QUriDrag.decodeLocalFiles( e, files ) ) :
+ m += "Files:\n"
+ # for (QStringList.Iterator i=files.begin() i!=files.end() ++i)
+ for i in files:
+ m = m + " " + i + '\n'
+ self.setText( m )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
+
+ str = secret.decode( e )
+ if str:
+ self.setText( str )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
diff --git a/python/pyqt/examples2/gears.py b/python/pyqt/examples2/gears.py
new file mode 100755
index 00000000..bf5b913f
--- /dev/null
+++ b/python/pyqt/examples2/gears.py
@@ -0,0 +1,235 @@
+#!/usr/bin/env python
+
+
+import sys
+import math
+from qt import *
+from qtgl import *
+from OpenGL.GL import *
+
+def gear(inner_radius,outer_radius,width,teeth,tooth_depth):
+ r0 = inner_radius;
+ r1 = outer_radius - tooth_depth/2.0;
+ r2 = outer_radius + tooth_depth/2.0;
+
+ da = 2.0*math.pi/teeth/4.0;
+
+ glShadeModel(GL_FLAT)
+
+ glNormal3f(0.0,0.0,1.0)
+
+ # draw front face
+
+ glBegin(GL_QUAD_STRIP)
+
+ for i in range(teeth+1):
+ angle = i * 2.0*math.pi/teeth;
+ glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 )
+ glVertex3f(r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 )
+ glVertex3f(r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+
+ glEnd()
+
+ # draw front sides of teeth
+
+ da = 2.0*math.pi/teeth/4.0;
+
+ glBegin(GL_QUADS)
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+
+ glEnd()
+
+
+ glNormal3f( 0.0, 0.0, -1.0 )
+
+ # draw back face
+
+ glBegin( GL_QUAD_STRIP );
+
+ for i in range(teeth+1):
+ angle = i*2.0*math.pi/teeth;
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 )
+
+ glEnd()
+
+ # draw back sides of teeth
+
+ da = 2.0*math.pi/teeth/4.0
+
+ glBegin( GL_QUADS )
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 )
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+
+ glEnd()
+
+ # draw outward faces of teeth
+
+ glBegin( GL_QUAD_STRIP )
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+
+ u = r2*math.cos(angle+da) - r1*math.cos(angle)
+ v = r2*math.sin(angle+da) - r1*math.sin(angle)
+
+ len = math.sqrt( u*u + v*v )
+ u /= len
+ v /= len
+ glNormal3f( v, -u, 0.0 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 )
+ glNormal3f( math.cos(angle), math.sin(angle), 0.0 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 )
+ u = r1*math.cos(angle+3*da) - r2*math.cos(angle+2*da)
+ v = r1*math.sin(angle+3*da) - r2*math.sin(angle+2*da)
+ glNormal3f( v, -u, 0.0 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glNormal3f( math.cos(angle), math.sin(angle), 0.0 )
+
+ glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), width*0.5 )
+ glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), -width*0.5 )
+
+ glEnd()
+
+ glShadeModel (GL_SMOOTH)
+
+ # draw inside radius cylinder
+
+ glBegin( GL_QUAD_STRIP )
+
+ for i in range(teeth+1):
+ angle = i * 2.0*math.pi / teeth;
+ glNormal3f( -math.cos(angle), -math.sin(angle), 0.0 );
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 );
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), width*0.5 );
+
+ glEnd()
+
+##############################################################################
+class GearWidget(QGLWidget):
+ def __init__(self,parent=None,name=None):
+ QGLWidget.__init__(self,parent,name)
+
+ self.angle=0.0
+ self.view_rotx=0.0
+ self.view_roty=0.0
+ self.view_rotz=0.0
+
+ self.startTimer(10)
+
+ def timerEvent(self,event):
+ self.updateGL()
+
+ def paintGL(self):
+ self.angle = self.angle + 2.0
+ self.view_rotx = self.view_rotx + 1.0
+ self.view_roty = self.view_roty + 3.0
+ self.view_rotz = self.view_rotz + 2.0
+
+ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )
+
+ glPushMatrix()
+ glRotatef( self.view_rotx, 1.0, 0.0, 0.0 )
+ glRotatef( self.view_roty, 0.0, 1.0, 0.0 )
+ glRotatef( self.view_rotz, 0.0, 0.0, 1.0 )
+
+ glPushMatrix()
+ glTranslatef( -3.0, -2.0, 0.0 )
+ glRotatef( self.angle, 0.0, 0.0, 1.0 )
+ glCallList(self.gear1)
+ glPopMatrix()
+
+ glPushMatrix()
+ glTranslatef( 3.1, -2.0, 0.0 )
+ glRotatef( -2.0*self.angle-9.0, 0.0, 0.0, 1.0 )
+ glCallList(self.gear2)
+ glPopMatrix()
+
+ glPushMatrix()
+ glTranslatef( -3.1, 2.2, -1.8 )
+ glRotatef( 90.0, 1.0, 0.0, 0.0 )
+ glRotatef( 2.0*self.angle-2.0, 0.0, 0.0, 1.0 )
+ glCallList(self.gear3)
+ glPopMatrix()
+
+ glPopMatrix()
+
+ def resizeGL(self,width,height):
+ w = width / float(height)
+ h = 1.0
+
+ glViewport( 0, 0, width, height )
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ glFrustum( -w, w, -h, h, 5.0, 60.0 )
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+ glTranslatef( 0.0, 0.0, -40.0 )
+
+ def initializeGL(self):
+ pos=(5.0, 5.0, 10.0, 1.0 )
+ ared=(0.8, 0.1, 0.0, 1.0 )
+ agreen=(0.0, 0.8, 0.2, 1.0 )
+ ablue=(0.2, 0.2, 1.0, 1.0 )
+
+ glLightfv(GL_LIGHT0,GL_POSITION,pos)
+ glEnable(GL_CULL_FACE)
+ glEnable(GL_LIGHTING)
+ glEnable(GL_LIGHT0)
+ glEnable(GL_DEPTH_TEST)
+
+ self.gear1=glGenLists(1)
+ glNewList(self.gear1,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ared)
+ gear(1.0,4.0,1.0,20,0.7)
+ glEndList()
+
+ self.gear2=glGenLists(1)
+ glNewList(self.gear2,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,agreen)
+ gear(0.5,2.0,2.0,10,0.7)
+ glEndList()
+
+ self.gear3=glGenLists(1)
+ glNewList(self.gear3,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ablue)
+ gear(1.3,2.0,0.5,10,0.7)
+ glEndList()
+
+ glEnable(GL_NORMALIZE)
+
+##############################################################################
+if __name__=='__main__':
+ QApplication.setColorSpec(QApplication.CustomColor)
+ app=QApplication(sys.argv)
+
+ if not QGLFormat.hasOpenGL():
+ raise 'No Qt OpenGL support.'
+
+ widget=GearWidget()
+ app.setMainWidget(widget)
+ widget.show()
+ app.exec_loop()
diff --git a/python/pyqt/examples2/menu.py b/python/pyqt/examples2/menu.py
new file mode 100755
index 00000000..36efffa8
--- /dev/null
+++ b/python/pyqt/examples2/menu.py
@@ -0,0 +1,301 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys, string
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+# XPM
+p1_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFF0000",
+" ",
+" ",
+" .... ",
+" .XXXX. ",
+" .............. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .............. ",
+" "
+]
+
+# XPM
+p2_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ...... ",
+" .XXX.X. ",
+" .XXX.XX. ",
+" .XXX.XXX. ",
+" .XXX..... ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" ......... ",
+" ",
+" "
+]
+
+# XPM
+p3_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ",
+" ......... ",
+" ........... ",
+" ........ .. ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ......... ",
+" ",
+" "
+]
+
+p4_xpm = [
+' 16 14 5 1',
+'. c #000000',
+'# c #848284',
+'a c #c6c3c6',
+'b c #ffff00',
+'c c #ffffff',
+'aaaaa.........aa',
+'aaaa.cccccccc.aa',
+'aaaa.c.....c.aaa',
+'aaa.cccccccc.aaa',
+'aaa.c.....c....a',
+'aa.cccccccc.a.a.',
+'a..........a.a..',
+'.aaaaaaaaaa.a.a.',
+'.............aa.',
+'.aaaaaa###aa.a.a',
+'.aaaaaabbbaa...a',
+'.............a.a',
+'a.aaaaaaaaa.a.aa',
+'aa...........aaa'
+]
+
+# Auxiliary class to provide fancy menu items with different fonts.
+# Used for the "bold" and "underline" menu items in the options menu.
+
+#class MyMenuItem( QCustomMenuItem ):
+# def __init__( self, s=None, f=None ):
+# apply( QCustomMenuItem.__init__,( self, s, f ) )
+# string = QString( s )
+# font = QFont( f )
+
+# def paint( self, p, TRUE, FALSE, x, y, w, h ) :
+# p.setFont ( font )
+# p.drawText( x, y, w, h, Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, string )
+# def sizeHint( self ):
+# return QFontMetrics( font ).size( Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, string )
+
+
+#
+### Implementation of MenuExample class
+#
+
+class MenuExample( QWidget ):
+ def __init__( self, parent=None, name=None ):
+ apply( QWidget.__init__,(self, parent, name) )
+ self.p1 = QIconSet( QPixmap ( p1_xpm ) )
+ self.p2 = QIconSet( QPixmap ( p2_xpm ) )
+ self.p3 = QIconSet( QPixmap ( p3_xpm ) )
+ self.p4 = QIconSet( QPixmap ( p4_xpm ) )
+ #openIcon = QPixmap()
+ #saveIcon = QPixmap()
+ #printIcon = QPixmap()
+
+ self.printer = QPopupMenu( self )
+ #CHECK_PTR( self.printer )
+ self.printer.insertTearOffHandle()
+ self.printer.insertItem( "&Print to printer", self.printDoc )
+ self.printer.insertItem( "Print to &file", self.file )
+ self.printer.insertItem( "Print to fa&x", self.fax )
+ self.printer.insertSeparator()
+ self.printer.insertItem( "Printer &Setup", self.printerSetup )
+
+ self.file = QPopupMenu( self )
+ #CHECK_PTR( self.file );
+ self.file.insertItem( self.p1, "&Open", self.open, Qt.CTRL+Qt.Key_O )
+ self.file.insertItem( self.p2, "&New", self.news, Qt.CTRL+Qt.Key_N )
+ self.file.insertItem( self.p3, "&Save", self.save, Qt.CTRL+Qt.Key_S )
+ self.file.insertItem( "&Close", self.closeDoc, Qt.CTRL+Qt.Key_W )
+ self.file.insertSeparator()
+ self.file.insertItem( self.p4, "&Print", self.printer, Qt.CTRL+Qt.Key_P )
+ self.file.insertSeparator()
+ self.file.insertItem( "E&xit", qApp, SLOT( "quit()" ), Qt.CTRL+Qt.Key_Q )
+
+ self.edit = QPopupMenu( self )
+ #CHECK_PTR( self.edit )
+ undoID = self.edit.insertItem( "&Undo", self.undo )
+ redoID = self.edit.insertItem( "&Redo", self.redo )
+ self.edit.setItemEnabled( undoID, TRUE )
+ self.edit.setItemEnabled( redoID, FALSE )
+
+ self.options = QPopupMenu( self )
+ #CHECK_PTR( self.options )
+ self.options.insertTearOffHandle()
+ self.options.setCaption( 'Options' )
+ self.options.insertItem( "&Normal Font", self.normal )
+ self.options.insertSeparator()
+
+ self.options.polish() # adjust system settings
+ self.f = QFont( self.options.font() )
+ self.f.setBold( TRUE )
+ self.boldID = self.options.insertItem( "&Bold" )
+ self.options.setAccel( Qt.CTRL+Qt.Key_B, self.boldID )
+ self.options.connectItem( self.boldID, self.bold )
+
+ self.f = QFont( self.options.font() )
+ self.f.setUnderline( TRUE )
+ self.underlineID = self.options.insertItem( "&Underline" )
+ self.options.setAccel( Qt.CTRL+Qt.Key_U, self.underlineID )
+ self.options.connectItem( self.underlineID, self.underline )
+
+ self.isBold = FALSE
+ self.isUnderline = FALSE
+ self.options.setCheckable( TRUE )
+
+ self.options = QPopupMenu()
+ #CHECK_PTR( self.options )
+ self.options.insertItem( "&Normal Font", self.normal )
+ self.options.insertSeparator()
+ self.boldID = self.options.insertItem( "&Bold", self.bold )
+ self.underlineID = self.options.insertItem( "&Underline", self.underline )
+
+ self.isBold = FALSE
+ self.isUnderline = FALSE
+ self.options.setCheckable( TRUE )
+
+ self.help = QPopupMenu( self )
+ #CHECK_PTR( self.help )
+ self.help.insertItem( "&About", self.about, Qt.CTRL+Qt.Key_H )
+ self.help.insertItem( "About &Qt", self.aboutQt )
+
+ self.menu = QMenuBar( self )
+ #CHECK_PTR( self.menu );
+ self.menu.insertItem( "&File", self.file )
+ self.menu.insertItem( "&Edit", self.edit )
+ self.menu.insertItem( "&Options", self.options )
+ self.menu.insertSeparator()
+ self.menu.insertItem( "&Help", self.help )
+ self.menu.setSeparator( QMenuBar.InWindowsStyle )
+
+ self.label = QLabel( self )
+ #CHECK_PTR( self.label )
+ self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 )
+ self.label.setFrameStyle( QFrame.Box | QFrame.Raised )
+ self.label.setLineWidth( 1 )
+ self.label.setAlignment( Qt.AlignCenter )
+
+ self.label.setFont( QFont( "times", 12, QFont.Bold ) )
+ self.connect( self, PYSIGNAL( "explain" ), self.label.setText )
+ #self.connect( self, PYSIGNAL( "explain(const char *)" ),
+ # self.label, SLOT( "setText(const char *)" ) )
+
+ self.setMinimumSize( 100, 80 )
+
+ def open( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Open selected", ) )
+
+ def news( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/New selected", ) )
+
+ def save( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Save selected", ) )
+
+ def closeDoc( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Close selected", ) )
+
+ def undo( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "Edit/Undo selected", ) )
+
+ def redo( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "Edit/Redo selected", ) )
+
+ def normal( self ):
+ self.isBold = FALSE
+ self.isUnderline = FALSE
+ self.options.setItemChecked( self.boldID, self.isBold )
+ self.options.setItemChecked( self.underlineID, self.isUnderline )
+ self.emit(PYSIGNAL("explain"), ("Options/Normal selected",))
+
+ def bold( self ):
+ self.isBold = not self.isBold
+ self.options.setItemChecked( self.boldID, self.isBold )
+ self.emit ( PYSIGNAL( "explain" ), ( "Options/Bold selected", ) )
+
+ def underline( self ):
+ self.isUnderline = not self.isUnderline
+ self.options.setItemChecked( self.underlineID, self.isUnderline )
+ self.emit(PYSIGNAL("explain"), ("Options/Underline selected",))
+
+ def about( self ):
+ QMessageBox.about( self, "Qt Menu Example",
+ "This example demonstrates simple use of Qt menus.\n"
+ "You can cut and paste lines from it to your own\n"
+ "programs." )
+
+ def aboutQt( self ):
+ QMessageBox.aboutQt( self, "Qt Menu Example" )
+
+ def printDoc( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Printer/Print selected", ) )
+
+ def file( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Printer/Print To File selected", ) )
+
+ def fax( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Printer/Print To Fax selected", ) )
+
+ def printerSetup( self ):
+ self.emit ( PYSIGNAL( "explain" ), ( "File/Printer/Printer Setup selected", ) )
+
+ def resizeEvent( self, ev ):
+ self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 )
+
+a = QApplication( sys.argv )
+m = MenuExample()
+
+a.setMainWidget( m )
+m.setCaption( 'MenuExample' )
+m.show()
+#a.connect( a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()') )
+a.exec_loop()
diff --git a/python/pyqt/examples2/qt.png b/python/pyqt/examples2/qt.png
new file mode 100644
index 00000000..ca630a56
--- /dev/null
+++ b/python/pyqt/examples2/qt.png
Binary files differ
diff --git a/python/pyqt/examples2/qtlogo.png b/python/pyqt/examples2/qtlogo.png
new file mode 100644
index 00000000..25c1ebb5
--- /dev/null
+++ b/python/pyqt/examples2/qtlogo.png
Binary files differ
diff --git a/python/pyqt/examples2/secret.py b/python/pyqt/examples2/secret.py
new file mode 100644
index 00000000..7023a0b0
--- /dev/null
+++ b/python/pyqt/examples2/secret.py
@@ -0,0 +1,65 @@
+# This is part of the dragdrop example.
+
+
+from qt import *
+
+
+def canDecode(e):
+ return e.provides( "secret/magic" )
+
+
+def decode(e):
+ payload = str(e.data( "secret/magic" ))
+ if ( str(payload) != '' ):
+ e.accept()
+ return QString("The secret number is "+str(ord(payload)) )
+
+ return None
+
+
+class SecretDrag(QStoredDrag):
+ def __init__(self, secret, parent=None, name=None):
+ QStoredDrag.__init__(self, 'secret/magic', parent, name)
+ data = QByteArray(chr(secret))
+ self.setEncodedData( data )
+
+
+# XPM
+picture_xpm = [
+ "16 16 3 1",
+ " c None",
+ ". c #000000",
+ "X c #FFFF00",
+ " ..... ",
+ " ..XXXXX.. ",
+ " .XXXXXXXXX. ",
+ " .XXXXXXXXXXX. ",
+ " .XX..XXX..XX. ",
+ ".XXXXXXXXXXXXX. ",
+ ".XX...XXX...XX. ",
+ ".XXX..XXX..XXX. ",
+ ".XXXXXXXXXXXXX. ",
+ ".XXXXXX.XXXXXX. ",
+ " .XX.XX.XX.XX. ",
+ " .XXX..X..XXX. ",
+ " .XXXXXXXXX. ",
+ " ..XXXXX.. ",
+ " ..... ",
+ " "
+]
+
+
+class SecretSource(QLabel):
+ def __init__(self, secret, parent=None, name=None):
+ QLabel.__init__(self, "Secret", parent, name)
+ self.setBackgroundColor( Qt.blue.light() )
+ self.setFrameStyle( QLabel.Box | QLabel.Sunken )
+ self.setMinimumHeight( self.sizeHint().height()*2 )
+ self.setAlignment( QLabel.AlignCenter )
+ self.mySecret = secret
+
+ def mousePressEvent(self, e):
+ sd = SecretDrag( self.mySecret, self )
+ sd.setPixmap(QPixmap(picture_xpm),QPoint(8,8))
+ sd.dragCopy()
+ self.mySecret = self.mySecret + 1
diff --git a/python/pyqt/examples2/semaphore.py b/python/pyqt/examples2/semaphore.py
new file mode 100755
index 00000000..5a3ab92c
--- /dev/null
+++ b/python/pyqt/examples2/semaphore.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+#
+# A port of the semaphore example from Qt.
+
+
+import sys
+
+# Check if thread support was enabled.
+try:
+ from qt import QThread
+except:
+ print "Thread support not enabled"
+ sys.exit(1)
+
+from qt import *
+
+
+# The semaphore instances.
+yellowSem = None
+greenSem = None
+
+
+class YellowThread(QThread):
+ def __init__(self,o):
+ QThread.__init__(self)
+
+ self.receiver = o
+ self.stopped = 0
+ self.mutex = QMutex()
+
+ def run(self):
+ global yellowSem, greenSem
+
+ for i in range(20):
+ yellowSem += 1
+
+ event = QCustomEvent(12345)
+ event.setData(QString("Yellow!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(200);
+
+ greenSem -= 1
+
+ self.mutex.lock()
+ if self.stopped:
+ self.stopped = 0
+ self.mutex.unlock()
+ break
+
+ self.mutex.unlock()
+
+ yellowSem += 1
+
+ event = QCustomEvent(12346)
+ event.setData(QString("Yellow!"))
+ QThread.postEvent(self.receiver,event)
+
+ greenSem -= 1
+
+ def stop(self):
+ self.mutex.lock()
+ self.stopped = 1
+ self.mutex.unlock()
+
+
+class GreenThread(QThread):
+ def __init__(self,o):
+ QThread.__init__(self)
+
+ self.receiver = o
+ self.stopped = 0
+ self.mutex = QMutex()
+
+ def run(self):
+ global yellowSem, greenSem
+
+ for i in range(20):
+ greenSem += 1
+
+ event = QCustomEvent(12345)
+ event.setData(QString("Green!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(200)
+
+ yellowSem -= 1
+
+ self.mutex.lock()
+ if self.stopped:
+ self.stopped = 0
+ self.mutex.unlock()
+ break
+
+ self.mutex.unlock()
+
+ greenSem += 1
+
+ event = QCustomEvent(12346)
+ event.setData(QString("Green!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(10)
+
+ yellowSem -= 1
+
+ def stop(self):
+ self.mutex.lock()
+ self.stopped = 1
+ self.mutex.unlock()
+
+
+class SemaphoreExample(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+
+ self.yellowThread = YellowThread(self)
+ self.greenThread = GreenThread(self)
+
+ global yellowSem, greenSem
+ yellowSem = QSemaphore(1)
+ greenSem = QSemaphore(1)
+
+ self.button = QPushButton("&Ignition!",self)
+ self.connect(self.button,SIGNAL("clicked()"),self.startExample)
+
+ self.mlineedit = QMultiLineEdit(self)
+ self.label = QLabel(self)
+
+ vbox = QVBoxLayout(self,5)
+ vbox.addWidget(self.button)
+ vbox.addWidget(self.mlineedit)
+ vbox.addWidget(self.label)
+
+ def __del__(self):
+ stopYellow = self.yellowThread.running()
+ stopGreen = self.greenThread.running()
+
+ if stopYellow:
+ self.yellowThread.stop()
+
+ if self.greenThread.running():
+ self.greenThread.stop()
+
+ if stopYellow:
+ self.yellowThread.wait()
+
+ if stopGreen:
+ self.greenThread.wait()
+
+ global yellowSem, greenSem
+ yellowSem = None
+ greenSem = None
+
+ def startExample(self):
+ if self.yellowThread.running() or self.greenThread.running():
+ QMessageBox.information(self,"Sorry",
+ "The threads have not completed yet, and must finish before "
+ "they can be started again.")
+
+ return
+
+ self.mlineedit.clear()
+
+ global yellowSem
+
+ while yellowSem.available() < yellowSem.total():
+ yellowSem -= 1
+
+ yellowSem += 1
+
+ self.yellowThread.start()
+ self.greenThread.start()
+
+ def customEvent(self,event):
+ if event.type() == 12345:
+ s = event.data()
+
+ self.mlineedit.append(s)
+
+ if s.latin1() == "Green!":
+ self.label.setBackgroundColor(Qt.green)
+ else:
+ self.label.setBackgroundColor(Qt.yellow)
+
+ self.label.setText(s)
+
+ del s
+ elif event.type() == 12346:
+ s = event.data()
+
+ QMessageBox.information(self,s.latin1() + " - Finished",
+ "The thread creating the \"" + s.latin1() +
+ "\" events has finished.")
+
+ del s
+ else:
+ print "Unknown custom event type:", event.type()
+
+
+app = QApplication(sys.argv)
+se = SemaphoreExample()
+app.setMainWidget(se)
+se.show()
+
+sys.exit(app.exec_loop())
diff --git a/python/pyqt/examples2/splitter.py b/python/pyqt/examples2/splitter.py
new file mode 100755
index 00000000..1c2fef7b
--- /dev/null
+++ b/python/pyqt/examples2/splitter.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+class Test(QWidget):
+ def __init__(self, parent=None, name='Test', f=0):
+ QWidget.__init__(self, parent, name, f)
+
+ def paintEvent(self, e):
+ p = QPainter(self)
+ p.setClipRect(e.rect())
+ d = 1000
+ x1 = 0
+ x2 = self.width() - 1
+ y1 = 0
+ y2 = self.height() - 1
+
+ x = (x1+x2)/2
+ p.drawLine(x, y1, x+d, y1+d)
+ p.drawLine(x, y1, x-d, y1+d)
+ p.drawLine(x, y2, x+d, y2-d)
+ p.drawLine(x, y2, x-d, y2-d)
+
+ y = (y1+y2)/2
+ p.drawLine(x1, y, x1+d, y+d)
+ p.drawLine(x1, y, x1+d, y-d)
+ p.drawLine(x2, y, x2-d, y+d)
+ p.drawLine(x2, y, x2-d, y-d)
+
+
+if __name__=="__main__":
+ a = QApplication(sys.argv)
+
+ s1 = QSplitter(Qt.Vertical, None, "main")
+ s2 = QSplitter(Qt.Horizontal, s1, "top")
+
+ t1 = Test(s2)
+ t1.setBackgroundColor(Qt.blue.light(180))
+ t1.setMinimumSize(50,0)
+
+ t2 = Test(s2)
+ t2.setBackgroundColor(Qt.green.light(180))
+ s2.setResizeMode(t2, QSplitter.KeepSize)
+ s2.moveToFirst(t2)
+
+ s3 = QSplitter(Qt.Horizontal, s1, "bottom")
+
+ t3 = Test(s3)
+ t3.setBackgroundColor(Qt.red)
+ t4 = Test(s3)
+ t4.setBackgroundColor(Qt.white)
+
+ t5 = Test(s3)
+ t5.setMaximumHeight(250)
+ t5.setMinimumSize(80,50)
+ t5.setBackgroundColor(Qt.yellow)
+
+ s1.setOpaqueResize(1)
+ s2.setOpaqueResize(1)
+ s3.setOpaqueResize(1)
+
+ a.setMainWidget(s1)
+ s1.show()
+ a.exec_loop()
diff --git a/python/pyqt/examples2/table.py b/python/pyqt/examples2/table.py
new file mode 100755
index 00000000..58fd04bd
--- /dev/null
+++ b/python/pyqt/examples2/table.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+class Table(QTableView):
+ def __init__(self, numRows, numCols, parent=None, name=''):
+ QTableView.__init__(self, parent, name)
+ self.curRow = self.curCol = 0
+ self.setFocusPolicy(QWidget.StrongFocus)
+ self.setBackgroundMode(QWidget.PaletteBase)
+ self.setNumCols(numCols)
+ self.setNumRows(numRows)
+ self.setCellWidth(100)
+ self.setCellHeight(30)
+ self.setTableFlags(Tbl_vScrollBar |
+ Tbl_hScrollBar |
+ Tbl_clipCellPainting)
+ self.resize(400,200)
+ self.contents = [''] * (numRows * numCols)
+
+ def cellContent(self, row, col):
+ return self.contents[self.indexOf(row,col)]
+
+ def setCellContent(self, row, col, c):
+ self.contents[self.indexOf(row,col)] = c
+ self.updateCell(row, col)
+
+ def paintCell(self, p, row, col):
+ w = self.cellWidth(col)
+ h = self.cellHeight(row)
+ x2 = w-1
+ y2 = h-1
+
+ p.drawLine(x2,0,x2,y2)
+ p.drawLine(0,y2,x2,y2)
+
+ if row == self.curRow and col == self.curCol:
+ if self.hasFocus():
+ p.drawRect(0, 0, x2, y2)
+ else:
+ p.setPen(Qt.DotLine)
+ p.drawRect(0, 0, x2, y2)
+ p.setPen(Qt.SolidLine)
+
+ p.drawText(0,0,w,h,Qt.AlignCenter,self.contents[self.indexOf(row,col)])
+
+ def mousePressEvent(self, me):
+ oldRow = self.curRow
+ oldCol = self.curCol
+ clickedPos = me.pos()
+ self.curRow = self.findRow(clickedPos.y())
+ self.curCol = self.findCol(clickedPos.x())
+ if self.curRow != oldRow or \
+ self.curCol != oldCol:
+ self.updateCell(oldRow, oldCol)
+ self.updateCell(self.curRow, self.curCol)
+
+ def keyPressEvent(self, ke):
+ oldRow = self.curRow
+ oldCol = self.curCol
+ edge = 0
+ key = ke.key()
+ if key == Key_Left:
+ if self.curCol > 0:
+ self.curCol = self.curCol - 1
+ edge = self.leftCell()
+ if self.curCol < edge:
+ self.setLeftCell(edge-1)
+ elif key == Key_Right:
+ if self.curCol < self.numCols()-1:
+ self.curCol = self.curCol + 1
+ edge = self.lastColVisible()
+ if self.curCol >= edge:
+ self.setLeftCell(self.leftCell()+1)
+ elif key == Key_Up:
+ if self.curRow > 0:
+ self.curRow = self.curRow - 1
+ edge = self.topCell()
+ if self.curRow < edge:
+ self.setTopCell(edge-1)
+ elif key == Key_Down:
+ if self.curRow < self.numRows()-1:
+ self.curRow = self.curRow + 1
+ edge = self.lastRowVisible()
+ if self.curRow >= edge:
+ self.setTopCell(self.topCell()+1)
+ else:
+ ke.ignore()
+ return
+
+ if self.curRow != oldRow or \
+ self.curCol != oldCol:
+ self.updateCell(oldRow, oldCol)
+ self.updateCell(self.curRow, self.curCol)
+
+ def focusInEvnet(self, fie):
+ self.updateCell(self.curRow, self.curCol)
+
+ def focusOutEvent(self, foe):
+ self.updateCell(self.curRow, self.curCol)
+
+ def indexOf(self, row, col):
+ return (row * self.numCols()) + col
+
+numRows = 20
+numCols = 20
+a = QApplication(sys.argv)
+v = Table(numRows, numCols)
+for i in range(numRows):
+ for j in range(numCols):
+ v.setCellContent(i,j,'%d %c' % (j, 65+(i%26)))
+a.setMainWidget(v)
+v.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/themes.py b/python/pyqt/examples2/themes.py
new file mode 100755
index 00000000..b3dae552
--- /dev/null
+++ b/python/pyqt/examples2/themes.py
@@ -0,0 +1,2484 @@
+#!/usr/bin/env python
+
+# This is a port to PyQt of the Qt v2.x example program. It does not (yet)
+# include the implementation of all of the example widgets.
+
+
+FALSE=0
+TRUE=1
+
+# Python modules
+
+import os, sys
+
+# include files for QT
+
+from qt import *
+
+
+class ButtonsGroups(QVBox):
+
+ def __init__(self, parent=None, name=None):
+ QVBox.__init__(self, parent, name)
+
+ # Create widgets which allow easy layouting
+ box1=QHBox(self)
+ box2=QHBox(self)
+
+ # first group
+
+ # Create an exclusive button group
+ grp1=QButtonGroup( 1
+ , QGroupBox.Horizontal
+ , "Button Group 1 (exclusive)"
+ , box1
+ )
+ grp1.setExclusive(TRUE)
+
+ # insert 3 radiobuttons
+ rb11=QRadioButton("&Radiobutton 1", grp1)
+ rb11.setChecked(TRUE)
+ QRadioButton("R&adiobutton 2", grp1)
+ QRadioButton("Ra&diobutton 3", grp1)
+
+ # second group
+
+ # Create a non-exclusive buttongroup
+ grp2=QButtonGroup( 1
+ , QGroupBox.Horizontal
+ , "Button Group 2 (non-exclusive)"
+ , box1
+ )
+ grp2.setExclusive(FALSE)
+
+ # insert 3 checkboxes
+ QCheckBox("&Checkbox 1", grp2)
+ cb12=QCheckBox("C&heckbox 2", grp2)
+ cb12.setChecked(TRUE)
+ cb13=QCheckBox("Triple &State Button", grp2)
+ cb13.setTristate(TRUE)
+ cb13.setChecked(TRUE)
+
+ # third group
+
+ # create a buttongroup which is exclusive for radiobuttons and
+ # non-exclusive for all other buttons
+ grp3=QButtonGroup( 1
+ , QGroupBox.Horizontal
+ , "Button Group 3 (Radiobutton-exclusive)"
+ , box2
+ )
+ grp3.setRadioButtonExclusive(TRUE)
+
+ # insert three radiobuttons
+ self.rb21=QRadioButton("Rad&iobutton 1", grp3)
+ self.rb22=QRadioButton("Radi&obutton 2", grp3)
+ self.rb23=QRadioButton("Radio&button 3", grp3)
+ self.rb23.setChecked(TRUE)
+
+ # insert a checkbox...
+ self.state=QCheckBox("E&nable Radiobuttons", grp3)
+ self.state.setChecked(TRUE)
+ # ...and connect its SIGNAL clicked() with the SLOT slotChangeGrp3State()
+ self.connect(self.state, SIGNAL('clicked()'),self.slotChangeGrp3State)
+
+ # fourth group
+
+ # create a groupbox which lays out its childs in a column
+ grp4=QGroupBox( 1
+ , QGroupBox.Horizontal
+ , "Groupbox with normal buttons"
+ , box2
+ )
+
+ # insert two pushbuttons...
+ QPushButton("&Push Button", grp4)
+ tb=QPushButton("&Toggle Button", grp4)
+
+ # ...and make the second one a toggle button
+ tb.setToggleButton(TRUE)
+ tb.setOn(TRUE)
+
+ def slotChangeGrp3State(self):
+ self.rb21.setEnabled(self.state.isChecked())
+ self.rb22.setEnabled(self.state.isChecked())
+ self.rb23.setEnabled(self.state.isChecked())
+
+
+class LineEdits(QVBox):
+
+ def __init__(self, parent=None, name=None):
+ QVBox.__init__(self, parent, name)
+
+ self.setMargin(10)
+
+ # Widget for layouting
+ row1=QHBox(self)
+ row1.setMargin(5)
+
+ # Create a label
+ QLabel("Echo Mode: ", row1)
+
+ # Create a Combobox with three items...
+ self.combo1=QComboBox(FALSE, row1)
+ self.combo1.insertItem("Normal", -1)
+ self.combo1.insertItem("Password", -1)
+ self.combo1.insertItem("No Echo", -1)
+ # ...and connect the activated() SIGNAL with the slotEchoChanged SLOT to be
+ # able to react when an item is selected
+ self.connect(self.combo1, SIGNAL('activated(int)'), self.slotEchoChanged)
+
+ # insert the first LineEdit
+ self.lined1=QLineEdit(self)
+
+ # another widget which is used for layouting
+ row2=QHBox(self)
+ row2.setMargin(5)
+
+ # and the second label
+ QLabel("Validator: ", row2)
+
+ # A second Combobox with again three items...
+ self.combo2=QComboBox(FALSE, row2)
+ self.combo2.insertItem("No Validator", -1)
+ self.combo2.insertItem("Integer Validator", -1)
+ self.combo2.insertItem("Double Validator", -1)
+ # ...and again the activated() SIGNAL gets connected with a SLOT
+ self.connect(self.combo2, SIGNAL('activated(int)'), self.slotValidatorChanged)
+
+ # and the second LineEdit
+ self.lined2=QLineEdit(self)
+
+ # yet another widget which is used for layouting
+ row3=QHBox(self)
+ row3.setMargin(5)
+
+ # we need a label for this too
+ QLabel("Alignment: ", row3)
+
+ # A combo box for setting alignment
+ self.combo3=QComboBox(FALSE, row3)
+ self.combo3.insertItem("Left", -1)
+ self.combo3.insertItem("Centered", -1)
+ self.combo3.insertItem("Right", -1)
+ # ...and again the activated() SIGNAL gets connected with a SLOT
+ self.connect(self.combo3, SIGNAL('activated(int)'), self.slotAlignmentChanged)
+
+ # and the lineedit
+ self.lined3=QLineEdit(self)
+
+ # give the first LineEdit the focus at the beginning
+ self.lined1.setFocus()
+
+ def slotEchoChanged(self, i):
+ if i == 0:
+ self.lined1.setEchoMode(QLineEdit.EchoMode.Normal)
+ elif i == 1:
+ self.lined1.setEchoMode(QLineEdit.EchoMode.Password)
+ elif i == 2:
+ self.lined1.setEchoMode(QLineEdit.EchoMode.NoEcho)
+
+ self.lined1.setFocus()
+
+ def slotValidatorChanged(self, i):
+ if i == 0:
+ self.validator=None
+ self.lined2.setValidator(self.validator)
+ elif i == 1:
+ self.validator=QIntValidator(self.lined2)
+ self.lined2.setValidator(self.validator)
+ elif i == 2:
+ self.validator=QDoubleValidator(-999.0, 999.0, 2, self.lined2)
+ self.lined2.setValidator(self.validator)
+
+ self.lined2.setText("")
+ self.lined2.setFocus()
+
+ def slotAlignmentChanged(self, i):
+ if i == 0:
+ self.lined3.setAlignment(Qt.AlignLeft)
+ elif i == 1:
+ self.lined3.setAlignment(Qt.AlignCenter)
+ elif i == 2:
+ self.lined3.setAlignment(Qt.AlignRight)
+
+ self.lined3.setFocus()
+
+
+class ProgressBar(QVBox):
+
+ def __init__(self, parent=None, name=None):
+ QVBox.__init__(self, parent, name)
+
+ self.timer=QTimer()
+
+ self.setMargin(10)
+
+ # Create a radiobutton-exclusive Buttongroup which aligns its childs in two
+ # columns
+ bg=QButtonGroup(2, QGroupBox.Horizontal, self)
+ bg.setRadioButtonExclusive(TRUE)
+
+ # insert three radiobuttons which the user can use to set the speed of the
+ # progress and two pushbuttons to start/pause/continue and reset the
+ # progress
+ self.slow=QRadioButton("&Slow", bg)
+ self.start=QPushButton("S&tart", bg)
+ self.normal=QRadioButton("&Normal", bg)
+ self.reset=QPushButton("&Reset", bg)
+ self.fast=QRadioButton("&Fast", bg)
+
+ # Create the progressbar
+ self.progress=QProgressBar(100, self)
+
+ # connect the clicked() SIGNALs of the pushbuttons to SLOTs
+ self.connect(self.start, SIGNAL('clicked()'), self.slotStart)
+ self.connect(self.reset, SIGNAL('clicked()'), self.slotReset)
+
+ # connect the timeout() SIGNAL of the progress-timer to a SLOT
+ self.connect(self.timer, SIGNAL('timeout()'), self.slotTimeout)
+
+ # Let's start with normal speed...
+ self.normal.setChecked(TRUE)
+
+ def slotStart(self):
+ # If the progress bar is at the beginning...
+ if self.progress.progress() == -1:
+ # ...set according to the checked speed-radionbutton the number of steps
+ # which are needed to complete the process
+ if self.slow.isChecked():
+ self.progress.setTotalSteps(10000)
+ elif self.normal.isChecked():
+ self.progress.setTotalSteps(1000)
+ else:
+ self.progress.setTotalSteps(50)
+
+ # disable the speed-radiobuttons
+ self.slow.setEnabled(FALSE)
+ self.normal.setEnabled(FALSE)
+ self.fast.setEnabled(FALSE)
+
+ # If the progress is not running...
+ if not self.timer.isActive():
+ # ...start the time (and so the progress) with an interval fo 1ms...
+ self.timer.start(1)
+ # ...and rename the start/pause/continue button to Pause
+ self.start.setText("&Pause")
+ else:
+ # ...stop the timer (and so the progress)...
+ self.timer.stop()
+ # ...and rename the start/pause/continue button to Continue
+ self.start.setText("&Continue")
+
+ def slotReset(self):
+ # stop the timer and progress
+ self.timer.stop()
+
+ # rename the start/pause/continue button to Start...
+ self.start.setText("&Start")
+ # ...and enable this button
+ self.start.setEnabled(TRUE)
+
+ # enable the speed-radiobuttons
+ self.slow.setEnabled(TRUE)
+ self.normal.setEnabled(TRUE)
+ self.fast.setEnabled(TRUE)
+
+ # reset the progressbar
+ self.progress.reset()
+
+ def slotTimeout(self):
+ p = self.progress.progress()
+
+ # If the progress is complete...
+ if p == self.progress.totalSteps():
+ # ...rename the start/pause/continue button to Start...
+ self.start.setText("&Start")
+ # ...and disable it...
+ self.start.setEnabled(FALSE)
+ # ...and return
+ return
+
+ # If the progress is not complete increase it
+ self.progress.setProgress(p+1)
+
+
+class ListBoxCombo(QVBox):
+
+ def __init__(self, parent=None, name=None):
+ QVBox.__init__(self, parent, name)
+
+ self.setMargin(5)
+
+ row1=QHBox(self)
+ row1.setMargin(5)
+
+ # Create a multi-selection ListBox...
+ self.lb1=QListBox(row1)
+ self.lb1.setMultiSelection(TRUE)
+
+ # ...insert a pixmap item...
+ self.lb1.insertItem(QPixmap("qtlogo.png"))
+ # ...and 100 text items
+ for i in range(100):
+ str=QString("Listbox Item %1").arg(i)
+ self.lb1.insertItem(str)
+
+ # Create a pushbutton...
+ self.arrow1=QPushButton(" -> ", row1)
+ # ...and connect the clicked SIGNAL with the SLOT slotLeft2Right
+ self.connect(self.arrow1, SIGNAL('clicked()'), self.slotLeft2Right)
+
+ # create an empty single-selection ListBox
+ self.lb2=QListBox(row1)
+
+ def slotLeft2Right(self):
+ # Go through all items of the first ListBox
+ for i in range(self.lb1.count()):
+ item=self.lb1.item(i)
+ # if the item is selected...
+ if item.selected():
+ # ...and it is a text item...
+ if not item.text().isEmpty():
+ # ...insert an item with the same text into the second ListBox
+ self.lb2.insertItem(QListBoxText(item.text()))
+ # ...and if it is a pixmap item...
+ elif item.pixmap():
+ # ...insert an item with the same pixmap into the second ListBox
+ self.lb2.insertItem(QListBoxPixmap(item.pixmap()))
+
+
+class NorwegianWoodStyle(QMotifStyle):
+
+ def __init__(self):
+ QMotifStyle.__init__(self)
+
+ def polish(self,o):
+ if isinstance(o,QApplication):
+ self.polish_qapplication(o)
+ elif isinstance(o,QWidget):
+ self.polish_qwidget(o)
+ else:
+ QMotifStyle.polish(self,o)
+
+ def unPolish(self,o):
+ if isinstance(o,QApplication):
+ self.unPolish_qapplication(o)
+ elif isinstance(o,QWidget):
+ self.unPolish_qwidget(o)
+ else:
+ QMotifStyle.unPolish(self,o)
+
+ def polish_qapplication(self,app):
+ global button_xpm, polish_xpm
+
+ self.oldPalette=app.palette()
+
+ # we simply create a nice QColorGroup with a couple of fancy wood pixmaps
+ # here and apply it to all widgets
+
+ img=QImage(button_xpm)
+ orig=QImage(img)
+ orig.detach()
+ button=QPixmap()
+ button.convertFromImage(img)
+
+ background=QPixmap(polish_xpm)
+
+ for i in range(img.numColors()):
+ rgb=img.color(i)
+ c=QColor(rgb)
+ (r, g, b)=c.dark().rgb()
+ img.setColor(i,qRgb(r, g, b))
+ mid=QPixmap()
+ mid.convertFromImage(img)
+
+ img=QImage(orig)
+ for i in range(img.numColors()):
+ rgb=img.color(i)
+ c=QColor(rgb)
+ (r, g, b)=c.light().rgb()
+ img.setColor(i,qRgb(r, g, b))
+ light=QPixmap()
+ light.convertFromImage(img)
+
+ img=QImage(orig)
+ for i in range(img.numColors()):
+ rgb=img.color(i)
+ c=QColor(rgb)
+ (r, g, b)=c.dark().rgb()
+ img.setColor(i,qRgb(r, g, b))
+ dark=QPixmap()
+ dark.convertFromImage(img)
+
+ op=QPalette(QColor(212,140,95))
+
+ nor=QColorGroup(QBrush(op.normal().foreground()),
+ QBrush(op.normal().button(), button),
+ QBrush(op.normal().light(), light),
+ QBrush(op.normal().dark(), dark),
+ QBrush(op.normal().mid(), mid),
+ QBrush(op.normal().text()),
+ QBrush(Qt.white),
+ QBrush(QColor(236,182,120)),
+ QBrush(op.normal().background(), background))
+ disabled=QColorGroup(QBrush(op.disabled().foreground()),
+ QBrush(op.disabled().button(), button),
+ QBrush(op.disabled().light(), light),
+ QBrush(op.disabled().dark()),
+ QBrush(op.disabled().mid(), mid),
+ QBrush(op.disabled().text()),
+ QBrush(Qt.white),
+ QBrush(QColor(236,182,120)),
+ QBrush(op.disabled().background(), background))
+ active=QColorGroup(QBrush(op.active().foreground()),
+ QBrush(op.active().button(), button),
+ QBrush(op.active().light(), light),
+ QBrush(op.active().dark()),
+ QBrush(op.active().mid(), mid),
+ QBrush(op.active().text()),
+ QBrush(Qt.white),
+ QBrush(QColor(236,182,120)),
+ QBrush(op.active().background(), background))
+
+ app.setPalette(QPalette(nor, disabled, active), TRUE)
+
+ def unPolish_qapplication(self,app):
+ app.setPalette(self.oldPalette, TRUE)
+
+ def polish_qwidget(self,w):
+ # the polish function will set some widgets to transparent mode, to get the
+ # full benefit from the nice pixmaps in the color group.
+
+ if w.inherits("QTipLabel"):
+ return
+
+ if w.inherits("QLCDNumber"):
+ return
+
+ if not w.isTopLevel():
+ if w.inherits("QLabel") \
+ or w.inherits("QButton") \
+ or w.inherits("QComboBox") \
+ or w.inherits("QGroupBox") \
+ or w.inherits("QSlider") \
+ or w.inherits("QTabWidget") \
+ or w.inherits("QTabBar"):
+ w.setAutoMask(TRUE)
+
+ def unPolish_qwidget(self,w):
+ if w.inherits("QTipLabel"):
+ return
+
+ if w.inherits("QLCDNumber"):
+ return
+
+ if not w.isTopLevel():
+ if w.inherits("QLabel") \
+ or w.inherits("QButton") \
+ or w.inherits("QComboBox") \
+ or w.inherits("QGroupBox") \
+ or w.inherits("QSlider") \
+ or w.inherits("QTabWidget") \
+ or w.inherits("QTabBar"):
+ w.setAutoMask(FALSE)
+
+ def drawroundrect(self, p, x, y, w, h, d):
+ rx=(200*d)/w
+ ry=(200*d)/h
+ p.drawRoundRect(x, y, w, h, rx, ry)
+
+ def drawButton(self, p, x, y, w, h, g, sunken=FALSE, fill=None):
+ qDrawShadePanel(p, x, y, w, h, g, sunken, 5)
+
+ oldBrush=p.brush()
+ oldPen=p.pen()
+ p.setPen(Qt.NoPen)
+ if fill != None:
+ newBrush=fill
+ else:
+ if sunken:
+ newBrush=g.brush(QColorGroup.Mid)
+ else:
+ newBrush=g.brush(QColorGroup.Button)
+ self.drawroundrect(p, x+3, y+3, w-6, h-6, 5)
+ p.setBrush(oldBrush)
+ p.setPen(g.foreground())
+ self.drawroundrect(p, x, y, w, h, 8)
+ p.setPen(oldPen)
+
+ def drawBevelButton(self, p, x, y, w, h, g, sunken=FALSE, fill=None):
+ QMotifStyle.drawBevelButton(self, p, x, y, w, h, g, sunken, fill)
+
+ def drawPushButton(self, btn, p):
+ g = btn.colorGroup()
+
+ (x1, y1, x2, y2)=btn.rect().coords()
+
+ p.setPen(g.foreground())
+ p.setBrush(QBrush(g.button(),Qt.NoBrush))
+
+ if btn.isDown():
+ fill=g.brush(QColorGroup.Mid)
+ elif btn.isOn():
+ fill=QBrush(g.mid(),Qt.Dense4Pattern)
+ else:
+ fill=g.brush(QColorGroup.Button)
+
+ if btn.isDefault():
+ a=QPointArray([x1, y1, x2, y1, x2, y2, x1, y2, x1, y1+1,
+ x2-1, y1+1, x2-1, y2-1, x1+1, y2-1, x1+1, y1+1])
+ p.setPen(Qt.black)
+ p.drawPolyline(a)
+ x1=x1+2
+ y1=y1+2
+ x2=x2-2
+ y2=y2-2
+
+ if btn.isOn() or btn.isDown():
+ sunken=TRUE
+ else:
+ sunken=FALSE
+
+ self.drawButton(p, x1, y1, x2-x1+1, y2-y1+1, g, sunken, fill)
+
+ if btn.isMenuButton():
+ dx=(y1-y2-4)/3
+ self.drawArrow(p, Qt.DownArrow, FALSE,
+ x2-dx, dx, y1, y2-y1,
+ g, btn.isEnabled())
+
+ if p.brush().style != Qt.NoBrush:
+ p.setBrush(Qt.NoBrush)
+
+ def drawPushButtonLabel(self, btn, p):
+ r=btn.rect()
+ (x, y, w, h)=r.rect()
+
+ (x1, y1, x2, y2)=btn.rect().coords()
+ dx=0
+ dy=0
+ if btn.isMenuButton():
+ dx=(y2-y1)/3
+ if dx or dy:
+ p.translate(dx,dy)
+
+ x=x+2
+ y=y+2
+ w=w-4
+ h=h-4
+ g=btn.colorGroup()
+ if btn.isDown() or btn.isOn():
+ pencolour=btn.colorGroup().brightText()
+ else:
+ pencolour=btn.colorGroup().buttonText()
+ self.drawItem(p, x, y, w, h,
+ Qt.AlignCenter|Qt.ShowPrefix,
+ g, btn.isEnabled(),
+ btn.pixmap(), btn.text(), -1,
+ pencolour)
+
+ if dx or dy:
+ p.translate(-dx,-dy)
+
+ def buttonRect(self, x, y, w, h):
+ return QRect(x+3, y+2, w-6, h-4)
+
+ def drawButtonMask(self, p, x, y, w, h):
+ self.drawroundrect(p, x, y, w, h, 8)
+
+
+class MetalStyle(QWindowsStyle):
+
+ def __init__(self):
+ QWindowsStyle.__init__(self)
+
+ def polish(self,o):
+ if isinstance(o,QApplication):
+ self.polish_qapplication(o)
+ elif isinstance(o,QWidget):
+ self.polish_qwidget(o)
+ else:
+ QWindowsStyle.polish(self,o)
+
+ def unPolish(self,o):
+ if isinstance(o,QApplication):
+ self.unPolish_qapplication(o)
+ elif isinstance(o,QWidget):
+ self.unPolish_qwidget(o)
+ else:
+ QWindowsStyle.unPolish(self,o)
+
+ def polish_qapplication(self,app):
+ global stone1_xpm, stonebright_xpm
+
+ self.oldPalette=app.palette()
+
+ # we simply create a nice QColorGroup with a couple of fancy pixmaps here
+ # and apply it to all widgets
+
+ f=QFont("times", app.font().pointSize())
+ f.setBold(TRUE)
+ f.setItalic(TRUE)
+ app.setFont(f, TRUE, "QMenuBar")
+ app.setFont(f, TRUE, "QPopupMenu")
+
+ button=QPixmap(stone1_xpm)
+ background=QPixmap(stonebright_xpm)
+ dark=QPixmap(1,1)
+ dark.fill(Qt.red.dark())
+ mid=QPixmap(stone1_xpm)
+ light=QPixmap(stone1_xpm)
+ op=app.palette()
+
+ backCol=QColor(227,227,227)
+
+ nor=QColorGroup(QBrush(op.normal().foreground()),
+ QBrush(op.normal().button(), button),
+ QBrush(op.normal().light(), light),
+ QBrush(op.normal().dark(), dark),
+ QBrush(op.normal().mid(), mid),
+ QBrush(op.normal().text()),
+ QBrush(Qt.white),
+ QBrush(op.normal().base()),
+ QBrush(backCol, background))
+ nor.setColor(QColorGroup.ButtonText, Qt.white)
+ nor.setColor(QColorGroup.Shadow, Qt.black)
+ disabled=QColorGroup(QBrush(op.disabled().foreground()),
+ QBrush(op.disabled().button(), button),
+ QBrush(op.disabled().light(), light),
+ QBrush(op.disabled().dark()),
+ QBrush(op.disabled().mid(), mid),
+ QBrush(op.disabled().text()),
+ QBrush(Qt.white),
+ QBrush(op.disabled().base()),
+ QBrush(backCol, background))
+ active=QColorGroup(QBrush(op.active().foreground()),
+ QBrush(op.active().button(), button),
+ QBrush(op.active().light(), light),
+ QBrush(op.active().dark()),
+ QBrush(op.active().mid(), mid),
+ QBrush(op.active().text()),
+ QBrush(Qt.white),
+ QBrush(op.active().base()),
+ QBrush(backCol, background))
+ active.setColor(QColorGroup.ButtonText, Qt.white)
+
+ newPalette=QPalette(nor, disabled, active)
+ app.setPalette(newPalette, TRUE)
+
+ def unPolish_qapplication(self,app):
+ app.setPalette(self.oldPalette, TRUE)
+ app.setFont(app.font(), TRUE)
+
+ def polish_qwidget(self,w):
+ # the polish function will set some widgets to transparent mode, to get the
+ # full benefit from the nice pixmaps in the color group.
+
+ if w.inherits("QPushButton"):
+ w.setBackgroundMode(QWidget.NoBackground)
+
+ def unPolish_qwidget(self,w):
+ if w.inherits("QPushButton"):
+ w.setBackgroundMode(QWidget.PaletteButton)
+
+ def drawButton(self, p, x, y, w, h, g, sunken=FALSE, fill=None):
+ global img1, metal_xpm
+
+ if not img1:
+ img1=QImage(metal_xpm)
+
+ scaledImage=img1.smoothScale(w, h)
+ pix=QPixmap()
+ pix.convertFromImage(scaledImage)
+ p.drawPixmap(x, y, pix)
+ g2=QColorGroup()
+ g2.setColor(QColorGroup.Light, Qt.white)
+ g2.setColor(QColorGroup.Dark, Qt.black)
+
+ if sunken:
+ linewidth=2
+ else:
+ linewidth=1
+
+ qDrawShadePanel(p, x, y, w, h, g2, sunken, linewidth)
+
+ def drawBevelButton(self, p, x, y, w, h, g, sunken=FALSE, fill=None):
+ self.drawButton(p, x, y, w, h, g, sunken, fill)
+
+ def drawPushButton(self, btn, p):
+ g = btn.colorGroup()
+
+ (x1, y1, x2, y2)=btn.rect().coords()
+
+ p.setPen(g.foreground())
+ p.setBrush(QBrush(g.button(),Qt.NoBrush))
+
+ if btn.isDown():
+ fill=g.brush(QColorGroup.Mid)
+ elif btn.isOn():
+ fill=QBrush(g.mid(),Qt.Dense4Pattern)
+ else:
+ fill=g.brush(QColorGroup.Button)
+
+ if btn.isDefault():
+ a=QPointArray([x1, y1, x2, y1, x2, y2, x1, y2, x1, y1+1,
+ x2-1, y1+1, x2-1, y2-1, x1+1, y2-1, x1+1, y1+1])
+ p.setPen(Qt.black)
+ p.drawPolyline(a)
+ x1=x1+2
+ y1=y1+2
+ x2=x2-2
+ y2=y2-2
+
+ if btn.isOn() or btn.isDown():
+ sunken=TRUE
+ else:
+ sunken=FALSE
+
+ self.drawButton(p, x1, y1, x2-x1+1, y2-y1+1, g, sunken, fill)
+
+ if btn.isMenuButton():
+ dx=(y1-y2-4)/3
+ self.drawArrow(p, Qt.DownArrow, FALSE,
+ x2-dx, dx, y1, y2-y1,
+ g, btn.isEnabled())
+
+ if p.brush().style != Qt.NoBrush:
+ p.setBrush(Qt.NoBrush)
+
+ def drawPushButtonLabel(self, btn, p):
+ r=btn.rect()
+ (x, y, w, h)=r.rect()
+
+ (x1, y1, x2, y2)=btn.rect().coords()
+ dx=0
+ dy=0
+ if btn.isMenuButton():
+ dx=(y2-y1)/3
+ if btn.isOn() or btn.isDown():
+ dx=dx-1
+ dy=dy-1
+ pencolour=btn.colorGroup().brightText()
+ else:
+ pencolour=btn.colorGroup().buttonText()
+ if dx or dy:
+ p.translate(dx,dy)
+
+ x=x+2
+ y=y+2
+ w=w-4
+ h=h-4
+ g=btn.colorGroup()
+ self.drawItem(p, x, y, w, h,
+ Qt.AlignCenter|Qt.ShowPrefix,
+ g, btn.isEnabled(),
+ btn.pixmap(), btn.text(), -1,
+ pencolour)
+
+ if dx or dy:
+ p.translate(-dx,-dy)
+
+ def drawPanel(self, p, x, y, w, h, g, sunken, lineWidth, fill):
+ QStyle.drawPanel(self, p, x, y, w, h, g, sunken, lineWidth, fill)
+
+
+class Themes(QMainWindow):
+
+ def __init__(self, parent=None, name=None, f=Qt.WType_TopLevel):
+ QMainWindow.__init__(self, parent, name, f)
+
+ self.appFont=QApplication.font()
+ self.tabwidget=QTabWidget(self)
+
+ self.buttonsgroups=ButtonsGroups(self.tabwidget)
+ self.tabwidget.addTab(self.buttonsgroups,"Buttons/Groups")
+ self.hbox=QHBox(self.tabwidget)
+ self.hbox.setMargin(5)
+ self.linedits=LineEdits(self.hbox)
+ self.progressbar=ProgressBar(self.hbox)
+ self.tabwidget.addTab(self.hbox, "Lineedits/Progressbar")
+ self.listboxcombo=ListBoxCombo(self.tabwidget)
+ self.tabwidget.addTab(self.listboxcombo, "Listboxes/Comboboxes")
+
+ self.setCentralWidget(self.tabwidget)
+
+ self.style=QPopupMenu(self)
+ self.style.setCheckable(TRUE)
+ self.menuBar().insertItem("&Style", self.style)
+
+ self.sMetal=self.style.insertItem("&Metal", self.styleMetal)
+ self.sWood=self.style.insertItem("&Norwegian Wood", self.styleWood)
+ self.sPlatinum=self.style.insertItem("&Platinum", self.stylePlatinum)
+ self.sWindows=self.style.insertItem("&Windows", self.styleWindows)
+ self.sCDE=self.style.insertItem("&CDE", self.styleCDE)
+ self.sMotif=self.style.insertItem("M&otif", self.styleMotif)
+ self.sMotifPlus=self.style.insertItem("Motif P&lus", self.styleMotifPlus)
+ self.style.insertSeparator()
+ self.style.insertItem("&Quit", qApp.quit, Qt.CTRL | Qt.Key_Q)
+
+ self.help=QPopupMenu(self)
+ self.menuBar().insertSeparator()
+ self.menuBar().insertItem("&Help", self.help)
+ self.help.insertItem("&About", self.about, Qt.Key_F1)
+ self.help.insertItem("About &Qt", self.aboutQt)
+
+ self.style=NorwegianWoodStyle()
+ qApp.setStyle(self.style)
+ self.menuBar().setItemChecked(self.sWood, TRUE)
+
+ # In the following we cannot simply set the new style as we can in C++. We
+ # need to keep the old style alive (if it is a Python one) so that it's
+ # unPolish methods can still be called when the new style is set.
+
+ def styleWood(self):
+ newstyle=NorwegianWoodStyle()
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sWood)
+
+ def styleMetal(self):
+ newstyle=MetalStyle()
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sMetal)
+
+ def stylePlatinum(self):
+ newstyle=QPlatinumStyle()
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ p=QPalette(QColor(239, 239, 239))
+ qApp.setPalette(p, TRUE)
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sPlatinum)
+
+ def styleWindows(self):
+ newstyle=QWindowsStyle()
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sWindows)
+
+ def styleCDE(self):
+ newstyle=QCDEStyle(TRUE)
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ self.selectStyleMenu(self.sCDE)
+
+ p=QPalette(QColor(75, 123, 130))
+ p.setColor(QPalette.Active, QColorGroup.Base, QColor(55, 77, 78));
+ p.setColor(QPalette.Inactive, QColorGroup.Base, QColor(55, 77, 78));
+ p.setColor(QPalette.Disabled, QColorGroup.Base, QColor(55, 77, 78));
+ p.setColor(QPalette.Active, QColorGroup.Highlight, Qt.white);
+ p.setColor(QPalette.Active, QColorGroup.HighlightedText, QColor(55, 77, 78));
+ p.setColor(QPalette.Inactive, QColorGroup.Highlight, Qt.white);
+ p.setColor(QPalette.Inactive, QColorGroup.HighlightedText, QColor(55, 77, 78));
+ p.setColor(QPalette.Disabled, QColorGroup.Highlight, Qt.white);
+ p.setColor(QPalette.Disabled, QColorGroup.HighlightedText, QColor(55, 77, 78));
+ p.setColor(QPalette.Active, QColorGroup.Foreground, Qt.white);
+ p.setColor(QPalette.Active, QColorGroup.Text, Qt.white);
+ p.setColor(QPalette.Active, QColorGroup.ButtonText, Qt.white);
+ p.setColor(QPalette.Inactive, QColorGroup.Foreground, Qt.white);
+ p.setColor(QPalette.Inactive, QColorGroup.Text, Qt.white);
+ p.setColor(QPalette.Inactive, QColorGroup.ButtonText, Qt.white);
+ p.setColor(QPalette.Disabled, QColorGroup.Foreground, Qt.lightGray);
+ p.setColor(QPalette.Disabled, QColorGroup.Text, Qt.lightGray);
+ p.setColor(QPalette.Disabled, QColorGroup.ButtonText, Qt.lightGray);
+ qApp.setPalette(p, TRUE)
+ qApp.setFont(QFont("times", self.appFont.pointSize()), TRUE)
+
+ def styleMotif(self):
+ newstyle=QMotifStyle(TRUE)
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ p=QPalette(QColor(192, 192, 192))
+ qApp.setPalette(p, TRUE)
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sMotif)
+
+ def styleMotifPlus(self):
+ newstyle=QMotifPlusStyle(TRUE)
+ qApp.setStyle(newstyle)
+ self.style=newstyle
+ p=QPalette(QColor(192, 192, 192))
+ qApp.setPalette(p, TRUE)
+ qApp.setFont(self.appFont, TRUE)
+ self.selectStyleMenu(self.sMotifPlus)
+
+ def about(self):
+ QMessageBox.about(self, "Qt Themes Example",
+ "<p>This example demonstrates the concept of "
+ "<b>generalized GUI styles </b> first introduced "
+ " with the 2.0 release of Qt.</p>" )
+
+ def aboutQt(self):
+ QMessageBox.aboutQt(self, "Qt Themes Example")
+
+ def selectStyleMenu(self, s):
+ self.menuBar().setItemChecked(self.sWood, FALSE)
+ self.menuBar().setItemChecked(self.sMetal, FALSE)
+ self.menuBar().setItemChecked(self.sPlatinum, FALSE)
+ self.menuBar().setItemChecked(self.sCDE, FALSE)
+ self.menuBar().setItemChecked(self.sMotif, FALSE)
+ self.menuBar().setItemChecked(self.sMotifPlus, FALSE)
+ self.menuBar().setItemChecked(self.sWindows, FALSE)
+ self.menuBar().setItemChecked(s, TRUE)
+
+
+def main(argv):
+ QApplication.setColorSpec(QApplication.CustomColor)
+ QApplication.setStyle(QWindowsStyle())
+ a=QApplication(sys.argv)
+
+ themes=Themes()
+ themes.setCaption('Theme (QStyle) example')
+ themes.resize(640,400)
+ a.setMainWidget(themes)
+ themes.show()
+
+ return a.exec_loop()
+
+
+# Put these here where they are out of the way of most of the code.
+
+polish_xpm = [
+" 96 96 254 2",
+".. c #9c4a34",
+".# c #a4825c",
+".a c #bc5e2c",
+".b c #d48432",
+".c c #dc9f51",
+".d c #bc6e1c",
+".e c #d4855d",
+".f c #94664c",
+".g c #bc714e",
+".h c #8c6664",
+".i c #d4923c",
+".j c #bc8444",
+".k c #d49360",
+".l c #d4794e",
+".m c #ecaf68",
+".n c #bc8365",
+".o c #d47439",
+".p c #a46954",
+".q c #dc9f70",
+".r c #e48544",
+".s c #bc7b51",
+".t c #a47761",
+".u c #bc7b42",
+".v c #a4523c",
+".w c #e4945e",
+".x c #9c784c",
+".y c #d4844a",
+".z c #eca053",
+".A c #bc614c",
+".B c #e4855c",
+".C c #bc8350",
+".D c #c48e68",
+".E c #b16634",
+".F c #e49339",
+".G c #bc703a",
+".H c #bc7c67",
+".I c #a45f34",
+".J c #cc714d",
+".K c #d48c5f",
+".L c #a47057",
+".M c #cc703a",
+".N c #dca674",
+".O c #b47859",
+".P c #bc6729",
+".Q c #d49475",
+".R c #d48b4a",
+".S c #cc8351",
+".T c #cc8466",
+".U c #ac6841",
+".V c #e4a651",
+".W c #e49576",
+".X c #d47d31",
+".Y c #ac6e4b",
+".Z c #c07650",
+".0 c #e48c43",
+".1 c #e49452",
+".2 c #9c745f",
+".3 c #e47e54",
+".4 c #cc7c4f",
+".5 c #cc7c32",
+".6 c #b46133",
+".7 c #d49a68",
+".8 c #d67e4f",
+".9 c #bc7643",
+"#. c #b47056",
+"## c #d48b3a",
+"#a c #dc9f5e",
+"#b c #e49a60",
+"#c c #cc6a31",
+"#d c #8c6244",
+"#e c #dc9a41",
+"#f c #eca753",
+"#g c #bc8a58",
+"#h c #d48c76",
+"#i c #bc693f",
+"#j c #bc715d",
+"#k c #9c6857",
+"#l c #f4b171",
+"#m c #bc8a6a",
+"#n c #eca16d",
+"#o c #a87e58",
+"#p c #a4613f",
+"#q c #a48569",
+"#r c #d4846d",
+"#s c #dc935f",
+"#t c #c47c50",
+"#u c #dc8449",
+"#v c #bc6950",
+"#w c #cc9678",
+"#x c #c4703a",
+"#y c #cc7b67",
+"#z c #dc8c5e",
+"#A c #ac7067",
+"#B c #eca86e",
+"#C c #b4786d",
+"#D c #dc8c4a",
+"#E c #b46842",
+"#F c #d47c41",
+"#G c #e48d51",
+"#H c #e59a52",
+"#I c #9c6e3f",
+"#J c #d49351",
+"#K c #cc843b",
+"#L c #ecb678",
+"#M c #9c5a38",
+"#N c #d4795c",
+"#O c #c47b39",
+"#P c #ec9560",
+"#Q c #ac764c",
+"#R c #c48351",
+"#S c #c48e74",
+"#T c #cc7650",
+"#U c #cc8a84",
+"#V c #bc6a5c",
+"#W c #e4af74",
+"#X c #b46855",
+"#Y c #e4a06e",
+"#Z c #ac775b",
+"#0 c #e48d5d",
+"#1 c #c47d65",
+"#2 c #cc763f",
+"#3 c #b47e5d",
+"#4 c #cc8a55",
+"#5 c #cc8a67",
+"#6 c #bf622f",
+"#7 c #dc853b",
+"#8 c #e49f4a",
+"#9 c #9c505c",
+"a. c #8c5644",
+"a# c #cc7329",
+"aa c #a45a51",
+"ab c #b48264",
+"ac c #9c7a7c",
+"ad c #9c5f4f",
+"ae c #b4844c",
+"af c #a46749",
+"ag c #dca664",
+"ah c #b46e1c",
+"ai c #c4762c",
+"aj c #a45a3c",
+"ak c #dc9a74",
+"al c #ac7e46",
+"am c #ac6a6c",
+"an c #eca862",
+"ao c #e49a41",
+"ap c #e49a78",
+"aq c #bc7660",
+"ar c #d57e5e",
+"as c #9c6e5c",
+"at c #ab7e65",
+"au c #cc8a44",
+"av c #9c6240",
+"aw c #bc6244",
+"ax c #bc5d3f",
+"ay c #e48550",
+"az c #eca060",
+"aA c #cc7160",
+"aB c #cc7c42",
+"aC c #b46241",
+"aD c #b4726c",
+"aE c #eca67f",
+"aF c #9c6a3c",
+"aG c #94685a",
+"aH c #c48240",
+"aI c #c48465",
+"aJ c #dc7640",
+"aK c #cc8f54",
+"aL c #e4a76f",
+"aM c #c4692e",
+"aN c #dc9474",
+"aO c #ac6050",
+"aP c #b47048",
+"aQ c #94614b",
+"aR c #ac836c",
+"aS c #a47048",
+"aT c #b4764a",
+"aU c #ec8e5c",
+"aV c #dc9a53",
+"aW c #cc765e",
+"aX c #b48a64",
+"aY c #dc9a63",
+"aZ c #c47640",
+"a0 c #ec9a60",
+"a1 c #c48a54",
+"a2 c #c48a67",
+"a3 c #ac5a3c",
+"a4 c #ac8458",
+"a5 c #dc855d",
+"a6 c #c4714d",
+"a7 c #dc9243",
+"a8 c #dc794e",
+"a9 c #ac6955",
+"b. c #cc8f67",
+"b# c #ac6032",
+"ba c #ac7056",
+"bb c #dc7a34",
+"bc c #ec9553",
+"bd c #dc8d3b",
+"be c #e4a060",
+"bf c #f4a654",
+"bg c #c46842",
+"bh c #c46f62",
+"bi c #ac613d",
+"bj c #dc866c",
+"bk c #c4694e",
+"bl c #dc7d42",
+"bm c #ec8d4f",
+"bn c #dc9351",
+"bo c #cc9177",
+"bp c #c4695f",
+"bq c #ecb075",
+"br c #e4a75f",
+"bs c #d4843c",
+"bt c #bc722c",
+"bu c #d4936c",
+"bv c #d47644",
+"bw c #bc7d5c",
+"bx c #ac563c",
+"by c #e4956c",
+"bz c #a47a4c",
+"bA c #d48454",
+"bB c #bc825c",
+"bC c #e49544",
+"bD c #bc7044",
+"bE c #bc7e74",
+"bF c #d48d6c",
+"bG c #cc7144",
+"bH c #b47864",
+"bI c #bc6a34",
+"bJ c #d49684",
+"bK c #d48b54",
+"bL c #cc845c",
+"bM c #cc8474",
+"bN c #ac684c",
+"bO c #cc7d5c",
+"bP c #eca27c",
+"bQ c #dc946c",
+"bR c #c47c5c",
+"bS c #dc8554",
+"bT c #c47244",
+"bU c #dc8c6c",
+"bV c #dc8c54",
+"bW c #b4684c",
+"bX c #cc8344",
+"bY c #c47b44",
+"bZ c #c4825c",
+"b0 c #e4a17c",
+"b1 c #ac7a64",
+"b2 c #e48c6c",
+"b3 c #c47a74",
+"b4 c #e49f54",
+"b5 c #9c674c",
+"b6 c #946764",
+"b7 c #c48674",
+"#u#G#G#P#G#G#G.1#G#G.1.1.1.w#G.r#D.1.1.1#D#DbVbV.K.K.K.KbO.Z.Z#TaP.GaT.Z.O.O.O.H.9aP.ZaPaPaPbZbo.i.k#J.k#JbKbnbn#b#sbVbV#G#G.r.ray.r.0#G.0#G.1bc.r.0.0bc.0.0.0.r.1.1.1.1#G#D.0#D.0.0.0bcbcbc.1.0",
+"#aagaLbrag#a#a#a#DbVbn#G#0.1#0#Da5#za5.4.J.Jbk#vbt.G#x.9bY.4#tbYbw.saPaP.Ub#af.Y.s.s.Z.saP#E.gbw.U.U.UaObWbWbWaPb#b#.E#t.K.K#z#s#s#sbQ#s#sbn#s#sbn#s.w#s.w#s#sbn.ybV#s#sbV#s#sbQ#aak.7.k.7.k.k.k",
+"#..g#.#.#j#.#XbW#Z#o.O.O#3.n.n.Halalalala4aXaXa4#t.u.9#R#5bu.k#5bob7aIaI.nbwbw#m#5aIa2#5#5aIb7#5.DbBbB#3bwbw.C.O#oabab.naI.C#t#R.9#tbY#tbY.ZbY.s#t#t#t#R.sbY.s#tbD.Z.Z#t.9.Z#t.4bBbw.s.saT.9aTaT",
+".ybS.ybSbVbVbVbVbl#u#u#ubSaybSay#s#za5#z#z#z.KbA.Qb.aIbZbZbB.g.U.gaP#.aP#.aPaP.O.9aP.g.s.O.ZaP.Z#CaD#Aamamamam#X#3#Z.OaPaPaPaP.saZbY#t#t#tbY#tbY#t#tbLbZ.SbR#t#tbZbRbZbRbR.sbRbR.4aBaB.4bY.4.4.4",
+"bKbV#zbKbA.ybK#zbV#z#0bS#0#0#0aya5bA.4.4.4#T#xbgbwaq.O.g.O#j#.aPaCaC#v.g.gaPaP.Z#R#R#t#t#t.Z.s.Z#O#O.5aH#KbY.S#4bD.G#xaZaZ#2.SbVbV#s.wbV#zbSbAa5.e.KbQbQbU#s#z.K#5.K#5.T#4#5.Kb..4bZbL.T.ebL.K.K",
+"#A#A#C#C#AaD#CbEatataRb1b1abb1.t#I.f#IaSbz.x.#.##v.g.g#1bR.T#5#hbObO.T.K.K#5.KbubL.4.4#t.4.Z#tbL.e#r.K.K.e.e.T#r.K#z.K#z#sbVbS#zbV#u#ubVbl#F.8.l#2.4.8bAbA.l.4bva6.g#x.g#x#i#i#i.L.Lba#Z#Z#Z#Zba",
+"aPaT.u.u.s.C.C.C.SbA.S.4.SbA.8.8#r#rbF#h.TbO.T#h.KbF.e.e.S.S.S.S#u.y.8bA.e.4bA.e.K#zbQ#s.K.KbUbQ.y.R.y.yaB#O#xbT#t.4bLbLbL.4bL.S.4.S.4#T.Za6.Z.JbD.g.Z.g.Z.g.Z.ZaP.g#iaP#i#E#EaC.Obababa.ObH#Z.O",
+"#zbSbA.e#za5.e.8bV.KbV.ybAbK#zbK.8.ybV#z.y#F.y#sbKbA.Rbn#sbn#b#b#Y.w#sbV.y.4.lbA.y.y.ybA#T.MbG.4bObO.4.SbLbOaq#..O.Yaf#p#p.I.U.UaT.Z.O.Oaq.O.H.Hb1b1#Z#Z.L#Zat#3bw.s.HbBb7aIaIaIbA.l.4aBbAbA.e.e",
+"#DbVbn.w#s.w#sbVbAbSbSbV#D#GbS#0.1#H#H#H#b.1bn.1#4.S#t#t.S.TbL.S.K.K.K.S.SbK.e.S#t.4#t#tbDaPb#b#.U#E.9.S.ebVbS#G.K.K#r.l#y#T.Z.Z#2aB.S.ybS#u.8#F#Kau.y.S.y.y.R.y#z#z#sbn.1bna7bd#F#DbVbVbV#s.w#s",
+".1#s.1#s.1bVbS.y.K#z#sbVbVbA.8#FbA.8ar.8.e#r.e#NbKbA.S.S.S.SbLbLaBaBaB#2aB.SbKbAbVbVbV#s.w#YbebQ.KbA.e.KbV.ybl.ybsbsbs#D#u#D#u.R.y#D#DbVbV#s#0.wbebe#b#bbQ.wbn#GbV#G#D#G#D#GbV#D.ybV#sbV#s#s.w#s",
+".wbn.w.w#bbQbVbV.4.4.ybKbnbV#z#z#G#D#D#D#u#D.y.R#2aB#2.M#x.M#2#2#z#s.w#sbV#s.w#s.1.w.w#b.w.1#G#G#s#zbVbVbVbSbVbVbd#ubd.r#D#D#D#D.1bC.1.1.1.1#D.1bV#G#0#0#G.w.1a0bC#G.0aybS.Ba5a5bVbVbV.w#z.w#sbV",
+"#ubVbVbVbV#GbV#D#s#sbn#b.w.w.1bVb2b2a5#z#z.K#zbA.w#s.w#sbV#s#z#s.w#b.w.w#GbV.w.w.X#Da0a0#G.1bcaz#G#GbS#GbV#ubV#0#z#0#0a5#0#0b2#0.0.r.0.0#u#u#F.o.M.M.M#F#ubV#G.1#b#P.w.w.w#0aya5.y#u.y.ybVbnbVbV",
+".wbV#GbV#G#s#G#0.1#G.1.1.1#G#G.0#0#0.w.wby.wbQbn.w.w#G.w.wa0#b#P#u#G#G#0#G#G#G.w#baz#Yaz.1.0#D.0#G#G#G#GbVbl.8blbva8.8.B#z.Ba5#0ay#G#G#z#G#z#z#z#zbU#z#z#zbQbybQ#zbK#z#s#sbn.R.y#2#2aB.8bVbV#0bV",
+".w.w.w#z.w.w.w.w#GbV.r.0.0#G#G#Gbda7a7#H#8#8#8#H#u#u#F#u#D#GbV#u#G#G.w.1.w#G.wa0bV#D#DbV.w#baz.w#G#G#G#G#0.BbSa5#u#u#D.1.1bn.0#7#z#0bSbSbSa5#z#z#r.e.e.4.4#2#2bT.4.4.4.S.R.Rbn.i#s.K#zbV#s#0bV.w",
+"#u.8#u#u#ubV#GbVby.wbQ.w#b.wbVbl#T#T.l.ear.Ba5.8.w#G#G#G.w.1.1.1.1#G#G.w.1#G#G.w#P.w#G.1.w#P.w#0#D#DbV.w.w#0#0#0.w#b#baVaVbn.1#G.y.y#F#F#2.obv#Fay#z#GbVbV#z.e.e#z#z#zbV#s#s#s#sbQbQ#sbQ.wbV#G#0",
+"#0#0#0#G#0#u#ublbDbT.4#4#zbQ.e.e#s#s#s#z.w#0#0aU#DbSbVbV#D#D#D#G.w#G#G.w#P.w.w.w#Gbmbmbmay#u#G.waz#b.w.w#Ga5bl#uaraW#i#i#ia6.4.ebVbnbQ#b.w.w#GbV#u.r.r#G#G#G#0a5.1.wbV#zbSar.J.JbT#x#2.y#F.8#u#G",
+"#5.TbL#tbD#i.g.Z.SbA#zbAbKbSbSbA#u#D#G#u#u#u#DbV#GbVay#G#0#G#G.r#D#Gbn.w#b#b#HaY.1bVbV.y#u.y#F#Fbv.o.M#2#2#2aBbG.9#OaB.y#D.1.1.1.w#s.1.w#G#G#G.rbdbda7bdbnbn#sbQ.nbw.s.Z.4.8.8.8.obl#u#zbV#z.K.K",
+"#i#x.Z#tbL.K.kbQbAbVbK#u.ybSbV#z#G.w.w#G#D#G#0#G.1#G#D.1.1.1.1.1bVbV#z.yaBaM.M.5.y.y.y#ubV.w#P.w.w.w#b.1.1.w.wby#b.w#b.w#b.w.1.1#u#u#ubVbAbK#z.S.T.TbO.Z#vbga3axbD#xaZ.8bAbAbAbA.e#4bA#ta6.P.6.6",
+".S.4bL.e.e.e.ebA.8bSbSbSbVay#0#G.1.1a0.1#ba0#H#bbc#Hbc#Ha0bc.1.0#z.8#T.J.l.ebVbV#G#G#G.w.w.w.w#P.w#b#n#b.1.1.w#n.1.1.1#G#G#D#ublbl#2.4.4.g.Z#ZbN#9#9aa#X.g.ZbOar.Mbvbla5#z#zbA.laPbNbi.U.U#..Zbw",
+"bL.e.e.e#zbSbSbl#u#DbS#G#G#0#G#G.1.1.1.1bc#Ha0.1#G.1.1a0#b.1#u#F.e.4#T.8by#b#na0a0#b.w.w.w.w#P#0bVbV.1.1#G#G#u#G.1#G#G#ubS.8.l#T.Z.g#ibW.UbNa9#p.UaP.9.S.ybVbV#Dayay#z#z.e.4bT#i.pad#pbN#.bRaI.T",
+".4.e.KbS.8blblbSbSbS#GbV#G#0#G#G#G.0.1.1bcaz#H.1#G.1.w#P.w.w#z.8bK.KbQbQbV#u#D.1#0#G#G#G#G#G.1#P.1.1beazbe.1#G#u#zbK.K.4bO.Z#j#v#A#ka9.YbW.ZbL.4.R.R.ibn#D#u#F#FbS.S.4aqaPbNbi.I#.bWaP.gbObL.8bL",
+".K.K#z.e#F.lbv#F#z#GbS#u#u#G.w#G#u#G#G#G.1a0bc.1#P#P#P.w#GbVarar.R#J#HaY.1.1.1#H#H#b.1.1bc.1#P.1.w#b#bazbe.w#zbA#t#t.Z.Z.Z.g#.#.b1ba#..Z.Z.lbS#u.y#u#ubSbS#N.laA#j.ga9#kad#ka9#..g.g#tbO.e.e.ebA",
+".l.l.8.y.8bAbAa5bSbS#ubSbS#0.w#G#G#G#G#G.1bc.1bCbm.1.1.0#Dblbv#T#D.R.ybVbe#nazanananbeaz#b#bbc#H.wa0.1#sbV.S.S#t#t.s.Z.sbwaIaIaI#t#t.4bA.lbl#ubl.3a5a5.e.4bh#V#XbN#k#kaG#k.L.OaIbL.e.K.ebA.y.4.8",
+"bSbAbAa5.ebA.8.4.8.ybS#z#G.w#0bSay#0bm#G#G.0.1.0bc#H.zbf.zbe.1#z.KbVbSbA.y#D#D.1bebebe#HbeazazazazazbebV.S.4#1bMbZbR.Z.Z.Z#t#tbYbl.o#ubS#Gay#0#uarbl.laB#t.uaT.Oad#kaGb6#ka9.g.Z#t#t.4.4#t.4bK.K",
+"aBbs.y.ybA.l.lar.4aBaB.8.y#F#u.wbn#D#D#G.0.0a7.FbdbCbc.1.1.0.1bc.F#8#H.1.ybG.4.ebn#s#s#baY#saYaV#b.w#s#J.SaZbD.sbR#t.S#z#ubs#F.R#D#D.0#G#G#G#G.0#D.R.yaBbDbDaP.g#Zb1.L.fb6.h.hac.I.YaT.u#t.Z.Z#2",
+"b3bR#1.4.4.4bX.R.K.KbV.ybl#F#F#F#za5a5.B#z#0#sby.1#G.1.1.1bm#G.1a0a0#H#H#b#b#s.ya#.X.y.ybVbn.w#bbebeaY#sbAbRbZa2au.S.R#s#z.y.e#zbs#ubn.1.1.1#G#D.0#D#D.RbA.4bO.4aPbD#Eb#af.I#Maf.2.x.L.L#Z.O.n#S",
+"aObi#Xbw.s.sbY.SbXbK#z#z.w.w.wa0#z#za5bS.l.l.8bVbSbVbS#G#G#G.w#Pbe.w#b#bazbrb4#Hbebebe.1#u#F.5.X#F.y#s#Y.NaN.Q.Q.T.Tbu.w#sbn.1be#sbVbV.y.y.ybn#b#G#G#G#G#0bn#zbSbn#bbn#D.R.RaBbX#3.O.Yaf.I.Ibi#E",
+"aVbX.G.6a3aCb3#U.y#z#s#0#z.w.w#s#H#H.1.1.0#G#Hb4bVbV#u#u#u#D.0#D.1.1.1#D#7#D#Hb4bCbc.1.w#b#b#n#nbe.1#u.yaBbX.S.kb4.cb4aYbA#T.4#r.4.K.K#s#s#s#D.y#GaybV.w.w.w.w.w#G.w.w.w#b.1bn.1#P.w.w#0#0aybS#G",
+"bnaVaYbeaNarbp.A.P#2#F.y#u#s.w#sb4b4.1.1.1.1#H#H#nbeaz#b#HbnbCa7.zbe.z.1#D#D.w#Baz.z#H.w#P.w.w.wbebeanbrbebn.RbX.4bQb0aL#BaYa7.bbA.4#xaMaZ.ybK.kbA.4.4#F.8.ybA.ybv#u#ubS#sbV#D#zbl.ray#G#G#P.w#P",
+".w#0bSbVbV#D#D.1aY#b.w#zbS#FaBaB#x.M.l.8a5byap#bbn.1bebebebebeaza7.0bd#u#ubSbS.BbC#D.0#D#G.w.w.1anazb4bebebebr#B.V.c#D#Oai.S#s.WaE#Y#Y#YaY.kaB#x#4.S.S.4aBbX.y.y.y.K#z.KbV#z.ybV.ybKbKbK.K.K#z.k",
+".8.8#u#G.w#HaV.1#s.w#s#0#zbV.wbQ#na0by#0a5bSbvbg.M#F.y#ubSbA#z.k.w.w.w.wa0a0.w.w#H.w#HbV#D#u#G.1.1.1#b.w.1.1#D#DbVakaLaLaLbq#B.VaB.XaB.ybKbQaLaL.q.qaY#a#b.w#b#b#b#b.wbn#s#D.y#D#s#s#s#JbKau.SbA",
+"b4#Hbe#baY#s.K.S.y#F.ybSbS.R#zbe#H#H.1#Gbc#b#bbn.w#bbybQ.4#xbga6#T.l#za5bV#G#Gbc.w#b#b.wbV#D.1beby.wbVbV#z#s.w#Y#bbeaY#J#s#Ybe.1#B#B#Bbr#s.RbA.KbKbnaV.w#b.w#Ha0b4anbe#Hbe.1.1#bbC#8bc#Ha0a0#Pbc",
+"b4#8#8#H#HbCbC.1b4#b.w.1#P#G#G.0akbVbXaB#2#2.4bAbA.KbAbV#s#b#YaY.1bV.8aZ.GbYaB.S.RaV#abebn.1#8az#b.w.w#b#ba0by.w.1#Hazbebe.1#s#b#ebnbnbnaVaVaYbnbnb4bebe#abe#abebnbnbnbn.ibnbnbn##a7#8#8#ea7beaL",
+"#Y.w.w#s.w#0#z#0#D#DbVbVbVbV#bana7#D.1.1#b.1#D#D#u#u#Fa#.o.y#D#D.r.r.w#b#Y#b#b.w.gbkbg#Tar#za5a5####.5.b.Ra7.1bn#HaV#H#Hbn#D#D.ybQbQ#z.K.e.K.e.ea7bnaVa7bnaY#aaL.m#Wbrbr#Ybr#W.m#L#L#L.mbeb4.w#b",
+"#sbK.ybS#z#zbSbS.k.k.K.S.SbAbKbn.w.1#D#GbV#GbV.w#G#G#G#u#u#ubl#7.r#G#G#0#zayay.0#Y.wa5bS#zbS.8.M.4.Z#xbka6#TbObO#D.Rbn#s#bbebebebV.R.R.y.R#D#DbVbebe#BbqaLbebn.Rbnbnbebr#BbrbeaV#Da7bran.mbr.1#D",
+"anazbean#Banbe#H.y#O#x#x.ybKbK.R.Jbvar.ebja5#N#TbvbS#z#0#0.1#0bV#G#u#u.o#Fbb#7bm#F#7#u#D#Dbn#bbe#s#s#sbn.w#zbVbVbkbpbpbpbhbhbhbhaAaAaWaW#N#r#rbFbs.ybKbn#b#YaLbq#Bbrbebebebr#BbqbeaLbe#Y#B#B#B#B",
+"a7#DbCb4azananan#BaL#b#Yby#b#G#ub0aN.e#x#i#xaWbObAa5.e.8.4#2.4.4.w.wbQ#zbSbSbVbV.w#z#zbS.JbGbG.l#D#GbV.1.w.1#G#G#H#8#8#8aoa7#8#8#D#Dbn.1bnbC.1bC#b.w#D#D.y.5bs.y##a7#Hbranbe.1.i#sbn#D.Rbsbs#ubs",
+"#b#0.y.8#2#2#2#2#F#u#G.w#0#G#Pazb4b4beb4bnbn##.5#xaB.4.4.4.e#z.K.e.SbA.8bA.ebK.K#zbV.y#ubVbVbVbVar.8ara8ara8a5ar.RbV#zbVbA.y#D#sbSa5a5bV#zbSbVbS#G#DbV#b#b.1bn#bananbeb4b4anananbean#B#B#Bazbebe",
+"#0a5bSbV.w#Y#BaE.1#0.wbSay#uay#Gbd.FbCbC#H.zanaz#b#b#b.w#zbA#2#c.P#6#6.M#2.e.K.k#KaB.Xbsbn.1.1#7#Hbna7#D#D#D#D.0#0#zbVbV#u#F#FblbdbCbC.1bC#G.1.1bV#u#D#G#Hbean.manbeanan#B.manan.mbebe.1bV.1.1.1",
+".zbCa7#Hazanb4#8#Y.w.y.8#z.w#G#D#G#0#P#0#0#0#uaJ#D#u#ubl#D#0.wb2.w.1#0#0.w#z.4.G#vbhbRbO#rar#N.l#4bL.S.4.4.4.4bLay#D#uay.1#Ha0.w.1.w.1.w#G#s#0.w#G.1.1an#Bazb4b4anazb4b4.zananan#f#f#8#b#H.w.1#b",
+"b4#Hbd#Ha7#H.1.0a7#H#b.wbV#s.w#0#D#D#D#D#G#u#u#G#G#G#GbV#u.8.y#ubs#7#G.1.1bn#D.y#xbXbAbAbYbt.Z#RbXbK#s.k.R.S.RbAbl#F.o.o#Fbv.yblbV#u#7#G.1.z.z.z.w.1#G#u#D.0#G#nb4#H.1.1#b.zb4.z#H.1.1.1#Hbe.m#B",
+"#Y.w#D.1ay.w.w#Ga7#H#H.w#G#G#G#G#D.wbV#G.1.w#G.1#D#D#ubSbA#u.KbV#s#G#u#u#ubVbn#s.zb4b4#sbO.g#V#X.MaB.yaBaB#2aZ#2.y.y.R.KbQ.KbQbu#zbAbK#s#bbe#Ybea0be#bbn.w#D.y#G.1bC.1.1a0#b.z.z.zbc#H.zbCao#HbC",
+".wbS#0.wa0a0#na0azaz#b#H.1#G.0.0.w#P.w#G#0#G#uay#D#DbAbK#z.KbSbK.l.4bv.8#F.l.e.S#ubAbA.RbK.K.K#s.4bAa5#z#z#z#z#z#w#m#3ba.p.p.L.L.ZaZbD#t#R.SaKaKakap#Y#bak#s#zakbn#D#u#D.y#7bs#7#F#F#u#0#0#0by.w",
+"bna7anbran#8az#8.1#ba0#bbcbeaza0a0.w#G#G.1bm#G#0.1#z#GbV#z#0#s#G.e#z#z#za5.8bGbgaAbv#T.l#F#Da7a7bQbybQ#z.e#z.ebAblblay.0ay.raJ.obR.s#tbR#t.s.s#tbDaZa6bT.Z.gbT.SbA.S.S.KbQ.q.q#YbqaLbeaV#D#u#D#u",
+"auauaL#W#Wbr#L#Wbe#nbe.w.w.w.1a7.1#H.1.0#u#7#7.r.0#ubl#uay#Gay#u#z#za5#u#ubS#za5#D#u#u.8.8.8.8#r.4bYaZ.G.GaZaZaZ#t.SbLbFb.#5bO.Z#t.Z.Z#t.Z#iaC.E.Z#1.g.ga6#ibWbR.C.s#..OaPbNbi.Ua9ajaO#X#v#y#r#h",
+"bL#1b.aI.g.I.UaP.GaZ#t.4.SbK#sbQbe#Bbe#b.1#D#D.w#G#DbSbl.8bl#u#F.8aB#F#F#F#ubV.w.ybSbS#u.8.8a5#z.k.K.KbK.KbQaYakbu.K.S.4.4.4.S.e.4.8.4.ebF.Kb.#h.gbR#taq.ZbW#E.gaP.YbNba#.babaaP#3.u.s#R#R.S.KbK",
+"a6a6.Z.ebO.T.QaNa2a2aIaT.Ub#.6.EbIaZaZ.4.S.SbA.kakbQ.k.KbF.ebA.y.e.ebSbS#u.8#FbG#r#r#r.e#F.ybsbdbV#zbV.yaBaB#2#2#MavaS#Z.O.O.OaPa6#i#i.ZbRaI.H.n.ZaIaI.T#5aIbRb.b.bLaIbRbR.gbWaP.g#v.g.Z#x.gbT#i",
+"#H.1#DaY.ybV.SaB.Y.O.O#.#X.ObBaIbR.T#1#t#1.Z.g.ZaP.U.U#EbW.g.g.g#T#T.4.l.l.8bS.e#F.8#F.l.8arararblbSa5#0bS.BbS#ubV#u#ubl#ublblbl#5bZ.gaP#.babN.pb##E#E#E.Z.g.gaIaB#2.ZbL.T.e.e.K#z.kby#b#b#Y#Baz",
+"brbrb4#Hb4.1#D.0.R.y.y#F.yaBbvaB.Z.g.g.g#jaOaxbxaFaS.Y.O.s.s#ta2#Fbla5bSay#ua8bl.y.y.RbK#J.KbKbK.S#F.y.8.8bA#F.l.y.y.8.8.4.4.4.4aPbtaPaP#E.YaPbNaP.Z.sbwbw.C.CbZbB.C.Z#..O.H.OaP#RbX.SbK#JbnaV#a",
+"aZ#taZ.Z.4bLbO.ebLbR.S.TbL.T#4buaK.S#R#R#4.Sbw#t#3aT.Z.ZbD#i.E#i#Z#ZafafbN#Z.na2.3ay.B.Bay.B.8a8bn.y.4.4.4.8.8bAbl.y.ybKbS.e.e.8#F.K#s#s.k.KbLbObL#t.Z.9.G.GbI.E.G.9aP.g.ZbZbZ#tbJaI#.#EbW#E.g.Z",
+"aKaKaH.u.C.C.sbw.O.O.O.O.Y.Uba.O.uaPbtaT.u.s.s#Rb.#4#5bLbL#T.Z.4.4#t.4.4#t.4.y.ebKbAbV.KbAbAbA.K.KbVbAa5#z#z#z.y#z#zbS.8aB#2.M#2.o#F#ubl#F#u#G.wbQbKbKbnbQ#YaL#Y#saY.KbAbYaBaBbY#.bibiaPaI.Tb7bR",
+"#h#5#1#X#jaOaaaa#M#paf.Ybaba.n#S.H#.#.aDaqaqaq.HaPbW#x.Z.4.Z.4bR#RbLb.b..k#4#R.4#RaH.u.u.u.ja1aK#F.S.4.K#zbQ#zbVbSbSbS.ybS#DbVbVayayayblbbbl#u#G#D#u#u#D.1.1#b#H#H#b#b#GbV#s#b.1#L#WaL#WbqaLbK#K",
+".zanbeb4be#aaY#aak.k#4bL#t.G.G#i#1#j#j.gaq#j#.bW.ZaT#tbRbObRbLb.#u.r.r.r.r.rbmbm#za5bv.la5a5a5a5.K.4#xbg#xbg.MaM#2.8bV#s.w#sbV#ubS#z.1#z#G#G.1#G.1.1.1.1.1.1bc.1.1.1.1#G.wazaz#Bb4#8bC#Hbebe#H#b",
+"#D#G#G#u#0#zbSbSbVbVbAbAbV#z#z#s#JbK.R#s#saYaVaYb.#4.SbL.4.Z#t#t.L.LaS.Lba.O.n#mbQ#z.K#zbQ#0.e#2bQ.K.K.K#z#s#z#D.y#F#F#F#F#F.oaB.8.y.8.y#ubV#0#D#u.r#G.0#G#G#Gbc.1#G#G#G#G#Hbc.1#naz#b.w.1#0#0#P",
+".z.zbcbCbcbC.0.0be#b#ba0#H.1.1.w#Dbdbdbn#H#8.z.z#BaL#b.w#sbV#z#s.K.K.K#z.K.K#z.K#R.C.j#RauaubYbt.6#6a6bL#zak#bak#D#D#D.y#u#u#0#0.w#sbV#u#F#Fbl#u.w#0#G#G.1#G.1#G.r#GbV#GbV.1bc#H.w.w.wa0#0bS#G#0",
+".w.w.1#G.1#P#G#P.w.1#H.1.1#D#D.1by#0#0#G#P.w.w#b#Hbc#Gay#G.r.1.wbv#F.l#F.laJbvblbA.8.l.8a5#z#zbS.K#4bO.4#TaBaB#Fb4#baz#b#P#zbl.o#F#D#0#G#G#GaU#0.B#u#u#u#G#G#0.1.w.w.w.w#0#G.1.1b4anbraz#8.1#8az",
+"b4.1bnbC.1b4.zaz#f#fbr#fb4#8.Van#f#8#8ananbe#G#u.1#G#DbC.1.1.w.1.w.1#G#G#GbS#ubSaiaB.SbXaB#2.4bKbvar.ebF.T#1#j.gah#O##bnbn#D#baY.1#D#DbS#u#D#7#7.o#u#0.wbya0a0#0.wbn#0bSbAbS#z#0#8#8an.z.1bd.1a0",
+"#b.1.1bn.1bebran#W.man.manbran.m.m#Bbebe.1#D#D#bbCbCbC#GbC#G.1#G#u.8#ubSbVbS#z#z.w#s#D#ubV.1.w.w#Da7bd#Dbs.5.5#O.Q.Q.K#N.Jbgawax#O.y#z#s#z#z#b#B.zazaz.1#GbC.0bd#7#D#ubSbV#G.wbebr.Vbe#8#D#7#7#G",
+"#b#b#b#b.w#b#bbeb4#H.cbebe#bbnbK.e#z#z#sbVbs#D#G#z#z#za5a5#za5a5#sbn#z#z#z.y.8bAbl#F.o.o#u#G#G.r.1bnbn#D#DbV#z.w#T#x.MbGbla5a5.eaB.S.SbT.6.a#2bK.1bn.1bn.1bean#lazazbe.1.R#F.5a#.S.e.ebUbU.W.Wap",
+".ybAbAbKbK#DbV.waV#HbebebeaYbnbn#z#FaB#F.y#D#Dbnbe#H.1bn.1#Dbnbn#8#eao#e#8#8#8#8#0#0#0.w#G#G.ray#2.J#2#2.la5#z.w#b.1#u#Gbnbn#D#DbAbA.4.4.8bA#z#z.e.8#T.J#x.l.K#z#D#0.w.w#b.qbraLanbr.Vbr#8bd.b.b",
+"#B#B#Bazbrbebebe#8brbrbrbe.zbrbr.mbrb4#H#b#sbVbV#NaW#T#T.J.JbkbkaAbp#Vbpbhbpbpbp.e#zbQ.w.w#s.1.w#H#b.1#G#D#7#7#FbS.8.l.l.8a5#sbybV#G#0.w#0#z#Fa#.4#NbOar#r#r#z#za8.ybS.8.4aB.SbK.cb4anan.mbeanan",
+"brbrbebrazbr#f.Vbr#f.manb4bebean.V.V.m.maL.1bA.y.Rbnbnbnbnbn#Hb4#Y.w#saYbQbnbK.RbT.GaM#2.4bVbVbK.8#F#u#z.wbybyby#G#G#zbV#u#F#F.obb#uay#0#0.w.w.w#b#b#sbn#D.X.5.b#z#0#za5bAbA.K#s#TaAbObO#T#T#raN",
+"bnbnbnbeanbq#l#Lan.maLbrbebebrbeaVb4b4aVbnbn.wbe#T.4.ybAbK.KbQbQ#D.R#D.1.1#H.1#H#Y#s#zbVbV#z#u.ya5a5ar.l#T.J#vawa7#Hb4be#b.1.0.0#G#ublbv#c#c#2#u#Dbd#D.1.w#Hbean#b.w.wbVbSbVbVbVbVbV#D.1bV.1#ban",
+"#Bbebe#abebeaVbnbn#sbn#D#s#a#b.w.q#b.q#Y#Ybe#HbnaY#baY#baVbnaVaV#bbn.w#bbebeaV#H#D.1bebe.w#G.wa0.z.z#HaV#HaYbnaV.ebLa6a6a6bOa5b2.w#b.w#zbU#s#s#zbA.lbv#T#T.l.y#0#8.1#D.1.wazaza0.w#P.wbebe#H#baz",
+"az.1bcbc.1.1bCa0#H#8b4b4#H#Hbebr#b#bbn.ybXbK#s.c.ia7bebe#zbV.8a5bnaY.caLaLbe#H#H.kbKbKbK#s#b#b#H#bbV#DbV.wbe.w.1bCbCbn#D#2bg#i#i.J.lbA#s#b#bbQbQ#JbVbVbS#G#u.R.R.SaB#2#2aB#Fbd#H.z.1.wa0#b#Ybe#Y",
+"au.S.S#J.k.R.kaY#DbVbV#sbn#s#s#b#Y#Y#Y#Yak.q#Y.N#Y#Y#a.R.y.y.ybV#ebrbq#WaL#B#bbV.i.RbVbn.1#bb4b4#s#D.y#ubV.1#b#H.1.1#bbe#Y#b#s#z#z#z#D#7bs#u.y.lai.5#F#u#0.wbebe.qakbQbQ#baY#b#b.1.1.0#G#D#ubb#F",
+".k#s.k.k.K.KbK.KbA.KbK.K#z#s#z.K.5aBbX.4bY#RaHbY.Z.4.e#s#sbnb4#H.q#Y#sai.dbs#8anbeanan#Ybe#H#H#8#b#H.wbV#G#G.0.1.wbV#u#F#7#D.1b4#bbebebeazb4.1bVbebe.w#z#u#FaBai.4#2.4.ebQbQ.w#Y.w#G#GbVay#u#z.w",
+"bm#G#Gaybl#ublblbAbA.8bSbAa5bS#F#D.1#zbnbVbK.K.K.K.e.4aB.y#Dbnbea7#8brbq#Y.K.ebU#Hbe#Yanazbeazanazaz#n#n.w.1.1.1.w.w.1#Pa0#b.1.0bV#G.1.1az#b.w#s#sbVbV#ubVbV.1#s#z.yaB#2bG.M#xbgbG.8#z#Yb0#b#s#z",
+"bS#GaybS#G.w#b#b#zbV#0bV.w.w#G#G#G#G.1#G#zbV#D#u.y#D#z#s#s.K.8aiar.4.4bV#sbn.cbr#s#u#2.M#x.y#D#b.1#b#b#b#na0a0a0a0.1.0.X#7#u.1a0#z#D#u#F#u#ubVbV#n#n#b#Pby#b#Y#n#bbn#D#DbV.KbV#z.K#1#i.6.6bDbL.Q",
+"#Ebi#p.U.Y#Z#C#3bAbAbKbV#s#G#s#0#D#G.w.w#0bc#Gay.1#D#7#F.ya5#s.WaV.cbebn#sbQ#h.T.K.kbQb0aE#YbV.X.y.y.y.ybV.w#b.1#8.1azazaza0a0.wa0.w#0#GbV#z#z#0#F#F#F#F#F#u#ubVbe#b.1aY.wbV.ybAbRbR.Zaq.Z#E.U.U",
+".n#Z.p.Las.faQ.fafaf.U.UaPbD.Z#t.4bK#za5#z#G#G#G#G#G.w#G#GbV#u.ybUbQ#z#zbV#JbKbYb.#R.Z#tbA.wbe#n.R#D.y.y.8#Dbn#D#Y.w.wbn.w.waza0.1.1#H#b#P.w#GbV.w#0bV#u#u#u#u#ubv.o#F.y#DbK#z.K#z#4.4.S.TbL#t#t",
+"bLaZbD#R#taP.U#Z.hb6as.L#k.pba#ZbD.s.ZbTbG.8bS#Gay.B#G#0#G#D.0#D#s.y.ybVbV.4.ZbL.s.s#R#4#s.w#H.1aY.qbebQ#s#s#sbnar.l.l#u.1#HbC.FbC.1bC.1.1.1.1.1aybVbV.w#s.w#s#0by#za5#u.y.4.l#r.y.8#F.8.K.e.4#T",
+"#4#4.S.4#taZ#T#2aZaTbNaQ#daQ.fasaS#QaT.s.4.8ararbl#ubVbV#ubl#F.XbT.G#t.S#tbkbT.T.uaH#OaB#D.1.zaz.z#f.z.zb4.za0.z#Jbn#JbK.ybAbK#s#z#baz.z.z.zaobc.0.1#G.0#G#u#G#G#ubS#0bVa5bS#uaBaB.y.y#u#F#FbA.K",
+"#zbK.e.S.8.S.S.T.O#Z.LaQaQaQb5af#..Z#t.4#F.yblblbl#ubVbVbK.S#t.saI#tbwbZaI#t#t.S.n#1.TbF#zbQby.wbebranbraz#b.1.wan#nbe.w#z.y#FaB.8.ybn#Haobcbcbc.1.1.1.1#G#G#G#0#G#0#GbV#ubVbVbV.8bAblbAbSbS.K.K",
+"#F.l.8.4bLbRbRbR#Z.L#kafafbN#..Zbg.Jbv.8#u#D.0#7#ubS.y#t.s.Obaas#3baaP.Z.sbD.Z.Z.y#JaY#a#Ybe#b.wb4#b#bbebebebe#bbm.0#u#G.w.w#0bVbGbAbVbV.1.1.w#P.1#Ha0bc.1#Day#D#0.1bS#u#ubV#zbVar.8.l.8a5a5.e#N",
+"#T.4.4bObw#.bNad#k.pba#.bR.4bAa5ara5#zbVbV#u.y.4.K#t.gbi#pb5.p#k.ZaP.Z#t.S.y#Dbna7bCb4.zazb4ao.1#b.1.1bVaybV#G.wa0.w#G#z#0#z.K.y.8bV.w.1.1.1bc.1bcbc#Ha0.1.0#G#G#G#G#G#G#GbVbV#ubla8a8blbSa5.8.4",
+".e.T#1bw#..paQa.#E#v.Z.8.ebSbSay#FblbA.y.S.T.TaIaDbN#paj.U#v.g#ta6#TbAbSbS#G.1bc#GaU#P.w#0#GbSbS#G#Gay.r#D#G.w#P#D.y.8.4.4.e.e.e#u.1#P.1bc.1.1.1.0#Ha0#Hbc.1.1.way#0.w#0bV#GbV.ybl#F#u#zbVbKbA.y",
+".g#.bW.UaOa9#..O.4.8bAbSbS#u.lbv.K.K.S#x#Eb#.v...Yba#..Z#T.4#Fbvbl#ubS#G.0#GbCbc#Pbc#P#P#G.w.w#P#Gbc.w.w.w.w#P.wb0.qbQ.K#r.S.S.S#G.1b4#P#H.1bc.1.1bca0.1#P.w.w.w#G#z#GbVbVbSbSbS#DbV#s.K#4.S.4.4",
+"#EaC#i.gbT.4.4bAbAbAbSbAbA.4.ZaPa3.6#6#E#x.4bLbL.4bAbKbAbSbS#ubS#0#P#P.w.w.1.w.1#H.1a7bCbn#H#H#Hbybyby#z#z.8.4.4aM#xaZ#2.8.y#GbV#Gbc.w.1#G.w.1.wbcbC#G#G.1#G#GaybSbSbS.8bla5bA.8#z#z.KbZbRaT.ZaP",
+".4#r.K#z#z#G#ubb.8.y.y.y#R.O#Z.tbMbM#5.ebA.R#D#Day.rayaybV#G.wby.1#G.w#G.w.wbV#u.TbObO.Z.Za6bD#ia6bTbDbD#iaP.s#t.K#s.wbya0#P.1bm#G#0#0.BbSayb2#0.1#G#u#GbVay.8.8blbSa5bSa5#za5bAar.Z.gbaa9baba.O",
+"b2bS.8#N#T.Ja6bk.M.M.lbS#z#G#z.w#ubV#GbV.1#G#D.ra7bnaV#H#Hbnbn#D.l.4#2.E.6.6bT.T.X.X#u#D.1.1b4be.1#G#G#G.0#Gbcbc.1.1.w.1.w.1#D#G#D.0.0#D#GbVaybS#G.1.1#Dbn#DbnbV.SbA.KbVbK.4aZbD#F#ubVbSaybV.wbn",
+"#D.0#Dbn.1#sbQ#s#za5#z.w#zbS.y#ubV.kbVbVbVbVbVbnaW.l.l.4#Narar.8bCbn#HaVbnaVbebea0.w.w.1.1a7#u#7.1#s#H.1.w#Ha0#b#G.w.w.w.1.w#G#G.0#G.1#0.w#0#0.wbS.ebS.e.l.4.JbG.y#u#D.w.w.w#sbQbV#s#0ay#ubV#D#D",
+".0bn#Gbn#D.R.R.RbV#G#z#0bV#u#u.y.SaBbYaB#t.4bA.ea5#zb2bSbSbVbV.w.0.0a7#Hb4#Hbn#7a5#z#z.w.wa0a0#bbeaz#b#b#bbn#D.y.1#G#G#G#G#u#G#u.1.1#b.1aybl#Fa8bG#T.8.eby.Wb0bP#G#Gbm#Gbm#G#G#G#sbn.w#z#G#G#zbn",
+"#z.w.w#zar.4#T.Jbv#F.ybSbV#ubSbVaY#s#s.Ka5.K#z.Kbl#u#D#G#D.rbd.ra5#0bS.BbVa5#ua8.ybla8#u#0#G#G#G.0#D#G.wbe#B#Ybe#P.w.w.w.1#0#G#G#G.1#P.w.w#0#0.w#baY#s.wbn.0#D#7ay.rbm.r#G#G#G#GbV#0#z#0#G#z.1.w",
+".8ara5.Ka5.ear.e.w.w.wa0#bby.w#b#0#0bV#u#F#FbGbv.8.8ay#z#0#0#0#0#z#0a5aya5ayb2#0bV#GbV#D#u#u#D#Ga0a0bc.1bc#G#D#u#Day#D#GbV#G.w#s.w.w.w.w.w#z.w.waBbs.y#D#DbC.1bCbV#G#0.1#0#G#0#zbKbSbSbS#u#ubVbV",
+"#Hb4bebeazbeaz#Y#ubV#u#z#u.y.8#F.w.w.w.w#0.w#0#z#G#ubl#F#u#u#u#Fbd#u#D.0#7#7#7#D#u#D#GbV#G.w#bbebc.1#G#G.1.w#P.w#b.wby#s.w.w#s.w#z#z.KbA.4#F#T#2ar.e.ebA.ebAbAbSbQ.w#s.w#z#zbK.4.y.8bSbS#0bSbVbn",
+"bn.1a7bnbn#D###u.1#0bn.w#G#z#D#0#0bV.w.w.w#bbe#bb4b4#HbCa7#Dbd.ybs.R#D#u#u#F#7bs#u#u#u.ybA.S.4bLap#b.WbQ#z#s#z#z.8.4.8#2#2bG.MbT.4.SbA.S.4.S.K.Kararar.ea5.ebS.e.8.8.ybS#z#z#s.KbAbla5#0#0.w#s.w",
+"#s#z#s#z#z#z#za5#D#D#GbV.wbV#z#0.Ka5bKbAau.R.S.R.lbAa5.e#r#NaAaAa6.ZaW#N#N.e.e.e.BbSa5.earbOa6#Ebi#EbDbDa6#t.4.4.ebA.SbA.e.K.K#zbL.T.KbL#t#TbL.Kbn.1.1.1.w#Hbeb4bV#z#z#G.w#z#z.K#za5#zby#0bVbV#z",
+"#u#D#DbV#u#ua8#ubXau.y.y.ybs#DbsbK.SbL#RaIaI.C#3bw#t#R#R.S.S.S.y#t.gaPaP.gaT.Z.ObabaaP.Z.Z.Z.4.l#F#2#2#O.S.ebA.8.S#2aB.y#zbKbS.y#u#D.1.w.1bnbVbn#zbK.y.SbK#4.S#tbSbV#u.8.8#u.8#ubV.y.y.y#ubA#ubV",
+".##q#qat.tas.2.2#A#A#AbH.H#C.H#CaMbI#x.GaZ.9bD.G.9bD.GbT#2#2aBaBbK.ybAbKbK.S.S.S#t.Z.Z.4bAbK#zbV#sbV.K.K.K#s.KbV.K.y.SbA.KbK.y.S.4.ybAbK.K.K.K.K.K.K.e.K#4.K#4bLa2#5.D#5a2aIaIa2aIbBbZbwbw.s.OaP",
+"ba.O.Obaba#.#.#..A.A#v.Abkbkbk.A.y.8.SbA.e.S.S.4.K.e.e.e.e#z#z#0bS#ubV#zbV.y.ybS#4.SbY.S.y.yaBaB.4#t#t#t#t.S.S.S.e.4.4.S.K.KbL.S#hbF.TbR.gaPbWaP#Z#ZbaaS.p#kb5b5bNa9#..O.O.Oaq.ObaaP.O.O#Zba.Y.Y",
+"#D#u#u#uaybSbS#u#s#s#z.w#s#s.1bnbQbQbQbQbQ.Q.K.T#t.4.Z#2#T.4.4.4bAbA.SbA.S.S.K.KbQ.K.K.K#5bLbL.SbO#R.T#5b.#5.K.kb.#5bLbZbZbR.Z.gaP#.aPbNbNbN.O.Hbwbwbwbw#3.O.O.O#2.4.8.8.8.8.ybAbA.e#z#s#z#s#z#s",
+"#5.TbLbL.TbLbLbL#m#gae.CaX.Caeae.Z.4#tbLbLbZbR#tbObR#tbR.4.4.4#t.saP.U#E.YaP.U#..UbWbibWbNbNa9#..gbW.Z.sbwaP.G.9aP#E.U#E#EaPaP.U.Y#3bBaIbw.Cb.#w.ybSa5bVbSbV#z.w#z#z#z.K.K.e.ea5bAa5.ea5.ea5a5.e",
+".U.Y.YaTaT.Z.O.gbRbRbwbw#tbB.s.ZbTbT.Z#t.4.4.4a6#t.Z#t#t#t#ta6bDaIbZbB.n#m.n#3#3#X#.aq.HbH#..H#m.TbRaIa2.DaI.T#4bwbRbwbwbZb.bob.#4b.buaK#R.s.9#t#3.O.O.Obw.sbw.sbwbwbwbw#tbwbRbB.Z.gaP.gaP.gaP.g",
+"aB#FbSbVbV#D#ubVaya8bl.8aybS#u#u#zbVbV#zbV#zbK#u#u#u.y.8.ybA.ybA.4bY.4.4#t#tbDaZ#tbR.4#t.4#t#tbL.K#tbwaI#5aIbLbFaIaIbwbD.U#E.Ubi#EbDbD.ZbT#xbT#xabaRaR#oabat.O#Z.s#t.SbLaI#4aKb.b.b..Kbu.7.Qbub.",
+".w#b#b#Y.w#0.1#G#z#G#z#G#b#b#b#s.1#G#G#G.1bc#G#G#G#Day#G#G#G#G#G.w#G#GbV.1#z.w#b.kbnbKbn#s#DbVbV.K#t#iaP.ZbW.g.Z.s.s.gaPaP.Zbw.Za6.Z.Z.8#r#z#ra5#D.r.r.r#Gbcbmbm#G.1.w.wbc.w#G#G#G#G#G#Ga0#P.1.r"
+]
+
+button_xpm = [
+" 96 96 254 2",
+".. c #9c3218",
+".# c #a4733e",
+".a c #bc450a",
+".b c #d4700c",
+".c c #dc8c29",
+".d c #bc5e00",
+".e c #d46b37",
+".f c #945431",
+".g c #bc5a2c",
+".h c #8c4e4b",
+".i c #d47e16",
+".j c #bc7422",
+".k c #d47d3a",
+".l c #d45e28",
+".m c #ec9b3e",
+".n c #bc6b43",
+".o c #d45a13",
+".p c #a45236",
+".q c #dc8848",
+".r c #e46b1b",
+".s c #bc652f",
+".t c #a46243",
+".u c #bc6920",
+".v c #a4391e",
+".w c #e47b35",
+".x c #9c6b30",
+".y c #d46d24",
+".z c #ec8a29",
+".A c #bc452a",
+".B c #e46833",
+".C c #bc702e",
+".D c #c47845",
+".E c #b15314",
+".F c #e47e10",
+".G c #bc5a18",
+".H c #bc6145",
+".I c #a44d16",
+".J c #cc5728",
+".K c #d47439",
+".L c #a45b39",
+".M c #cc5815",
+".N c #dc8f4c",
+".O c #b46239",
+".P c #bc5307",
+".Q c #d4794f",
+".R c #d47624",
+".S c #cc6c2c",
+".T c #cc6941",
+".U c #ac5222",
+".V c #e49328",
+".W c #e4754d",
+".X c #d4650b",
+".Y c #ac592c",
+".Z c #c05e2d",
+".0 c #e4751a",
+".1 c #e47d29",
+".2 c #9c6143",
+".3 c #e45f2b",
+".4 c #cc632a",
+".5 c #cc660d",
+".6 c #b44b13",
+".7 c #d48442",
+".8 c #d66228",
+".9 c #bc6221",
+"#. c #b45736",
+"## c #d47714",
+"#a c #dc8936",
+"#b c #e48237",
+"#c c #cc530c",
+"#d c #8c522b",
+"#e c #dc8819",
+"#f c #ec9129",
+"#g c #bc7936",
+"#h c #d46f50",
+"#i c #bc521d",
+"#j c #bc553b",
+"#k c #9c523b",
+"#l c #f49a45",
+"#m c #bc7548",
+"#n c #ec8643",
+"#o c #a86d3a",
+"#p c #a44d21",
+"#q c #a4754b",
+"#r c #d46547",
+"#s c #dc7937",
+"#t c #c4642d",
+"#u c #dc6c21",
+"#v c #bc4d2e",
+"#w c #cc7e53",
+"#x c #c45917",
+"#y c #cc5c42",
+"#z c #dc7036",
+"#A c #ac5448",
+"#B c #ec8f44",
+"#C c #b45c4d",
+"#D c #dc7622",
+"#E c #b45222",
+"#F c #d4651b",
+"#G c #e47328",
+"#H c #e58429",
+"#I c #9c5f23",
+"#J c #d47f2b",
+"#K c #cc7116",
+"#L c #eca24e",
+"#M c #9c471c",
+"#N c #d45b36",
+"#O c #c46716",
+"#P c #ec7836",
+"#Q c #ac642d",
+"#R c #c46f2e",
+"#S c #c47551",
+"#T c #cc5b2b",
+"#U c #cc685f",
+"#V c #bc4b3a",
+"#W c #e49a4b",
+"#X c #b44c35",
+"#Y c #e48745",
+"#Z c #ac613c",
+"#0 c #e47234",
+"#1 c #c46242",
+"#2 c #cc5e1a",
+"#3 c #b4683d",
+"#4 c #cc7430",
+"#5 c #cc7042",
+"#6 c #bf4b0d",
+"#7 c #dc6e13",
+"#8 c #e48c21",
+"#9 c #9c3445",
+"a. c #8c432b",
+"a# c #cc5e04",
+"aa c #a43f33",
+"ab c #b46d44",
+"ac c #9c5e62",
+"ad c #9c4833",
+"ae c #b4742c",
+"af c #a4522b",
+"ag c #dc943c",
+"ah c #b46000",
+"ai c #c46309",
+"aj c #a4441e",
+"ak c #dc7f4c",
+"al c #ac6e27",
+"am c #ac4b4e",
+"an c #ec9238",
+"ao c #e48518",
+"ap c #e47c4f",
+"aq c #bc5c3e",
+"ar c #d56238",
+"as c #9c5840",
+"at c #ab6946",
+"au c #cc761f",
+"av c #9c5024",
+"aw c #bc4922",
+"ax c #bc421d",
+"ay c #e46927",
+"az c #ec8836",
+"aA c #cc513b",
+"aB c #cc661d",
+"aC c #b44a21",
+"aD c #b4544c",
+"aE c #ec8a55",
+"aF c #9c5a20",
+"aG c #94533f",
+"aH c #c4701d",
+"aI c #c46b42",
+"aJ c #dc5a18",
+"aK c #cc7b2f",
+"aL c #e49046",
+"aM c #c4520b",
+"aN c #dc774c",
+"aO c #ac4631",
+"aP c #b45b28",
+"aQ c #944e30",
+"aR c #ac6e4d",
+"aS c #a45f2a",
+"aT c #b4612a",
+"aU c #ec7032",
+"aV c #dc872b",
+"aW c #cc5939",
+"aX c #b47844",
+"aY c #dc843b",
+"aZ c #c4601d",
+"a0 c #ec7f36",
+"a1 c #c47531",
+"a2 c #c47344",
+"a3 c #ac431d",
+"a4 c #ac7439",
+"a5 c #dc6735",
+"a6 c #c4582a",
+"a7 c #dc7c1b",
+"a8 c #dc5d26",
+"a9 c #ac5036",
+"b. c #cc7742",
+"b# c #ac4b13",
+"ba c #ac5a37",
+"bb c #dc5f0c",
+"bc c #ec7a29",
+"bd c #dc7813",
+"be c #e48b37",
+"bf c #f48e28",
+"bg c #c44e1f",
+"bh c #c44e3f",
+"bi c #ac4b1e",
+"bj c #dc6544",
+"bk c #c44c2b",
+"bl c #dc611a",
+"bm c #ec7125",
+"bn c #dc7d29",
+"bo c #cc7752",
+"bp c #c4473c",
+"bq c #ec994b",
+"br c #e49336",
+"bs c #d46f16",
+"bt c #bc600a",
+"bu c #d47a46",
+"bv c #d45b1e",
+"bw c #bc653a",
+"bx c #ac3c1d",
+"by c #e47943",
+"bz c #a46b2e",
+"bA c #d46b2e",
+"bB c #bc6c3a",
+"bC c #e47f1b",
+"bD c #bc5b22",
+"bE c #bc6052",
+"bF c #d47346",
+"bG c #cc561f",
+"bH c #b46044",
+"bI c #bc5312",
+"bJ c #d4775e",
+"bK c #d4732e",
+"bL c #cc6b37",
+"bM c #cc644f",
+"bN c #ac512d",
+"bO c #cc6137",
+"bP c #ec8552",
+"bQ c #dc7944",
+"bR c #c46339",
+"bS c #dc6a2c",
+"bT c #c45a21",
+"bU c #dc6f44",
+"bV c #dc732c",
+"bW c #b4502c",
+"bX c #cc6d1f",
+"bY c #c46521",
+"bZ c #c46939",
+"b0 c #e48653",
+"b1 c #ac6445",
+"b2 c #e46e43",
+"b3 c #c45851",
+"b4 c #e48b2b",
+"b5 c #9c5430",
+"b6 c #944d49",
+"b7 c #c46a51",
+".waB.U#5#Dba.##u#sbn#H.8#z.0#Db2.4#E.g.e#T#F#z#4bL.n#EbSbm.kauaz#Bbnbr#B.y#b#bb4.w.z#D.z#haKaZbr#Ha6bLaubn.w#Yb4.z#0#ba7an#s#Yb4b4.8.wbnaVaOb3aBbS.l.K.4bL.S#i#5#0#u.w.w#u.w.1#D#zaP#AbK.y#.#a#u",
+"#b#F.Y.T#u.O#q#D#z.1b4ar.wbn.0bS#raC#..T.4.lbK#4aZ#Zbi#G#G#s.S.1bebnbr#BbA#b.1.1.w.z#Gan#5aK#tbr.1a6#1aua7bS.w#HbCa5#0#DazbK.w#8#H.8#0aVbXbibRbsbA.l.K.e.e.4#x.T#0.8.wbVbVbn#sbVbSaT#AbVbS.gag#G",
+"#bbS.YbL#u.O#q#D#sa7bea5.w#G#D.8.K#ibW#1.4.8.e.SbD.p#pay#G.k.Sbcbebnbe#BbA#b.1bn.1bc#Gbe#1aHaZb4#D.Zb.aLan#0#Dbda7bS.ybCbe.y.w#8be#ubSaY.G#X#1.ybA.8#z.K.ebL.ZbL#0#u.w#GbV.w.1bnbA.u#C#z.y#.aL#G",
+"#YbVaTbL#ubaatbV#zbnbe.K#zbnbn#N#z.g.UbwbO.4.S.4#R.L.UbSay.k#Jbc#abebrazbK#bbnbC#GbC#ub4#X.u.Z#HaY.eaI#Wbr.w.1#H#HbV.8b4anbS#s#H#b#GbVbe.6bw.4.ya5.y.ebS.e.e#t#t#G#u#zbVbV.w#s.w.e.u#CbKbS#.br#P",
+".wbVaT.Tayba.t#u#zbnaza5ar#D.1#T#zbTaO#.bwbL.8#t#tas.Y#Gbl.K.k.1beanazbrbK.w.1.1.1bc#0be#j.C.4b4.ybO.g#Wana0aya7az.w#2az#B#z.w#HaY.wbVaNa3.s.4bA.e.8#F.8#z.ebLbD#0#u.w#GbV#b.1#s#z.s#AbAbV#jag#G",
+"#0#D.ZbLbS#.as#u#z#Dbe.e.4.R#s.J#G.4a9.p#.bR.SaZaP.f#Z.w#u.K.R.1bebqbrbe#D#bbeb4#PbC#z#aaO.CbL.1bV.T.Ibr#8a0.w#Han#Y#2anan#z#0bC#s#H#DaraC.s.4.lbAbA.lblbS.e.K#i#ubV.w#s#GbQbV.wa5.CaD.ybV#.#a#G",
+".1#u.ObLbS#..2a8#z##azar#T.RbQa6#u.4#.aQbNbR.S#T.UaQ#C#bblbK.kbCaV#l#fbebV#bbr.z#G.0bSaYaa.sbO#D.S.Q.U#Laz#n.w.1b4#B#2anbebS#zbC.KaV#Dbpb3bYbX.l.8bAbvblbS.e.k.g#u#G.w#GbVbVbS#s.e.C#CbKbV#X#a#G",
+"#GbV.gbL#u#..2#ua5#u#Y.e.J.R#sbkbbbA.Oa.adbR.T#2#Z.f#3#bbl.KaYa0bn#L.Vbe.wbeanaz#P.0bS#aaabw.e.0aBaNaP#W#8a0#G.0#8aE#2an#HbS#0.1.S.1.1.A#U.S.Rar.4a5#FbSblbAbQ.ZblbV.w#0#DbV.ybV.8.CbE#zbVbW#a.1",
+"#zaybR#m#s.A#AbX#D.1#u.wbvbV#z.M.8bA.4#E#k#Z.OaZ.hafbA#zbAbA#D#Hbnanbr#8aVb4#W#f.wbebVak#M.ObL.R.Ya2.Gbe.1aza7a7#Y.1#F#B.y.k#Db4.y#saY.P.ybX.K.4.8bS#zbS#u.8bA.SbDby#G.1#s.4.KbAbV.SatbVbl#Z#D#G",
+"#Ga8bR#g#s.A#Aau#D#0bV.w#F#Ga5.M.ybA.8#v.p.L#ZaTb6afbAbVbA.KbV#8#s.m#fbr#H#H.m#f.1#bbV.k#p.ObR.y.Oa2aZ#n#baz#H#H.w#0#uaL#O.k#D#b#F.w#b#2#zbK.KaB.ybS#GbS#DbSbVbAbT.wbV#G#s.4#zbS.KbAat#z#u#obV#G",
+"#zblbwae#z#v#A.y#Gbn#u.w.y#z#z.l.ybSbA.Zba#k.LbNas.UbK#0.8bKbVb4bnaL.mbrbe.canbr#H#bbA#4af.O.S.y.OaI#tbea0#b#H#b.y.w#G#b#x.KbV.w.y#s.w#F#s#zbVaBbS#ubS#GbSbSbK#z.4bQ.r.1bn.y#sbSbV.SaR#0#u.Obn.1",
+"#G.8bw.C.w.AbH.ybV.w#za0bS#0.wbS.ybAbS.8#.afaQaQ.L.UbVbVbS.K#sb4#Dbranbrbebe.m#f.1a0bAbL.Y.O.T#F#.aT.4.w#b#H.w.w.8bS.w#Y#x.SbV.1bS#0#z.y#0#z.y.8#zbS#ubV#GbS#ubA#4.w.0.1#bbKbVbV.y.4b1bS#u.O#G.1",
+"#bay#taX#sbk.H.y.w#G#u#bbVbV#z#z#RbAbS.ebRafaQ#d#kaP#s.wbA#zbn#H#sbeb4bebebeanb4.1#HbV#tba.YbL.y#X.U.S.wbc.1#GbV#zay#0by.y.SbV#PbS#zbS#u#z.wbl.y#GbS#u#G#GbV.ybK#z#b.0.1.wbnbV#DbA.Sb1#0bS#3#0.1",
+"#bbSbB.C#sbk#CbsbV#z.yby#u#ubS#G.O.4#ubS.4bNaQaQ.pbD#G.wa5#s#s#H#abebe.zaY#bbr#8#D.1#z.Gba.U.TaB.Ob#bK.wbe#G#G#s.w#u#G#bbKbAbV#G.RbV#F#s.w.w#F#F.w#0#G#0#0aybSbSbQ.w#G#G.wbVbA#GbKbAab#0ay.n.1.w",
+"#b#u.sae.1bk.H#D#z#D.8.wbS#u.y#z#Z.Z.lbSbA#.b5.fba.Z#s#GbS#z#sbe#bbrbebrbnbnan.V#D.1#z.G.nba#4bvbB.6#s.1az.0#G.w#Gay#P#GbKbK#b#G#z.waB.w.w.w#F#u#0.w.w#G#G#0bVbS.ebV#G#G.1#z.8bS#z.8b1#0bS.n#0#G",
+"#s#u.Zaebn.A#Cbs#0#0#F#bbV.y#u.w.taPbvaya5.Zafas#Z#t#0#G#F.K#bbr.wbeanbrbnbK.man.1.w#s#i#S.ObuaBaI.EbQa7a0.0#G#0#D#Gaz#u.Rbnan.0bebQaB#s#sa0#F.wbS#G#G#G#G#G#zbA.ebl#G.0bV#z#F#0bK.8.tayay.H#D.r",
+".1#zbT.ZbQ.yaMbK.K#0.w#0aY.SbV#ubMa3.K#Farbg#.aSbD.4#D#G#D.5#Y#b.qaV.V.m#z.e.m#fby#D#J#1.H.uaK.ZbRbIbe.1a0.w#D#D#Gbdb4b0.J.wa7ak#H#n#xb4#H#z#zbnay#G#u#G.1.1#G#u#s#Tbd#0b2#GbA.1.8#r#Ia5#sala5#D",
+"#GbVbT.4bQ.8bI.Sa5bV.w#0#saB.kbVbM.6.Kbla5.J.Z#Q.sbK#G#G.1aB#Y#b#bb4.Vbr#F#z#B#8#0bdbK#j#.aP.S.g.TaZ#B#H.w#P.w#D#0.Fb4aNbv.1#DbV#Ha0.Mb4#H#za5#D#0#G#G.0.1.1.w#D#s#Ta7#0b2#D.8#H.y#r.fbA#zal#z.1",
+"#GbV.Z#tbQ.S#xbLbK.w.wbV#sbYbV#G#5#6.SbA#zbv#taT.Z#z.w.1#zbX#Ybn.qb4.mb4aB#zbe#8#0bd.R#j#.bt#R.g#1aZbe.1#G.wbV#D#PbCbe.ear#D.1bX.1by.l.1.1a5a5#Dbm#G#G.1.1a0.w#G#s.la7.wa5#Dar#HbVbF#I.4a5ala5.1",
+"#G#z#tbLbQbA.G#RbA.w.w#u.KaBbVbV.e#E#x.ybV.8.4.sbTa5.w#Gbn.4#Y.y#YaV.m#H#F#sbean#Gbn#s.gaDaT#R.g#t.4#b.0#G#G#G#D#0bCb4#x.e#G.1aB#G#0.8.1.1bS.B#G#G#G#G.1.1.1#G#u#z.e#H.w#z#D.8#H#z#haS.4#zal.4.1",
+".1bV.4bLbQ.eaZaIau.w#0#Fa5#tbV.1bA#x#E.SbV#u#F.4bG#z#0#zbVbYakbX#YbnaL#b.ybV.1an#P#H#saqaq.u#4#j#1.S.1#u.1#0.1#G#0#Hbn#ibjbV#b#2bca5a5.1.0.l#z.0#G.1.1bcbc#b#D#u.war#8by#z#u.e#b.y.Tbz.4#za4.J#D",
+"bc#z.4bZ.Q.S.9aI.R#b.w#F.K.4bV#G.R.4b#.T#u#D.y.8.8#GbcbVbK#R.qbKbebn.1#s#Dbs#Dbe.w#8aY#jaq.s.SaO.Z.S#D#7bm#G.w#u#0.zbn#xa5#G.1#2#bbSby.1#G.l#0.0.0bca0az#Ha0#G#u#0.B#8.w.K#D#r.1#FbO.x#T#zaX.J#D",
+"#GbK.4bR.K.SbD.C.Sbe#0bG#zbAbV#D#DbL.v.T.y.0blarbS#G#G#D.KaH#Y#s#H.wbAbV#D#D#D#G.w.zaV#.aq.sbwax.gbA#D#7#G#u#G#u#uan##aW#NbV#D.4#bbvap#H#H.8#sa7.1.1bc#Ha0#H#0#D#0a5#8bQ#z.y.ebn.y.T.##x.KaXbkbV",
+"#G#ua6#t.T.4.G#3.R#b#zbv.K.ebn.r#DbL..aI.4#7blar#G#Gay#u.KbY.N.cbnbe.ybVbn#G#b#u#b.zaYbW.H#R#tbx.Z.k.w.r#0ay.1#GaJaz.5bO#T.w#DbAbnbg#b#Hb4bVby.F.0bC.1.1.1#b#GbVaU.8#HbnbA.R#N.1#s#h.#bgbAa4#vbV",
+"#G#u#tbO#t.K.9bw.lb4#G.8bla5aWa7ay.4.YaD.K#ublblay#G.1.y.K.Z#Y.iaY#T.R#Nbe#zbC.1#H#Bb..ZaPb.#3aFaPak#G.0.1#D#D#G#D#b#xbAbv#G#ubA.w.Mbn#nbVbS.1bdbcbm#P#G#Gbc.1#G#D.w#u.w.w#2bK#4bK.K#vbw.Q#tbt.K",
+"#D#u.ZbR.4.ebD#tbAb4#u.8#u#z.lbn.rbAbabN#tbS#u#u.B#G#D#D.e.4#Ya7#b.4bnaW#H#zbC#GbcaL#4aTbW#4aTaS.UbQ#D#u#z#D#D#G#u#baBa5bS#G#u.K#b#F.1bebVbV#GbC#H.1#P.1.1#H#GbVbS#G#u.w#saBbA.SbAbF.gaqb..u.G.K",
+"ay.y#t#t.Z.e.G#Ra5#Hblay#Db2.laVaybK#.#p.g.ybVbV#G.w#7#z.4.e#abeaY.ybn#T.1#zbC#D#G#b.S#t#x#5.Z.Y.U.kbSbl#GbA#u#G#u#b.4.e#z#G#FbAby.ybeaz#ubS.1bc.z.1#P.w.1bc#DaybV#G#F#G.w#2.S#t.R.e.g.OaI.9#x.K",
+"#G.8#tbR#2.ebT#R.ebC#F#z#GbS.4#HaybA.Zajbi#tbVbV#0#G#F#saB#s.Rbe#bbAbn#Tbna5#GbCay.wbLbR.ZbL.Z.O#E.Kbl#ubVbKbSbVbl.w.4.8#0#ua#bVbQ#ube#b#u#G.1.1bf.0.w#Pa0#H.1#GbV#G#u.w#s.M.S#tbn.e#1.gbZ#R.9.K",
+"#G.y#t.4#T.e#2.S#ra7#u#0#DbS#N#HbVbS#T.U#p.sbK#u#G#G.y#s.y#s.y#zaVbKbn.J.1a5bC.1#G#s.4bO.4bLbD.sbWbF.8ay#z#zbA#u#D#z.4.4#0#u.o#s.4bSbe#H#u#G.1.1.z#D#G.w#ba0.1#0#D.w#D.wbV#x.S.S#s.SbR.ObZ#5bYbO",
+"#GbA#t.4.4#z#2.S#N#D#u#0.rbVarbn#GbS.4#vb5.O.Sbl#DbVa5.K#Dbn.ybVbn.Kbn.J#D#z#G.1.rbV.ZbR.Z#T#i.s.g.ebl#G#0.K#u.8#0bA.e#2.1#u.y#b#xbAbebn#D#Gbm.0beblbV.w.1bc.1#G#D.1#Ga0#s.M.S.Tbn.S.T#jbBbu.4.Z",
+"#G.ya6.4.4#zaB.SaAbd#u#0bdbVarbn.w#u#F.g.pba#t#F.0#u#s.8bnb4.y.8aVbQ#Hbkbna5.1.w.1#z#tbL.4.Z.E#t.gbA#uay#sbS.K.y.w#2#z.4#0bl#D#Ybg#zbebC.0.w#G.1.1bvar#z#u.1.1#G#D.1bV#b#z#2bLbL#b.S#5#..g.k#t.Z",
+"#GbAbD#t.4#0aB.yaA.y#F#0.r.w.8#DbybSbv#t#kas.s.X#D.y.Waibe#HbVa5aVbQb4bkbna5#G.1.w#s#tb.bR.4#ia2.g.y#F#u#GbKbV#ub2#c.K.4bV#7#DaYa6.kaza7#D#P.1bc#z#Tar.8#F.0.1.r#G.1#u#P#s#2bL.S#b.S#haP.U#5bY#T",
+".w.4aI.sbAbSbK#ta6bsbd#za5.0bC.l.1#0bla6.Z#3aIbT#sbUaVara7.q#ebn#b#D#YaA#8#s#u.wbv.K.L#u#R.4#Z#F#T.e.8#z.e.l#sbs.w.P.e.w#G.r.r.1#T.wa7.z.1bea0.F.K#D.RbK.e#zbV#D.w.1#G#u.w#zaB.K#Y#ubOaC.gbobwaP",
+"#GbYbZaPbA#u.y.g.Z.R#u#0#0.0bn.4#G#P#u#TaPba#t.G.ybQ.c.4#8#YbraYbn.R.wbp#ebn.8.1#F.K.L.rbL#t#Zbl#T.eaB#z#z.4#G#7.1#6.S.w#u#G.rbV.l.w.0be.1.wa0#8bV.R#J.K.4.8bV#G#G#G#G#G#b#saB.K.w.ybOaCaPb7.s.G",
+"#G.4bB.U.SbVbAaPaW#D#Da5bSa7#H#2.w#PbSbA.ZaPbw#t.y#zbe.4br#sbq.c.w#D#s#Vao#z#u#G.l.KaS.rb..4afa5.4bS#Fa5#zbv#u#G#0#6bAbQ#u#G.w.8#z.wbd.z.1#b#H#HbS.y#HbQ#T#T#zbn#G#G.w#G.w.waB.K#s.8.T#v#.aIaPaT",
+"bV.4.n#EbA#zbKaP#N#u.0ay.B#HaV.E#G.w#GbS#t.ZbZ.SbV#zbnbVbqai#WaL#b.1aYbp#e#zbS#G#F#z.L.rb..4afbS.lbS#F#u#z.8#u.1#0.M.8#z.o#0#baZa5.w#u.1#D#b#H.1bAbVaYbQ.8.J.y.w.w.w.1#0.w#s#2.SbVbA.K.gaPaIaP.Z",
+".1#t#m.Y.SbVbK.g#N#u#7a5bVb4bn.6.w.w.0bS.S.saI#tbVbV#s#s#Y.daLaLbe.1bQbh#8#zbV#G.l.Kba.r.k#tbNay.l#u#F#ua5#F#u.1.w#2bAbS#F#z#Y.GbVa0#u#D#7az#b.y.ybe.1bVby.laB#b#P.1.w#G#GbVaB.S.y.e.K.g#..n.U.O",
+"#z#t.naP.S.y.SaT.e#F#7aya5#HaV.6.w.1#G#G.ybD#tbk.4#JbQbn.Kbs#Bbebe#Hbnbp#8.ybSbSaJ.K.O.r#4.4#Z#u.8.8#ubS.8.lbVbn#z.e.ebSbbay#bbY#Ga0bS#D#Dbr#bbG#D#n.1#u#b.eaM#b.w#G#G#GbV#s.SbK.4.4#5aPaPbwb#.O",
+".wbD#3.U.K.y.S.Z.e#7#7b2#ubnbebTbV.wbC.1#D.Z#tbT.ZbK#h.c.e#8#b#HaV.1bKbp#8.8#z#ubv#z.nbm#R.y.na8bS#FbV#zbG.ebn#D.4.KbKbV#7ay#baB#G.wbS.w#Hb4#s.4#Daz.1#D#nbV.M#H.w#G.w#G.w.wbK.e.lbA.KaPaPbwaf.O",
+"#baZ#3#..KbS.S.O.ebs#D#0a8#7be.T#u.1bcbcbn.Z.S.TbLbY.TbrbUanbV#H#H#H.Rbp#8bA#zbSbl.K#mbm.4.ea2bl.ebG.wa5bg.S#s.y.G.k.KbVbm.0.w.Sbc.w.B#Bb4#H.y.e.1an#H.1a0bV.5aY.w.wa0.w.w#sbA.SbA.ebu.Z.O#m.Y.H",
+".k#t#X.UbQ#4#tba.B#u#ubV.ya5a0.X.T#H#P#Ga7.y.n.u.sb..K#s#Hbe.i.k#D#YbT.e#0bl.waibA#RbQ#z#RbK.3.y#F#r.y#DaA#u.z#x#v#K#z.w#F#Y.g.R.w#HbCazbCbea#bnbean#H#0a0#G.y.1#G#PbV#b.X.1bV#t.y.KbL#R.9#5.s.9",
+"bnbR#.bW.K.S.ZbabS#u#D#Gbl#z.w.XbO.1bcaUbC#J#1aH.s#R.k#ubean.RbK.1#s.G#z#0#F#saB.8.C#za5aHbAay.y.8#rbS#ubvbAb4bXbhaBbV#z#7.wbkaV#b.w#D.zbcbe.X#sbean#b#G#b#G.ybVbm.w#Daz#D.wbV.4.y#z.4#RaPaI.saP",
+"bK.4aqbi.KbY.ZaPa5#u#GbVa8#z.w#ubOa7#P#Pb4aY.T#O#R.ZbQ#2#YanbVbKbe#zaMbQ#0.o#D.S.l.j.Kbv.ubV.B.R#F#rbS#u#TbAb4bAbR.X.y#z#ua5bg#a#b#H.0#H.1be.y#sbebe.1#G.w#G.ybVbm#G#D#Ya0.wbV#t.ybQ.4#t.ga2.Z.Z",
+"bn#t.HbW.K.S.4.Z.e.ybV#D#u.w.1#D.ZbC#P.w.z#abFaB#4#tb0.Man#YbnbKbebV#2.w.w.o#ubX.8#R#z.l.u.K.BbK.l.e#u.8.l.R#sbAbObs#ubS#DbS#Tbe.wbV#D.w.w.1.y#b#Haz.1#G.w.w#u.ybm.1bVaza0#b#s#tbA#s#t#t.s#5.saP",
+"#s.4bHbN#5.ybA.ZarbA#G#u#0.w.1.1.Zbn#G#0az#Y#z#D#sbAaE#xazbe.1#s.wbV.4.w#G#ubVaBa5aubQa5.ubAay#J.8#F.8.8#FbKbObY#rbnbV.J#D#zarbnbV#D#G#P#b#ubVaYbe#bbc#G.w.wbV#uay.w.w.1#G.w.wbD#T.K.4#t.O#5aPaP",
+"#D#t#.bNbL.ybK.ZbO.S.w#u#Ga0a7.1a6#H.w#Gb4bebQ.1.w.w#Y.ybe#H#b#b#G#zbV#s#G#G.1#2#zau#0a5.jbA.B.Kar.y.8.8#D.K.gbtar.1bVbGbnbS#z.1#D#u.w.w#b#Fbn#saz#b.1#G.w.w.w.y#u#P#b.0.1.1#YaP.M.K.Z.Z.ZaI#EaP",
+"bV#t.Ha9bLaB#z.4a6.4#b#D#Ga0#ub4bD#H.wbSao#bby.z#HbebV#Daz#Hb4#b.w#ubV.1.r#G.w.4#zbY.ea5a1bA.8bKarbsa5.8a7.K#V.Z#N.1bVbG#b.8a5#8.1#G.w.w#n.5.waYazbc#P.1#P.w#P#F#G.waz#Dbc#Gbeb#bGbU#t.saPb7.gbZ",
+"bVbL#m#..SaBbV.l#EbLbe#G#G#b#7be#i#H#PbS.1.w.waz.1#n.X#ban#8b4#Ha0.ybK.way.r.wbKbSbt#2a5aK.Ka8bKarbd#z#ra7#s#X#R.l#7bV.lbe.Ma5azbe.1.1.w#n.X#baVaz#H.1#P#0#P.w#F.w#0.w.0az#GbQb#.4bQbL.Z.Z#5bwbo",
+".K.K.T.gbO.4#s#Fbiapbca0.0be.1.1a6by#G#G#bb4be.zaY.R.y.1az#b#s#b.za5.8#H#2.1#Dbv.K.6bQ.K#F.Kbn.SblbV.k.4bQ.4.MbX#4#Har#D#s.4###bby.1anbebe#Fbe#baz.w.w.1bV.w.wbvaz#D#G#G#G#s.K.UbO.y.e#O#C.D.U.i",
+"#t#tbRbW#R#tbV#2#E#b.1a0#Daz#s#GbTbybc#G.1#bbr#f.q#D.y#baz#H#DbV.za5#F#b.Jbna7ar#4#6.K.4.SbV.y#FbS#z.KbYbybAaBbKbLbn.8#G#s.Z##.w.w.1azbe.1.ybe.waza0#b.1bV#b.w.o#b#D#G#G#G#zbA#EbO.R#r#OaDbB.U.k",
+"#ibwaI.Z.T#t.K#2bD.W#Gbc#G#b#H#GbDby.way.1#ban.zbe.y.y#b#n.w.y#D#Har#u.1#2bnbd.ebOa6.K#x.4bA.4.ya5bV.KaZbQa5.y#s.Sa7arbV#s#x.5.wbV#bb4an#u#saY#sbe.1#bbe.1#n#b.M.wbV#G#GbSbV.e.9.4.y.K.5#AbB.U#J",
+"aPaIa2.s#5#t.K#ObDbQ#G.1.w#b.1#GbD#z.w.rbVbebr.zbQ.y.y#b#nbV#ubVaV.l#z#G#2#D#DbF.4bL.Kbg.Ka5.4.8#0.ybK.G#z#zaB.k.4#Da8.1bnbk.b#bbV.wbebr.y#Y#s#JbV#sazaz.1#b.1#2.w.w#G#G#GbV.K.S.S.y.KaHam#3aO.k",
+".Z#5.Dbwb.#t.K.Sa6#z.1bcbe#b.w.0#i#z.w#Daybeazb4#s.8bV#n.w#GbV.w#H#T.w#D.l#Dbs.T#T#z#z#x#z#z.4.8bSaB.K.G.e#zaB.R.4#Dar.w.wa6.R#b#z.1bebeaB.NbA.S.SbVbebe#G.1.1#2#G.w#0bVbVbVbV.ebLaB.e#KambwbW#J",
+"bWaIaIaP#5.S#s.e#t#s.w#G#Bbn#H#GaP.8.w#GbVbe#b.z#s#D.wa0.1#G.1beaY.Jby#7a5bV.5#1aBak#sbgbQ#z.8bA.BaBbQaZ#z#z#2.S.4#Da8.1#z#Ta7a0#s.1bebnbXaNbRaZ.4.S.w.1#G.1.w#2a5#0.Bbl#ubS.ybVbO#O.ebYambwbWbK",
+".gbL.T.G.K.S.KbA.4#z#P#D#Y#Da0bc.s.4#P.w#Gbe.1a0#sbn#ba0.1.0#b.wbn#vby#7#z#z.5#jaB#b#z.M#z#z.8#FbS#2aYaZ.e#zaZ.R.4#Da5#GbVbO.1by.w#Dbr.R.S.QbZbD#1.S#z#G#u.w.waBbl#0bS.8bVbVblbSaq#x.T.Sam.CbWbn",
+".ZbF#4.9.k.SbV.8.4#z.w#ube.y#bbc#t.4.w#P.w#b.w.zbn#D.1a0.1.1#H.1aVawby#F.w.w#O.g#Fak#DaMbV.ybA.l#u#2akaZbA#z#2bAbL.0ar#GbVbObn.w#Y#D#BbX.k.Qa2.sbM#tbA#u#G#nbybG#u#0a5bl#0bV.y#G#.bT#r#4#X.OaPbn",
+".saIbwaPb..e.K.S.e.8#b#D#P.1#G.1.KaMb0#Da0bman#Jar#Y#8a0.w.w.1bC.ea7#GbS#b#T.Qahb4#D.y#2bS#zbl.ybV#Mbu#tbl#w.yblay#0.R#Hbk#D#H.1#bbV.V.4b4.TaubRbZ#t#t#z.1.1#b.9ar.w#ubv#zbdbs.K.O#t.KbD#3#ob##b",
+".saIbR#E#5.4.y#2bA.4.way.w#G.w.1#s#x.q.y.w.0#nbn.l.w.1.1.wbV.1bCbL#H#G.8.1#x.Q#O#b#D#F.8bS#z.y.y#uav.K.Sbl#m.y#F#D#zbV#8bp.RaV#Hbeak.cbQ.c.T.S#tbR.s#tbK#G.1.w#OaW#b#ua8#0#ubs.K.Y.4#z.G#Zabb##s",
+".gbwbw.UbL.4.SaB.S.8by#D.w#G.w.w.waZbQ.8#G#ube#J.l.waz.0.1#u#bbna6b4#z.l#u.M.K##az#D#FbVbSbS.y.8#uaS.SbLay#3.R.o#ubV#z#8bpbn#HazaYaL#Db0b4bu.R.S.Z.Z.Z.K#G.1#baB#i#b#D.8#0bdbs#rafbL.K#x.Oab.EbV",
+"aPbDbw#EbZ.SbA.ybA#2#s#G.w#G.w.1by#2.K.4#z#G.wbK#ubnaz.X#P#Fbe#Da6bebV.l#GbG#Nbn#b.y#F#s.y.8bK.8bl#Z.4bF.0ba.K.oaybVbV#8bp#s#Hbe#JaL#OaLaY.w#s#z.Z.s.Z.4#u#G.w.y#iaV.1.Ba5.r#D.l#pbL#zaZaP.n#tbV",
+"aP.UbZ#EbZ.K.K#z.e#2.wbV.1#G.1.wa0.8#r.4#0.w#z.y.1.waz#7a0#7#Y#2a6#b#u.8bnbl.Jbn#P#u#F.wbSaBbS.4#u.O.4b.ay.pbQ#F.1#ubAaobh#bbnbe#saLai#BbA#s#z#u.Zbw.ZbObS#G#b#D#iaV.1#z#0#D#u#y#pbL#saZaPaI.K#G",
+".Z#Eb.aPbR.KbKbK.KbG.w#G#0#u.w.1#P.y.S.e#z.w.ybA#H.wa0#u#b#D#bbgbO.1#Fa5bna5bg#D#z#u#F#s#D#2.e.4bl.O.4#5.r.p.Kbv#H#F.ya7bhbe#D.1#Ybq.SaY#Tbn.ybs#taI.g.Z.8#D.w.1a6bnbn.B#0#D#D#T.I.4bV#2aP.C.K#G",
+"bw.UboaP.ZbL.ybS.K.M#s.w#G#G#G#D.1#G.S.e.K#0#FbKbCaza0.1.1.1#s#ia5.0#F#s#Da5aw#bbl#0.obVbV.M.e.4bl.O.SbOaJ.LbQ.ya0#F#D#8bhbe#D#sbe#B#sa7.4.1.e#F#taI#.#j.l#u.1.1.4.1.0a5b2#D#u.Z.UbLbS.SaP#t#z.r",
+".Zbib..U.g.S.S.y#zbT.w#s#G#u#G#GbmbV.S.e.ybVaB#s.Fa0.wa0.0b4#z#ib2.0.oby#D.eaxaY.o#0aB#ubV#2.8.4blaP.e.Z.o.Lbubl.wbl#s#8bhbe.y#b.1.V.W.b#rbe#z.RbYaI#.#v#Tbl.1.1.e#G#7#0#0#D.R.Z.U.S#zbV.s#R#s.r",
+"a6#E#4.YaP#h.4#ubL.4#z.w#G.1.0#D#G#G#G#u.8bG.8#zbC.1a0#zbV#b#z.J.w#GbbbVbAaB#O.1#F.w.8bSay.o#FaP#5a6.4#tbR.Z#zbV.1bdbS#DaAbVbQ#e#BaBaEbA.4#sbs#Dbl#tb1#A.Zbl#u.wbV.y#zay.0.1.y#2aT.4bVbVaZ.9#say",
+".ZbDb.#3#.bF.y#D.T.S#z.w.1.1#G.0#0bc.1.1bVbA.y#b.1.1.w#D#Gbe#z.l#b#u#u#GbA.S.y#D#D#s.y#zay#F.KbtbZ#i.8.Z.saZbA#u.wbCa5#DaA.RbQbn#B.X#Y.4.KbV#u#D.o#tba#k.g#2#u#sbn.y#0#G.rbC#DaB.Z.S#u#sbY#t#s.r",
+".ZbDbubBaP.TbA.1.KbA.K.w#P#b.1.0#0.wb4#P.wbVbnazbC#H#0#u.1be#DbA.wblay#0.4.S#z#D#0bV.8.1ay#u#saP.g#i.4.Z#tbDbK#7.1bCa5bnaW.R#zbn#BaB#Y#x.KbVbn.0#u.4#.a9#i.4#u.1bQ#FbS#G.0.1#D.S.O.4#u.w#tbYbQ.0",
+".8.ZaKaIbNbRbK.wbL.SbA.w.w.1#0#D.B.1#P.1.1bV#H.z.1#b#G#F.1be#7#s#zbv#0.w.4bT#sbS#G#u.y#zblbl#saPaP.Z.e#tbR#t#s#G.w.1bV.1aW.y.Kbnbr.y#YaM#s.y.1#GbSbA.Z.YbW.4bV.w#b#FbS#z.0.1bV.y.O#TbVbV#t#t#s#G",
+"#rbT#RbwbN.g.K.1#t.4.4.w.way.w#GbS#G#Hbc.1.1ao.z.1#PbV#uazazbs#bbU#c#0#0.8.6#z#u#G#F#u#Gbb#F.k#E#.bRbF.Z#t#R#b.1#GbC#zbn#N.R.eaV#sbKaYaZ#s.y.1#G#G.l.ZbW.U.gbA#G.w#2bS#G#u.1bVbSaq.Zbl#z#tbY#s.0",
+"#z#x.s.CbNaP.Kbn#T.S#F#z#0bl#0bVay.w.1.1.1.1bc.z.1.w#z#u#bb4#u#b#s#c.w#zbA.a#z#D#G#FbV#Gbl#u.K.YbaaI.K#i.s.Sbe.z#s#GbSbC#r#D.KaV.RbQ.k.y#s.y.1#Gaybl.l.ZbN.ZbK#G.w.oa5#z#u.1#s#u.Oa6#FbSbY.Zbn#G",
+"#rbT.9b..ObW.KbVbL.K#T.w#0#F#0ayb2.1bc.1bc.wbcao.1#G#zbV.w.1.ybQ#s#2.w#F#z#2#b#7aUbl#0.1#u#GbLaPbN.Hb.aC.saK#Y.z#0.1bV.1#r#D.eaYbAaLaBbK#Dbn#G#G#0#ubSbLa9#Z#z#G#Gbv#z#z#F#D#0.8.H.Z.8bA#tbY#s.1",
+"a5#x#t#w.HaP.Kbn.K.K#2.w.wa8.wbS#0.w.1.1.1#Pbcbc.1bV#0bV#sbV.lbQ#z#u.wa##zbK#B#7#0#u#D#G#G.wbObN.p.n#h.E#taKbe.z.w.1bSbCbFbV.ebn.KaL#x.k.y#b#D.0#ubl#u.4#pbN.S.rbV#F#z#z.o.1.w#F.H.J.la5bY.s#sbc",
+"#Dab#3.ybw#Z.K#zbnararaB#bbGbS#G.1bc.1.0bc.1.1.0ay.w#F#n#sbeai#JbA#D#b.4.e.1.z.o.B.w#u.1#DbQbLaPb#.Z.g.ZbDaka0.w#GbV#G#bbsbea7bnbK.q#4bA#G#G.0#Dar.3.y.R.U#9.Tbd#uay#r#z.MbVbe#Kb1bD#2.e#t#tbn.r",
+".raR.ObSbw#Z.KbK.1ar.ebsaY#T.e.1#GbCbc#Hbc#H.1.1bV#0#F#nbVbe.5bV.lbd#b#N.8bnaz#u#u#0.r.1#ubK#t.Z#EaIbR#1aZapbe.1.1#u#D.w.ybebnb4bn.q.S.4ay#G#D.Rbla5#u.RaP#9.Tbd.r#z.ebU.M#Gbeaub1.g.4.K#t#t#s.0",
+".raR.Oa5bwba.e.y.1ar.e.y#s.8bS.1#u#Ga0a0#Ha0.1#GbVbV#F#bbV.w#FbVbv#D#sbO#T.1az#0#u#G#G.1#ubK.Z.s#EaI#t.ga6#Y#b#G.1#DbV#DbK#BaVbeaVaY.S.4bV#G#D.y.la5#u.i.9aabOa7.r#G.e#z.M#0#b.y#Z.Z.8bQbL#t.w.0",
+".r#o.ObVbwaS.K.S.1.ebA#D.w.e.e#D#G#G.1#Ha0bc.1.0.w#u#F#P#u#z#ubS#T.1bnar.Jbn.1.w#u#G.0.1#Dbn.9bw#E.Taq.gbT#bbn#uan#G#b#Dbnbqa7be.w#a.4#F.w#G.RaBaB.ebSbn.S#X.Zbd#GbV.4#z#F#0#b.S#Z.gbAbQbZ#R#sbc",
+"#GabbwbS#3.p#4bK.wa5.e#Dbnby.lbnbV.1#Pbc.1.1#G#G#s#u#FbybV#u#0#G#T.w#D#r#x.1#Gby#G.1#G.1.1bQ.Gbw.Z#5.Za6.Zak.w#D#B#H#b.y#baLbn#a#b#baB.8.w#0bAbD#t.4bS#D.y.g#vbn#GbV.4#z#u#GbQ.y.L.ZbAbU.S.s.w.0",
+"bcat.sbV.O#k.K#4#H.ebAbC.0.W.4#Day#G.w.1.0#D#G#u.w#u#u#bbV#F.w#u.l#H.X#r.lbebCa0#G#G#G.1.1#Y.G.C.gaIbW#i.g#s#D.0azbe.1.5#YbeaYbe.w.wbX.y.wbn.4bD.ubh#N#ubV.Zbgbn#G#z#2bQbV.w.w.y#Z.g.l#sbRbY#s.0",
+"bm.Obw#z.Ob5#4.SbebSbA.1#Db0.Jbn.8#G.w.1#Gay#G#G#s#u#u#Y.1aBbe.R.ybe.5#z.Kan.0a0#0.1#Gbc#baLbI.C.gbR#EbWbT#z.y#Gb4anbnbsaLbn#a#a#H#b.ybA.w#zbOaPaT#V.l#FbVbOa3#s#0.e#2by#G.1bn.Rat.Z.4#z#t.s#s.0",
+"bm#Z.s.w.Ob5bL#tb4.ebSbC#7bPbGbV.8ay.w.w#G#D#0#G#0#ubV#n#saibe.R#0an.b#z#z#lbd#0.1#Gbc.1#H#Y.EbZaIb..gbR.Sak#G#nb4.m#b.ybq.RaLbea0#b.y.y.wbS.4.g.O#XaA#F#DaraxbQa5.ebTbQ.1a0#G.y#3.Zbv.K#t#tbn.r",
+"#G.sbw#z#2bNa2bSbV.8bQbVay#G.y.SblbS#Gay#G#0#G#ubybvbe#b#z.4.q.S#8#b#za8#Daz#7.w.w.r.1.1#H#s.GbBaBb.aP.CbAbn.1b4ananan###Bbn.mbnb4#b.ybv#GbnaP#ZadbN#jbSay.MbD.n.1#z.4#z#bbCbV#zbwaPa6#5bZbD.y.1",
+".1#tbw#z.4a9#5bV#z.8.w#G.r#G#ubAbSbS#z#0#G.1#0bS#z.o#bbn.y#2akaB.1.w#0.y#0az#Dbn.w#G#G.1#baY.9.C#2bL.Y.s.S#DbC#Hazbeana7brbn#Wbnan#b.K#u.w#bbDb1#k#k.g.Saybv#xbw.w#z.4bK#P#G#G#z.s.g.g.KbR.ZbV.1",
+".w.Sbw#z.8#..D#u#z.y#s#0bmbm#D.Ka5bS#G.w#GbS#G#0a5#F.1#DaB.4bQ#2#D.w#zbS.wbe#u#0.wbV#G.1#b.KaP.Z.ZaIbN#..S#u.1.1b4anbe#Hbebebrbnbe.w#z#u.wbn#E.LaG#ka9.4#zblaZ.sbV#z.4#z.w.0#D#s.H#i#x#5bZ.Z#s.1",
+".wbLbw.K.8.O#5.8#GbS.w.1.r#G.wbVbS.8bV#0#G#ubVbV#u.yaY#D#2.ebQ#2.1bVa5.8.w.1bSbS.w#G#G#G#GbA.g#.bLbRba.O.K#D.1.1b4anb4brbebrbrbn#Hbn.KbS.w#Db#.fb6aG#kaq#za5.8.Z#zbV.S#s.way#GbnbBaP.g.TbR#t#s.1",
+"bcaI#t.K.8.Oa2.8.w#z#z#0#Gbm.wbKa5blbVbV#G#u#ua5.y#D.wbVbGbQ#baB.wbSbA.4#b.RbVbA#0bV#G.wbVbY.Z.O.TbR#.aPbQ.ya0#b.z#Bb4anbe#B#Y.ibe#sbV#s#b.Rafb6#k#kadaP.e#zbA.4bS#s.R#s.wbS#D.1b7#i#x#4bR.9bV#G",
+".w#4bw.e.8.OaI#u#z#z#z#G#G#G.w.4#za5bS#GbVbVbVbS.4bKbV.K.MbQaY#FazbVbAaB.q#F#GbS#G.1#Haz#saBbZ.H.e.gbabN.q#7#b.zan.manbebrbrbrbn.1#D#zbV.1.R.I.ha9.L#kbN.4#zbA.8ar#s.Rbn#0.B#GbnaI#E#i#5.s.Z#s#D",
+"#GaKbR.e.yaqaI.8#z#sbK#0#G#G#saZa5bAbSbVbV#zbV#u.l#z.ybV#x.w#bbdazbV.K.Sbr.5.w#z.1bcbcaz#baBbZ.O.ebWbabi.qbs.zb4ananan.1#Bbe#Wbn.1.y.y#DbnaB#M.h.g.Oa9bibTbAbA.8.J#sbn.Raya5bVa7aI#E#i.KbR#t#s.0",
+"#Gb.bBa5bA.Oa2#u.K.K.4#z#G#GbQbDbA.8bS.y#ubVbVaB#r.KbA#zbg#Y#b#Ha0bV#sbKaLa#be#0.1#H.1#B.1bY#taP.KaPaP.U#Y#7.z.zananan.ibqaV.mbn#b#DbV#z.1bXafac.ZaI#..I#i.lbA.8.J#s.i.ya5a5#DbdaIaC#ib.bR.4bQ#D",
+"#Gb..ZbAbAbaaIbV#zbA.ybKbV#sbV#Far#z#Dblblar.8aB.y#zbR.KbG.w.1.z.wbV#T.can.Sbr#8b4.w#nb4#L#.bJ#R#z.g#3a9bq#F.z#H#f.mbe#sbe#D#L##bC#s.ybl#P#3.2.I#tbL.g#..paP.e.obTbQ#s#2.ybV.y#FbA.O.L.4.4bB#a.0",
+"#Gb..ga5.eaPbB.ya5bl.8bS#0bn#s#u.Z#zbV#Fa8.8bA.y.8#4bR#1.8#G.1.1#PbVaAb4br.e.V#8an.waz#8#WbiaIbX.k#v.uajaL#Fbc.1#fbeanbnaLa7#La7#8#sbK.r.w.O.x.Y#t.e.gbWadbN#4bl#xbQ.K#2#ubVbV#D.lba.LbZaBbwak.0",
+"#G.KaP.e#z.ObZ.y#za5bSbS#z.w#0bV.g.K#s#ua8.lbl.y#F.4.Z#i#z#G.0.w.w#DbOan.V.ebeanbr.w#bbCaLbi#..Sby.g.saObe#u#H.1#8be#B#Dbebr#L#8bc#sbKay.w.Y.LaT.4.K#taP#pbibA#u#2#s#zaB.ybV#sbV.4bababLaB.s.7.0",
+"#Gbu.ga5#s.Obw.yby#0bSbS#0#zaybSbabZ.K#zbl.8bA#u.8.Saq.6#YbV#Ga0be.1bOanbrbU#8.zaza0.w#H#WaP#EbK#b.Z#R#XaV#0.z.1#b.1#B.R#Yan.m#8#H#JbK#G#0af.L.u.4.ebO.gbN.U#t#z.ybQbV.8.y.wbVbVaBba#Z.T.4.s.kbc",
+"a0.7aP.e#z#Zbw#u#0#0#0#u#G#G#uaya9bR#4bVbSa5bS#F.K.T.Z.6b0ay#D#bbebV#T.m#8bU#D.1#8#0.1bebqaIbW#J#b#x#R#v#D#0bC#H#HbV#Bbs#B.mbe#ea0bK.K#G#0.I#Z#t#tbA.ebO#..Ua6bV#F.w#sbVbV#z#sbVbA.O#Z.ebYaT.7bc",
+"#P.Q.ga5#sba.sbAbV.wbS#u#z#GbVbVbaaT.SbKa5a5bS#F.ebL#EbD#b#u#u#Y#H.1#Tbebd.W#7bd.1bS#0beaL.T#Ebn#Y.g.S#y#u#0aobe.w.1azbs#Bbrb4a7a0au.K#Pay.I.O.Z.4.y.ebLbR#..P#z.8bV#0bVbn.w#s#sbAbH#ZbL.4.9.kbc",
+".1buaPa5#z.Y.O#ubV#sbVbV.1#z#D.wba.Z.4bA.8.e.KbA.4#t.UbL#s#zbbbe#b#b#ran.b.W#7.1#8#G#0#HbKb7.gaV#BbT.K#r#Dby#H.m.1.1be#u#B.1.wbe#P.S#z.wbSbi.n.ZbK.4.e.8aI.Z.6.K#u#GbV#0bV#s.w.w.e#Z#Z.K.4aT.k.1",
+".rb..g.e#s.YaPbV#z.wbnbV.wbn#Dbn.OaP.4.y.4#N.K.K#T#t.U.Q#z.w#F#YazanaNan.bap#Ga0az#0#P#b#KbR.Z#aaz#ibK#h#u.wbC#B#b.1bebs#B#D#baLbcbA.k#P#G#E#S#2.K.8bAbL.Tbw.6.K#G#0.wbVbVbV#s#s.e.Oba.K.4aT.k.0"
+]
+
+stone1_xpm = [
+" 96 96 250 2",
+".. c #343e34",
+".# c #94a28c",
+".a c #64726c",
+".b c #c4d2c4",
+".c c #7c8a7c",
+".d c #acbaac",
+".e c #4c5a4c",
+".f c #dceadc",
+".g c #949284",
+".h c #7c7a6c",
+".i c #acaaa4",
+".j c #c4c2b4",
+".k c #64625c",
+".l c #dcdad4",
+".m c #8c967c",
+".n c #a4ae9c",
+".o c #6c7e74",
+".p c #f4f2ec",
+".q c #444e3c",
+".r c #bcc6b4",
+".s c #8c8a7c",
+".t c #5c6654",
+".u c #ccdecc",
+".v c #7c826c",
+".w c #a4a294",
+".x c #949a8c",
+".y c #bcbaac",
+".z c #747264",
+".A c #5c5a4c",
+".B c #c4cabc",
+".C c #d4d2c4",
+".D c #ecf2e4",
+".E c #acb2a4",
+".F c #646a5c",
+".G c #8c867c",
+".H c #54524c",
+".I c #9c9a8c",
+".J c #849284",
+".K c #7c827c",
+".L c #44463c",
+".M c #9caa9c",
+".N c #b4c2b4",
+".O c #dce2d4",
+".P c #cccabc",
+".Q c #b4b2a4",
+".R c #94a29c",
+".S c #848a7c",
+".T c #f4faec",
+".U c #6c6a5c",
+".V c #6c7a6c",
+".W c #acbab4",
+".X c #546254",
+".Y c #4c564c",
+".Z c #a4aa9c",
+".0 c #747a6c",
+".1 c #ccdacc",
+".2 c #545a4c",
+".3 c #74867c",
+".4 c #4c4e44",
+".5 c #bcc2b4",
+".6 c #5c6254",
+".7 c #d4dacc",
+".8 c #fcfaf4",
+".9 c #3c463c",
+"#. c #6c7264",
+"## c #e4eadc",
+"#a c #949294",
+"#b c #847e74",
+"#c c #8c968c",
+"#d c #a4b6ac",
+"#e c #747e6c",
+"#f c #949a9c",
+"#g c #9c9a9c",
+"#h c #84827c",
+"#i c #e4e2d4",
+"#j c #848a8c",
+"#k c #9ca294",
+"#l c #ccd2c4",
+"#m c #7c7e7c",
+"#n c #c4c6c4",
+"#o c #a4aeac",
+"#p c #bcc6c4",
+"#q c #8c8e8c",
+"#r c #d4decc",
+"#s c #848274",
+"#t c #a4a6a4",
+"#u c #bcbebc",
+"#v c #747674",
+"#w c #c4cecc",
+"#x c #d4d6d4",
+"#y c #acb6b4",
+"#z c #646a6c",
+"#A c #cccecc",
+"#B c #b4b6b4",
+"#C c #545e5c",
+"#D c #6c7674",
+"#E c #747e7c",
+"#F c #3c3e34",
+"#G c #b4baa4",
+"#H c #949684",
+"#I c #7c7e6c",
+"#J c #acaeac",
+"#K c #c4c6b4",
+"#L c #646664",
+"#M c #dcdedc",
+"#N c #8c8e7c",
+"#O c #a4a694",
+"#P c #949e8c",
+"#Q c #bcbeac",
+"#R c #747664",
+"#S c #5c5e5c",
+"#T c #c4cebc",
+"#U c #d4d6c4",
+"#V c #acb6a4",
+"#W c #545654",
+"#X c #9c9e8c",
+"#Y c #eceedc",
+"#Z c #4c4a44",
+"#0 c #dce6d4",
+"#1 c #cccebc",
+"#2 c #b4b6a4",
+"#3 c #9ca29c",
+"#4 c #848e7c",
+"#5 c #8c928c",
+"#6 c #b4bab4",
+"#7 c #7c8e8c",
+"#8 c #44524c",
+"#9 c #6c6e6c",
+"a. c #e4eeec",
+"a# c #d4e2dc",
+"aa c #a4aaac",
+"ab c #747a7c",
+"ac c #5c6264",
+"ad c #94a694",
+"ae c #acae9c",
+"af c #646654",
+"ag c #dcdecc",
+"ah c #a4b2a4",
+"ai c #bccabc",
+"aj c #5c6a5c",
+"ak c #7c8674",
+"al c #5c5e54",
+"am c #ecf6ec",
+"an c #646e64",
+"ao c #545644",
+"ap c #7c867c",
+"aq c #444a40",
+"ar c #f4fef4",
+"as c #6c6e64",
+"at c #545e54",
+"au c #4c5249",
+"av c #fcfef7",
+"aw c #6c766c",
+"ax c #e4eee4",
+"ay c #8c9a8e",
+"az c #748274",
+"aA c #84867d",
+"aB c #e4e6dc",
+"aC c #ccd6cb",
+"aD c #d4e2d4",
+"aE c #3c4238",
+"aF c #b4beac",
+"aG c #9ca69c",
+"aH c #b4beb4",
+"aI c #f4f6ec",
+"aJ c #3c4a3c",
+"aK c #949694",
+"aL c #949e9c",
+"aM c #9c9e9c",
+"aN c #848e8c",
+"aO c #9ca694",
+"aP c #a4b2ac",
+"aQ c #bccac4",
+"aR c #5c6a64",
+"aS c #848674",
+"aT c #646e6c",
+"aU c #74827c",
+"aV c #94a294",
+"aW c #7c8a84",
+"aX c #dceae4",
+"aY c #94928c",
+"aZ c #7c7a74",
+"a0 c #c4c2bc",
+"a1 c #8c9684",
+"a2 c #a4aea4",
+"a3 c #444e44",
+"a4 c #bcc6bc",
+"a5 c #8c8a84",
+"a6 c #5c665c",
+"a7 c #7c8274",
+"a8 c #a4a29c",
+"a9 c #949a94",
+"b. c #bcbab4",
+"b# c #74726c",
+"ba c #5c5a54",
+"bb c #c4cac4",
+"bc c #d4d2cc",
+"bd c #ecf2ec",
+"be c #acb2ac",
+"bf c #646a64",
+"bg c #8c8684",
+"bh c #9c9a94",
+"bi c #84928c",
+"bj c #eceae4",
+"bk c #b4c2bc",
+"bl c #dce2dc",
+"bm c #cccac4",
+"bn c #b4b2ac",
+"bo c #848a84",
+"bp c #f4faf4",
+"bq c #8c9284",
+"br c #6c6a64",
+"bs c #6c7a74",
+"bt c #a4aaa4",
+"bu c #747a74",
+"bv c #ccdad4",
+"bw c #545a54",
+"bx c #4c4e4c",
+"by c #bcc2bc",
+"bz c #5c625c",
+"bA c #d4dad4",
+"bB c #6c726c",
+"bC c #e4eae4",
+"bD c #8c9694",
+"bE c #747e74",
+"bF c #ccd2cc",
+"bG c #d4ded4",
+"bH c #b4baac",
+"bI c #94968c",
+"bJ c #7c7e74",
+"bK c #c4c6bc",
+"bL c #8c8e84",
+"bM c #a4a69c",
+"bN c #949e94",
+"bO c #bcbeb4",
+"bP c #74766c",
+"bQ c #c4cec4",
+"bR c #d4d6cc",
+"bS c #acb6ac",
+"bT c #9c9e94",
+"bU c #eceee4",
+"bV c #dce6dc",
+"bW c #cccec4",
+"bX c #b4b6ac",
+"bY c #848e84",
+"bZ c #8c9294",
+"b0 c #acaea4",
+"b1 c #64665c",
+"b2 c #dcded4",
+"b3 c #54564c",
+".x.0.OaHbI.2azbK.rbJaF.Zbq.EbqbT#..x#6at.S.KaGbOaz#5albJb1b0bAayaw#..S##.xb0an#IbI#NalaFbH.5a6bN#kbSbobT.5bObu.Z#k.5.ZaYbL.ga9aZ#e.EaDbqap#..Z.S.SbP.ZbMaF.BbI#lbT#3ap.xbYbO.SbL.ZbEbXb0awbL#PbI",
+"#k#c#..San#c.5bqa7bqb0bR.SbW#P.KbLawbqbLbCbHbT.5bY.c.ibObMa0aD.5.xbHa9.6bHa1bT.raAbIb0an#3#5bt#caAbXbWbYbtbSbM.SaCbq.t.xa5.SbLaAbLapbP#cbo.SaCbt#kbPaybIaOaGbMaOaG#c#k#S.Z#5#3blbIaO#k.Z.xbHbLaH",
+"#3bOaHa1.xb0bH.YasbN#c#kbq#cbM#kbYbMboatbNbTbG.K.B#6.Eb0#t#kbz.cbPbqaw#1bt.EaHa9bTaA.KbCbu#pbobkbo.EapbSbJ.YaGbba7bLbSbMbHaZbIbIaCaH.0bH.D.N#.bSaCbM.ta7#3aB.E.EbJbNbOa7aGb0bY.0#lbT.5bt.0bEbq.S",
+"bM#VbJbnbObIb0bMbQbOaqapbM.ZbobL.xbfbT.EbJ#caAbHa4#5bTb2bt#lbqa9#k#caBbtbt.SbJa2bmaY#JbyaMbybz#f#5.5awbOb0.Z.KbXbY.xb2a9bLaSbH.Uapa9bY#c#E#5.N#tbHbtbTbebEbKbebQbP#cb0bFbE.SbJaw.Ba9aG.xbM.Z.EbM",
+".l.xbR#P#sbI.0.ZbnbVbNaA.Z#3.0a6bEbJbG#k#6bIbqbebK.EaGbMap.Ka7bIaAbF.ZbqaH.O#3#.boaMbhbf#3aaab#o#kbt.S.5bYbubRau.MaMaAbMbMbM#s.x#5bX#6aEbSbAbEa9.0bHaGbq.B#ca7bI#cbY.0bXa9bMbb#3#4#3bqbSbq#kan#4",
+"aY.F#ibha7aA.iasbbbo#3bebybL#ybLbN.xbu#la6bSaBbNbrbl.xbV.W#lalbIa.bI#taHb..KbN.ibPb0.Kbb#va9a9aL.K.ZaCbObea7bo.F#v#5aGbMbL#1.E#I#6bu#3.K#5bP#3aG#Sbta9#JbObBa2bobIbW.Z#6#ka9.Z#5bqbHbO.7#lbK.EbR",
+"bUbJ.ia4.wbHbh.Zba.O#3ap#3a4#nbUaA#kbYbI#c.7b0.5a8a9bS.NbQ.BbFaA.Zbtbtbt#6bIbFbtaAaAbXbHbLbNbpap.SbebI#5awbq.xan#cbo.KbobHbT#R#Ha9#E#5.Kbe#catbfbIbSbubIbeaKbtaKbY#casaG#kbH.ZbybTaO#cbJ.O.ZbIaG",
+"b2.PbIaAaAb1.sbX#Ebfb1#t#qaAbAaH.Ebua4#6#kasboapb2.x.xaGbEbe.5br#9bubX#6bEaKbo#qag.ZbTa7bPbH.5#5#k#5aGb0a7btbY.K#LbL#5bM#X#2#N.ya2bu#C#y#3bo#jbB#B#qbb#c#9al.K#5bTbNb0#cas#3bN.x.ZbEbXaHbN.0.Z.0",
+"bq#6bS.na9#ca4bq.Zbtbu.Ea9a7#LblbXapbebqbo#6bYbPa4bXbYbT#IaAaZbqay.B.ba4bNboa2#5.x.EbYbo.F#5#DaAap#5bI#ka4bX.EbRat#kasbJas.O.Zbq.7a1aO.nas.S#2#e.2.ZbHbX.S#5#L.SaVbY#caV.MbSbG.dbObqbIbMa3bb#c#L",
+"#kaG.San.6#l.EbAa2b0#k.Za4.Oa2#3.FbMbb.ObJaH#kbRbGa1.nbn.5bn#sbM#N.Y.EbSbEawbebqaC.BbIbJbq#6.K#J#cbT.B#3.0beb0bQaAb0bLbqbIb.b#bO.baya7.E#P#kbP.z#e.x.db0btbE#6bBbTbT#caHbTa2aGbY#3bAbBbSbTb3.EbK",
+"bwbYbMbEbo.Eap.x#5bHbebo.LbLawbE.x.ZbqbYbMa2.x#5.ZbJbXa7.ZauasbPai#kbE.BbYb2bzaHbP.Z#.a4a2bJ#5#6a9bQ#k#3bLbqanbM.xa8.0a0aObM#PbR#Xa7bq#O.gbRbRbK.xaAbUapbJ.KbNb.awa6b0a7bYbN.SbY.ZapaObubYbY.0a9",
+".1bqbA#PaHawaCbVb2bNbWaCbG.EbYbXaGbKbSaw.E#W.Sap.IaGaIalbJb.#Hb1bH.Z#3bqbH#6#Sbl#k.xb1btbN#JawaKbI#kbKbQ.Sboasa4#6#IaCbMbXbJaAbIbT#sbLbrbL#ibW.zbI#5bHbObu.SbSbLaG#5bEa2bt.x#3bX.wbEbjbo.7b0apbW",
+".ZaDaGbNbTbQ.6.Z#3a2#3#5aA#lbMbFb0blaAbq#5apbqbXbI.5bO.5bIb2.E.Z.Zbq.Sa9.KaCaGbT#cbRaHbI.xb0bua4#5.B#5aGbLapbMbo.g.Ea0#QbF#N#5.Sbr.wb..z#hbLbTbObB.BaGaHbXbEbTa9bH.ZbLbPa7bX#c#.bSbt.E.BbNbKbNbO",
+".5bGbKbYbNa2.da6bJbq#6.Za2bNboa4#c#lbEbbbNbXbu#3bTa0asb2.E.YbTb0.E.s.SbK.B#maAbbbI.0.x#3bNbI#B#ha7bGbFbTbq#3.S.ZbebT.SbWbqaB.gb0bObmbtbIbLbT#3b0byaw#tbJbQbO.x.Sbo#Lb3bNbmbobKbOawbRa2bJb0.YaAa2",
+"btaGbEa7#cb1byaGbobqbL.Bbe.7bIbqaBbWbq#5bq#3#cbX.ybHbnbqbIbq#ca7a7bTbJbPbmaKbIaMa1a7bJ.6.xa9atboa9.5bWax#6bW.NbXbUbTa5bT.Kbq#3as.waYa7aMb0bH.Ea6bNa5aG#5aCbTak.EbTaA#5bHbL.xbobhbS#5bHbea4bIap#6",
+"bN.5a2bX.xbQaH.B.Z#3.dbU#kbNbMbFa4btbWbM.E.S.x#6asbL.ZbLb1.Z.0akb..0aZb0bTbP.ia9aAbHaGbH#L#cbeaAbPa2#lbQbLbHbw#3bHbq.5.SbM.SbMbIbB#qa5.xbbbi.M#c#tbebob.bYbJbTbA.wbo.wa5aAa8#t.h#3#ibS.ObIan#3.0",
+"bHb#bM.Zbq.sb2b0.a.SbbazaRbNbN.nay#3aG.J#ybSbNbNbWaB.YbL#6anbYbE.Z.xaO#cbea9a9be.mbH.nbq.EbBbebB.O#.#6.x#6bI.Kb2bybAbqaAbP.5boat#k#c.ca#.ZbQap.MbTa2be.Za7bQaw#Oan#ObP#5bY#5#5bJbu#6bBan.E.xbI#3",
+"bWbX.Z#5bKaua5a7bTbNbY.B.5bRbVbt.6.xaHapbO.bbqbz.x#5bNbJ.Z#3bHa9#2.EbebN#k.Z#5#q.Z.ZafbV.ZbMbNbqbXbSbI#5b0aG#5bDb0bKaHa4aAbu.0bIa2.xaG.E.BbAbNbHa9.SbYbI#6.ZbIbQ#2#cbIbQ.0.KbO#6#c#PaHbM.EbfbHbo",
+"bKbIbI.i.0bL.7.waG.Tap.Sa4.0buai.KbS.Oaw.Sap.6aGbO#c.Sa2bJa7bebH.x.0.BbI#c#Bbu#cbR.YbRa7a7bM.xbI.x#Tb0bVa9bI#cb1bq#c#hap#c.x#3#kbI.KbT#mbqbO#6bPbYbYa9bNatbWawala2bq.xaAbTbobtbf#hbO#5bo#3bIa6aw",
+".Eb#.E#2b0bTbMbe.S#3bP#6bOaHbSbSbMbYbP.xawasblbQa2by.TbJasaHbe.KbT.KasbqbtaAbH#3bIbobybGbWaC.E#G#..EbqbqaA#6a9bYaM.6#caB.Ea9bKay.ibL#5.Pbta8b0bMbFa7bqbIbea2bJ.E.KbqbS#6bJbYa9.O.raubA.xbY#kaAb2",
+"bJbO#lbXbM#laYbT.Zbl.F#5bBbX.xb0bHbebI#3bNbtbTa7.5bO#3bo#cbObNb2#6bOb1a0aYaAbWb2#6bC#9asbH.0bHaC#T#kaHbXbqaA#5#h#3bYb1apaAawbTbS.k.ibha9aYbMb#bMblbeb..nbtasbKbEbzblaA.ZbQbJbYbTa4bTa2b1.EaGbIbF",
+"bT.xbKbHbWbq.B#ka7aubqb1anbUbL#JbT.5bM#6.xaAbIbubL#ca7.SbUapbM.5bu.ka9aAbMbJaYbT#SbPbBbfa9#ca9bH.S#cbXby#waA#taHala2.5bKbSa9.EbMa9.SbhbLbM#6b3bTala7ana2bLbqbTbe#3aAbQ.6a9bN#Qbtbqa2.xb1a4bzbqa6",
+".x#lb0b..Ebhbqb1a8btbmbbbhbJa2#5b0bebTa5b0bJbBbIbNa9#5a9.x#3.SbXaZa5.HbX#B#UbLb1a2bYbYbMa9bobtbF.0bJ.SapaAaGbG#gaGbSbJana9b1bY#3.E.x.Z#cbqbQ#cbqby#cbMbIa6bLawbEbH.KbtbLbeaOa7bqbealbube.5bK#.bo",
+"bK.BbLbX.ZbXbL#3bKbhbu.ya5.ibPbTbLbh#5.Qby.k.i.k#5.Bb0.BbPaHa4a9a0a8#qbL.Qbnbq.ga7#laAa9bT#B#v#jbK#k#ka4#kaKbTaHbL.Ebl.5bN.6a4bIaza2apbt.cbY#cbb.ZbI#cbfapbSbIan.iaMa9bN#l.i.5#4bI#c.na9bIa9bHbe",
+"btapapaW#kawbe.0#8aVaW#5a4a9.i.IbNa2a7bw.OasaGbh.F.naG#l#5bBa9#qbBbFbO#5bMbOaAbB#k#X#kb0#kb0aZ#kbS.e.S.0ahaObSaybHa7#k#kaA#U.nbH.0.Z.0bHb0#P#k.S.BbHbebMbI.x.Zbt.J.7.Z#k.S#T#k.E#4aObN.daF.e#4#P",
+"#kbQa7btaGa9azbY.WaGaGa4a9.Ob0b0a4bJaHbFaza5aAas#VbL#kbe.0bMbWbwb0bL.xa8bIb1bJbJ.O.F.I#ka2#ibHbBbIaFaC.SaHbY#l.0.0asbPaAa1.KapbPbMbS.0bSbq#l.xbqbTbY#kaH.0a9bt.K#O.Y#P.Ja7bSbQbEahbq.E.Zat.BaVbH",
+"btaGaH.7aCbHbNbS.WbsapbSbLa5bO#6.b#k#lbo#5.gaGbcbTax.5be#k#xa6#n#3bIboasbFbebJbO.jbRbLaKaMbo#m.ia6.xa4#PaHbOaFbqa7bBaO.xasb0.E.Z.Eas.x#lbqbzbKbV#c.Z#xb0bY.SaH.EaC#m#.axb0bNbMapbL.4#.by.CbTas#l",
+"aF.SaHbJbNbMbC.Zapa2bGbQ#6.KbC.IbG#cbq.K.5#m##b1awbX#k.5aGa9bT#5.xbm.Sa0.FbhbH#qau#6#JaA#B#hbc#5.B#k#4bO#.aGbSbIbeaDbM#k#5apbLbu.E#3bXbtbX.nbob0bKbT#Va2#6bJbIaG.KbDbEab#5bEbS#tb0a0as#lbMa5aA#B",
+"bHbOakbE.E#..Ba7aLaT#c#3btaG#NbY.dbfbN.ZaIbKbPa8aC#NbNbSbXaGaAbebObR#5.xbBaZbJa7.k#9aZ#Lbu#vbeaZbKbHby.xbHbO#.#PbTatasbyaB.VbS.x#cbt.FaGbXbLbN.Zbi#cbT.Ea6bYaG#kbObY#ubEbobuapaGa5b2aZbPaZbLau.G",
+"btaSaB.D#lbT#ObP#ta6#3#3bBbHbe#k#5.5.ZbFbEby#hbqbq#.bu#lbKby#5#BbEbXaYb.bL.9bXbX.i#BbB#Ab0bLbJ#lbM#k.F.5bJbTb0a7#9btbe#5bt#JbebMaMbqaMa2bzbobt#3bTa4bMbo.0bXbIat#J#3bYa2bJ#6bo#6.K#5#mbtbBbKboaA",
+"b1#l.j#Q.D#H.B.xaHbyanbYar.1.xaya2a6bY.x.ZasbIaA.Ba4.5asbE#B#5bL.KbLasaCb#bKbXa2#qaAalbua5.S.5.Ebt.zbXbMbTb1.xbzbIaCaAbyatal#5bt#ca8au#6bebRa9#6as#cbN#cbWa9a7#kaH#Va6.E.E#c.xam#lbBaw#5.5bBbEbA",
+"#U.4.0.Q.ZbMbObX.KaKawaKbP#5.bbq.M.Ta2bWawa8aAbI#kbRaGa4bJbubPa9#3bIbPb0bTblbWbn#3bLbt.w#V#U.Z.z.I.ZbRbKb1bLbXbWbBbebLbtbfaK#c#uaA#6#6#S#vbSaMbe.EbHbI.0bo.xa9.Zb1#k#V.xbNa1a1.ZaU#q.dbNaL#6aRbN",
+"ah#4bS.Va7#e.Maibqan#kbXaw.BbLbYa2aha9bIaAbGahawaAbB.ibXbT#c.xbbbJapalbe.xbO.#asawbJ.QaObXakaZa9bXb0aAbA.0br#5.sbNaha9#cbVaCbYaVbDaw#c.ZbeaBaebMbKbP.qbMaAbYa1b0bEbSbE.Ba7.i.Q.BbObNboa7bM.Sa7bW",
+"aOaw.xambN.M#2bGbJ.0.Z.xbT.E.ZbHapa2bt#k#3bIaibQbTaAbRbT#k#BbMbMbybybNbe.S.O#..Zb2.2.5b0#H#kbKbt#5bu.ZbM.k.K.xbe.xapbea7aG.0aG.5a4bEal#6awbT#Ob0akbT#c#.bH.SbLbIaUa2.xalbH.0.S#sbebf#J.ObNbJbN.O",
+".7#l#4.SakasanaObMaGbqbN.0b1bQ#..daGbIbJbTbTa6aCbObIbH#S.Za5aY.xa5#jbobo.K#5bFbLbtb##U#Rbq.hblba.0bna0#5.QbO.EbM#haA#.bLbMbKa5aAbCbBbfbTbqas#3bWa7bNas.Za7.EbYa1bMaVbt.EbYa7#O.BaKbXbuaHbqasbH.E",
+".S#6.Z#kapbT#4bIanbHbRb2.S#cbO.xaybb.BbX#t.Z.V.abJbTaA#5.i.F.KbKbFbFaa#3bf#vbobbbnapbM.S#2#lbKbra9bXbI.0bebMb0#h#6bXaAbM#3bnbPbubobH#.bzapbLbNbIaHbP#ca2bI#5a4bLbK#k#k.Z.B#3bPa7bYbbbobJaG.Ea9ak",
+"bLbq#kbJ.S.x#c.E#PbW.Z#l.6a6.nasbQ#4btap.0bBbS#cb0bTbBbLaIa9bL#5#q#taAaaaK#nbtbt#n.ZbH#Rb1bqbUbJbKbz.K.ZbobLbtaZb.aZ.kbM#vbIbM.ibTbFan.KbRbEaA#5bqa9bebI#cbLa2bu.x.xbFbPbIan#HbeaA.KbT#m#kbo.Zbq",
+"aIbMb1bHbP.pbLbP.xaGbJapbSbX#.#caCaUbTbTbAbX#c.JbXalbXbb#ia7bJala4aM.Ka2#LaC.Kbwb2bBbO.BbL#U.0#mbXbJaAb.bIaG.PawbMb0bMbn.0aKbHbXa4ae.iap#lbIbo#kbBb0bo#cbPaGaAbua7bI.ZbE.E.xaybbbBboatby.2.Sbq#V",
+"bLbTbMa9bP.S.xbRbLbYbPakaAa7bM.E.N##.K.Fa8.SbtbNaG#kbPbrbTbIb1bK#Ra7a7#3bbbxbu#qaA.x.5.0.x#XaK#3.xbX.Ka7bLbIbyaAbq#cbq.Y#3aObb.S#k.sa7a9bPbt.aa2bTaAaGb#btbubt.KagaSbL.SbLawa9aVbI.KbtbM#3#cbJbX",
+"bc.FbT.g.haqbMbPbP#ebIbN.6a7#kaAaV.cbtb0b2apaObEa5aAb2.KbIbubl.K.B.Z.7bM#5.0.KbE#vbHbXaf#ObY.IbobhbNbm.ibTbhbT#u.SaWaVbHaG#c.ZaU.A#YbIbYbfbSbGbibo#3aMa9#mbP.K.Kb0.Q.S.xa2.ZbNaCbb#6bo.5bTa7bq.B",
+"aw.S#4.cawaS#P#.bqa2bX#.#c#caPa2bHbQ.FbY.d.3aw.o.J.5.5btaGa8auaY#GaebXbWasaK#v#a.H#ObPbJ#3aAaU#cbL.KbIbK#5.xb0bI.a#4.ZbbbL.SbI#..I.SbT.E#k#1bL.6bTaNbo#5#3.YalbLanbqbSbTa7bPaxbubfa7bz.0.Yaw.5a4",
+".Ea1.6#2bSbqazbX#kal#c.xawaGbSaUa1.5.5a2.WaCaybYbEaVaH.SaAbq.kbaak#k.0bX.xaY#v#5as#sbB.S#ca9#ca9bK.I.Kb0b0bI#kbKaO#VbHaw#3.Sa7aebX#I.xao.wbq.5bM#5.Zbua5bEbe#vaGbybB.S.Ka2#cbz.SbYb0bBbB.Z#5bo#k",
+"bNaG.6apbY#k.r.7aSawawbXaC#caCaP.xbYak.VbNbb.WaWaxbM#c#lbNbXaAbIae#O#.bq#tbO#9aKbRbT.S.ZbNbyaHbNb0bPaAbBbJ#LbebMa1bq#kaKa9bL.x#NaH#Q.x.Z.S#Hbq#Xbyb0#5bMbFbBb1beaAbL.xbtbP.KagbJbqbtbL.xbubTbqbM",
+"awbIaCaC.x.0a2aG#k.O#kbq.xbGbS#6.SbHbMbSaCahaGbB.Saz.ZbLanbPbTaY#l#.bTaAbqbeaA#La7aGbFaBawb1boap#Jasa9bWbWbIbObX.NaGbSbP#5.ZbrbMaAbL#kbIbM#hbKbX#caA#3bebuaAbebfbq#6bNa7#5a7bEbobubEbTbE#4#3aGbL",
+"###caG.SbEboaGbMbMbY#Vbea4bvahaW#PaC.Zbq.0#6bz#6.J#Waz#J#lbPbLbt.0b0.xaKbO#mbLa5bwb0#kaH.Sa2bWaAbIbJatb0#6.iap.xa1bY#5awa0a9bnaebaa7aY.EbXb0#l#ka8#Ca9bobTaKbYaK#rasbIbLbN.SasaG.4a2.SbobXbK.Ybq",
+"an.5bua4by#5.O#c.haCbJanbY#caJbfbHasbNbY.2aq#JaAa7aGa2bybOaAapaYb2#9bLbPbWbXb2.SaHaHanby#3.hbTaObX#3bL.SbT.x.ibTa2bN#5bBaGbobJbqbt#lb#.EbJ.5a9bL#3beaKbOa9bu.E#vbK.MbtbqbN#5bM#3#k.KbtbMbI#c#cbo",
+"bobfbLbYaAayaA.M.Eal.nbybLbubE#caia1.7btbBaM.L#BbSaC.5#kaCb0bOaYbMbAb1btbPbL#nbLaU#u.SbebNb..5#sbMbub0a9a8b3bTbI#V#3bubF#q#vbn.2.KbMbo.kbObLbJbJboboaC.KbY#man#mbqbBbLapbMbbaGbS.5aHa7a7bYbebLaG",
+"bT#Eam#p#5aAaL#3bOanbqbVbEajaHapaO.SaH.SbObhbM.H.a.SalaGbTbYbh#6bJbM.p.2a9aA.0aoboay#9.E.x.E.g.2a8.5bn.sboaA.Z#6axbF#Ea5ab.4btbJb#bbbPbzbNaAbxbM#5#5.K.iaqbB.K.Fa9anbTbH#k.EbP.SbIbeb0bYbu.x#3bq",
+"#PbN#Ta9aVaWbtaG#VbP.ZbhbXbM#h.G#d...ubYbq.7#k.0bNbwadbSbea6aV.5.X.1bE.J.ZaAbS#5.5.Z#T##bY.E.F#l.EbH#c.Ebu.ZaH.CbTbMbXbT#n.5bMbM.JbEbG.5bBbSah.KasbqbtaYala5bJbJ#cbo#3bNbubnaC.gan.cby.Obu.waAa0",
+"#4aGbN.E.BataG#ubY.x.EbLbM.2.iaKa9ap#EaGbAas.S#..BbYbNbN#c.Ea2#3#c.JbN.5apa2bRb0.FbNaA.6bWbQ#.bPa9by.Sb2a2bTbE#6bTbIbq#5aA#5bua0beapbEaGbq#capa7aAbMa0bIbt.KaAb0ay#3.Ka2.BbI.sbqbSay.x.Z.xbo#SbI",
+"ak.EbSaVbRbSbbbbapbi.KapbF#5bCbtbBbbbOaAbIbI.EbXbI.0.Ba2bqaG.5.dbSbNaCap#mapbubLaM#kapbFbhapbuapaCbJbobSbqbo#FbHbub#asbJbhbJbh.B.FbHbq.0a2aw.BbtaAbubXbI#kbXbPbAaPasbo#5aC.5a7.hbt#kaH#5#c.IbL#5",
+"aB.0bMa4#6bP.KbtbDaW#5.W#yaw#qbybLbI#vbXbT#hbLb0ay#5#3#kbA#cbBa9blaGaMbo#Ebh#W#maG#q#Lb2bobe#vbz#AbNaB#5bo#5aw#v.0b0.KbK.EaAbJb1#3bKa9.KbObJ#c.xaAbLbobLbMbubIaYbDbSa6aAbI.Eb0.5bt.xbubH#ca7bbbL",
+"aq.nbX.SaH#3bLa9#B#BbiaTap#wbi#Cbh#kbh#5a5#6bm.ibJbqbMbpbM.0bMbb#p#jbu#m#J#9#9aMblbu#6a9#5bfbIb0a9bfbUbIbyb0bobWb0bt.i.SbX#m.Bbbbq#c.KbNbza4b1bKbWbSbLbObobLbeb0arbbbu#k#6bLbMal.EbMbE.Bala9#k#c",
+"#kasbMbybXaZ#v#qbn#3boaAbWaXbK.R#I#hbJ.5bU#ha2a2aAbTbEbO#5aAbM.0b0bb#m#6#tbTbhbnbzbobT#9bobeaAbb#ubIbe#p#q.Kbbbua9bPbI.KaY#kbh#6.8a7a7a5bXbBbJbI#kbu#la8.OaYasbMbN#3bL#5.D.i.S#Hbf#h.EbubNa9.Bbe",
+"#QbLbIbPas#5a9bP#Lbra7bBbtbI#c.x.Z.EbKbJaha4.RaNbTbLaZ.ZbMbtbFbJbtaAakbO#q.ibWas#3#I#3bY#2bJaGbHaLbeaAbebybt#9bT#kbPbMbPbtbebH.EbX#nbIbObqb1b0#vbRaZbt.BaYaw.5aA.R#3#8#k#cbHbXbMbhbcb1b0bTawaV.0",
+"bTbTa7bmbRbhbma9.g#b.y.waG.UanaCbKaH.Ea4bN.Jaya4aYbKbubTbL#hbr.Z.SbYaY.ObL#sbPaYbq.5ak.E.7a4aebY.kaLaMaM#mbS#qbtbra9bTbobLbhbX#haZbP#hbXa8#h.xb##.aAbPbPbXaYbJ#v.Bawbe.x.KaA#k.QbTbTbXapbE.xaCbQ",
+".K.K.E.x.xbY.Ka9.bawaDbq.v.ZaO#da1a2.ca2.aa2aGawbMbTbObTb0bB.zbe#T.V.xb0#ca9a8#Ja4.S#5bH.Oa9.B.SbtbTbL.ZbH#lbBb0aG.ZaAbI.ZbubLb0#k#K.n.bbNazaq#q.SbE#iap#Db1#l.5#3.KbMbAaAbE#BaAaKapaAa5b1bTbua8",
+"bwanbObI#r.7bu#ybSaG.5.Q#G#.bVaw#cbLa4.BbObQbqbGbMbLbtb1.KbPbMa9#..MbqbobRbMaBa8a9.5b1awbTbSbybKaAbX.S#3bXbP#NbM#qasa5bMaAbIaAbL.S.x#4.M.SbYa5bLbqbSa9#zaAboan#.bLbwbubebX#qbS#5.x.i.KbI#m.2asaA",
+"#6be#3a1.E##bmbMbBbYbP#UbRbRa7#6bObWbXbI.E#qbJbTb0byaqbJbMbXbWbt#X.NbH.ZbNaAbu.i#cbKbKbfa2bBbXbN.ZbTbRbT#sb0#5bJ.Z#.bPbXaMb1#6.E.IbR.naObN#kbTb.bI.EbobMaAbAbHaAaGbJaA#c#qbCbo#5bLbMbL#cbObXbObX",
+".KbJ.7#XbSbWbtaG.Sa0#sbTa8a7a8bTbIaKbLbIbJbhbR#3aAbLbMb0bMaAbIaA.7bMbN.ZbS#BbX.Kap#AaibW#kbNbTbIb0bXa7#k#3.IbH.iasboaYa2asbqa5bIbLa7bMaW#ratasa0a1bq#c#va9#3.xak#5#nbe#3#5bebXbIbMbtbJaY#kbXbTbo",
+"bFbz.7bT.5#kbybo#hbWbobtb3#na5.7#J.IaYboaYb2bPbOasaCbe.Kb0bPbeaBbWaObMaHbJ#EbY#mbqa2#kaAa2#5aO#c.5b#ag.5b0bObK#2aZbL.EbT#5bLaYbJ.K#vbNaG#k#3bubIbT.F#Lbea9#A.ZbKbQ#3b1bL#3#6bObtaAbOanaBbJaAbTbb",
+".Kbna2bq.Z.0#m#vaZbTbo#L#BbubPaAbr#cb1##bM#tbH#vbMbT.Za8beb0#.aA#ka9bPbObL#kbB#5bSb0aGbIbqbT#Ja7b#bIbObnbP.Bb1bEbLbobza0bLbobI.Ka5b0byapapbQ.Ea8bHbLa2bobS#3aG.xb0bfbE#3bub0bz#c#6bIbhbI#6bLbebM",
+".KaKbYae.S.B#5bIbqbtbu#y#E#cbSbJ.F#3#ca2awbIa4aHbIa9bIbTbWaA#hbq.h.7bHby.fbt#6bYbqapa9bMbBbYbNb1#k.F#k.0bI.0bh.ZbIbh.Eb0bt.Bbha7#maK#Sbi.V#k.KbX.E#kb0a8bua5.5.0aI#AaKbuaK#5aHb0#hbtbRaGbLbKbLbA",
+"b0be#P##.EbBaAapbPa7bNbv#7.a.0bObsaFapaGbGbSa2.6aAbTbMbObJ#5bI#5bIb0bWbtbIa7aWbVbtbM.xa9.ZbTbqap.x.s#3.g#3bL#NbK#3##a9aY.xbh.0#5#Jbh#EbebM#cbT.6bqa4b1aLbNa9bM#VaM#6apaA.xa9aM#5bJbM.BaZbXa9bubX",
+"bybIbSaGb0.caMbYbJ.r.5#k#P#XbL#.as#XbJbK.2btaGbD.Z.PaYbH#h.B#cbb#KbebqbbbNbiay.Ya7.Z#UaObH.6#2.7bJbH.0#3asbKaA#5#2bOaSbLbPb0.S.g.d.KbGbEbNb0bXbn#X.B#H.0#2.Z.n.SbYbHbMbE.KbTa2.Za9#caKbo.KbtbMbo",
+".5aAbWbS.Ebo.Z.K.BbJbEbX.5aH.5bqaA.EasaHbobeaGaC#s#XbIbLbIap#3.O#3.xbIbtaCa2aLbs.SbObIbU.s.xaAbPbIb0bLaAb1bb#6#mbM.0bt#UbN.g.ZbLbu#VaH#ka0bo.5aK.ZbP.KbJbWa8bJ.Ia7aK.SbEb#a4bLat#nbobebLbNaAbTaM",
+"bbapb1a9bobP.xa4aGbqbq.Ba9bOaHbqbT.jbXbI#cbMbiaGbWbI#XapaSbObIbEbqbua2bo#5bV#6aybW#XaF#IbL.Oaea7#O.0#kaBbM#qaA#maA.gbbbTbJ.EbBbJ.dbMaGaAbNbTb0b#b0.hbH.BbRbIbEbWaAawa7beaFaAbMbebtbWbL#t#L#5#3#c",
+".5a4.E#kbd#lbXbOa7#cbo.xbHbO.E#3#ka6bobLaGbKbq#3ae#.#Nb0a8a7aH#6#tbzbI#6#cbCapbobMbMbF#k.Bbr#.b#.Zb0#6bOasbMbybMb.a9.i.SbqbLbcbTbNa4#6a7#cbTbJbIbbbT.KbObKbF.g.K.0#3bS.4aG#3bY.xbubTaGapbYbMaAbL",
+".5aA.K.K.ZbGbBbVbobHbybz#kbB#c.SbNbebHbea7a4bTbMbTbM.IbT#.aGbJbSbF.E#EbJbebtaYbu#s.SbWb3bybI.5bIbH.gb#bLaAaY#qbIb2bMbY.iaAbXbLbf#eawbOapb3bLbBbT#ha9bIbh.0b0bLbPbY#5bX.BboalbI.Kby#A.KaAbe.K#5aH",
+"#kbtaGbqbebX.7bO#c#JaGbPbo#3b0bu#haHbebWbXbBbqbW.Pa7bJbO.EbubKapaM#3bXaYaAbRaZbPbBbP.Qa9.gbI#3bI.xbTbI#cbmbebobJaMbM#3bKbP.Y#ua8#cbG.K#kbebqbnbLas.KbXaAbP#3a9bMasap.5#6#l.x.6awbzbubtbfbbbeaAaK",
+".B#5.5bebYbta7#3#6bXaG#x.KbY#qbNboa4.Ma9bNaA.gas#..l.QbMb0#c#5b0#5#j#3bIby.kbWaYbMbBbCbr#3bKb0aAbL#ObLbP#3bhbT#nbLbobPbybeaA#Z.K.MbH.ZaC#6bTbtasaZ.Kbt#5bobLaYbebWaCbya7bNbuby.7bob.bebtbL#nbYaA",
+"#t.5bTbMbHapbMa7bea9bobo#maAa9.KaHbl#AbQ.4.5bq#saS#2.Fakbh.x.BbDbo#5a9bMa0b..g.I#qb0a8bJ.Zbrbt#3#HbXbN.ibTbobP#u.i#g#3.iaAaK#6bnaP.xaGbtbM.EaYbLbIaM#ma8bIabaAaKbt#ka9bIbebFbHbqbmanbT#3#5#5#5bl",
+".nbH#c.n#lbq#kaHbX.SbTapa7bEbBb2#ca2.J.6a9.ib#bT#cbe#t#3bI#DaAbX#6alaAa9bB.E#mbH.ib0asbebbbKas#3.0.KbPa7#l#cbo.Z#5a2#5aAa9bybTa9#Q.x#N.x.ZbJ#kbqbL.BaebWa7.O.UaSbN#qby.Zbo.0.SbNbqay.E.N.Ea9.MbE",
+"a7bYb2.EbYbP.xb0.SbobVb0.KbNb0.Eaya1aGaA.ZbqbtbJbzaAbeaAa4.K#BbTaqbBbIb0bRaYbIbobJ.KbubPbLaAbo.sa9#c#k.KbubIaqb1axaw.0be#.#3#kaGbTbLbIbqbP.jbM.B.S#R.xaO.i#2.x.ZbYbIbua9.BbI#lbKapbfbubMa4a2at.Z",
+"bLbH.E.K.Zb0.xaxbYbMbq#6#lbO#3aAapb0bEbEbn#.bOb.#Lbbb1bt.Kbe#.aGbMbLbTa9#.bObJbIbB.z#5bLbobI#ibb.SbebXa9#kaGbz#c.ZbTbN#kbO.Sa7bQ.PbPbobLbI.F#5bXaA#NbMbT#Ia7.IbIboa9btbObNbP#V.ra7bNbNaObw.fbOap",
+"apbyaw.5bL.SbEbK.x.E#5.Z#cbA#caGan.Ba4.Faqb.bbaYawaA#5bSbLaMa9#5b#bMbBaAbTa9b0bqbo.Eas#hbWbXbL#3a7bR.FaHbt.6.SbIbqbtbtbJbqbobebEasbybXbfbX#3bJ.F.h#lbI.BaA.sbQbMbP.E.ZbNbIa9bB#k#3asaHawbqbX.K#.",
+"aAbSasaGa4bIbS#6bobla7#5bLbS.xbA.x.Nbo#kbEbTbqaMbtbtbt#qawbLaAbt.KbLa8bTb#bIbh.BbXbca9#kbIbNbX.8bF.VbJapbLa9bybNbJ.0.Y#k#6.xbu##bO.xbK.SbIa8#k#tbWaAbIbIbH#lb1.0bt#6b0a2.EbAaCbIbS.EbL.0boaHbRbN",
+"bT#6btbt#L.Kbh.KbI.FbobIbJbqaAboaw.BbNbIaHbXb#.U#3bwbT#6a9.Ka9aG.Ha9#kbJbebLaAbU.KbMa9aAbMa9bJbL#3aGb0a9bubL#rbtbNbobO.EboaG.K#6bTaMbOaMbtaYbtaMa7bJaAb0bOaK.Fbo.0bYbqaqaAbt#5aZ#kbebObobX.gbuas",
+"#qbSbPbKbubAanboapb0.Eby.5bYb0bYa4#cbRbPa6bObL#qa4a9aA#3#6bubu#5.ga2b1b0bJapbL#3.saA#lb0bTbtbHbIbQ.Da9.7.x.7apbJa2bPaHbLbY#k#6bMbEa8bB.ibJbIbOa9.ibMbqbnbe.Ba5bJbT.0.Z.S#5.B#t#c#q.xaAbta5.SbMaA",
+"aHbxa2be#6bBby#t#k.xbua4a4bPa9aHap.0#cbAbWbIa2.l#JbKa9bo#AbTb0bzbeaAaAa0btbI.lbLbybXbAbTa5bLaZbubJbubLbya2anbJbT.2a9a2bXa4bTaHbHbubnaA#Lby#3a5bobubB#q#5#hb0btb0a7bM.xbA.xa9bYaKbKa8asbrbOaY#vbT",
+".5a9apbX#cbH.SbybYbM#5bYbKapbIbX.M.Vazay.ObAbI.SbFbPbf.Ca4b0bobLbP.xapbN.7.KbwaAbqbL#ka2.SbLapa2buaGbPa9b0au#c#6.Maw.Va9aAbPbtbL.N#c.cbF.E#6aGalbPbM.YbNbW#cbLaGbHaC#4bLbX#cbIbHaF.Zak#l.B#k#Pa7",
+"a9.xaw#kbN#cbo.6bMawbIbMboaFbuap.MaH#ka2.Kaw#3bL.hbPapa8#5bTbLb#bq.Z#kbJa9#JaubebY#6btbP#3bT#c.Ia9bOa9byaAbu#5bea9.0a4aAapbqbOa5bYaQa7.R.0.EbIbIbfahbO.S#3bqbTbo.7.xbf#3.xa9#ebeb1bMa7bo#.#Ha9.E",
+".K.nbNa2bA.Z.6bYbY#kbK.M.xaBas#3.Zad#5#.a2#k.EbNaAasbMbTbXbP#3b0bqbNaA.xapbJaHaKbTbfawaHbb.Ea2bK#3bebtbeaKapby#5anap#kbYbT#tbqbT.S.x#5#haC#qaYbJana7#3bY#3#3bHbJbI#6bSaA.FbQbOaw.0bG#kbLb0bQ.rbM",
+"bQa4bHbqaCbbajbQapbMby.KbtaG.SbyaGapan#ka9bX.K#6bMbK#cbRbI.7#hbP#4bLaObSasbebB#xaw.E.SbP#lbobQanaKbtbWbtb0bL#Mb0bLa7apa8bObTbHaMbPbT#6a0.zbIaAbh#lbbbLbSbq#5bWaCbo#6bqbybebPbubFbq#kbPbYaCbJbta2",
+"awbLa4.S.Map#lblbUaw.xaAbNbr.ZbPaAbIbtaGapbQbRb1awaYbM#vbfbJbtbXaS.xbTbebMbYbfbI.5bSaA#c#6bHb0#cbbbOaLaAbubN#5bo#5bWalbIaAbybJbTa0bobIbTa5bMaMbPbTbSbPb0#5bN.EbybI#c#v#6aA#5btbI#3#cbI.S#6bu.ZbT",
+"aGbqboaGbJ.5.K.SbE#c.5bobO.S#5.bb0bh.hb.asbMaG.7bLbzaZ#3#kasbPbI#ka2.ZaH.Ya5awbtbQ.KbMbubY.5bybPasbe#vbQbFbb#JbubXbn.ib0bLa0bTa9bObJ.gbebMbSbJbNaGbqa7bo.xaGbIaHbB#mbobwbe#3.KbBa9#5by.KbEbTbTap",
+".xbyawbqa2bzbHbNa9bL.E#3bNaG#3aAa9a8aZbLbKb0anbYaY.SbLbOaAbL#5b0.E#kaGbIbOblbB#vbX.7#5.ZbuaGbMawbBbya9b0#3bfb0#5a5.G#5.ibMbeaAbMa7#xbf.Z.ZbEaC#c.EbTbSbMaG.0bfapbIapbRbtbl#m#3bOa9b#a9bL#mbB#c#n",
+"bz.xaGaia6#kay.ZbIapbP.xbYbP#kby#bavbh.Ka9a7be.xbS.i.EbtbJa5.xaA.E#5#kbTat#5boa9bNat.EbTaEbXaGbWa9.KbebE.KbT#5#3bg.k#h.sbnaA.5a9bTbB#Pbo.Ma2adaVb0#cbuap#ka8a4bT#faAabaM#qbobeaA#5bo#v.K#6bE#tas",
+".5#4bfb.be#t#k#c.F.0.0bYbO#P#c.FaFakapbYbWbNaM.K.MaGbBbqaH.SbmaZ#d.BaiaGaGaHaCby#P.B#e#PbR.x.xasb0.IbWbTbIbo.ZbMbYa7bIbN#k.E.x.I.6bLbMbYb0bX.M#6#lbJ.Z#NbT.t.s.xa4#3a6bR.S.Ka2bo.WbY.J#cbua7bX#3",
+"aG.EbfbebEbE.n.Eb0aw.FbEasbMa1bL#k.naAaGbMaw#.bA#caCbYaAbzaAbMav#T#k#V#lazbT.RbObq.0.7bLaFbIbQa7#kaK.EaKbXbMb0b.aHa9bSbe#kbP.Eae#kbobo.YbuaAa6bT.IbM#..EbIbMbBbTbIbqbL#c#6bMa9bq#fbSa9aH.K#3#can",
+"bX#caKas#6#ta7bIa7bBbLbPbYbo#5a2bK#4.JbI.MbBbobbaybqbY.xbJbMa9bI.xaGaqawaHbTbQ#cbW#c.5bfbxbobt#SbtbIbRbJaYasbXbtazbXbobMbPbJbTa8#ca7.ZbN#kaH#3an.B.4aZ.ZbhbK#Q.x.xbt.EbP.EbYbLbt.R#caUb0aGbqbyag",
+".5aObobnapa8#c#Pbb#t#3aK#tbo#JbB.JbLbEbQ#kbuaH.Jb0bX.6#5.xa4#5#kbTbNaCbMawbK.KbLbybPbu#6bbbZ#vac.Zbn#kbTbebLbfbIaybobfbo#DbM#nasaHbX#5bMbSaAbMbM.E#5bJbM#3a7a9.ibybSbNaM.xaw#3bHaW#6aLbea9b.#B#.",
+"bIbKbeaG#vbe#c.x#3blan#t#k#xbubobRaVa9bNbMa2.EbEbObtbB.0ap#5.0.xawaAbMbHa9bS.S.K.KaKbwbt#q#ubZ#jbLbTbObTbNaYbebTbYbSbY#6aAbt#m#qbqbo#c.S#5bo.O.KbtbTa8.6.Eb.aAbL.5bTa7bHbe.x.ZbtbtbPbYb0be#.bnbH",
+"aC#.a9bFbobtbPbLbLbobe#3bbbbbt#qbban.EawbE#.bqbEbHbfb0#5bI.x#c#cbLbXbybtbm.SbI.ybN.Kbe.K#qbD#q#za8.5bfbBbJ.BbTbLaVbMbV#3a6brbT#u.ZbA#kbF#.bMbEbW#B#.bB#naA.K#3bT#cbLapboa2#5#.bobu.KbubyaAbhbIb0",
+"#Oa2bX.KbeaA.5a1b0.xaAaAa1#kb1.6a9aA#DbH.ZaVbKbqaA.SbJaA.XbS.S.b#gaA#t.EbL.xbMbWbea2bRbtbubWaM#5.ZaZbP.EbMbJ#mbJ.V#GbHaH#3bc.KaYbL#ca9.0#5a2bqbfbMaZbtaZaAbM#tasbeaCb0bTa4.x.K.E#vbE#LbraKbKbIaA",
+".xakaKbybW#6bM#l#ka7#k.nbM.0bH#Pa2#3by#..K#kak#0bnbMaA.5.K.BbNa6aK.ka9bLbc.wbL.7.xaAbqbAbo#JawaB.KbLbq#BbebMbMbL.##Va7#2.S.B.0bIbEb2.7#6.Z.KbJbq#m#5a8bWby#ua8#6#3#lawbTbea7bL#3#3#J#5#.#3.ib#bM"
+]
+
+stonebright_xpm = [
+" 96 96 250 2",
+".. c #7b927b",
+".# c #daefcf",
+".a c #b5cec3",
+".b c #ebfceb",
+".c c #cce2cb",
+".d c #e5f8e5",
+".e c #99b499",
+".f c #effeef",
+".g c #e8e4cf",
+".h c #d7d3bb",
+".i c #f3f0e7",
+".j c #faf7e6",
+".k c #bfbbb0",
+".l c #fdfbf4",
+".m c #dae9c1",
+".n c #e6f4db",
+".o c #bbd9c7",
+".p c #fffdf7",
+".q c #91a680",
+".r c #effbe4",
+".s c #e3e0c9",
+".t c #b0c2a0",
+".u c #eafeea",
+".v c #d3ddb8",
+".w c #f0ecd8",
+".x c #e3ecd7",
+".y c #f8f5e3",
+".z c #d0ccb3",
+".A c #b6b297",
+".B c #f4fbea",
+".C c #fdfaea",
+".D c #f9fff0",
+".E c #eef6e3",
+".F c #bbc6ab",
+".G c #e3d9c9",
+".H c #ada99d",
+".I c #ede9d5",
+".J c #d1e7d1",
+".K c #d3ddd3",
+".L c #989c86",
+".M c #dff3df",
+".N c #e8fae7",
+".O c #f7feee",
+".P c #fcf9e9",
+".Q c #f6f3e0",
+".R c #daefe6",
+".S c #d9e2cb",
+".T c #f9fff1",
+".U c #c8c4ab",
+".V c #bdd6bd",
+".W c #e5f8f0",
+".X c #a2bda2",
+".Y c #9baf9b",
+".Z c #ebf3df",
+".0 c #ccd6bd",
+".1 c #edfded",
+".2 c #a9b499",
+".3 c #c1dfce",
+".4 c #a2a690",
+".5 c #f3fae7",
+".6 c #b2bda2",
+".7 c #f6fded",
+".8 c #fffdf7",
+".9 c #869c86",
+"#. c #c4ceb5",
+"## c #f8feef",
+"#a c #e8e5e8",
+"#b c #ded3c3",
+"#c c #d9e9d9",
+"#d c #dff7e9",
+"#e c #c8d9bb",
+"#f c #e1eaed",
+"#g c #edeaed",
+"#h c #dedbd0",
+"#i c #fefcec",
+"#j c #d7e0e3",
+"#k c #e6efda",
+"#l c #f5fceb",
+"#m c #d5d9d5",
+"#n c #f9fbf9",
+"#o c #e6f4f1",
+"#p c #effbf9",
+"#q c #e2e5e2",
+"#r c #f3feea",
+"#s c #dedac3",
+"#t c #eef1ee",
+"#u c #f6f9f6",
+"#v c #ced2ce",
+"#w c #f0fcfa",
+"#x c #fbfdfb",
+"#y c #e9f7f4",
+"#z c #b9c4c8",
+"#A c #fafcfa",
+"#B c #f4f7f4",
+"#C c #a4b8b4",
+"#D c #c0d2ce",
+"#E c #c7d9d5",
+"#F c #8d927b",
+"#G c #f0f8db",
+"#H c #e6e9cd",
+"#I c #d6d9bb",
+"#J c #f1f4f1",
+"#K c #f9fbe4",
+"#L c #bec2be",
+"#M c #fcfefc",
+"#N c #e2e5c8",
+"#O c #eff1d7",
+"#P c #dfeed3",
+"#Q c #f7f9e1",
+"#R c #cfd2b2",
+"#S c #b4b8b4",
+"#T c #f0fce6",
+"#U c #fbfde8",
+"#V c #eaf7df",
+"#W c #abafab",
+"#X c #eceed3",
+"#Y c #fdffec",
+"#Z c #a39f92",
+"#0 c #f3feea",
+"#1 c #fafce6",
+"#2 c #f5f7df",
+"#3 c #e6efe6",
+"#4 c #d5e5c8",
+"#5 c #dee7de",
+"#6 c #f0f8f0",
+"#7 c #c8e5e2",
+"#8 c #8daa9d",
+"#9 c #c6cac6",
+"a. c #f4fffd",
+"a# c #eefef7",
+"aa c #e7f0f3",
+"ab c #c9d4d7",
+"ac c #b0bcbf",
+"ad c #d8f1d7",
+"ae c #f2f4db",
+"af c #bfc2a0",
+"ag c #fcfeea",
+"ah c #e3f6e3",
+"ai c #eafbea",
+"aj c #abc6ab",
+"ak c #cfdfc1",
+"al c #b4b8a4",
+"am c #f5fff5",
+"an c #b8cab8",
+"ao c #abaf8a",
+"ap c #cfdfcf",
+"aq c #94a18b",
+"ar c #f5fff5",
+"as c #c6cab8",
+"at c #a4b8a4",
+"au c #9daa97",
+"av c #fdfff8",
+"aw c #c0d2c0",
+"ax c #f4fff4",
+"ay c #d7ecd9",
+"az c #c6ddc6",
+"aA c #dcdfd0",
+"aB c #fcfef3",
+"aC c #f1fdf0",
+"aD c #eefeee",
+"aE c #899780",
+"aF c #ecf9e1",
+"aG c #e2f1e2",
+"aH c #ecf9ec",
+"aI c #fdfff5",
+"aJ c #83a182",
+"aK c #e6e9e6",
+"aL c #dfeeeb",
+"aM c #ebeeeb",
+"aN c #d5e5e2",
+"aO c #e3f1d7",
+"aP c #e3f6ed",
+"aQ c #eafbf4",
+"aR c #abc6bb",
+"aS c #dcdfc1",
+"aT c #b8cac6",
+"aU c #c6ddd3",
+"aV c #dbefda",
+"aW c #cbe2d8",
+"aX c #effef7",
+"aY c #e8e5dc",
+"aZ c #d7d3c9",
+"a0 c #faf7f0",
+"a1 c #dae9cd",
+"a2 c #e6f4e6",
+"a3 c #91a690",
+"a4 c #effbef",
+"a5 c #e3dfd7",
+"a6 c #b0c2b0",
+"a7 c #d3ddc6",
+"a8 c #f0ede4",
+"a9 c #e3ece3",
+"b. c #f8f5ee",
+"b# c #d0ccc2",
+"ba c #b6b2a6",
+"bb c #f4fbf4",
+"bc c #fdfaf4",
+"bd c #f9fff9",
+"be c #eef6ee",
+"bf c #bbc6bb",
+"bg c #e3d9d7",
+"bh c #edeae1",
+"bi c #d1e7dd",
+"bj c #fffdf6",
+"bk c #e7faf2",
+"bl c #f7fef7",
+"bm c #fcf9f2",
+"bn c #f6f3ec",
+"bo c #d8e2d8",
+"bp c #f9fff9",
+"bq c #dee7d1",
+"br c #c8c4b9",
+"bs c #bdd6cb",
+"bt c #eaf3ea",
+"bu c #cbd6cb",
+"bv c #edfdf6",
+"bw c #a9b4a8",
+"bx c #a2a6a2",
+"by c #f2faf2",
+"bz c #b2bdb2",
+"bA c #f6fdf6",
+"bB c #c3cec3",
+"bC c #f8fef8",
+"bD c #d9e9e6",
+"bE c #c9d9c7",
+"bF c #f5fcf5",
+"bG c #f3fef3",
+"bH c #f1f8e5",
+"bI c #e6e9d9",
+"bJ c #d6d9c7",
+"bK c #f9fbef",
+"bL c #e2e5d5",
+"bM c #eef1e2",
+"bN c #dfeedf",
+"bO c #f6f9ec",
+"bP c #cfd2c0",
+"bQ c #f0fcf0",
+"bR c #fbfdf1",
+"bS c #e9f7e9",
+"bT c #ebeedf",
+"bU c #fdfff4",
+"bV c #f3fef3",
+"bW c #fafcf0",
+"bX c #f4f7e9",
+"bY c #d5e5d5",
+"bZ c #dce5e8",
+"b0 c #f1f4e6",
+"b1 c #bec2b0",
+"b2 c #fcfef3",
+"b3 c #abaf9b",
+".x.0.OaHbI.2azbK.rbJaF.Zbq.EbqbT#..x#6at.S.KaGbOaz#5albJb1b0bAayaw#..S##.xb0an#IbI#NalaFbH.5a6bN#kbSbobT.5bObu.Z#k.5.ZaYbL.ga9aZ#e.EaDbqap#..Z.S.SbP.ZbMaF.BbI#lbT#3ap.xbYbO.SbL.ZbEbXb0awbL#PbI",
+"#k#c#..San#c.5bqa7bqb0bR.SbW#P.KbLawbqbLbCbHbT.5bY.c.ibObMa0aD.5.xbHa9.6bHa1bT.raAbIb0an#3#5bt#caAbXbWbYbtbSbM.SaCbq.t.xa5.SbLaAbLapbP#cbo.SaCbt#kbPaybIaOaGbMaOaG#c#k#S.Z#5#3blbIaO#k.Z.xbHbLaH",
+"#3bOaHa1.xb0bH.YasbN#c#kbq#cbM#kbYbMboatbNbTbG.K.B#6.Eb0#t#kbz.cbPbqaw#1bt.EaHa9bTaA.KbCbu#pbobkbo.EapbSbJ.YaGbba7bLbSbMbHaZbIbIaCaH.0bH.D.N#.bSaCbM.ta7#3aB.E.EbJbNbOa7aGb0bY.0#lbT.5bt.0bEbq.S",
+"bM#VbJbnbObIb0bMbQbOaqapbM.ZbobL.xbfbT.EbJ#caAbHa4#5bTb2bt#lbqa9#k#caBbtbt.SbJa2bmaY#JbyaMbybz#f#5.5awbOb0.Z.KbXbY.xb2a9bLaSbH.Uapa9bY#c#E#5.N#tbHbtbTbebEbKbebQbP#cb0bFbE.SbJaw.Ba9aG.xbM.Z.EbM",
+".l.xbR#P#sbI.0.ZbnbVbNaA.Z#3.0a6bEbJbG#k#6bIbqbebK.EaGbMap.Ka7bIaAbF.ZbqaH.O#3#.boaMbhbf#3aaab#o#kbt.S.5bYbubRau.MaMaAbMbMbM#s.x#5bX#6aEbSbAbEa9.0bHaGbq.B#ca7bI#cbY.0bXa9bMbb#3#4#3bqbSbq#kan#4",
+"aY.F#ibha7aA.iasbbbo#3bebybL#ybLbN.xbu#la6bSaBbNbrbl.xbV.W#lalbIa.bI#taHb..KbN.ibPb0.Kbb#va9a9aL.K.ZaCbObea7bo.F#v#5aGbMbL#1.E#I#6bu#3.K#5bP#3aG#Sbta9#JbObBa2bobIbW.Z#6#ka9.Z#5bqbHbO.7#lbK.EbR",
+"bUbJ.ia4.wbHbh.Zba.O#3ap#3a4#nbUaA#kbYbI#c.7b0.5a8a9bS.NbQ.BbFaA.Zbtbtbt#6bIbFbtaAaAbXbHbLbNbpap.SbebI#5awbq.xan#cbo.KbobHbT#R#Ha9#E#5.Kbe#catbfbIbSbubIbeaKbtaKbY#casaG#kbH.ZbybTaO#cbJ.O.ZbIaG",
+"b2.PbIaAaAb1.sbX#Ebfb1#t#qaAbAaH.Ebua4#6#kasboapb2.x.xaGbEbe.5br#9bubX#6bEaKbo#qag.ZbTa7bPbH.5#5#k#5aGb0a7btbY.K#LbL#5bM#X#2#N.ya2bu#C#y#3bo#jbB#B#qbb#c#9al.K#5bTbNb0#cas#3bN.x.ZbEbXaHbN.0.Z.0",
+"bq#6bS.na9#ca4bq.Zbtbu.Ea9a7#LblbXapbebqbo#6bYbPa4bXbYbT#IaAaZbqay.B.ba4bNboa2#5.x.EbYbo.F#5#DaAap#5bI#ka4bX.EbRat#kasbJas.O.Zbq.7a1aO.nas.S#2#e.2.ZbHbX.S#5#L.SaVbY#caV.MbSbG.dbObqbIbMa3bb#c#L",
+"#kaG.San.6#l.EbAa2b0#k.Za4.Oa2#3.FbMbb.ObJaH#kbRbGa1.nbn.5bn#sbM#N.Y.EbSbEawbebqaC.BbIbJbq#6.K#J#cbT.B#3.0beb0bQaAb0bLbqbIb.b#bO.baya7.E#P#kbP.z#e.x.db0btbE#6bBbTbT#caHbTa2aGbY#3bAbBbSbTb3.EbK",
+"bwbYbMbEbo.Eap.x#5bHbebo.LbLawbE.x.ZbqbYbMa2.x#5.ZbJbXa7.ZauasbPai#kbE.BbYb2bzaHbP.Z#.a4a2bJ#5#6a9bQ#k#3bLbqanbM.xa8.0a0aObM#PbR#Xa7bq#O.gbRbRbK.xaAbUapbJ.KbNb.awa6b0a7bYbN.SbY.ZapaObubYbY.0a9",
+".1bqbA#PaHawaCbVb2bNbWaCbG.EbYbXaGbKbSaw.E#W.Sap.IaGaIalbJb.#Hb1bH.Z#3bqbH#6#Sbl#k.xb1btbN#JawaKbI#kbKbQ.Sboasa4#6#IaCbMbXbJaAbIbT#sbLbrbL#ibW.zbI#5bHbObu.SbSbLaG#5bEa2bt.x#3bX.wbEbjbo.7b0apbW",
+".ZaDaGbNbTbQ.6.Z#3a2#3#5aA#lbMbFb0blaAbq#5apbqbXbI.5bO.5bIb2.E.Z.Zbq.Sa9.KaCaGbT#cbRaHbI.xb0bua4#5.B#5aGbLapbMbo.g.Ea0#QbF#N#5.Sbr.wb..z#hbLbTbObB.BaGaHbXbEbTa9bH.ZbLbPa7bX#c#.bSbt.E.BbNbKbNbO",
+".5bGbKbYbNa2.da6bJbq#6.Za2bNboa4#c#lbEbbbNbXbu#3bTa0asb2.E.YbTb0.E.s.SbK.B#maAbbbI.0.x#3bNbI#B#ha7bGbFbTbq#3.S.ZbebT.SbWbqaB.gb0bObmbtbIbLbT#3b0byaw#tbJbQbO.x.Sbo#Lb3bNbmbobKbOawbRa2bJb0.YaAa2",
+"btaGbEa7#cb1byaGbobqbL.Bbe.7bIbqaBbWbq#5bq#3#cbX.ybHbnbqbIbq#ca7a7bTbJbPbmaKbIaMa1a7bJ.6.xa9atboa9.5bWax#6bW.NbXbUbTa5bT.Kbq#3as.waYa7aMb0bH.Ea6bNa5aG#5aCbTak.EbTaA#5bHbL.xbobhbS#5bHbea4bIap#6",
+"bN.5a2bX.xbQaH.B.Z#3.dbU#kbNbMbFa4btbWbM.E.S.x#6asbL.ZbLb1.Z.0akb..0aZb0bTbP.ia9aAbHaGbH#L#cbeaAbPa2#lbQbLbHbw#3bHbq.5.SbM.SbMbIbB#qa5.xbbbi.M#c#tbebob.bYbJbTbA.wbo.wa5aAa8#t.h#3#ibS.ObIan#3.0",
+"bHb#bM.Zbq.sb2b0.a.SbbazaRbNbN.nay#3aG.J#ybSbNbNbWaB.YbL#6anbYbE.Z.xaO#cbea9a9be.mbH.nbq.EbBbebB.O#.#6.x#6bI.Kb2bybAbqaAbP.5boat#k#c.ca#.ZbQap.MbTa2be.Za7bQaw#Oan#ObP#5bY#5#5bJbu#6bBan.E.xbI#3",
+"bWbX.Z#5bKaua5a7bTbNbY.B.5bRbVbt.6.xaHapbO.bbqbz.x#5bNbJ.Z#3bHa9#2.EbebN#k.Z#5#q.Z.ZafbV.ZbMbNbqbXbSbI#5b0aG#5bDb0bKaHa4aAbu.0bIa2.xaG.E.BbAbNbHa9.SbYbI#6.ZbIbQ#2#cbIbQ.0.KbO#6#c#PaHbM.EbfbHbo",
+"bKbIbI.i.0bL.7.waG.Tap.Sa4.0buai.KbS.Oaw.Sap.6aGbO#c.Sa2bJa7bebH.x.0.BbI#c#Bbu#cbR.YbRa7a7bM.xbI.x#Tb0bVa9bI#cb1bq#c#hap#c.x#3#kbI.KbT#mbqbO#6bPbYbYa9bNatbWawala2bq.xaAbTbobtbf#hbO#5bo#3bIa6aw",
+".Eb#.E#2b0bTbMbe.S#3bP#6bOaHbSbSbMbYbP.xawasblbQa2by.TbJasaHbe.KbT.KasbqbtaAbH#3bIbobybGbWaC.E#G#..EbqbqaA#6a9bYaM.6#caB.Ea9bKay.ibL#5.Pbta8b0bMbFa7bqbIbea2bJ.E.KbqbS#6bJbYa9.O.raubA.xbY#kaAb2",
+"bJbO#lbXbM#laYbT.Zbl.F#5bBbX.xb0bHbebI#3bNbtbTa7.5bO#3bo#cbObNb2#6bOb1a0aYaAbWb2#6bC#9asbH.0bHaC#T#kaHbXbqaA#5#h#3bYb1apaAawbTbS.k.ibha9aYbMb#bMblbeb..nbtasbKbEbzblaA.ZbQbJbYbTa4bTa2b1.EaGbIbF",
+"bT.xbKbHbWbq.B#ka7aubqb1anbUbL#JbT.5bM#6.xaAbIbubL#ca7.SbUapbM.5bu.ka9aAbMbJaYbT#SbPbBbfa9#ca9bH.S#cbXby#waA#taHala2.5bKbSa9.EbMa9.SbhbLbM#6b3bTala7ana2bLbqbTbe#3aAbQ.6a9bN#Qbtbqa2.xb1a4bzbqa6",
+".x#lb0b..Ebhbqb1a8btbmbbbhbJa2#5b0bebTa5b0bJbBbIbNa9#5a9.x#3.SbXaZa5.HbX#B#UbLb1a2bYbYbMa9bobtbF.0bJ.SapaAaGbG#gaGbSbJana9b1bY#3.E.x.Z#cbqbQ#cbqby#cbMbIa6bLawbEbH.KbtbLbeaOa7bqbealbube.5bK#.bo",
+"bK.BbLbX.ZbXbL#3bKbhbu.ya5.ibPbTbLbh#5.Qby.k.i.k#5.Bb0.BbPaHa4a9a0a8#qbL.Qbnbq.ga7#laAa9bT#B#v#jbK#k#ka4#kaKbTaHbL.Ebl.5bN.6a4bIaza2apbt.cbY#cbb.ZbI#cbfapbSbIan.iaMa9bN#l.i.5#4bI#c.na9bIa9bHbe",
+"btapapaW#kawbe.0#8aVaW#5a4a9.i.IbNa2a7bw.OasaGbh.F.naG#l#5bBa9#qbBbFbO#5bMbOaAbB#k#X#kb0#kb0aZ#kbS.e.S.0ahaObSaybHa7#k#kaA#U.nbH.0.Z.0bHb0#P#k.S.BbHbebMbI.x.Zbt.J.7.Z#k.S#T#k.E#4aObN.daF.e#4#P",
+"#kbQa7btaGa9azbY.WaGaGa4a9.Ob0b0a4bJaHbFaza5aAas#VbL#kbe.0bMbWbwb0bL.xa8bIb1bJbJ.O.F.I#ka2#ibHbBbIaFaC.SaHbY#l.0.0asbPaAa1.KapbPbMbS.0bSbq#l.xbqbTbY#kaH.0a9bt.K#O.Y#P.Ja7bSbQbEahbq.E.Zat.BaVbH",
+"btaGaH.7aCbHbNbS.WbsapbSbLa5bO#6.b#k#lbo#5.gaGbcbTax.5be#k#xa6#n#3bIboasbFbebJbO.jbRbLaKaMbo#m.ia6.xa4#PaHbOaFbqa7bBaO.xasb0.E.Z.Eas.x#lbqbzbKbV#c.Z#xb0bY.SaH.EaC#m#.axb0bNbMapbL.4#.by.CbTas#l",
+"aF.SaHbJbNbMbC.Zapa2bGbQ#6.KbC.IbG#cbq.K.5#m##b1awbX#k.5aGa9bT#5.xbm.Sa0.FbhbH#qau#6#JaA#B#hbc#5.B#k#4bO#.aGbSbIbeaDbM#k#5apbLbu.E#3bXbtbX.nbob0bKbT#Va2#6bJbIaG.KbDbEab#5bEbS#tb0a0as#lbMa5aA#B",
+"bHbOakbE.E#..Ba7aLaT#c#3btaG#NbY.dbfbN.ZaIbKbPa8aC#NbNbSbXaGaAbebObR#5.xbBaZbJa7.k#9aZ#Lbu#vbeaZbKbHby.xbHbO#.#PbTatasbyaB.VbS.x#cbt.FaGbXbLbN.Zbi#cbT.Ea6bYaG#kbObY#ubEbobuapaGa5b2aZbPaZbLau.G",
+"btaSaB.D#lbT#ObP#ta6#3#3bBbHbe#k#5.5.ZbFbEby#hbqbq#.bu#lbKby#5#BbEbXaYb.bL.9bXbX.i#BbB#Ab0bLbJ#lbM#k.F.5bJbTb0a7#9btbe#5bt#JbebMaMbqaMa2bzbobt#3bTa4bMbo.0bXbIat#J#3bYa2bJ#6bo#6.K#5#mbtbBbKboaA",
+"b1#l.j#Q.D#H.B.xaHbyanbYar.1.xaya2a6bY.x.ZasbIaA.Ba4.5asbE#B#5bL.KbLasaCb#bKbXa2#qaAalbua5.S.5.Ebt.zbXbMbTb1.xbzbIaCaAbyatal#5bt#ca8au#6bebRa9#6as#cbN#cbWa9a7#kaH#Va6.E.E#c.xam#lbBaw#5.5bBbEbA",
+"#U.4.0.Q.ZbMbObX.KaKawaKbP#5.bbq.M.Ta2bWawa8aAbI#kbRaGa4bJbubPa9#3bIbPb0bTblbWbn#3bLbt.w#V#U.Z.z.I.ZbRbKb1bLbXbWbBbebLbtbfaK#c#uaA#6#6#S#vbSaMbe.EbHbI.0bo.xa9.Zb1#k#V.xbNa1a1.ZaU#q.dbNaL#6aRbN",
+"ah#4bS.Va7#e.Maibqan#kbXaw.BbLbYa2aha9bIaAbGahawaAbB.ibXbT#c.xbbbJapalbe.xbO.#asawbJ.QaObXakaZa9bXb0aAbA.0br#5.sbNaha9#cbVaCbYaVbDaw#c.ZbeaBaebMbKbP.qbMaAbYa1b0bEbSbE.Ba7.i.Q.BbObNboa7bM.Sa7bW",
+"aOaw.xambN.M#2bGbJ.0.Z.xbT.E.ZbHapa2bt#k#3bIaibQbTaAbRbT#k#BbMbMbybybNbe.S.O#..Zb2.2.5b0#H#kbKbt#5bu.ZbM.k.K.xbe.xapbea7aG.0aG.5a4bEal#6awbT#Ob0akbT#c#.bH.SbLbIaUa2.xalbH.0.S#sbebf#J.ObNbJbN.O",
+".7#l#4.SakasanaObMaGbqbN.0b1bQ#..daGbIbJbTbTa6aCbObIbH#S.Za5aY.xa5#jbobo.K#5bFbLbtb##U#Rbq.hblba.0bna0#5.QbO.EbM#haA#.bLbMbKa5aAbCbBbfbTbqas#3bWa7bNas.Za7.EbYa1bMaVbt.EbYa7#O.BaKbXbuaHbqasbH.E",
+".S#6.Z#kapbT#4bIanbHbRb2.S#cbO.xaybb.BbX#t.Z.V.abJbTaA#5.i.F.KbKbFbFaa#3bf#vbobbbnapbM.S#2#lbKbra9bXbI.0bebMb0#h#6bXaAbM#3bnbPbubobH#.bzapbLbNbIaHbP#ca2bI#5a4bLbK#k#k.Z.B#3bPa7bYbbbobJaG.Ea9ak",
+"bLbq#kbJ.S.x#c.E#PbW.Z#l.6a6.nasbQ#4btap.0bBbS#cb0bTbBbLaIa9bL#5#q#taAaaaK#nbtbt#n.ZbH#Rb1bqbUbJbKbz.K.ZbobLbtaZb.aZ.kbM#vbIbM.ibTbFan.KbRbEaA#5bqa9bebI#cbLa2bu.x.xbFbPbIan#HbeaA.KbT#m#kbo.Zbq",
+"aIbMb1bHbP.pbLbP.xaGbJapbSbX#.#caCaUbTbTbAbX#c.JbXalbXbb#ia7bJala4aM.Ka2#LaC.Kbwb2bBbO.BbL#U.0#mbXbJaAb.bIaG.PawbMb0bMbn.0aKbHbXa4ae.iap#lbIbo#kbBb0bo#cbPaGaAbua7bI.ZbE.E.xaybbbBboatby.2.Sbq#V",
+"bLbTbMa9bP.S.xbRbLbYbPakaAa7bM.E.N##.K.Fa8.SbtbNaG#kbPbrbTbIb1bK#Ra7a7#3bbbxbu#qaA.x.5.0.x#XaK#3.xbX.Ka7bLbIbyaAbq#cbq.Y#3aObb.S#k.sa7a9bPbt.aa2bTaAaGb#btbubt.KagaSbL.SbLawa9aVbI.KbtbM#3#cbJbX",
+"bc.FbT.g.haqbMbPbP#ebIbN.6a7#kaAaV.cbtb0b2apaObEa5aAb2.KbIbubl.K.B.Z.7bM#5.0.KbE#vbHbXaf#ObY.IbobhbNbm.ibTbhbT#u.SaWaVbHaG#c.ZaU.A#YbIbYbfbSbGbibo#3aMa9#mbP.K.Kb0.Q.S.xa2.ZbNaCbb#6bo.5bTa7bq.B",
+"aw.S#4.cawaS#P#.bqa2bX#.#c#caPa2bHbQ.FbY.d.3aw.o.J.5.5btaGa8auaY#GaebXbWasaK#v#a.H#ObPbJ#3aAaU#cbL.KbIbK#5.xb0bI.a#4.ZbbbL.SbI#..I.SbT.E#k#1bL.6bTaNbo#5#3.YalbLanbqbSbTa7bPaxbubfa7bz.0.Yaw.5a4",
+".Ea1.6#2bSbqazbX#kal#c.xawaGbSaUa1.5.5a2.WaCaybYbEaVaH.SaAbq.kbaak#k.0bX.xaY#v#5as#sbB.S#ca9#ca9bK.I.Kb0b0bI#kbKaO#VbHaw#3.Sa7aebX#I.xao.wbq.5bM#5.Zbua5bEbe#vaGbybB.S.Ka2#cbz.SbYb0bBbB.Z#5bo#k",
+"bNaG.6apbY#k.r.7aSawawbXaC#caCaP.xbYak.VbNbb.WaWaxbM#c#lbNbXaAbIae#O#.bq#tbO#9aKbRbT.S.ZbNbyaHbNb0bPaAbBbJ#LbebMa1bq#kaKa9bL.x#NaH#Q.x.Z.S#Hbq#Xbyb0#5bMbFbBb1beaAbL.xbtbP.KagbJbqbtbL.xbubTbqbM",
+"awbIaCaC.x.0a2aG#k.O#kbq.xbGbS#6.SbHbMbSaCahaGbB.Saz.ZbLanbPbTaY#l#.bTaAbqbeaA#La7aGbFaBawb1boap#Jasa9bWbWbIbObX.NaGbSbP#5.ZbrbMaAbL#kbIbM#hbKbX#caA#3bebuaAbebfbq#6bNa7#5a7bEbobubEbTbE#4#3aGbL",
+"###caG.SbEboaGbMbMbY#Vbea4bvahaW#PaC.Zbq.0#6bz#6.J#Waz#J#lbPbLbt.0b0.xaKbO#mbLa5bwb0#kaH.Sa2bWaAbIbJatb0#6.iap.xa1bY#5awa0a9bnaebaa7aY.EbXb0#l#ka8#Ca9bobTaKbYaK#rasbIbLbN.SasaG.4a2.SbobXbK.Ybq",
+"an.5bua4by#5.O#c.haCbJanbY#caJbfbHasbNbY.2aq#JaAa7aGa2bybOaAapaYb2#9bLbPbWbXb2.SaHaHanby#3.hbTaObX#3bL.SbT.x.ibTa2bN#5bBaGbobJbqbt#lb#.EbJ.5a9bL#3beaKbOa9bu.E#vbK.MbtbqbN#5bM#3#k.KbtbMbI#c#cbo",
+"bobfbLbYaAayaA.M.Eal.nbybLbubE#caia1.7btbBaM.L#BbSaC.5#kaCb0bOaYbMbAb1btbPbL#nbLaU#u.SbebNb..5#sbMbub0a9a8b3bTbI#V#3bubF#q#vbn.2.KbMbo.kbObLbJbJboboaC.KbY#man#mbqbBbLapbMbbaGbS.5aHa7a7bYbebLaG",
+"bT#Eam#p#5aAaL#3bOanbqbVbEajaHapaO.SaH.SbObhbM.H.a.SalaGbTbYbh#6bJbM.p.2a9aA.0aoboay#9.E.x.E.g.2a8.5bn.sboaA.Z#6axbF#Ea5ab.4btbJb#bbbPbzbNaAbxbM#5#5.K.iaqbB.K.Fa9anbTbH#k.EbP.SbIbeb0bYbu.x#3bq",
+"#PbN#Ta9aVaWbtaG#VbP.ZbhbXbM#h.G#d...ubYbq.7#k.0bNbwadbSbea6aV.5.X.1bE.J.ZaAbS#5.5.Z#T##bY.E.F#l.EbH#c.Ebu.ZaH.CbTbMbXbT#n.5bMbM.JbEbG.5bBbSah.KasbqbtaYala5bJbJ#cbo#3bNbubnaC.gan.cby.Obu.waAa0",
+"#4aGbN.E.BataG#ubY.x.EbLbM.2.iaKa9ap#EaGbAas.S#..BbYbNbN#c.Ea2#3#c.JbN.5apa2bRb0.FbNaA.6bWbQ#.bPa9by.Sb2a2bTbE#6bTbIbq#5aA#5bua0beapbEaGbq#capa7aAbMa0bIbt.KaAb0ay#3.Ka2.BbI.sbqbSay.x.Z.xbo#SbI",
+"ak.EbSaVbRbSbbbbapbi.KapbF#5bCbtbBbbbOaAbIbI.EbXbI.0.Ba2bqaG.5.dbSbNaCap#mapbubLaM#kapbFbhapbuapaCbJbobSbqbo#FbHbub#asbJbhbJbh.B.FbHbq.0a2aw.BbtaAbubXbI#kbXbPbAaPasbo#5aC.5a7.hbt#kaH#5#c.IbL#5",
+"aB.0bMa4#6bP.KbtbDaW#5.W#yaw#qbybLbI#vbXbT#hbLb0ay#5#3#kbA#cbBa9blaGaMbo#Ebh#W#maG#q#Lb2bobe#vbz#AbNaB#5bo#5aw#v.0b0.KbK.EaAbJb1#3bKa9.KbObJ#c.xaAbLbobLbMbubIaYbDbSa6aAbI.Eb0.5bt.xbubH#ca7bbbL",
+"aq.nbX.SaH#3bLa9#B#BbiaTap#wbi#Cbh#kbh#5a5#6bm.ibJbqbMbpbM.0bMbb#p#jbu#m#J#9#9aMblbu#6a9#5bfbIb0a9bfbUbIbyb0bobWb0bt.i.SbX#m.Bbbbq#c.KbNbza4b1bKbWbSbLbObobLbeb0arbbbu#k#6bLbMal.EbMbE.Bala9#k#c",
+"#kasbMbybXaZ#v#qbn#3boaAbWaXbK.R#I#hbJ.5bU#ha2a2aAbTbEbO#5aAbM.0b0bb#m#6#tbTbhbnbzbobT#9bobeaAbb#ubIbe#p#q.Kbbbua9bPbI.KaY#kbh#6.8a7a7a5bXbBbJbI#kbu#la8.OaYasbMbN#3bL#5.D.i.S#Hbf#h.EbubNa9.Bbe",
+"#QbLbIbPas#5a9bP#Lbra7bBbtbI#c.x.Z.EbKbJaha4.RaNbTbLaZ.ZbMbtbFbJbtaAakbO#q.ibWas#3#I#3bY#2bJaGbHaLbeaAbebybt#9bT#kbPbMbPbtbebH.EbX#nbIbObqb1b0#vbRaZbt.BaYaw.5aA.R#3#8#k#cbHbXbMbhbcb1b0bTawaV.0",
+"bTbTa7bmbRbhbma9.g#b.y.waG.UanaCbKaH.Ea4bN.Jaya4aYbKbubTbL#hbr.Z.SbYaY.ObL#sbPaYbq.5ak.E.7a4aebY.kaLaMaM#mbS#qbtbra9bTbobLbhbX#haZbP#hbXa8#h.xb##.aAbPbPbXaYbJ#v.Bawbe.x.KaA#k.QbTbTbXapbE.xaCbQ",
+".K.K.E.x.xbY.Ka9.bawaDbq.v.ZaO#da1a2.ca2.aa2aGawbMbTbObTb0bB.zbe#T.V.xb0#ca9a8#Ja4.S#5bH.Oa9.B.SbtbTbL.ZbH#lbBb0aG.ZaAbI.ZbubLb0#k#K.n.bbNazaq#q.SbE#iap#Db1#l.5#3.KbMbAaAbE#BaAaKapaAa5b1bTbua8",
+"bwanbObI#r.7bu#ybSaG.5.Q#G#.bVaw#cbLa4.BbObQbqbGbMbLbtb1.KbPbMa9#..MbqbobRbMaBa8a9.5b1awbTbSbybKaAbX.S#3bXbP#NbM#qasa5bMaAbIaAbL.S.x#4.M.SbYa5bLbqbSa9#zaAboan#.bLbwbubebX#qbS#5.x.i.KbI#m.2asaA",
+"#6be#3a1.E##bmbMbBbYbP#UbRbRa7#6bObWbXbI.E#qbJbTb0byaqbJbMbXbWbt#X.NbH.ZbNaAbu.i#cbKbKbfa2bBbXbN.ZbTbRbT#sb0#5bJ.Z#.bPbXaMb1#6.E.IbR.naObN#kbTb.bI.EbobMaAbAbHaAaGbJaA#c#qbCbo#5bLbMbL#cbObXbObX",
+".KbJ.7#XbSbWbtaG.Sa0#sbTa8a7a8bTbIaKbLbIbJbhbR#3aAbLbMb0bMaAbIaA.7bMbN.ZbS#BbX.Kap#AaibW#kbNbTbIb0bXa7#k#3.IbH.iasboaYa2asbqa5bIbLa7bMaW#ratasa0a1bq#c#va9#3.xak#5#nbe#3#5bebXbIbMbtbJaY#kbXbTbo",
+"bFbz.7bT.5#kbybo#hbWbobtb3#na5.7#J.IaYboaYb2bPbOasaCbe.Kb0bPbeaBbWaObMaHbJ#EbY#mbqa2#kaAa2#5aO#c.5b#ag.5b0bObK#2aZbL.EbT#5bLaYbJ.K#vbNaG#k#3bubIbT.F#Lbea9#A.ZbKbQ#3b1bL#3#6bObtaAbOanaBbJaAbTbb",
+".Kbna2bq.Z.0#m#vaZbTbo#L#BbubPaAbr#cb1##bM#tbH#vbMbT.Za8beb0#.aA#ka9bPbObL#kbB#5bSb0aGbIbqbT#Ja7b#bIbObnbP.Bb1bEbLbobza0bLbobI.Ka5b0byapapbQ.Ea8bHbLa2bobS#3aG.xb0bfbE#3bub0bz#c#6bIbhbI#6bLbebM",
+".KaKbYae.S.B#5bIbqbtbu#y#E#cbSbJ.F#3#ca2awbIa4aHbIa9bIbTbWaA#hbq.h.7bHby.fbt#6bYbqapa9bMbBbYbNb1#k.F#k.0bI.0bh.ZbIbh.Eb0bt.Bbha7#maK#Sbi.V#k.KbX.E#kb0a8bua5.5.0aI#AaKbuaK#5aHb0#hbtbRaGbLbKbLbA",
+"b0be#P##.EbBaAapbPa7bNbv#7.a.0bObsaFapaGbGbSa2.6aAbTbMbObJ#5bI#5bIb0bWbtbIa7aWbVbtbM.xa9.ZbTbqap.x.s#3.g#3bL#NbK#3##a9aY.xbh.0#5#Jbh#EbebM#cbT.6bqa4b1aLbNa9bM#VaM#6apaA.xa9aM#5bJbM.BaZbXa9bubX",
+"bybIbSaGb0.caMbYbJ.r.5#k#P#XbL#.as#XbJbK.2btaGbD.Z.PaYbH#h.B#cbb#KbebqbbbNbiay.Ya7.Z#UaObH.6#2.7bJbH.0#3asbKaA#5#2bOaSbLbPb0.S.g.d.KbGbEbNb0bXbn#X.B#H.0#2.Z.n.SbYbHbMbE.KbTa2.Za9#caKbo.KbtbMbo",
+".5aAbWbS.Ebo.Z.K.BbJbEbX.5aH.5bqaA.EasaHbobeaGaC#s#XbIbLbIap#3.O#3.xbIbtaCa2aLbs.SbObIbU.s.xaAbPbIb0bLaAb1bb#6#mbM.0bt#UbN.g.ZbLbu#VaH#ka0bo.5aK.ZbP.KbJbWa8bJ.Ia7aK.SbEb#a4bLat#nbobebLbNaAbTaM",
+"bbapb1a9bobP.xa4aGbqbq.Ba9bOaHbqbT.jbXbI#cbMbiaGbWbI#XapaSbObIbEbqbua2bo#5bV#6aybW#XaF#IbL.Oaea7#O.0#kaBbM#qaA#maA.gbbbTbJ.EbBbJ.dbMaGaAbNbTb0b#b0.hbH.BbRbIbEbWaAawa7beaFaAbMbebtbWbL#t#L#5#3#c",
+".5a4.E#kbd#lbXbOa7#cbo.xbHbO.E#3#ka6bobLaGbKbq#3ae#.#Nb0a8a7aH#6#tbzbI#6#cbCapbobMbMbF#k.Bbr#.b#.Zb0#6bOasbMbybMb.a9.i.SbqbLbcbTbNa4#6a7#cbTbJbIbbbT.KbObKbF.g.K.0#3bS.4aG#3bY.xbubTaGapbYbMaAbL",
+".5aA.K.K.ZbGbBbVbobHbybz#kbB#c.SbNbebHbea7a4bTbMbTbM.IbT#.aGbJbSbF.E#EbJbebtaYbu#s.SbWb3bybI.5bIbH.gb#bLaAaY#qbIb2bMbY.iaAbXbLbf#eawbOapb3bLbBbT#ha9bIbh.0b0bLbPbY#5bX.BboalbI.Kby#A.KaAbe.K#5aH",
+"#kbtaGbqbebX.7bO#c#JaGbPbo#3b0bu#haHbebWbXbBbqbW.Pa7bJbO.EbubKapaM#3bXaYaAbRaZbPbBbP.Qa9.gbI#3bI.xbTbI#cbmbebobJaMbM#3bKbP.Y#ua8#cbG.K#kbebqbnbLas.KbXaAbP#3a9bMasap.5#6#l.x.6awbzbubtbfbbbeaAaK",
+".B#5.5bebYbta7#3#6bXaG#x.KbY#qbNboa4.Ma9bNaA.gas#..l.QbMb0#c#5b0#5#j#3bIby.kbWaYbMbBbCbr#3bKb0aAbL#ObLbP#3bhbT#nbLbobPbybeaA#Z.K.MbH.ZaC#6bTbtasaZ.Kbt#5bobLaYbebWaCbya7bNbuby.7bob.bebtbL#nbYaA",
+"#t.5bTbMbHapbMa7bea9bobo#maAa9.KaHbl#AbQ.4.5bq#saS#2.Fakbh.x.BbDbo#5a9bMa0b..g.I#qb0a8bJ.Zbrbt#3#HbXbN.ibTbobP#u.i#g#3.iaAaK#6bnaP.xaGbtbM.EaYbLbIaM#ma8bIabaAaKbt#ka9bIbebFbHbqbmanbT#3#5#5#5bl",
+".nbH#c.n#lbq#kaHbX.SbTapa7bEbBb2#ca2.J.6a9.ib#bT#cbe#t#3bI#DaAbX#6alaAa9bB.E#mbH.ib0asbebbbKas#3.0.KbPa7#l#cbo.Z#5a2#5aAa9bybTa9#Q.x#N.x.ZbJ#kbqbL.BaebWa7.O.UaSbN#qby.Zbo.0.SbNbqay.E.N.Ea9.MbE",
+"a7bYb2.EbYbP.xb0.SbobVb0.KbNb0.Eaya1aGaA.ZbqbtbJbzaAbeaAa4.K#BbTaqbBbIb0bRaYbIbobJ.KbubPbLaAbo.sa9#c#k.KbubIaqb1axaw.0be#.#3#kaGbTbLbIbqbP.jbM.B.S#R.xaO.i#2.x.ZbYbIbua9.BbI#lbKapbfbubMa4a2at.Z",
+"bLbH.E.K.Zb0.xaxbYbMbq#6#lbO#3aAapb0bEbEbn#.bOb.#Lbbb1bt.Kbe#.aGbMbLbTa9#.bObJbIbB.z#5bLbobI#ibb.SbebXa9#kaGbz#c.ZbTbN#kbO.Sa7bQ.PbPbobLbI.F#5bXaA#NbMbT#Ia7.IbIboa9btbObNbP#V.ra7bNbNaObw.fbOap",
+"apbyaw.5bL.SbEbK.x.E#5.Z#cbA#caGan.Ba4.Faqb.bbaYawaA#5bSbLaMa9#5b#bMbBaAbTa9b0bqbo.Eas#hbWbXbL#3a7bR.FaHbt.6.SbIbqbtbtbJbqbobebEasbybXbfbX#3bJ.F.h#lbI.BaA.sbQbMbP.E.ZbNbIa9bB#k#3asaHawbqbX.K#.",
+"aAbSasaGa4bIbS#6bobla7#5bLbS.xbA.x.Nbo#kbEbTbqaMbtbtbt#qawbLaAbt.KbLa8bTb#bIbh.BbXbca9#kbIbNbX.8bF.VbJapbLa9bybNbJ.0.Y#k#6.xbu##bO.xbK.SbIa8#k#tbWaAbIbIbH#lb1.0bt#6b0a2.EbAaCbIbS.EbL.0boaHbRbN",
+"bT#6btbt#L.Kbh.KbI.FbobIbJbqaAboaw.BbNbIaHbXb#.U#3bwbT#6a9.Ka9aG.Ha9#kbJbebLaAbU.KbMa9aAbMa9bJbL#3aGb0a9bubL#rbtbNbobO.EboaG.K#6bTaMbOaMbtaYbtaMa7bJaAb0bOaK.Fbo.0bYbqaqaAbt#5aZ#kbebObobX.gbuas",
+"#qbSbPbKbubAanboapb0.Eby.5bYb0bYa4#cbRbPa6bObL#qa4a9aA#3#6bubu#5.ga2b1b0bJapbL#3.saA#lb0bTbtbHbIbQ.Da9.7.x.7apbJa2bPaHbLbY#k#6bMbEa8bB.ibJbIbOa9.ibMbqbnbe.Ba5bJbT.0.Z.S#5.B#t#c#q.xaAbta5.SbMaA",
+"aHbxa2be#6bBby#t#k.xbua4a4bPa9aHap.0#cbAbWbIa2.l#JbKa9bo#AbTb0bzbeaAaAa0btbI.lbLbybXbAbTa5bLaZbubJbubLbya2anbJbT.2a9a2bXa4bTaHbHbubnaA#Lby#3a5bobubB#q#5#hb0btb0a7bM.xbA.xa9bYaKbKa8asbrbOaY#vbT",
+".5a9apbX#cbH.SbybYbM#5bYbKapbIbX.M.Vazay.ObAbI.SbFbPbf.Ca4b0bobLbP.xapbN.7.KbwaAbqbL#ka2.SbLapa2buaGbPa9b0au#c#6.Maw.Va9aAbPbtbL.N#c.cbF.E#6aGalbPbM.YbNbW#cbLaGbHaC#4bLbX#cbIbHaF.Zak#l.B#k#Pa7",
+"a9.xaw#kbN#cbo.6bMawbIbMboaFbuap.MaH#ka2.Kaw#3bL.hbPapa8#5bTbLb#bq.Z#kbJa9#JaubebY#6btbP#3bT#c.Ia9bOa9byaAbu#5bea9.0a4aAapbqbOa5bYaQa7.R.0.EbIbIbfahbO.S#3bqbTbo.7.xbf#3.xa9#ebeb1bMa7bo#.#Ha9.E",
+".K.nbNa2bA.Z.6bYbY#kbK.M.xaBas#3.Zad#5#.a2#k.EbNaAasbMbTbXbP#3b0bqbNaA.xapbJaHaKbTbfawaHbb.Ea2bK#3bebtbeaKapby#5anap#kbYbT#tbqbT.S.x#5#haC#qaYbJana7#3bY#3#3bHbJbI#6bSaA.FbQbOaw.0bG#kbLb0bQ.rbM",
+"bQa4bHbqaCbbajbQapbMby.KbtaG.SbyaGapan#ka9bX.K#6bMbK#cbRbI.7#hbP#4bLaObSasbebB#xaw.E.SbP#lbobQanaKbtbWbtb0bL#Mb0bLa7apa8bObTbHaMbPbT#6a0.zbIaAbh#lbbbLbSbq#5bWaCbo#6bqbybebPbubFbq#kbPbYaCbJbta2",
+"awbLa4.S.Map#lblbUaw.xaAbNbr.ZbPaAbIbtaGapbQbRb1awaYbM#vbfbJbtbXaS.xbTbebMbYbfbI.5bSaA#c#6bHb0#cbbbOaLaAbubN#5bo#5bWalbIaAbybJbTa0bobIbTa5bMaMbPbTbSbPb0#5bN.EbybI#c#v#6aA#5btbI#3#cbI.S#6bu.ZbT",
+"aGbqboaGbJ.5.K.SbE#c.5bobO.S#5.bb0bh.hb.asbMaG.7bLbzaZ#3#kasbPbI#ka2.ZaH.Ya5awbtbQ.KbMbubY.5bybPasbe#vbQbFbb#JbubXbn.ib0bLa0bTa9bObJ.gbebMbSbJbNaGbqa7bo.xaGbIaHbB#mbobwbe#3.KbBa9#5by.KbEbTbTap",
+".xbyawbqa2bzbHbNa9bL.E#3bNaG#3aAa9a8aZbLbKb0anbYaY.SbLbOaAbL#5b0.E#kaGbIbOblbB#vbX.7#5.ZbuaGbMawbBbya9b0#3bfb0#5a5.G#5.ibMbeaAbMa7#xbf.Z.ZbEaC#c.EbTbSbMaG.0bfapbIapbRbtbl#m#3bOa9b#a9bL#mbB#c#n",
+"bz.xaGaia6#kay.ZbIapbP.xbYbP#kby#bavbh.Ka9a7be.xbS.i.EbtbJa5.xaA.E#5#kbTat#5boa9bNat.EbTaEbXaGbWa9.KbebE.KbT#5#3bg.k#h.sbnaA.5a9bTbB#Pbo.Ma2adaVb0#cbuap#ka8a4bT#faAabaM#qbobeaA#5bo#v.K#6bE#tas",
+".5#4bfb.be#t#k#c.F.0.0bYbO#P#c.FaFakapbYbWbNaM.K.MaGbBbqaH.SbmaZ#d.BaiaGaGaHaCby#P.B#e#PbR.x.xasb0.IbWbTbIbo.ZbMbYa7bIbN#k.E.x.I.6bLbMbYb0bX.M#6#lbJ.Z#NbT.t.s.xa4#3a6bR.S.Ka2bo.WbY.J#cbua7bX#3",
+"aG.EbfbebEbE.n.Eb0aw.FbEasbMa1bL#k.naAaGbMaw#.bA#caCbYaAbzaAbMav#T#k#V#lazbT.RbObq.0.7bLaFbIbQa7#kaK.EaKbXbMb0b.aHa9bSbe#kbP.Eae#kbobo.YbuaAa6bT.IbM#..EbIbMbBbTbIbqbL#c#6bMa9bq#fbSa9aH.K#3#can",
+"bX#caKas#6#ta7bIa7bBbLbPbYbo#5a2bK#4.JbI.MbBbobbaybqbY.xbJbMa9bI.xaGaqawaHbTbQ#cbW#c.5bfbxbobt#SbtbIbRbJaYasbXbtazbXbobMbPbJbTa8#ca7.ZbN#kaH#3an.B.4aZ.ZbhbK#Q.x.xbt.EbP.EbYbLbt.R#caUb0aGbqbyag",
+".5aObobnapa8#c#Pbb#t#3aK#tbo#JbB.JbLbEbQ#kbuaH.Jb0bX.6#5.xa4#5#kbTbNaCbMawbK.KbLbybPbu#6bbbZ#vac.Zbn#kbTbebLbfbIaybobfbo#DbM#nasaHbX#5bMbSaAbMbM.E#5bJbM#3a7a9.ibybSbNaM.xaw#3bHaW#6aLbea9b.#B#.",
+"bIbKbeaG#vbe#c.x#3blan#t#k#xbubobRaVa9bNbMa2.EbEbObtbB.0ap#5.0.xawaAbMbHa9bS.S.K.KaKbwbt#q#ubZ#jbLbTbObTbNaYbebTbYbSbY#6aAbt#m#qbqbo#c.S#5bo.O.KbtbTa8.6.Eb.aAbL.5bTa7bHbe.x.ZbtbtbPbYb0be#.bnbH",
+"aC#.a9bFbobtbPbLbLbobe#3bbbbbt#qbban.EawbE#.bqbEbHbfb0#5bI.x#c#cbLbXbybtbm.SbI.ybN.Kbe.K#qbD#q#za8.5bfbBbJ.BbTbLaVbMbV#3a6brbT#u.ZbA#kbF#.bMbEbW#B#.bB#naA.K#3bT#cbLapboa2#5#.bobu.KbubyaAbhbIb0",
+"#Oa2bX.KbeaA.5a1b0.xaAaAa1#kb1.6a9aA#DbH.ZaVbKbqaA.SbJaA.XbS.S.b#gaA#t.EbL.xbMbWbea2bRbtbubWaM#5.ZaZbP.EbMbJ#mbJ.V#GbHaH#3bc.KaYbL#ca9.0#5a2bqbfbMaZbtaZaAbM#tasbeaCb0bTa4.x.K.E#vbE#LbraKbKbIaA",
+".xakaKbybW#6bM#l#ka7#k.nbM.0bH#Pa2#3by#..K#kak#0bnbMaA.5.K.BbNa6aK.ka9bLbc.wbL.7.xaAbqbAbo#JawaB.KbLbq#BbebMbMbL.##Va7#2.S.B.0bIbEb2.7#6.Z.KbJbq#m#5a8bWby#ua8#6#3#lawbTbea7bL#3#3#J#5#.#3.ib#bM"
+]
+
+metal_xpm = [
+" 154 77 46 1",
+". c #040204",
+"# c #4c4e4c",
+"a c #6c767c",
+"b c #5c6264",
+"c c #848a8c",
+"d c #545a5c",
+"e c #7c8284",
+"f c #646e74",
+"g c #3c3e3c",
+"h c #444644",
+"i c #8c9294",
+"j c #4c565c",
+"k c #7c7e84",
+"l c #646a6c",
+"m c #747e84",
+"n c #4c525c",
+"o c #74767c",
+"p c #64666c",
+"q c #8c8e94",
+"r c #5c5e64",
+"s c #84868c",
+"t c #6c6e74",
+"u c #444244",
+"v c #4c4a4c",
+"w c #4c5254",
+"x c #5c666c",
+"y c #848e94",
+"z c #545e64",
+"A c #7c868c",
+"B c #3c4244",
+"C c #444a4c",
+"D c #8c969c",
+"E c #747a7c",
+"F c #6c7274",
+"G c #4c4e54",
+"H c #5c626c",
+"I c #848a94",
+"J c #545a64",
+"K c #7c828c",
+"L c #3c3e44",
+"M c #44464c",
+"N c #8c929c",
+"O c #54565c",
+"P c #646a74",
+"Q c #747a84",
+"R c #6c727c",
+"DNDDDDDDDDDDNDNDNDNNiNNiNiNyiyiyqyyyyIyIcIcIcAsAsAAKAKeKememkmmmQEQEEaoaoaaFRFFFftftlfPllllpxpxpxHbbbrbrzrzrJddddOdOOjOjOnwwwwwGwGG#GCGC#CCCCCCCMCMMMhMBhB",
+"DDDNDNDNDNDNDDNDiDNDNDiyNNiNNyNyiyqyqyIyIIcIcIAcAsAseAKeKekemkmkEmEQEEoaoaoRFRFFtFtftltlPllplpxpbpbHbbrbrrzrdrdJdddOOOOjOwOwOGwwwGwGGGCGCG#CvCCMCMCCMMMMMM",
+"NNDNDNDNDNDNDiDNDNiNiNNDNNyNyqNqyqyqycyIcIcIAIAsAsAKAKKeKkKmkmkEmQQoQoEaoFoaFRtRFftftfPlPpllpxpbpbHbbbbrzrrdrdrdddOddOOwOOwOwwwwGwGwCGwCGGCvCCvCCChCMCBhMB",
+"DDiDNDNDNDiDNNNiNNDiNyNiyNiyNyyNyyyIqIIcIcIAIcAsAAseKeKemKmkmkQmEEQEoaEaoaFRoFFtttftltlPlPppxppxbpbHbrrrrzrzrdddJdOdjOOOjwOwwOGwGwGGw#CGGCvCvCCCMMCMhCMCBM",
+"iNNNiNiNiNNiDNDNNiNyNiNiNyNyiyqyqIqyIIyIcIcIcAsAsKAKAKeKeekmkmEkQQEEQaooaRoFFtRFFftltflPllllppxpHbpbHbbzrrdrdrOrOddOOjOwOOGOwGwwGwGwCGGCGCCGCCMvCCMCMMhMMB",
+"NiNNNNNNNNiNiNiNiNNNiyNyiqyNyqyyyyIyIcIcIAcAsAsAAAseKeKmkmkmkQmEEQEoaEaoRoFRRFtfttftlPtllppxpxpbpbbrbrrbrzrdddddOdOOdOOwOwwOGOGwGGGGwCGGCGCCvCvCMMCMhMBChM",
+"iNNiiNiiNiNNiNiNyiyNyNyNyyqyqyyqIqycIcIcIsIsAsAAseKeKeeeKmkmmkQQQoEQooaoFaFRFFRFtftPtlllPplpxpbpbbHbbbrrzrrdrdrdddOdwOOjOwOwwwwGwGwCGGGCGCGCGCCCMCMCMCMMMB",
+"NyNiNiNiNiNiyNiyNNyiNyqyNyyqyyqIIIIIcIcAIAcAsAsKAKKeKkmkmkmkQEQEEQaoaoaaoFRFFtftftflPlPllpxppxpbbpbbrbrzrrdrdOJOdOOOOOwOwOwwOGwGwGGw#CGCGCvCCCvMCMMMhMhBMh",
+"yNiyNyNyiyNyiNyNiyqyyiyqyqyyyIIIycIcIAsIcAsAsAKAeKeKeeKmkmkmEmQEQoEEaoRoRFRFRtFttltftlPlplppxpbpbHrbbrrrrdrddrOrdOdOdwOwOwOGwGwwGGwCGwCGCGCCvMCCMCMCCBMMMB",
+"qyNyiqyNyNyNyyqyyNyqyyqyyyqIIyIycIcIcIAcAsAAAKsKKeKemkmkmkmQkEEQEoaoaoaFFRFFtRftftlPllllpxpxpbbHpbbrrrzrzrdJrOdOOdOjOOOwOwwwOGGwGG#GGCGCGCvCCvCMCCMhMCMBMh",
+"NyqyqyNyqyqyqyNyqyqyqyyIqIIyIcIcIIcIAsIAsAsAsAeAKeKkKkKmkmEQEQEQaoEaoaRFoRFRfttftPflPlPplpxppHpbbrHbbzrrzrdrdddddOOdwOwOwwOwGwGwGwCwCGGCGCCGCCCCMMCMMMMhMB",
+"yqyqyyqyqyqyqyqyyqyyIyqIyIyIcIIcIsAIcAsAAsAKKKKeeKmemmmkmQkQEQEoEaoaoFoFRFFtFtftftltlllpplpxbpbHbbbrrrzrdrdddJdOdOOOOjOwOwwwwwGwGGGGGCGCGCvCCGMMCMMhMBCBMB",
+"yyyyyqyyqyyqyyyqyyyIyIyIIcIcIIcIAIcAsAsAsKAeAKeKekKmkkmQkmQEQEoQaooaoaFRFRtFttftPlPllPplpxpxpbpbbHrbzrrrrdrdrOddOdjOwOwOwwOGOGwGw#GGCGCGCCGCCMCCMChCMMMhMB",
+"IqyqyyqyyyqyyqIIIIqIIIIcIIcIccIscAsAsAAAKAsKeeKekmekmmkmEEEQEEoaoaoaRFoFFFtftftltlPlPplpxpxpbbbHbrbrrzrdzddddddOOOOOOwOwO#wGGwGGGCw#GCGCvCCvMCMCMMMMBCBMBM",
+"IyIIIIIIIIIIIIyIyIIIyIcIccIcIcAIAsAsAAsKsKKeKeKmeKmkmkEmQQQEQaoEaoaRoFRFRtRFtftfltlPlplxpppbbpHbbbrbrrzrdrdrJOdOdOdwOwOwwwOwwGwwGwCGCGCGCCGCCCvMCMCMMhMhMB",
+"IIIyIyIyIyIyIyIcIcIccIcIcAIAcAsAsAsAsKKAeKeKekKkkmkmkmQkEEEQoEoaoaoFRFRtFftftftlPlllplppxxpbpbbbrHrzrzrdrddOddOOOjOOwOwOwwGwGwG#GGGCwCGCvCCMvMCMMMhMBMBMBh",
+"cIcIcIcIcIcIcIcIcIcIcIcIAscsAIAsAAsAKAKeKeKkeKmemkmkQmQEQEQoEoaoaoFRRFFRtFttltPltPpPlppxppbpbHbHrbrrrrdrdrOrdOddOdwOjOwOGOwwGwGGwCGGvGCGCCvCCCMCMCMhCMMhMB",
+"IcIcIcIcIcIcIcIcIcIAIAcAIAAsAsAsAsKAKseKeKeKmkkmkmmQmkEQEEoaEaoaaRaoFFtFftftfPtllllppxppxbpbbbbbrrzrzrdrdddOdOdOOOOwOwwO#wGwGwG#CwCGCCvCvCCCMCMCMMMBMBhBMh",
+"IAccIcIcIcIcIccIAIAscsAsAIsAsAsAAKAeKeKeKemkemkmmkQkEQEEQoQoaoaoFoFFFRtRttftltllPlPllppxppbHbpHrbbrrrdrddrddOdOOOjOOwwOwwwwGwGGwGGGCGCGCCCvCvMCMhCMMhMMMBB",
+"csAIAsAsAsAAsAsAcsAIAAsAsAAAAAKKsKKKeKeKkeKmkmkmkQmEQEQoEaoaoaoRRFRFRtfFftftPlPlPlppxpxpbbHprrbrrzrzrdrdrOOddOOjOwOwOwO#OGwGwG#CwCGGCGCGCGMCMCMMMMBCBMBMhB",
+"IAsAIAIsIAsIAIAIAsAsAsAsAsAsKsAKeAeeKeKemkmkmkmkQmEQEQEaQoEaoaFoRFRtFFtttftlfltPplplppxpHpbbbbrbbrzrrdrdOdddOdOOOOwOwOwwGwGwGGwGGGCGCvCvCCMCCMCMCMhMMhMBMB",
+"sAsAsAsAsAsAsAsAsAsAsAAAKAKKKeKeKeKeekmKkmkmkmQmEQEQEEoEaoaoaoRFaFFRttftftltlPlpllpxpxpbxbpbHrbrrrrdzdrdrOdOdOjOjOwOwwwOGwwGGGCwGCGCGCCCGMCCMCMMhMBMBMBhBu",
+"sAAsAsAAAsAAsAAsAAAAAsKsKKsAeKKeKeeKkKmkmkmkmmQEkEQEoQaooaoaRFoRFRFFfFtftftlPlPlplpxpbpbpbbrbrbrzrzrdrdOddOdOOOOOOwOwOwwwwGwGwGGGCGGCGCGCCMvCMMCMMCMMBMuMB",
+"AAsAAAAsAAAsAAsKAsKKAKKKeKeKeKeKekkmmemkmmkQmkEQEQEEoEoaoaoRoFRFFttRtftfftlPtllpPpxpxpbbHbHbbrrzrzrdrddrOddOOjOwOwOwO#wGOGGGw#CGCGCCvCvMCvCMMMCMhBMhhMBMBu",
+"KKAKKsAKKsAKAKKAKKKKKeAeKeKkKeeekKmKmkmkmkmQEEQEQEoQaoaoaoFaFRFFRFFtfttltlllllplpxpppbpbpbbrbrbrrrdrdrdddOdOdOOOwOwOwGOwGGwGwCwGGCGGCGCCMCMCCMMMMCBMBMBMBB",
+"eAeKKeKKKKKKeKAeKAeeKeKeKeeKkmkmKmkmkmkmQmEQQEQEooQaooaoaRoFRFRFttfttfftlPPlpPppxppxbxbHbrbbrzrzrdrddddOddOOjOwOwOwwwOGwGwGGGGGC#CGCCCvCGMCMMCMhMMMhBMhBuB",
+"eKeKeKKeKeeKeKeKeeeKeKeKeKmemkKkmkmkmkQQkEkEEQoEQEaEaoaFoaRFRFFRftFftftPltlPlllxppxpbpbpbHbrbrrzrzdrdrdJOdOdOOOOwOwOwwwwGwG#wCGGCGCvCGCCMCMCMhMMCBMBMBMBMB",
+"KeKeKeeKeKeKeKeKeKeKekkkmekmKmmkmmkQQmEQEQEQEEoQaooaoaoRFFFRFFtFtftftlllPllpppppxpxbpbbrbrbrrzrrdrdddOddOdOjOwOwOwO#wGwGwGGGCwGCGCGCvCCvCMCCMCMhBCMhBMBuBu",
+"kkKeeKeKeeKeKkKkkkkkKmKmkkmkmkkmmkEmmEkQEQEQoQaoaoaoaaFoFRRFFRtFfttltPtfllPllxlpxpbpbpbHbrbrzrrdrdrdrddOdOOOOdwOwOwwGOwwGw#wGGCGCGCGCCCMCMCMMMMMMhMBMMBMBB",
+"KmekmekekKmememKmKmemkmkmmkmmmmkQQmkEEQEQoEoaEoEaoaaoFRRFFFRttfttfftllllPlppppxpxpbbHbbrbrrrrzrzdrOddOddOOjOwOwOwwOwwGGGGGCGCGG#CGCCvCvCMCMMChMBMBMMBhBuBu",
+"ekmKkmkmkmkkkmkkmkmkmkmkmkmkmkQQEQEEQEQoEEaQoaoaoaoFRFoRFRFtFtFftPtfPltPplplxppxpbbpbHbHrbzrzrrdrdddJddOOdOOOjOwOw#OwwGwwGwGwCGCGCCGCCMCvMCMMMhCMMBMBuBMBB",
+"kmkmkmkmkmkmkmkmkmkmkmmkmQmQQEEmkEQEQEEoQooaooaaRoFRoFFFFttFftftftlltllplPpppxpxpbpbbrbrbrrrzrdrddrOdOOOdjOwOwOwwOGGwGwG#GCGCG#CvCvCMGMCMCMMCMBMBMhBMBMBuB",
+"mkmmmkmmkmmkmmkmmkmmmkQmQkQEkQEQEEQoEooEaEaoaoaoFaRFFRtRtRtfttftPltPllPllplxpxpbpHbbHbrbrrzrdrddrddOdddOOOOOwOwOwwwwwGwGGGGGGGCGCCGCCMCMCMChMhCMMBMMBuBuBB",
+"QQQkQmkmmkmmkQQmkQQkEQEQEQEQEEQEoQoEoaQaoaoaaaoFRoFRFFFtFfttfftlftllPplppxpxpxpbbbprbrbrrrzrzdrdddddOOOjOjwOwOwwOGwOGwG#GCwC#CGCGCCvCCCMCMMMMBMBhMBhBMBMBu",
+"EkmEkQQkQQkQQEkQEEQEmQkEQEQEEQoEQoEaQaoaoaoaoRFRRFFFRtRftFftftltllPllPlxppxpbpbbpbbHrbrbzrrdrrddrOdOdOdOOOOwOwOwwwGGGGwGwGGGCGCvCCvCCMvCMMCMhMMMMBuMBuBuBB",
+"QEQEQEQEQEQEmQEQmEQEQEEQEEQEoEaQaoaooaoaoRRFFoFRFFRFtFtFftftlPflPlplppppxpxpbxpbbbrbbrrrrzrzdrddOdJOdOOjOwOwOwwOGwwGwG#CGCGCGCGCGCCMvCMMMCMhBCBhBMBMBMBBuB",
+"EQEQEQEQEQEQEEQEEEQEEQEEQEoQaQooEaoaoaoaFoaoRFRFFRtFftftftftltltlPlPplxppxpbpbbHbHbrbzrzrdrdrddOrdOdOjOdwOwOwwOwGwGwGGwGwC#GCGCvCMGCCMCCMMMMMMMBMMBMBuBuBB",
+"QEEQEEQEEQEEQEQEQEEQooaooaoaooaoaoaaaoRFoFFFRFFFttFttftftPtlPllplpplpxppxpbHbpbbrbrbrrrzrzdrddrOdOdOOOOwOOwOwO#wO#wGGwCGGGCGCGCCvCMCMCMMMChBChMMBhBMBBuBBB",
+"EaoEoEoQoEoQoEoEoooEaEoQaoEoaoaoaoaoRFoRFRRRFtRtRttfttftltPltlPlPllpxppxpxbpbbbHbrbrrrzrrdrOrdOdOdOdOjOOwOjwOwwGGwGwGGG#GCGCGCCGCCvCMCMChMMMMBhBMBMBuuBBuL",
+"oQaoaoEaEoaEoaoaoaQaoaoaoaaoaaoRRoFFRFRFRFFFFtFtfFftftftlPlPlPlpppplpxxpbpbbHbrbrbrrzrzrdrddddddOdOOOOwOwOwwwwOGwGwG#CwCGGCGCvCCCGMCMCMMMMBCMMBMhBuBBBuBBB",
+"oaoaQoaooaEaoQaooaoaoaoaoaoaoaFoaRFoaRFRFFRttRfttftftltfPltlllplllxpxpxpxbHbpHbrbrbrzrrdzddrdOdOdOOjOjOwOwO#OwGwGwGGGwGGGCGCGCCvCMCMCMMChMMMhBMMBMBuMBuBuL",
+"oaoaoaoaaoaoaoaoaoaoaoaaoRFRFoFRFFRFFFFFttFtFttftftfltlllllpPplppxppxpbbpbbbrbrbrrzrrzdrdrddOddOOOOOOOwOwwOwGwwGwGGwCGCGCGCGCvCCCCMvMMCMMBCBMMBhBuBBBuBBBB",
+"FoaoaaaoaoaoaaoaaoRoaRoFFoRoRFRFRFFRtRttFRtfftftftltflPltlPlplppxppbpbbpbbHbbrbrzrrzrdrdrddddOdOdjdwOwOwOw#OwwGwGwG#GGwCGCGCvCCMvCCMCMMhMMhMhBMBMBMBMBBuBL",
+"aRaFaoRoRRoRoFaFoFaFRoFRaFFFRFFRFFFFtFtftfttftfftlPlPtlPpplplpxpxpxpbpbbbprbrbrrrzrzdrdddOrOOdOOOOOjOwOwwOwGwwGwG#GCwCG#CGCCCGCGMMCMMMCMBCBMBMuBMBuBuBuLBB",
+"RFoFoRFFoRFRFRoFRRFRFFFRFFRFFRFFRttRttFfttfftfltPltPllpllplpxppxpbpHbHbHbrbrbrbzrrdrdrdOrdOdOdOdOOwOwOwOwwwwwGwGGwGGGGCGCvCvCCCMCMCMCMMhMMMhMMBMBuBBuBLBBL",
+"RFRFFFRRFFaFRFFRFRoFRFRFRFFRFtFtFttftfttfftftltllPllPlPplppppxpxpbxpbpbbHrbrrzrrzrzdrddrOOdOdOOjOjOOwwOwwOGwGwGG#CwCGCGCGCGCCvMCCMCMMMBCBMBuBMBuBMBMLBuBLB",
+"RFtRFRFFFRFFFRFRFFtFRFtFtttttRttfFftftftftltlPlPllPllpplxlxpxpbpbpbbbrHrbrbzbrzrdrdrdddOddOdOdOOwOOwOwwOwGwGwGwGwGGGC#GCGCCvCCCvMCMChCMMMMBMBMBMBuBBuBLuBL",
+"tFRFtFRFFFFRFFFtRFtFtFtRtFtfFftfttftftfltlflPtllPllplplppxpxpxpbHbprbbbrbrrrrzrrzdrddrOddOdOOjOOOwwOwOw#wwO#GGG#GCGCGCGCCvCCCvMCMCMMMMBhBMMhBMBuBBuBBBBBLB",
+"fFtFtFtttttttttFtFtRfttftfFtfttftftftltfPltlllPlllpPpxpxppxpbpbbpHbbbHrbrbzrzrdrdrdrOdddOdOOOOjOwOwOwwGOwGGwGwGwCGGGGCGCvCCvCMCMCMMMMhMMhMBMBuBuBMBBuLuLBL",
+"ttfttttRtRtFtfRftftftfttftftftftfltlPllltlPlPlllpPppppxpxpxpbHpbbbrHrrbrrrrzrzrdrdOdddOdOOdjOjOOwOwwOwwGwGwGG#GCwGC#CGCvCCGMCMCMMMChBCBMBMuBMBMBBuBLBBBLBL",
+"tfttfftfftffttftttftftftftftftPltflPltPPlPlplpplpplxpxppxpbbpbbHbHbbrbrrrzrzrdrdddrdOddOdOOOwOOwOwwOw#OwwGwGGGGwCGCGCvCCGCMCCCMCCMMMMMCBhMBMBuBuBBuBuLuLBL",
+"ftffttftftftftftfftftftfftlltlftlltlPlllplpPplppxpxpxpxbpbbpbbbrbrrbrrzrzrzdrddrddOddOdOOjOOOwwOwOwwwGGGwGG#GCwGGCGCGCGCCCvCMMCMMMhBCuMMBMBMBMBBMBBBBBLBLL",
+"ltftffftftftfftfPtltltltlltPlPlllPlPlllPplplppxpxppxpbpHbpHbbHbHrbbrbrrzrrdrdrdddOddOdOdOOjOwOOwwwOGOwwwGwGwGwCGCGCGCvCCvCMCMCMMMMCMMBMBMBMBuBuBuBLuBLBLBg",
+"PlPtltlltltltlltlflPlPlPlPllPtlPlplplpplpppxpxppxpxpbxpbbbbbprbrbrrrzrzrzdrdrOdrOdOdOOOjOjOOwOwOwwwwGwGwG#GCG#GCGCGCCCvCMCCMCMMCMhBMMhBMhBMBMBBuBLuBLBuLLL",
+"ltllPltlPlPlPltPltltlfPlltlPlplplPlpPpPpplxpppxpxpbbpbbrpbHbrbrbrrrrzrrdrdrddddOddOdOdOdwOOwOwwwwOGwwGwGGwGwCGC#GCvCvCCGCMvCMCMhMMCBMBMMBMBuBBuBBBBLBLBLBg",
+"lPlPllPlPlPllPlllPllPtllPplllPplpplpppxpxppxxpxpbpbpbbpbrbrrbrrrrzrzrzrdrddrOdrOOdOOOjOOOwwOwOwOw#wO#wGG#GCwGCGCCGCCGCCMCMCMMMMMhBMMhBMBhBuBuBBBMLuBLBLLLL",
+"lllllPlPllPlPllPplpllppllplplplplpplxpxppxxppbpbpbHrbHbrbHbbrbzrzrrzrdrddrdddOdOdOOdOOjOwOOwOww#OwwGGGGwGGwCGGCGGCCvCCCMvCMCMCMMMMhMBMMBuBMBuBuBLBBLuLBLBg",
+"lpPlPllllPlllPplPlpPpllpPplpppxpxpxppxpxpxpbxbbbbbpbbbbHrrrrrrrzrzrdrddrOdOdddOdOOdjOjOOwOwwwOwwGGGwGw#GCG#GCGCGCGCCCvCCMMCMMMhBCBMBMBhBMBBuBBBuLBLBLBLgLL",
+"PplppppppppppplplplplppppppxlxpppxpxxpxpbpbpbpbpHbrHrbrrbrbzrzrrzrdrdrdOrdOrOOdOdjOOOwOwOwwOww#OwwGwGGGGwCGCGCGCCCCGCCMCMCMMCMMMMCBhMBMBuBuBBMBLBuBLBLLBLg",
+"pppplplplplplppppppxpxlxxpxppxpxxpbppbbpbbbbbbHbrbbbrHrbrzrrzrzrdrdddddddOdOOdOOOOjOwOwOwOwwO#wGGwG#G#CGGGCGCGCvCvCMCMCMCMMMhMBChBMMBMBuBuBuBLBuBLLBLLgLLg",
+"pxxpxpxpxpxpxpxpxpxpppxppxpxpxpxpbpbbpbbHbpHrprbbHrrbrrzrrrzrzrdrdrdrdrdddOdOOdjOOwOOwOwwwOwwGwwGwGwGGwCGC#GCvCCvCCvCMvCMMCMMMhMBMMBMBMBMBBBBuLBLBLBLBLBLg",
+"xppxpxpxpxpxpxpxpxpxxpxpxpxpbpbpbHbHpbHprbbrbrbrrbrbrrrrzrzrdrddrdOddOOdOOdOdOOOjOOwwOwOwwGwGwGwGG#GCwGGCGCCGCGCCCvMCMCMMMMhBCBMhBhBMBuBBuBMLBBuLBuLLgLgLL",
+"xpxpxpxpxpxpxpxpxpxpbpbpbbpbbbbbpbpbbbbbbbHbHrbbrrrrzrzrrdrdrddrddrdOdddOdOOjOjOOwOwOwOw#OwGOwGwGwGGG#GCGCGGCvCCGMCCMCMCMCMMMMMMBMBMBuBuBMBBLuBLBLLgBLBgLg",
+"bpbpbpbpbpbpbpbpbpbpbxpbHpbHpHprbbbHbrHrbrrrbrrrbzrzrrzrzrddrdrOddOddOOdOOOOOjOwOwOwwO#wOGGwGGGG#GCwCGCGCGCCCCvCMCCMCMMMMhBCBhBMhBMBuBBuBBuLBBLBLBLBLgLLgL",
+"pbbbbpbbpbbpbbpbHbbbpbbpbbbbbbbbbHbbHbrbrbbrrrbzrrzrrzrdrddrddddddddOdOOdOOjOwOOwOwwOwwwGwwwGwGwGG#GGCGC#CGCGCCvCMvCMCMCMMMhMMMBMBuBMBMBuBLBuLLuBLLLBLgLLg",
+"bbpbbbbpbbpbbpbbpbpbbHbbHbprbrHrHbrrrbrbrrrbzrzrrzrzdrdddrddrOddOdOOdOOdjOjOOOwwOwOwwwOGwGGw#GG#CwCGCGGCGCvCCvCCCMCMMMMMhBCBMBMhBMBMBuBBBBuBBLBLLLBgLgLLgL",
+"bHbbpbHbbHbbHrbHbbrbHbrbrbrbHbbrbrbbrrrrbrrzrzrrzrdrdrdrdOrOddOdJOdOOOjOOOOOwwOwOwwwOwGwGwwGGwGGGGC#GCGCvCCvCCMCMCMCMChMMMMMBhMBMBuBuBBMLuLBLuBLBgLLgLLgLg",
+"bbrHrbrHrbrHbbHrbHbbrbHbrHrbrrbrrrrrbrzrzzrrzrddrdrdrdddrdddddOdOOOdOOOjOwOwOOwwwOww#wwGwGGG#GCwCGGCGCvCCGCCCGMCvMMMMMMBCBMhMBMBMBMBBuBLBBuLBLLLLLBgLLgLgL",
+"rbrbrbrbrbrbrrbrbrrHrbrrbrbrbrrbrbrrrzrzrrzdrdrrddrddOrdddOdOOdOOdOOOjOOwOwOwwwOw#OGwwGwGwGwCGwCGGCGCGCCvCCvCMCMMMCMCMhMMCBMBMBMBuBBuBuBuLBBLBBgBLgLLgLgLg",
+"rbrbrbrbrbrbrbrbrbrrrrrbrrrzrrzrzrzzrrzrzrrdrdddrdddrdOdOddOddOOdOjOjOOwOwOwOwOwwwGwGwGGG#GGGGCG#CGCGCGCCCvMCMCMCMMMMBCBMBMhBMBuBMBuBBBBBBLBLBLLLgLgLLgLgL",
+"zrrrrrrrrrrrrrrrrrrbrbrrrzrrzrzrrzrrzdrdrddrddrddOrddOddOdOdOOOOOOOwOOwOwOwwww#OwGOGwGwGwGG#GCGGCGCGCvCCvCCCMCMCMMCMhMMMMhMBMBMBuBBuBLuLuBLuBLBLBLgLLgLgLg",
+"rrzrzrzrzrzrzrzrzrzrzzrzrrzrrrzrdrdrdrdrdrdddrddddOdOdOdOdOOOOOjOjOOwwOwOwwOwO#GwGGwGGG#G#CwCw#CGCvCCCvCCMCMCMCMMMMBCBMBhBMBhBuBBuBBBuBBLLBLLLgLgLLgLgLgLg",
+"rzrrzrrzrrzrrzrrzrrzrrzrzzrzdrdrdrddrdrddddrdddOrddOdOdOOOdOOjOOwOjwOwOwwOwOwGwwGwwGGwGwCGwCGGCGCGCCvCCvCCMCMCMMChMhMMhMBMBMBMBMBuLMBBLBLuLBLBLBLLgLLgLgLg",
+"zrzrzrzrzrzrzrzrzrzrzrdrdrdrdzrddrdrddddrOddOJddOOOdOOOOdOOjOOjOjwOOwOwwww#GwwwGwG#Gw#GGGCGGCGCvCCvCCCCMCvMCMMMMMBCBMBMBMuBuBuBBuBBBuLBLBLBLLgLgLgLgLgLgLg",
+"rdrdrdrdrdrdrdrdrdrdddrdrdrdrddrJdddOrJOddddddOOdOdOdOdOjOjOOwOwOwOwwwwOwOwGOGwGwGwGGGCGCGGCGCGCCvCvCGCCMMCMCMCMMMMMhMhMBMBMBMBuBBuBLBLuLBLBLBLLLgLLgLgLgg",
+"drddrddrddrddrddrdrdrddrdddddrOddrdddOddrOOOdOddOOOOOOjOOjOwOjOwOwwwOwww#Gww#GGGGG#GCwGGCGCGCGCvCGCCCMCMCCMMMMMhBCBMBMBuBMBuBBuBBuBLuBLBLLLgLgLgLLggLgLgLg",
+"ddrddrdddrddrddrdddddrddOrdrddddOdOJdddOOOdOdOOOdjOOjOOOwOOwOwOwwwwO#OwGOwGwGwGwGwCGGCGCGC#CvCGCCCMvCCMvMMCMCMCBMhMhMBMBMBMBuBBuBLBBBLBLBLBLBLgLgLgLgLgLgg"
+]
+
+img1=None
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples2/trolltech.bmp b/python/pyqt/examples2/trolltech.bmp
new file mode 100644
index 00000000..220861e2
--- /dev/null
+++ b/python/pyqt/examples2/trolltech.bmp
Binary files differ
diff --git a/python/pyqt/examples2/trolltech.gif b/python/pyqt/examples2/trolltech.gif
new file mode 100644
index 00000000..f674369e
--- /dev/null
+++ b/python/pyqt/examples2/trolltech.gif
Binary files differ
diff --git a/python/pyqt/examples2/tt-logo.png b/python/pyqt/examples2/tt-logo.png
new file mode 100644
index 00000000..a0d9e340
--- /dev/null
+++ b/python/pyqt/examples2/tt-logo.png
Binary files differ
diff --git a/python/pyqt/examples2/tut1.py b/python/pyqt/examples2/tut1.py
new file mode 100755
index 00000000..2eca8c5d
--- /dev/null
+++ b/python/pyqt/examples2/tut1.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+# Qt tutorial 1.
+
+import sys
+from qt import *
+
+
+a = QApplication(sys.argv)
+
+hello = QPushButton("Hello world!",None)
+hello.resize(100,30)
+
+a.setMainWidget(hello)
+hello.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut10.py b/python/pyqt/examples2/tut10.py
new file mode 100755
index 00000000..0470a85d
--- /dev/null
+++ b/python/pyqt/examples2/tut10.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+
+# Qt tutorial 10.
+
+import sys
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.f = 0
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(),0)
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def force(self):
+ return self.f
+
+ def setForce(self,newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(PYSIGNAL('forceChanged(int)'),(self.f,))
+
+ def paintEvent(self,ev):
+ if not ev.rect().intersects(self.cannonRect()):
+ return
+
+ cr = self.cannonRect()
+ pix = QPixmap(cr.size())
+ pix.fill(self,cr.topLeft())
+
+ p = QPainter(pix)
+
+ p.setBrush(Qt.blue)
+ p.setPen(Qt.NoPen)
+
+ p.translate(0,pix.height() - 1)
+ p.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ p.rotate(-self.ang)
+ p.drawRect(QRect(33,-4,15,8))
+ p.end()
+
+ p.begin(self)
+ p.drawPixmap(cr.topLeft(),pix)
+
+ def cannonRect(self):
+ r = QRect(0,0,50,50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange(self,'angle')
+ self.angle.setRange(5,70)
+
+ self.force = LCDRange(self,'force')
+ self.force.setRange(10,50)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ self.connect(self.force,PYSIGNAL('valueChanged(int)'),self.cannonField.setForce)
+ self.connect(self.cannonField,PYSIGNAL('forceChanged(int)'),self.force.setValue)
+
+ grid = QGridLayout(self,2,2,10)
+
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ leftBox = QVBoxLayout()
+
+ grid.addLayout(leftBox,1,0)
+
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,500,355)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut11.py b/python/pyqt/examples2/tut11.py
new file mode 100755
index 00000000..32fb436d
--- /dev/null
+++ b/python/pyqt/examples2/tut11.py
@@ -0,0 +1,213 @@
+#!/usr/bin/env python
+
+# Qt tutorial 11.
+
+import sys
+import math
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = QTimer(self,'movement handler')
+ self.connect(self.autoShootTimer,SIGNAL('timeout()'),self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ self.barrelRect = QRect(33,-4,15,8)
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(),0)
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def force(self):
+ return self.f
+
+ def setForce(self,newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(PYSIGNAL('forceChanged(int)'),(self.f,))
+
+ def shoot(self):
+ if self.autoShootTimer.isActive():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+
+ def moveShot(self):
+ r = QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ else:
+ r = r.unite(QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self,ev):
+ updateR = ev.rect()
+ p = QPainter(self)
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.autoShootTimer.isActive() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ def paintShot(self,p):
+ p.setBrush(Qt.black)
+ p.setPen(Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintCannon(self,p):
+ cr = self.cannonRect()
+ pix = QPixmap(cr.size())
+ pix.fill(self,cr.topLeft())
+
+ tmp = QPainter(pix)
+ tmp.setBrush(Qt.blue)
+ tmp.setPen(Qt.NoPen)
+
+ tmp.translate(0,pix.height() - 1)
+ tmp.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(),pix)
+
+ def cannonRect(self):
+ r = QRect(0,0,50,50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = QRect(0,0,6,6)
+ r.moveCenter(QPoint(x,self.height() - 1 - y))
+ return r
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange(self,'angle')
+ self.angle.setRange(5,70)
+
+ self.force = LCDRange(self,'force')
+ self.force.setRange(10,50)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ self.connect(self.force,PYSIGNAL('valueChanged(int)'),self.cannonField.setForce)
+ self.connect(self.cannonField,PYSIGNAL('forceChanged(int)'),self.force.setValue)
+
+ shoot = QPushButton('&Shoot',self,'shoot')
+ shoot.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(shoot,SIGNAL('clicked()'),self.cannonField.shoot)
+
+ grid = QGridLayout(self,2,2,10)
+
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ leftBox = QVBoxLayout()
+ grid.addLayout(leftBox,1,0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = QHBoxLayout()
+ grid.addLayout(topBox,0,1)
+ topBox.addWidget(shoot)
+ topBox.addStretch(1)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,500,355)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut12.py b/python/pyqt/examples2/tut12.py
new file mode 100755
index 00000000..65490cab
--- /dev/null
+++ b/python/pyqt/examples2/tut12.py
@@ -0,0 +1,252 @@
+#!/usr/bin/env python
+
+# Qt tutorial 12.
+
+import sys
+import math
+import random
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,s=None,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+
+ self.label = QLabel(' ',self,'label')
+ self.label.setAlignment(Qt.AlignCenter)
+
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self,s):
+ self.label.setText(s)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = QTimer(self,'movement handler')
+ self.connect(self.autoShootTimer,SIGNAL('timeout()'),self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = QPoint(0,0)
+
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ self.barrelRect = QRect(33,-4,15,8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(),0)
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def force(self):
+ return self.f
+
+ def setForce(self,newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(PYSIGNAL('forceChanged(int)'),(self.f,))
+
+ def shoot(self):
+ if self.autoShootTimer.isActive():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+
+ def newTarget(self):
+ r = QRegion(self.targetRect())
+ self.target = QPoint(random.randint(200,390),random.randint(10,265))
+ self.repaint(r.unite(QRegion(self.targetRect())))
+
+ def moveShot(self):
+ r = QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('hit()'),())
+ elif shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('missed()'),())
+ else:
+ r = r.unite(QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self,ev):
+ updateR = ev.rect()
+ p = QPainter(self)
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.autoShootTimer.isActive() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self,p):
+ p.setBrush(Qt.black)
+ p.setPen(Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self,p):
+ p.setBrush(Qt.red)
+ p.setPen(Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintCannon(self,p):
+ cr = self.cannonRect()
+ pix = QPixmap(cr.size())
+ pix.fill(self,cr.topLeft())
+
+ tmp = QPainter(pix)
+ tmp.setBrush(Qt.blue)
+ tmp.setPen(Qt.NoPen)
+
+ tmp.translate(0,pix.height() - 1)
+ tmp.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(),pix)
+
+ def cannonRect(self):
+ r = QRect(0,0,50,50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = QRect(0,0,6,6)
+ r.moveCenter(QPoint(x,self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = QRect(0,0,20,10)
+ r.moveCenter(QPoint(self.target.x(),self.height() - 1 - self.target.y()))
+ return r
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange('ANGLE',self,'angle')
+ self.angle.setRange(5,70)
+
+ self.force = LCDRange('FORCE',self,'force')
+ self.force.setRange(10,50)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ self.connect(self.force,PYSIGNAL('valueChanged(int)'),self.cannonField.setForce)
+ self.connect(self.cannonField,PYSIGNAL('forceChanged(int)'),self.force.setValue)
+
+ shoot = QPushButton('&Shoot',self,'shoot')
+ shoot.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(shoot,SIGNAL('clicked()'),self.cannonField.shoot)
+
+ grid = QGridLayout(self,2,2,10)
+
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ leftBox = QVBoxLayout()
+ grid.addLayout(leftBox,1,0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = QHBoxLayout()
+ grid.addLayout(topBox,0,1)
+ topBox.addWidget(shoot)
+ topBox.addStretch(1)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,500,355)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut13.py b/python/pyqt/examples2/tut13.py
new file mode 100755
index 00000000..7231a7ab
--- /dev/null
+++ b/python/pyqt/examples2/tut13.py
@@ -0,0 +1,329 @@
+#!/usr/bin/env python
+
+# Qt tutorial 13.
+
+import sys
+import math
+import random
+from qt import *
+
+
+class LCDRange(QWidget):
+ def __init__(self,s=None,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+
+ self.label = QLabel(' ',self,'label')
+ self.label.setAlignment(Qt.AlignCenter)
+
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ l = QVBoxLayout(self)
+ l.addWidget(lcd,1)
+ l.addWidget(self.slider)
+ l.addWidget(self.label)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self,s):
+ self.label.setText(s)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = QTimer(self,'movement handler')
+ self.connect(self.autoShootTimer,SIGNAL('timeout()'),self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = QPoint(0,0)
+ self.gameEnded = 0
+
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ self.barrelRect = QRect(33,-4,15,8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(),0)
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def force(self):
+ return self.f
+
+ def setForce(self,newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(PYSIGNAL('forceChanged(int)'),(self.f,))
+
+ def shoot(self):
+ if self.isShooting():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+ self.emit(PYSIGNAL('canShoot(bool)'),(0,))
+
+ def newTarget(self):
+ r = QRegion(self.targetRect())
+ self.target = QPoint(random.randint(200,390),random.randint(10,265))
+ self.repaint(r.unite(QRegion(self.targetRect())))
+
+ def gameOver(self):
+ return self.gameEnded
+
+ def setGameOver(self):
+ if self.gameEnded:
+ return
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 1
+ self.repaint()
+
+ def restartGame(self):
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 0
+ self.repaint()
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+
+ def moveShot(self):
+ r = QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('hit()'),())
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+ elif shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('missed()'),())
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+ else:
+ r = r.unite(QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self,ev):
+ updateR = ev.rect()
+ p = QPainter(self)
+
+ if self.gameEnded:
+ p.setPen(Qt.black)
+ p.setFont(QFont('Courier',48,QFont.Bold))
+ p.drawText(self.rect(),Qt.AlignCenter,'Game Over')
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.isShooting() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if not self.gameEnded and updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self,p):
+ p.setBrush(Qt.black)
+ p.setPen(Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self,p):
+ p.setBrush(Qt.red)
+ p.setPen(Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintCannon(self,p):
+ cr = self.cannonRect()
+ pix = QPixmap(cr.size())
+ pix.fill(self,cr.topLeft())
+
+ tmp = QPainter(pix)
+ tmp.setBrush(Qt.blue)
+ tmp.setPen(Qt.NoPen)
+
+ tmp.translate(0,pix.height() - 1)
+ tmp.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(),pix)
+
+ def cannonRect(self):
+ r = QRect(0,0,50,50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = QRect(0,0,6,6)
+ r.moveCenter(QPoint(x,self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = QRect(0,0,20,10)
+ r.moveCenter(QPoint(self.target.x(),self.height() - 1 - self.target.y()))
+ return r
+
+ def isShooting(self):
+ return self.autoShootTimer.isActive()
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class GameBoard(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange('ANGLE',self,'angle')
+ self.angle.setRange(5,70)
+
+ self.force = LCDRange('FORCE',self,'force')
+ self.force.setRange(10,50)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ self.connect(self.force,PYSIGNAL('valueChanged(int)'),self.cannonField.setForce)
+ self.connect(self.cannonField,PYSIGNAL('forceChanged(int)'),self.force.setValue)
+
+ self.connect(self.cannonField,PYSIGNAL('hit()'),self.hit)
+ self.connect(self.cannonField,PYSIGNAL('missed()'),self.missed)
+
+ self.shoot = QPushButton('&Shoot',self,'shoot')
+ self.shoot.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(self.shoot,SIGNAL('clicked()'),self.fire)
+ self.connect(self.cannonField,PYSIGNAL('canShoot(bool)'),self.shoot,SLOT('setEnabled(bool)'))
+
+ restart = QPushButton('&New Game',self,'newgame')
+ restart.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(restart,SIGNAL('clicked()'),self.newGame)
+
+ self.hits = QLCDNumber(2,self,'hits')
+ self.shotsLeft = QLCDNumber(2,self,'shotsleft')
+ hitsL = QLabel('HITS',self,'hitsLabel')
+ shotsLeftL = QLabel('SHOTS LEFT',self,'shotsleftLabel')
+
+ grid = QGridLayout(self,2,2,10)
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ leftBox = QVBoxLayout()
+ grid.addLayout(leftBox,1,0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = QHBoxLayout()
+ grid.addLayout(topBox,0,1)
+ topBox.addWidget(self.shoot)
+ topBox.addWidget(self.hits)
+ topBox.addWidget(hitsL)
+ topBox.addWidget(self.shotsLeft)
+ topBox.addWidget(shotsLeftL)
+ topBox.addStretch(1)
+ topBox.addWidget(restart)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+ self.newGame()
+
+ def fire(self):
+ if self.cannonField.gameOver() or self.cannonField.isShooting():
+ return
+ self.shotsLeft.display(self.shotsLeft.intValue() - 1)
+ self.cannonField.shoot()
+
+ def hit(self):
+ self.hits.display(self.hits.intValue() + 1)
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+ else:
+ self.cannonField.newTarget()
+
+ def missed(self):
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+
+ def newGame(self):
+ self.shotsLeft.display(15)
+ self.hits.display(0)
+ self.cannonField.restartGame()
+ self.cannonField.newTarget()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+gb = GameBoard()
+gb.setGeometry(100,100,500,355)
+a.setMainWidget(gb)
+gb.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut14.py b/python/pyqt/examples2/tut14.py
new file mode 100755
index 00000000..aeb4ca61
--- /dev/null
+++ b/python/pyqt/examples2/tut14.py
@@ -0,0 +1,377 @@
+#!/usr/bin/env python
+
+# Qt tutorial 14.
+
+import sys
+import math
+import random
+from qt import *
+
+
+class LCDRange(QWidget):
+ def __init__(self,s=None,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+
+ self.label = QLabel(' ',self,'label')
+ self.label.setAlignment(Qt.AlignCenter)
+
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ l = QVBoxLayout(self)
+ l.addWidget(lcd,1)
+ l.addWidget(self.slider)
+ l.addWidget(self.label)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self,s):
+ self.label.setText(s)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = QTimer(self,'movement handler')
+ self.connect(self.autoShootTimer,SIGNAL('timeout()'),self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = QPoint(0,0)
+ self.gameEnded = 0
+ self.barrelPressed = 0
+
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ self.barrelRect = QRect(33,-4,15,8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(),0)
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def force(self):
+ return self.f
+
+ def setForce(self,newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(PYSIGNAL('forceChanged(int)'),(self.f,))
+
+ def shoot(self):
+ if self.isShooting():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+ self.emit(PYSIGNAL('canShoot(bool)'),(0,))
+
+ def newTarget(self):
+ r = QRegion(self.targetRect())
+ self.target = QPoint(random.randint(200,390),random.randint(10,265))
+ self.repaint(r.unite(QRegion(self.targetRect())))
+
+ def gameOver(self):
+ return self.gameEnded
+
+ def setGameOver(self):
+ if self.gameEnded:
+ return
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 1
+ self.repaint()
+
+ def restartGame(self):
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 0
+ self.repaint()
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+
+ def moveShot(self):
+ r = QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('hit()'),())
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+ elif shotR.x() > self.width() or shotR.y() > self.height() or shotR.intersects(self.barrierRect()):
+ self.autoShootTimer.stop()
+ self.emit(PYSIGNAL('missed()'),())
+ self.emit(PYSIGNAL('canShoot(bool)'),(1,))
+ else:
+ r = r.unite(QRegion(shotR))
+
+ self.repaint(r)
+
+ def mousePressEvent(self,ev):
+ if ev.button() != Qt.LeftButton:
+ return
+ if self.barrelHit(ev.pos()):
+ self.barrelPressed = 1
+
+ def mouseMoveEvent(self,ev):
+ if not self.barrelPressed:
+ return
+ pnt = ev.pos()
+ if pnt.x() <= 0:
+ pnt.setX(1)
+ if pnt.y() >= self.height():
+ pnt.setY(self.height() - 1)
+ rad = math.atan(float(self.rect().bottom() - pnt.y()) / pnt.x())
+ self.setAngle(int(round(rad * 180 / math.pi)))
+
+ def mouseReleaseEvent(self,ev):
+ if ev.button() == Qt.LeftButton:
+ self.barrelPressed = 0
+
+ def paintEvent(self,ev):
+ updateR = ev.rect()
+ p = QPainter(self)
+
+ if self.gameEnded:
+ p.setPen(Qt.black)
+ p.setFont(QFont('Courier',48,QFont.Bold))
+ p.drawText(self.rect(),Qt.AlignCenter,'Game Over')
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if updateR.intersects(self.barrierRect()):
+ self.paintBarrier(p)
+
+ if self.isShooting() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if not self.gameEnded and updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self,p):
+ p.setBrush(Qt.black)
+ p.setPen(Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self,p):
+ p.setBrush(Qt.red)
+ p.setPen(Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintBarrier(self,p):
+ p.setBrush(Qt.yellow)
+ p.setPen(Qt.black)
+ p.drawRect(self.barrierRect())
+
+ def paintCannon(self,p):
+ cr = self.cannonRect()
+ pix = QPixmap(cr.size())
+ pix.fill(self,cr.topLeft())
+
+ tmp = QPainter(pix)
+ tmp.setBrush(Qt.blue)
+ tmp.setPen(Qt.NoPen)
+
+ tmp.translate(0,pix.height() - 1)
+ tmp.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(),pix)
+
+ def cannonRect(self):
+ r = QRect(0,0,50,50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * math.pi / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = QRect(0,0,6,6)
+ r.moveCenter(QPoint(x,self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = QRect(0,0,20,10)
+ r.moveCenter(QPoint(self.target.x(),self.height() - 1 - self.target.y()))
+ return r
+
+ def barrierRect(self):
+ return QRect(145,self.height() - 100,15,100)
+
+ def barrelHit(self,p):
+ mtx = QWMatrix()
+ mtx.translate(0,self.height() - 1)
+ mtx.rotate(-self.ang)
+ (mtx, invertable) = mtx.invert()
+ return self.barrelRect.contains(mtx.map(p))
+
+ def isShooting(self):
+ return self.autoShootTimer.isActive()
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class GameBoard(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange('ANGLE',self,'angle')
+ self.angle.setRange(5,70)
+
+ self.force = LCDRange('FORCE',self,'force')
+ self.force.setRange(10,50)
+
+ box = QVBox(self,'cannonFrame')
+ box.setFrameStyle(QFrame.WinPanel | QFrame.Sunken)
+
+ self.cannonField = CannonField(box,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ self.connect(self.force,PYSIGNAL('valueChanged(int)'),self.cannonField.setForce)
+ self.connect(self.cannonField,PYSIGNAL('forceChanged(int)'),self.force.setValue)
+
+ self.connect(self.cannonField,PYSIGNAL('hit()'),self.hit)
+ self.connect(self.cannonField,PYSIGNAL('missed()'),self.missed)
+
+ self.shoot = QPushButton('&Shoot',self,'shoot')
+ self.shoot.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(self.shoot,SIGNAL('clicked()'),self.fire)
+ self.connect(self.cannonField,PYSIGNAL('canShoot(bool)'),self.shoot,SLOT('setEnabled(bool)'))
+
+ restart = QPushButton('&New Game',self,'newgame')
+ restart.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(restart,SIGNAL('clicked()'),self.newGame)
+
+ self.hits = QLCDNumber(2,self,'hits')
+ self.shotsLeft = QLCDNumber(2,self,'shotsleft')
+ hitsL = QLabel('HITS',self,'hitsLabel')
+ shotsLeftL = QLabel('SHOTS LEFT',self,'shotsleftLabel')
+
+ accel = QAccel(self)
+ accel.connectItem(accel.insertItem(Qt.Key_Enter),self.fire)
+ accel.connectItem(accel.insertItem(Qt.Key_Return),self.fire)
+ accel.connectItem(accel.insertItem(Qt.CTRL + Qt.Key_Q),qApp,SLOT('quit()'))
+
+ grid = QGridLayout(self,2,2,10)
+ grid.addWidget(quit,0,0)
+ grid.addWidget(box,1,1)
+ grid.setColStretch(1,10)
+
+ leftBox = QVBoxLayout()
+ grid.addLayout(leftBox,1,0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = QHBoxLayout()
+ grid.addLayout(topBox,0,1)
+ topBox.addWidget(self.shoot)
+ topBox.addWidget(self.hits)
+ topBox.addWidget(hitsL)
+ topBox.addWidget(self.shotsLeft)
+ topBox.addWidget(shotsLeftL)
+ topBox.addStretch(1)
+ topBox.addWidget(restart)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+ self.newGame()
+
+ def fire(self):
+ if self.cannonField.gameOver() or self.cannonField.isShooting():
+ return
+ self.shotsLeft.display(self.shotsLeft.intValue() - 1)
+ self.cannonField.shoot()
+
+ def hit(self):
+ self.hits.display(self.hits.intValue() + 1)
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+ else:
+ self.cannonField.newTarget()
+
+ def missed(self):
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+
+ def newGame(self):
+ self.shotsLeft.display(15)
+ self.hits.display(0)
+ self.cannonField.restartGame()
+ self.cannonField.newTarget()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+gb = GameBoard()
+gb.setGeometry(100,100,500,355)
+a.setMainWidget(gb)
+gb.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut2.py b/python/pyqt/examples2/tut2.py
new file mode 100755
index 00000000..a31b7842
--- /dev/null
+++ b/python/pyqt/examples2/tut2.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+# Qt tutorial 2.
+
+import sys
+from qt import *
+
+
+a = QApplication(sys.argv)
+
+quit = QPushButton("Quit",None)
+quit.resize(75,30)
+quit.setFont(QFont("Times",18,QFont.Bold))
+
+QObject.connect(quit,SIGNAL("clicked()"),a,SLOT("quit()"))
+
+a.setMainWidget(quit)
+quit.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut3.py b/python/pyqt/examples2/tut3.py
new file mode 100755
index 00000000..2cc3576c
--- /dev/null
+++ b/python/pyqt/examples2/tut3.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+# Qt tutorial 3.
+
+import sys
+from qt import *
+
+a = QApplication(sys.argv)
+
+box = QVBox()
+box.resize(200,120)
+
+quit = QPushButton("Quit",box)
+quit.setFont(QFont("Times",18,QFont.Bold))
+
+QObject.connect(quit,SIGNAL("clicked()"),a,SLOT("quit()"))
+
+a.setMainWidget(box)
+box.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut4.py b/python/pyqt/examples2/tut4.py
new file mode 100755
index 00000000..23c44d0e
--- /dev/null
+++ b/python/pyqt/examples2/tut4.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Qt tutorial 4.
+
+import sys
+from qt import *
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.setMinimumSize(200,120)
+ self.setMaximumSize(200,120)
+
+ quit = QPushButton("Quit",self,"quit")
+ quit.setGeometry(62,40,75,30)
+ quit.setFont(QFont("Times",18,QFont.Bold))
+
+ self.connect(quit,SIGNAL("clicked()"),qApp,SLOT("quit()"))
+
+
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,200,120)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut5.py b/python/pyqt/examples2/tut5.py
new file mode 100755
index 00000000..01c20aa0
--- /dev/null
+++ b/python/pyqt/examples2/tut5.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+# Qt tutorial 5.
+
+import sys
+from qt import *
+
+
+class MyWidget(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ quit = QPushButton("Quit",self,"quit")
+ quit.setFont(QFont("Times",18,QFont.Bold))
+
+ self.connect(quit,SIGNAL("clicked()"),qApp,SLOT("quit()"))
+
+ lcd = QLCDNumber(2,self,"lcd")
+
+ slider = QSlider(Qt.Horizontal,self,"slider")
+ slider.setRange(0,99)
+ slider.setValue(0)
+
+ self.connect(slider,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))
+
+
+a = QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut6.py b/python/pyqt/examples2/tut6.py
new file mode 100755
index 00000000..38f07d8b
--- /dev/null
+++ b/python/pyqt/examples2/tut6.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+# Qt tutorial 6.
+
+import sys
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,"lcd")
+ slider = QSlider(Qt.Horizontal,self,"slider")
+ slider.setRange(0,99)
+ slider.setValue(0)
+ self.connect(slider,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))
+
+
+class MyWidget(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ quit = QPushButton("Quit",self,"quit")
+ quit.setFont(QFont("Times",18,QFont.Bold))
+
+ self.connect(quit,SIGNAL("clicked()"),qApp,SLOT("quit()"))
+
+ grid = QGrid(4,self)
+
+ for c in range(4):
+ for r in range(4):
+ LCDRange(grid)
+
+
+a = QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut7.py b/python/pyqt/examples2/tut7.py
new file mode 100755
index 00000000..d40ae749
--- /dev/null
+++ b/python/pyqt/examples2/tut7.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# Qt tutorial 7.
+
+import sys
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+
+class MyWidget(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ quit = QPushButton("Quit",self,"quit")
+ quit.setFont(QFont("Times",18,QFont.Bold))
+
+ self.connect(quit,SIGNAL("clicked()"),qApp,SLOT("quit()"))
+
+ grid = QGrid(4,self)
+
+ self.lcdlist = []
+ previous = None
+
+ for r in range(4):
+ for c in range(4):
+ lr = LCDRange(grid)
+
+ if previous is not None:
+ self.connect(lr,PYSIGNAL("valueChanged(int)"),previous.setValue)
+
+ previous = lr
+ self.lcdlist.append(lr)
+
+
+a = QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut8.py b/python/pyqt/examples2/tut8.py
new file mode 100755
index 00000000..045a4ef9
--- /dev/null
+++ b/python/pyqt/examples2/tut8.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+# Qt tutorial 8.
+
+import sys
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint()
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def paintEvent(self,ev):
+ p = QPainter(self)
+ p.drawText(200,200,'Angle = %d' % (self.ang))
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange(self,'angle')
+ self.angle.setRange(5,70)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ grid = QGridLayout(self,2,2,10)
+
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.angle,1,0,Qt.AlignTop)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ self.angle.setValue(60)
+ self.angle.setFocus()
+
+
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,500,355)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/tut9.py b/python/pyqt/examples2/tut9.py
new file mode 100755
index 00000000..16c7d697
--- /dev/null
+++ b/python/pyqt/examples2/tut9.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+
+# Qt tutorial 9.
+
+import sys
+from qt import *
+
+
+class LCDRange(QVBox):
+ def __init__(self,parent=None,name=None):
+ QVBox.__init__(self,parent,name)
+
+ lcd = QLCDNumber(2,self,'lcd')
+ self.slider = QSlider(Qt.Horizontal,self,'slider')
+ self.slider.setRange(0,99)
+ self.slider.setValue(0)
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
+ self.connect(self.slider,SIGNAL('valueChanged(int)'),self,PYSIGNAL('valueChanged(int)'))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self,value):
+ self.slider.setValue(value)
+
+ def setRange(self,minVal,maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, 'LCDRange.setRange(): invalid range'
+ self.slider.setRange(minVal,maxVal)
+
+
+class CannonField(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ self.ang = 45
+ self.setPalette(QPalette(QColor(250,250,200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self,degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint()
+ self.emit(PYSIGNAL('angleChanged(int)'),(self.ang,))
+
+ def paintEvent(self,ev):
+ p = QPainter(self)
+
+ p.setBrush(Qt.blue)
+ p.setPen(Qt.NoPen)
+
+ p.translate(0,self.rect().bottom())
+ p.drawPie(QRect(-35,-35,70,70),0,90 * 16)
+ p.rotate(-self.ang)
+ p.drawRect(QRect(33,-4,15,8))
+
+ def sizePolicy(self):
+ return QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
+
+
+class MyWidget(QWidget):
+ def __init__(self,parent=None,name=None):
+ QWidget.__init__(self,parent,name)
+
+ quit = QPushButton('&Quit',self,'quit')
+ quit.setFont(QFont('Times',18,QFont.Bold))
+ self.connect(quit,SIGNAL('clicked()'),qApp,SLOT('quit()'))
+
+ self.angle = LCDRange(self,'angle')
+ self.angle.setRange(5,70)
+
+ self.cannonField = CannonField(self,'cannonField')
+
+ self.connect(self.angle,PYSIGNAL('valueChanged(int)'),self.cannonField.setAngle)
+ self.connect(self.cannonField,PYSIGNAL('angleChanged(int)'),self.angle.setValue)
+
+ grid = QGridLayout(self,2,2,10)
+
+ grid.addWidget(quit,0,0)
+ grid.addWidget(self.angle,1,0,Qt.AlignTop)
+ grid.addWidget(self.cannonField,1,1)
+ grid.setColStretch(1,10)
+
+ self.angle.setValue(60)
+ self.angle.setFocus()
+
+
+QApplication.setColorSpec(QApplication.CustomColor)
+a = QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100,100,500,355)
+a.setMainWidget(w)
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples2/widgets.py b/python/pyqt/examples2/widgets.py
new file mode 100755
index 00000000..7b85ab35
--- /dev/null
+++ b/python/pyqt/examples2/widgets.py
@@ -0,0 +1,512 @@
+#!/usr/bin/env python
+
+
+import sys, string
+from qt import *
+
+#
+## Constructs an analog clock widget that uses an internal QTimer.
+#
+def QMIN( x, y ):
+ if y > x:
+ return y
+ return x
+
+#
+## Constructs an analog clock widget that uses an internal QTimer.
+#
+
+class AnalogClock( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+ self.time = QTime.currentTime() # get current time
+ internalTimer = QTimer( self ) # create internal timer
+ self.connect( internalTimer, SIGNAL("timeout()"), self.timeout )
+ internalTimer.start( 5000 ) # emit signal every 5 seconds
+
+#
+## The QTimer::timeout() signal is received by this slot.
+#
+
+ def timeout( self ):
+ new_time = QTime.currentTime() # get the current time
+ if new_time.minute() != self.time.minute(): # minute has changed
+ self.update()
+
+#
+## The clock is painted using a 1000x1000 square coordinate system.
+#
+ def paintEvent( self, qe ): # paint clock
+ if not self.isVisible(): # is is invisible
+ return
+ self.time = QTime.currentTime() # save current time
+
+ pts = QPointArray()
+ paint = QPainter( self )
+ paint.setBrush( self.foregroundColor() ) # fill with foreground color
+
+ cp = QPoint( self.rect().center() ) # widget center point
+ d = QMIN( self.width(), self.height() ) # we want a circular clock
+
+ matrix = QWMatrix() # setup transformation matrix
+ matrix.translate( cp.x(), cp.y() ) # origin at widget center
+ matrix.scale( d / 1000.0, d / 1000.0 ) # scale coordinate system
+
+ h_angle = 30 * ( self.time.hour() % 12 - 3 ) + self.time.minute() / 2
+ matrix.rotate( h_angle ) # rotate to draw hour hand
+ paint.setWorldMatrix( matrix )
+ pts.setPoints( [ -20,0, 0,-20, 300,0, 0,20 ] )
+ paint.drawPolygon( pts ) # draw hour hand
+ matrix.rotate( -h_angle ) # rotate back to zero
+
+ m_angle = ( self.time.minute() - 15 ) * 6
+ matrix.rotate( m_angle ) # rotate to draw minute hand
+ paint.setWorldMatrix( matrix )
+ pts.setPoints( [ -10,0, 0,-10, 400,0, 0,10 ] )
+ paint.drawPolygon( pts ) # draw minute hand
+ matrix.rotate( -m_angle ) # rotate back to zero
+
+ for i in range( 0, 12 ): # draw hour lines
+ paint.setWorldMatrix( matrix )
+ paint.drawLine( 450,0, 500,0 )
+ matrix.rotate( 30 )
+
+
+class DigitalClock( QLCDNumber ):
+ def __init__( self, *args ):
+ apply( QLCDNumber.__init__,(self,) + args )
+ self.showingColon = 0
+ self.setFrameStyle(QFrame.Panel | QFrame.Raised)
+ self.setLineWidth( 2 )
+ self.showTime()
+ self.normalTimer = self.startTimer( 500 )
+ self.showDateTimer = -1
+
+ def timerEvent( self, e ):
+ if e.timerId() == self.showDateTimer:
+ self.stopDate()
+ else:
+ if self.showDateTimer == -1:
+ self.showTime()
+
+ def mousePressEvent( self, e ):
+ if e.button() == Qt.LeftButton:
+ self.showDate()
+
+ def showDate( self ):
+ if self.showDateTimer != -1:
+ return
+ d = QDate.currentDate()
+ self.display('%2d %2d' % (d.month(), d.day()))
+ self.showDateTimer = self.startTimer(2000)
+
+ def stopDate( self ):
+ self.killTimer(self.showDateTimer)
+ self.showDateTimer = -1
+ self.showTime()
+
+ def showTime( self ):
+ self.showingColon = not self.showingColon
+ s = list(str(QTime.currentTime().toString())[:5]) #.left(5)
+ if not self.showingColon:
+ s[2] = ' '
+ if s[0] == '0':
+ s[0] = ' '
+ s = string.join(s,'')
+ self.display( s )
+
+ def QMIN( x, y ):
+ if y > x:
+ return y
+ return x
+
+TRUE = 1
+FALSE = 0
+MOVIEFILENAME = "trolltech.gif"
+
+#
+# WidgetView contains lots of Qt widgets.
+#
+
+class WidgetView ( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+
+ # Set the window caption/title
+ self.setCaption( "Qt Widgets Demo Application" )
+
+ # Install an application-global event filter
+ qApp.installEventFilter( self )
+
+ # Create a layout to position the widgets
+ self.topLayout = QVBoxLayout( self, 10 )
+
+ # Create a grid layout to hold most of the widgets
+ self.grid = QGridLayout( 6, 3 )
+
+ # This layout will get all of the stretch
+ self.topLayout.addLayout( self.grid, 10 )
+
+ # Create a menubar
+ self.menubar = QMenuBar( self )
+ #self.menubar.setSeparator( QMenuBar.InWindowsStyle )
+ self.menubar.setSeparator( 1 )
+
+ # Create an easter egg
+ QToolTip.add( self.menubar, QRect( 0, 0, 2, 2 ), "easter egg" )
+
+ self.popup = QPopupMenu()
+ self.id = self.popup.insertItem( "&New" )
+ self.popup.setItemEnabled( self.id, FALSE )
+ self.id = self.popup.insertItem( "&Open" )
+ self.popup.setItemEnabled( self.id, FALSE )
+ self.popup.insertSeparator()
+ self.popup.insertItem( "&Quit", qApp, SLOT("quit()"), Qt.CTRL+Qt.Key_Q )
+
+ self.menubar.insertItem( "&File", self.popup )
+
+ # Must tell the layout about a menubar in a widget
+ self.topLayout.setMenuBar( self.menubar )
+
+ # Create an analog and a digital clock
+ self.aclock = AnalogClock( self )
+ self.aclock.resize( 50, 50 )
+ self.dclock = DigitalClock( self )
+ self.dclock.setMaximumWidth( 200 )
+ self.grid.addWidget( self.aclock, 0, 2 )
+ self.grid.addWidget( self.dclock, 1, 2 )
+
+ # Give the dclock widget a blue palette
+ col = QColor()
+ col.setRgb( 0xaa, 0xbe, 0xff )
+ self.dclock.setPalette( QPalette( col ) )
+
+ # make tool tips for both of them
+ QToolTip.add( self.aclock, "custom widget: analog clock" )
+ QToolTip.add( self.dclock, "custom widget: digital clock" )
+
+ # Create a push button.
+ self.pb = QPushButton( self, "button1" ) # create button 1
+ self.pb.setText( "Push button 1" )
+ self.pb.setFixedHeight( self.pb.sizeHint().height() )
+ self.grid.addWidget( self.pb, 0, 0, Qt.AlignVCenter )
+ self.connect( self.pb, SIGNAL("clicked()"), self.button1Clicked )
+ QToolTip.add( self.pb, "push button 1" )
+ self.pm = QPixmap()
+ self.pix = self.pm.load( "qt.png" ) # load pixmap for button 2
+ if not self.pix:
+ QMessageBox.information( None, "Qt Widgets Example",
+ "Could not load the file \"qt.png\", which\n"
+ "contains an icon used...\n\n"
+ "The text \"line 42\" will be substituted.",
+ QMessageBox.Ok + QMessageBox.Default )
+
+ # Create a label containing a QMovie
+ self.movielabel = QLabel( self, "label0" )
+ self.movie = QMovie( MOVIEFILENAME )
+ self.movie.connectStatus( self.movieStatus )
+ self.movie.connectUpdate( self.movieUpdate )
+ self.movielabel.setFrameStyle( QFrame.Box | QFrame.Plain )
+ self.movielabel.setMovie( self.movie )
+ self.movielabel.setMargin( 0 )
+ self.movielabel.setFixedSize( 128 + self.movielabel.frameWidth() * 2,
+ 64 + self.movielabel.frameWidth() * 2 )
+ self.grid.addWidget( self.movielabel, 0, 1, Qt.AlignCenter )
+ QToolTip.add( self.movielabel, "movie" )
+
+ # Create a group of check boxes
+ self.bg = QButtonGroup( self, "checkGroup" )
+ self.bg.setTitle( "Check Boxes" )
+ self.grid.addWidget( self.bg, 1, 0 )
+
+ # Create a layout for the check boxes
+ self.vbox = QVBoxLayout(self.bg, 10)
+
+ self.vbox.addSpacing( self.bg.fontMetrics().height() )
+
+ self.cb = range(3)
+ self.cb[0] = QCheckBox( self.bg )
+ self.cb[0].setText( "Read" )
+ self.vbox.addWidget( self.cb[0] )
+ self.cb[0].setMinimumSize( self.cb[0].sizeHint() )
+ self.cb[1] = QCheckBox( self.bg )
+ self.cb[1].setText( "Write" )
+ self.vbox.addWidget( self.cb[1] )
+ self.cb[1].setMinimumSize( self.cb[1].sizeHint() )
+ self.cb[2] = QCheckBox( self.bg )
+ self.cb[2].setText( "Execute" )
+ self.cb[2].setMinimumSize( self.cb[2].sizeHint() )
+ self.vbox.addWidget( self.cb[2] )
+ self.bg.setMinimumSize( self.bg.childrenRect().size() )
+ self.vbox.activate()
+
+ self.connect( self.bg, SIGNAL("clicked(int)"), self.checkBoxClicked )
+
+ QToolTip.add( self.cb[0], "check box 1" )
+ QToolTip.add( self.cb[1], "check box 2" )
+ QToolTip.add( self.cb[2], "check box 3" )
+
+ # Create a group of radio buttons
+ self.bg = QButtonGroup( self, "radioGroup" )
+ self.bg.setTitle( "Radio buttons" )
+
+ self.grid.addWidget( self.bg, 1, 1 )
+
+ # Create a layout for the radio buttons
+ self.vbox = QVBoxLayout( self.bg, 10 )
+
+ self.vbox.addSpacing( self.bg.fontMetrics().height() )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&AM" )
+ self.rb.setChecked( TRUE )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ QToolTip.add( self.rb, "radio button 1" )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&FM" )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ QToolTip.add( self.rb, "radio button 2" )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&Short Wave" )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ self.vbox.activate()
+
+ self.connect( self.bg, SIGNAL("clicked(int)"), self.radioButtonClicked )
+ QToolTip.add( self.rb, "radio button 3" )
+
+ # Create a list box
+ self.lb = QListBox( self, "listBox" )
+ for i in range( 0, 100, 1 ): # fill list box
+ txt = QString()
+ txt = "line %d" % i
+ if i == 42 and self.pix:
+ self.lb.insertItem( self.pm )
+ else:
+ self.lb.insertItem( txt )
+
+ self.grid.addMultiCellWidget( self.lb, 2, 4, 0, 0 )
+ self.connect( self.lb, SIGNAL("selected(int)"), self.listBoxItemSelected )
+ QToolTip.add( self.lb, "list box" )
+
+ self.vbox = QVBoxLayout( 8 )
+ self.grid.addLayout( self.vbox, 2, 1 )
+
+ # Create a slider
+ self.sb = QSlider( 0, 300, 1, 100, QSlider.Horizontal, self, "Slider" )
+ #self.sb.setTickmarks( QSlider.Below )
+ self.sb.setTickmarks( 1 )
+ self.sb.setTickInterval( 10 )
+ #self.sb.setFocusPolicy( QWidget.TabFocus )
+ self.sb.setFocusPolicy( 1 )
+ self.sb.setFixedHeight( self.sb.sizeHint().height() )
+ self.vbox.addWidget( self.sb )
+
+ self.connect( self.sb, SIGNAL("valueChanged(int)"), self.sliderValueChanged )
+ QToolTip.add( self.sb, "slider" )
+
+ # Create a combo box
+ self.combo = QComboBox( FALSE, self, "comboBox" )
+ self.combo.insertItem( "darkBlue" )
+ self.combo.insertItem( "darkRed" )
+ self.combo.insertItem( "darkGreen" )
+ self.combo.insertItem( "blue" )
+ self.combo.insertItem( "red" )
+ self.combo.setFixedHeight( self.combo.sizeHint().height() )
+ self.vbox.addWidget( self.combo )
+ self.connect( self.combo, SIGNAL("activated(int)"), self.comboBoxItemActivated )
+ QToolTip.add( self.combo, "read-only combo box" )
+
+ # Create an editable combo box
+ self.edCombo = QComboBox( TRUE, self, "edComboBox" )
+ self.edCombo.insertItem( "Permutable" )
+ self.edCombo.insertItem( "Malleable" )
+ self.edCombo.insertItem( "Adaptable" )
+ self.edCombo.insertItem( "Alterable" )
+ self.edCombo.insertItem( "Inconstant" )
+ self.edCombo.setFixedHeight( self.edCombo.sizeHint().height() )
+ self.vbox.addWidget( self.edCombo )
+ self.connect( self.edCombo, SIGNAL("activated(const QString &)"), self.edComboBoxItemActivated)
+ QToolTip.add( self.edCombo, "editable combo box" )
+
+ self.edCombo.setAutoCompletion( TRUE )
+
+ self.vbox.addStretch( 1 )
+
+ self.vbox = QVBoxLayout( 8 )
+ self.grid.addLayout( self.vbox, 2, 2 )
+
+ # Create a spin box
+ self.spin = QSpinBox( 0, 10, 1, self, "spin" )
+ self.spin.setSuffix( " mm" )
+ self.spin.setSpecialValueText( "Auto" )
+ self.spin.setMinimumSize( self.spin.sizeHint() )
+ self.connect( self.spin, SIGNAL( "valueChanged(const QString &)" ), self.spinBoxValueChanged )
+ QToolTip.add( self.spin, "spin box" )
+ self.vbox.addWidget( self.spin )
+
+ self.vbox.addStretch( 1 )
+
+ # Create a multi line edit
+ self.mle = QMultiLineEdit( self, "multiLineEdit" )
+
+ self.grid.addMultiCellWidget( self.mle, 3, 3, 1, 2 )
+ self.mle.setMinimumHeight( self.mle.fontMetrics().height() * 3 )
+ self.mle.setText("This is a QMultiLineEdit widget,\n"
+ "useful for small multi-line\n"
+ "input fields.")
+ QToolTip.add( self.mle, "multi line editor" )
+
+ # Create a single line edit
+ self.le = QLineEdit( self, "lineEdit" )
+ self.grid.addMultiCellWidget( self.le, 4, 4, 1, 2 )
+ self.le.setFixedHeight( self.le.sizeHint().height() )
+ self.connect( self.le, SIGNAL("textChanged(const QString &)"), self.lineEditTextChanged )
+ QToolTip.add( self.le, "single line editor" )
+
+ # Create a horizontal line (sort of QFrame) above the message line
+ self.separator = QFrame( self, "separatorLine" )
+ self.separator.setFrameStyle( QFrame.HLine | QFrame.Sunken )
+ self.separator.setFixedHeight( self.separator.sizeHint().height() )
+ self.grid.addMultiCellWidget( self.separator, 5, 5, 0, 2 )
+ QToolTip.add( self.separator, "tool tips on a separator! wow!" )
+
+ self.grid.setRowStretch( 0, 0 )
+ self.grid.setRowStretch( 1, 0 )
+ self.grid.setRowStretch( 2, 0 )
+ self.grid.setRowStretch( 3, 1 )
+ self.grid.setRowStretch( 4, 1 )
+ self.grid.setRowStretch( 5, 0 )
+
+ self.grid.setColStretch( 0, 1 )
+ self.grid.setColStretch( 1, 1 )
+ self.grid.setColStretch( 2, 1 )
+
+ # Create an label and a message in a plain widget
+ # The message is updated when buttons are clicked etc.
+
+ self.hbox = QHBoxLayout()
+ self.topLayout.addLayout( self.hbox )
+ self.msgLabel = QLabel( self, "msgLabel" )
+ self.msgLabel.setText( "Message:" )
+ self.msgLabel.setAlignment( Qt.AlignHCenter | Qt.AlignVCenter )
+ self.msgLabel.setFixedSize( self.msgLabel.sizeHint() )
+ self.hbox.addWidget( self.msgLabel )
+ QToolTip.add( self.msgLabel, "label 1" )
+
+ self.msg = QLabel( self, "message" )
+ self.msg.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+ self.msg.setAlignment( Qt.AlignCenter )
+ self.msg.setFont( QFont( "times", 12, QFont.Bold ) )
+ self.msg.setText( "Message" )
+ self.msg.setFixedHeight( self.msg.sizeHint().height() )
+ self.msg.setText( "" )
+ self.hbox.addWidget( self.msg, 5 )
+ QToolTip.add( self.msg, "label 2" )
+
+ self.topLayout.activate()
+
+ def setStatus(self, text):
+ self.msg.setText( text )
+
+ def movieUpdate( self, r ):
+ # Uncomment this to test animated icons on your window manager
+ self.setIcon( self.movie.framePixmap() )
+
+ def movieStatus( self, s ):
+ if s == QMovie.SourceEmpty or s == QMovie.UnrecognizedFormat:
+ pm = QPixmap('tt-logo.png')
+ self.movielabel.setPixmap(pm)
+ self.movielabel.setFixedSize(pm.size())
+ else:
+ if ( self.movielabel.movie() ): # for flicker-free animation:
+ self.movielabel.setBackgroundMode( QWidget.NoBackground )
+
+ def button1Clicked( self ):
+ self.msg.setText( "The first push button was clicked" )
+
+ def checkBoxClicked( self, id ):
+ txt = QString()
+ txt = "Check box %s clicked : " % str(id)
+ chk = ["-","-","-"]
+ if self.cb[0].isChecked():
+ chk[0] = "r"
+ if self.cb[1].isChecked():
+ chk[1] = "w"
+ if self.cb[2].isChecked():
+ chk[2] = "x"
+ txt = txt + str(chk[0]+chk[1]+chk[2])
+ self.msg.setText( txt )
+
+ def edComboBoxItemActivated( self, text):
+ txt = QString()
+ txt = "Editable Combo Box set to %s" % text
+ self.msg.setText( txt )
+
+ def radioButtonClicked( self, id ):
+ txt = QString()
+ txt = "Radio button #%d clicked" % id
+ self.msg.setText( txt )
+
+ def listBoxItemSelected( self, index ):
+ txt = QString()
+ txt = "List box item %d selected" % index
+ self.msg.setText( txt )
+
+ def sliderValueChanged( self, value ):
+ txt = QString()
+ txt = "Movie set to %d%% of normal speed" % value
+ self.msg.setText( txt )
+ self.movie.setSpeed( value )
+
+ def comboBoxItemActivated( self, index ):
+ txt = QString()
+ txt = "Comboxo box item %d activated" % index
+ self.msg.setText( txt )
+ if index == 0:
+ QApplication.setWinStyleHighlightColor( Qt.darkBlue )
+ elif index == 1:
+ QApplication.setWinStyleHighlightColor( Qt.darkRed )
+ elif index == 2:
+ QApplication.setWinStyleHighlightColor( Qt.darkGreen )
+ elif index == 3:
+ QApplication.setWinStyleHighlightColor( Qt.blue )
+ elif index == 4:
+ QApplication.setWinStyleHighlightColor( Qt.red )
+
+ def lineEditTextChanged( self, newText ):
+ self.msg.setText("Line edit text: " + unicode(newText))
+
+ def spinBoxValueChanged( self, valueText ):
+ self.msg.setText("Spin box value: " + unicode(valueText))
+
+ # All application events are passed throught this event filter.
+ # We're using it to display some information about a clicked
+ # widget (right mouse button + CTRL).
+ #def eventFilter( self, event ):
+ # identify_now = TRUE
+ # if event.type() == Event_MouseButtonPress and identify_now:
+ # e = QMouseEvent( event )
+ # if (e.button() == Qt.RightButton) and (e.state() & Qt.ControlButton) != 0:
+ # txt = QString( "The clicked widget is a\n" )
+ # txt = txt + QObect.className()
+ # txt = txt + "\nThe widget's name is\n"
+ # if QObject.name():
+ # txt = txt + QObject.name()
+ # else:
+ # txt = txt + "<no name>"
+ # identify_now = FALSE # don't do it in message box
+ # QMessageBox.message( "Identify Widget", txt, 0, QObject )
+ # identify_now = TRUE; # allow it again
+ # return FALSE # don't eat event
+
+################################################################################################
+
+#QApplication.setColourSpec( QApplication.CustomColor )
+a = QApplication( sys.argv )
+
+w = WidgetView()
+a.setMainWidget( w )
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/README b/python/pyqt/examples3/README
new file mode 100644
index 00000000..4a8f9eb5
--- /dev/null
+++ b/python/pyqt/examples3/README
@@ -0,0 +1,12 @@
+To run these examples, make sure you have your PYTHONPATH environment variable
+set if needed and explicitly set the path to python at the top of each script
+if you don't have /usr/bin/env.
+
+The examples are written for Qt v3.x.
+
+A much better source of information about using PyQt is Boudewijn Rempt's
+book at http://stage.linuxports.com/projects/pyqt/.
+
+
+Phil Thompson
+phil@riverbankcomputing.co.uk
diff --git a/python/pyqt/examples3/SQL/README b/python/pyqt/examples3/SQL/README
new file mode 100644
index 00000000..9dfc5d41
--- /dev/null
+++ b/python/pyqt/examples3/SQL/README
@@ -0,0 +1,76 @@
+This directory contains some translated sql examples from Qt 3.x.
+
+runform1.py, form1.ui:
+
+ A simple designer generated QDataTable. Run "pyuic form1.ui -o form1.py".
+
+runform2.py, form2.ui:
+
+ A simple designer generated QDataBrowser. Run "pyuic form2.ui -o form2.py".
+
+sqlcustom1.py:
+
+ QSqlForm based form with a simple custom editor forcing all input to
+ be uppercase
+
+sqltable4.py:
+
+ Custom QDataTable with reimplemented paintField method, combined with
+ a QComboBox based custom field editor (StatusPicker), gathering its
+ items from a different table (status) and a calculated column (monsalary).
+ Note, that QSqlEditorFactory based field editors are somewhat restricted,
+ because Qt's Q_PROPERTY feature isn't supported, yet. I've circumvented
+ this limitation by choosing the status table ids corresponding to the
+ index in the QComboBox.
+
+sqlsubclass5.py:
+
+ Similar to the former, and even more deviated from its qt ancestor,
+ because the sense escaped me. This could be related to the different
+ database layout needed for MySQL (Trolltech used PostgreSQL sequences,
+ while we're using the simpler, but less powerful auto_increment here).
+ If you enter and invalid date (e.g. day: 0) in the Paid column, it is
+ shown as "not yet", but produces some qt warnings.
+
+runsqlex.py, sqlex.ui, sqlex.ui.h, connect.ui, connect.ui.h:
+
+ This one is a most advanced example, showing the use of a QSqlCursor
+ driven by QSqlQuery and iterating through database tables and fields.
+ Definitely worth a look.
+
+Unfortunately you will have to make sure that these prerequisites are met
+before trying the examples:
+
+ - Install MySQL or PostgreSQL and any development packages
+
+ - Create a database user with sufficient rights
+
+ - Create the testdb database
+ - For MySQL, run: mysql -u user -p password < testdb_mysql.sql
+ - For PostgreSQL, run: psql -U user template1 -f testdb_pg.sql
+
+ - Build Qt with the mysql and/or psql modules activated.
+
+Now you should be ready for the fun part. You can run dbconnect.py from
+a command line and try to connect to the database. If all went well,
+'ok' should be printed after pressing OK. If you don't want to enter all
+your data over and over again, create a file named local_dbpar.py here,
+with the following keys (with your own data, of course):
+
+DB_HOSTNAMES = ["localhost"]
+DB_DATABASES = ["testdb"]
+DB_USERNAME = "name"
+DB_PASSWORD = "pass"
+
+The dbconnect.py script is generated from dbconnect.ui, which was created
+with qt's designer. You can find it also in Boudewijn Rempt's book
+"GUI Programming with Python, using the Qt Toolkit". Although you won't find
+the SQL widgets discussed there, for the simple reason of the book being
+written before they appeared, it is a valuable source for anybody new in
+this area.
+
+Please direct any comments, patches and questions to <pykde@mats.gmd.de>.
+
+Good luck
+
+Hans-Peter Jansen <hpj@urpla.net>
diff --git a/python/pyqt/examples3/SQL/connect.ui b/python/pyqt/examples3/SQL/connect.ui
new file mode 100644
index 00000000..cc419203
--- /dev/null
+++ b/python/pyqt/examples3/SQL/connect.ui
@@ -0,0 +1,238 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>ConnectDialog</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>ConnectDialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>303</width>
+ <height>251</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Connect...</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>GroupBox3</cstring>
+ </property>
+ <property name="title">
+ <string>Connection settings</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit" row="1" column="1">
+ <property name="name">
+ <cstring>editDatabase</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>TextLabel3</cstring>
+ </property>
+ <property name="text">
+ <string>Database Name:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>comboDatabase</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="3" column="1">
+ <property name="name">
+ <cstring>editPassword</cstring>
+ </property>
+ <property name="echoMode">
+ <enum>Password</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>TextLabel4</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Username:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>editUsername</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>TextLabel4_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Password:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>editPassword</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="0" column="1">
+ <property name="name">
+ <cstring>comboDriver</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="2" column="1">
+ <property name="name">
+ <cstring>editUsername</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="4" column="1">
+ <property name="name">
+ <cstring>editHostname</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>TextLabel5</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Hostname:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>editHostname</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>TextLabel5_2</cstring>
+ </property>
+ <property name="text">
+ <string>P&amp;ort:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>portSpinBox</cstring>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="5" column="1">
+ <property name="name">
+ <cstring>portSpinBox</cstring>
+ </property>
+ <property name="specialValueText">
+ <string>Default</string>
+ </property>
+ <property name="maxValue">
+ <number>65535</number>
+ </property>
+ <property name="minValue">
+ <number>-1</number>
+ </property>
+ <property name="value">
+ <number>-1</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>D&amp;river</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>comboDriver</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout25</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButton1</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;OK</string>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButton2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>PushButton1</sender>
+ <signal>clicked()</signal>
+ <receiver>ConnectDialog</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>PushButton2</sender>
+ <signal>clicked()</signal>
+ <receiver>ConnectDialog</receiver>
+ <slot>reject()</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>comboDriver</tabstop>
+ <tabstop>editDatabase</tabstop>
+ <tabstop>editUsername</tabstop>
+ <tabstop>editPassword</tabstop>
+ <tabstop>editHostname</tabstop>
+ <tabstop>portSpinBox</tabstop>
+ <tabstop>PushButton1</tabstop>
+ <tabstop>PushButton2</tabstop>
+</tabstops>
+<includes>
+ <include location="local" impldecl="in implementation">connect.ui.h</include>
+</includes>
+<slots>
+ <slot>init()</slot>
+ <slot>destroy()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pyqt/examples3/SQL/connect.ui.h b/python/pyqt/examples3/SQL/connect.ui.h
new file mode 100644
index 00000000..cbeeabdc
--- /dev/null
+++ b/python/pyqt/examples3/SQL/connect.ui.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you wish to add, delete or rename slots use Qt Designer which will
+** update this file, preserving your code. Create an init() slot in place of
+** a constructor, and a destroy() slot in place of a destructor.
+*****************************************************************************/
+
+
+void ConnectDialog::init()
+{
+from qtsql import QSqlDatabase
+#qDebug("ConnectDialog init")
+self.comboDriver.clear()
+self.comboDriver.insertStringList(QSqlDatabase.drivers())
+}
+
+void ConnectDialog::destroy()
+{
+
+}
diff --git a/python/pyqt/examples3/SQL/dbconnect.py b/python/pyqt/examples3/SQL/dbconnect.py
new file mode 100755
index 00000000..fdae7de1
--- /dev/null
+++ b/python/pyqt/examples3/SQL/dbconnect.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+from qtsql import *
+
+from frmconnect import frmConnect
+from dbpar import *
+
+TRUE = 1
+FALSE = 0
+
+def createConnection():
+ driver = DB_DRIVER
+ # all qt examples use QSqlDatabase::addDatabase, but
+ # this never returns NULL in my experience
+ drivers = map(str, QSqlDatabase.drivers())
+ if driver in drivers:
+ dlg = dbConnect(driver)
+ #TODO: make connection parameters accessible
+ return dlg.exec_loop()
+ else:
+ QMessageBox.warning(None, "Database Error",
+ "<%s> database driver not found!\n\n"
+ "Please make sure, that this database adaptor\n"
+ "is available in your Qt installation.\n" %
+ (driver), QMessageBox.Abort | QMessageBox.Escape)
+ return FALSE
+
+class dbConnect(frmConnect):
+ def __init__(self, driver, parent = None):
+ frmConnect.__init__(self, parent)
+ self.hostnames = DB_HOSTNAMES
+ self.hostname = DB_HOSTNAMES[0]
+ self.databases = DB_DATABASES
+ self.database = DB_DATABASES[0]
+ self.username = DB_USERNAME
+ self.password = DB_PASSWORD
+ self.dbdriver = driver
+
+ self.txtName.setText(self.username)
+ self.txtPasswd.setText(self.password)
+ map(self.cmbServer.insertItem, self.hostnames)
+ map(self.cmbDatabase.insertItem, self.databases)
+ self.connect(self.buttonHelp, SIGNAL("clicked()"),
+ self.buttonHelp_clicked)
+
+ def accept(self):
+ self.hostname = self.cmbServer.currentText()
+ self.database = self.cmbDatabase.currentText()
+ self.username = self.txtName.text()
+ self.password = self.txtPasswd.text()
+ db = QSqlDatabase.addDatabase(self.dbdriver)
+ if db:
+ db.setHostName(self.hostname)
+ db.setDatabaseName(self.database)
+ db.setUserName(self.username)
+ db.setPassword(self.password)
+ if db.open():
+ frmConnect.accept(self)
+ else:
+ QMessageBox.warning(self, "Database Error",
+ "Cannot open %s database on %s!\n\n%s\n%s\n" %
+ (self.database, self.hostname,
+ db.lastError().driverText(),
+ db.lastError().databaseText()), " Ooops ")
+
+
+ def buttonHelp_clicked(self):
+ QMessageBox.information(self, "About Connecting",
+ "Here you specify userid, password, host and database\n"
+ "for the PyQt sql examples. If you encounter any problems,\n"
+ "please read the README file in this folder before posting.\n\n"
+ "Thanks,\nHans-Peter Jansen <hpj@urpla.net>\n")
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ if createConnection():
+ print "ok"
+ else:
+ print "cancel"
diff --git a/python/pyqt/examples3/SQL/dbpar.py b/python/pyqt/examples3/SQL/dbpar.py
new file mode 100644
index 00000000..90e92704
--- /dev/null
+++ b/python/pyqt/examples3/SQL/dbpar.py
@@ -0,0 +1,22 @@
+# sql examples default database parameter
+
+# you can create a local_dbpar.py module with definitons
+# of your own parameters to overrule these defaults
+
+#DB_DRIVER = "QPSQL7"
+DB_DRIVER = "QMYSQL3"
+# list of servers
+DB_HOSTNAMES = ["localhost"]
+# list of databases
+DB_DATABASES = ["testdb"]
+# database user id
+DB_USERNAME = ""
+# database password
+DB_PASSWORD = ""
+
+# remove this in your local_dbpar.py
+try:
+ from local_dbpar import *
+except:
+ pass
+
diff --git a/python/pyqt/examples3/SQL/form1.ui b/python/pyqt/examples3/SQL/form1.ui
new file mode 100644
index 00000000..38b3cb27
--- /dev/null
+++ b/python/pyqt/examples3/SQL/form1.ui
@@ -0,0 +1,77 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>Form1</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>Form1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>370</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <widget class="QDataTable">
+ <column>
+ <property name="text">
+ <string>Forename</string>
+ </property>
+ <property name="field">
+ <string>forename</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Surname</string>
+ </property>
+ <property name="field">
+ <string>surname</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Salary</string>
+ </property>
+ <property name="field">
+ <string>salary</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Statusid</string>
+ </property>
+ <property name="field">
+ <string>statusid</string>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>DataTable2</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>370</height>
+ </rect>
+ </property>
+ <property name="sorting">
+ <bool>true</bool>
+ </property>
+ <property name="confirmDelete">
+ <bool>true</bool>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ </stringlist>
+ </property>
+ </widget>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pyqt/examples3/SQL/form2.ui b/python/pyqt/examples3/SQL/form2.ui
new file mode 100644
index 00000000..ffe2beb5
--- /dev/null
+++ b/python/pyqt/examples3/SQL/form2.ui
@@ -0,0 +1,327 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>Form2</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>Form2</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>367</width>
+ <height>152</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form2</string>
+ </property>
+ <widget class="QDataBrowser">
+ <property name="name">
+ <cstring>DataBrowser1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>366</width>
+ <height>150</height>
+ </rect>
+ </property>
+ <property name="sort">
+ <stringlist>
+ <string>surname ASC</string>
+ <string>forename ASC</string>
+ </stringlist>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ </stringlist>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>Layout2</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelSurname</cstring>
+ </property>
+ <property name="text">
+ <string>Surname</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="1" column="3">
+ <property name="name">
+ <cstring>QSpinBoxStatusid</cstring>
+ </property>
+ <property name="maxValue">
+ <number>2147483647</number>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ <string>statusid</string>
+ </stringlist>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="1" column="1">
+ <property name="name">
+ <cstring>QLineEditSurname</cstring>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ <string>surname</string>
+ </stringlist>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="2">
+ <property name="name">
+ <cstring>labelStatusid</cstring>
+ </property>
+ <property name="text">
+ <string>Statusid</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelForename</cstring>
+ </property>
+ <property name="text">
+ <string>Forename</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="3">
+ <property name="name">
+ <cstring>QLineEditSalary</cstring>
+ </property>
+ <property name="alignment">
+ <set>AlignRight</set>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ <string>salary</string>
+ </stringlist>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="2">
+ <property name="name">
+ <cstring>labelSalary</cstring>
+ </property>
+ <property name="text">
+ <string>Salary</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>QLineEditForename</cstring>
+ </property>
+ <property name="database" stdset="0">
+ <stringlist>
+ <string>(default)</string>
+ <string>staff</string>
+ <string>forename</string>
+ </stringlist>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="0">
+ <property name="name">
+ <cstring>Layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonFirst</cstring>
+ </property>
+ <property name="text">
+ <string>|&lt; &amp;First</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonPrev</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;&lt; &amp;Prev</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonNext</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Next &gt;&gt;</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonLast</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Last &gt;|</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget" row="2" column="0">
+ <property name="name">
+ <cstring>Layout4</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonInsert</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Insert</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonUpdate</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Update</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButtonDelete</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Delete</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </grid>
+ </widget>
+</widget>
+<connections>
+ <connection>
+ <sender>PushButtonFirst</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>first()</slot>
+ </connection>
+ <connection>
+ <sender>DataBrowser1</sender>
+ <signal>firstRecordAvailable( bool )</signal>
+ <receiver>PushButtonFirst</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonPrev</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>prev()</slot>
+ </connection>
+ <connection>
+ <sender>DataBrowser1</sender>
+ <signal>prevRecordAvailable( bool )</signal>
+ <receiver>PushButtonPrev</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonNext</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>next()</slot>
+ </connection>
+ <connection>
+ <sender>DataBrowser1</sender>
+ <signal>nextRecordAvailable( bool )</signal>
+ <receiver>PushButtonNext</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonLast</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>last()</slot>
+ </connection>
+ <connection>
+ <sender>DataBrowser1</sender>
+ <signal>lastRecordAvailable( bool )</signal>
+ <receiver>PushButtonLast</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonInsert</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>insert()</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonUpdate</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>update()</slot>
+ </connection>
+ <connection>
+ <sender>PushButtonDelete</sender>
+ <signal>clicked()</signal>
+ <receiver>DataBrowser1</receiver>
+ <slot>del()</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>QLineEditForename</tabstop>
+ <tabstop>QLineEditSurname</tabstop>
+ <tabstop>QLineEditSalary</tabstop>
+ <tabstop>QSpinBoxStatusid</tabstop>
+ <tabstop>PushButtonFirst</tabstop>
+ <tabstop>PushButtonPrev</tabstop>
+ <tabstop>PushButtonNext</tabstop>
+ <tabstop>PushButtonLast</tabstop>
+ <tabstop>PushButtonInsert</tabstop>
+ <tabstop>PushButtonUpdate</tabstop>
+ <tabstop>PushButtonDelete</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pyqt/examples3/SQL/frmconnect.py b/python/pyqt/examples3/SQL/frmconnect.py
new file mode 100644
index 00000000..23cd0674
--- /dev/null
+++ b/python/pyqt/examples3/SQL/frmconnect.py
@@ -0,0 +1,120 @@
+# Form implementation generated from reading ui file 'frmconnect.ui'
+#
+# Created: Sam Jul 6 12:47:10 2002
+# by: The PyQt User Interface Compiler (pyuic)
+#
+# WARNING! All changes made in this file will be lost!
+
+
+from qt import *
+
+
+class frmConnect(QDialog):
+ def __init__(self,parent = None,name = None,modal = 0,fl = 0):
+ QDialog.__init__(self,parent,name,modal,fl)
+
+ if name == None:
+ self.setName("frmConnect")
+
+ self.resize(415,154)
+ self.setCaption(self.trUtf8("Connecting"))
+ self.setSizeGripEnabled(1)
+
+ frmConnectLayout = QGridLayout(self,1,1,11,6,"frmConnectLayout")
+
+ Layout7 = QVBoxLayout(None,0,6,"Layout7")
+
+ self.buttonOK = QPushButton(self,"buttonOK")
+ self.buttonOK.setText(self.trUtf8("&OK"))
+ self.buttonOK.setAutoDefault(1)
+ self.buttonOK.setDefault(1)
+ QToolTip.add(self.buttonOK,self.trUtf8("Connect to Database"))
+ Layout7.addWidget(self.buttonOK)
+
+ self.buttonCancel = QPushButton(self,"buttonCancel")
+ self.buttonCancel.setText(self.trUtf8("&Cancel"))
+ QToolTip.add(self.buttonCancel,self.trUtf8("Cancel Connecting"))
+ Layout7.addWidget(self.buttonCancel)
+
+ self.buttonHelp = QPushButton(self,"buttonHelp")
+ self.buttonHelp.setText(self.trUtf8("&Help"))
+ QToolTip.add(self.buttonHelp,self.trUtf8("About Connecting"))
+ Layout7.addWidget(self.buttonHelp)
+ spacer = QSpacerItem(0,0,QSizePolicy.Minimum,QSizePolicy.Expanding)
+ Layout7.addItem(spacer)
+
+ frmConnectLayout.addLayout(Layout7,0,1)
+
+ self.grpConnection = QGroupBox(self,"grpConnection")
+ self.grpConnection.setTitle(self.trUtf8(""))
+ self.grpConnection.setColumnLayout(0,Qt.Vertical)
+ self.grpConnection.layout().setSpacing(6)
+ self.grpConnection.layout().setMargin(11)
+ grpConnectionLayout = QGridLayout(self.grpConnection.layout())
+ grpConnectionLayout.setAlignment(Qt.AlignTop)
+
+ self.txtName = QLineEdit(self.grpConnection,"txtName")
+ self.txtName.setMaxLength(16)
+ QToolTip.add(self.txtName,self.trUtf8("Database User ID"))
+
+ grpConnectionLayout.addWidget(self.txtName,0,1)
+
+ self.lblDatabase = QLabel(self.grpConnection,"lblDatabase")
+ self.lblDatabase.setText(self.trUtf8("&Database"))
+
+ grpConnectionLayout.addWidget(self.lblDatabase,3,0)
+
+ self.lblServer = QLabel(self.grpConnection,"lblServer")
+ self.lblServer.setText(self.trUtf8("&Server"))
+
+ grpConnectionLayout.addWidget(self.lblServer,2,0)
+
+ self.lblName = QLabel(self.grpConnection,"lblName")
+ self.lblName.setText(self.trUtf8("&Name"))
+
+ grpConnectionLayout.addWidget(self.lblName,0,0)
+
+ self.cmbDatabase = QComboBox(0,self.grpConnection,"cmbDatabase")
+ self.cmbDatabase.setEditable(1)
+ self.cmbDatabase.setAutoCompletion(1)
+ self.cmbDatabase.setDuplicatesEnabled(0)
+ QToolTip.add(self.cmbDatabase,self.trUtf8("Database Name"))
+
+ grpConnectionLayout.addWidget(self.cmbDatabase,3,1)
+
+ self.txtPasswd = QLineEdit(self.grpConnection,"txtPasswd")
+ self.txtPasswd.setMaxLength(16)
+ self.txtPasswd.setEchoMode(QLineEdit.Password)
+ QToolTip.add(self.txtPasswd,self.trUtf8("Database User Password"))
+
+ grpConnectionLayout.addWidget(self.txtPasswd,1,1)
+
+ self.lblPasswd = QLabel(self.grpConnection,"lblPasswd")
+ self.lblPasswd.setText(self.trUtf8("&Password"))
+
+ grpConnectionLayout.addWidget(self.lblPasswd,1,0)
+
+ self.cmbServer = QComboBox(0,self.grpConnection,"cmbServer")
+ self.cmbServer.setEditable(1)
+ self.cmbServer.setAutoCompletion(1)
+ self.cmbServer.setDuplicatesEnabled(0)
+ QToolTip.add(self.cmbServer,self.trUtf8("Database Server Address"))
+
+ grpConnectionLayout.addWidget(self.cmbServer,2,1)
+
+ frmConnectLayout.addWidget(self.grpConnection,0,0)
+
+ self.connect(self.buttonOK,SIGNAL("clicked()"),self,SLOT("accept()"))
+ self.connect(self.buttonCancel,SIGNAL("clicked()"),self,SLOT("reject()"))
+
+ self.setTabOrder(self.txtName,self.txtPasswd)
+ self.setTabOrder(self.txtPasswd,self.cmbServer)
+ self.setTabOrder(self.cmbServer,self.cmbDatabase)
+ self.setTabOrder(self.cmbDatabase,self.buttonOK)
+ self.setTabOrder(self.buttonOK,self.buttonCancel)
+ self.setTabOrder(self.buttonCancel,self.buttonHelp)
+
+ self.lblDatabase.setBuddy(self.cmbDatabase)
+ self.lblServer.setBuddy(self.cmbServer)
+ self.lblName.setBuddy(self.txtName)
+ self.lblPasswd.setBuddy(self.txtPasswd)
diff --git a/python/pyqt/examples3/SQL/frmconnect.ui b/python/pyqt/examples3/SQL/frmconnect.ui
new file mode 100644
index 00000000..a6fc15cc
--- /dev/null
+++ b/python/pyqt/examples3/SQL/frmconnect.ui
@@ -0,0 +1,245 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>frmConnect</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>frmConnect</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>415</width>
+ <height>154</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Connecting</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>true</bool>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>Layout7</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonOK</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;OK</string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Connect to Database</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonCancel</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Cancel Connecting</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonHelp</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Help</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>About Connecting</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>grpConnection</cstring>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>txtName</cstring>
+ </property>
+ <property name="maxLength">
+ <number>16</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Database User ID</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>lblDatabase</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Database</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>cmbDatabase</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>lblServer</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Server</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>cmbServer</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>lblName</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Name</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>txtName</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="3" column="1">
+ <property name="name">
+ <cstring>cmbDatabase</cstring>
+ </property>
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ <property name="autoCompletion">
+ <bool>true</bool>
+ </property>
+ <property name="duplicatesEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Database Name</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="1" column="1">
+ <property name="name">
+ <cstring>txtPasswd</cstring>
+ </property>
+ <property name="maxLength">
+ <number>16</number>
+ </property>
+ <property name="echoMode">
+ <enum>Password</enum>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Database User Password</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>lblPasswd</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Password</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>txtPasswd</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="2" column="1">
+ <property name="name">
+ <cstring>cmbServer</cstring>
+ </property>
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ <property name="autoCompletion">
+ <bool>true</bool>
+ </property>
+ <property name="duplicatesEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Database Server Address</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>buttonOK</sender>
+ <signal>clicked()</signal>
+ <receiver>frmConnect</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>buttonCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>frmConnect</receiver>
+ <slot>reject()</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>txtName</tabstop>
+ <tabstop>txtPasswd</tabstop>
+ <tabstop>cmbServer</tabstop>
+ <tabstop>cmbDatabase</tabstop>
+ <tabstop>buttonOK</tabstop>
+ <tabstop>buttonCancel</tabstop>
+ <tabstop>buttonHelp</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pyqt/examples3/SQL/runform1.py b/python/pyqt/examples3/SQL/runform1.py
new file mode 100755
index 00000000..d5760ce1
--- /dev/null
+++ b/python/pyqt/examples3/SQL/runform1.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+from form1 import Form1
+from dbconnect import createConnection
+
+class mainWindow(Form1):
+ def __init__(self,parent = None,name = None,fl = 0):
+ Form1.__init__(self,parent,name,fl)
+
+if __name__ == "__main__":
+ a = QApplication(sys.argv)
+ if createConnection():
+ QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
+ w = mainWindow()
+ a.setMainWidget(w)
+ w.show()
+ a.exec_loop()
+
diff --git a/python/pyqt/examples3/SQL/runform2.py b/python/pyqt/examples3/SQL/runform2.py
new file mode 100755
index 00000000..ba0ca4a5
--- /dev/null
+++ b/python/pyqt/examples3/SQL/runform2.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+from form2 import Form2
+from dbconnect import createConnection
+
+class mainWindow(Form2):
+ def __init__(self,parent = None,name = None,fl = 0):
+ Form2.__init__(self,parent,name,fl)
+
+if __name__ == "__main__":
+ a = QApplication(sys.argv)
+ if createConnection():
+ QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
+ w = mainWindow()
+ a.setMainWidget(w)
+ w.show()
+ a.exec_loop()
+
diff --git a/python/pyqt/examples3/SQL/runsqlex.py b/python/pyqt/examples3/SQL/runsqlex.py
new file mode 100755
index 00000000..7f2afa71
--- /dev/null
+++ b/python/pyqt/examples3/SQL/runsqlex.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+from qtsql import *
+
+from sqlex import SqlEx
+from connect import ConnectDialog
+
+from dbpar import *
+
+TRUE = 1
+FALSE = 0
+
+def showError(err, parent):
+ errStr = QString("The database reported an error:\n\n")
+ if not err.databaseText().isEmpty():
+ errStr.append(err.databaseText())
+ errStr.append("\n")
+ if not err.driverText().isEmpty():
+ errStr.append(err.driverText())
+ errStr.append("\n")
+ QMessageBox.warning(parent, "Error", errStr)
+
+class CustomSqlCursor(QSqlCursor):
+ def __init__(self, query = None, autopopulate = TRUE, db = None):
+ QSqlCursor.__init__(self, None, autopopulate, db)
+ self.execQuery(query)
+ if self.isSelect() and autopopulate:
+ fields = self.driver().recordInfo(self)
+ for f in fields:
+ self.append(f)
+ self.setMode(QSqlCursor.ReadOnly)
+
+ def select(self, filter, sort = QSqlIndex()):
+ return self.execQuery(self.lastQuery())
+
+ def primaryIndex(self, prime = TRUE):
+ return QSqlIndex()
+
+ def insert(self, invalidate = TRUE):
+ return FALSE
+
+ def update(self, invalidate = TRUE):
+ return FALSE
+
+ def delRecords(self, invalidate = TRUE):
+ return FALSE
+
+ def setName(self, name, autopopulate = TRUE):
+ return
+
+
+class MainWindow(SqlEx):
+ def __init__(self,parent = None,name = None,fl = 0):
+ SqlEx.__init__(self,parent,name,fl)
+ self.conDiag = ConnectDialog(self, "Connection Dialog", TRUE)
+ self.firstconn = TRUE
+
+ def dbConnect(self):
+ if self.firstconn:
+ self.firstconn = FALSE
+ self.conDiag.editUsername.setText(DB_USERNAME)
+ self.conDiag.editPassword.setText(DB_PASSWORD)
+ self.conDiag.editHostname.setText(DB_HOSTNAMES[0])
+ self.conDiag.editDatabase.setText(DB_DATABASES[0])
+ for i in range(self.conDiag.comboDriver.count()):
+ if str(self.conDiag.comboDriver.text(i)) == DB_DRIVER:
+ self.conDiag.comboDriver.setCurrentItem(i)
+ break
+ if self.conDiag.exec_loop() != QDialog.Accepted:
+ return
+ if self.dt.sqlCursor():
+ self.dt.setSqlCursor()
+
+ # close old connection (if any)
+ if QSqlDatabase.contains("SqlEx"):
+ oldDb = QSqlDatabase.database("SqlEx")
+ oldDb.close()
+ QSqlDatabase.removeDatabase("SqlEx")
+
+ # open the new connection
+ db = QSqlDatabase.addDatabase(self.conDiag.comboDriver.currentText(), "SqlEx")
+ if not db:
+ QMessageBox.warning(self, "Error", "Could not open database")
+ return
+
+ db.setHostName(self.conDiag.editHostname.text())
+ db.setDatabaseName(self.conDiag.editDatabase.text())
+ db.setPort(self.conDiag.portSpinBox.value())
+ if not db.open(self.conDiag.editUsername.text(),
+ self.conDiag.editPassword.text()):
+ showError(db.lastError(), self)
+ return
+
+ self.lbl.setText("Double-Click on a table-name to view the contents")
+ self.lv.clear()
+
+ tables = db.tables()
+ for t in tables:
+ lvi = QListViewItem(self.lv, t)
+ fields = db.recordInfo(t)
+ for f in fields:
+ req = "?"
+ if f.isRequired() > 0:
+ req = "Yes"
+ elif f.isRequired() == 0:
+ req = "No"
+ fi = QListViewItem(lvi, f.name(), QVariant.typeToName(f.type()), req)
+ lvi.insertItem(fi)
+ self.lv.insertItem(lvi)
+
+ self.submitBtn.setEnabled(TRUE)
+
+ def execQuery(self):
+ cursor = CustomSqlCursor(self.te.text(), TRUE,
+ QSqlDatabase.database("SqlEx", TRUE))
+ if cursor.isSelect():
+ self.dt.setSqlCursor(cursor, TRUE, TRUE)
+ self.dt.refresh()
+ txt = QString("Query OK")
+ if cursor.size() >= 0:
+ txt.append(", returned rows: %s" % cursor.size())
+ self.lbl.setText(txt)
+ else:
+ if not cursor.isActive():
+ # an error occured
+ showError(cursor.lastError(), self)
+ else:
+ self.lbl.setText("Query OK, affected rows: %s" %
+ cursor.numRowsAffected())
+
+ def showTable(self, item):
+ i = item.parent()
+ if not i:
+ i = item
+ cursor = QSqlCursor(i.text(0), TRUE, QSqlDatabase.database("SqlEx", TRUE))
+ self.dt.setSqlCursor(cursor, TRUE, TRUE)
+ self.dt.setSort(cursor.primaryIndex())
+ self.dt.refresh(QDataTable.RefreshAll)
+ self.lbl.setText("Displaying table %s" % i.text(0))
+
+
+if __name__ == "__main__":
+ a = QApplication(sys.argv)
+ QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
+ w = MainWindow()
+ a.setMainWidget(w)
+ w.show()
+ a.exec_loop()
+
diff --git a/python/pyqt/examples3/SQL/sqlcustom1.py b/python/pyqt/examples3/SQL/sqlcustom1.py
new file mode 100755
index 00000000..46ca5801
--- /dev/null
+++ b/python/pyqt/examples3/SQL/sqlcustom1.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+from qtsql import *
+
+from dbconnect import createConnection
+
+TRUE = 1
+FALSE = 0
+
+class CustomEdit(QLineEdit):
+ def __init__(self, parent = None, name = None):
+ QLineEdit.__init__(self, parent, name)
+ QObject.connect(self, SIGNAL("textChanged(const QString &)"),
+ self.changed)
+
+ def changed(self, line):
+ self.setUpperLine(line)
+
+ def setUpperLine(self, line):
+ self.upperLineText = line.upper()
+ self.setText(self.upperLineText)
+
+
+class FormDialog(QDialog):
+ def __init__(self):
+ QDialog.__init__(self)
+ forenameLabel = QLabel("Forename:", self)
+ forenameEdit = CustomEdit(self)
+ surnameLabel = QLabel("Surname:", self)
+ surnameEdit = CustomEdit(self)
+ salaryLabel = QLabel("Salary:", self)
+ salaryEdit = QLineEdit(self)
+ salaryEdit.setAlignment(Qt.AlignRight)
+ saveButton = QPushButton("&Save", self)
+ self.connect(saveButton, SIGNAL("clicked()"), self.save)
+
+ grid = QGridLayout(self)
+ grid.addWidget(forenameLabel, 0, 0)
+ grid.addWidget(forenameEdit, 0, 1)
+ grid.addWidget(surnameLabel, 1, 0)
+ grid.addWidget(surnameEdit, 1, 1)
+ grid.addWidget(salaryLabel, 2, 0)
+ grid.addWidget(salaryEdit, 2, 1)
+ grid.addWidget(saveButton, 3, 0)
+ grid.activate()
+
+ self.staffCursor = QSqlCursor("staff")
+ self.staffCursor.setTrimmed("forename", TRUE)
+ self.staffCursor.setTrimmed("surname", TRUE)
+ self.idIndex = self.staffCursor.index("id")
+ self.staffCursor.select(self.idIndex)
+ self.staffCursor.first()
+
+ self.propMap = QSqlPropertyMap()
+ self.propMap.insert(forenameEdit.className(), "upperLine")
+
+ self.sqlForm = QSqlForm()
+ self.sqlForm.setRecord(self.staffCursor.primeUpdate())
+ self.sqlForm.installPropertyMap(self.propMap)
+ self.sqlForm.insert(forenameEdit, "forename")
+ self.sqlForm.insert(surnameEdit, "surname")
+ self.sqlForm.insert(salaryEdit, "salary")
+ self.sqlForm.readFields()
+
+ def save(self):
+ self.sqlForm.writeFields()
+ self.staffCursor.update()
+ self.staffCursor.select(self.idIndex)
+ self.staffCursor.first()
+
+
+if __name__=='__main__':
+ app = QApplication( sys.argv )
+
+ if createConnection():
+ formDialog = FormDialog()
+ formDialog.show()
+
+ app.setMainWidget(formDialog)
+ app.exec_loop()
+
+
diff --git a/python/pyqt/examples3/SQL/sqlex.ui b/python/pyqt/examples3/SQL/sqlex.ui
new file mode 100644
index 00000000..022fed93
--- /dev/null
+++ b/python/pyqt/examples3/SQL/sqlex.ui
@@ -0,0 +1,303 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>SqlEx</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>SqlEx</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>669</width>
+ <height>438</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>SQL Browser</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="1" column="0">
+ <property name="name">
+ <cstring>Layout23</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>lbl</cstring>
+ </property>
+ <property name="text">
+ <string>Press "Connect" to open a database</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>conBtn</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>80</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>&amp;Connect...</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QSplitter" row="0" column="0">
+ <property name="name">
+ <cstring>vsplit</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <widget class="QSplitter">
+ <property name="name">
+ <cstring>hsplit</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <widget class="QListView">
+ <column>
+ <property name="text">
+ <string>Tables</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Type</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Required</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>lv</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>true</bool>
+ </property>
+ <property name="resizeMode">
+ <enum>LastColumn</enum>
+ </property>
+ </widget>
+ <widget class="QDataTable">
+ <property name="name">
+ <cstring>dt</cstring>
+ </property>
+ <property name="frameworkCode" stdset="0">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>gb</cstring>
+ </property>
+ <property name="title">
+ <string>SQL Query</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>Layout22</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTextEdit">
+ <property name="name">
+ <cstring>te</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout21</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>submitBtn</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>80</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>&amp;Submit</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>clearBtn</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>80</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>C&amp;lear</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>clearBtn</sender>
+ <signal>clicked()</signal>
+ <receiver>te</receiver>
+ <slot>clear()</slot>
+ </connection>
+ <connection>
+ <sender>conBtn</sender>
+ <signal>clicked()</signal>
+ <receiver>SqlEx</receiver>
+ <slot>dbConnect()</slot>
+ </connection>
+ <connection>
+ <sender>lv</sender>
+ <signal>returnPressed(QListViewItem*)</signal>
+ <receiver>SqlEx</receiver>
+ <slot>showTable(QListViewItem*)</slot>
+ </connection>
+ <connection>
+ <sender>lv</sender>
+ <signal>doubleClicked(QListViewItem*)</signal>
+ <receiver>SqlEx</receiver>
+ <slot>showTable(QListViewItem*)</slot>
+ </connection>
+ <connection>
+ <sender>submitBtn</sender>
+ <signal>clicked()</signal>
+ <receiver>SqlEx</receiver>
+ <slot>execQuery()</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="local" impldecl="in implementation">sqlex.ui.h</include>
+</includes>
+<slots>
+ <slot>init()</slot>
+ <slot>dbConnect()</slot>
+ <slot>showTable( QListViewItem * )</slot>
+ <slot>execQuery()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/python/pyqt/examples3/SQL/sqlex.ui.h b/python/pyqt/examples3/SQL/sqlex.ui.h
new file mode 100644
index 00000000..1acdc5d4
--- /dev/null
+++ b/python/pyqt/examples3/SQL/sqlex.ui.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you wish to add, delete or rename slots use Qt Designer which will
+** update this file, preserving your code. Create an init() slot in place of
+** a constructor, and a destroy() slot in place of a destructor.
+*****************************************************************************/
+
+
+void SqlEx::init()
+{
+self.hsplit.setSizes([250])
+self.hsplit.setResizeMode(self.lv, QSplitter.KeepSize)
+self.vsplit.setResizeMode(self.gb, QSplitter.KeepSize)
+self.submitBtn.setEnabled(0)
+}
+
+
+void SqlEx::dbConnect()
+{
+
+}
+
+
+void SqlEx::showTable( QListViewItem * )
+{
+
+}
+
+
+
+void SqlEx::execQuery()
+{
+
+}
diff --git a/python/pyqt/examples3/SQL/sqlsubclass5.py b/python/pyqt/examples3/SQL/sqlsubclass5.py
new file mode 100755
index 00000000..a130e78a
--- /dev/null
+++ b/python/pyqt/examples3/SQL/sqlsubclass5.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+from qtsql import *
+
+from dbconnect import createConnection
+
+TRUE = 1
+FALSE = 0
+
+class CustomTable(QDataTable):
+ def __init__(self, cursor, autoPopulate = FALSE, parent = None, name = None):
+ QDataTable.__init__(self, cursor, autoPopulate, parent, name)
+
+ def paintField(self, p, field, cr, b):
+ if not field:
+ return
+ fn = str(field.name())
+ if fn == "pricesid":
+ query = QSqlQuery("SELECT name FROM prices WHERE id=%s" %
+ field.value().toString())
+ value = ""
+ if query.next():
+ value = query.value(0).toString()
+ p.drawText(2, 2, cr.width()-4, cr.height()-4,
+ self.fieldAlignment(field), value)
+ elif fn == "quantity":
+ p.drawText(2, 2, cr.width()-6, cr.height()-4,
+ Qt.AlignRight|Qt.AlignVCenter, field.value().toString())
+ elif fn in ("price", "cost"):
+ v = field.value().toDouble()
+ if v < 0:
+ p.setPen(QColor("red"))
+ value = QString(u"%.2f \u20ac" % v)
+ p.drawText(2, 2, cr.width()-6, cr.height()-4,
+ Qt.AlignRight|Qt.AlignVCenter, value)
+ elif fn == "paiddate":
+ if field.value().toDate().isNull():
+ v = QString("not yet")
+ p.setPen(QColor("red"))
+ else:
+ v = field.value().toDate().toString(Qt.LocalDate)
+ p.drawText(2, 2, cr.width()-4, cr.height()-4,
+ Qt.AlignHCenter|Qt.AlignVCenter, v)
+ else:
+ QDataTable.paintField(self, p, field, cr, b)
+
+
+class InvoiceItemCursor(QSqlCursor):
+ def __init__(self):
+ QSqlCursor.__init__(self, "invoiceitem")
+
+ productPrice = QSqlFieldInfo("price", QVariant.Double)
+ self.append(productPrice)
+ self.setCalculated(productPrice.name(), TRUE)
+
+ productCost = QSqlFieldInfo("cost", QVariant.Double)
+ self.append(productCost)
+ self.setCalculated(productCost.name(), TRUE)
+
+ def calculateField(self, name):
+ fn = str(name)
+ if fn == "productname":
+ query = QSqlQuery("SELECT name FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if query.next():
+ return query.value(0)
+ elif fn == "price":
+ query = QSqlQuery("SELECT price FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if query.next():
+ return query.value(0)
+ elif fn == "cost":
+ query = QSqlQuery("SELECT price FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if query.next():
+ return QVariant(query.value(0).toDouble() *
+ self.value("quantity").toDouble())
+ return QVariant(QString.null)
+
+ def primeInsert(self):
+ buffer = self.editBuffer()
+ buffer.setValue("id", QVariant(0))
+ buffer.setValue("paiddate", QVariant(QDate.currentDate()))
+ buffer.setValue("quantity", QVariant(1))
+ return buffer
+
+
+class ProductPicker(QComboBox):
+ def __init__(self, parent = None, name = None):
+ QComboBox.__init__(self, parent, name)
+ cur = QSqlCursor("prices")
+ cur.select(cur.index("id"))
+ while cur.next():
+ self.insertItem(cur.value("name").toString(), cur.value("id").toInt())
+
+
+class CustomSqlEditorFactory(QSqlEditorFactory):
+ def __init__(self):
+ QSqlEditorFactory.__init__(self)
+
+ def createEditor(self, parent, field):
+ try:
+ if str(field.name()) == "pricesid":
+ return ProductPicker(parent)
+ except AttributeError:
+ pass
+ return QSqlEditorFactory.createEditor(self, parent, field)
+
+class Table(CustomTable):
+ def __init__(self):
+ self.invoiceItemCursor = InvoiceItemCursor()
+ QDataTable.__init__(self, self.invoiceItemCursor)
+ self.propMap = QSqlPropertyMap()
+ self.editorFactory = CustomSqlEditorFactory()
+ self.propMap.insert("ProductPicker", "pricesid")
+ self.installPropertyMap(self.propMap)
+ self.installEditorFactory(self.editorFactory)
+
+ for cn, ch in (("pricesid", "Product"),
+ ("quantity", "Quantity"),
+ ("price", "Price" ),
+ ("cost", "Cost"),
+ ("paiddate", "Paid")):
+ self.addColumn(cn, ch)
+ self.setColumnWidth(0 , 150)
+ self.setColumnWidth(1, 70)
+ self.resize(600, 250)
+ self.refresh()
+
+
+if __name__=='__main__':
+ app = QApplication(sys.argv)
+ if createConnection():
+ t = Table()
+ app.setMainWidget(t)
+ t.show()
+ app.exec_loop()
+
+
diff --git a/python/pyqt/examples3/SQL/sqltable4.py b/python/pyqt/examples3/SQL/sqltable4.py
new file mode 100755
index 00000000..4fa6ed06
--- /dev/null
+++ b/python/pyqt/examples3/SQL/sqltable4.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+from qtsql import *
+
+from dbconnect import createConnection
+
+TRUE = 1
+FALSE = 0
+
+class CustomTable(QDataTable):
+ def __init__(self, cursor, autoPopulate = FALSE, parent = None, name = None):
+ QDataTable.__init__(self, cursor, autoPopulate, parent, name)
+
+ def paintField(self, p, field, cr, b):
+ if not field:
+ return
+ fn = str(field.name())
+ if fn in ("salary", "monsalary"):
+ v = field.value().toDouble()
+ if v < 0:
+ p.setPen(QColor("red"))
+ value = QString(u"%.2f \u20ac" % v)
+ #print unicode(value).encode("iso-8859-15")
+ p.drawText(2, 2, cr.width()-6, cr.height()-4,
+ Qt.AlignRight|Qt.AlignVCenter, value)
+ elif fn == "statusid":
+ query = QSqlQuery("SELECT name FROM status WHERE id=%s" %
+ field.value().toString())
+ value = ""
+ if query.next():
+ value = query.value(0).toString()
+ p.drawText(2, 2, cr.width()-4, cr.height()-4,
+ self.fieldAlignment(field), value)
+ else:
+ QDataTable.paintField(self, p, field, cr, b)
+
+
+class StatusPicker(QComboBox):
+ def __init__(self, parent = None, name = None):
+ QComboBox.__init__(self, parent, name)
+ cur = QSqlCursor("status")
+ cur.select(cur.index("id"))
+ while cur.next():
+ self.insertItem(cur.value("name").toString(), cur.value("id").toInt())
+
+
+class CustomSqlEditorFactory(QSqlEditorFactory):
+ def __init__(self):
+ QSqlEditorFactory.__init__(self)
+
+ def createEditor(self, parent, field):
+ try:
+ if str(field.name()) == "statusid":
+ return StatusPicker(parent)
+ except AttributeError:
+ pass
+ return QSqlEditorFactory.createEditor(self, parent, field)
+
+
+class StaffCursor(QSqlCursor):
+ def __init__(self):
+ QSqlCursor.__init__(self, "staff")
+ monSalary = QSqlFieldInfo("monsalary", QVariant.Double)
+ self.append(monSalary)
+ self.setCalculated(monSalary.name(), TRUE)
+
+ def calculateField(self, name):
+ if str(name) == "monsalary":
+ return QVariant(self.value("salary").toDouble() / 12)
+ return QVariant(QString.null)
+
+
+class Table(CustomTable):
+ def __init__(self):
+ #self.staffCursor = QSqlCursor("staff")
+ self.staffCursor = StaffCursor()
+ QDataTable.__init__(self, self.staffCursor)
+ self.propMap = QSqlPropertyMap()
+ self.editorFactory = CustomSqlEditorFactory()
+ self.propMap.insert("StatusPicker", "statusid")
+ self.installPropertyMap(self.propMap)
+ self.installEditorFactory(self.editorFactory)
+ for cn, ch in (("forename", "Forename"),
+ ("surname", "Surname" ),
+ ("salary", "Annual Salary"),
+ ("monsalary","Monthly Salary"),
+ ("statusid", "Status")):
+ self.addColumn(cn, ch)
+ self.order = QStringList("surname")
+ self.order.append("forename")
+ self.setSort(self.order)
+ self.refresh()
+
+
+if __name__=='__main__':
+ app = QApplication(sys.argv)
+ #app.setFont(QFont("Verdana", 11))
+
+ if createConnection():
+ t = Table()
+ app.setMainWidget(t)
+ t.resize(600, 250)
+ t.show()
+ app.exec_loop()
+
+
diff --git a/python/pyqt/examples3/SQL/testdb_mysql.sql b/python/pyqt/examples3/SQL/testdb_mysql.sql
new file mode 100644
index 00000000..144d4c90
--- /dev/null
+++ b/python/pyqt/examples3/SQL/testdb_mysql.sql
@@ -0,0 +1,57 @@
+drop database testdb;
+create database testdb;
+use testdb;
+
+create table people (id integer primary key auto_increment,
+ name char(40));
+
+create table staff (id integer primary key auto_increment,
+ forename char(40),
+ surname char(40),
+ salary float(10,2),
+ statusid integer);
+
+create table status (id integer primary key,
+ name char(30));
+
+create table creditors (id integer primary key auto_increment,
+ forename char(40),
+ surname char(40),
+ city char(30));
+
+create table prices (id integer primary key,
+ name char(40),
+ price float);
+
+create table invoiceitem (id integer primary key auto_increment,
+ pricesid integer,
+ quantity integer,
+ paiddate date);
+
+insert into staff (forename, surname, salary, statusid) values
+ ("Hugo", "Hurtig", 123450.50, 0),
+ ("Alfred E.", "Neumann", 56780.90, 1),
+ ("Agate", "Schnell-Fertig", 12340.56, 2),
+ ("Emil", "Dotterschreck", -5670.23, 3),
+ ("Eugen", "Nutzlos", -7833.56, 3),
+ ("Harald", "Schmidt", -150000.0, 3),
+ ("Urmel", "auf dem Eis", 7778.0, 2);
+
+insert into status (id, name) values
+ (0, 'Chief'),
+ (1, 'Programmer'),
+ (2, 'Secretary'),
+ (3, 'Driver');
+
+insert into prices (id, name, price) values
+ (0, "Waschbecken", 150.25),
+ (1, "Wellensittich", 27.95),
+ (2, "Roter Papagei", 850.0),
+ (3, "Spam & Eggs", -7.50),
+ (4, "Renault Espace", 9000.0),
+ (5, "Tux, der Pinguin", 65.35),
+ (6, "Makroskop", 985000.0),
+ (7, "Regenbaum", 1235.65),
+ (8, "Bluterguß", 23.95),
+ (9, "Weltmeisterschaft", 2.95),
+ (10, "Premiere Dekoder", -185.75);
diff --git a/python/pyqt/examples3/SQL/testdb_pg.sql b/python/pyqt/examples3/SQL/testdb_pg.sql
new file mode 100644
index 00000000..73a42703
--- /dev/null
+++ b/python/pyqt/examples3/SQL/testdb_pg.sql
@@ -0,0 +1,232 @@
+--
+-- Selected TOC Entries:
+--
+--
+-- TOC Entry ID 1 (OID 0)
+--
+-- Name: testdb Type: DATABASE Owner: postgres
+--
+
+CREATE DATABASE "testdb";
+
+\connect testdb postgres
+--
+-- TOC Entry ID 16 (OID 17332)
+--
+-- Name: people Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "people" (
+ "id" integer DEFAULT nextval('people_id_seq'::text) NOT NULL,
+ "name" character(40),
+ Constraint "people_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 17 (OID 17335)
+--
+-- Name: staff Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "staff" (
+ "id" integer DEFAULT nextval('staff_id_seq'::text) NOT NULL,
+ "forename" character(40),
+ "surname" character(40),
+ "salary" money,
+ "statusid" integer,
+ Constraint "staff_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 18 (OID 17338)
+--
+-- Name: status Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "status" (
+ "id" integer NOT NULL,
+ "name" character(30),
+ Constraint "status_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 19 (OID 17341)
+--
+-- Name: creditors Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "creditors" (
+ "id" integer DEFAULT nextval('creditors_id_seq'::text) NOT NULL,
+ "forename" character(40),
+ "surname" character(40),
+ "city" character(30),
+ Constraint "creditors_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 20 (OID 17344)
+--
+-- Name: prices Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "prices" (
+ "id" integer NOT NULL,
+ "name" character(40),
+ "price" real,
+ Constraint "prices_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 21 (OID 17347)
+--
+-- Name: invoiceitem Type: TABLE Owner: postgres
+--
+
+CREATE TABLE "invoiceitem" (
+ "id" integer DEFAULT nextval('invoice_id_seq'::text) NOT NULL,
+ "pricesid" integer,
+ "quantity" integer,
+ "paiddate" date,
+ Constraint "invoiceitem_pkey" Primary Key ("id")
+);
+
+--
+-- TOC Entry ID 2 (OID 17351)
+--
+-- Name: people_id_seq Type: SEQUENCE Owner: postgres
+--
+
+CREATE SEQUENCE "people_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
+
+--
+-- TOC Entry ID 4 (OID 17353)
+--
+-- Name: staff_id_seq Type: SEQUENCE Owner: postgres
+--
+
+CREATE SEQUENCE "staff_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
+
+--
+-- TOC Entry ID 6 (OID 17355)
+--
+-- Name: creditors_id_seq Type: SEQUENCE Owner: postgres
+--
+
+CREATE SEQUENCE "creditors_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
+
+--
+-- TOC Entry ID 8 (OID 17357)
+--
+-- Name: invoice_id_seq Type: SEQUENCE Owner: postgres
+--
+
+CREATE SEQUENCE "invoice_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
+
+--
+-- Data for TOC Entry ID 28 (OID 17332)
+--
+-- Name: people Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "people" FROM stdin;
+\.
+--
+-- Data for TOC Entry ID 29 (OID 17335)
+--
+-- Name: staff Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "staff" FROM stdin;
+1 Hugo Hurtig $123,450.50 0
+2 Alfred E. Neumann $56,780.90 1
+3 Agate Schnell-Fertig $12,340.56 2
+6 Eugen Nutzlos -$7,833.56 3
+7 Harald Schmidt -$150,000.00 3
+4 Urmel auf dem Eis $7,778.00 2
+5 Emil Dotterschreck -$5,670.23 3
+\.
+--
+-- Data for TOC Entry ID 30 (OID 17338)
+--
+-- Name: status Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "status" FROM stdin;
+0 Chief
+1 Programmer
+2 Secretary
+3 Driver
+\.
+--
+-- Data for TOC Entry ID 31 (OID 17341)
+--
+-- Name: creditors Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "creditors" FROM stdin;
+\.
+--
+-- Data for TOC Entry ID 32 (OID 17344)
+--
+-- Name: prices Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "prices" FROM stdin;
+0 Waschbecken 150.25
+1 Wellensittich 27.95
+2 Roter Papagei 850
+3 Spam & Eggs -7.5
+4 Renault Espace 9000
+5 Tux, der Pinguin 65.35
+6 Makroskop 985000
+7 Regenbaum 1235.65
+8 Bluterguß 23.95
+9 Weltmeisterschaft 2.95
+10 Premiere Dekoder -185.75
+\.
+--
+-- Data for TOC Entry ID 33 (OID 17347)
+--
+-- Name: invoiceitem Type: TABLE DATA Owner: postgres
+--
+
+
+COPY "invoiceitem" FROM stdin;
+\.
+--
+-- TOC Entry ID 3 (OID 17351)
+--
+-- Name: people_id_seq Type: SEQUENCE SET Owner: postgres
+--
+
+SELECT setval ('"people_id_seq"', 1, false);
+
+--
+-- TOC Entry ID 5 (OID 17353)
+--
+-- Name: staff_id_seq Type: SEQUENCE SET Owner: postgres
+--
+
+SELECT setval ('"staff_id_seq"', 8, true);
+
+--
+-- TOC Entry ID 7 (OID 17355)
+--
+-- Name: creditors_id_seq Type: SEQUENCE SET Owner: postgres
+--
+
+SELECT setval ('"creditors_id_seq"', 1, false);
+
+--
+-- TOC Entry ID 9 (OID 17357)
+--
+-- Name: invoice_id_seq Type: SEQUENCE SET Owner: postgres
+--
+
+SELECT setval ('"invoice_id_seq"', 1, false);
+
diff --git a/python/pyqt/examples3/aclock.py b/python/pyqt/examples3/aclock.py
new file mode 100755
index 00000000..38ed36c9
--- /dev/null
+++ b/python/pyqt/examples3/aclock.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+def QMIN(x, y):
+ if y > x: return y
+ return x
+class AnalogClock(QWidget):
+ def __init__(self, *args):
+ apply(QWidget.__init__,(self,) + args)
+ self.time = QTime.currentTime()
+ internalTimer = QTimer(self)
+ self.connect(internalTimer, SIGNAL("timeout()"), self.timeout)
+ internalTimer.start(5000)
+
+ def timeout(self):
+ new_time = QTime.currentTime()
+ if new_time.minute() != self.time.minute():
+ self.update()
+
+ def paintEvent(self, qe):
+ if not self.isVisible():
+ return
+ self.time = QTime.currentTime()
+
+ pts = QPointArray()
+ paint = QPainter(self)
+ paint.setBrush(self.foregroundColor())
+
+ cp = QPoint(self.rect().center())
+ d = QMIN(self.width(), self.height())
+ matrix = QWMatrix()
+ matrix.translate(cp.x(), cp.y())
+ matrix.scale(d/1000.0, d/1000.0)
+
+ h_angle = 30*(self.time.hour()%12 - 3) + self.time.minute()/2
+ matrix.rotate(h_angle)
+ paint.setWorldMatrix(matrix)
+ pts.setPoints([-20,0,0,-20,300,0,0,20])
+ paint.drawPolygon(pts)
+ matrix.rotate(-h_angle)
+
+ m_angle = (self.time.minute()-15)*6
+ matrix.rotate(m_angle)
+ paint.setWorldMatrix(matrix)
+ pts.setPoints([-10,0,0,-10,400,0,0,10])
+ paint.drawPolygon(pts)
+ matrix.rotate(-m_angle)
+
+ for i in range(0,12):
+ paint.setWorldMatrix(matrix)
+ paint.drawLine(450,0, 500,0)
+ matrix.rotate(30)
+
+a = QApplication(sys.argv)
+clock = AnalogClock()
+clock.resize(100,100)
+a.setMainWidget(clock)
+clock.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/addressbook.py b/python/pyqt/examples3/addressbook.py
new file mode 100755
index 00000000..d7316e33
--- /dev/null
+++ b/python/pyqt/examples3/addressbook.py
@@ -0,0 +1,457 @@
+#!/usr/bin/env python
+
+# A port to PyQt of the application example from Qt v2.x.
+
+
+import sys, string
+from qt import *
+
+TRUE = 1
+FALSE = 0
+fileopen = [
+' 16 13 5 1',
+'. c #040404',
+'# c #808304',
+'a c None',
+'b c #f3f704',
+'c c #f3f7f3',
+'aaaaaaaaa...aaaa',
+'aaaaaaaa.aaa.a.a',
+'aaaaaaaaaaaaa..a',
+'a...aaaaaaaa...a',
+'.bcb.......aaaaa',
+'.cbcbcbcbc.aaaaa',
+'.bcbcbcbcb.aaaaa',
+'.cbcb...........',
+'.bcb.#########.a',
+'.cb.#########.aa',
+'.b.#########.aaa',
+'..#########.aaaa',
+'...........aaaaa'
+]
+
+filesave = [
+' 14 14 4 1',
+'. c #040404',
+'# c #808304',
+'a c #bfc2bf',
+'b c None',
+'..............',
+'.#.aaaaaaaa.a.',
+'.#.aaaaaaaa...',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.#.aaaaaaaa.#.',
+'.##........##.',
+'.############.',
+'.##.........#.',
+'.##......aa.#.',
+'.##......aa.#.',
+'.##......aa.#.',
+'b.............'
+]
+
+fileprint = [
+' 16 14 6 1',
+'. c #000000',
+'# c #848284',
+'a c #c6c3c6',
+'b c #ffff00',
+'c c #ffffff',
+'d c None',
+'ddddd.........dd',
+'dddd.cccccccc.dd',
+'dddd.c.....c.ddd',
+'ddd.cccccccc.ddd',
+'ddd.c.....c....d',
+'dd.cccccccc.a.a.',
+'d..........a.a..',
+'.aaaaaaaaaa.a.a.',
+'.............aa.',
+'.aaaaaa###aa.a.d',
+'.aaaaaabbbaa...d',
+'.............a.d',
+'d.aaaaaaaaa.a.dd',
+'dd...........ddd'
+]
+
+class ABCentralWidget( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self, ) + args )
+ self.mainGrid = QGridLayout( self, 2, 1, 5, 5 )
+
+ self.setupTabWidget()
+ self.setupListView()
+
+ self.mainGrid.setRowStretch( 0, 0 )
+ self.mainGrid.setRowStretch( 1, 1 )
+
+ def save( self, filename ):
+ if not self.listView.firstChild():
+ return
+
+ f = QFile( filename )
+ if not f.open( IO_WriteOnly ):
+ return
+
+ t = QTextStream( f )
+
+ #it = QListViewItemIterator( self.listView )
+
+ while not t.eof():
+ item = QListViewItem( self.listView )
+ for i in range (0, 4):
+ t << item.text( i ) << '\n'
+ #for it in it.current():
+ #for i in range (0, 4):
+ #t << it.current().text[ i ] << "\n"
+
+ f.close()
+
+
+ def load( self, filename ):
+ self.listView.clear()
+
+ f = QFile( filename )
+ if not f.open( IO_ReadOnly ):
+ return
+
+ t = QTextStream( f )
+
+ while not t.eof():
+ item = QListViewItem( self.listView )
+ for i in range (0, 4):
+ item.setText( i, t.readLine() )
+
+ f.close();
+
+
+ def setupTabWidget( self ):
+ self.tabWidget = QTabWidget( self )
+
+ self.input = QWidget( self.tabWidget )
+ self.grid1 = QGridLayout( self.input, 2, 5, 5, 5 )
+
+ self.liFirstName = QLabel( 'First &Name', self.input )
+ self.liFirstName.resize( self.liFirstName.sizeHint() )
+ self.grid1.addWidget( self.liFirstName, 0, 0 )
+
+ self.liLastName = QLabel( '&Last Name', self.input )
+ self.liLastName.resize( self.liLastName.sizeHint() )
+ self.grid1.addWidget( self.liLastName, 0, 1 )
+
+ self.liAddress = QLabel( '&Address', self.input )
+ self.liAddress.resize( self.liAddress.sizeHint() )
+ self.grid1.addWidget( self.liAddress, 0, 2 )
+
+ self.liEMail = QLabel( '&E-Mail', self.input )
+ self.liEMail.resize( self.liEMail.sizeHint() )
+ self.grid1.addWidget( self.liEMail, 0, 3 )
+
+ self.add = QPushButton( '&Add', self.input )
+ self.add.resize( self.add.sizeHint() )
+ self.grid1.addWidget( self.add, 0, 4 )
+ self.connect( self.add, SIGNAL( 'clicked()' ), self.addEntry )
+
+ self.iFirstName = QLineEdit( self.input )
+ self.iFirstName.resize( self.iFirstName.sizeHint() )
+ self.grid1.addWidget( self.iFirstName, 1, 0 )
+ self.liFirstName.setBuddy( self.iFirstName )
+
+ self.iLastName = QLineEdit( self.input )
+ self.iLastName.resize( self.iLastName.sizeHint() )
+ self.grid1.addWidget( self.iLastName, 1, 1 )
+ self.liLastName.setBuddy( self.iLastName )
+
+ self.iAddress = QLineEdit( self.input )
+ self.iAddress.resize( self.iAddress.sizeHint() )
+ self.grid1.addWidget( self.iAddress, 1, 2 )
+ self.liAddress.setBuddy( self.iAddress )
+
+ self.iEMail = QLineEdit( self.input )
+ self.iEMail.resize( self.iEMail.sizeHint() )
+ self.grid1.addWidget( self.iEMail, 1, 3 )
+ self.liEMail.setBuddy( self.iEMail )
+
+ self.change = QPushButton( '&Change', self.input )
+ self.change.resize( self.change.sizeHint() )
+ self.grid1.addWidget( self.change, 1, 4 )
+ self.connect( self.change, SIGNAL( 'clicked()' ), self.changeEntry )
+
+ self.tabWidget.addTab( self.input, '&Add/Change Entry' )
+
+ # --------------------------------------
+
+ self.search = QWidget( self )
+ self.grid2 = QGridLayout( self.search, 2, 5, 5, 5 )
+
+ self.cFirstName = QCheckBox( 'First &Name', self.search )
+ self.cFirstName.resize( self.cFirstName.sizeHint() )
+ self.grid2.addWidget( self.cFirstName, 0, 0 )
+ self.connect( self.cFirstName, SIGNAL( 'clicked()' ), self.toggleFirstName )
+
+ self.cLastName = QCheckBox( '&Last Name', self.search )
+ self.cLastName.resize( self.cLastName.sizeHint() )
+ self.grid2.addWidget( self.cLastName, 0, 1 )
+ self.connect( self.cLastName, SIGNAL( 'clicked()' ), self.toggleLastName )
+
+ self.cAddress = QCheckBox( '&Address', self.search )
+ self.cAddress.resize( self.cAddress.sizeHint() )
+ self.grid2.addWidget( self.cAddress, 0, 2 )
+ self.connect( self.cAddress, SIGNAL( 'clicked()' ), self.toggleAddress )
+
+ self.cEMail = QCheckBox( '&E-Mail', self.search )
+ self.cEMail.resize( self.cEMail.sizeHint() )
+ self.grid2.addWidget( self.cEMail, 0, 3 )
+ self.connect( self.cEMail, SIGNAL( 'clicked()' ), self.toggleEMail )
+
+ self.sFirstName = QLineEdit( self.search )
+ self.sFirstName.resize( self.sFirstName.sizeHint() )
+ self.grid2.addWidget( self.sFirstName, 1, 0 )
+
+ self.sLastName = QLineEdit( self.search )
+ self.sLastName.resize( self.sLastName.sizeHint() )
+ self.grid2.addWidget( self.sLastName, 1, 1 )
+
+ self.sAddress = QLineEdit( self.search )
+ self.sAddress.resize( self.sAddress.sizeHint() )
+ self.grid2.addWidget( self.sAddress, 1, 2 )
+
+ self.sEMail = QLineEdit( self.search )
+ self.sEMail.resize( self.sEMail.sizeHint() )
+ self.grid2.addWidget( self.sEMail, 1, 3 )
+
+ self.find = QPushButton( '&Find', self.search )
+ self.find.resize( self.find.sizeHint() )
+ self.grid2.addWidget( self.find, 1, 4 )
+ self.connect( self.find, SIGNAL( 'clicked()' ), self.findEntries )
+
+ self.cFirstName.setChecked( TRUE )
+ self.sFirstName.setEnabled( TRUE )
+ self.sLastName.setEnabled( FALSE )
+ self.sAddress.setEnabled( FALSE )
+ self.sEMail.setEnabled( FALSE )
+
+ self.tabWidget.addTab( self.search, "&Search" )
+
+ self.mainGrid.addWidget( self.tabWidget, 0, 0 )
+
+ def setupListView( self ):
+ self.listView = QListView( self )
+ self.listView.addColumn( 'First Name' )
+ self.listView.addColumn( 'Last Name' )
+ self.listView.addColumn( 'Address' )
+ self.listView.addColumn( 'E-Mail' )
+
+ self.listView.setSelectionMode( QListView.Extended )
+
+ self.connect( self.listView, SIGNAL( 'clicked( QListViewItem* )' ), self.itemSelected )
+
+ self.mainGrid.addWidget( self.listView, 1, 0 )
+ self.listView.setAllColumnsShowFocus( TRUE )
+
+
+ def addEntry( self ):
+ if not self.iFirstName.text().isEmpty() or not self.iLastName.text().isEmpty() or \
+ not self.iAddress.text().isEmpty() or not self.iEMail.text().isEmpty() :
+ self.item = QListViewItem( self.listView )
+ self.item.setText( 0, self.iFirstName.text() )
+ self.item.setText( 1, self.iLastName.text() )
+ self.item.setText( 2, self.iAddress.text() )
+ self.item.setText( 3, self.iEMail.text() )
+
+ self.iFirstName.setText( '' )
+ self.iLastName.setText( '' )
+ self.iAddress.setText( '' )
+ self.iEMail.setText( '' )
+
+ def changeEntry( self ):
+ self.item = self.listView.currentItem()
+ if self.item and ( not self.iFirstName.text().isEmpty() or not self.iLastName.text().isEmpty() or \
+ not self.iAddress.text().isEmpty() or not self.iEMail.text().isEmpty() ) :
+ self.item.setText( 0, self.iFirstName.text() )
+ self.item.setText( 1, self.iLastName.text() )
+ self.item.setText( 2, self.iAddress.text() )
+ self.item.setText( 3, self.iEMail.text() )
+
+ def selectionChanged( self ):
+ self.iFirstName.setText( '' )
+ self.iLastName.setText( '' )
+ self.iAddress.setText( '' )
+ self.iEMail.setText( '' )
+
+ def itemSelected( self, item ):
+ self.item.setSelected( TRUE )
+ self.item.repaint()
+
+ self.iFirstName.setText( item.text( 0 ) )
+ self.iLastName.setText( item.text( 1 ) )
+ self.iAddress.setText( item.text( 2 ) )
+ self.iEMail.setText( item.text( 3 ) )
+
+ def toggleFirstName( self ):
+ self.sFirstName.setText( '' )
+ if self.cFirstName.isChecked():
+ self.sFirstName.setEnabled( TRUE )
+ self.sFirstName.setFocus()
+ else:
+ self.sFirstName.setEnabled( FALSE )
+
+ def toggleLastName( self ):
+ self.sLastName.setText( '' )
+ if self.cLastName.isChecked():
+ self.sLastName.setEnabled( TRUE )
+ self.sLastName.setFocus()
+ else:
+ self.sLastName.setEnabled( FALSE )
+
+
+ def toggleAddress( self ):
+ self.sAddress.setText( '' )
+ if self.cAddress.isChecked():
+ self.sAddress.setEnabled( TRUE )
+ self.sAddress.setFocus()
+ else:
+ self.sAddress.setEnabled( FALSE )
+
+
+ def toggleEMail( self ):
+ self.sEMail.setText( '' )
+ if self.cEMail.isChecked():
+ self.sEMail.setEnabled( TRUE )
+ self.sEMail.setFocus()
+
+ else:
+ self.sEMail.setEnabled( FALSE )
+
+
+ def findEntries( self ):
+ if not self.cFirstName.isChecked() and not self.cLastName.isChecked() and \
+ not self.cAddress.isChecked() and not self.cEMail.isChecked():
+ self.listView.clearSelection()
+ return
+
+ it = QListViewItemIterator( self.listView )
+
+ for it in it.current() :
+ select = TRUE
+
+ if self.cFirstName.isChecked():
+ if select and it.current().text( 0 ).contains( self.sFirstName.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cLastName.isChecked():
+ if select and it.current().text( 1 ).contains( self.sLastName.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cAddress.isChecked():
+ if select and it.current().text( 2 ).contains( self.sAddress.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+ if self.cEMail.isChecked():
+ if select and it.current().text( 3 ).contains( self.sEMail.text() ):
+ select = TRUE
+ else:
+ select = FALSE
+
+
+ if select:
+ it.current().setSelected( TRUE )
+ else:
+ it.current().setSelected( FALSE )
+ it.current().repaint()
+
+
+class ABMainWindow(QMainWindow):
+ def __init__( self ):
+ QMainWindow.__init__( self, None, 'example addressbook application' )
+
+ self.filename = QString.null
+ self.setupMenuBar()
+ self.setupFileTools()
+ self.setupStatusBar()
+ self.setupCentralWidget()
+
+ def setupMenuBar( self ):
+ self.file = QPopupMenu( self )
+ self.menuBar().insertItem( '&File', self.file )
+
+ openIcon = QIconSet( QPixmap( fileopen ) )
+ self.file.insertItem( 'New', self.fileNew, Qt.CTRL + Qt.Key_N )
+ self.file.insertItem( openIcon, 'Open', self.fileOpen, Qt.CTRL + Qt.Key_O )
+ self.file.insertSeparator()
+ saveIcon = QIconSet( QPixmap( filesave ) )
+ self.file.insertItem( saveIcon, 'Save', self.fileSave, Qt.CTRL + Qt.Key_S )
+ self.file.insertItem( 'Save As...', self.fileSaveAs )
+ self.file.insertSeparator()
+ printIcon = QIconSet( QPixmap( fileprint ) )
+ self.file.insertItem( printIcon, 'Print...', self.filePrint, Qt.CTRL + Qt.Key_P )
+ self.file.insertSeparator()
+ #self.file.insertItem( 'Close', self.closeWindow, Qt.CTRL + Qt.Key_W )
+ self.file.insertItem('Close', self, SLOT('close()'), Qt.CTRL+Qt.Key_W)
+ self.file.insertItem( 'Quit', qApp, SLOT( 'quit()' ), Qt.CTRL + Qt.Key_Q )
+
+ def setupFileTools( self ):
+ pass
+ #self.fileTools = QToolBar( self, 'file operations' )
+
+ def setupStatusBar( self ):
+ self.statusBar().message( "Ready", 2000 )
+
+ def setupCentralWidget( self ):
+ self.view = ABCentralWidget( self )
+ #self.view.show()
+ self.setCentralWidget( self.view )
+
+ def closeWindow( self ):
+ close()
+
+
+ def fileNew( self ):
+ pass
+
+ def fileOpen( self ):
+ fn = QFileDialog.getOpenFileName( QString.null, QString.null, self )
+ if not fn.isEmpty():
+ self.filename = fn
+ self.view.load( self.filename )
+
+ def fileSave( self ):
+ if self.filename.isEmpty():
+ self.fileSaveAs()
+ return
+
+ self.view.save( self.filename )
+
+ def fileSaveAs( self ):
+ fn = QFileDialog.getSaveFileName( QString.null, QString.null, self )
+ if not fn.isEmpty():
+ self.filename = fn
+ self.fileSave
+
+ def filePrint( self ):
+ pass
+
+
+a = QApplication( sys.argv )
+
+mw = ABMainWindow()
+#mw.setupMenuBar()
+#mw.setupFileTools
+#mw.setupStatusBar
+#mw.setupCentralWidget
+#view = ABCentralWidget()
+#mw.setCentralWidget( view )
+mw.setCaption( 'Addressbook 1' )
+a.setMainWidget( mw )
+mw.show()
+
+a.connect( a, SIGNAL( 'lastWindowClosed()' ), a, SLOT( 'quit()' ) )
+a.exec_loop()
diff --git a/python/pyqt/examples3/application.py b/python/pyqt/examples3/application.py
new file mode 100755
index 00000000..f5c027db
--- /dev/null
+++ b/python/pyqt/examples3/application.py
@@ -0,0 +1,277 @@
+#!/usr/bin/env python
+
+# A simple application.
+
+
+import sys, string
+from qt import *
+
+
+fileopen = [
+ '16 13 5 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c None',
+ 'b c #f3f704',
+ 'c c #f3f7f3',
+ 'aaaaaaaaa...aaaa',
+ 'aaaaaaaa.aaa.a.a',
+ 'aaaaaaaaaaaaa..a',
+ 'a...aaaaaaaa...a',
+ '.bcb.......aaaaa',
+ '.cbcbcbcbc.aaaaa',
+ '.bcbcbcbcb.aaaaa',
+ '.cbcb...........',
+ '.bcb.#########.a',
+ '.cb.#########.aa',
+ '.b.#########.aaa',
+ '..#########.aaaa',
+ '...........aaaaa'
+]
+
+filesave = [
+ '14 14 4 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c #bfc2bf',
+ 'b c None',
+ '..............',
+ '.#.aaaaaaaa.a.',
+ '.#.aaaaaaaa...',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.##........##.',
+ '.############.',
+ '.##.........#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ 'b.............'
+]
+
+fileprint = [
+ '16 14 6 1',
+ '. c #000000',
+ '# c #848284',
+ 'a c #c6c3c6',
+ 'b c #ffff00',
+ 'c c #ffffff',
+ 'd c None',
+ 'ddddd.........dd',
+ 'dddd.cccccccc.dd',
+ 'dddd.c.....c.ddd',
+ 'ddd.cccccccc.ddd',
+ 'ddd.c.....c....d',
+ 'dd.cccccccc.a.a.',
+ 'd..........a.a..',
+ '.aaaaaaaaaa.a.a.',
+ '.............aa.',
+ '.aaaaaa###aa.a.d',
+ '.aaaaaabbbaa...d',
+ '.............a.d',
+ 'd.aaaaaaaaa.a.dd',
+ 'dd...........ddd'
+]
+
+
+fileOpenText = \
+'''<img source="fileopen">
+Click this button to open a <em>new file</em>.<br><br>
+You can also select the <b>Open</b> command from the <b>File</b> menu.'''
+
+fileSaveText = \
+'''Click this button to save the file you are editing.<br><br>
+You will be prompted for a filename.<br><br>
+You can also select the <b>Save</b> command from the <b>File</b> menu.'''
+
+filePrintText = \
+'''Click this button to print the file you are editing.<br><br>
+You can also select the <b>Print</b> command from the <b>File</b> menu.'''
+
+
+editorList = []
+
+
+class ApplicationWindow(QMainWindow):
+ def __init__(self):
+ QMainWindow.__init__(self,None,'example application main window',Qt.WDestructiveClose)
+
+ self.filename = QString.null
+ self.printer = QPrinter()
+
+ self.fileTools = QToolBar(self,'file operations')
+
+ openIcon = QPixmap(fileopen)
+ self.fileOpen = QToolButton(QIconSet(openIcon),'Open File',QString.null,self.load,self.fileTools,'open file')
+
+ saveIcon = QPixmap(filesave)
+ self.fileSave = QToolButton(QIconSet(saveIcon),'Save File',QString.null,self.save,self.fileTools,'save file')
+
+ printIcon = QPixmap(fileprint)
+ self.filePrint = QToolButton(QIconSet(printIcon),'Print File',QString.null,self.printDoc,self.fileTools,'print file')
+
+ QWhatsThis.whatsThisButton(self.fileTools)
+
+ QWhatsThis.add(self.fileOpen,fileOpenText)
+ QMimeSourceFactory.defaultFactory().setPixmap('fileopen',openIcon)
+ QWhatsThis.add(self.fileSave,fileSaveText)
+ QWhatsThis.add(self.filePrint,filePrintText)
+
+ self.file = QPopupMenu(self)
+ self.menuBar().insertItem('&File',self.file)
+
+ self.file.insertItem('&New',self.newDoc,Qt.CTRL + Qt.Key_N)
+
+ id = self.file.insertItem(QIconSet(openIcon),'&Open',self.load,Qt.CTRL + Qt.Key_O)
+ self.file.setWhatsThis(id,fileOpenText)
+
+ id = self.file.insertItem(QIconSet(saveIcon),'&Save',self.save,Qt.CTRL + Qt.Key_S)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ id = self.file.insertItem('Save &as',self.saveAs)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ self.file.insertSeparator()
+
+ id = self.file.insertItem(QIconSet(printIcon),'&Print',self.printDoc,Qt.CTRL + Qt.Key_P)
+ self.file.setWhatsThis(id,filePrintText)
+
+ self.file.insertSeparator()
+
+ self.file.insertItem('&Close',self,SLOT('close()'),Qt.CTRL + Qt.Key_W)
+ self.file.insertItem('&Quit',qApp,SLOT('closeAllWindows()'),Qt.CTRL + Qt.Key_Q)
+
+ self.help = QPopupMenu(self)
+ self.menuBar().insertSeparator()
+ self.menuBar().insertItem('&Help',self.help)
+
+ self.help.insertItem('&About',self.about,Qt.Key_F1)
+ self.help.insertItem('About &Qt',self.aboutQt)
+
+ self.e = QMultiLineEdit(self,'editor')
+ self.e.setFocus()
+ self.setCentralWidget(self.e)
+
+ self.statusBar().message('Ready',2000)
+ self.resize(450,600)
+
+ def newDoc(self):
+ ed = ApplicationWindow()
+ ed.show()
+ editorList.append(ed)
+
+ def load(self):
+ fn = QFileDialog.getOpenFileName(QString.null,QString.null,self)
+ if fn.isEmpty():
+ self.statusBar().message('Loading aborted',2000)
+ return
+
+ fileName = str(fn)
+
+ self.e.setAutoUpdate(0)
+ self.e.clear()
+
+ try:
+ f = open(fileName,'r')
+ except:
+ return
+
+ for l in f.readlines():
+ self.e.append(string.rstrip(l))
+
+ f.close()
+
+ self.e.setAutoUpdate(1)
+ self.e.repaint()
+ self.e.setEdited(0)
+ self.setCaption(fileName)
+ self.statusBar().message('Loaded document %s' % (fileName),2000)
+
+ def save(self):
+ if self.filename.isEmpty():
+ self.saveAs()
+ return
+
+ try:
+ f = open(str(self.filename),'w+')
+ except:
+ self.statusBar().message('Could not write to %s' % (self.filename),2000)
+ return
+
+ f.write(str(self.e.text()))
+ f.close()
+
+ self.e.setEdited(0)
+ self.setCaption(self.filename)
+ self.statusBar().message('File %s saved' % (self.filename),2000)
+
+ def saveAs(self):
+ fn = QFileDialog.getSaveFileName(QString.null,QString.null,self)
+ if not fn.isEmpty():
+ self.filename = fn
+ self.save()
+ else:
+ self.statusBar().message('Saving aborted',2000)
+
+ def printDoc(self):
+ Margin = 10
+ pageNo = 1
+
+ if self.printer.setup(self):
+ self.statusBar().message('Printing...')
+
+ p = QPainter()
+ p.begin(self.printer)
+ p.setFont(self.e.font())
+ yPos = 0
+ fm = p.fontMetrics()
+ metrics = QPaintDeviceMetrics(self.printer)
+
+ for i in range(self.e.numLines):
+ if Margin + yPos > metrics.height() - Margin:
+ pageNo = pageNo + 1
+ self.statusBar().message('Printing (page %d)...' % (pageNo))
+ self.printer.newPage()
+ yPos = 0
+
+ p.drawText(Margin,Margin + yPos,metrics.width(),fm.lineSpacing(),Qt.ExpandTabs | Qt.DontClip,self.e.textLine(i))
+ yPos = yPos + fm.lineSpacing()
+
+ p.end()
+ self.statusBar().message('Printing completed',2000)
+ else:
+ self.statusBar().message('Printing aborted',2000)
+
+ def closeEvent(self,ce):
+ if not self.e.edited():
+ ce.accept()
+ return
+
+ rc = QMessageBox.information(self,'Qt Application Example',
+ 'The document has been changed since the last save.',
+ 'Save Now','Cancel','Leave Anyway',0,1)
+
+ if rc == 0:
+ self.save()
+ ce.accept()
+ elif rc == 2:
+ ce.accept()
+ else:
+ ce.ignore()
+
+ def about(self):
+ QMessageBox.about(self,'Qt Application Example',
+ 'This example demonstrates simple use of QMainWindow,\nQMenuBar and QToolBar.')
+
+ def aboutQt(self):
+ QMessageBox.aboutQt(self,'Qt Application Example')
+
+
+a = QApplication(sys.argv)
+mw = ApplicationWindow()
+mw.setCaption('Document 1')
+mw.show()
+a.connect(a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()'))
+a.exec_loop()
diff --git a/python/pyqt/examples3/biff.py b/python/pyqt/examples3/biff.py
new file mode 100755
index 00000000..ee5bfe38
--- /dev/null
+++ b/python/pyqt/examples3/biff.py
@@ -0,0 +1,173 @@
+#!/usr/bin/env python
+
+import os, sys, string
+from qt import *
+
+
+if QT_VERSION < 0x030100:
+ print "This example requires Qt v3.1.0 or later."
+ sys.exit(1)
+
+
+FALSE = 0
+TRUE = 1
+
+hasmail_bmp_data = [
+"48 48 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+"................................................",
+".............................++++++++++.........",
+".............................++++++++++.........",
+"........................++++.+++.+.+.++.........",
+"......................++++.++++.+.+.+++.........",
+".....................+++.....+++.+.+.++.........",
+"....................++.......++.+.+.+++.........",
+"...................++........++++++++++.........",
+"..................++.........++++++++++.........",
+".................++..........+++..+.............",
+"................++...........+++..+.............",
+"...............++............+++.++.............",
+"..............+++++++........++++++.............",
+".............++++++++++......++++++.............",
+"............+++......+++.....++++.+.............",
+"...........+++.........++....+++..+.............",
+"...........++..........++...++++..+.............",
+"..........++............++.+++++..+.............",
+"..........++............++++++++..+.............",
+".........++....++++++....+++.+++..+.............",
+".........++......++......++..+++..+.............",
+".........++..............++..+++..+.............",
+".........++..............++..+++..+.............",
+".........++..............++..++...+.............",
+"+++++++..++.+.+..+..+.+..++.......+..+++++++++++",
+".........++.+++.+.+.+.+..++.......+.............",
+".........++.+.+.+++.+.+..++.......+.............",
+".........++.+.+.+.+.+.+..++......++.............",
+".........++.+.+.+.+.+.++.++.....++..............",
+".........++..............++....++...............",
+"..+.+.+..++..............++...++..+.+.+.+.+.+.+.",
+".+.+.+.+.++..............++..++..+.+.+.+.+.+.+..",
+"..+.+.+..++..............++.++..+.+.+.+.+.+.+.+.",
+".+.+.+.+.++..............+++++.+.+.+.+.+.+.+.+..",
+"..+.+.+..+++++++++++++++++++.++.+.+.+.+.+.+.+.+.",
+".+.+.+.+..+++++++++++++++++..+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+..........+...+.....++.+.+.+.+.+.+.+.+.",
+".+.+.+.+.+.+.+.+.+.+...+.....+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+.+.+.+.+.++...+.....++.+.+.+.+.+.+.+.+.",
+".+.+.+.+.+.+.+.+.+.+...+.....+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+.+.+.+.+.++...+.....++.+.+.+.+.+.+.+.+.",
+".+.+.+.+.+.+.+.+.+.+...+.....+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+.+.+.+.+.++...+....+.+.+.+.+.+.+.+.+.+.",
+".+.+.+.+.+.+.+.+.+.+...+...+.+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+.+.+.+.+.+.+..+..+.+.+.+.+.+.+.+.+.+.+.",
+".+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+..",
+"..+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+...",
+"................................................"
+]
+
+nomail_bmp_data = [
+"48 48 3 1",
+" c None",
+". c #FFFFFF",
+"+ c #000000",
+"................................................",
+"................................................",
+"................................................",
+".........................++++...................",
+".......................++++++++.................",
+".....................++++....+++................",
+"....................+++........++...............",
+"...................++...........++..............",
+"..................++............++..............",
+".................++..............++.......+.....",
+"................++...............++......++.....",
+"...............++................++.....+++.....",
+"..............+++++++...........+++....++++.....",
+".............++++++++++........++++...+++++.....",
+"............+++......+++......+++.+..++++++.....",
+"...........+++.........++....+++..+.+++.+++.....",
+"...........++..........++...+++...++++..+++.....",
+"..........++............++.+++...++++...++......",
+"..........++............+++++...++++............",
+".........++....++++++....+++...++++.............",
+".........++......++......++...+++.+.............",
+".........++..............++...+++.+.............",
+".........++..............++...++..+.............",
+".........++..............++.......+.............",
+"+++++++..++..............++.......+..+++++++++++",
+".........++..............++.......+.............",
+".........++..............++.......+.............",
+".........++..............++......++.............",
+".........++..............++.....++..............",
+".........++..............++....++...............",
+".........++..............++...++................",
+".........++..............++..++.................",
+".........++..............++.++..................",
+".........++..............+++++..................",
+".........+++++++++++++++++++.+..................",
+"..........+++++++++++++++++..+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"...................+...+.....+..................",
+"+++.++++++++++.+.+++...+..+++++++++++.++...+++++",
+"+.+++..+++.+.+++++.++..+.++.+++..+..+.++.+.++++.",
+".++...+.....++...+...+++++++....+....++++++...+.",
+"++++++++++++++++++++++++++++++++++++++++++++++++"
+]
+
+class Biff(QWidget):
+ def __init__(self):
+ QWidget.__init__(self, None, "Biff - example application")
+
+ mail = os.getenv("MAIL")
+ fi = QFileInfo(mail);
+ if not fi.exists():
+ s = "/var/spool/mail/"+os.getenv("USER")
+ fi.setFile(s)
+
+ if fi.exists():
+ self.mailbox = fi.absFilePath()
+ self.startTimer(1000)
+
+ self.setMinimumSize(48, 48)
+ self.setMaximumSize(48, 48)
+ self.resize(48, 48)
+
+ self.hasNewMail = QPixmap(hasmail_bmp_data)
+ self.noNewMail = QPixmap(nomail_bmp_data)
+
+ self.gotMail = FALSE
+ self.lastModified = fi.lastModified()
+
+ def timerEvent(self, te):
+ fi = QFileInfo(self.mailbox)
+ newState = ( fi.lastModified().toTime_t() != self.lastModified.toTime_t() and fi.lastModified().toTime_t() > fi.lastRead().toTime_t())
+ if newState != self.gotMail:
+ if self.gotMail == TRUE:
+ self.lastModified = fi.lastModified()
+ self.gotMail = newState
+ self.repaint(FALSE)
+
+ def paintEvent(self, pe):
+ if self.gotMail:
+ bitBlt(self, 0, 0, self.hasNewMail)
+ else:
+ bitBlt(self, 0, 0, self.noNewMail)
+
+ def mousePressEvent(self, me):
+ fi = QFileInfo(self.mailbox)
+ lastModified = fi.lastModified()
+
+
+a = QApplication(sys.argv)
+b = Biff()
+a.setMainWidget(b)
+b.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/bigtable.py b/python/pyqt/examples3/bigtable.py
new file mode 100755
index 00000000..2c0b46a2
--- /dev/null
+++ b/python/pyqt/examples3/bigtable.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+import os
+from qt import *
+from qttable import *
+
+TRUE = 1
+FALSE = 0
+
+numRows = 1000000
+numCols = 1000000
+
+class MyTable(QTable):
+ def __init__(self, r, c):
+ QTable.__init__(self, r, c)
+ self.items = {}
+ self.widgets = {}
+ self.setCaption("This is a big table with 1.000.000x1.000.000 cells...")
+ self.setLeftMargin(self.fontMetrics().width("W999999W"))
+
+ def resizeData(self, v):
+ return
+
+ def item(self, r, c):
+ try:
+ return self.items[self.indexOf(r, c)]
+ except KeyError:
+ return None
+
+ def setItem(self, r, c, i):
+ self.items[self.indexOf(r, c)] = i
+
+ def clearCell(self, r, c):
+ try:
+ del self.items[self.indexOf(r, c)]
+ except KeyError:
+ pass
+
+ def insertWidget(self, r, c, w):
+ self.widgets[self.indexOf(r, c)] = w
+
+ def cellWidget(self, r, c):
+ try:
+ return self.widgets[self.indexOf(r, c)]
+ except KeyError:
+ return None
+
+ def clearCellWidget(self, r, c):
+ try:
+ del self.widgets[self.indexOf(r, c)]
+ except KeyError:
+ pass
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ table = MyTable(numRows, numCols)
+ app.setMainWidget(table)
+ table.show()
+ app.exec_loop()
diff --git a/python/pyqt/examples3/buttongroups.py b/python/pyqt/examples3/buttongroups.py
new file mode 100755
index 00000000..ed2c6315
--- /dev/null
+++ b/python/pyqt/examples3/buttongroups.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+#/****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+#**
+#** This file is part of an example program for Qt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+##
+# Creates all child widgets of the ButtonGroups window
+##
+
+class ButtonsGroups( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+
+ # Create Widgets which allow easy layouting
+ self.vbox = QVBoxLayout( self, 11, 6 )
+ self.box1 = QHBoxLayout( self.vbox )
+ self.box2 = QHBoxLayout( self.vbox )
+
+ # ------- first group
+
+ # Create an exclusive button group
+ self.grp1 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 1 (exclusive)", self )
+ self.box1.addWidget( self.grp1 )
+ self.grp1.setExclusive( TRUE )
+
+ # insert 3 radiobuttons
+ self.rb11 = QRadioButton( "&Radiobutton 1", self.grp1 )
+ self.rb11.setChecked( TRUE )
+ QRadioButton( "R&adiobutton 2", self.grp1 )
+ QRadioButton( "Ra&diobutton 3", self.grp1 )
+
+ # ------- second group
+
+ # Create a non-exclusive buttongroup
+ self.grp2 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 2 (non-exclusive)", self )
+ self.box1.addWidget( self.grp2 )
+ self.grp2.setExclusive( FALSE )
+
+ # insert 3 checkboxes
+ QCheckBox( "&Checkbox 1", self.grp2 )
+ self.cb12 = QCheckBox( "C&heckbox 2", self.grp2 )
+ self.cb12.setChecked( TRUE )
+ self.cb13 = QCheckBox( "Triple &State Button", self.grp2 )
+ self.cb13.setTristate( TRUE )
+ self.cb13.setChecked( TRUE )
+
+ # ------------ third group
+
+ # create a buttongroup which is exclusive for radiobuttons and non-exclusive for all other buttons
+ self.grp3 = QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 3 (Radiobutton-exclusive)", self )
+ self.box2.addWidget( self.grp3 )
+ self.grp3.setRadioButtonExclusive( TRUE )
+
+ # insert three radiobuttons
+ self.rb21 = QRadioButton( "Rad&iobutton 1", self.grp3 )
+ self.rb22 = QRadioButton( "Radi&obutton 2", self.grp3 )
+ self.rb23 = QRadioButton( "Radio&button 3", self.grp3 )
+ self.rb23.setChecked( TRUE )
+
+ # insert a checkbox...
+ self.state = QCheckBox( "E&nable Radiobuttons", self.grp3 )
+ self.state.setChecked( TRUE )
+ # ...and connect its SIGNAL clicked() with the SLOT slotChangeGrp3State()
+ self.connect( self.state, SIGNAL( "clicked()" ), self.slotChangeGrp3State )
+
+ # ------------ fourth group
+
+ # create a groupbox which layouts its childs in a columns
+ self.grp4 = QButtonGroup( 1, QGroupBox.Horizontal, "Groupbox with normal buttons", self )
+ self.box2.addWidget( self.grp4 )
+
+ # insert two pushbuttons...
+ QPushButton( "&Push Button", self.grp4 )
+ self.tb2 = QPushButton( "&Toggle Button", self.grp4 )
+
+ # ... and make the second one a toggle button
+ self.tb2.setToggleButton( TRUE )
+ self.tb2.setOn( TRUE )
+
+ # ... and make the third one a flat button
+ self.tb3 = QPushButton( "&Flat Button", self.grp4 )
+ self.tb3.setFlat( TRUE )
+
+ # .. and the fourth a button with a menu
+ self.tb4 = QPushButton( "Popup Button", self.grp4 )
+ menu = QPopupMenu(self.tb4)
+ menu.insertItem("Item1", 0)
+ menu.insertItem("Item2", 0)
+ menu.insertItem("Item3", 0)
+ menu.insertItem("Item4", 0)
+ self.tb4.setPopup(menu)
+
+ #
+ # SLOT slotChangeGrp3State()
+ # enables/disables the radiobuttons of the third buttongroup
+ #
+
+ def slotChangeGrp3State( self ):
+ self.rb21.setEnabled( self.state.isChecked() )
+ self.rb22.setEnabled( self.state.isChecked() )
+ self.rb23.setEnabled( self.state.isChecked() )
+
+
+## main program
+a = QApplication( sys.argv )
+
+buttonsgroups = ButtonsGroups()
+buttonsgroups.resize( 500, 250 )
+buttonsgroups.setCaption( "PyQT Example - Buttons and Groups" )
+a.setMainWidget( buttonsgroups )
+buttonsgroups.show()
+
+a.exec_loop()
diff --git a/python/pyqt/examples3/canvas/butterfly.png b/python/pyqt/examples3/canvas/butterfly.png
new file mode 100644
index 00000000..d8912d25
--- /dev/null
+++ b/python/pyqt/examples3/canvas/butterfly.png
Binary files differ
diff --git a/python/pyqt/examples3/canvas/canvas.py b/python/pyqt/examples3/canvas/canvas.py
new file mode 100755
index 00000000..178a6e66
--- /dev/null
+++ b/python/pyqt/examples3/canvas/canvas.py
@@ -0,0 +1,619 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+from qtcanvas import *
+import random
+
+
+True = 1
+False = 0
+butterfly_fn = QString.null
+butterflyimg = []
+logo_fn = QString.null
+logoimg = []
+bouncy_logo = None
+views = []
+
+
+class ImageItem(QCanvasRectangle):
+ def __init__(self,img,canvas):
+ QCanvasRectangle.__init__(self,canvas)
+ self.imageRTTI=984376
+ self.image=img
+ self.pixmap=QPixmap()
+ self.setSize(self.image.width(), self.image.height())
+ self.pixmap.convertFromImage(self.image, Qt.OrderedAlphaDither);
+
+ def rtti(self):
+ return self.imageRTTI
+
+ def hit(self,p):
+ ix = p.x()-self.x()
+ iy = p.y()-self.y()
+ if not self.image.valid( ix , iy ):
+ return False
+ self.pixel = self.image.pixel( ix, iy )
+ return (qAlpha( self.pixel ) != 0)
+
+ def drawShape(self,p):
+ p.drawPixmap( self.x(), self.y(), self.pixmap )
+
+
+class NodeItem(QCanvasEllipse):
+ def __init__(self,canvas):
+ QCanvasEllipse.__init__(self,6,6,canvas)
+ self.__inList=[]
+ self.__outList=[]
+ self.setPen(QPen(Qt.black))
+ self.setBrush(QBrush(Qt.red))
+ self.setZ(128)
+
+ def addInEdge(self,edge):
+ self.__inList.append(edge)
+
+ def addOutEdge(self,edge):
+ self.__outList.append(edge)
+
+ def moveBy(self,dx,dy):
+ QCanvasEllipse.moveBy(self,dx,dy)
+ for each_edge in self.__inList:
+ each_edge.setToPoint( int(self.x()), int(self.y()) )
+ for each_edge in self.__outList:
+ each_edge.setFromPoint( int(self.x()), int(self.y()) )
+
+class EdgeItem(QCanvasLine):
+ __c=0
+ def __init__(self,fromNode, toNode,canvas):
+ QCanvasLine.__init__(self,canvas)
+ self.__c=self.__c+1
+ self.setPen(QPen(Qt.black))
+ self.setBrush(QBrush(Qt.red))
+ fromNode.addOutEdge(self)
+ toNode.addInEdge(self)
+ self.setPoints(int(fromNode.x()),int(fromNode.y()), int(toNode.x()), int(toNode.y()))
+ self.setZ(127)
+
+ def setFromPoint(self,x,y):
+ self.setPoints(x,y,self.endPoint().x(),self.endPoint().y())
+
+ def setToPoint(self,x,y):
+ self.setPoints(self.startPoint().x(), self.startPoint().y(),x,y)
+
+ def count(self):
+ return self.__c
+
+ def moveBy(self,dx,dy):
+ pass
+
+
+class FigureEditor(QCanvasView):
+ def __init__(self,c,parent,name,f):
+ QCanvasView.__init__(self,c,parent,name,f)
+ self.__moving=0
+ self.__moving_start= 0
+
+ def contentsMousePressEvent(self,e): # QMouseEvent e
+ point = self.inverseWorldMatrix().map(e.pos())
+ ilist = self.canvas().collisions(point) #QCanvasItemList ilist
+ for each_item in ilist:
+ if each_item.rtti()==984376:
+ if not each_item.hit(point):
+ continue
+ self.__moving=each_item
+ self.__moving_start=point
+ return
+ self.__moving=0
+
+ def clear(self):
+ ilist = self.canvas().allItems()
+ for each_item in ilist:
+ if each_item:
+ each_item.setCanvas(None)
+ del each_item
+ self.canvas().update()
+
+ def contentsMouseMoveEvent(self,e):
+ if self.__moving :
+ point = self.inverseWorldMatrix().map(e.pos());
+ self.__moving.moveBy(point.x() - self.__moving_start.x(),point.y() - self.__moving_start.y())
+ self.__moving_start = point
+ self.canvas().update()
+
+
+class BouncyLogo(QCanvasSprite):
+ def __init__(self,canvas):
+ # Make sure the logo exists.
+ global bouncy_logo
+ if bouncy_logo is None:
+ bouncy_logo=QCanvasPixmapArray("qt-trans.xpm")
+
+ QCanvasSprite.__init__(self,None,canvas)
+ self.setSequence(bouncy_logo)
+ self.setAnimated(True)
+ self.initPos()
+ self.logo_rtti=1234
+
+ def rtti(self):
+ return self.logo_rtti
+
+ def initPos(self):
+ self.initSpeed()
+ trial=1000
+ self.move(random.random()%self.canvas().width(), random.random()%self.canvas().height())
+ self.advance(0)
+ trial=trial-1
+ while (trial & (self.xVelocity()==0 )& (self.yVelocity()==0)):
+ elf.move(random.random()%self.canvas().width(), random.random()%self.canvas().height())
+ self.advance(0)
+ trial=trial-1
+
+ def initSpeed(self):
+ speed=4.0
+ d=random.random()%1024/1024.0
+ self.setVelocity(d*speed*2-speed, (1-d)*speed*2-speed)
+
+ def advance(self,stage):
+ if stage==0:
+ vx=self.xVelocity()
+ vy=self.yVelocity()
+ if (vx==0.0) & (vy==0.0):
+ self.initSpeed()
+ vx=self.xVelocity()
+ vy=self.yVelocity()
+
+ nx=self.x()+vx
+ ny=self.y()+vy
+
+ if (nx<0) | (nx >= self.canvas().width()):
+ vx=-vx
+ if (ny<0) | (ny >= self.canvas().height()):
+ vy=-vy
+
+ for bounce in [0,1,2,3]:
+ l=self.collisions(False)
+ for hit in l:
+ if (hit.rtti()==1234) & (hit.collidesWith(self)):
+ if bounce==0:
+ vx=-vx
+ elif bounce==1:
+ vy=-vy
+ vx=-vx
+ elif bounce==2:
+ vx=-vx
+ elif bounce==3:
+ vx=0
+ vy=0
+ self.setVelocity(vx,vy)
+ break
+
+ if (self.x()+vx < 0) | (self.x()+vx >= self.canvas().width()):
+ vx=0
+ if (self.y()+vy < 0) | (self.y()+vy >= self.canvas().height()):
+ vy=0
+
+ self.setVelocity(vx,vy)
+ elif stage==1:
+ QCanvasItem.advance(self,stage)
+
+
+class Main (QMainWindow):
+ def __init__(self,c,parent,name,f=0):
+ QMainWindow.__init__(self,parent,name,f)
+ self.editor=FigureEditor(c,self,name,f)
+ self.printer=QPrinter()
+ self.dbf_id=0
+ self.canvas=c
+ self.mainCount=0
+ file=QPopupMenu(self.menuBar())
+ file.insertItem("&Fill canvas", self.init, Qt.CTRL+Qt.Key_F)
+ file.insertItem("&Erase canvas", self.clear, Qt.CTRL+Qt.Key_E)
+ file.insertItem("&New view", self.newView, Qt.CTRL+Qt.Key_N)
+ file.insertSeparator();
+ file.insertItem("&Print", self._print, Qt.CTRL+Qt.Key_P)
+ file.insertSeparator()
+ file.insertItem("E&xit", qApp, SLOT("quit()"), Qt.CTRL+Qt.Key_Q)
+ self.menuBar().insertItem("&File", file)
+
+ edit = QPopupMenu(self.menuBar() )
+ edit.insertItem("Add &Circle", self.addCircle, Qt.ALT+Qt.Key_C)
+ edit.insertItem("Add &Hexagon", self.addHexagon, Qt.ALT+Qt.Key_H)
+ edit.insertItem("Add &Polygon", self.addPolygon, Qt.ALT+Qt.Key_P)
+ edit.insertItem("Add Spl&ine", self.addSpline, Qt.ALT+Qt.Key_I)
+ edit.insertItem("Add &Text", self.addText, Qt.ALT+Qt.Key_T)
+ edit.insertItem("Add &Line", self.addLine, Qt.ALT+Qt.Key_L)
+ edit.insertItem("Add &Rectangle", self.addRectangle, Qt.ALT+Qt.Key_R)
+ edit.insertItem("Add &Sprite", self.addSprite, Qt.ALT+Qt.Key_S)
+ edit.insertItem("Create &Mesh", self.addMesh, Qt.ALT+Qt.Key_M )
+ edit.insertItem("Add &Alpha-blended image", self.addButterfly, Qt.ALT+Qt.Key_A)
+ self.menuBar().insertItem("&Edit", edit)
+
+ view = QPopupMenu(self.menuBar() );
+ view.insertItem("&Enlarge", self.enlarge, Qt.SHIFT+Qt.CTRL+Qt.Key_Plus);
+ view.insertItem("Shr&ink", self.shrink, Qt.SHIFT+Qt.CTRL+Qt.Key_Minus);
+ view.insertSeparator();
+ view.insertItem("&Rotate clockwise", self.rotateClockwise, Qt.CTRL+Qt.Key_PageDown);
+ view.insertItem("Rotate &counterclockwise", self.rotateCounterClockwise, Qt.CTRL+Qt.Key_PageUp);
+ view.insertItem("&Zoom in", self.zoomIn, Qt.CTRL+Qt.Key_Plus);
+ view.insertItem("Zoom &out", self.zoomOut, Qt.CTRL+Qt.Key_Minus);
+ view.insertItem("Translate left", self.moveL, Qt.CTRL+Qt.Key_Left);
+ view.insertItem("Translate right", self.moveR, Qt.CTRL+Qt.Key_Right);
+ view.insertItem("Translate up", self.moveU, Qt.CTRL+Qt.Key_Up);
+ view.insertItem("Translate down", self.moveD, Qt.CTRL+Qt.Key_Down);
+ view.insertItem("&Mirror", self.mirror, Qt.CTRL+Qt.Key_Home);
+ self.menuBar().insertItem("&View", view)
+
+ self.options = QPopupMenu( self.menuBar() );
+ self.dbf_id = self.options.insertItem("Double buffer", self.toggleDoubleBuffer)
+ self.options.setItemChecked(self.dbf_id, True)
+ self.menuBar().insertItem("&Options",self.options)
+
+ self.menuBar().insertSeparator();
+
+ help = QPopupMenu( self.menuBar() )
+ help.insertItem("&About", self.help, Qt.Key_F1)
+ help.insertItem("&About Qt", self.aboutQt, Qt.Key_F2)
+ help.setItemChecked(self.dbf_id, True)
+ self.menuBar().insertItem("&Help",help)
+
+ self.statusBar()
+
+ self.setCentralWidget(self.editor)
+
+ self.printer = 0
+ self.tb=0
+ self.tp=0
+
+ self.init()
+
+ def init(self):
+ self.clear()
+ r=24
+ r=r+1
+ random.seed(r)
+ for i in range(self.canvas.width()/56):
+ self.addButterfly()
+ for j in range(self.canvas.width()/85):
+ self.addHexagon()
+ for k in range(self.canvas.width()/128):
+ self.addLogo()
+
+ def newView(self):
+ m=Main(self.canvas,None,"new windiw",Qt.WDestructiveClose)
+ qApp.setMainWidget(m)
+ m.show()
+ qApp.setMainWidget(None)
+ views.append(m)
+
+ def clear(self):
+ self.editor.clear()
+
+ def help(self):
+ QMessageBox.information(None, "PyQt Canvas Example",
+ "<h3>The PyQt QCanvas classes example</h3><hr>"
+ "<p>This is the PyQt implementation of "
+ "Qt canvas example.</p> by Sadi Kose "
+ "<i>(kose@nuvox.net)</i><hr>"
+ "<ul>"
+ "<li> Press ALT-S for some sprites."
+ "<li> Press ALT-C for some circles."
+ "<li> Press ALT-L for some lines."
+ "<li> Drag the objects around."
+ "<li> Read the code!"
+ "</ul>","Dismiss")
+
+ def aboutQt(self):
+ QMessageBox.aboutQt(self,"PyQt Canvas Example")
+
+ def toggleDoubleBuffer(self):
+ s = not self.options.isItemChecked(self.dbf_id)
+ self.options.setItemChecked(self.dbf_id,s)
+ self.canvas.setDoubleBuffering(s)
+
+ def enlarge(self):
+ self.canvas.resize(self.canvas.width()*4/3, self.canvas.height()*4/3)
+
+ def shrink(self):
+ self.canvas.resize(self.canvas.width()*3/4, self.canvas.height()*3/4)
+
+ def rotateClockwise(self):
+ m = self.editor.worldMatrix()
+ m.rotate( 22.5 )
+ self.editor.setWorldMatrix( m )
+
+ def rotateCounterClockwise(self):
+ m = self.editor.worldMatrix()
+ m.rotate( -22.5 )
+ self.editor.setWorldMatrix( m )
+
+ def zoomIn(self):
+ m = self.editor.worldMatrix()
+ m.scale( 2.0, 2.0 )
+ self.editor.setWorldMatrix( m )
+
+ def zoomOut(self):
+ m = self.editor.worldMatrix()
+ m.scale( 0.5, 0.5 )
+ self.editor.setWorldMatrix( m )
+
+ def mirror(self):
+ m = self.editor.worldMatrix()
+ m.scale( -1, 1 )
+ self.editor.setWorldMatrix( m )
+
+ def moveL(self):
+ m = self.editor.worldMatrix()
+ m.translate( -16, 0 )
+ self.editor.setWorldMatrix( m )
+
+ def moveR(self):
+ m = self.editor.worldMatrix()
+ m.translate( +16, 0 )
+ self.editor.setWorldMatrix( m )
+
+ def moveU(self):
+ m = self.editor.worldMatrix()
+ m.translate( 0, -16 )
+ self.editor.setWorldMatrix( m )
+
+ def moveD(self):
+ m = self.editor.worldMatrix();
+ m.translate( 0, +16 );
+ self.editor.setWorldMatrix( m )
+
+ def _print(self):
+ if not self.printer:
+ self.printer = QPrinter()
+ if self.printer.setup(self) :
+ pp=QPainter(self.printer)
+ self.canvas.drawArea(QRect(0,0,self.canvas.width(),self.canvas.height()),pp,False)
+
+ def addSprite(self):
+ i = BouncyLogo(self.canvas)
+ i.setZ(256*random.random()%256);
+ i.show();
+
+ def addButterfly(self):
+ if butterfly_fn.isEmpty():
+ return
+ if not butterflyimg:
+ butterflyimg.append(QImage())
+ butterflyimg[0].load(butterfly_fn)
+ butterflyimg.append(QImage())
+ butterflyimg[1] = butterflyimg[0].smoothScale( int(butterflyimg[0].width()*0.75),
+ int(butterflyimg[0].height()*0.75) )
+ butterflyimg.append(QImage())
+ butterflyimg[2] = butterflyimg[0].smoothScale( int(butterflyimg[0].width()*0.5),
+ int(butterflyimg[0].height()*0.5) )
+ butterflyimg.append(QImage())
+ butterflyimg[3] = butterflyimg[0].smoothScale( int(butterflyimg[0].width()*0.25),
+ int(butterflyimg[0].height()*0.25) )
+
+ i = ImageItem(butterflyimg[int(4*random.random()%4)],self.canvas)
+ i.move((self.canvas.width()-butterflyimg[0].width())*random.random()%(self.canvas.width()-butterflyimg[0].width()),
+ (self.canvas.height()-butterflyimg[0].height())*random.random()%(self.canvas.height()-butterflyimg[0].height()))
+ i.setZ(256*random.random()%256+250);
+ i.show()
+
+ def addLogo(self):
+ if logo_fn.isEmpty():
+ return;
+ if not logoimg:
+ logoimg.append(QImage())
+ logoimg[0].load( logo_fn )
+ logoimg.append(QImage())
+ logoimg[1] = logoimg[0].smoothScale( int(logoimg[0].width()*0.75),
+ int(logoimg[0].height()*0.75) )
+ logoimg.append(QImage())
+ logoimg[2] = logoimg[0].smoothScale( int(logoimg[0].width()*0.5),
+ int(logoimg[0].height()*0.5) )
+ logoimg.append(QImage())
+ logoimg[3] = logoimg[0].smoothScale( int(logoimg[0].width()*0.25),
+ int(logoimg[0].height()*0.25) );
+
+ i = ImageItem(logoimg[int(4*random.random()%4)],self.canvas)
+ i.move((self.canvas.width()-logoimg[0].width())*random.random()%(self.canvas.width()-logoimg[0].width()),
+ (self.canvas.height()-logoimg[0].width())*random.random()%(self.canvas.height()-logoimg[0].width()))
+ i.setZ(256*random.random()%256+256)
+ i.show()
+
+ def addCircle(self):
+ i = QCanvasEllipse(50,50,self.canvas)
+ i.setBrush( QBrush(QColor(256*random.random()%32*8,256*random.random()%32*8,256*random.random()%32*8) ))
+ i.move(self.canvas.width()*random.random()%self.canvas.width(),self.canvas.width()*random.random()%self.canvas.height())
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def addHexagon(self):
+ i = QCanvasPolygon(self.canvas)
+ size = canvas.width() / 25
+ pa=QPointArray(6)
+ pa.setPoint(0,QPoint(2*size,0))
+ pa.setPoint(1,QPoint(size,-size*173/100))
+ pa.setPoint(2,QPoint(-size,-size*173/100))
+ pa.setPoint(3,QPoint(-2*size,0))
+ pa.setPoint(4,QPoint(-size,size*173/100))
+ pa.setPoint(5,QPoint(size,size*173/100))
+ i.setPoints(pa)
+ i.setBrush( QBrush(QColor(256*random.random()%32*8,256*random.random()%32*8,256*random.random()%32*8) ))
+ i.move(self.canvas.width()*random.random()%self.canvas.width(),self.canvas.width()*random.random()%self.canvas.height())
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def addPolygon(self):
+ i = QCanvasPolygon(self.canvas)
+ size = self.canvas.width()/2
+ pa=QPointArray(6)
+ pa.setPoint(0, QPoint(0,0))
+ pa.setPoint(1, QPoint(size,size/5))
+ pa.setPoint(2, QPoint(size*4/5,size))
+ pa.setPoint(3, QPoint(size/6,size*5/4))
+ pa.setPoint(4, QPoint(size*3/4,size*3/4))
+ pa.setPoint(5, QPoint(size*3/4,size/4))
+
+ i.setPoints(pa)
+ i.setBrush(QBrush( QColor(256*random.random()%32*8,256*random.random()%32*8,256*random.random()%32*8)) )
+ i.move(self.canvas.width()*random.random()%self.canvas.width(),self.canvas.width()*random.random()%self.canvas.height())
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def addSpline(self):
+ i = QCanvasSpline(self.canvas)
+ size = canvas.width()/6
+ pa=QPointArray(12)
+ pa.setPoint(0,QPoint(0,0))
+ pa.setPoint(1,QPoint(size/2,0))
+ pa.setPoint(2,QPoint(size,size/2))
+ pa.setPoint(3,QPoint(size,size))
+ pa.setPoint(4,QPoint(size,size*3/2))
+ pa.setPoint(5,QPoint(size/2,size*2))
+ pa.setPoint(6,QPoint(0,size*2))
+ pa.setPoint(7,QPoint(-size/2,size*2))
+ pa.setPoint(8,QPoint(size/4,size*3/2))
+ pa.setPoint(9,QPoint(0,size))
+ pa.setPoint(10,QPoint(-size/4,size/2))
+ pa.setPoint(11,QPoint(-size/2,0))
+ i.setControlPoints(pa)
+ i.setBrush( QBrush(QColor(256*random.random()%32*8,256*random.random()%32*8,256*random.random()%32*8) ))
+ i.move(self.canvas.width()*random.random()%self.canvas.width(),self.canvas.width()*random.random()%self.canvas.height())
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def addText(self):
+ i = QCanvasText(self.canvas)
+ i.setText("QCanvasText")
+ i.move(self.canvas.width()*random.random()%self.canvas.width(),self.canvas.width()*random.random()%self.canvas.height())
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def addLine(self):
+ i = QCanvasLine(self.canvas);
+ i.setPoints( self.canvas.width()*random.random()%self.canvas.width(), self.canvas.width()*random.random()%self.canvas.height(),
+ self.canvas.width()*random.random()%self.canvas.width(), self.canvas.width()*random.random()%self.canvas.height() )
+ i.setPen( QPen(QColor(256*random.random()%32*8,256*random.random()%32*8,256*random.random()%32*8), 6) )
+ i.setZ(256*random.random()%256)
+ i.show()
+
+ def ternary(self,exp,x,y):
+ if exp:
+ return x
+ else:
+ return y
+
+ def addMesh(self):
+ x0 = 0;
+ y0 = 0;
+
+ if not self.tb:
+ self.tb = QBrush( Qt.red )
+ if not self.tp:
+ self.tp = QPen( Qt.black )
+
+ nodecount = 0;
+
+ w = self.canvas.width()
+ h = self.canvas.height()
+
+ dist = 30
+ rows = h / dist
+ cols = w / dist
+
+ #ifndef QT_NO_PROGRESSDIALOG
+ #progress=QProgressDialog( "Creating mesh...", "Abort", rows,
+ # self, "progress", True );
+ #endif
+
+ lastRow=[]
+ for c in range(cols):
+ lastRow.append(NodeItem(self.canvas))
+ for j in range(rows):
+ n = self.ternary(j%2 , cols-1 , cols)
+ prev = 0;
+ for i in range(n):
+ el = NodeItem( self.canvas )
+ nodecount=nodecount+1
+ r = 20*20*random.random()
+ xrand = r %20
+ yrand = (r/20) %20
+ el.move( xrand + x0 + i*dist + self.ternary(j%2 , dist/2 , 0 ),
+ yrand + y0 + j*dist );
+
+ if j > 0 :
+ if i < cols-1 :
+ EdgeItem( lastRow[i], el, self.canvas ).show()
+ if j%2 :
+ EdgeItem( lastRow[i+1], el, self.canvas ).show()
+ elif i > 0 :
+ EdgeItem( lastRow[i-1], el, self.canvas ).show()
+ if prev:
+ EdgeItem( prev, el, self.canvas ).show()
+
+ if i > 0 :
+ lastRow[i-1] = prev
+ prev = el
+ el.show()
+
+ lastRow[n-1]=prev
+ #ifndef QT_NO_PROGRESSDIALOG
+ #progress.setProgress( j )
+ #if progress.wasCancelled() :
+ # break
+ #endif
+
+ #ifndef QT_NO_PROGRESSDIALOG
+ #progress.setProgress( rows )
+ #endif
+ #// qDebug( "%d nodes, %d edges", nodecount, EdgeItem::count() );
+
+ def addRectangle(self):
+ i = QCanvasRectangle( self.canvas.width()*random.random()%self.canvas.width(),
+ self.canvas.width()*random.random()%self.canvas.height(),
+ self.canvas.width()/5,self.canvas.width()/5,self.canvas)
+ z = 256*random.random()%256
+ i.setBrush( QBrush(QColor(z,z,z) ))
+ i.setPen( QPen(QColor(self.canvas.width()*random.random()%32*8,
+ self.canvas.width()*random.random()%32*8,
+ self.canvas.width()*random.random()%32*8), 6) )
+ i.setZ(z)
+ i.show()
+
+
+if __name__=='__main__':
+ app=QApplication(sys.argv)
+
+ if len(sys.argv) > 1:
+ butterfly_fn=QString(sys.argv[1])
+ else:
+ butterfly_fn=QString("butterfly.png")
+
+ if len(sys.argv) > 2:
+ logo_fn = QString(sys.argv[2])
+ else:
+ logo_fn=QString("qtlogo.png")
+
+ canvas=QCanvas(800,600)
+ canvas.setAdvancePeriod(30)
+ m=Main(canvas,None,"pyqt canvas example")
+ m.resize(m.sizeHint())
+
+ qApp.setMainWidget(m)
+ m.setCaption("Qt Canvas Example ported to PyQt")
+ if QApplication.desktop().width() > m.width() + 10 and QApplication.desktop().height() > m.height() + 30:
+ m.show()
+ else:
+ m.showMaximized()
+
+ m.show();
+ #// m.help();
+ qApp.setMainWidget(None);
+
+ QObject.connect( qApp, SIGNAL("lastWindowClosed()"), qApp, SLOT("quit()") )
+
+ app.exec_loop()
+
+ # We need to explicitly delete the canvas now (and, therefore, the main
+ # window beforehand) to make sure that the sprite logo doesn't get garbage
+ # collected first.
+ views = []
+ del m
+ del canvas
diff --git a/python/pyqt/examples3/canvas/qt-trans.xpm b/python/pyqt/examples3/canvas/qt-trans.xpm
new file mode 100644
index 00000000..225f684f
--- /dev/null
+++ b/python/pyqt/examples3/canvas/qt-trans.xpm
@@ -0,0 +1,54 @@
+/* XPM */
+static char *qtlogo_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"54 34 13 1",
+/* colors */
+" c #000000",
+". c #999999",
+"X c #333366",
+"o c #6666CC",
+"O c #333333",
+"@ c #666699",
+"# c #000066",
+"$ c #666666",
+"% c #3333CC",
+"& c #000033",
+"* c #9999CC",
+"= c #333399",
+"+ c None",
+/* pixels */
+"+++++++++++++++++++.$OOO$.++++++++++++++++++++++++++++",
+"+++++++++++++++++$ O.+++++++++++++++++++++++++",
+"+++++++++++++++.O $++++++++++++++++++++++++",
+"++++++++++++++. $.++.$ O+++++++++++++++++++++++",
+"+++++++++++++. O.+++++++$ O++++++++++++++++++++++",
+"+++++++++++++O ++++++++++$ $+++++++++++++++++++++",
+"++++++++++++$ .+++++++++++O .++++++++++++++++++++",
+"+++++++++++. O+++++++++++++ O++++++.+++++++++++++",
+"+++++++++++$ .+++++++++++++$ .+++.O +++++++++++++",
+"+++++++++++ +++++++++++++++ O+++. +++++++++++++",
+"++++++++++. &Xoooo*++++++++++$ +++. +++++++++++++",
+"++++++++++@=%%%%%%%%%%*+++++++. .++. +++++++++++++",
+"+++++++**oooooo**++*o%%%%o+++++ $++O +++++++++++++",
+"+++++*****$OOX@oooo*++*%%%%%*++O $+. OOO$++++++++*",
+"++..+.++....$O$+*ooooo*+*o%%%%%O O+$ $$O.++++++**+",
+"***+*+++++$$....+++*oooo**+*o%%# O++O ++++++***o*++",
+"*+++++++++O $.....++**oooo**+*X &o*O ++++*ooo*++++",
+"++++++++++$ O++.....++**oooo*X &%%& ..*o%%*++++++",
+"++++++++++$ ++++.....+++**ooO $*o& @oo*+++++++++",
+"++++++++++. .++++++.....+++*O Xo*O .++++++++++++",
+"+++++++++++ O+++++++++...... .++O +++++++++++++",
+"+++++++++++O +++.$$$.++++++. O+++O +++++++++++++",
+"+++++++++++. $$OO O.++++O .+++O +++++++++++++",
+"++++++++++++O .+++.O $++. O++++O +++++++++++++",
+"++++++++++++. O+++++O $+O +++++O +++++++++++++",
+"+++++++++++++. O+++++O O .+++++O .++++++++++++",
+"++++++++++++++$ .++++O .++++.+$ O+.$.++++++++",
+"+++++++++++++++. O$$O .+++++... +++++++++",
+"+++++++++++++++++$ O+++++$$+.O O$.+++++++++",
+"+++++++++++++++++++$OO O$.O O.++. .++++++++++++++++",
+"+++++++++++++++++++++++++++. OO .++++++++++++++++",
+"++++++++++++++++++++++++++++. O+++++++++++++++++",
+"+++++++++++++++++++++++++++++. .+++++++++++++++++",
+"++++++++++++++++++++++++++++++.O O.++++++++++++++++++"
+};
diff --git a/python/pyqt/examples3/canvas/qtlogo.png b/python/pyqt/examples3/canvas/qtlogo.png
new file mode 100644
index 00000000..a48b1a1a
--- /dev/null
+++ b/python/pyqt/examples3/canvas/qtlogo.png
Binary files differ
diff --git a/python/pyqt/examples3/checklists.py b/python/pyqt/examples3/checklists.py
new file mode 100755
index 00000000..12a3cdb9
--- /dev/null
+++ b/python/pyqt/examples3/checklists.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+
+# vim:tabstop=2:shiftwidth=2:expandtab:cinoptions=(s,U1,m1
+# Copyright (C) 2002 Oleksandr Yakovlyev (yshurik) <yshurik@thekompany.com>
+
+import sys
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+class CheckLists(QWidget):
+ def __init__(self, *args):
+ apply( QWidget.__init__, (self, ) + args )
+
+ lay = QHBoxLayout(self)
+ lay.setMargin(5)
+
+ vbox1 = QVBoxLayout(lay)
+ vbox1.setMargin(5)
+
+ # First child: a Label
+ vbox1.addWidget(QLabel("Check some items!", self))
+
+ # Second child: the ListView
+ self.lv1 = QListView(self)
+ vbox1.addWidget(self.lv1)
+ self.lv1.addColumn("Items")
+ self.lv1.setRootIsDecorated(TRUE)
+
+ # create a list with 4 ListViewItems which will be parent items of other ListViewItems
+
+ parentList = []
+
+ parentList.append( QListViewItem( self.lv1, "Parent Item 1" ) )
+ parentList.append( QListViewItem( self.lv1, "Parent Item 2" ) )
+ parentList.append( QListViewItem( self.lv1, "Parent Item 3" ) )
+ parentList.append( QListViewItem( self.lv1, "Parent Item 4" ) )
+
+ num = 0
+
+ self.childList1 = []
+ # go through the list of parent items...
+ for i in range(4):
+ it = parentList[i]
+ it.setOpen( TRUE )
+
+ # ...and create 5 checkable child ListViewItems for each parent item
+ for j in range(5):
+ ci = QCheckListItem( it, QString("%1. Child of Parent %2").arg( j ).arg( i ), QCheckListItem.CheckBox )
+ self.childList1.append(ci)
+
+ # Create another widget for layouting
+ tmp1 = QVBoxLayout( lay )
+ tmp1.setMargin( 5 )
+
+ # create a pushbutton
+ copy1 = QPushButton( " -> ", self )
+ tmp1.addWidget( copy1 )
+ copy1.setMaximumWidth( copy1.sizeHint().width() );
+ # connect the SIGNAL clicked() of the pushbutton with the SLOT copy1to2()
+ self.connect( copy1, SIGNAL('clicked()'), self.copy1to2 )
+
+ # another widget for layouting
+ vbox2 = QVBoxLayout( lay )
+ vbox2.setMargin( 5 )
+
+ # and another label
+ vbox2.addWidget( QLabel( "Check one item!", self ) )
+
+ # create the second listview
+ self.lv2 = QListView( self )
+ vbox2.addWidget( self.lv2 )
+ self.lv2.addColumn( "Items" )
+ self.lv2.setRootIsDecorated( TRUE )
+
+ # another widget needed for layouting only
+ tmp2 = QVBoxLayout( lay )
+ tmp2.setMargin( 5 )
+
+ # create another pushbutton...
+ copy2 = QPushButton( " -> ", self )
+ lay.addWidget( copy2 )
+ copy2.setMaximumWidth( copy2.sizeHint().width() )
+ # ...and connect its clicked() SIGNAL to the copy2to3() SLOT
+ self.connect( copy2, SIGNAL('clicked()'), self.copy2to3 )
+
+ tmp3 = QVBoxLayout( lay )
+ tmp3.setMargin( 5 )
+
+ # and create a label which will be at the right of the window
+ self.label = QLabel( "No Item yet...", self )
+ tmp3.addWidget( self.label )
+
+ def copy1to2(self):
+ self.lv2.clear()
+
+ # Insert first a controller Item into the second ListView. Always if Radio-ListViewItems
+ # are inserted into a Listview, the parent item of these MUST be a controller Item!
+ item = QCheckListItem( self.lv2, "Controller", QCheckListItem.Controller )
+ item.setOpen( TRUE )
+
+ self.listChild2 = []
+ for it in self.childList1:
+ # ...check state of childs, and...
+ if it.parent() != None:
+ # ...if the item is checked...
+ if it.isOn():
+ # ...insert a Radio-ListViewItem with the same text into the second ListView
+ ri = QCheckListItem(item , it.text(0), QCheckListItem.RadioButton)
+ self.listChild2.append(ri)
+
+ if item.firstChild() != None:
+ item.firstChild().setOn(TRUE)
+
+ def copy2to3(self):
+ self.label.setText( "No Item checked" )
+
+ # iterate through the second ListView...
+ for it in self.listChild2:
+ # ...check state of childs, and...
+ if it.parent() != None:
+ # ...if the item is checked...
+ if it.isOn():
+ # ...set the text of the item to the label
+ self.label.setText( it.text( 0 ) )
+
+a = QApplication(sys.argv)
+
+checkLists = CheckLists()
+checkLists.resize(700, 400)
+checkLists.setCaption("PyQt example - CheckLists")
+
+a.setMainWidget(checkLists)
+checkLists.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/cursor.py b/python/pyqt/examples3/cursor.py
new file mode 100755
index 00000000..f530c6a1
--- /dev/null
+++ b/python/pyqt/examples3/cursor.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+
+"""$Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+# cb_bits and cm_bits were generated by X bitmap program.
+
+cb_width = 32
+cb_height = 32
+
+# cursor bitmap
+cb_bits = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0f\x00" \
+ "\x00\x06\x30\x00\x80\x01\xc0\x00\x40\x00\x00\x01" \
+ "\x20\x00\x00\x02\x10\x00\x00\x04\x08\x3e\x3e\x08" \
+ "\x08\x03\xe0\x08\xc4\x00\x00\x11\x04\x1e\x78\x10" \
+ "\x02\x0c\x30\x20\x02\x40\x00\x20\x02\x40\x00\x20" \
+ "\x02\x40\x00\x20\x02\x20\x04\x20\x02\x20\x04\x20" \
+ "\x02\x10\x08\x20\x02\x08\x08\x20\x02\xf0\x07\x20" \
+ "\x04\x00\x00\x10\x04\x00\x00\x10\x08\x00\xc0\x08" \
+ "\x08\x3c\x30\x08\x10\xe6\x19\x04\x20\x00\x0f\x02" \
+ "\x40\x00\x00\x01\x80\x01\xc0\x00\x00\x06\x30\x00" \
+ "\x00\xf8\x0f\x00\x00\x00\x00\x00"
+
+cm_width = 32
+cm_height = 32
+
+# cursor bitmap mask
+cm_bits = "\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\xfe\x3f\x00" \
+ "\x80\x07\xf0\x00\xc0\x01\xc0\x01\x60\x00\x00\x03" \
+ "\x30\x00\x00\x06\x18\x00\x00\x0c\x0c\x3e\x3e\x18" \
+ "\x0e\x03\xe0\x18\xc6\x00\x00\x31\x07\x1e\x78\x30" \
+ "\x03\x0c\x30\x60\x03\x40\x00\x60\x03\x40\x00\x60" \
+ "\x03\x40\x00\x60\x03\x20\x04\x60\x03\x20\x04\x60" \
+ "\x03\x10\x08\x60\x03\x08\x08\x60\x03\xf0\x07\x60" \
+ "\x06\x00\x00\x30\x06\x00\x00\x30\x0c\x00\xc0\x18" \
+ "\x0c\x3c\x30\x18\x18\xe6\x19\x0c\x30\x00\x0f\x06" \
+ "\x60\x00\x00\x03\xc0\x01\xc0\x01\x80\x07\xf0\x00" \
+ "\x00\xfe\x3f\x00\x00\xf8\x0f\x00"
+
+# The CursorView contains many labels with different cursors.
+class CursorView( QWidget ): # cursor view
+ def __init__( self ):
+ QWidget.__init__( self )
+ # Constructs a cursor view.
+#enum CursorShape { ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IbeamCursor, SizeVerCursor, SizeHorCursor, SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor, PointingHandCursor, ForbiddenCursor, WhatsThisCursor, LastCursor = WhatsThisCursor, BitmapCursor = 24 }
+
+ shape = [
+ "ArrowCursor", "UpArrowCursor", "CrossCursor",
+ "WaitCursor", "IbeamCursor", "SizeVerCursor",
+ "SizeHorCursor", "SizeBDiagCursor", "SizeFDiagCursor",
+ "SizeAllCursor", "BlankCursor", "SplitVCursor",
+ "SplitHCursor", "PointingHandCursor", "ForbiddenCursor",
+ "WhatsThisCursor"
+ ]
+ name = [
+ "standard arrow cursor", "upwards arrow",
+ "crosshair", "hourglass/watch",
+ "ibeam/text entry", "vertical resize",
+ "horizontal resize", "diagonal resize (/)",
+ "diagonal resize (\)", "all directions resize",
+ "blank/invisible cursor", "vertical splitting",
+ "horziontal splitting", "a pointing hand",
+ "a slashed circle", "an arrow with a question mark"
+ ]
+
+ self.setCaption( "CursorView" ) # set window caption
+
+ grid = QGridLayout( self, 5, 4, 20 )
+
+ i=0
+ for y in range( 0, 4, 1 ) : # create the small labels
+ for x in range( 0, 4, 1 ) :
+ label = QLabel( self )
+ label.setCursor( QCursor(i) )
+ label.setText( shape[i] );
+ label.setAlignment( self.AlignCenter )
+ label.setFrameStyle( QFrame.Box | QFrame.Raised )
+ grid.addWidget( label, x, y )
+ QToolTip.add( label, name[i] )
+ i += 1
+
+ cb = QBitmap( cb_width, cb_height, cb_bits, True )
+ cm = QBitmap( cm_width, cm_height, cm_bits, True )
+ custom = QCursor( cb, cm ) # create bitmap cursor
+
+ label = QLabel( self ) # create the big label
+ label.setCursor( custom )
+ label.setText( "Custom bitmap cursor" )
+ QToolTip.add( label, "custom bitmap cursor" )
+ label.setAlignment( self.AlignCenter )
+ label.setFrameStyle( QFrame.Box | QFrame.Sunken )
+ grid.addMultiCellWidget( label, 4, 4, 0, 3 )
+
+# Create and display a CursorView.
+def main( args ):
+ a = QApplication(sys.argv) # application object
+ v = CursorView() # cursor view
+ v.setCaption( "Qt Example - Cursors" )
+ a.setMainWidget( v )
+ v.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/dclock.py b/python/pyqt/examples3/dclock.py
new file mode 100755
index 00000000..5382d4fa
--- /dev/null
+++ b/python/pyqt/examples3/dclock.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+# A port to PyQt of the dclock example from Qt v2.x.
+
+
+import sys, string
+from qt import *
+
+
+class DigitalClock(QLCDNumber):
+ def __init__(self, parent=None, name=None):
+ QLCDNumber.__init__(self, parent, name)
+ self.showingColon = 0
+ self.setFrameStyle(QFrame.Panel | QFrame.Raised)
+ self.setLineWidth(2)
+ self.showTime()
+ self.normalTimer = self.startTimer(500)
+ self.showDateTimer = -1
+
+ def timerEvent(self, e):
+ if e.timerId() == self.showDateTimer:
+ self.stopDate()
+ else:
+ if self.showDateTimer == -1:
+ self.showTime()
+
+ def mousePressEvent(self, e):
+ if e.button() == Qt.LeftButton:
+ self.showDate()
+
+ def showDate(self):
+ if self.showDateTimer != -1:
+ return
+ d = QDate.currentDate()
+ self.display('%2d %2d' % (d.month(), d.day()))
+ self.showDateTimer = self.startTimer(2000)
+
+ def stopDate(self):
+ self.killTimer(self.showDateTimer)
+ self.showDateTimer = -1
+ self.showTime()
+
+ def showTime(self):
+ self.showingColon = not self.showingColon
+ s = list(str(QTime.currentTime().toString())[:5]) #.left(5)
+ if not self.showingColon:
+ s[2] = ' '
+ if s[0] == '0':
+ s[0] = ' '
+ s = string.join(s,'')
+ self.display(s)
+
+a = QApplication(sys.argv)
+clock = DigitalClock()
+clock.resize(170,80)
+a.setMainWidget(clock)
+clock.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/desktop.py b/python/pyqt/examples3/desktop.py
new file mode 100755
index 00000000..7036248d
--- /dev/null
+++ b/python/pyqt/examples3/desktop.py
@@ -0,0 +1,230 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+seed = 0.353535353535
+KINDA_RAND_MAX = 32767
+
+def kindaRand():
+ global seed
+ seed = seed * 147
+ seed = seed - int(seed)
+ return int(seed*(KINDA_RAND_MAX + 1))
+
+velmax = 15
+velmin = 4
+
+def velocity(i):
+ if i == 1 or i == 2:
+ i = (kindaRand()&0x7fff % velmax)/3 + velmin
+ else:
+ i = (kindaRand()&0x7fff % velmax) + velmin
+ return i
+
+maxpoints = 5
+maxcurves = 8
+
+def poly():
+ d = QApplication.desktop()
+ d.setEraseColor(Qt.white)
+ xvel = [ 0 ] * maxpoints
+ yvel = [ 0 ] * maxpoints
+ head = 0
+ tail = -maxcurves + 2
+ a = [ QPointArray() ] * maxcurves
+ r = d.rect()
+ for i in range(maxcurves):
+ a[i].resize(maxpoints)
+ p = a[0]
+ for i in range(maxpoints):
+ p.setPoint(i, (kindaRand()&0x7fff) % r.width(),
+ (kindaRand()&0x7fff) % r.height() )
+ xvel[i] = velocity(i)
+ yvel[i] = velocity(i)
+
+ paint = QPainter()
+ paint.begin(d)
+
+ for ntimes in range(2000):
+ paint.setBrush(QColor(kindaRand()%360,180,255, QColor.Hsv))
+ paint.drawPolygon(a[head])
+ tail = tail + 1
+ if tail >= maxcurves:
+ tail = 0
+ minx = r.left()
+ maxx = r.right()
+ miny = r.top()
+ maxy = r.bottom()
+ p = a[head]
+ head = head + 1
+ if head >= maxcurves:
+ head = 0
+ for i in range(maxpoints):
+ x, y = p.point(i)
+ x = x + xvel[i]
+ y = y + yvel[i]
+ if x >= maxx:
+ x = maxx - (x - maxx + 1)
+ xvel[i] = -velocity(i)
+ if x <= minx:
+ x = minx + (minx - x + 1)
+ xvel[i] = velocity(i)
+ if y >= maxy:
+ y = maxy - (y - maxy + 1)
+ yvel[i] = -velocity(i)
+ if y <= miny:
+ y = miny + (miny - y + 1)
+ yvel[i] = velocity(i)
+ a[head].setPoint(i, x, y)
+ paint.end()
+
+def rotate():
+ w = 64
+ h = 64
+ image = QImage(w, h, 8, 128)
+ for i in range(128):
+ image.setColor(i, qRgb(i,0,0))
+ for y in range(h):
+ for x in range(w):
+ image.setPixel(x,y,(x+y)%128)
+
+ pm = QPixmap()
+ pm.convertFromImage(image)
+ pm.setOptimization(QPixmap.BestOptim)
+
+ d = QApplication.desktop()
+
+ for i in range(0,361,2):
+ m = QWMatrix()
+ m.rotate(i)
+ rpm = pm.xForm(m)
+ d.setErasePixmap(rpm)
+ d.update()
+
+def generateStone(pm, c1, c2, c3):
+ p = QPainter()
+ p1 = QPen(c1, 0)
+ p2 = QPen(c2, 0)
+ p3 = QPen(c3, 0)
+
+ p.begin(pm)
+ for i in range(pm.width()):
+ for j in range(pm.height()):
+ r = kindaRand()
+ if r < KINDA_RAND_MAX / 3:
+ p.setPen(p1)
+ elif r < KINDA_RAND_MAX / 3 * 2:
+ p.setPen(p2)
+ else:
+ p.setPen(p3)
+ p.drawPoint(i, j)
+ p.end()
+
+def drawShadeText(p, x, y, text, topColor, bottomColor, sw=2):
+ if not p.isActive():
+ return
+
+ p.setPen(bottomColor)
+ p.drawText(x+sw, y+sw, text)
+ p.setPen(topColor)
+ p.drawText(x, y, text)
+
+class DesktopWidget(QWidget):
+ def __init__(self, s, parent=None, name=''):
+ QWidget.__init__(self, parent, name, Qt.WType_Desktop | Qt.WPaintDesktop)
+ self.text = s
+ self.pm = None
+
+ def paintEvent(self, pe):
+ c1 = self.eraseColor()
+ c2 = c1.light(104)
+ c3 = c1.dark(106)
+ if not self.pm:
+ self.pm = QPixmap(64, 64)
+ generateStone(self.pm, c1, c2, c3)
+ self.setErasePixmap(self.pm)
+ self.update()
+ br = self.fontMetrics().boundingRect(self.text)
+ offscreen = QPixmap(br.width(), br.height())
+ x = self.width()/2 - br.width()/2
+ y = self.height()/2 - br.height()/2
+ offscreen.fill(self, x, y)
+ p = QPainter()
+ p.begin(offscreen)
+ drawShadeText(p, -br.x(), -br.y(), self.text, c2, c3, 3)
+ p.end()
+ bitBlt(self, x, y, offscreen)
+
+def desktopWidget(s='Trolltech'):
+ t = DesktopWidget(s)
+ t.update()
+ qApp.exec_loop()
+
+def desktopText(s='Trolltech'):
+ border = 20
+
+ c1 = qApp.palette().normal().background()
+ c2 = c1.light(104)
+ c3 = c1.dark(106)
+
+ pm = QPixmap(10, 10)
+ p = QPainter()
+ p.begin(pm)
+ r = p.fontMetrics().boundingRect(s)
+ p.end()
+
+ appWidth = qApp.desktop().width()
+ appHeight = qApp.desktop().height()
+ if r.width() > appWidth - border*2:
+ r.setWidth(appWidth - border*2)
+ if r.height() > appHeight - border*2:
+ r.setHeight(appHeight - border*2)
+
+ pm.resize(r.size().width()+border*2,r.size().height()+border*2)
+ generateStone(pm, c1, c2, c3)
+ p.begin(pm)
+ drawShadeText(p, -r.x()+border, -r.y()+border, s, c2, c3)
+ p.end()
+
+ qApp.desktop().setErasePixmap(pm)
+
+a = QApplication(sys.argv)
+if len(sys.argv) > 1:
+ f = QFont('charter', 96, QFont.Black)
+ f.setStyleHint(QFont.Times)
+ a.setFont(f)
+
+validOptions = 0
+
+if len(sys.argv) == 2:
+ validOptions = 1
+ if sys.argv[1] == '-poly':
+ poly()
+ elif sys.argv[1] == '-rotate':
+ rotate()
+ elif sys.argv[1] == '-troll':
+ desktopText()
+ elif sys.argv[1] == '-trollwidget':
+ desktopWidget()
+ else:
+ validOptions = 0
+
+if len(sys.argv) == 3:
+ validOptions = 1
+ if sys.argv[1] == '-shadetext':
+ desktopText(sys.argv[2])
+ elif sys.argv[1] == '-shadewidget':
+ desktopWidget(sys.argv[2])
+ else:
+ validOptions = 0
+
+if not validOptions:
+ print """Usage:
+\tdesktop -poly
+\tdesktop -rotate
+\tdesktop -troll
+\tdesktop -trollwidget
+\tdesktop -shadetext <text>
+\tdesktop -shadewidget <text>"""
+ rotate()
diff --git a/python/pyqt/examples3/dirview.py b/python/pyqt/examples3/dirview.py
new file mode 100755
index 00000000..9a6f37b3
--- /dev/null
+++ b/python/pyqt/examples3/dirview.py
@@ -0,0 +1,452 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+** Some corrections by M. Biermaier (http://www.office-m.at)
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+folder_closed_xpm = [
+ "16 16 9 1",
+ "g c #808080",
+ "b c #c0c000",
+ "e c #c0c0c0",
+ "# c #000000",
+ "c c #ffff00",
+ ". c None",
+ "a c #585858",
+ "f c #a0a0a4",
+ "d c #ffffff",
+ "..###...........",
+ ".#abc##.........",
+ ".#daabc#####....",
+ ".#ddeaabbccc#...",
+ ".#dedeeabbbba...",
+ ".#edeeeeaaaab#..",
+ ".#deeeeeeefe#ba.",
+ ".#eeeeeeefef#ba.",
+ ".#eeeeeefeff#ba.",
+ ".#eeeeefefff#ba.",
+ ".##geefeffff#ba.",
+ "...##gefffff#ba.",
+ ".....##fffff#ba.",
+ ".......##fff#b##",
+ ".........##f#b##",
+ "...........####."
+]
+
+folder_open_xpm = [
+ "16 16 11 1",
+ "# c #000000",
+ "g c #c0c0c0",
+ "e c #303030",
+ "a c #ffa858",
+ "b c #808080",
+ "d c #a0a0a4",
+ "f c #585858",
+ "c c #ffdca8",
+ "h c #dcdcdc",
+ "i c #ffffff",
+ ". c None",
+ "....###.........",
+ "....#ab##.......",
+ "....#acab####...",
+ "###.#acccccca#..",
+ "#ddefaaaccccca#.",
+ "#bdddbaaaacccab#",
+ ".eddddbbaaaacab#",
+ ".#bddggdbbaaaab#",
+ "..edgdggggbbaab#",
+ "..#bgggghghdaab#",
+ "...ebhggghicfab#",
+ "....#edhhiiidab#",
+ "......#egiiicfb#",
+ "........#egiibb#",
+ "..........#egib#",
+ "............#ee#"
+]
+
+folder_locked = [
+ "16 16 10 1",
+ "h c #808080",
+ "b c #ffa858",
+ "f c #c0c0c0",
+ "e c #c05800",
+ "# c #000000",
+ "c c #ffdca8",
+ ". c None",
+ "a c #585858",
+ "g c #a0a0a4",
+ "d c #ffffff",
+ "..#a#...........",
+ ".#abc####.......",
+ ".#daa#eee#......",
+ ".#ddf#e##b#.....",
+ ".#dfd#e#bcb##...",
+ ".#fdccc#daaab#..",
+ ".#dfbbbccgfg#ba.",
+ ".#ffb#ebbfgg#ba.",
+ ".#ffbbe#bggg#ba.",
+ ".#fffbbebggg#ba.",
+ ".##hf#ebbggg#ba.",
+ "...###e#gggg#ba.",
+ ".....#e#gggg#ba.",
+ "......###ggg#b##",
+ ".........##g#b##",
+ "...........####."
+]
+
+pix_file = [
+ "16 16 7 1",
+ "# c #000000",
+ "b c #ffffff",
+ "e c #000000",
+ "d c #404000",
+ "c c #c0c000",
+ "a c #ffffc0",
+ ". c None",
+ "................",
+ ".........#......",
+ "......#.#a##....",
+ ".....#b#bbba##..",
+ "....#b#bbbabbb#.",
+ "...#b#bba##bb#..",
+ "..#b#abb#bb##...",
+ ".#a#aab#bbbab##.",
+ "#a#aaa#bcbbbbbb#",
+ "#ccdc#bcbbcbbb#.",
+ ".##c#bcbbcabb#..",
+ "...#acbacbbbe...",
+ "..#aaaacaba#....",
+ "...##aaaaa#.....",
+ ".....##aa#......",
+ ".......##......."
+]
+
+folderLocked = None
+folderClosed = None
+folderOpened = None
+fileNormal = None
+
+class FileItem( QListViewItem ) :
+ def __init__( self, parent=None, s1=QString.null, s2=QString.null ):
+ QListViewItem.__init__( self, parent, s1, s2 )
+ self.pix = None
+
+ def setPixmap( self, p ) :
+ self.pix = p
+ self.setup()
+ self.widthChanged( 0 )
+ self.invalidateHeight()
+ self.repaint()
+
+ def pixmap( self, i ) :
+ if i : return None
+ else : return self.pix;
+
+# Class Directory
+class Directory( QListViewItem ) :
+ def __init__( self, parent=None, filename=QString.null, col2=QString.null ):
+ QListViewItem.__init__( self, parent, filename, col2 )
+ self.pix = None
+ global folderLocked, folderClosed, folderOpened, fileNormal
+ self.showDirsOnly = False
+ if isinstance(parent, QListView):
+ self.p = None
+ self.showDirsOnly = parent.showDirsOnly()
+ self.f = QFile( QString('/') )
+ else:
+ self.p = parent
+ self.showDirsOnly = parent.showDirsOnly
+ self.f = QFile( QString(filename) )
+
+ self.readable = QDir( self.fullName() ).isReadable()
+ if not self.readable : self.setPixmap( folderLocked )
+ else : self.setPixmap( folderClosed )
+
+ def setPixmap( self, px ) :
+ self.pix = px
+ self.setup()
+ self.widthChanged( 0 )
+ self.invalidateHeight()
+ self.repaint()
+
+ def pixmap( self, i ) :
+ if i : return None
+ else : return self.pix
+
+ def setOpen( self, o ) :
+ if o : self.setPixmap( folderOpened )
+ else : self.setPixmap( folderClosed )
+
+ if o and not self.childCount() :
+ s = QString( self.fullName() )
+ thisDir = QDir( s )
+ if not thisDir.isReadable() :
+ self.readable = False
+ self.setExpandable( False )
+ return
+
+ self.listView().setUpdatesEnabled( False )
+ files = thisDir.entryInfoList()
+ if files :
+ fi = QFileInfo()
+ for it in files:
+ fi = it
+ if str(fi.fileName()) == "." or str(fi.fileName()) == ".." :
+ continue # nothing
+ elif fi.isSymLink() and not self.showDirsOnly :
+ item = FileItem( self, fi.fileName(), "Symbolic Link" )
+ item.setPixmap( fileNormal )
+ elif fi.isDir() :
+ Directory( self, fi.fileName() )
+ elif not self.showDirsOnly :
+ if fi.isFile() : item = FileItem( self, fi.fileName(), "File" )
+ else : item = FileItem( self, fi.fileName(), "Special" )
+ item.setPixmap( fileNormal )
+
+ self.listView().setUpdatesEnabled( True )
+ QListViewItem.setOpen( self, o )
+
+ def setup( self ):
+ self.setExpandable( True )
+ QListViewItem.setup( self )
+
+ def fullName( self ):
+ s = QString()
+ if self.p :
+ s = self.p.fullName()
+ s.append( self.f.name() )
+ s.append( "/" )
+ else :
+ s = self.f.name()
+ return s
+
+ def text( self, column ) :
+ if column == 0 : return self.f.name()
+ elif self.readable : return "Directory"
+ else : return "Unreadable Directory"
+
+# Class DirectoryView
+
+class DirectoryView( QListView ):
+ def __init__( self, parent=None, name=None, sdo=False ):
+ QListView.__init__( self, parent, name )
+ self.dirsOnly = sdo
+ self.oldCurrent = 0
+ self.dropItem = 0
+ self.presspos = QPoint(0,0)
+ self.mousePressed = False
+ global folderLocked, folderClosed, folderOpened, fileNormal #= QPixmap()
+ self.autoopenTime = 750
+
+ self.autoopen_timer = QTimer( self )
+ if not folderLocked :
+ folderLocked = QPixmap( folder_locked )
+ folderClosed = QPixmap( folder_closed_xpm )
+ folderOpened = QPixmap( folder_open_xpm )
+ fileNormal = QPixmap( pix_file )
+
+ self.connect( self, SIGNAL("doubleClicked(QListViewItem *)"),
+ self.slotFolderSelected )
+ self.connect( self, SIGNAL("returnPressed(QListViewItem *)"),
+ self.slotFolderSelected )
+
+ self.setAcceptDrops( True )
+ self.viewport().setAcceptDrops( True )
+
+ self.connect( self.autoopen_timer, SIGNAL("timeout()"), self.openFolder )
+
+ def showDirsOnly( self ):
+ return self.dirsOnly
+
+ def slotFolderSelected( self, i ):
+ if not i or not self.showDirsOnly():
+ return
+ dir = i
+ self.emit( PYSIGNAL("folderSelected(const QString &)"), (dir.fullName(), ) )
+
+ def openFolder( self ):
+ self.autoopen_timer.stop()
+ if self.dropItem and not self.dropItem.isOpen():
+ self.dropItem.setOpen( True )
+ self.dropItem.repaint()
+
+ def contentsDragEnterEvent( self, e ):
+ if not QUriDrag.canDecode(e) :
+ e.ignore()
+ return
+ self.oldCurrent = self.currentItem()
+ i = self.itemAt( self.contentsToViewport(e.pos()) )
+ if i :
+ self.dropItem = i
+ self.autoopen_timer.start( self.autoopenTime )
+
+ def contentsDragMoveEvent( self, e ) :
+ if not QUriDrag.canDecode(e) :
+ e.ignore()
+ return
+ vp = self.contentsToViewport( e.pos() )
+ i = self.itemAt( vp )
+ if i :
+ self.setSelected( i, True )
+ e.accept()
+ if i != self.dropItem :
+ self.autoopen_timer.stop()
+ self.dropItem = i
+ self.autoopen_timer.start( self.autoopenTime )
+
+ if e.action() == QDropEvent.Copy:
+ pass
+ elif e.action() == QDropEvent.Move:
+ e.acceptAction()
+ elif e.action() == QDropEvent.Link:
+ e.acceptAction()
+ else:
+ pass
+ else :
+ e.ignore()
+ self.autoopen_timer.stop()
+ self.dropItem = 0
+
+ def contentsDragLeaveEvent( self, QDragLeaveEvent ) :
+ self.autoopen_timer.stop()
+ self.dropItem = 0
+
+ self.setCurrentItem( self.oldCurrent )
+ self.setSelected( self.oldCurrent, True )
+
+ def contentsDropEvent( self, e ):
+ self.autoopen_timer.stop()
+ if not QUriDrag.canDecode(e) :
+ e.ignore()
+ return
+ item = self.itemAt( self.contentsToViewport(e.pos()) )
+ if item :
+ lst = QStringList()
+ QUriDrag.decodeLocalFiles( e, lst )
+ if e.action() == QDropEvent.Copy:
+ s = QString("Copy")
+ elif e.action() == QDropEvent.Move:
+ s = QString("Move")
+ e.acceptAction()
+ elif e.action() == QDropEvent.Link:
+ s = QString("Link")
+ e.acceptAction()
+ else:
+ s = QString("Unknown")
+
+ s += "\n\n"
+ e.accept()
+
+ for filename in lst:
+ s += filename
+ s += "\n"
+
+ s += "\nTo\n\n "
+ s += self.fullPath(item)
+ QMessageBox.information( self, "Drop target", s, "Not implemented" )
+ else :
+ e.ignore()
+
+ def fullPath( self, item ):
+ fullpath = QString( item.text(0) )
+ item = item.parent()
+ while item:
+ newpath = item.text(0)
+
+ if item.parent():
+ newpath += "/"
+
+ newpath += fullpath
+ fullpath = newpath
+ item = item.parent()
+
+ return fullpath
+
+ def contentsMousePressEvent( self, e ) :
+ QListView.contentsMousePressEvent( self, e )
+ p = QPoint( self.contentsToViewport( e.pos() ) )
+ i = self.itemAt( p )
+ if i :
+ # if the user clicked into the root decoration of the item, don't try to start a drag!
+ if self.rootIsDecorated(): isdecorated = 1
+ else : isdecorated = 0
+ if p.x() > self.header().sectionPos( self.header().mapToIndex( 0 )) + self.treeStepSize() * ( i.depth() + isdecorated + self.itemMargin() or
+ p.x() < self.header().sectionPos( self.header().mapToIndex( 0 ) ) ) :
+ self.presspos.setX(e.pos().x())
+ self.presspos.setY(e.pos().y())
+ self.mousePressed = True
+
+ def contentsMouseMoveEvent( self, e ):
+ offset = QPoint( self.presspos.x() - e.pos().x(),
+ self.presspos.y() - e.pos().y() )
+ if self.mousePressed and (offset).manhattanLength() > QApplication.startDragDistance() :
+ self.mousePressed = False
+ item = self.itemAt( self.contentsToViewport(self.presspos) )
+ if item :
+ source = self.fullPath(item)
+ if QFile.exists(source) :
+ ud = QUriDrag(self.viewport())
+ ud.setFileNames( QStringList (source) )
+ if ud.drag() :
+ QMessageBox.information( self, "Drag source",
+ QString("Delete ")+source, "Not implemented" )
+
+ def contentsMouseReleaseEvent( self, QMouseEvent ):
+ self.mousePressed = False
+
+ def setDir( self, s ):
+ it = QListViewItem( self )
+ it.setOpen(False)
+ thisDir = QDir( s )
+ it = QListViewItem( self )
+ it.setOpen(False)
+ lst = QStringList( QStringList.split( "/", s ) )
+ listview2 = []
+ listview2.extend( lst )
+
+ item = self.firstChild()
+ for it2 in listview2 :
+ while item :
+ if item.text( 0 ) == it2 :
+ item.setOpen( True )
+ break
+ item = item.itemBelow()
+ if item:
+ self.setCurrentItem( item )
+
+def main( args ):
+ a = QApplication( args )
+
+ mw = DirectoryView()
+ mw.addColumn( "Name" )
+ mw.addColumn( "Type" )
+ mw.setTreeStepSize( 20 )
+
+ roots = QDir.drives()
+ if roots :
+ for it in roots:
+ fi = it
+ root = Directory( mw, fi.filePath() )
+ if roots.count(it) <= 1 :
+ root.setOpen( True ) # be interesting
+
+ mw.resize( 400, 400 )
+ mw.setCaption( "Qt Example - Directory Browser" )
+ mw.setAllColumnsShowFocus( True )
+ a.setMainWidget( mw )
+ mw.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/dragdrop.py b/python/pyqt/examples3/dragdrop.py
new file mode 100755
index 00000000..4cc8c738
--- /dev/null
+++ b/python/pyqt/examples3/dragdrop.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# Ported to PyQt by Issac Trotts on Jan 1, 2002
+
+import sys
+from qt import *
+
+import dropsite, secret
+
+
+def addStuff( parent, yn_image, yn_secret = 0 ):
+ tll = QVBoxLayout( parent, 10 )
+ d = dropsite.DropSite( parent, 'dropsite' )
+ d.setFrameStyle( QFrame.Sunken + QFrame.WinPanel )
+ tll.addWidget( d )
+ if yn_image:
+ stuff = QPixmap()
+ if not stuff.load( "trolltech.bmp" ):
+ stuff = QPixmap(20,20)
+ stuff.fill(Qt.green)
+ d.setPixmap( stuff )
+ else:
+ d.setText("Drag and Drop")
+ d.setFont(QFont("Helvetica",18))
+ if secret:
+ s = secret.SecretSource( 42, parent )
+ tll.addWidget( s )
+
+ format = QLabel( "\n\n\n\nNone\n\n\n\n", parent )
+ tll.addWidget( format )
+ tll.activate()
+ parent.resize( parent.sizeHint() )
+
+ QObject.connect( d, PYSIGNAL('message(QString &)'),
+ format, SLOT('setText(QString &)') )
+
+
+app = QApplication( sys.argv )
+
+mw = QWidget()
+addStuff( mw, 1 )
+mw.setCaption( "Qt Example - Drag and Drop" )
+mw.show()
+
+mw2 = QWidget()
+addStuff( mw2, 0 )
+mw2.setCaption( "Qt Example - Drag and Drop" )
+mw2.show()
+
+mw3 = QWidget()
+addStuff( mw3, 1, 1 )
+mw3.setCaption( "Qt Example - Drag and Drop" )
+mw3.show()
+
+QObject.connect(qApp,SIGNAL('lastWindowClosed()'),qApp,SLOT('quit()'))
+
+app.exec_loop()
diff --git a/python/pyqt/examples3/drawlines.py b/python/pyqt/examples3/drawlines.py
new file mode 100755
index 00000000..3e21db71
--- /dev/null
+++ b/python/pyqt/examples3/drawlines.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+import sys, random
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+MAXPOINTS = 2000; # maximum number of points
+MAXCOLORS = 40;
+
+#
+# ConnectWidget - draws connected lines
+#
+
+class ConnectWidget(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+ self.setEraseColor( Qt.white ) # white background
+ self.count = 0;
+ self.down = FALSE
+
+ self.points = []
+ self.colors = []
+
+ for i in range(MAXPOINTS): # init arrays
+ self.points.append(QPoint())
+ for i in range(MAXCOLORS):
+ self.colors.append(QColor( random.randint(0,255), random.randint(0,255), random.randint(0,255) ))
+
+#
+# Handles paint events for the connect widget.
+#
+ def paintEvent(self, pe):
+ paint = QPainter( self )
+ for i in range(self.count-1): # connect all points
+ for j in range(i+1, self.count):
+ paint.setPen( self.colors[random.randint(0,MAXCOLORS-1)] ) # set random pen color
+ paint.drawLine( self.points[i], self.points[j] ) # draw line
+
+#
+# Handles mouse press events for the connect widget.
+#
+ def mousePressEvent(self, me):
+ self.down = TRUE
+ self.count = 0 # start recording points
+ self.erase() # erase widget contents
+
+#
+# Handles mouse release events for the connect widget.
+#
+ def mouseReleaseEvent(self, me ):
+ self.down = FALSE # done recording points
+ self.update() # draw the lines
+
+#
+# Handles mouse move events for the connect widget.
+#
+ def mouseMoveEvent(self, me):
+ if self.down and self.count < MAXPOINTS:
+ paint = QPainter( self )
+ self.points[self.count] = QPoint(me.pos()) # add point
+ paint.drawPoint( me.pos() ) # plot point
+ self.count = self.count+1
+
+#
+# Create and display a ConnectWidget.
+#
+a = QApplication( sys.argv )
+connect = ConnectWidget()
+connect.setCaption( "PyQt Example - Draw lines")
+a.setMainWidget( connect )
+connect.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/dropsite.py b/python/pyqt/examples3/dropsite.py
new file mode 100644
index 00000000..11d97079
--- /dev/null
+++ b/python/pyqt/examples3/dropsite.py
@@ -0,0 +1,96 @@
+# This is part of the dragdrop example.
+
+
+from qt import *
+
+import secret
+
+
+class DropSite(QLabel):
+ def __init__(self, parent=None, name=None):
+ QLabel.__init__( self, parent, name )
+ self.setAcceptDrops(1)
+
+ # this is a normal event
+ def mousePressEvent( self, e ):
+ if ( self.pixmap() ) :
+ drobj = QImageDrag( self.pixmap().convertToImage(), self )
+ pm = QPixmap()
+ pm.convertFromImage(self.pixmap().convertToImage().smoothScale(
+ self.pixmap().width()/3,self.pixmap().height()/3))
+ drobj.setPixmap(pm,QPoint(-5,-7))
+ else :
+ drobj = QTextDrag( self.text(), self )
+ drobj.dragCopy()
+
+ def backgroundColorChange( self, qcolor ):
+ # Reduce flicker by using repaint() rather than update()
+ self.repaint()
+
+ def dragMoveEvent( self, e ):
+ # Check if you want the drag at e.pos()...
+ # Give the user some feedback...
+ pass
+
+ def dragEnterEvent( self, e ):
+ # Check if you want the drag...
+ if (secret.canDecode( e ) or
+ QTextDrag.canDecode( e ) or
+ QImageDrag.canDecode( e ) or
+ QUriDrag.canDecode( e )):
+ e.accept()
+
+ # Give the user some feedback...
+ t = ''
+ i = 0
+ while e.format( i ):
+ if ( t != '' ):
+ t += "\n"
+ t += str(e.format( i ))
+ i += 1
+ self.emit(PYSIGNAL('message(QString &)'), (QString(t),))
+ self.setEraseColor(Qt.white)
+
+ def dragLeaveEvent( self, QDragLeaveEvent ):
+ # Give the user some feedback...
+ self.emit(PYSIGNAL('message(QString &)'), (QString(''),))
+ self.setEraseColor(Qt.lightGray)
+
+ def dropEvent( self, e ):
+ self.setEraseColor(Qt.lightGray)
+ # Try to decode to the data you understand...
+ str = QString()
+ if ( QTextDrag.decode( e, str ) ) :
+ self.setText( str )
+ self.setMinimumSize( self.minimumSize().expandedTo(self.sizeHint()) )
+ return
+
+ pm = QPixmap()
+ if ( QImageDrag.decode( e, pm ) ) :
+ self.setPixmap( pm )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
+
+ # QStrList strings
+ #strings = QStrList()
+ strings = []
+ if ( QUriDrag.decode( e, strings ) ) :
+ m = QString("Full URLs:\n")
+ for u in strings:
+ m = m + " " + u + '\n'
+ # QStringList files
+ files = []
+ if ( QUriDrag.decodeLocalFiles( e, files ) ) :
+ m += "Files:\n"
+ # for (QStringList.Iterator i=files.begin() i!=files.end() ++i)
+ for i in files:
+ m = m + " " + i + '\n'
+ self.setText( m )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
+
+ str = secret.decode( e )
+ if str:
+ self.setText( str )
+ self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint()))
+ return
diff --git a/python/pyqt/examples3/fileopen.xpm b/python/pyqt/examples3/fileopen.xpm
new file mode 100644
index 00000000..880417ee
--- /dev/null
+++ b/python/pyqt/examples3/fileopen.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static const char *fileopen[] = {
+" 16 13 5 1",
+". c #040404",
+"# c #808304",
+"a c None",
+"b c #f3f704",
+"c c #f3f7f3",
+"aaaaaaaaa...aaaa",
+"aaaaaaaa.aaa.a.a",
+"aaaaaaaaaaaaa..a",
+"a...aaaaaaaa...a",
+".bcb.......aaaaa",
+".cbcbcbcbc.aaaaa",
+".bcbcbcbcb.aaaaa",
+".cbcb...........",
+".bcb.#########.a",
+".cb.#########.aa",
+".b.#########.aaa",
+"..#########.aaaa",
+"...........aaaaa"
+};
diff --git a/python/pyqt/examples3/fontdisplayer.py b/python/pyqt/examples3/fontdisplayer.py
new file mode 100755
index 00000000..cb8531a4
--- /dev/null
+++ b/python/pyqt/examples3/fontdisplayer.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+class FontRowTable( QFrame ):
+ def __init__( self, parent=None, name=None ):
+ QFrame.__init__( self, parent, name )
+
+ self.setBackgroundMode(self.PaletteBase)
+ self.setFrameStyle(self.Panel|self.Sunken)
+ self.setMargin(8)
+ self.setRow(0)
+ self.row = 0
+ self.tablefont = QFont( QApplication.font() )
+
+ def sizeHint( self ) :
+ width = 16*self.cellSize().width()+QSize(2,2).width()*(self.margin()+self.frameWidth())
+ height = 16*self.cellSize().height()+QSize(2,2).height()*(self.margin()+self.frameWidth())
+ return QSize(width,height)
+
+ def cellSize( self ) :
+ fm = self.fontMetrics()
+ return QSize( fm.maxWidth(), fm.lineSpacing() + 1 )
+
+ def paintEvent( self, e ):
+ QFrame.paintEvent(self, e)
+ p = QPainter(self)
+ p.setClipRegion(e.region())
+ r = QRect(e.rect())
+ fm = self.fontMetrics()
+ ml = self.frameWidth() + self.margin() + 1 + max(0,-fm.minLeftBearing())
+ mt = self.frameWidth() + self.margin()
+ cell = QSize((self.width()-15-ml)/16,(self.height()-15-mt)/16)
+
+ if not cell.width() or not cell.height() :
+ return
+
+ mini = r.left() / cell.width()
+ maxi = (r.right()+cell.width()-1) / cell.width()
+ minj = r.top() / cell.height()
+ maxj = (r.bottom()+cell.height()-1) / cell.height()
+
+ h = fm.height()
+
+ body = QColor(255,255,192);
+ negative = QColor(255,192,192);
+ positive = QColor(192,192,255);
+ rnegative = QColor(255,128,128);
+ rpositive = QColor(128,128,255);
+
+ for j in range(minj, maxj+1, 1) :
+ for i in range(mini, maxi+1, 1) :
+ if i < 16 and j < 16 :
+ x = i*cell.width()
+ y = j*cell.height()
+
+ ch = QChar(j*16+i) #,self.row) # just accept one argument!!!
+
+ if fm.inFont(ch) :
+ w = fm.width(ch)
+ l = fm.leftBearing(ch)
+ r = fm.rightBearing(ch)
+
+ x += ml
+ y += mt+h
+
+ p.fillRect(x,y,w,-h,QBrush(body))
+
+ if w :
+ if l :
+ if l < 0: sign = negative
+ else: sign = positive
+ if l > 0: lsign = 0
+ else: lsign = 1
+ p.fillRect(x+lsign, y-h/2, abs(l),-h/2, QBrush(sign))
+ if r :
+ if r < 0: sign = rnegative
+ else: sign = rpositive
+ if r > 0: rsign = r
+ else: rsign = 0
+ p.fillRect(x+w-rsign,y+2, abs(r),-h/2, QBrush(sign))
+ s = QString( ch )
+ p.setPen(QPen(Qt.black))
+ p.drawText(x,y,s)
+
+ def setRow( self, r ) :
+ self.row = r
+
+ fm = self.fontMetrics()
+ str = " minLB=%d minRB=%d maxW=%d" % (fm.minLeftBearing(), fm.minRightBearing(), fm.maxWidth())
+ self.emit( PYSIGNAL("fontInformation"), ( QString(str), ) )
+ self.update()
+
+ def chooseFont( self ) :
+ ok = 0
+ oldfont = QFont( self.tablefont )
+ self.tablefont, ok = QFontDialog.getFont(oldfont, self)
+ if ok:
+ self.setFont(self.tablefont)
+ else:
+ self.tablefont = oldfont
+
+class FontDisplayer( QMainWindow ) :
+ def __init__( self, parent=None, name=None ):
+ QMainWindow.__init__( self, parent, name )
+ table = FontRowTable(self)
+ controls = QToolBar(self)
+
+ QLabel(self.tr("Row:"), controls)
+ self.row = QSpinBox(0,255,1,controls)
+ controls.addSeparator()
+ fontbutton = QPushButton(self.tr("Font..."), controls)
+ status = QStatusBar(self)
+
+ self.connect( self.row, SIGNAL("valueChanged(int)"), table.setRow )
+ self.connect( fontbutton, SIGNAL("clicked()"), table.chooseFont )
+ self.connect( table, PYSIGNAL("fontInformation"),
+ status, SLOT("message(const QString&)") )
+ table.setRow(0)
+ self.setCentralWidget(table)
+
+def main( args ):
+ # Use an interesting font
+ QApplication.setFont(QFont("unifont",16))
+ app = QApplication(sys.argv)
+
+ m = FontDisplayer()
+ sh = QSize( m.centralWidget().sizeHint() )
+ m.resize(sh.width(), sh.height() + 3 * m.statusBar().height())
+ app.setMainWidget(m);
+ m.setCaption("Qt Example - QFD");
+ m.show()
+
+ app.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/fonts.py b/python/pyqt/examples3/fonts.py
new file mode 100755
index 00000000..3240ed6b
--- /dev/null
+++ b/python/pyqt/examples3/fonts.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+class Viewer( QWidget ):
+ def __init__( self ):
+ QWidget.__init__( self )
+
+ self.setFontSubstitutions()
+
+ #greeting_heb = QString.fromUtf8( "\327\251\327\234\327\225\327\235" )
+ greeting_heb = unicode( '\327\251\327\234\327\225\327\235','utf8' )
+ #greeting_ru = QString.fromUtf8( "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265" )
+ greeting_ru = unicode('\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265','utf8' )
+ greeting_en = "Hello"
+
+ self.greetings = QTextView( self, "textview" )
+
+ self.greetings.setText( greeting_en + "\n" +
+ greeting_ru + "\n" +
+ greeting_heb )
+
+ self.fontInfo = QTextView( self, "fontinfo" )
+
+ self.setDefault()
+
+ self.defaultButton = QPushButton( "Default", self, "pushbutton1" )
+ self.defaultButton.setFont( QFont( "times" ) )
+ self.connect( self.defaultButton, SIGNAL("clicked()"), self.setDefault )
+
+ self.sansSerifButton = QPushButton( "Sans Serif", self, "pushbutton2" )
+ self.sansSerifButton.setFont( QFont( "Helvetica", 12 ) )
+ self.connect( self.sansSerifButton, SIGNAL("clicked()"), self.setSansSerif )
+
+ self.italicsButton = QPushButton( "Italics", self, "pushbutton3" )
+ self.italicsButton.setFont( QFont( "lucida", 12, QFont.Bold, True ) )
+ self.connect( self.italicsButton, SIGNAL("clicked()"), self.setItalics )
+
+ self.layout()
+
+ def setDefault( self ):
+ font = QFont( "Bavaria" )
+ font.setPointSize( 24 )
+ font.setWeight( QFont.Bold )
+ font.setUnderline( True )
+
+ self.greetings.setFont( font )
+
+ self.showFontInfo( font )
+
+ def setSansSerif( self ):
+ font = QFont( "Newyork", 18 )
+ font.setStyleHint( QFont.SansSerif )
+
+ self.greetings.setFont( font )
+
+ self.showFontInfo( font )
+
+ def setItalics( self ):
+ font = QFont( "Tokyo" )
+ font.setPointSize( 32 )
+ font.setWeight( QFont.Bold )
+ font.setItalic( True )
+
+ self.greetings.setFont( font )
+
+ self.showFontInfo( font )
+
+ def showFontInfo( self, font ):
+ info = QFontInfo( font )
+
+ messageText = "Font requested: \"" + str(font.family()) + "\" " \
+ + str(QString.number( font.pointSize() )) + "pt<BR>" \
+ + "Font used: \"" + str(info.family()) + "\" " \
+ + str(QString.number( info.pointSize() )) + "pt<P>"
+
+ if not self.substitutes.isEmpty() :
+ messageText += "The following substitutions exist for " + \
+ str(font.family()) + ":<UL>"
+ for i in self.substitutes :
+ messageText += "<LI>\"" + str(i) + "\""
+ messageText += "</UL>";
+ else :
+ messageText += "No substitutions exist for " + \
+ str(font.family()) + "."
+
+ self.fontInfo.setText( messageText )
+
+ def setFontSubstitutions( self ):
+ self.substitutes = QStringList()
+ self.substitutes.append( "Times" )
+ self.substitutes.append( "Mincho" )
+ self.substitutes.append( "Arabic Newspaper" )
+ self.substitutes.append( "crox" )
+ #QFont.insertSubstitutions( "Bavaria", self.substitutes )
+ QFont.insertSubstitution( "Bavaria", "Times" )
+ QFont.insertSubstitution( "Tokyo", "Lucida" )
+
+ # For those who prefer to use Qt Designer for creating GUIs
+ # the following function might not be of particular interest:
+ # all it does is creating the widget layout.
+ def layout( self ):
+ textViewContainer = QHBoxLayout()
+ textViewContainer.addWidget( self.greetings )
+ textViewContainer.addWidget( self.fontInfo )
+
+ buttonContainer = QHBoxLayout()
+ buttonContainer.addWidget( self.defaultButton )
+ buttonContainer.addWidget( self.sansSerifButton )
+ buttonContainer.addWidget( self.italicsButton )
+
+ maxButtonHeight = self.defaultButton.height()
+
+ if self.sansSerifButton.height() > maxButtonHeight :
+ maxButtonHeight = self.sansSerifButton.height()
+ if self.italicsButton.height() > maxButtonHeight :
+ maxButtonHeight = self.italicsButton.height()
+
+ self.defaultButton.setFixedHeight( maxButtonHeight )
+ self.sansSerifButton.setFixedHeight( maxButtonHeight )
+ self.italicsButton.setFixedHeight( maxButtonHeight )
+
+ container = QVBoxLayout( self )
+ container.addLayout( textViewContainer )
+ container.addLayout( buttonContainer )
+
+ self.resize( 700, 250 )
+
+def main( args ):
+ app = QApplication(sys.argv) # application object
+
+ textViewer = Viewer()
+ textViewer.setCaption( "Qt Example - Simple QFont Demo" )
+ app.setMainWidget( textViewer )
+ textViewer.show()
+
+ app.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/gears.py b/python/pyqt/examples3/gears.py
new file mode 100755
index 00000000..c89a7a24
--- /dev/null
+++ b/python/pyqt/examples3/gears.py
@@ -0,0 +1,235 @@
+#!/usr/bin/env python
+
+
+import sys
+import math
+from qt import *
+from qtgl import *
+from OpenGL.GL import *
+
+def gear(inner_radius,outer_radius,width,teeth,tooth_depth):
+ r0 = inner_radius
+ r1 = outer_radius - tooth_depth/2.0
+ r2 = outer_radius + tooth_depth/2.0
+
+ da = 2.0*math.pi/teeth/4.0
+
+ glShadeModel(GL_FLAT)
+
+ glNormal3f(0.0,0.0,1.0)
+
+ # draw front face
+
+ glBegin(GL_QUAD_STRIP)
+
+ for i in range(teeth+1):
+ angle = i * 2.0*math.pi/teeth
+ glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 )
+ glVertex3f(r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 )
+ glVertex3f(r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+
+ glEnd()
+
+ # draw front sides of teeth
+
+ da = 2.0*math.pi/teeth/4.0
+
+ glBegin(GL_QUADS)
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+
+ glEnd()
+
+
+ glNormal3f( 0.0, 0.0, -1.0 )
+
+ # draw back face
+
+ glBegin( GL_QUAD_STRIP )
+
+ for i in range(teeth+1):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 )
+
+ glEnd()
+
+ # draw back sides of teeth
+
+ da = 2.0*math.pi/teeth/4.0
+
+ glBegin( GL_QUADS )
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 )
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+
+ glEnd()
+
+ # draw outward faces of teeth
+
+ glBegin( GL_QUAD_STRIP )
+
+ for i in range(teeth):
+ angle = i*2.0*math.pi/teeth
+
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 )
+ glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 )
+
+ u = r2*math.cos(angle+da) - r1*math.cos(angle)
+ v = r2*math.sin(angle+da) - r1*math.sin(angle)
+
+ len = math.sqrt( u*u + v*v )
+ u /= len
+ v /= len
+ glNormal3f( v, -u, 0.0 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 )
+ glNormal3f( math.cos(angle), math.sin(angle), 0.0 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 )
+ glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 )
+ u = r1*math.cos(angle+3*da) - r2*math.cos(angle+2*da)
+ v = r1*math.sin(angle+3*da) - r2*math.sin(angle+2*da)
+ glNormal3f( v, -u, 0.0 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 )
+ glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 )
+ glNormal3f( math.cos(angle), math.sin(angle), 0.0 )
+
+ glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), width*0.5 )
+ glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), -width*0.5 )
+
+ glEnd()
+
+ glShadeModel (GL_SMOOTH)
+
+ # draw inside radius cylinder
+
+ glBegin( GL_QUAD_STRIP )
+
+ for i in range(teeth+1):
+ angle = i * 2.0*math.pi / teeth
+ glNormal3f( -math.cos(angle), -math.sin(angle), 0.0 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 )
+ glVertex3f( r0*math.cos(angle), r0*math.sin(angle), width*0.5 )
+
+ glEnd()
+
+##############################################################################
+class GearWidget(QGLWidget):
+ def __init__(self,parent=None,name=None):
+ QGLWidget.__init__(self,parent,name)
+
+ self.angle=0.0
+ self.view_rotx=0.0
+ self.view_roty=0.0
+ self.view_rotz=0.0
+
+ self.startTimer(10)
+
+ def timerEvent(self,event):
+ self.updateGL()
+
+ def paintGL(self):
+ self.angle = self.angle + 2.0
+ self.view_rotx = self.view_rotx + 1.0
+ self.view_roty = self.view_roty + 3.0
+ self.view_rotz = self.view_rotz + 2.0
+
+ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )
+
+ glPushMatrix()
+ glRotatef( self.view_rotx, 1.0, 0.0, 0.0 )
+ glRotatef( self.view_roty, 0.0, 1.0, 0.0 )
+ glRotatef( self.view_rotz, 0.0, 0.0, 1.0 )
+
+ glPushMatrix()
+ glTranslatef( -3.0, -2.0, 0.0 )
+ glRotatef( self.angle, 0.0, 0.0, 1.0 )
+ glCallList(self.gear1)
+ glPopMatrix()
+
+ glPushMatrix()
+ glTranslatef( 3.1, -2.0, 0.0 )
+ glRotatef( -2.0*self.angle-9.0, 0.0, 0.0, 1.0 )
+ glCallList(self.gear2)
+ glPopMatrix()
+
+ glPushMatrix()
+ glTranslatef( -3.1, 2.2, -1.8 )
+ glRotatef( 90.0, 1.0, 0.0, 0.0 )
+ glRotatef( 2.0*self.angle-2.0, 0.0, 0.0, 1.0 )
+ glCallList(self.gear3)
+ glPopMatrix()
+
+ glPopMatrix()
+
+ def resizeGL(self,width,height):
+ w = width / float(height)
+ h = 1.0
+
+ glViewport( 0, 0, width, height )
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ glFrustum( -w, w, -h, h, 5.0, 60.0 )
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+ glTranslatef( 0.0, 0.0, -40.0 )
+
+ def initializeGL(self):
+ pos=(5.0, 5.0, 10.0, 1.0 )
+ ared=(0.8, 0.1, 0.0, 1.0 )
+ agreen=(0.0, 0.8, 0.2, 1.0 )
+ ablue=(0.2, 0.2, 1.0, 1.0 )
+
+ glLightfv(GL_LIGHT0,GL_POSITION,pos)
+ glEnable(GL_CULL_FACE)
+ glEnable(GL_LIGHTING)
+ glEnable(GL_LIGHT0)
+ glEnable(GL_DEPTH_TEST)
+
+ self.gear1=glGenLists(1)
+ glNewList(self.gear1,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ared)
+ gear(1.0,4.0,1.0,20,0.7)
+ glEndList()
+
+ self.gear2=glGenLists(1)
+ glNewList(self.gear2,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,agreen)
+ gear(0.5,2.0,2.0,10,0.7)
+ glEndList()
+
+ self.gear3=glGenLists(1)
+ glNewList(self.gear3,GL_COMPILE)
+ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ablue)
+ gear(1.3,2.0,0.5,10,0.7)
+ glEndList()
+
+ glEnable(GL_NORMALIZE)
+
+##############################################################################
+if __name__=='__main__':
+ QApplication.setColorSpec(QApplication.CustomColor)
+ app=QApplication(sys.argv)
+
+ if not QGLFormat.hasOpenGL():
+ raise 'No Qt OpenGL support.'
+
+ widget=GearWidget()
+ app.setMainWidget(widget)
+ widget.show()
+ app.exec_loop()
diff --git a/python/pyqt/examples3/i18n/i18n.pro b/python/pyqt/examples3/i18n/i18n.pro
new file mode 100644
index 00000000..fc55895e
--- /dev/null
+++ b/python/pyqt/examples3/i18n/i18n.pro
@@ -0,0 +1,15 @@
+SOURCES = mywidget.py \
+ i18n.py
+
+TRANSLATIONS = mywidget_cs.ts \
+ mywidget_de.ts \
+ mywidget_el.ts \
+ mywidget_en.ts \
+ mywidget_eo.ts \
+ mywidget_fr.ts \
+ mywidget_it.ts \
+ mywidget_jp.ts \
+ mywidget_ko.ts \
+ mywidget_no.ts \
+ mywidget_ru.ts \
+ mywidget_zh.ts
diff --git a/python/pyqt/examples3/i18n/i18n.py b/python/pyqt/examples3/i18n/i18n.py
new file mode 100755
index 00000000..06cc97f5
--- /dev/null
+++ b/python/pyqt/examples3/i18n/i18n.py
@@ -0,0 +1,147 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2002 Detlev Offenbach <detlev@die-offenbachs.de>
+
+from whrandom import randint
+import sys
+
+from qt import *
+
+from mywidget import MyWidget
+
+class QVDialog(QDialog):
+ def __init__(self, parent=None, name=None, modal=0, flags=0):
+ QDialog.__init__(self, parent, name, modal, flags)
+
+ self.vb = QVBoxLayout(self, 8)
+ self.vb.setAutoAdd(1)
+
+ self.hb = None
+ self.map = {}
+ #self.sm = QSignalMapper(self)
+ self.connect(self, PYSIGNAL('mapped(int)'), self.done)
+
+ def addButtons(self, cancel=None, ok=None, mid1=None, mid2=None, mid3=None):
+ if ok is None:
+ self.addButton(self.tr("OK"),1)
+ else:
+ self.addButton(ok,1)
+
+ if mid1 is not None:
+ self.addButton(mid1,2)
+
+ if mid2 is not None:
+ self.addButton(mid2,3)
+
+ if mid3 is not None:
+ self.addButton(mid3,4)
+
+ if cancel is None:
+ self.addButton(self.tr('Cancel'),0)
+ else:
+ self.addButton(cancel,0)
+
+ def addButton(self, text, result):
+ if self.hb is None:
+ self.hb = QHBox(self)
+ c = QPushButton(text, self.hb)
+ self.setMapping(c, result)
+ self.connect(c, SIGNAL('clicked()'), self.mapit)
+
+ def setMapping(self, c, result):
+ self.map[c] = result
+
+ def mapit(self):
+ qo = self.sender()
+ self.emit(PYSIGNAL('mapped(int)'), (self.map[qo],))
+
+translator = None
+wlist = [] # keep reference to widgets
+
+def showLang(lang):
+ global translator
+
+ qApp.setPalette(QPalette(QColor(220-randint(0,64),220-randint(0,64),220-randint(0,64))))
+
+ language = "mywidget_"+lang+".qm"
+ fi = QFileInfo(language)
+
+ if not fi.exists():
+ QMessageBox.warning(None, "File error",
+ "Cannot find translation for language: "+lang+\
+ "\n(try eg. 'de' or 'en')")
+ return None
+
+ if translator is not None:
+ qApp.removeTranslator(translator)
+ translator = None
+
+ translator = QTranslator(None)
+ translator.load(language,".")
+ qApp.installTranslator(translator)
+ m = MyWidget()
+ m.setCaption("PyQt Example - i18n - " + unicode(m.caption()))
+ wlist.append(m)
+ return m
+
+def main(argv):
+ app = QApplication(argv)
+
+ qm = ["cs", "de", "el", "en", "eo", "fr", "it", "jp", "ko", "no", "ru", "zh"]
+
+ lang = None
+ if len(argv) == 2:
+ lang = argv[1]
+
+ if (len(argv) != 2) or (lang == "all"):
+ dlg = QVDialog(None, None, 1)
+ qmb = []
+ r = 0
+ if lang == "all":
+ r=2
+ else:
+ bg = QButtonGroup(4, Qt.Vertical, "Choose Locales", dlg)
+ loc = QTextCodec.locale()
+ for i in range(0,len(qm)):
+ qmb.append(QCheckBox(qm[i], bg))
+ qmb[i].setChecked(str(loc) == qm[i])
+ dlg.addButtons("Cancel","OK","All")
+ r = dlg.exec_loop()
+
+ if r:
+ tight = qApp.desktop().screen().width < 1024
+ x = 5
+ y = 25
+ for i in range(0,len(qm)):
+ if (r == 2) or (qmb[i].isChecked()):
+ w = showLang(qm[i])
+
+ if w == None:
+ sys.exit(0)
+
+ app.connect(app, SIGNAL('lastWindowClosed()'), qApp, SLOT('quit()'))
+ w.setGeometry(x,y,197,356)
+ w.show()
+ if tight:
+ x += 8
+ y += 8
+ else:
+ x += 205
+ if x > 1000:
+ x = 5
+ y += 384
+
+ else:
+ sys.exit(0)
+
+ else:
+ lang = argv[1]
+ m = showLang(lang)
+ app.setMainWidget(m)
+ m.setCaption("PyQt Example - i18n")
+ m.show()
+
+ return app.exec_loop()
+
+if __name__ == "__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/i18n/mywidget.py b/python/pyqt/examples3/i18n/mywidget.py
new file mode 100644
index 00000000..60e267a4
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget.py
@@ -0,0 +1,47 @@
+# Copyright (c) 2002 Detlev Offenbach <detlev@die-offenbachs.de>
+
+from qt import *
+
+class MyWidget(QMainWindow):
+
+ def __init__(self, parent=None, name=None):
+ QMainWindow.__init__(self, parent, name)
+
+ self.central = QVBox(self)
+ self.central.setMargin(5)
+ self.central.setSpacing(5)
+ self.setCentralWidget(self.central)
+
+ self.setCaption(self.trUtf8("""Internationalization Example"""))
+
+ self.file = QPopupMenu(self)
+ self.file.insertItem(self.trUtf8("E&xit"), qApp, SLOT("quit()"),
+ QKeySequence(self.trUtf8("Ctrl+Q","File|Quit")))
+ self.menuBar().insertItem(self.trUtf8("&File"), self.file)
+
+ self.statusBar().message(self.trUtf8('''Language: English'''))
+
+ self.label = QLabel(self.trUtf8("The Main Window"), self.central)
+
+ self.gbox = QButtonGroup(1, QGroupBox.Horizontal,
+ self.trUtf8("View"), self.central)
+ rb = QRadioButton(qApp.translate('MyWidget','Perspective'), self.gbox)
+ rb = QRadioButton(qApp.translate('MyWidget','Isometric'), self.gbox)
+ rb = QRadioButton(qApp.translate('MyWidget','Oblique'), self.gbox)
+
+ self.initChoices(self.central)
+
+ choices = [
+ QT_TRANSLATE_NOOP("MyWidget", "First"),
+ QT_TRANSLATE_NOOP("MyWidget", "Second"),
+ QT_TRANSLATE_NOOP("MyWidget", "Third")
+ ]
+
+ def initChoices(self, parent):
+ self.lb = QListBox(parent)
+ for ch in self.choices:
+ self.lb.insertItem(self.trUtf8(ch))
+
+ def closeEvent(self, e):
+ QWidget.closeEvent(self, e)
+ self.emit(PYSIGNAL('closed'), ())
diff --git a/python/pyqt/examples3/i18n/mywidget_cs.qm b/python/pyqt/examples3/i18n/mywidget_cs.qm
new file mode 100644
index 00000000..f95090d6
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_cs.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_cs.ts b/python/pyqt/examples3/i18n/mywidget_cs.ts
new file mode 100644
index 00000000..4cf61f15
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_cs.ts
@@ -0,0 +1,75 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Pohled</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">&amp;Soubor</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">&amp;Konec</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">První</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Třetí</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Jayzk: Český</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">Hlavní okno</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Nakloněný</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Druhý</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isometrický</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Perspektivní</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Ukázka lokalizace</translation>
+ </message>
+</context>
+<context encoding="UTF-8">
+ <name>QAccel</name>
+ <message encoding="UTF-8">
+ <source>Ctrl</source>
+ <translation type="obsolete">Ctrl</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_de.qm b/python/pyqt/examples3/i18n/mywidget_de.qm
new file mode 100644
index 00000000..64338556
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_de.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_de.ts b/python/pyqt/examples3/i18n/mywidget_de.ts
new file mode 100644
index 00000000..d114b8b5
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_de.ts
@@ -0,0 +1,69 @@
+<!DOCTYPE TS><TS>
+<context>
+ <name>MyWidget</name>
+ <message>
+ <source>First</source>
+ <translation>Erstens</translation>
+ </message>
+ <message>
+ <source>Second</source>
+ <translation>Zweitens</translation>
+ </message>
+ <message>
+ <source>Third</source>
+ <translation>Drittens</translation>
+ </message>
+ <message>
+ <source>Internationalization Example</source>
+ <translation>Internationalisierungsbeispiel</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation>Be&amp;enden</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <translation>&amp;Datei</translation>
+ </message>
+ <message>
+ <source>Language: English</source>
+ <translation>Sprache: Deutsch</translation>
+ </message>
+ <message>
+ <source>The Main Window</source>
+ <translation>Das Hauptfenster</translation>
+ </message>
+ <message>
+ <source>View</source>
+ <translation>Ansicht</translation>
+ </message>
+ <message>
+ <source>Perspective</source>
+ <translation>Perspektivisch</translation>
+ </message>
+ <message>
+ <source>Isometric</source>
+ <translation>Isometrisch</translation>
+ </message>
+ <message>
+ <source>Oblique</source>
+ <translation>Schief</translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <comment>File|Quit</comment>
+ <translation>Strg+Q</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Abbruch</translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_el.qm b/python/pyqt/examples3/i18n/mywidget_el.qm
new file mode 100644
index 00000000..15d76895
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_el.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_el.ts b/python/pyqt/examples3/i18n/mywidget_el.ts
new file mode 100644
index 00000000..59fb2289
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_el.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">&amp;ΑÏχείο</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">Έ&amp;ξοδος</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">ΠÏώτο</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">ΠαÏάδειγμα διεθνοποίησης</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">ΙσομετÏική</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Γλώσσα: Ελληνικά</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Πλάγια</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">ΠÏοοπτική</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">ΔεÏτεÏο</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">ΚÏÏιο παÏάθυÏο</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">ΤÏίτο</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Όψη</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_en.qm b/python/pyqt/examples3/i18n/mywidget_en.qm
new file mode 100644
index 00000000..6bd22c41
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_en.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_en.ts b/python/pyqt/examples3/i18n/mywidget_en.ts
new file mode 100644
index 00000000..f231669f
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_en.ts
@@ -0,0 +1,69 @@
+<!DOCTYPE TS><TS>
+<context>
+ <name>MyWidget</name>
+ <message>
+ <source>First</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Second</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Third</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Internationalization Example</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Language: English</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The Main Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Perspective</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Isometric</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Oblique</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <comment>File|Quit</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_eo.qm b/python/pyqt/examples3/i18n/mywidget_eo.qm
new file mode 100644
index 00000000..372cf792
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_eo.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_eo.ts b/python/pyqt/examples3/i18n/mywidget_eo.ts
new file mode 100644
index 00000000..381870de
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_eo.ts
@@ -0,0 +1,72 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">&amp;Dosiero</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+F</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit...</source>
+ <translation type="obsolete">&amp;Fini...</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">Unue</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Ekzemplo pri internaciigo</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isometria</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Lingvo: Esperanto (ĈĜĤĴŜŬĉÄĥĵÅÅ­)</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Oblikva</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Perspektiva</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Due</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">La Ĉeffenestro</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Trie</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Aspekto</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_fr.qm b/python/pyqt/examples3/i18n/mywidget_fr.qm
new file mode 100644
index 00000000..12a84640
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_fr.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_fr.ts b/python/pyqt/examples3/i18n/mywidget_fr.ts
new file mode 100644
index 00000000..a029084a
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_fr.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Vue</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">&amp;Fichier</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">&amp;Quitter</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">Premier</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Troisième</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Langage : Français</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">La fenêtre principale</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Oblique</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Second</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isométrique</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Perspective</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Exemple d&apos;internationalisation</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_it.qm b/python/pyqt/examples3/i18n/mywidget_it.qm
new file mode 100644
index 00000000..075bee25
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_it.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_it.ts b/python/pyqt/examples3/i18n/mywidget_it.ts
new file mode 100644
index 00000000..a450deb4
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_it.ts
@@ -0,0 +1,72 @@
+<!DOCTYPE TS><TS>
+<context>
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>E&amp;xit...</source>
+ <translation type="obsolete">&amp;Esci...</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">Primo</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Esempio di localizzazione</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isometrica</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Lingua: Italiano</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Obliqua</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Prospettica</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Secondo</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">La Finestra Principale</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Terzo</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Vista</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_jp.qm b/python/pyqt/examples3/i18n/mywidget_jp.qm
new file mode 100644
index 00000000..8942dd7c
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_jp.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_jp.ts b/python/pyqt/examples3/i18n/mywidget_jp.ts
new file mode 100644
index 00000000..2a7345f6
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_jp.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">ファイル(&amp;F)</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">終了(&amp;X)</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">第一行</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">国際化(i18n)ã®ä¾‹</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">等角投影法</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">言語: 日本語</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">æ–œã‚投影法</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">é è¿‘法</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">第二行</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">メインウィンドウ</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">第三行</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">表示方å¼</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_ko.qm b/python/pyqt/examples3/i18n/mywidget_ko.qm
new file mode 100644
index 00000000..dccc2ba9
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_ko.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_ko.ts b/python/pyqt/examples3/i18n/mywidget_ko.ts
new file mode 100644
index 00000000..acc8f9b5
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_ko.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">파ì¼&amp;F</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+E</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">종료&amp;X</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">첫번째</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">국제화 예제</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isometric</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">언어 : 한국어</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Oblique</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Perspective</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">ë‘번째</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">ë©”ì¸ ìœˆë„ìš°</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">세번째</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">보기</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_no.qm b/python/pyqt/examples3/i18n/mywidget_no.qm
new file mode 100644
index 00000000..2adc1361
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_no.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_no.ts b/python/pyqt/examples3/i18n/mywidget_no.ts
new file mode 100644
index 00000000..341c6647
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_no.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Visning</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">&amp;Fil</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">&amp;Slutt</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">Første</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Tredje</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Språk: Norsk</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">Hovedvinduet</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+S</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">Skjev</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Andre</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">Isometrisk</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">Perspektiv</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Internasjonaliseringseksempel</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_ru.qm b/python/pyqt/examples3/i18n/mywidget_ru.qm
new file mode 100644
index 00000000..ebc512ec
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_ru.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_ru.ts b/python/pyqt/examples3/i18n/mywidget_ru.ts
new file mode 100644
index 00000000..07070b03
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_ru.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">Вид</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">Файл</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">Выход</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">Первый</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">Третий</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">Язык: РуÑÑкий</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">Главное окно</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">КурÑив</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">Второй</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">ИзометричеÑкий</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">ПерÑпектива</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">Пример интернациноализации</translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/i18n/mywidget_zh.qm b/python/pyqt/examples3/i18n/mywidget_zh.qm
new file mode 100644
index 00000000..a890c096
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_zh.qm
Binary files differ
diff --git a/python/pyqt/examples3/i18n/mywidget_zh.ts b/python/pyqt/examples3/i18n/mywidget_zh.ts
new file mode 100644
index 00000000..8b015d6d
--- /dev/null
+++ b/python/pyqt/examples3/i18n/mywidget_zh.ts
@@ -0,0 +1,68 @@
+<!DOCTYPE TS><TS>
+<context encoding="UTF-8">
+ <name>MyWidget</name>
+ <message encoding="UTF-8">
+ <source>View</source>
+ <translation type="unfinished">视图</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>&amp;File</source>
+ <translation type="unfinished">文件[&amp;F]</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>E&amp;xit</source>
+ <translation type="unfinished">退出[&amp;x]</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>First</source>
+ <translation type="unfinished">第一个</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Third</source>
+ <translation type="unfinished">第三个</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Language: English</source>
+ <translation type="unfinished">语言: 简体中文</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>The Main Window</source>
+ <translation type="unfinished">主窗å£</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Oblique</source>
+ <translation type="unfinished">斜投影</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Second</source>
+ <translation type="unfinished">第二个</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Isometric</source>
+ <translation type="unfinished">等角投影</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Perspective</source>
+ <translation type="unfinished">é€è§†æŠ•å½±</translation>
+ </message>
+ <message encoding="UTF-8">
+ <source>Internationalization Example</source>
+ <translation type="unfinished">国际化范例</translation>
+ </message>
+</context>
+<context>
+ <name>QVDialog</name>
+ <message>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/python/pyqt/examples3/lineedits.py b/python/pyqt/examples3/lineedits.py
new file mode 100755
index 00000000..631d14be
--- /dev/null
+++ b/python/pyqt/examples3/lineedits.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+class LineEdits(QGroupBox):
+ def __init__(self, parent = None, name = None):
+ QGroupBox.__init__(self, 0, Qt.Horizontal, "Line Edits", parent, name)
+
+ self.setMargin(10)
+
+ box = QVBoxLayout(self.layout())
+
+ row1 = QHBoxLayout(box)
+ row1.setMargin(5)
+
+ label = QLabel("Echo Mode: ", self)
+ row1.addWidget(label)
+
+ combo1 = QComboBox(FALSE, self)
+ row1.addWidget(combo1)
+ combo1.insertItem("Normal", -1)
+ combo1.insertItem("Password", -1)
+ combo1.insertItem("No Echo", -1)
+
+ self.connect(combo1, SIGNAL("activated(int)"), self.slotEchoChanged)
+ self.lined1 = QLineEdit(self)
+ box.addWidget(self.lined1)
+
+ row2 = QHBoxLayout(box)
+ row2.setMargin(5)
+
+ label = QLabel("Validator: ", self)
+ row2.addWidget(label)
+
+ combo2 = QComboBox(FALSE, self)
+ row2.addWidget(combo2)
+ combo2.insertItem("No Validator", -1)
+ combo2.insertItem("Integer Validator", -1)
+ combo2.insertItem("Double Validator", -1)
+
+ self.connect(combo2, SIGNAL("activated(int)"), self.slotValidatorChanged)
+
+ self.lined2 = QLineEdit(self)
+ box.addWidget(self.lined2)
+
+ row3 = QHBoxLayout(box)
+ row3.setMargin(5)
+
+ label = QLabel("Alignment: ", self)
+ row3.addWidget(label)
+
+ combo3 = QComboBox(FALSE, self)
+ row3.addWidget(combo3)
+ combo3.insertItem("Left", -1)
+ combo3.insertItem("Centered", -1)
+ combo3.insertItem("Right", -1)
+
+ self.connect(combo3, SIGNAL("activated(int)"), self.slotAlignmentChanged)
+ self.lined3 = QLineEdit(self)
+ box.addWidget(self.lined3)
+
+ row4 = QHBox(self)
+ box.addWidget(row4)
+ row4.setMargin(5)
+
+ QLabel("Read-Only: ", row4)
+
+ combo4 = QComboBox(FALSE, row4)
+ combo4.insertItem("False", -1)
+ combo4.insertItem("True", -1)
+
+ self.connect(combo4, SIGNAL("activated(int)"), self.slotReadOnlyChanged)
+
+ self.lined4 = QLineEdit(self)
+ box.addWidget(self.lined4)
+
+ self.lined1.setFocus()
+
+ def slotEchoChanged(self, i):
+ if i == 0:
+ self.lined1.setEchoMode(QLineEdit.Normal)
+ elif i == 1:
+ self.lined1.setEchoMode(QLineEdit.Password)
+ elif i == 2:
+ self.lined1.setEchoMode(QLineEdit.NoEcho)
+
+ self.lined1.setFocus()
+
+ def slotValidatorChanged(self, i):
+ if i == 0:
+ self.lined2.setValidator(None)
+ elif i == 1:
+ self.lined2.setValidator(QIntValidator(self.lined2))
+ elif i == 2:
+ self.lined2.setValidator(QDoubleValidator(-999.0, 999.0, 2, self.lined2))
+
+ self.lined2.setText("")
+ self.lined2.setFocus()
+
+ def slotAlignmentChanged(self, i):
+ if i == 0:
+ self.lined3.setAlignment(QLineEdit.AlignLeft)
+ elif i == 1:
+ self.lined3.setAlignment(QLineEdit.AlignCenter)
+ elif i == 2:
+ self.lined3.setAlignment(QLineEdit.AlignRight)
+
+ self.lined3.setFocus()
+
+ def slotReadOnlyChanged(self, i):
+ if i == 0:
+ self.lined4.setReadOnly(FALSE)
+ elif i == 1:
+ self.lined4.setReadOnly(TRUE)
+
+ self.lined4.setFocus()
+
+
+if __name__=='__main__':
+ app = QApplication( sys.argv )
+
+ lineedits = LineEdits()
+ lineedits.setCaption("Lineedits - PyQt Example")
+ lineedits.show()
+ app.setMainWidget(lineedits)
+ app.exec_loop()
diff --git a/python/pyqt/examples3/listbox.py b/python/pyqt/examples3/listbox.py
new file mode 100755
index 00000000..a149500e
--- /dev/null
+++ b/python/pyqt/examples3/listbox.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+FALSE = 0
+TRUE = 1
+
+class ListBoxDemo( QWidget ):
+ def __init__( self, parent=None, name=None ):
+ QWidget.__init__( self, parent, name )
+ b = FALSE
+ g = QGridLayout( self, 2, 2, 6 )
+
+ g.addWidget( QLabel( "<b>Configuration:</b>", self ), 0, 0 )
+ g.addWidget( QLabel( "<b>Result:</b>", self ), 0, 1 )
+
+ self.l = QListBox( self )
+ g.addWidget( self.l, 1, 1 )
+ self.l.setFocusPolicy( QWidget.StrongFocus )
+
+ v = QVBoxLayout( )
+ g.addLayout( v, 1, 0 )
+
+ bg = QButtonGroup( self, None )
+
+ b = QRadioButton( "Fixed number of columns,\n"
+ "as many rows as needed.",
+ self )
+ bg.insert( b )
+ v.addWidget( b )
+ b.setChecked( TRUE )
+ self.connect( b, SIGNAL("clicked()"), self.setNumCols )
+ h = QHBoxLayout()
+ v.addLayout( h )
+ h.addSpacing( 30 )
+ h.addSpacing( 100 )
+ h.addWidget( QLabel( "Columns:", self ) )
+ self.columns = QSpinBox( self )
+ h.addWidget( self.columns )
+
+ v.addSpacing( 12 )
+
+ b = QRadioButton( "As many columns as fit on-screen,\n"
+ "as many rows as needed.",
+ self )
+ bg.insert( b )
+ v.addWidget( b )
+ self.connect( b, SIGNAL("clicked()"), self.setColsByWidth )
+
+ v.addSpacing( 12 )
+
+ b = QRadioButton( "Fixed number of rows,\n"
+ "as many columns as needed.",
+ self )
+ bg.insert( b )
+ v.addWidget( b )
+ self.connect( b, SIGNAL("clicked()"), self.setNumRows )
+ h = QHBoxLayout()
+ v.addLayout( h )
+ h.addSpacing( 30 )
+ h.addSpacing( 100 )
+ h.addWidget( QLabel( "Rows:", self ) )
+ self.rows = QSpinBox( self )
+ self.rows.setEnabled( FALSE )
+ h.addWidget( self.rows )
+
+ v.addSpacing( 12 )
+
+ b = QRadioButton( "As many rows as fit on-screen,\n"
+ "as many columns as needed.",
+ self )
+ bg.insert( b )
+ v.addWidget( b )
+ self.connect( b, SIGNAL("clicked()"), self.setRowsByHeight )
+
+ v.addSpacing( 12 )
+
+ cb = QCheckBox( "Variable-height rows", self )
+ cb.setChecked( TRUE )
+ self.connect( cb, SIGNAL("toggled(bool)"), self.setVariableHeight )
+ v.addWidget( cb )
+ v.addSpacing( 6 )
+
+ cb = QCheckBox( "Variable-width columns", self )
+ self.connect( cb, SIGNAL("toggled(bool)"), self.setVariableWidth )
+ v.addWidget( cb )
+
+ cb = QCheckBox( "Extended-Selection", self )
+ self.connect( cb, SIGNAL("toggled(bool)"), self.setMultiSelection )
+ v.addWidget( cb )
+
+ pb = QPushButton( "Sort ascending", self )
+ self.connect( pb, SIGNAL("clicked()"), self.sortAscending )
+ v.addWidget( pb )
+
+ pb = QPushButton( "Sort descending", self )
+ self.connect( pb, SIGNAL("clicked()"), self.sortDescending )
+ v.addWidget( pb )
+
+ v.addStretch( 100 )
+
+ i = 0
+ while i <= 2560:
+ i+=1
+ self.l.insertItem( str(QString.fromLatin1( "Item " )) + str(QString.number( i )), i )
+ self.columns.setRange( 1, 256 )
+ self.columns.setValue( 1 )
+ self.rows.setRange( 1, 256 )
+ self.rows.setValue( 256 )
+
+ self.connect( self.columns, SIGNAL("valueChanged(int)"), self.setNumCols )
+ self.connect( self.rows, SIGNAL("valueChanged(int)"), self.setNumRows )
+
+ # slots
+ def setNumCols( self ):
+ self.columns.setEnabled( TRUE )
+ self.rows.setEnabled( FALSE )
+ self.l.setColumnMode( self.columns.value() )
+
+ def setNumRows( self ):
+ self.columns.setEnabled( FALSE )
+ self.rows.setEnabled( TRUE )
+ self.l.setRowMode( self.rows.value() )
+
+ def setRowsByHeight( self ):
+ self.columns.setEnabled( FALSE )
+ self.rows.setEnabled( FALSE )
+ self.l.setRowMode( QListBox.FitToHeight )
+
+ def setColsByWidth( self ):
+ self.columns.setEnabled( FALSE )
+ self.rows.setEnabled( FALSE )
+ self.l.setColumnMode( QListBox.FitToWidth )
+
+ def setVariableWidth( self, b ):
+ self.l.setVariableWidth( b )
+
+ def setVariableHeight( self, b ):
+ self.l.setVariableHeight( b )
+
+ def setMultiSelection( self, b ):
+ self.l.clearSelection()
+ if b :
+ self.l.setSelectionMode( QListBox.Extended )
+ else:
+ self.l.setSelectionMode( QListBox.Single )
+
+ def sortAscending( self ):
+ self.l.sort( TRUE )
+
+ def sortDescending( self ):
+ self.l.sort( FALSE )
+
+
+def main( args ):
+ a = QApplication( args )
+ t = ListBoxDemo()
+ t.setCaption( "Qt Example - Listbox" )
+ a.setMainWidget( t )
+ t.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/listboxcombo.py b/python/pyqt/examples3/listboxcombo.py
new file mode 100755
index 00000000..4a909861
--- /dev/null
+++ b/python/pyqt/examples3/listboxcombo.py
@@ -0,0 +1,167 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+FALSE = 0
+TRUE = 1
+
+class ListBoxCombo( QVBox ):
+ # Constructor
+ # Creates child widgets of the ListBoxCombo widget
+ def __init__( self, parent=None, name=None ):
+ QVBox.__init__( self, parent, name )
+
+ self.setMargin( 5 )
+ self.setSpacing( 5 )
+
+ i = 0
+ row1 = QHBox( self )
+ row1.setSpacing( 5 )
+
+ # Create a multi-selection ListBox...
+ self.lb1 = QListBox( row1 )
+ self.lb1.setSelectionMode( QListBox.Multi )
+
+ # ...insert a pixmap item...
+ xpm = QPixmap( "qtlogo.png" )
+ txt = QString()
+ QListBoxPixmap( self.lb1, xpm, txt )
+
+ # ...and 100 text items
+ for i in range(0, 100, 1) :
+ xpm = QPixmap()
+ txt = QString( "Listbox Item %1" ).arg( i )
+ if not i % 4 :
+ xpm = QPixmap( "fileopen.xpm" )
+ QListBoxPixmap( self.lb1, xpm, txt )
+
+ # Create a pushbutton...
+ arrow1 = QPushButton( " -> ", row1 )
+ # ...and connect the clicked SIGNAL with the SLOT slotLeft2Right
+ self.connect( arrow1, SIGNAL("clicked()"), self.slotLeft2Right )
+
+ # create an empty single-selection ListBox
+ self.lb2 = QListBox( row1 )
+
+ row2 = QHBox( self )
+ row2.setSpacing( 5 )
+
+ box1 = QVBox( row2 )
+ box1.setSpacing( 5 )
+
+ # Create a non-editable Combobox and a label below...
+ cb1 = QComboBox( FALSE, box1 )
+ self.label1 = QLabel( "Current Item: Combobox Item 0", box1 )
+ self.label1.setMaximumHeight( self.label1.sizeHint().height() * 2 )
+ self.label1.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ #...and insert 50 items into the Combobox
+ for i in range( 0, 50, 1 ) :
+ txt = str( QString( "Combobox Item %1" ).arg( i ) )
+ if i % 9 :
+ cb1.insertItem( txt )
+ else :
+ cb1.listBox().insertItem( MyListBoxItem() )
+
+ box2 = QVBox( row2 )
+ box2.setSpacing( 5 )
+
+ # Create an editable Combobox and a label below...
+ cb2 = QComboBox( TRUE, box2 )
+ self.label2 = QLabel( "Current Item: Combobox Item 0", box2 )
+ self.label2.setMaximumHeight( self.label2.sizeHint().height() * 2 )
+ self.label2.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ # ... and insert 50 items into the Combobox
+ for i in range(0, 50, 1 ) :
+ txt = str(QString( "Combobox Item %1" ).arg( i ))
+ if not i % 4 :
+ cb2.insertItem( QPixmap( "fileopen.xpm" ), txt )
+ else :
+ cb2.insertItem( txt )
+
+ # Connect the activated SIGNALs of the Comboboxes with SLOTs
+ self.connect( cb1, SIGNAL("activated( const QString & )"), self.slotCombo1Activated )
+ self.connect( cb2, SIGNAL("activated( const QString & )"), self.slotCombo2Activated )
+
+ """ SLOT slotLeft2Right
+ * Copies all selected items of the first ListBox into the second ListBox
+ """
+ def slotLeft2Right( self ):
+ # Go through all items of the first ListBox
+ for i in range( 0, self.lb1.count(), 1 ) :
+ item = self.lb1.item( i )
+ # if the item is selected...
+ if self.lb1.isSelected( i ): #item.isSelected() :
+ # ...and it is a text item...
+ if item.pixmap() and not(item.text().isEmpty()):
+ self.lb2.insertItem( item.pixmap(), item.text() )
+ elif not( item.pixmap() ):
+ self.lb2.insertItem( item.text() )
+ elif item.text().isEmpty() :
+ self.lb2.insertItem( item.pixmap() )
+
+ """ SLOT slotCombo1Activated( const QString &s )
+ * Sets the text of the item which the user just selected in the
+ * first Combobox (and is now the value of s) to the first Label.
+ """
+ def slotCombo1Activated( self, s ) :
+ self.label1.setText( str(QString( "Current Item: %1" ).arg( s ) ) )
+
+ """ SLOT slotCombo2Activated( const QString &s )
+ * Sets the text of the item which the user just selected in the
+ * second Combobox (and is now the value of s) to the second Label.
+ """
+ def slotCombo2Activated( self, s ) :
+ self.label2.setText( str(QString( "Current Item: %1" ).arg( s ) ) )
+
+
+class MyListBoxItem( QListBoxItem ):
+ def __init__( self, parent=None, name=None ):
+ QListBoxItem.__init__( self, parent, name )
+ self.setCustomHighlighting( TRUE )
+
+ def paint( self, painter ):
+ # evil trick: find out whether we are painted onto our listbox
+ in_list_box = 0
+ if self.listBox() and self.listBox().viewport() == painter.device():
+ in_list_box = 1
+ r = QRect( 0, 0, self.width( self.listBox() ), self.height( self.listBox() ) )
+ brush = QBrush( Qt.red, Qt.SolidPattern )
+ if in_list_box and isSelected():
+ painter.eraseRect( r )
+ painter.fillRect( 5, 5, self.width( self.listBox() ) - 10, self.height( self.listBox() ) - 10, brush )
+ if in_list_box and isCurrent():
+ self.listBox().style().drawPrimitive( QStyle.PE_FocusRect, painter, r, self.listBox().colorGroup() )
+
+ def width( self, QListBox ):
+ return 100
+
+ def height( self, QListBox ):
+ return 16
+
+
+def main( args ):
+ a = QApplication( args )
+
+ listboxcombo = ListBoxCombo()
+ listboxcombo.resize( 400, 270 )
+ listboxcombo.setCaption( "Qt Example - Listboxes and Comboboxes" )
+ a.setMainWidget( listboxcombo )
+ listboxcombo.show();
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/marble.png b/python/pyqt/examples3/marble.png
new file mode 100644
index 00000000..49ea3098
--- /dev/null
+++ b/python/pyqt/examples3/marble.png
Binary files differ
diff --git a/python/pyqt/examples3/mdi.py b/python/pyqt/examples3/mdi.py
new file mode 100755
index 00000000..2c1d121c
--- /dev/null
+++ b/python/pyqt/examples3/mdi.py
@@ -0,0 +1,360 @@
+#!/usr/bin/env python
+
+# A simple application.
+
+
+import sys, string
+from qt import *
+
+
+fileopen = [
+ '16 13 5 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c None',
+ 'b c #f3f704',
+ 'c c #f3f7f3',
+ 'aaaaaaaaa...aaaa',
+ 'aaaaaaaa.aaa.a.a',
+ 'aaaaaaaaaaaaa..a',
+ 'a...aaaaaaaa...a',
+ '.bcb.......aaaaa',
+ '.cbcbcbcbc.aaaaa',
+ '.bcbcbcbcb.aaaaa',
+ '.cbcb...........',
+ '.bcb.#########.a',
+ '.cb.#########.aa',
+ '.b.#########.aaa',
+ '..#########.aaaa',
+ '...........aaaaa'
+]
+
+filesave = [
+ '14 14 4 1',
+ '. c #040404',
+ '# c #808304',
+ 'a c #bfc2bf',
+ 'b c None',
+ '..............',
+ '.#.aaaaaaaa.a.',
+ '.#.aaaaaaaa...',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.#.aaaaaaaa.#.',
+ '.##........##.',
+ '.############.',
+ '.##.........#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ '.##......aa.#.',
+ 'b.............'
+]
+
+fileprint = [
+ '16 14 6 1',
+ '. c #000000',
+ '# c #848284',
+ 'a c #c6c3c6',
+ 'b c #ffff00',
+ 'c c #ffffff',
+ 'd c None',
+ 'ddddd.........dd',
+ 'dddd.cccccccc.dd',
+ 'dddd.c.....c.ddd',
+ 'ddd.cccccccc.ddd',
+ 'ddd.c.....c....d',
+ 'dd.cccccccc.a.a.',
+ 'd..........a.a..',
+ '.aaaaaaaaaa.a.a.',
+ '.............aa.',
+ '.aaaaaa###aa.a.d',
+ '.aaaaaabbbaa...d',
+ '.............a.d',
+ 'd.aaaaaaaaa.a.dd',
+ 'dd...........ddd'
+]
+
+document = [
+"12 16 6 1",
+" c #040404",
+". c None",
+"X c white",
+"o c #808304",
+"O c black",
+"+ c #f3f7f3",
+" .....",
+" XXXXX ....",
+" XXXXX X ...",
+" XXXXX XX ..",
+" XooXX O.",
+" X+XXX+XXXO.",
+" XXXXXXXXXO.",
+" XoooXooXXO.",
+" XXXXXXXXXO.",
+" XXXXXXXXXO.",
+" XoXXoooXXO.",
+" XXXXXXXXXO.",
+"OXXXXXXXXXO.",
+"OXXXXXXXXXO.",
+"OOOOOOOOOOO.",
+"............"
+]
+
+fileOpenText = \
+'''<img source="fileopen">
+Click this button to open a <em>new file</em>.<br><br>
+You can also select the <b>Open</b> command from the <b>File</b> menu.'''
+
+fileSaveText = \
+'''Click this button to save the file you are editing.<br><br>
+You will be prompted for a filename.<br><br>
+You can also select the <b>Save</b> command from the <b>File</b> menu.'''
+
+filePrintText = \
+'''Click this button to print the file you are editing.<br><br>
+You can also select the <b>Print</b> command from the <b>File</b> menu.'''
+
+True=1
+False=0
+
+class ApplicationWindow(QMainWindow):
+ def __init__(self):
+ QMainWindow.__init__(self,None,'example application main window',Qt.WDestructiveClose)
+
+ self.filename = QString.null
+ self.printer = QPrinter()
+
+ self.fileTools = QToolBar(self,'file operations')
+
+ openIcon = QPixmap(fileopen)
+ self.fileOpen = QToolButton(QIconSet(openIcon),'Open File',QString.null,self.load,self.fileTools,'open file')
+
+ saveIcon = QPixmap(filesave)
+ self.fileSave = QToolButton(QIconSet(saveIcon),'Save File',QString.null,self.save,self.fileTools,'save file')
+ printIcon = QPixmap(fileprint)
+ self.filePrint = QToolButton(QIconSet(printIcon),'Print File',QString.null,self.printDoc,self.fileTools,'print file')
+
+ QWhatsThis.whatsThisButton(self.fileTools)
+
+ QWhatsThis.add(self.fileOpen,fileOpenText)
+ QMimeSourceFactory.defaultFactory().setPixmap('fileopen',openIcon)
+ QWhatsThis.add(self.fileSave,fileSaveText)
+ QWhatsThis.add(self.filePrint,filePrintText)
+
+ self.file = QPopupMenu(self)
+ self.menuBar().insertItem('&File',self.file)
+
+ self.file.insertItem('&New',self.newDoc,Qt.CTRL + Qt.Key_N)
+
+ id = self.file.insertItem(QIconSet(openIcon),'&Open',self.load,Qt.CTRL + Qt.Key_O)
+ self.file.setWhatsThis(id,fileOpenText)
+
+ id = self.file.insertItem(QIconSet(saveIcon),'&Save',self.save,Qt.CTRL + Qt.Key_S)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ id = self.file.insertItem('Save &as',self.saveAs)
+ self.file.setWhatsThis(id,fileSaveText)
+
+ self.file.insertSeparator()
+
+ id = self.file.insertItem(QIconSet(printIcon),'&Print',self.printDoc,Qt.CTRL + Qt.Key_P)
+ self.file.setWhatsThis(id,filePrintText)
+
+ self.file.insertSeparator()
+
+ self.file.insertItem('&Close',self,SLOT('close()'),Qt.CTRL + Qt.Key_W)
+ self.file.insertItem('&Quit',qApp,SLOT('closeAllWindows()'),Qt.CTRL + Qt.Key_Q)
+
+ self.menuBar().insertSeparator()
+ self.windows = QPopupMenu( self )
+ self.windows.setCheckable( True )
+ self.connect( self.windows, SIGNAL( "aboutToShow()" ),
+ self.windowsMenuAboutToShow )
+ self.menuBar().insertItem( "&Windows", self.windows )
+
+ self.help = QPopupMenu(self)
+ self.menuBar().insertSeparator()
+ self.menuBar().insertItem('&Help',self.help)
+
+ self.help.insertItem('&About',self.about,Qt.Key_F1)
+ self.help.insertItem('About &Qt',self.aboutQt)
+ self.help.insertSeparator()
+ self.help.insertItem( "What's &This", self, SLOT("whatsThis()"), Qt.SHIFT+Qt.Key_F1)
+
+ self.menuBar().insertSeparator()
+
+ self.vb = QVBox( self )
+ self.vb.setFrameStyle( QFrame.StyledPanel | QFrame.Sunken )
+ self.ws = QWorkspace( self.vb )
+ self.ws.setScrollBarsEnabled( True )
+ self.setCentralWidget( self.vb )
+
+ self.statusBar().message('Ready',2000)
+ #self.resize(450,600)
+
+ def newDoc(self):
+ w = MDIWindow( self.ws, "", Qt.WDestructiveClose )
+ self.connect( w, PYSIGNAL( "message" ), self.statusBar(), SLOT( "message(const QString&, int )") )
+ w.setCaption("unnamed document")
+ w.setIcon( QPixmap(document) )
+ # show the very first window in maximized mode
+ if len(self.ws.windowList())==0:
+ w.showMaximized()
+ else:
+ w.show()
+ return w
+
+ def load(self):
+ fn = QFileDialog.getOpenFileName( QString.null, QString.null, self )
+ if not fn.isEmpty():
+ w = self.newDoc()
+ w.load( fn )
+ else:
+ self.statusBar().message( "Loading aborted", 2000 )
+
+ def save(self):
+ m = self.ws.activeWindow()
+ if m:
+ m.save()
+
+ def saveAs(self):
+ m = self.ws.activeWindow()
+ if m:
+ m.saveAs()
+
+ def printDoc(self):
+ m = self.ws.activeWindow()
+ if m:
+ m.printDoc( self.printer )
+
+ def closeWindow(self):
+ m = self.ws.activeWindow()
+ if m:
+ m.close()
+
+ def about(self):
+ QMessageBox.about( self, "Qt Application Example",
+ "This example demonstrates simple use of\n "
+ "Qt's Multiple Document Interface (MDI).")
+
+ def aboutQt(self):
+ QMessageBox.aboutQt( self, "Qt Application Example" )
+
+ def windowsMenuAboutToShow(self):
+ self.windows.clear()
+ cascadeId = self.windows.insertItem("&Cascade", self.ws, SLOT("cascade() ") )
+ tileId = self.windows.insertItem("&Tile", self.ws, SLOT("tile()" ) )
+ if len(self.ws.windowList())==0 :
+ self.windows.setItemEnabled( cascadeId, False )
+ self.windows.setItemEnabled( tileId, False )
+ self.windows.insertSeparator()
+ windows = self.ws.windowList()
+ cnt=0
+ for i in windows:
+ id =self.windows.insertItem(i.caption(),self.windowsMenuActivated )
+ self.windows.setItemParameter( id, cnt );
+ self.windows.setItemChecked( id, self.ws.activeWindow() == i )
+ cnt=cnt+1
+
+ def windowsMenuActivated(self,sid ):
+ w = self.ws.windowList().at( id )
+ if w:
+ w.showNormal()
+ w.setFocus()
+
+
+class MDIWindow( QMainWindow):
+ def __init__(self,parent, name, wflags ):
+ QMainWindow.__init__(self,parent, name, wflags )
+ self.mmovie = 0
+ self.medit = QMultiLineEdit( self )
+ self.setFocusProxy( self.medit )
+ self.setCentralWidget( self.medit );
+
+
+ def load(self, fn ):
+ self.filename = fn
+ self.f=QFile( self.filename )
+ if not self.f.open( IO_ReadOnly ):
+ return
+
+ if fn.contains(".gif"):
+ tmp=QWidget(self)
+ self.setFocusProxy(tmp)
+ self.setCentralWidget(tmp)
+ self.medit.hide()
+ del self.medit
+ qm=QMovie(fn)
+ #ifdef Q_WS_QWS // temporary speed-test hack
+ #qm->setDisplayWidget(tmp);
+ #endif
+ tmp.setBackgroundMode(QWidget.NoBackground)
+ tmp.show()
+ self.mmovie=qm
+ else :
+ self.mmovie = 0
+ t=QTextStream(self.f)
+ s = t.read()
+ self.medit.setText( s )
+ self.f.close()
+ self.setCaption( self.filename )
+ self.emit(PYSIGNAL( "message"),(QString("Loaded document %1").arg(self.filename),2000 ))
+
+ def save(self):
+ if self.filename.isEmpty():
+ self.saveAs()
+ return
+ text = self.medit.text()
+ output=open(str(self.filename),'w')
+ output.write(str(text))
+ #emit message( QString("Could not write to %1").arg(filename), 2000 );
+ #return
+ output.close()
+ self.setCaption(self.filename)
+ self.emit(PYSIGNAL( "message"),(QString("File %1 saved").arg(self.filename),2000 ))
+
+ def saveAs(self):
+ fn = QFileDialog.getSaveFileName( self.filename, QString.null, self )
+ if not fn.isEmpty():
+ self.filename = fn
+ self.save()
+ else :
+ self.emit(PYSIGNAL( "message"),(QString("Saving aborted"),2000 ))
+
+ def printDoc(self,printer):
+ Margin = 10
+ pageNo = 1
+
+ if printer.setup(self):
+ self.emit(PYSIGNAL( "message"),(QString("Printing..."),2000 ))
+ p = QPainter()
+ p.begin(printer)
+ p.setFont(self.medit.font())
+ yPos = 0
+ fm = p.fontMetrics()
+ metrics = QPaintDeviceMetrics(printer)
+
+ for i in range(self.medit.numLines()):
+ if Margin + yPos > metrics.height() - Margin:
+ pageNo = pageNo + 1
+ self.emit(PYSIGNAL( "message"),(QString("Printing (page %1) ...").arg(pageNo),2000 ))
+ printer.newPage()
+ yPos = 0
+
+ p.drawText(Margin,Margin + yPos,metrics.width(),fm.lineSpacing(),Qt.ExpandTabs | Qt.DontClip,self.medit.textLine(i))
+ yPos = yPos + fm.lineSpacing()
+
+ p.end()
+ self.emit(PYSIGNAL( "message"),(QString("Printing completed"),2000 ))
+ else:
+ self.emit(PYSIGNAL( "message"),(QString("Printing aborted"),2000 ))
+
+
+if __name__=='__main__':
+ a = QApplication(sys.argv)
+ mw = ApplicationWindow()
+ mw.setCaption("PyQt Example - Multiple Documents Interface (MDI)")
+ mw.show()
+ a.connect(a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()'))
+ a.exec_loop()
diff --git a/python/pyqt/examples3/menu.py b/python/pyqt/examples3/menu.py
new file mode 100755
index 00000000..820da942
--- /dev/null
+++ b/python/pyqt/examples3/menu.py
@@ -0,0 +1,286 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys, string
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+# XPM
+p1_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFF0000",
+" ",
+" ",
+" .... ",
+" .XXXX. ",
+" .............. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .............. ",
+" "
+]
+
+# XPM
+p2_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ...... ",
+" .XXX.X. ",
+" .XXX.XX. ",
+" .XXX.XXX. ",
+" .XXX..... ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" ......... ",
+" ",
+" "
+]
+
+# XPM
+p3_xpm = [
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ",
+" ......... ",
+" ........... ",
+" ........ .. ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ......... ",
+" ",
+" "
+]
+
+
+# Auxiliary class to provide fancy menu items with different fonts.
+# Used for the "bold" and "underline" menu items in the options menu.
+
+class MyMenuItem( QCustomMenuItem ):
+ def __init__( self, s, f ):
+ QCustomMenuItem.__init__( self )
+ self.string = s
+ self.font = f
+
+ def paint( self, p, cg, act, enabled, x, y, w, h ) :
+ p.setFont ( self.font )
+ p.drawText( x, y, w, h, Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, self.string )
+
+ def sizeHint( self ):
+ return QFontMetrics( self.font ).size( Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, self.string )
+
+
+# Implementation of MenuExample class
+
+class MenuExample( QWidget ):
+ def __init__( self, parent=None, name=None ):
+ QWidget.__init__( self, parent, name )
+ self.p1 = QIconSet( QPixmap ( p1_xpm ) )
+ self.p2 = QIconSet( QPixmap ( p2_xpm ) )
+ self.p3 = QIconSet( QPixmap ( p3_xpm ) )
+
+ self.printer = QPopupMenu( self )
+ self.printer.insertTearOffHandle()
+ self.printer.insertItem( "&Print to printer", self.printDoc )
+ self.printer.insertItem( "Print to &file", self.printFile )
+ self.printer.insertItem( "Print to fa&x", self.fax )
+ self.printer.insertSeparator()
+ self.printer.insertItem( "Printer &Setup", self.printerSetup )
+
+ self.file = QPopupMenu( self )
+ self.file.insertItem( self.p1, "&Open", self.open, Qt.CTRL+Qt.Key_O )
+ self.file.insertItem( self.p2, "&New", self.news, Qt.CTRL+Qt.Key_N )
+ self.file.insertItem( self.p3, "&Save", self.save, Qt.CTRL+Qt.Key_S )
+ self.file.insertItem( "&Close", self.closeDoc, Qt.CTRL+Qt.Key_W )
+ self.file.insertSeparator()
+ self.file.insertItem( "&Print", self.printer, Qt.CTRL+Qt.Key_P )
+ self.file.insertSeparator()
+ self.file.insertItem( "E&xit", qApp, SLOT( "quit()" ), Qt.CTRL+Qt.Key_Q )
+
+ self.edit = QPopupMenu( self )
+ undoID = self.edit.insertItem( "&Undo", self.undo )
+ redoID = self.edit.insertItem( "&Redo", self.redo )
+ self.edit.setItemEnabled( undoID, FALSE )
+ self.edit.setItemEnabled( redoID, FALSE )
+
+ self.options = QPopupMenu( self )
+ self.options.insertTearOffHandle()
+ self.options.setCaption( "Options" )
+ self.options.insertItem( "&Normal Font", self.normal )
+ self.options.insertSeparator()
+
+ self.options.polish() # adjust system settings
+ f = self.options.font()
+ f.setBold( TRUE )
+ self.boldID = self.options.insertItem( MyMenuItem( "Bold", f ) )
+ self.options.setAccel( Qt.CTRL+Qt.Key_B, self.boldID )
+ self.options.connectItem( self.boldID, self.bold )
+
+ f = self.options.font()
+ f.setUnderline( TRUE )
+ self.underlineID = self.options.insertItem( MyMenuItem( "Underline", f ) )
+ self.options.setAccel( Qt.CTRL+Qt.Key_U, self.underlineID )
+ self.options.connectItem( self.underlineID, self.underline )
+
+ self.isBold = FALSE
+ self.isUnderline = FALSE
+ self.options.setCheckable( TRUE )
+
+ self.help = QPopupMenu( self )
+ self.help.insertItem( "&About", self.about, Qt.CTRL+Qt.Key_H )
+ self.help.insertItem( "About &Qt", self.aboutQt )
+
+ self.menu = QMenuBar( self )
+ self.menu.insertItem( "&File", self.file )
+ self.menu.insertItem( "&Edit", self.edit )
+ self.menu.insertItem( "&Options", self.options )
+ self.menu.insertSeparator()
+ self.menu.insertItem( "&Help", self.help )
+ self.menu.setSeparator( QMenuBar.InWindowsStyle )
+
+ msg = QLabel( self )
+ msg.setText( "A context menu is available.\n"
+ "Invoke it by right-clicking or by"
+ " pressing the 'context' button." )
+ msg.setGeometry( 0, self.height() - 60, self.width(), 60 )
+ msg.setAlignment( Qt.AlignCenter )
+
+ self.label = QLabel( self )
+ self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 )
+ self.label.setFrameStyle( QFrame.Box | QFrame.Raised )
+ self.label.setLineWidth( 1 )
+ self.label.setAlignment( Qt.AlignCenter )
+
+ self.connect( self, PYSIGNAL( "explain" ), self.label, SLOT( "setText(const QString &" ) )
+
+ self.setMinimumSize( 100, 80 )
+ self.setFocusPolicy( QWidget.ClickFocus )
+
+ def contextMenuEvent(self, cmev):
+ contextMenu = QPopupMenu( self )
+ caption = QLabel( "<font color=darkblue><u><b>Context Menu</b></u></font>", self )
+ caption.setAlignment( Qt.AlignCenter )
+ contextMenu.insertItem( caption )
+ contextMenu.insertItem( "&New", self.news, Qt.CTRL+Qt.Key_N )
+ contextMenu.insertItem( "&Open...", self.open, Qt.CTRL+Qt.Key_O )
+ contextMenu.insertItem( "&Save", self.save, Qt.CTRL+Qt.Key_S )
+ submenu = QPopupMenu( self )
+ submenu.insertItem( "&Print to printer", self.printDoc )
+ submenu.insertItem( "Print to &file", self.printFile )
+ submenu.insertItem( "Print to fa&x", self.fax )
+ contextMenu.insertItem( "&Print", submenu )
+ contextMenu.exec_loop( QCursor.pos() )
+
+ def open( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Open selected", ) )
+
+ def news( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/New selected", ) )
+
+ def save( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Save selected", ) )
+
+ def closeDoc( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Close selected", ) )
+
+ def undo( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "Edit/Undo selected", ) )
+
+ def redo( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "Edit/Redo selected", ) )
+
+ def normal( self ):
+ self.isBold = FALSE
+ self.isUnderline = FALSE
+ font = QFont()
+ self.label.setFont( font )
+ self.options.setItemChecked( self.boldID, self.isBold )
+ self.options.setItemChecked( self.underlineID, self.isUnderline )
+ self.emit( PYSIGNAL( "explain" ), ( "Options/Normal selected", ) )
+
+ def bold( self ):
+ self.isBold = not self.isBold
+ font = QFont()
+ font.setBold( self.isBold )
+ font.setUnderline( self.isUnderline )
+ self.label.setFont( font )
+ self.options.setItemChecked( self.boldID, self.isBold )
+ self.emit( PYSIGNAL( "explain" ), ( "Options/Bold selected", ) )
+
+ def underline( self ):
+ self.isUnderline = not self.isUnderline
+ font = QFont()
+ font.setBold( self.isBold )
+ font.setUnderline( self.isUnderline )
+ self.label.setFont( font )
+ self.options.setItemChecked( self.underlineID, self.isUnderline )
+ self.emit( PYSIGNAL("explain"), ( "Options/Underline selected", ))
+
+ def about( self ):
+ QMessageBox.about( self, "Qt Menu Example",
+ "This example demonstrates simple use of Qt menus.\n"
+ "You can cut and paste lines from it to your own\n"
+ "programs." )
+
+ def aboutQt( self ):
+ QMessageBox.aboutQt( self, "Qt Menu Example" )
+
+ def printDoc( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print selected", ) )
+
+ def printFile( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print To File selected", ) )
+
+ def fax( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print To Fax selected", ) )
+
+ def printerSetup( self ):
+ self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Printer Setup selected", ) )
+
+ def resizeEvent( self, ev ):
+ self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 )
+
+
+a = QApplication( sys.argv )
+m = MenuExample()
+
+m.setCaption( "Qt Examples - Menus" )
+a.setMainWidget( m )
+m.show()
+a.exec_loop()
diff --git a/python/pyqt/examples3/progress.py b/python/pyqt/examples3/progress.py
new file mode 100755
index 00000000..acdbd5aa
--- /dev/null
+++ b/python/pyqt/examples3/progress.py
@@ -0,0 +1,287 @@
+#!/usr/bin/env python
+
+#/****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+#**
+#** This file is part of an example program for Qt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#** Converted to PyQt3: Hans-Peter Jansen <hpj@urpla.net>
+#**
+#*****************************************************************************/
+
+from qt import *
+import sys
+from random import random
+
+TRUE = 1
+FALSE = 0
+
+class AnimatedThingy(QLabel):
+ def __init__(self, parent, s):
+ QLabel.__init__(self, parent)
+ self.nqix = 40
+ self.step = 0
+ self.ox = []
+ self.oy = []
+ self.px = []
+ self.py = []
+ for i in range(self.nqix):
+ self.ox.append(0)
+ self.oy.append(0)
+ self.px.append(0)
+ self.py.append(0)
+ self.x0, self.y0, self.x1, self.y1 = 0, 0, 0, 0
+ self.dx0 = 2 + int(random() * 8)
+ self.dy0 = 2 + int(random() * 8)
+ self.dx1 = 2 + int(random() * 8)
+ self.dy1 = 2 + int(random() * 8)
+ self.label = QString(s)
+ self.setEraseColor(Qt.black)
+ self.label.append("\n... and wasting CPU\nwith this animation!\n")
+
+ def XXXshow(self):
+ if not self.isVisible():
+ print "bla"
+ self.startTimer(100)
+ QWidget.show(self)
+
+ def hide(self):
+ QWidget.hide(self)
+ self.killTimers()
+
+ def sizeHint(self):
+ return QSize(120, 100)
+
+ def timerEvent(self, e):
+ p, pn = self._painter()
+ pn.setColor(self.eraseColor())
+ p.setPen(pn)
+ self.step = step = (self.step + 1) % self.nqix
+ # erase line
+ p.drawLine(self.ox[step], self.oy[step], self.px[step], self.py[step])
+ # calc new line coordinates
+ self.x0, self.dx0 = self._inc(self.x0, self.dx0, self.width())
+ self.y0, self.dy0 = self._inc(self.y0, self.dy0, self.height())
+ self.x1, self.dx1 = self._inc(self.x1, self.dx1, self.width())
+ self.y1, self.dy1 = self._inc(self.y1, self.dy1, self.height())
+ self.ox[step] = self.x0
+ self.oy[step] = self.y0
+ self.px[step] = self.x1
+ self.py[step] = self.y1
+ self._drawqix(p, pn, step)
+ self._drawtxt(p)
+
+ def paintEvent(self, e):
+ p, pn = self._painter()
+ p.setClipRect(e.rect())
+ for i in range(self.nqix):
+ self._drawqix(p, pn, i)
+ self._drawtxt(p)
+
+ def _painter(self):
+ p = QPainter(self)
+ pn = p.pen()
+ pn.setWidth(2)
+ p.setPen(pn)
+ return p, pn
+
+ def _drawqix(self, p, pn, step):
+ c = QColor()
+ # enhanced rainbow effect
+ i = (step * 511)/self.nqix
+ if i > 255:
+ i = 511 - i
+ c.setHsv(i, 255, 255)
+ pn.setColor(c)
+ p.setPen(pn)
+ p.drawLine(self.ox[step], self.oy[step], self.px[step], self.py[step])
+
+ def _drawtxt(self, p):
+ #p.setPen(self.colorGroup().text())
+ p.setPen(Qt.white)
+ p.drawText(self.rect(), Qt.AlignCenter, self.label)
+
+ def _inc(self, x, dx, b):
+ x += dx
+ if x < 0:
+ x = 0
+ dx = 2 + int(random() * 8)
+ elif x >= b:
+ x = b-1
+ dx = -(2 + int(random() * 8))
+ return x, dx
+
+
+class CPUWaster(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+ self.first_draw_item = 1000
+ self.last_draw_item = 1006
+ self.rects = 0
+ self.timer_driven = 0
+ self.default_label = 0
+ self.got_stop = 0
+ self.pb = None
+ menubar = QMenuBar(self, "menu")
+ file = QPopupMenu()
+ menubar.insertItem("&File", file)
+ for i in range(self.first_draw_item, self.last_draw_item + 1):
+ file.insertItem(self.drawItemText(i), i)
+ self.connect(menubar, SIGNAL("activated(int)"), self.doMenuItem)
+ file.insertSeparator()
+ file.insertItem("Quit", qApp, SLOT("quit()"))
+ options = QPopupMenu()
+ menubar.insertItem("&Options", options)
+ self.td_id = options.insertItem("Timer driven", self.timerDriven)
+ self.ld_id = options.insertItem("Loop driven", self.loopDriven)
+ options.insertSeparator()
+ self.dl_id = options.insertItem("Default label", self.defaultLabel)
+ self.cl_id = options.insertItem("Custom label", self.customLabel)
+ options.insertSeparator()
+ self.md_id = options.insertItem("No minimum duration", self.toggleMinimumDuration)
+ options.setCheckable(TRUE)
+ self.options = options
+ self.menubar = menubar
+ self.file = file
+ #self.loopDriven()
+ self.timerDriven()
+ #self.defaultLabel()
+ self.customLabel()
+ self.setFixedSize(400, 300)
+ self.setEraseColor(Qt.black)
+
+ def drawItemRects(self, id):
+ n = id - self.first_draw_item
+ r = 100
+ while n:
+ n -= 1
+ f = 5
+ if not n % 3:
+ f = 4
+ r *= f
+ return r
+
+ def drawItemText(self, id):
+ return QString("%d Rectangles" % self.drawItemRects(id))
+
+ # slots
+ def doMenuItem(self, id):
+ if id >= self.first_draw_item and id <= self.last_draw_item:
+ self._draw(self.drawItemRects(id))
+
+ def stopDrawing(self):
+ self.got_stop = TRUE
+
+ def timerDriven(self):
+ self.timer_driven = TRUE
+ self.options.setItemChecked(self.td_id, TRUE)
+ self.options.setItemChecked(self.ld_id, FALSE)
+
+ def loopDriven(self):
+ self.timer_driven = FALSE
+ self.options.setItemChecked(self.ld_id, TRUE)
+ self.options.setItemChecked(self.td_id, FALSE)
+
+ def defaultLabel(self):
+ self.default_label = TRUE
+ self.options.setItemChecked(self.dl_id, TRUE)
+ self.options.setItemChecked(self.cl_id, FALSE)
+
+ def customLabel(self):
+ self.default_label = FALSE
+ self.options.setItemChecked(self.dl_id, FALSE)
+ self.options.setItemChecked(self.cl_id, TRUE)
+
+ def toggleMinimumDuration(self):
+ self.options.setItemChecked(self.md_id, not self.options.isItemChecked(self.md_id))
+
+ def timerEvent(self, e):
+ self.pb.setProgress(self.pb.totalSteps() - self.rects)
+ self.rects -= 1
+ p = QPainter(self)
+ ww = self.width()
+ wh = self.height()
+
+ if ww > 8 and wh > 8:
+ c = QColor(int(random() * 255), int(random() * 255), int(random() * 255))
+ x = int(random() * (ww-8))
+ y = int(random() * (wh-8))
+ w = int(random() * (ww-x))
+ h = int(random() * (wh-y))
+ p.fillRect(x, y, w, h, QBrush(c))
+
+ if not self.rects or self.got_stop:
+ self.pb.setProgress(self.pb.totalSteps())
+ p = QPainter(self)
+ p.fillRect(0, 0, self.width(), self.height(), QBrush(self.eraseColor()))
+ self.enableDrawingItems(TRUE)
+ self.killTimers()
+ if not self.default_label:
+ self.pb.killTimers()
+ self.l.killTimers()
+ del self.pb
+ self.pb = None
+
+ def newProgressDialog(self, label, steps, modal):
+ d = QProgressDialog(label, "Cancel", steps, self, "progress", modal)
+ if self.options.isItemChecked(self.md_id):
+ d.setMinimumDuration(0)
+ if not self.default_label:
+ self.l = AnimatedThingy(d, label)
+ d.setLabel(self.l)
+ self.l.startTimer(100)
+ return d
+
+ def enableDrawingItems(self, yes):
+ for i in range(self.first_draw_item, self.last_draw_item):
+ self.menubar.setItemEnabled(i, yes)
+
+ def _draw(self, n):
+ if self.timer_driven:
+ if self.pb:
+ qWarning("This cannot happen!")
+ return
+
+ self.rects = n
+ self.pb = self.newProgressDialog("Drawing rectangles.\nUsing timer event.", n, FALSE)
+ self.pb.setCaption("Please Wait")
+ self.connect(self.pb, SIGNAL("cancelled()"), self.stopDrawing)
+ self.enableDrawingItems(FALSE)
+ self.startTimer(10)
+ self.got_stop = FALSE
+ else:
+ lpb = self.newProgressDialog("Drawing rectangles.\nUsing loop.", n, TRUE)
+ lpb.setCaption("Please Wait")
+
+ p = QPainter(self)
+ for i in range(n):
+ lpb.setProgress(i)
+ if lpb.wasCancelled():
+ break
+ c = QColor(int(random() * 255), int(random() * 255), int(random() * 255))
+ x = int(random() * (self.width()-8))
+ y = int(random() * (self.height()-8))
+ w = int(random() * (self.width()-x))
+ h = int(random() * (self.height()-y))
+ p.fillRect(x, y, w, h, QBrush(c))
+
+ lpb.cancel()
+ del lpb
+ p.fillRect(0, 0, self.width(), self.height(), QBrush(self.eraseColor()))
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ try:
+ n = int(sys.argv[1])
+ except:
+ n = 1
+ for i in range(n):
+ cpuw = CPUWaster()
+ if i == 0:
+ app.setMainWidget(cpuw)
+ cpuw.show()
+ app.exec_loop()
diff --git a/python/pyqt/examples3/progressbar.py b/python/pyqt/examples3/progressbar.py
new file mode 100755
index 00000000..9aba9ee5
--- /dev/null
+++ b/python/pyqt/examples3/progressbar.py
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+
+"""***********************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+**************************************************************************"""
+
+#import pdb
+import sys
+from qt import *
+
+FALSE = 0
+TRUE = 1
+
+class ProgressBar( QButtonGroup ):
+ # Constructor
+ # Creates child widgets of the ProgressBar widget
+ def __init__( self, parent=None, name=None ):
+ QButtonGroup.__init__( self, 0, Qt.Horizontal, "Progress Bar", parent, name )
+
+ self.timer = QTimer()
+
+ self.setMargin( 10 )
+ toplayout = QGridLayout( self.layout(), 2, 2, 5)
+
+ self.setRadioButtonExclusive( TRUE )
+
+ # insert three radiobuttons which the user can use
+ # to set the speed of the progress and two pushbuttons
+ # to start/pause/continue and reset the progress
+ self.slow = QRadioButton( "&Slow", self )
+ self.normal = QRadioButton( "&Normal", self )
+ self.fast = QRadioButton( "&Fast", self )
+ vb1 = QVBoxLayout( )
+ toplayout.addLayout( vb1, 0, 0 )
+ vb1.addWidget( self.slow )
+ vb1.addWidget( self.normal )
+ vb1.addWidget( self.fast )
+
+ # two push buttons, one for start, for for reset.
+ self.start = QPushButton( "&Start", self )
+ self.reset = QPushButton( "&Reset", self )
+
+ vb2 = QVBoxLayout()
+ toplayout.addLayout( vb2, 0, 1 )
+ vb2.addWidget( self.start )
+ vb2.addWidget( self.reset )
+
+ # Create the progressbar
+ self.progress = QProgressBar( 100, self )
+ #self.progress.setStyle( QMotifStyle() )
+ toplayout.addMultiCellWidget( self.progress, 1, 1, 0, 1 )
+
+ # connect the clicked() SIGNALs of the pushbuttons to SLOTs
+ self.connect( self.start, SIGNAL("clicked()"), self.slotStart )
+ self.connect( self.reset, SIGNAL("clicked()"), self.slotReset )
+
+ # connect the timeout() SIGNAL of the progress-timer to a SLOT
+ self.connect( self.timer, SIGNAL("timeout()"), self.slotTimeout )
+ # Let's start with normal speed...
+ self.normal.setChecked( TRUE )
+
+ # some contraints
+ self.start.setFixedWidth( 80 )
+ self.setMinimumWidth( 300 )
+
+ # SLOT slotStart
+ # This SLOT is called if the user clicks start/pause/continue button
+ def slotStart( self ):
+ # If the progress bar is at the beginning...
+ if self.progress.progress() == -1 :
+ # ...set according to the checked speed-radiobutton the
+ # the number of steps which are needed to complete the process
+ if self.slow.isChecked():
+ self.progress.setTotalSteps( 10000 )
+ elif self.normal.isChecked() :
+ self.progress.setTotalSteps( 1000 )
+ else :
+ self.progress.setTotalSteps( 50 )
+
+ # disable the speed-radiobuttons
+ self.slow.setEnabled( FALSE )
+ self.normal.setEnabled( FALSE )
+ self.fast.setEnabled( FALSE )
+
+ # If the progress is not running...
+ if not self.timer.isActive() :
+ # ...start the timer (and so the progress) with a interval of 1 ms...
+ self.timer.start( 1 )
+ # ...and rename the start/pause/continue button to Pause
+ self.start.setText( "&Pause" )
+ else : # if the prgress is running...
+ # ...stop the timer (and so the prgress)...
+ self.timer.stop()
+ # ...and rename the start/pause/continue button to Continue
+ self.start.setText( "&Continue" )
+
+ # SLOT slotReset
+ # This SLOT is called when the user clicks the reset button
+ def slotReset( self ):
+ # stop the timer and progress
+ self.timer.stop()
+
+ # rename the start/pause/continue button to Start...
+ self.start.setText( "&Start" )
+ # ...and enable this button
+ self.start.setEnabled( TRUE )
+
+ # enable the speed-radiobuttons
+ self.slow.setEnabled( TRUE )
+ self.normal.setEnabled( TRUE )
+ self.fast.setEnabled( TRUE )
+
+ # reset the progressbar
+ self.progress.reset()
+
+ # SLOT slotTimeout
+ # This SLOT is called each ms when the timer is
+ # active (== progress is running)
+ def slotTimeout( self ):
+ p = self.progress.progress()
+
+ # If the progress is complete...
+ if p == self.progress.totalSteps() :
+ # ...rename the start/pause/continue button to Start...
+ self.start.setText( "&Start" )
+ # ...and disable it...
+ self.start.setEnabled( FALSE )
+ # ...and return
+ return
+
+ # If the process is not complete increase it
+ p += 1
+ self.progress.setProgress( p )
+
+
+ #QPushButton *start, *pause, *reset;
+
+def main( args ):
+ a = QApplication( args )
+
+ progressbar = ProgressBar()
+ progressbar.setCaption("Qt Example - ProgressBar")
+ a.setMainWidget(progressbar)
+ progressbar.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/qdir.py b/python/pyqt/examples3/qdir.py
new file mode 100755
index 00000000..0da10ebe
--- /dev/null
+++ b/python/pyqt/examples3/qdir.py
@@ -0,0 +1,323 @@
+#!/usr/bin/env python
+#
+# 2005-02-12 initial version hp
+
+import os
+import pickle
+from qt import *
+from dirview import Directory, DirectoryView
+
+bookmarks = [
+ "22 14 8 1",
+ "# c #000080",
+ "a c #585858",
+ "b c #000000",
+ "c c #ffffff",
+ "d c #ffffff",
+ "e c #ffffff",
+ "f c #000000",
+ ". c None",
+ "...bb.................",
+ "..bacb....bbb.........",
+ "..badcb.bbccbab.......",
+ "..bacccbadccbab.......",
+ "..baecdbcccdbab.......",
+ "..bacccbacccbab.......",
+ "..badcdbcecdfab.......",
+ "..bacecbacccbab.......",
+ "..baccdbcccdbab.......",
+ "...badcbacdbbab.......",
+ "....bacbcbbccab.......",
+ ".....babbaaaaab.......",
+ ".....bbabbbbbbb.......",
+ "......bb.............."
+]
+
+home = [
+ "16 15 4 1",
+ "# c #000000",
+ "a c #ffffff",
+ "b c #c0c0c0",
+ ". c None",
+ ".......##.......",
+ "..#...####......",
+ "..#..#aabb#.....",
+ "..#.#aaaabb#....",
+ "..##aaaaaabb#...",
+ "..#aaaaaaaabb#..",
+ ".#aaaaaaaaabbb#.",
+ "###aaaaaaaabb###",
+ "..#aaaaaaaabb#..",
+ "..#aaa###aabb#..",
+ "..#aaa#.#aabb#..",
+ "..#aaa#.#aabb#..",
+ "..#aaa#.#aabb#..",
+ "..#aaa#.#aabb#..",
+ "..#####.######.."
+]
+
+
+class PixmapView(QScrollView):
+ def __init__(self, parent):
+ QScrollView.__init__(self, parent)
+ self.pixmap = None
+ self.viewport().setBackgroundMode(self.PaletteBase)
+
+ def setPixmap(self, pix):
+ self.pixmap = pix
+ self.resizeContents(pix.size().width(), pix.size().height())
+ self.viewport().repaint(False)
+
+ def drawContents(self, p, cx, cy, cw, ch):
+ p.fillRect(cx, cy, cw, ch, self.colorGroup().brush(QColorGroup.Base))
+ p.drawPixmap(0, 0, self.pixmap)
+
+
+class Preview(QWidgetStack):
+ def __init__(self, parent):
+ QWidgetStack.__init__(self, parent)
+ self.normalText = QMultiLineEdit(self)
+ self.normalText.setReadOnly(True)
+ self.html = QTextView(self)
+ self.pixmap = PixmapView(self)
+ self.raiseWidget(self.normalText)
+
+ def showPreview(self, url, size):
+ if url.isLocalFile():
+ path = url.path()
+ fi = QFileInfo(path)
+ if fi.isFile() and fi.size() > size * 1000:
+ self.normalText.setText(
+ "The File\n%s\nis too large, so I don't show it!" % path)
+ self.raiseWidget(self.normalText)
+ return
+ pix = QPixmap(path)
+ if pix.isNull():
+ if fi.isFile():
+ err = False
+ try:
+ text = open(path.latin1(), "r").read()
+ except IOError, msg:
+ text = QString(str(msg))
+ err = True
+ if not err and fi.extension().lower().contains("htm"):
+ url = self.html.mimeSourceFactory().makeAbsolute(
+ path, self.html.context())
+ self.html.setText(text, url)
+ self.raiseWidget(self.html)
+ return
+ else:
+ self.normalText.setText(text)
+ self.raiseWidget(self.normalText)
+ return
+ else:
+ self.normalText.setText("")
+ self.raiseWidget(self.normalText)
+ else:
+ self.pixmap.setPixmap(pix)
+ self.raiseWidget(self.pixmap)
+ else:
+ self.normalText.setText("I only show local files!")
+ self.raiseWidget(self.normalText)
+
+
+# We can't instantiate QFilePreview directly because it is abstract. Note that
+# the previewUrl() abstract is patched in later to work around the fact that
+# you can't multiply inherit from more than one wrapped class.
+class FilePreview(QFilePreview):
+ pass
+
+
+class PreviewWidget(QVBox):
+ def __init__(self, parent):
+ QVBox.__init__(self, parent)
+ self.setSpacing( 5 )
+ self.setMargin( 5 )
+ row = QHBox(self)
+ row.setSpacing(5)
+ QLabel("Only show files smaller than: ", row)
+ self.sizeSpinBox = QSpinBox(1, 10000, 1, row)
+ self.sizeSpinBox.setSuffix(" KB")
+ self.sizeSpinBox.setValue(128)
+ row.setFixedHeight(10 + self.sizeSpinBox.sizeHint().height())
+ self.__preview = Preview(self)
+ # workaround sip inability of multiple inheritance
+ # create a local QFilePreview instance and redirect
+ # the method, which is called on preview, to us
+ self.preview = FilePreview()
+ self.preview.previewUrl = self.previewUrl
+
+ def previewUrl(self, url):
+ self.__preview.showPreview(url, self.sizeSpinBox.value())
+
+
+class CustomFileDialog(QFileDialog):
+ def __init__(self, preview = False):
+ QFileDialog.__init__(self, None, None, True)
+ self.bookmarkFile = ".pybookmarks"
+ self.bookmarkList = []
+ if os.path.exists(self.bookmarkFile):
+ try:
+ self.bookmarkList = pickle.loads(open(self.bookmarkFile, "rb").read())
+ except IOError, msg:
+ print msg
+ self.setDir("/")
+ self.dirView = DirectoryView(self, None, True)
+ self.dirView.addColumn("")
+ self.dirView.header().hide()
+ root = Directory(self.dirView, "/")
+ root.setOpen(True)
+ self.dirView.setFixedWidth(200)
+ self.addLeftWidget(self.dirView)
+ p = QPushButton(self)
+ p.setPixmap(QPixmap(bookmarks))
+ QToolTip.add(p, "Bookmarks")
+ self.bookmarkMenu = QPopupMenu(self)
+ self.connect(self.bookmarkMenu, SIGNAL("activated(int)"),
+ self.bookmarkChosen)
+ self.addId = self.bookmarkMenu.insertItem("Add bookmark")
+ self.bookmarkMenu.insertSeparator()
+ for l in self.bookmarkList:
+ self.bookmarkMenu.insertItem(l)
+ p.setPopup(self.bookmarkMenu)
+ self.addToolButton(p, True)
+ self.connect(self.dirView, PYSIGNAL("folderSelected(const QString &)"),
+ self.setDir2)
+ self.connect(self, SIGNAL("dirEntered(const QString &)"),
+ self.dirView.setDir)
+ b = QToolButton(self)
+ QToolTip.add(b, "Go Home!")
+ b.setPixmap(QPixmap(home))
+ self.connect(b, SIGNAL("clicked()"), self.goHome)
+ self.addToolButton(b)
+
+ if preview:
+ self.setContentsPreviewEnabled(True)
+ pw = PreviewWidget(self)
+ self.setContentsPreview(pw, pw.preview)
+ self.setViewMode(QFileDialog.List)
+ self.setPreviewMode(QFileDialog.Contents)
+
+ w = self.width()
+ h = self.height()
+ if preview:
+ self.resize(w + w / 2, h + h / 3)
+ else:
+ self.resize(w + w / 3, h + h / 4)
+
+ def done(self, r):
+ if self.bookmarkList:
+ try:
+ open(self.bookmarkFile, "wb").write(pickle.dumps(self.bookmarkList))
+ except IOError, msg:
+ print msg
+ return QFileDialog.done(self, r)
+
+ def showEvent(self, e):
+ QFileDialog.showEvent(self, e)
+ self.dirView.setDir(self.dirPath())
+
+ def setDir2(self, path):
+ self.blockSignals(True)
+ self.setDir(path)
+ self.blockSignals(False)
+
+ def bookmarkChosen(self, i):
+ if i == self.addId:
+ # keep bookmarks pythonic
+ dp = self.dirPath().latin1()
+ if dp not in self.bookmarkList:
+ self.bookmarkList.append(dp)
+ self.bookmarkMenu.insertItem(dp)
+ else:
+ self.setDir(self.bookmarkMenu.text(i))
+
+ def goHome(self):
+ if os.getenv("HOME"):
+ self.setDir(os.getenv("HOME"))
+ else:
+ self.setDir("/")
+
+
+if __name__ == '__main__':
+ import sys
+ import getopt
+
+ def usage(msg = None):
+ if msg:
+ print >> sys.stderr, msg
+ print >> sys.stderr, """\
+usage: qdir [--any | --dir | --custom] [--preview] [--default f] {--filter f} [caption ...]
+ --any Get any filename, need not exist.
+ --dir Return a directory rather than a file.
+ --custom Opens a customized QFileDialog with
+ dir browser, bookmark menu, etc.
+ --preview Show a preview widget.
+ --default f Start from directory/file f.
+ --filter f eg. '*.gif' '*.bmp'
+ caption ... Caption for dialog.
+"""
+ sys.exit(1)
+
+ def main():
+ options = ["help", "any", "dir", "custom", "preview", "default=", "filter="]
+ mode = QFileDialog.ExistingFile
+ preview = False
+ custom = False
+ start = None
+ filter = QString.null
+ app = QApplication(sys.argv)
+
+ try:
+ optlist, args = getopt.getopt(sys.argv[1:], "h", options)
+ except getopt.error, msg:
+ usage(msg)
+
+ for opt, par in optlist:
+ if opt in ("-h", "--help"):
+ usage()
+ elif opt == "--any":
+ mode = QFileDialog.AnyFile
+ elif opt == "--dir":
+ mode = QFileDialog.Directory
+ elif opt == "--default":
+ start = par
+ elif opt == "--filter":
+ filter = par
+ elif opt == "--preview":
+ preview = True
+ elif opt == "--custom":
+ custom = True
+ if args:
+ caption = " ".join(args)
+ elif mode == QFileDialog.Directory:
+ caption = "Choose directory..."
+ else:
+ caption = "Choose file..."
+ if not start:
+ start = QDir.currentDirPath()
+ if not custom:
+ fd = QFileDialog(QString.null, filter, None, None, True)
+ fd.setMode(mode)
+ if preview:
+ fd.setContentsPreviewEnabled(True)
+ pw = PreviewWidget(fd)
+ fd.setContentsPreview(pw, pw.preview)
+ fd.setViewMode(QFileDialog.List)
+ fd.setPreviewMode(QFileDialog.Contents)
+ w = fd.width()
+ h = fd.height()
+ fd.resize(w + w / 3, h + h / 4)
+ fd.setCaption(caption)
+ fd.setSelection(start)
+ if fd.exec_loop() == QDialog.Accepted:
+ print "%s\n" % fd.selectedFile().latin1()
+ return 0
+ else:
+ return 1
+ else:
+ fd = CustomFileDialog(preview)
+ fd.exec_loop()
+ return 1
+
+ sys.exit(main())
diff --git a/python/pyqt/examples3/qmag.py b/python/pyqt/examples3/qmag.py
new file mode 100755
index 00000000..6a136481
--- /dev/null
+++ b/python/pyqt/examples3/qmag.py
@@ -0,0 +1,233 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+from qt import *
+
+TRUE = 1
+FALSE = 0
+
+zoomfactors = ["100%","200%","300%","400%","500%","600%","700%","800%","1600%"]
+
+refreshrates = [
+ "No autorefresh", "50 per second", "4 per second", "3 per second",
+ "2 per second", "Every second", "Every two seconds", "Every three seconds",
+ "Every five seconds", "Every ten seconds"]
+
+timer = (0, 20, 250, 333, 500, 1000, 2000, 3000, 5000, 10000)
+
+class MagWidget(QWidget):
+ def __init__(self, qApp, parent = None, name = None):
+ self.qApp = qApp
+ QWidget.__init__(self, parent, name)
+ self.pm = QPixmap() # pixmap magnified
+ self.p = QPixmap() # pixmap
+ self.image = QImage() # image of pixmap (for RGB)
+ self.z = 0 # zoom factor
+ self.r = 0 # autorefresh rate (index into refreshrates)
+ self.grabbing = FALSE # TRUE if currently grabbing
+ self.grabx = -1
+ self.graby = -1
+
+ self.zoom = QComboBox(FALSE, self)
+ self.zoom.insertStrList(zoomfactors, len(zoomfactors))
+ self.connect(self.zoom, SIGNAL("activated(int)"),
+ self.setZoom)
+
+ self.refresh = QComboBox(FALSE, self)
+ self.refresh.insertStrList(refreshrates, len(refreshrates))
+ self.connect(self.refresh, SIGNAL("activated(int)"),
+ self.setRefresh)
+
+ x = 0
+ w = 0
+ h = 20
+ for s in zoomfactors:
+ cw = self.zoom.fontMetrics().width(s)
+ w = max(cw, w)
+ self.zoom.setGeometry(x, 2, w + 30, h)
+
+ x = w + 34
+ w = 0
+ for s in refreshrates:
+ cw = self.refresh.fontMetrics().width(s)
+ w = max(cw, w)
+ self.refresh.setGeometry(x, 2, w + 30, h)
+
+ self.saveButton = QPushButton(self)
+ self.connect(self.saveButton, SIGNAL("clicked()"), self.save)
+ self.saveButton.setText("Save")
+ self.saveButton.setGeometry(x + w + 30 + 2, 2,
+ 10 + self.saveButton.fontMetrics().width("Save"), h)
+
+ self.quitButton = QPushButton(self)
+ self.connect(self.quitButton, SIGNAL("clicked()"), self.qApp, SLOT("quit()"))
+ self.quitButton.setText("Quit")
+ self.quitButton.setGeometry(self.saveButton.geometry().right() + 2, 2,
+ 10 + self.quitButton.fontMetrics().width("Quit"), h)
+
+ self.rgb = QLabel(self)
+ self.rgb.setText("")
+ self.rgb.setAlignment(Qt.AlignVCenter)
+ self.rgb.resize(self.width(), self.rgb.fontMetrics().height() + 4)
+
+ self.yoffset = self.zoom.height() + 4 + self.rgb.height()
+ self.setMinimumSize(self.quitButton.geometry().topRight().x() + 2,
+ self.yoffset + 20)
+ w = self.quitButton.geometry().topRight().x() + 2
+ self.resize(w, w)
+
+ self.setMouseTracking(TRUE)
+ self.grabx = self.qApp.desktop().width() / 2
+ self.graby = self.qApp.desktop().height() / 2
+ self.grabAround(QPoint(self.grabx, self.graby))
+
+ #self.zoom.setCurrentItem(1) # grabAround sets zoom factor
+ #self.setZoom(1)
+ self.refresh.setCurrentItem(5)
+ self.setRefresh(5)
+
+ def setZoom(self, index):
+ if index == 8:
+ self.z = 16
+ else:
+ self.z = index + 1
+ self.grab()
+
+ def setRefresh(self, index):
+ self.r = index
+ self.killTimers()
+ if index and not self.grabbing:
+ #print "st:", timer[index]
+ self.startTimer(timer[index])
+
+ def save(self):
+ if not self.p.isNull():
+ self.killTimers()
+ fn = QFileDialog.getSaveFileName()
+ if not fn.isEmpty():
+ self.p.save(fn, "BMP")
+ if self.r:
+ self.startTimer(timer[self.r])
+
+ def grab(self):
+ if not self.isVisible() or self.grabx < 0 or self.graby < 0:
+ return
+
+ w = (self.width() + self.z - 1) / self.z
+ h = (self.height() + self.z - 1 - self.yoffset) / self.z
+
+ if w < 1 or h < 1:
+ return
+
+ x = self.grabx - w / 2
+ y = self.graby - h / 2
+
+ if x + w > QApplication.desktop().width():
+ x = QApplication.desktop().width() - w
+ elif x < 0:
+ x = 0
+
+ if y + h > QApplication.desktop().height():
+ y = QApplication.desktop().height() - h
+ elif y < 0:
+ y = 0
+
+ self.p = QPixmap.grabWindow(QApplication.desktop().winId(), x, y, w, h)
+ self.image = self.p.convertToImage()
+ m = QWMatrix()
+ #print "z:", self.z
+ m.scale(float(self.z), float(self.z))
+ self.pm = self.p.xForm(m)
+ self.repaint(FALSE)
+
+ def paintEvent(self, e):
+ if not self.pm.isNull():
+ paint = QPainter(self)
+ paint.drawPixmap(0, self.zoom.height() + 4, self.pm,
+ 0, 0, self.width(), self.height() - self.yoffset)
+
+ def mousePressEvent(self, e):
+ if not self.grabbing:
+ self.grabbing = TRUE
+ self.killTimers()
+ self.grabMouse(Qt.crossCursor)
+ self.grabx = -1
+ self.graby = -1
+ else:
+ self.grabx = self.mapToGlobal(e.pos()).x()
+ self.graby = self.mapToGlobal(e.pos()).y()
+
+ def mouseReleaseEvent(self, e):
+ if self.grabbing and self.grabx >= 0 and self.graby >= 0:
+ self.grabbing = FALSE
+ self.grabAround(e.pos())
+ self.releaseMouse()
+
+ def grabAround(self, pos):
+ rx = self.mapToGlobal(pos).x()
+ ry = self.mapToGlobal(pos).y()
+ w = abs(rx - self.grabx)
+ h = abs(ry - self.graby)
+ if w > 10 and h > 10:
+ pz = 1
+ while w*pz*h*pz < self.width()*(self.height()-self.yoffset) and \
+ w*pz < QApplication.desktop().width() and \
+ h*pz < QApplication.desktop().height():
+ pz += 1
+ if (w*pz*h*pz - self.width()*(self.height()-self.yoffset)) > \
+ (self.width()*(self.height()-self.yoffset) - w*(pz-1)*h*(pz-1)):
+ pz -= 1
+ if pz < 1:
+ pz = 1
+ elif pz > 8:
+ pz = 8
+ self.zoom.setCurrentItem(pz-1)
+ self.z = pz
+ self.grabx = min(rx, self.grabx) + w / 2
+ self.graby = min(ry, self.graby) + h / 2
+ #self.resize(w*self.z, h*self.z*self.yoffset)
+ self.grab()
+
+ def mouseMoveEvent(self, e):
+ if self.grabbing or self.pm.isNull() or \
+ e.pos().y() > self.height() - self.zoom.fontMetrics().height() - 4 or \
+ e.pos().y() < self.zoom.height() + 4:
+ self.rgb.setText("")
+ else:
+ x = e.pos().x() / self.z
+ y = (e.pos().y() - self.zoom.height() - 4) / self.z
+ pixelinfo = ""
+ if self.image.valid(x, y):
+ px = self.image.pixel(x, y)
+ pixelinfo = "%3d,%3d,%3d #%02x%02x%02x" % (
+ qRed(px), qGreen(px), qBlue(px),
+ qRed(px), qGreen(px), qBlue(px))
+ self.rgb.setText("x=%d, y=%d %s" % \
+ (x + self.grabx, y + self.graby, pixelinfo))
+
+ def focusOutEvent(self, e):
+ self.rgb.setText("")
+
+ def timerEvent(self, e):
+ self.grab()
+
+ def resizeEvent(self, e):
+ self.rgb.setGeometry(0, self.height() - self.rgb.height(),
+ self.width(), self.rgb.height())
+
+if __name__=='__main__':
+ app = QApplication( sys.argv )
+ m = MagWidget(app)
+ app.setMainWidget(m)
+ m.show()
+ app.exec_loop()
diff --git a/python/pyqt/examples3/qt.png b/python/pyqt/examples3/qt.png
new file mode 100644
index 00000000..ca630a56
--- /dev/null
+++ b/python/pyqt/examples3/qt.png
Binary files differ
diff --git a/python/pyqt/examples3/qtlogo.png b/python/pyqt/examples3/qtlogo.png
new file mode 100644
index 00000000..0dc05a0e
--- /dev/null
+++ b/python/pyqt/examples3/qtlogo.png
Binary files differ
diff --git a/python/pyqt/examples3/rangecontrols.py b/python/pyqt/examples3/rangecontrols.py
new file mode 100755
index 00000000..4b6b347a
--- /dev/null
+++ b/python/pyqt/examples3/rangecontrols.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+INT_MAX = sys.maxint
+
+class RangeControls( QVBox ):
+ def __init__( self, parent=None, name=None ):
+ QVBox.__init__( self, parent, name )
+
+ row1 = QHBox( self )
+ cell2 = QVBox( row1 )
+ cell2.setMargin( 10 )
+ cell2.setFrameStyle( QFrame.WinPanel | QFrame.Sunken )
+
+ QWidget( cell2 )
+
+ label1 = QLabel( QString( "Enter a value between\n%1 and %2:" ).arg( -INT_MAX ).arg( INT_MAX ), cell2 )
+ label1.setMaximumHeight( label1.sizeHint().height() )
+ sb1 = QSpinBox( -INT_MAX, INT_MAX, 1, cell2 )
+ sb1.setValue( 0 )
+
+ label2 = QLabel( "Enter a zoom value:", cell2 )
+ label2.setMaximumHeight( label2.sizeHint().height() )
+ sb2 = QSpinBox( 0, 1000, 10, cell2 )
+ sb2.setSuffix( " %" )
+ sb2.setSpecialValueText( "Automatic" )
+
+ label3 = QLabel( "Enter a price:", cell2 )
+ label3.setMaximumHeight( label3.sizeHint().height() )
+ sb3 = QSpinBox( 0, INT_MAX, 1, cell2 )
+ sb3.setPrefix( "$" )
+ sb3.setValue( 355 )
+
+ QWidget( cell2 )
+
+ row2 = QHBox( self )
+
+ cell3 = QVBox( row2 )
+ cell3.setMargin( 10 )
+ cell3.setFrameStyle( QFrame.WinPanel | QFrame.Sunken )
+ hslider = QSlider( 0, 64, 1, 33, Qt.Horizontal, cell3 )
+ lcd2 = QLCDNumber( 2, cell3 )
+ lcd2.display( 33 )
+ lcd2.setSegmentStyle( QLCDNumber.Filled )
+ self.connect( hslider, SIGNAL("valueChanged( int )"), lcd2, SLOT("display( int )") )
+
+ cell4 = QHBox( row2 )
+ cell4.setFrameStyle( QFrame.WinPanel | QFrame.Sunken )
+ cell4.setMargin( 10 )
+ vslider = QSlider( 0, 64, 1, 8, Qt.Vertical, cell4 )
+ lcd3 = QLCDNumber( 3, cell4 )
+ lcd3.display( 8 )
+ self.connect( vslider, SIGNAL("valueChanged( int )"), lcd3, SLOT("display( int )") )
+
+def main( args ):
+ a = QApplication( args )
+
+ rangecontrols = RangeControls()
+ rangecontrols.resize( 500, 300 )
+ rangecontrols.setCaption( "Qt Example - Range Control Widgets" );
+ a.setMainWidget( rangecontrols )
+ rangecontrols.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/richtext.py b/python/pyqt/examples3/richtext.py
new file mode 100755
index 00000000..8ec4b0b4
--- /dev/null
+++ b/python/pyqt/examples3/richtext.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+sayings = [
+ "<b>Saying 1:</b><br>"
+ "<hr><br><br>"
+ "<big>Evil is that which one believes of others. It is a sin to believe evil "
+ "of others, but it is seldom a mistake.</big><br><br>"
+ "<center><i>-- H.L. Mencken</i></center>",
+
+ "<b>Saying 2:</b><br>"
+ "<hr><br><br>"
+ "<big>A well-used door needs no oil on its hinges.<br>"
+ "A swift-flowing steam does not grow stagnant.<br>"
+ "Neither sound nor thoughts can travel through a vacuum.<br>"
+ "Software rots if not used.<br><br>"
+ "These are great mysteries.</big><br><br>"
+ "<center><i>-- Geoffrey James, \"The Tao of Programming\"</i></center>",
+
+ "<b>Saying 3:</b><br>"
+ "<hr><br><br>"
+ "<big>Show business is just like high school, except you get paid.</big><br><br>"
+ "<center><i>-- Martin Mull</i></center>",
+
+ "<b>Saying 4:</b><br>"
+ "<hr><br><br>"
+ "<big><b>The Least Successful Executions</b><br>"
+ "<twocolumn><p> History has furnished us with two executioners worthy of attention. "
+ "The first performed in Sydney in Australia. In 1803 three attempts were "
+ "made to hang a Mr. Joseph Samuels. On the first two of these the rope "
+ "snapped, while on the third Mr. Samuels just hung there peacefully until he "
+ "and everyone else got bored. Since he had proved unsusceptible to capital "
+ "punishment, he was reprieved.</p>"
+ "<p> The most important British executioner was Mr. James Berry who "
+ "tried three times in 1885 to hang Mr. John Lee at Exeter Jail, but on each "
+ "occasion failed to get the trap door open.<!p>"
+ "<p> In recognition of this achievement, the Home Secretary commuted "
+ "Lee's sentence to \"life\" imprisonment. He was released in 1917, emigrated "
+ "to America and lived until 1933.</p></twocolumn></big><br><br>"
+ "<center><i>-- Stephen Pile, \"The Book of Heroic Failures\"</i></center>",
+
+ "<b>Saying 5:</b><br>"
+ "<hr><br><br>"
+ "<big>If you can, help others. If you can't, at least don't hurt others.</big><br><br>"
+ "<center><i>-- the Dalai Lama</i></center>",
+
+ "<b>Saying 6:</b><br>"
+ "<hr><br><br>"
+ "<big>Television has brought back murder into the home -- where it belongs.</big><br><br>"
+ "<center><i>-- Alfred Hitchcock</i></center>",
+
+ "<b>Saying 7:</b><br>"
+ "<hr><br><br>"
+ "<big>I don't know who my grandfather was; I am much more concerned to know "
+ "what his grandson will be.</big><br><br>"
+ "<center><i>-- Abraham Lincoln</i></center>",
+
+ 0
+]
+
+class MyRichText( QVBox ):
+ def __init__( self, parent = None, name = None ):
+ QVBox.__init__( self, parent, name )
+
+ self.setMargin( 5 )
+
+ self.view = QTextView( self )
+ #self.view.setText( "This is a <b>Test</b> with <i>italic</i> <u>stuff</u>" )
+ paper = QBrush()
+ paper.setPixmap( QPixmap( "marble.png" ) )
+ if paper.pixmap() != 0 :
+ self.view.setPaper( paper )
+ else :
+ self.view.setPaper( white )
+
+ self.view.setText( sayings[0] )
+ self.view.setMinimumSize( 450, 250 )
+
+ buttons = QHBox( self )
+ buttons.setMargin( 5 )
+
+ self.bClose = QPushButton( "&Close", buttons )
+ self.bPrev = QPushButton( "<< &Prev", buttons )
+ self.bNext = QPushButton( "&Next >>", buttons )
+
+ self.bPrev.setEnabled( False )
+
+ self.connect( self.bClose, SIGNAL("clicked()"), qApp, SLOT("quit()") )
+ self.connect( self.bPrev, SIGNAL("clicked()"), self.prev )
+ self.connect( self.bNext, SIGNAL("clicked()"), self.next )
+
+ self.num = 0
+
+ def prev( self ):
+ if self.num <= 0 :
+ return
+ self.num -= 1
+ self.view.setText( sayings[self.num] )
+ if self.num == 0 :
+ self.bPrev.setEnabled( False )
+ self.bNext.setEnabled( True )
+
+ def next( self ):
+ self.num += 1
+ if not sayings[self.num]:
+ return
+ self.view.setText( sayings[self.num] )
+ if not sayings[self.num + 1]:
+ self.bNext.setEnabled( False )
+ self.bPrev.setEnabled( True )
+
+def main( args ):
+ a = QApplication(sys.argv) # application object
+
+ richtext = MyRichText()
+ richtext.resize( 450, 350 );
+ richtext.setCaption( "Qt Example - Richtext" )
+ a.setMainWidget( richtext )
+ richtext.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/secret.py b/python/pyqt/examples3/secret.py
new file mode 100644
index 00000000..d6d2b6d0
--- /dev/null
+++ b/python/pyqt/examples3/secret.py
@@ -0,0 +1,65 @@
+# This is part of the dragdrop example.
+
+
+from qt import *
+
+
+def canDecode(e):
+ return e.provides( "secret/magic" )
+
+
+def decode(e):
+ payload = str(e.data( "secret/magic" ))
+ if ( str(payload) != '' ):
+ e.accept()
+ return QString("The secret number is "+str(ord(payload)) )
+
+ return None
+
+
+class SecretDrag(QStoredDrag):
+ def __init__(self, secret, parent=None, name=None):
+ QStoredDrag.__init__(self, 'secret/magic', parent, name)
+ data = QByteArray(chr(secret))
+ self.setEncodedData( data )
+
+
+# XPM
+picture_xpm = [
+ "16 16 3 1",
+ " c None",
+ ". c #000000",
+ "X c #FFFF00",
+ " ..... ",
+ " ..XXXXX.. ",
+ " .XXXXXXXXX. ",
+ " .XXXXXXXXXXX. ",
+ " .XX..XXX..XX. ",
+ ".XXXXXXXXXXXXX. ",
+ ".XX...XXX...XX. ",
+ ".XXX..XXX..XXX. ",
+ ".XXXXXXXXXXXXX. ",
+ ".XXXXXX.XXXXXX. ",
+ " .XX.XX.XX.XX. ",
+ " .XXX..X..XXX. ",
+ " .XXXXXXXXX. ",
+ " ..XXXXX.. ",
+ " ..... ",
+ " "
+]
+
+
+class SecretSource(QLabel):
+ def __init__(self, secret, parent=None, name=None):
+ QLabel.__init__(self, "Secret", parent, name)
+ self.setEraseColor( Qt.blue.light() )
+ self.setFrameStyle( QLabel.Box | QLabel.Sunken )
+ self.setMinimumHeight( self.sizeHint().height()*2 )
+ self.setAlignment( QLabel.AlignCenter )
+ self.mySecret = secret
+
+ def mousePressEvent(self, e):
+ sd = SecretDrag( self.mySecret, self )
+ sd.setPixmap(QPixmap(picture_xpm),QPoint(8,8))
+ sd.dragCopy()
+ self.mySecret = self.mySecret + 1
diff --git a/python/pyqt/examples3/semaphore.py b/python/pyqt/examples3/semaphore.py
new file mode 100755
index 00000000..ac8b231b
--- /dev/null
+++ b/python/pyqt/examples3/semaphore.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+#
+# A port of the semaphore example from Qt.
+
+
+import sys
+
+# Check if thread support was enabled.
+try:
+ from qt import QThread
+except:
+ print "Thread support not enabled"
+ sys.exit(1)
+
+from qt import *
+
+
+# The semaphore instances.
+yellowSem = None
+greenSem = None
+
+
+class YellowThread(QThread):
+ def __init__(self,o):
+ QThread.__init__(self)
+
+ self.receiver = o
+ self.stopped = 0
+ self.mutex = QMutex()
+
+ def run(self):
+ global yellowSem, greenSem
+
+ for i in range(20):
+ yellowSem += 1
+
+ event = QCustomEvent(12345)
+ event.setData(QString("Yellow!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(200);
+
+ greenSem -= 1
+
+ self.mutex.lock()
+ if self.stopped:
+ self.stopped = 0
+ self.mutex.unlock()
+ break
+
+ self.mutex.unlock()
+
+ yellowSem += 1
+
+ event = QCustomEvent(12346)
+ event.setData(QString("Yellow!"))
+ QThread.postEvent(self.receiver,event)
+
+ greenSem -= 1
+
+ def stop(self):
+ self.mutex.lock()
+ self.stopped = 1
+ self.mutex.unlock()
+
+
+class GreenThread(QThread):
+ def __init__(self,o):
+ QThread.__init__(self)
+
+ self.receiver = o
+ self.stopped = 0
+ self.mutex = QMutex()
+
+ def run(self):
+ global yellowSem, greenSem
+
+ for i in range(20):
+ greenSem += 1
+
+ event = QCustomEvent(12345)
+ event.setData(QString("Green!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(200)
+
+ yellowSem -= 1
+
+ self.mutex.lock()
+ if self.stopped:
+ self.stopped = 0
+ self.mutex.unlock()
+ break
+
+ self.mutex.unlock()
+
+ greenSem += 1
+
+ event = QCustomEvent(12346)
+ event.setData(QString("Green!"))
+ QThread.postEvent(self.receiver,event)
+ self.msleep(10)
+
+ yellowSem -= 1
+
+ def stop(self):
+ self.mutex.lock()
+ self.stopped = 1
+ self.mutex.unlock()
+
+
+class SemaphoreExample(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+
+ self.yellowThread = YellowThread(self)
+ self.greenThread = GreenThread(self)
+
+ global yellowSem, greenSem
+ yellowSem = QSemaphore(1)
+ greenSem = QSemaphore(1)
+
+ self.button = QPushButton("&Ignition!",self)
+ self.connect(self.button,SIGNAL("clicked()"),self.startExample)
+
+ self.mlineedit = QMultiLineEdit(self)
+ self.label = QLabel(self)
+
+ vbox = QVBoxLayout(self,5)
+ vbox.addWidget(self.button)
+ vbox.addWidget(self.mlineedit)
+ vbox.addWidget(self.label)
+
+ def __del__(self):
+ stopYellow = self.yellowThread.running()
+ stopGreen = self.greenThread.running()
+
+ if stopYellow:
+ self.yellowThread.stop()
+
+ if self.greenThread.running():
+ self.greenThread.stop()
+
+ if stopYellow:
+ self.yellowThread.wait()
+
+ if stopGreen:
+ self.greenThread.wait()
+
+ global yellowSem, greenSem
+ yellowSem = None
+ greenSem = None
+
+ def startExample(self):
+ if self.yellowThread.running() or self.greenThread.running():
+ QMessageBox.information(self,"Sorry",
+ "The threads have not completed yet, and must finish before "
+ "they can be started again.")
+
+ return
+
+ self.mlineedit.clear()
+
+ global yellowSem
+
+ while yellowSem.available() < yellowSem.total():
+ yellowSem -= 1
+
+ yellowSem += 1
+
+ self.yellowThread.start()
+ self.greenThread.start()
+
+ def customEvent(self,event):
+ if event.type() == 12345:
+ s = event.data()
+
+ self.mlineedit.append(s)
+
+ if s.latin1() == "Green!":
+ self.label.setEraseColor(Qt.green)
+ else:
+ self.label.setEraseColor(Qt.yellow)
+
+ self.label.setText(s)
+
+ del s
+ elif event.type() == 12346:
+ s = event.data()
+
+ QMessageBox.information(self,s.latin1() + " - Finished",
+ "The thread creating the \"" + s.latin1() +
+ "\" events has finished.")
+
+ del s
+ else:
+ print "Unknown custom event type:", event.type()
+
+
+app = QApplication(sys.argv)
+se = SemaphoreExample()
+app.setMainWidget(se)
+se.show()
+
+sys.exit(app.exec_loop())
diff --git a/python/pyqt/examples3/smalltable.py b/python/pyqt/examples3/smalltable.py
new file mode 100755
index 00000000..54f54c88
--- /dev/null
+++ b/python/pyqt/examples3/smalltable.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+import os
+from qt import *
+from qttable import *
+
+TRUE = 1
+FALSE = 0
+
+numRows = 30
+numCols = 10
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ table = QTable(numRows, numCols)
+
+ header = table.horizontalHeader()
+
+ header.setLabel(0, "Tiny", 40)
+ header.setLabel(1, "Checkboxes")
+ header.setLabel(5, "Combos")
+ header.setMovingEnabled(TRUE)
+
+ img = QImage("trolltech.bmp")
+ pix = QPixmap(img.scaleHeight(table.rowHeight(3)))
+ table.setPixmap(3, 2, pix)
+ table.setText(3, 2, "A Pixmap")
+
+ comboEntries = QStringList("one")
+ comboEntries.append("two")
+ comboEntries.append("three")
+ comboEntries.append("four")
+
+ for i in range(numRows):
+ item = QComboTableItem(table, comboEntries, FALSE)
+ item.setCurrentItem(i % 4)
+ table.setItem(i, 5, item)
+
+ for i in range(numRows):
+ table.setItem(i, 1, QCheckTableItem(table, "Check me"))
+
+ table.setCaption("Small table example")
+ table.show()
+ app.setMainWidget(table)
+ app.exec_loop()
diff --git a/python/pyqt/examples3/splitter.py b/python/pyqt/examples3/splitter.py
new file mode 100755
index 00000000..3cee9cf1
--- /dev/null
+++ b/python/pyqt/examples3/splitter.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+import sys
+from qt import *
+
+class Test(QWidget):
+ def __init__(self, parent=None, name='Test', f=0):
+ QWidget.__init__(self, parent, name, f)
+
+ def paintEvent(self, e):
+ p = QPainter(self)
+ p.setClipRect(e.rect())
+ d = 1000
+ x1 = 0
+ x2 = self.width() - 1
+ y1 = 0
+ y2 = self.height() - 1
+
+ x = (x1+x2)/2
+ p.drawLine(x, y1, x+d, y1+d)
+ p.drawLine(x, y1, x-d, y1+d)
+ p.drawLine(x, y2, x+d, y2-d)
+ p.drawLine(x, y2, x-d, y2-d)
+
+ y = (y1+y2)/2
+ p.drawLine(x1, y, x1+d, y+d)
+ p.drawLine(x1, y, x1+d, y-d)
+ p.drawLine(x2, y, x2-d, y+d)
+ p.drawLine(x2, y, x2-d, y-d)
+
+
+if __name__=="__main__":
+ a = QApplication(sys.argv)
+
+ s1 = QSplitter(Qt.Vertical, None, "main")
+ s2 = QSplitter(Qt.Horizontal, s1, "top")
+
+ t1 = Test(s2)
+ t1.setEraseColor(Qt.blue.light(180))
+ t1.setMinimumSize(50,0)
+
+ t2 = Test(s2)
+ t2.setEraseColor(Qt.green.light(180))
+ s2.setResizeMode(t2, QSplitter.KeepSize)
+ s2.moveToFirst(t2)
+
+ s3 = QSplitter(Qt.Horizontal, s1, "bottom")
+
+ t3 = Test(s3)
+ t3.setEraseColor(Qt.red)
+ t4 = Test(s3)
+ t4.setEraseColor(Qt.white)
+
+ t5 = Test(s3)
+ t5.setMaximumHeight(250)
+ t5.setMinimumSize(80,50)
+ t5.setEraseColor(Qt.yellow)
+
+ s1.setOpaqueResize(1)
+ s2.setOpaqueResize(1)
+ s3.setOpaqueResize(1)
+
+ a.setMainWidget(s1)
+ s1.show()
+ a.exec_loop()
diff --git a/python/pyqt/examples3/tabdialog.py b/python/pyqt/examples3/tabdialog.py
new file mode 100755
index 00000000..81f61480
--- /dev/null
+++ b/python/pyqt/examples3/tabdialog.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+
+class TabDialog( QTabDialog ):
+ def __init__( self, parent=None, name=None, filename=None ):
+ QTabDialog.__init__( self, parent, name )
+ self.filename = QString( filename )
+ self.fileinfo = QFileInfo( filename )
+ self.setupTab1()
+ self.setupTab2()
+ self.setupTab3()
+ self.connect( self, SIGNAL("applyButtonPressed()"), qApp, SLOT("quit()" ) )
+
+ def setupTab1( self ):
+ tab1 = QVBox( self )
+ tab1.setMargin( 5 )
+
+ QLabel( "Filename:", tab1 )
+ fname = QLineEdit( self.filename, tab1 )
+ fname.setFocus()
+
+ QLabel( "Path:", tab1 )
+ path = QLabel( self.fileinfo.dirPath( True ), tab1 )
+ path.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ QLabel( "Size:", tab1 )
+ size = QLabel( QString( "%1 KB" ).arg( self.fileinfo.size() ), tab1 )
+ size.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ QLabel( "Last Read:", tab1 )
+ lread = QLabel( self.fileinfo.lastRead().toString(), tab1 )
+ lread.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ QLabel( "Last Modified:", tab1 )
+ lmodif = QLabel( self.fileinfo.lastModified().toString(), tab1 )
+ lmodif.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ self.addTab( tab1, "General" )
+
+ def setupTab2( self ):
+ tab2 = QVBox( self )
+ tab2.setMargin( 5 )
+
+ bg = QButtonGroup( 1, QGroupBox.Horizontal, "Permissions", tab2 )
+
+ readable = QCheckBox( "Readable", bg )
+ if self.fileinfo.isReadable() :
+ readable.setChecked( True )
+
+ writable = QCheckBox( "Writeable", bg )
+ if self.fileinfo.isWritable() :
+ writable.setChecked( True )
+
+ executable = QCheckBox( "Executable", bg )
+ if self.fileinfo.isExecutable() :
+ executable.setChecked( True )
+
+ bg2 = QButtonGroup( 2, QGroupBox.Horizontal, "Owner", tab2 )
+
+ QLabel( "Owner", bg2 )
+ owner = QLabel( self.fileinfo.owner(), bg2 )
+ owner.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ QLabel( "Group", bg2 )
+ group = QLabel( self.fileinfo.group(), bg2 )
+ group.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+
+ self.addTab( tab2, "Permissions" )
+
+ def setupTab3( self ):
+ tab3 = QVBox( self )
+ tab3.setMargin( 5 )
+ tab3.setSpacing( 5 )
+
+ QLabel( QString( "Open %1 with:" ).arg( self.filename ), tab3 )
+
+ prgs = QListBox( tab3 )
+ for i in range( 0, 30, 1 ) :
+ prg = QString( "Application %1" ).arg( i )
+ prgs.insertItem( prg )
+ prgs.setCurrentItem( 3 )
+
+ QCheckBox( QString( "Open files with the extension '%1' always with this application" ).arg( self.fileinfo.extension() ), tab3 )
+
+ self.addTab( tab3, "Applications" )
+
+def main( args ):
+ a = QApplication(sys.argv)
+ #sys.argv.append("tabdialog.py") # to test uncomment this line
+ if len(sys.argv) < 2:
+ filename = QString(".")
+ else:
+ filename = QString(sys.argv[1])
+
+ tabdialog = TabDialog( None, "tabdialog", filename )
+ tabdialog.resize( 450, 350 );
+ tabdialog.setCaption( "Qt Example - Tabbed Dialog" )
+ a.setMainWidget( tabdialog )
+ tabdialog.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/tablestatistics.py b/python/pyqt/examples3/tablestatistics.py
new file mode 100755
index 00000000..59c71117
--- /dev/null
+++ b/python/pyqt/examples3/tablestatistics.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id$
+#**
+#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
+#**
+#** This file is part of an example program for PyQt. This example
+#** program may be used, distributed and modified without limitation.
+#**
+#*****************************************************************************/
+
+import sys
+import os
+from qt import *
+from qttable import *
+
+TRUE = 1
+FALSE = 0
+
+# column constants
+TB_FILE = 0
+TB_SIZE = 1
+TB_FLAG = 2
+TB_COLS = 3
+
+dirs = (
+ "kernel",
+ "tools",
+ "widgets",
+ "dialogs",
+ "xml",
+ "table",
+ "network",
+ "opengl",
+ "canvas",
+)
+
+class Table(QTable):
+ def __init__(self):
+ QTable.__init__(self, 0, TB_COLS)
+ self.setSorting(TRUE)
+ self.horizontalHeader().setLabel(TB_FILE, self.tr("File"))
+ self.horizontalHeader().setLabel(TB_SIZE, self.tr("Size (bytes)"))
+ self.horizontalHeader().setLabel(TB_FLAG, self.tr("Use in Sum"))
+ self.initTable()
+ self.adjustColumn(TB_FILE)
+
+ # if the user edited something we might need to recalculate the sum
+ self.connect(self, SIGNAL("valueChanged(int, int)"), self.recalcSum)
+
+ def initTable(self):
+ # read all the Qt source and header files into a list
+ all = []
+ qtdir = os.getenv("QTDIR")
+ for i in dirs:
+ dir = QDir(os.path.join(qtdir, "src", i))
+ lst = QStringList(dir.entryList("*.cpp; *.h"))
+ for f in lst:
+ if f.contains("moc"):
+ continue
+ all.append(os.path.join(i, str(f)))
+
+ # set the number of rows we'll need for the table
+ self.setNumRows(len(all) + 1)
+
+ i = 0
+ sum = 0L
+ # insert the data into the table
+ for it in all:
+ self.setText(i, TB_FILE, it)
+ f = QFile(os.path.join(qtdir, "src", str(it)))
+ self.setText(i, TB_SIZE, str(f.size()))
+ ci = ComboItem(self, QTableItem.WhenCurrent)
+ self.setItem(i, TB_FLAG, ci)
+ i = i + 1
+ sum += f.size()
+ self.displaySum(sum)
+
+ def recalcSum(self, dummy, col):
+ # only recalc if a value in the second or third column changed
+ if col < TB_SIZE or col > TB_FLAG:
+ return
+
+ sum = 0L
+ for i in range(self.numRows()-1):
+ if str(self.text(i, TB_FLAG)) == "No":
+ continue
+ sum += long(str(self.text(i, TB_SIZE)))
+ self.displaySum(sum)
+
+ def displaySum(self, sum):
+ # insert calculated data
+ i1 = TableItem(self, QTableItem.Never, self.tr("Sum"))
+ self.setItem(self.numRows()-1, TB_FILE, i1)
+ i2 = TableItem(self, QTableItem.Never, str(sum))
+ self.setItem(self.numRows()-1, TB_SIZE, i2)
+
+ def sortColumn(self, col, ascending, wholeRows):
+ # sum row should not be sorted, so get rid of it for now
+ self.clearCell(self.numRows()-1, TB_FILE)
+ self.clearCell(self.numRows()-1, TB_SIZE)
+ # do sort
+ QTable.sortColumn(self, col, ascending, TRUE)
+ # re-insert sum row
+ self.recalcSum(0, TB_SIZE)
+
+
+class TableItem(QTableItem):
+ def __init__(self, *args):
+ apply(QTableItem.__init__, (self,) + args)
+
+ def paint(self, p, cg, cr, selected):
+ g = QColorGroup(cg)
+ # last row is the sum row - we want to make it more visible by
+ # using a red background
+ if self.row() == self.table().numRows()-1:
+ g.setColor(QColorGroup.Base, QColor("red"))
+ QTableItem.paint(self, p, g, cr, selected)
+
+
+class ComboItem(QTableItem):
+ def __init__(self, t, et):
+ QTableItem.__init__(self, t, et, "Yes")
+ self.cb = None
+ # we do not want this item to be replaced
+ self.setReplaceable(FALSE)
+
+ def createEditor(self):
+ # create an editor - a combobox in our case
+ self.cb = QComboBox(self.table().viewport())
+ QObject.connect(self.cb, SIGNAL("activated(int)"),
+ self.table(), SLOT("doValueChanged()"))
+ self.cb.insertItem("Yes")
+ self.cb.insertItem("No")
+ # and initialize it
+ if str(self.text()) == "No":
+ self.cb.setCurrentItem(1)
+ else:
+ self.cb.setCurrentItem(0)
+ return self.cb
+
+ def setContentFromEditor(self, w):
+ # the user changed the value of the combobox, so synchronize the
+ # value of the item (its text), with the value of the combobox
+ if w.inherits("QComboBox"):
+ self.setText(w.currentText())
+ else:
+ QTableItem.setContentFromEditor(self, w)
+
+ def setText(self, s):
+ # initialize the combobox from the text
+ if self.cb:
+ if str(s) == "No":
+ self.cb.setCurrentItem(1)
+ else:
+ self.cb.setCurrentItem(0)
+ QTableItem.setText(self, s)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ t = Table()
+ t.setCaption("Statistics")
+ t.show()
+ app.setMainWidget(t)
+ app.exec_loop()
diff --git a/python/pyqt/examples3/tooltip.py b/python/pyqt/examples3/tooltip.py
new file mode 100755
index 00000000..69de776c
--- /dev/null
+++ b/python/pyqt/examples3/tooltip.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+
+"""**************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+***************************************************************************"""
+
+import sys
+from qt import *
+from random import random
+
+class DynamicTip( QToolTip ):
+ def __init__( self, parent ):
+ QToolTip.__init__( self, parent )
+
+ def maybeTip( self, pos ):
+ #if not self.parent.inherits( "TellMe" ):
+ if QToolTip(self).parentWidget().inherits( "TellMe" ) :
+ return
+ r = QRect( QToolTip(self).parentWidget().tip(pos) )
+ if not r.isValid():
+ return
+
+ s = QString( "position: %d,%d" % (r.center().x(), r.center().y()) )
+ QToolTip(self).tip( r, s )
+
+
+class TellMe( QWidget ):
+ def __init__( self, parent=None, name=None ):
+ QWidget.__init__( self, parent, name )
+
+ self.setMinimumSize( 30, 30 )
+ self.r1 = self.randomRect()
+ self.r2 = self.randomRect()
+ self.r3 = self.randomRect()
+
+ self.t = DynamicTip( self )
+
+ QToolTip.add( self, self.r3, "this color is called red" ) # <- helpful
+
+ def paintEvent( self, e ):
+
+ p = QPainter( self )
+
+ # I try to be efficient here, and repaint only what's needed
+ if e.rect().intersects( self.r1 ):
+ p.setBrush( Qt.blue )
+ p.drawRect( self.r1 )
+
+ if e.rect().intersects( self.r2 ):
+ p.setBrush( Qt.blue )
+ p.drawRect( self.r2 )
+
+ if e.rect().intersects( self.r3 ):
+ p.setBrush( Qt.red )
+ p.drawRect( self.r3 )
+
+ def mousePressEvent( self, e ):
+
+ if self.r1.contains( e.pos() ):
+ self.r1 = self.randomRect()
+ if self.r2.contains( e.pos() ):
+ self.r2 = self.randomRect()
+ self.repaint()
+
+ def resizeEvent( self, e ):
+
+ if not self.rect().contains( self.r1 ):
+ self.r1 = self.randomRect()
+ if not self.rect().contains( self.r2 ):
+ self.r2 = self.randomRect()
+
+ def randomRect( self ):
+ return QRect( random() * (self.width() - 20), random() * (self.height() - 20), 20, 20 )
+
+ def tip( self, p ):
+
+ if self.r1.contains( p ):
+ return self.r1
+ elif self.r2.contains( p ):
+ return self.r2
+ else:
+ return QRect( 0,0, -1,-1 )
+
+ def __del__( self ):
+ del self.t
+ self.t = None
+
+def main( args ):
+ a = QApplication( args )
+
+ mw = TellMe()
+ mw.setCaption( "Qt Example - Dynamic Tool Tips" )
+ a.setMainWidget( mw )
+ mw.show()
+
+ a.exec_loop()
+
+if __name__=="__main__":
+ main(sys.argv)
diff --git a/python/pyqt/examples3/trolltech.bmp b/python/pyqt/examples3/trolltech.bmp
new file mode 100644
index 00000000..220861e2
--- /dev/null
+++ b/python/pyqt/examples3/trolltech.bmp
Binary files differ
diff --git a/python/pyqt/examples3/trolltech.gif b/python/pyqt/examples3/trolltech.gif
new file mode 100644
index 00000000..f674369e
--- /dev/null
+++ b/python/pyqt/examples3/trolltech.gif
Binary files differ
diff --git a/python/pyqt/examples3/tt-logo.png b/python/pyqt/examples3/tt-logo.png
new file mode 100644
index 00000000..a0d9e340
--- /dev/null
+++ b/python/pyqt/examples3/tt-logo.png
Binary files differ
diff --git a/python/pyqt/examples3/tut1.py b/python/pyqt/examples3/tut1.py
new file mode 100755
index 00000000..982e984c
--- /dev/null
+++ b/python/pyqt/examples3/tut1.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+# Qt tutorial 1.
+
+import sys
+import qt
+
+
+a = qt.QApplication(sys.argv)
+
+hello = qt.QPushButton("Hello world!", None)
+hello.resize(100, 30)
+
+a.setMainWidget(hello)
+hello.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut10.py b/python/pyqt/examples3/tut10.py
new file mode 100755
index 00000000..182d04df
--- /dev/null
+++ b/python/pyqt/examples3/tut10.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+
+# Qt tutorial 10.
+
+import sys
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+ self.slider.setRange(minVal, maxVal)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.f = 0
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(), 0)
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def force(self):
+ return self.f
+
+ def setForce(self, newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(qt.PYSIGNAL("forceChanged(int)"), (self.f, ))
+
+ def paintEvent(self, ev):
+ if not ev.rect().intersects(self.cannonRect()):
+ return
+
+ cr = self.cannonRect()
+ pix = qt.QPixmap(cr.size())
+ pix.fill(self, cr.topLeft())
+
+ p = qt.QPainter(pix)
+
+ p.setBrush(qt.Qt.blue)
+ p.setPen(qt.Qt.NoPen)
+
+ p.translate(0, pix.height() - 1)
+ p.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ p.rotate(-self.ang)
+ p.drawRect(qt.QRect(33, -4, 15, 8))
+ p.end()
+
+ p.begin(self)
+ p.drawPixmap(cr.topLeft(), pix)
+
+ def cannonRect(self):
+ r = qt.QRect(0, 0, 50, 50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange(self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.force = LCDRange(self, "force")
+ self.force.setRange(10, 50)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ self.connect(self.force, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setForce)
+ self.connect(self.cannonField, qt.PYSIGNAL("forceChanged(int)"), self.force.setValue)
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ leftBox = qt.QVBoxLayout()
+
+ grid.addLayout(leftBox, 1, 0)
+
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 500, 355)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut11.py b/python/pyqt/examples3/tut11.py
new file mode 100755
index 00000000..95d50663
--- /dev/null
+++ b/python/pyqt/examples3/tut11.py
@@ -0,0 +1,213 @@
+#!/usr/bin/env python
+
+# Qt tutorial 11.
+
+import sys
+import math
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+ self.slider.setRange(minVal, maxVal)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = qt.QTimer(self, "movement handler")
+ self.connect(self.autoShootTimer, qt.SIGNAL("timeout()"), self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ self.barrelRect = qt.QRect(33, -4, 15, 8)
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(), 0)
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def force(self):
+ return self.f
+
+ def setForce(self, newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(qt.PYSIGNAL("forceChanged(int)"), (self.f, ))
+
+ def shoot(self):
+ if self.autoShootTimer.isActive():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+
+ def moveShot(self):
+ r = qt.QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ else:
+ r = r.unite(qt.QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self, ev):
+ updateR = ev.rect()
+ p = qt.QPainter(self)
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.autoShootTimer.isActive() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ def paintShot(self, p):
+ p.setBrush(qt.Qt.black)
+ p.setPen(qt.Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintCannon(self, p):
+ cr = self.cannonRect()
+ pix = qt.QPixmap(cr.size())
+ pix.fill(self, cr.topLeft())
+
+ tmp = qt.QPainter(pix)
+ tmp.setBrush(qt.Qt.blue)
+ tmp.setPen(qt.Qt.NoPen)
+
+ tmp.translate(0, pix.height() - 1)
+ tmp.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(), pix)
+
+ def cannonRect(self):
+ r = qt.QRect(0, 0, 50, 50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = qt.QRect(0, 0, 6, 6)
+ r.moveCenter(qt.QPoint(x, self.height() - 1 - y))
+ return r
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange(self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.force = LCDRange(self, "force")
+ self.force.setRange(10, 50)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ self.connect(self.force, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setForce)
+ self.connect(self.cannonField, qt.PYSIGNAL("forceChanged(int)"), self.force.setValue)
+
+ shoot = qt.QPushButton("&Shoot", self, "shoot")
+ shoot.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(shoot, qt.SIGNAL("clicked()"), self.cannonField.shoot)
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ leftBox = qt.QVBoxLayout()
+ grid.addLayout(leftBox, 1, 0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = qt.QHBoxLayout()
+ grid.addLayout(topBox, 0, 1)
+ topBox.addWidget(shoot)
+ topBox.addStretch(1)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 500, 355)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut12.py b/python/pyqt/examples3/tut12.py
new file mode 100755
index 00000000..818afd39
--- /dev/null
+++ b/python/pyqt/examples3/tut12.py
@@ -0,0 +1,253 @@
+#!/usr/bin/env python
+
+# Qt tutorial 12.
+
+import sys
+import math
+import random
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, s=None, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+
+ self.label = qt.QLabel(" ", self, "label")
+ self.label.setAlignment(qt.Qt.AlignCenter)
+
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+
+ self.slider.setRange(minVal, maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self, s):
+ self.label.setText(s)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = qt.QTimer(self, "movement handler")
+ self.connect(self.autoShootTimer, qt.SIGNAL("timeout()"), self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = qt.QPoint(0, 0)
+
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ self.barrelRect = qt.QRect(33, -4, 15, 8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(), 0)
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def force(self):
+ return self.f
+
+ def setForce(self, newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(qt.PYSIGNAL("forceChanged(int)"), (self.f, ))
+
+ def shoot(self):
+ if self.autoShootTimer.isActive():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+
+ def newTarget(self):
+ r = qt.QRegion(self.targetRect())
+ self.target = qt.QPoint(random.randint(200, 390), random.randint(10, 265))
+ self.repaint(r.unite(qt.QRegion(self.targetRect())))
+
+ def moveShot(self):
+ r = qt.QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("hit()"), ())
+ elif shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("missed()"), ())
+ else:
+ r = r.unite(qt.QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self, ev):
+ updateR = ev.rect()
+ p = qt.QPainter(self)
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.autoShootTimer.isActive() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self, p):
+ p.setBrush(qt.Qt.black)
+ p.setPen(qt.Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self, p):
+ p.setBrush(qt.Qt.red)
+ p.setPen(qt.Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintCannon(self, p):
+ cr = self.cannonRect()
+ pix = qt.QPixmap(cr.size())
+ pix.fill(self, cr.topLeft())
+
+ tmp = qt.QPainter(pix)
+ tmp.setBrush(qt.Qt.blue)
+ tmp.setPen(qt.Qt.NoPen)
+
+ tmp.translate(0, pix.height() - 1)
+ tmp.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(), pix)
+
+ def cannonRect(self):
+ r = qt.QRect(0, 0, 50, 50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = qt.QRect(0, 0, 6, 6)
+ r.moveCenter(qt.QPoint(x, self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = qt.QRect(0, 0, 20, 10)
+ r.moveCenter(qt.QPoint(self.target.x(), self.height() - 1 - self.target.y()))
+ return r
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange("ANGLE", self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.force = LCDRange("FORCE", self, "force")
+ self.force.setRange(10, 50)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ self.connect(self.force, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setForce)
+ self.connect(self.cannonField, qt.PYSIGNAL("forceChanged(int)"), self.force.setValue)
+
+ shoot = qt.QPushButton("&Shoot", self, "shoot")
+ shoot.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(shoot, qt.SIGNAL("clicked()"), self.cannonField.shoot)
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ leftBox = qt.QVBoxLayout()
+ grid.addLayout(leftBox, 1, 0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = qt.QHBoxLayout()
+ grid.addLayout(topBox, 0, 1)
+ topBox.addWidget(shoot)
+ topBox.addStretch(1)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 500, 355)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut13.py b/python/pyqt/examples3/tut13.py
new file mode 100755
index 00000000..a973ea70
--- /dev/null
+++ b/python/pyqt/examples3/tut13.py
@@ -0,0 +1,330 @@
+#!/usr/bin/env python
+
+# Qt tutorial 13.
+
+import sys
+import math
+import random
+import qt
+
+
+class LCDRange(qt.QWidget):
+ def __init__(self, s=None, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+
+ self.label = qt.QLabel(" ", self, "label")
+ self.label.setAlignment(qt.Qt.AlignCenter)
+
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ l = qt.QVBoxLayout(self)
+ l.addWidget(lcd, 1)
+ l.addWidget(self.slider)
+ l.addWidget(self.label)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+
+ self.slider.setRange(minVal, maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self, s):
+ self.label.setText(s)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = qt.QTimer(self, "movement handler")
+ self.connect(self.autoShootTimer, qt.SIGNAL("timeout()"), self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = qt.QPoint(0, 0)
+ self.gameEnded = 0
+
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ self.barrelRect = qt.QRect(33, -4, 15, 8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(), 0)
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def force(self):
+ return self.f
+
+ def setForce(self, newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(qt.PYSIGNAL("forceChanged(int)"), (self.f, ))
+
+ def shoot(self):
+ if self.isShooting():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (0, ))
+
+ def newTarget(self):
+ r = qt.QRegion(self.targetRect())
+ self.target = qt.QPoint(random.randint(200, 390), random.randint(10, 265))
+ self.repaint(r.unite(qt.QRegion(self.targetRect())))
+
+ def gameOver(self):
+ return self.gameEnded
+
+ def setGameOver(self):
+ if self.gameEnded:
+ return
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 1
+ self.repaint()
+
+ def restartGame(self):
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 0
+ self.repaint()
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+
+ def moveShot(self):
+ r = qt.QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("hit()"), ())
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+ elif shotR.x() > self.width() or shotR.y() > self.height():
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("missed()"), ())
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+ else:
+ r = r.unite(qt.QRegion(shotR))
+
+ self.repaint(r)
+
+ def paintEvent(self, ev):
+ updateR = ev.rect()
+ p = qt.QPainter(self)
+
+ if self.gameEnded:
+ p.setPen(qt.Qt.black)
+ p.setFont(qt.QFont("Courier", 48, qt.QFont.Bold))
+ p.drawText(self.rect(), qt.Qt.AlignCenter, "Game Over")
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if self.isShooting() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if not self.gameEnded and updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self, p):
+ p.setBrush(qt.Qt.black)
+ p.setPen(qt.Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self, p):
+ p.setBrush(qt.Qt.red)
+ p.setPen(qt.Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintCannon(self, p):
+ cr = self.cannonRect()
+ pix = qt.QPixmap(cr.size())
+ pix.fill(self, cr.topLeft())
+
+ tmp = qt.QPainter(pix)
+ tmp.setBrush(qt.Qt.blue)
+ tmp.setPen(qt.Qt.NoPen)
+
+ tmp.translate(0, pix.height() - 1)
+ tmp.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(), pix)
+
+ def cannonRect(self):
+ r = qt.QRect(0, 0, 50, 50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * 3.14159265 / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = qt.QRect(0, 0, 6, 6)
+ r.moveCenter(qt.QPoint(x, self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = qt.QRect(0, 0, 20, 10)
+ r.moveCenter(qt.QPoint(self.target.x(), self.height() - 1 - self.target.y()))
+ return r
+
+ def isShooting(self):
+ return self.autoShootTimer.isActive()
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class GameBoard(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange("ANGLE", self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.force = LCDRange("FORCE", self, "force")
+ self.force.setRange(10, 50)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ self.connect(self.force, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setForce)
+ self.connect(self.cannonField, qt.PYSIGNAL("forceChanged(int)"), self.force.setValue)
+
+ self.connect(self.cannonField, qt.PYSIGNAL("hit()"), self.hit)
+ self.connect(self.cannonField, qt.PYSIGNAL("missed()"), self.missed)
+
+ self.shoot = qt.QPushButton("&Shoot", self, "shoot")
+ self.shoot.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(self.shoot, qt.SIGNAL("clicked()"), self.fire)
+ self.connect(self.cannonField, qt.PYSIGNAL("canShoot(bool)"), self.shoot, qt.SLOT("setEnabled(bool)"))
+
+ restart = qt.QPushButton("&New Game", self, "newgame")
+ restart.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(restart, qt.SIGNAL("clicked()"), self.newGame)
+
+ self.hits = qt.QLCDNumber(2, self, "hits")
+ self.shotsLeft = qt.QLCDNumber(2, self, "shotsleft")
+ hitsL = qt.QLabel("HITS", self, "hitsLabel")
+ shotsLeftL = qt.QLabel("SHOTS LEFT", self, "shotsleftLabel")
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ leftBox = qt.QVBoxLayout()
+ grid.addLayout(leftBox, 1, 0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = qt.QHBoxLayout()
+ grid.addLayout(topBox, 0, 1)
+ topBox.addWidget(self.shoot)
+ topBox.addWidget(self.hits)
+ topBox.addWidget(hitsL)
+ topBox.addWidget(self.shotsLeft)
+ topBox.addWidget(shotsLeftL)
+ topBox.addStretch(1)
+ topBox.addWidget(restart)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+ self.newGame()
+
+ def fire(self):
+ if self.cannonField.gameOver() or self.cannonField.isShooting():
+ return
+ self.shotsLeft.display(self.shotsLeft.intValue() - 1)
+ self.cannonField.shoot()
+
+ def hit(self):
+ self.hits.display(self.hits.intValue() + 1)
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+ else:
+ self.cannonField.newTarget()
+
+ def missed(self):
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+
+ def newGame(self):
+ self.shotsLeft.display(15)
+ self.hits.display(0)
+ self.cannonField.restartGame()
+ self.cannonField.newTarget()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+gb = GameBoard()
+gb.setGeometry(100, 100, 500, 355)
+a.setMainWidget(gb)
+gb.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut14.py b/python/pyqt/examples3/tut14.py
new file mode 100755
index 00000000..f046757d
--- /dev/null
+++ b/python/pyqt/examples3/tut14.py
@@ -0,0 +1,378 @@
+#!/usr/bin/env python
+
+# Qt tutorial 14.
+
+import sys
+import math
+import random
+import qt
+
+
+class LCDRange(qt.QWidget):
+ def __init__(self, s=None, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+
+ self.label = qt.QLabel(" ", self, "label")
+ self.label.setAlignment(qt.Qt.AlignCenter)
+
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ l = qt.QVBoxLayout(self)
+ l.addWidget(lcd, 1)
+ l.addWidget(self.slider)
+ l.addWidget(self.label)
+
+ if s is not None:
+ self.setText(s)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+
+ self.slider.setRange(minVal, maxVal)
+
+ def text(self):
+ return self.label.text()
+
+ def setText(self, s):
+ self.label.setText(s)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.f = 0
+ self.timerCount = 0
+
+ self.autoShootTimer = qt.QTimer(self, "movement handler")
+ self.connect(self.autoShootTimer, qt.SIGNAL("timeout()"), self.moveShot)
+
+ self.shoot_ang = 0
+ self.shoot_f = 0
+ self.target = qt.QPoint(0, 0)
+ self.gameEnded = 0
+ self.barrelPressed = 0
+
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ self.barrelRect = qt.QRect(33, -4, 15, 8)
+
+ self.newTarget()
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint(self.cannonRect(), 0)
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def force(self):
+ return self.f
+
+ def setForce(self, newton):
+ if newton < 0:
+ newton = 0
+ if self.f == newton:
+ return
+ self.f = newton
+ self.emit(qt.PYSIGNAL("forceChanged(int)"), (self.f, ))
+
+ def shoot(self):
+ if self.isShooting():
+ return
+
+ self.timerCount = 0
+ self.shoot_ang = self.ang
+ self.shoot_f = self.f
+ self.autoShootTimer.start(50)
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (0, ))
+
+ def newTarget(self):
+ r = qt.QRegion(self.targetRect())
+ self.target = qt.QPoint(random.randint(200, 390), random.randint(10, 265))
+ self.repaint(r.unite(qt.QRegion(self.targetRect())))
+
+ def gameOver(self):
+ return self.gameEnded
+
+ def setGameOver(self):
+ if self.gameEnded:
+ return
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 1
+ self.repaint()
+
+ def restartGame(self):
+ if self.isShooting():
+ self.autoShootTime.stop()
+ self.gameEnded = 0
+ self.repaint()
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+
+ def moveShot(self):
+ r = qt.QRegion(self.shotRect())
+ self.timerCount = self.timerCount + 1
+
+ shotR = self.shotRect()
+
+ if shotR.intersects(self.targetRect()):
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("hit()"), ())
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+ elif shotR.x() > self.width() or shotR.y() > self.height() or shotR.intersects(self.barrierRect()):
+ self.autoShootTimer.stop()
+ self.emit(qt.PYSIGNAL("missed()"), ())
+ self.emit(qt.PYSIGNAL("canShoot(bool)"), (1, ))
+ else:
+ r = r.unite(qt.QRegion(shotR))
+
+ self.repaint(r)
+
+ def mousePressEvent(self, ev):
+ if ev.button() != qt.Qt.LeftButton:
+ return
+ if self.barrelHit(ev.pos()):
+ self.barrelPressed = 1
+
+ def mouseMoveEvent(self, ev):
+ if not self.barrelPressed:
+ return
+ pnt = ev.pos()
+ if pnt.x() <= 0:
+ pnt.setX(1)
+ if pnt.y() >= self.height():
+ pnt.setY(self.height() - 1)
+ rad = math.atan(float(self.rect().bottom() - pnt.y()) / pnt.x())
+ self.setAngle(int(round(rad * 180 / math.pi)))
+
+ def mouseReleaseEvent(self, ev):
+ if ev.button() == qt.Qt.LeftButton:
+ self.barrelPressed = 0
+
+ def paintEvent(self, ev):
+ updateR = ev.rect()
+ p = qt.QPainter(self)
+
+ if self.gameEnded:
+ p.setPen(qt.Qt.black)
+ p.setFont(qt.QFont("Courier", 48, qt.QFont.Bold))
+ p.drawText(self.rect(), qt.Qt.AlignCenter, "Game Over")
+
+ if updateR.intersects(self.cannonRect()):
+ self.paintCannon(p)
+
+ if updateR.intersects(self.barrierRect()):
+ self.paintBarrier(p)
+
+ if self.isShooting() and updateR.intersects(self.shotRect()):
+ self.paintShot(p)
+
+ if not self.gameEnded and updateR.intersects(self.targetRect()):
+ self.paintTarget(p)
+
+ def paintShot(self, p):
+ p.setBrush(qt.Qt.black)
+ p.setPen(qt.Qt.NoPen)
+ p.drawRect(self.shotRect())
+
+ def paintTarget(self, p):
+ p.setBrush(qt.Qt.red)
+ p.setPen(qt.Qt.black)
+ p.drawRect(self.targetRect())
+
+ def paintBarrier(self, p):
+ p.setBrush(qt.Qt.yellow)
+ p.setPen(qt.Qt.black)
+ p.drawRect(self.barrierRect())
+
+ def paintCannon(self, p):
+ cr = self.cannonRect()
+ pix = qt.QPixmap(cr.size())
+ pix.fill(self, cr.topLeft())
+
+ tmp = qt.QPainter(pix)
+ tmp.setBrush(qt.Qt.blue)
+ tmp.setPen(qt.Qt.NoPen)
+
+ tmp.translate(0, pix.height() - 1)
+ tmp.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ tmp.rotate(-self.ang)
+ tmp.drawRect(self.barrelRect)
+ tmp.end()
+
+ p.drawPixmap(cr.topLeft(), pix)
+
+ def cannonRect(self):
+ r = qt.QRect(0, 0, 50, 50)
+ r.moveBottomLeft(self.rect().bottomLeft())
+ return r
+
+ def shotRect(self):
+ gravity = 4.0
+
+ time = self.timerCount / 4.0
+ velocity = self.shoot_f
+ radians = self.shoot_ang * math.pi / 180
+
+ velx = velocity * math.cos(radians)
+ vely = velocity * math.sin(radians)
+ x0 = (self.barrelRect.right() + 5) * math.cos(radians)
+ y0 = (self.barrelRect.right() + 5) * math.sin(radians)
+ x = x0 + velx * time
+ y = y0 + vely * time - 0.5 * gravity * time * time
+
+ r = qt.QRect(0, 0, 6, 6)
+ r.moveCenter(qt.QPoint(x, self.height() - 1 - y))
+ return r
+
+ def targetRect(self):
+ r = qt.QRect(0, 0, 20, 10)
+ r.moveCenter(qt.QPoint(self.target.x(), self.height() - 1 - self.target.y()))
+ return r
+
+ def barrierRect(self):
+ return qt.QRect(145, self.height() - 100, 15, 100)
+
+ def barrelHit(self, p):
+ mtx = qt.QWMatrix()
+ mtx.translate(0, self.height() - 1)
+ mtx.rotate(-self.ang)
+ (mtx, invertable) = mtx.invert()
+ return self.barrelRect.contains(mtx.map(p))
+
+ def isShooting(self):
+ return self.autoShootTimer.isActive()
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class GameBoard(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange("ANGLE", self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.force = LCDRange("FORCE", self, "force")
+ self.force.setRange(10, 50)
+
+ box = qt.QVBox(self, "cannonFrame")
+ box.setFrameStyle(qt.QFrame.WinPanel | qt.QFrame.Sunken)
+
+ self.cannonField = CannonField(box, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ self.connect(self.force, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setForce)
+ self.connect(self.cannonField, qt.PYSIGNAL("forceChanged(int)"), self.force.setValue)
+
+ self.connect(self.cannonField, qt.PYSIGNAL("hit()"), self.hit)
+ self.connect(self.cannonField, qt.PYSIGNAL("missed()"), self.missed)
+
+ self.shoot = qt.QPushButton("&Shoot", self, "shoot")
+ self.shoot.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(self.shoot, qt.SIGNAL("clicked()"), self.fire)
+ self.connect(self.cannonField, qt.PYSIGNAL("canShoot(bool)"), self.shoot, qt.SLOT("setEnabled(bool)"))
+
+ restart = qt.QPushButton("&New Game", self, "newgame")
+ restart.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(restart, qt.SIGNAL("clicked()"), self.newGame)
+
+ self.hits = qt.QLCDNumber(2, self, "hits")
+ self.shotsLeft = qt.QLCDNumber(2, self, "shotsleft")
+ hitsL = qt.QLabel("HITS", self, "hitsLabel")
+ shotsLeftL = qt.QLabel("SHOTS LEFT", self, "shotsleftLabel")
+
+ accel = qt.QAccel(self)
+ accel.connectItem(accel.insertItem(qt.Qt.Key_Enter), self.fire)
+ accel.connectItem(accel.insertItem(qt.Qt.Key_Return), self.fire)
+ accel.connectItem(accel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Q), qt.qApp, qt.SLOT("quit()"))
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(box, 1, 1)
+ grid.setColStretch(1, 10)
+
+ leftBox = qt.QVBoxLayout()
+ grid.addLayout(leftBox, 1, 0)
+ leftBox.addWidget(self.angle)
+ leftBox.addWidget(self.force)
+
+ topBox = qt.QHBoxLayout()
+ grid.addLayout(topBox, 0, 1)
+ topBox.addWidget(self.shoot)
+ topBox.addWidget(self.hits)
+ topBox.addWidget(hitsL)
+ topBox.addWidget(self.shotsLeft)
+ topBox.addWidget(shotsLeftL)
+ topBox.addStretch(1)
+ topBox.addWidget(restart)
+
+ self.angle.setValue(60)
+ self.force.setValue(25)
+ self.angle.setFocus()
+
+ self.newGame()
+
+ def fire(self):
+ if self.cannonField.gameOver() or self.cannonField.isShooting():
+ return
+ self.shotsLeft.display(self.shotsLeft.intValue() - 1)
+ self.cannonField.shoot()
+
+ def hit(self):
+ self.hits.display(self.hits.intValue() + 1)
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+ else:
+ self.cannonField.newTarget()
+
+ def missed(self):
+ if self.shotsLeft.intValue() == 0:
+ self.cannonField.setGameOver()
+
+ def newGame(self):
+ self.shotsLeft.display(15)
+ self.hits.display(0)
+ self.cannonField.restartGame()
+ self.cannonField.newTarget()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+gb = GameBoard()
+gb.setGeometry(100, 100, 500, 355)
+a.setMainWidget(gb)
+gb.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut2.py b/python/pyqt/examples3/tut2.py
new file mode 100755
index 00000000..8b6a0768
--- /dev/null
+++ b/python/pyqt/examples3/tut2.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+# Qt tutorial 2.
+
+import sys
+import qt
+
+
+a = qt.QApplication(sys.argv)
+
+quit = qt.QPushButton("Quit", None)
+quit.resize(75, 30)
+quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+qt.QObject.connect(quit, qt.SIGNAL("clicked()"), a, qt.SLOT("quit()"))
+
+a.setMainWidget(quit)
+quit.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut3.py b/python/pyqt/examples3/tut3.py
new file mode 100755
index 00000000..9b739548
--- /dev/null
+++ b/python/pyqt/examples3/tut3.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+# Qt tutorial 3.
+
+import sys
+import qt
+
+
+a = qt.QApplication(sys.argv)
+
+box = qt.QVBox()
+box.resize(200, 120)
+
+quit = qt.QPushButton("Quit", box)
+quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+qt.QObject.connect(quit, qt.SIGNAL("clicked()"), a, qt.SLOT("quit()"))
+
+a.setMainWidget(box)
+box.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut4.py b/python/pyqt/examples3/tut4.py
new file mode 100755
index 00000000..9ad05c7d
--- /dev/null
+++ b/python/pyqt/examples3/tut4.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Qt tutorial 4.
+
+import sys
+import qt
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.setMinimumSize(200, 120)
+ self.setMaximumSize(200, 120)
+
+ quit = qt.QPushButton("Quit", self, "quit")
+ quit.setGeometry(62, 40, 75, 30)
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 200, 120)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut5.py b/python/pyqt/examples3/tut5.py
new file mode 100755
index 00000000..88a24475
--- /dev/null
+++ b/python/pyqt/examples3/tut5.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+# Qt tutorial 5.
+
+import sys
+import qt
+
+
+class MyWidget(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ quit = qt.QPushButton("Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+
+ slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ slider.setRange(0, 99)
+ slider.setValue(0)
+
+ self.connect(slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+
+
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut6.py b/python/pyqt/examples3/tut6.py
new file mode 100755
index 00000000..785edfe4
--- /dev/null
+++ b/python/pyqt/examples3/tut6.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+# Qt tutorial 6.
+
+import sys
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ slider.setRange(0, 99)
+ slider.setValue(0)
+ self.connect(slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+
+
+class MyWidget(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ quit = qt.QPushButton("Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ grid = qt.QGrid(4, self)
+
+ for c in range(4):
+ for r in range(4):
+ LCDRange(grid)
+
+
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut7.py b/python/pyqt/examples3/tut7.py
new file mode 100755
index 00000000..400505ea
--- /dev/null
+++ b/python/pyqt/examples3/tut7.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# Qt tutorial 7.
+
+import sys
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+
+class MyWidget(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ quit = qt.QPushButton("Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ grid = qt.QGrid(4, self)
+
+ self.lcdlist = []
+ previous = None
+
+ for r in range(4):
+ for c in range(4):
+ lr = LCDRange(grid)
+
+ if previous:
+ self.connect(lr, qt.PYSIGNAL("valueChanged(int)"), previous.setValue)
+
+ previous = lr
+ self.lcdlist.append(lr)
+
+
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut8.py b/python/pyqt/examples3/tut8.py
new file mode 100755
index 00000000..f7dd1567
--- /dev/null
+++ b/python/pyqt/examples3/tut8.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+
+# Qt tutorial 8.
+
+import sys
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+
+ self.slider.setRange(minVal, maxVal)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint()
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def paintEvent(self, ev):
+ p = qt.QPainter(self)
+ p.drawText(200, 200, "Angle = %d" % (self.ang))
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange(self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.angle, 1, 0, qt.Qt.AlignTop)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ self.angle.setValue(60)
+ self.angle.setFocus()
+
+
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 500, 355)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/tut9.py b/python/pyqt/examples3/tut9.py
new file mode 100755
index 00000000..aba7ddc1
--- /dev/null
+++ b/python/pyqt/examples3/tut9.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+
+# Qt tutorial 9.
+
+import sys
+import qt
+
+
+class LCDRange(qt.QVBox):
+ def __init__(self, parent=None, name=None):
+ qt.QVBox.__init__(self, parent, name)
+
+ lcd = qt.QLCDNumber(2, self, "lcd")
+ self.slider = qt.QSlider(qt.Qt.Horizontal, self, "slider")
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), lcd, qt.SLOT("display(int)"))
+ self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self, qt.PYSIGNAL("valueChanged(int)"))
+
+ self.setFocusProxy(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ def setValue(self, value):
+ self.slider.setValue(value)
+
+ def setRange(self, minVal, maxVal):
+ if minVal < 0 or maxVal > 99 or minVal > maxVal:
+ raise ValueError, "LCDRange.setRange(): invalid range"
+ self.slider.setRange(minVal, maxVal)
+
+
+class CannonField(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ self.ang = 45
+ self.setPalette(qt.QPalette(qt.QColor(250, 250, 200)))
+
+ def angle(self):
+ return self.ang
+
+ def setAngle(self, degrees):
+ if degrees < 5:
+ degrees = 5
+ if degrees > 70:
+ degrees = 70
+ if self.ang == degrees:
+ return
+ self.ang = degrees
+ self.repaint()
+ self.emit(qt.PYSIGNAL("angleChanged(int)"), (self.ang, ))
+
+ def paintEvent(self, ev):
+ p = qt.QPainter(self)
+
+ p.setBrush(qt.Qt.blue)
+ p.setPen(qt.Qt.NoPen)
+
+ p.translate(0, self.rect().bottom())
+ p.drawPie(qt.QRect(-35, -35, 70, 70), 0, 90 * 16)
+ p.rotate(-self.ang)
+ p.drawRect(qt.QRect(33, -4, 15, 8))
+
+ def sizePolicy(self):
+ return qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)
+
+
+class MyWidget(qt.QWidget):
+ def __init__(self, parent=None, name=None):
+ qt.QWidget.__init__(self, parent, name)
+
+ quit = qt.QPushButton("&Quit", self, "quit")
+ quit.setFont(qt.QFont("Times", 18, qt.QFont.Bold))
+ self.connect(quit, qt.SIGNAL("clicked()"), qt.qApp, qt.SLOT("quit()"))
+
+ self.angle = LCDRange(self, "angle")
+ self.angle.setRange(5, 70)
+
+ self.cannonField = CannonField(self, "cannonField")
+
+ self.connect(self.angle, qt.PYSIGNAL("valueChanged(int)"), self.cannonField.setAngle)
+ self.connect(self.cannonField, qt.PYSIGNAL("angleChanged(int)"), self.angle.setValue)
+
+ grid = qt.QGridLayout(self, 2, 2, 10)
+
+ grid.addWidget(quit, 0, 0)
+ grid.addWidget(self.angle, 1, 0, qt.Qt.AlignTop)
+ grid.addWidget(self.cannonField, 1, 1)
+ grid.setColStretch(1, 10)
+
+ self.angle.setValue(60)
+ self.angle.setFocus()
+
+
+qt.QApplication.setColorSpec(qt.QApplication.CustomColor)
+a = qt.QApplication(sys.argv)
+
+w = MyWidget()
+w.setGeometry(100, 100, 500, 355)
+a.setMainWidget(w)
+w.show()
+sys.exit(a.exec_loop())
diff --git a/python/pyqt/examples3/webbrowser/mainwindow.py b/python/pyqt/examples3/webbrowser/mainwindow.py
new file mode 100644
index 00000000..6afdfc8b
--- /dev/null
+++ b/python/pyqt/examples3/webbrowser/mainwindow.py
@@ -0,0 +1,1097 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'mainwindow.ui'
+#
+# Created: Sun Dec 5 14:50:47 2004
+# by: The PyQt User Interface Compiler (pyuic) snapshot-20041203
+#
+# WARNING! All changes made in this file will be lost!
+
+
+from qt import *
+from qtaxcontainer import QAxWidget
+
+image0_data = [
+"32 32 3 1",
+". c None",
+"a c #000080",
+"# c #808080",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+".......#aaaaaaaaa...............",
+"......#aaaaaaaaaaa.........a....",
+".....#aaa.......aaa.......aa....",
+"....#aaa.........aaaa....aaa....",
+"....aaa...........aaaa..aaaa....",
+"....aa..............aaaaaaaa....",
+"....aa...............aaaaaaa....",
+"....aa...............aaaaaaa....",
+"....aa..............aaaaaaaa....",
+"....aa.............aaaaaaaaa....",
+"....#aa...........aaaaaaaaaa....",
+".....#aa.........aaaaaaaaaaa....",
+"......aa#.......................",
+".......aa#......................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................"
+]
+image1_data = [
+"32 32 142 2",
+"Qt c None",
+"#O c #0010f7",
+"#P c #0021ef",
+"#R c #0021f7",
+"#S c #0021ff",
+"#T c #0029ff",
+"ah c #0031ff",
+"#N c #0829f7",
+"#x c #0831ff",
+"#C c #0839ff",
+"#E c #1029e7",
+"#r c #1039ff",
+"#o c #1042ff",
+"#Q c #1831de",
+"ak c #1831e7",
+"#k c #1842ff",
+"#H c #184aff",
+"aj c #2139e7",
+"#s c #2142de",
+"#G c #214aff",
+".9 c #2152ff",
+"#2 c #2939c6",
+"ag c #2939d6",
+"a# c #2942ce",
+"#p c #2942de",
+"#U c #2952ff",
+"ae c #295aff",
+"#y c #3152de",
+".2 c #3152e7",
+"#I c #315aff",
+"#z c #3163ff",
+"#1 c #394abd",
+"#L c #394ade",
+"#B c #3963ff",
+"#w c #396bff",
+"#V c #4252d6",
+"#l c #4252de",
+"#W c #4263ef",
+"#q c #426bff",
+".1 c #4273ff",
+"#5 c #4a5ad6",
+"#J c #4a73ff",
+"#K c #4a7bff",
+"ac c #4a84ff",
+"ab c #5263c6",
+".T c #5263ce",
+".M c #5273d6",
+".c c #5273e7",
+".U c #527bde",
+"#t c #527bf7",
+"#A c #5284ff",
+"#X c #5a63ad",
+".V c #5a84ef",
+"#F c #5a84ff",
+"#v c #5a8cff",
+"ad c #636bbd",
+".e c #637bc6",
+".W c #637bce",
+".3 c #637bd6",
+".Q c #6384de",
+".5 c #638cef",
+"#b c #638cff",
+"#j c #6394ff",
+"af c #6b73bd",
+"#0 c #6b73c6",
+".S c #6b84ce",
+"#u c #6b94ff",
+".C c #6b9cff",
+"ai c #737bce",
+".z c #7384b5",
+".j c #7384c6",
+"#6 c #738cce",
+".4 c #738cd6",
+".b c #739ce7",
+".I c #73a5ff",
+"#n c #73adff",
+"#Z c #7b84b5",
+".R c #7b8cbd",
+".J c #7b94bd",
+".n c #7ba5e7",
+".P c #7badff",
+"#c c #7bb5ff",
+"#M c #84849c",
+"#3 c #8484ad",
+".i c #848cc6",
+"al c #8494bd",
+"aa c #849cc6",
+".y c #84adff",
+".O c #84b5ff",
+"#a c #84bdff",
+".t c #8c94ad",
+".a c #8c94b5",
+".D c #8c9cbd",
+".m c #8c9cce",
+".A c #8ca5ef",
+".f c #8cadf7",
+".H c #8cbdff",
+"#D c #9494a5",
+"#8 c #9494bd",
+"#9 c #9494c6",
+"a. c #949cbd",
+".r c #94c6ff",
+"#d c #94ceff",
+"#4 c #9ca5ad",
+"#7 c #9ca5b5",
+".u c #9cbdf7",
+".6 c #9cc6ff",
+".0 c #9cceff",
+".x c #9cd6ff",
+".L c #a5a5b5",
+"#Y c #a5a5bd",
+"#e c #a5ceff",
+"## c #a5d6ff",
+".X c #adadb5",
+".k c #adc6ff",
+"#i c #add6ff",
+".E c #b5b5b5",
+".d c #b5b5bd",
+".K c #b5bdc6",
+".F c #b5ceff",
+".N c #b5d6ff",
+".B c #b5deff",
+".s c #bdbdbd",
+".# c #bdbdc6",
+"#. c #bdd6ff",
+".G c #bde7ff",
+"#h c #c6e7ff",
+"#f c #c6efff",
+".w c #c6f7ff",
+".h c #ced6ff",
+".Y c #cee7ff",
+".q c #ceefff",
+".Z c #cef7ff",
+".l c #d6efff",
+".8 c #d6f7ff",
+".o c #deefff",
+".7 c #def7ff",
+"#m c #deffff",
+"#g c #e7ffff",
+".v c #efffff",
+".p c #f7ffff",
+".g c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.a.b.c.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.d.j.k.g.g.l.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.a.n.o.g.p.q.r.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.s.t.u.g.g.v.w.x.y.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.z.A.g.g.v.B.x.r.C.DQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt.E.a.F.g.g.v.G.r.H.H.I.JQtQtQtQtQtQtQtQtQtQt.s.s.K.K.KQtQt",
+"QtQt.L.M.N.g.g.q.x.H.O.y.P.P.Q.LQtQtQt.s.s.K.a.R.S.T.U.V.V.Q.W.X",
+"Qt.#.Q.Y.g.g.Z.0.O.y.P.P.P.P.1.2.3.4.S.e.c.5.f.6.N.l.7.8.Z.0.9.T",
+".s.W#..g.p.Z###a.O.P.P.I.I.P#b#c#d#e.B#f#g.7.8.8.q#h#i.r.H#j#k#l",
+".e#e.g#m.G#d.O.y.P.I.I.I.I.I.I.H.6####.0.r.H#a.O#c.I#n.I#j.1#o#p",
+".5.p#f.x.0.O.y.P.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.C.C.C#b#q#r#s",
+"#t##.r.H.O#c.P.I.I.I.I.I.I.C.I.C.C.I.C.I.C.C.C.C#u.C#j#j#v#w#x#p",
+"#y#z#j.I.I.P.I.I.C.C.C.I.I.C.C#j#b#v#v#b#j#j#j#b#j#v#b#v#A#B#C#p",
+"#D#E#k#q#A#j.C.I.C.I.C.C.C.I#F#G#k#k#H#G#I#B.1.1#J#K#K.1#q#z#x#L",
+".s#M#N#r#z#K#b#u.C#u.C.C.I.I#B#O#P#Q#E#P#R#S#T#x#r#r#H.9#U#G#T#V",
+"QtQt.z#N#r#I.1#v#j#u#j.C#u.I#W#X#D.s#Y#D#Z#0#1#2#Q#P#P#N#N#T#E#3",
+"QtQt.s#4#5#x#H#B#K#v#j#j#j#j#6QtQtQtQtQtQtQt.s.s.d.X#7#8#9a..X.s",
+"QtQtQtQt.da##S#k#z#J#v#b#j#vaaQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.Eab#x#o#I#K#v#vac.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.sad#E#rae#q#K#wafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.Lagah#k#U#kafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt#4#Q#T#xahaiQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt#4adajakalQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"
+]
+image2_data = [
+"32 32 142 2",
+"Qt c None",
+"#Y c #0018e7",
+"aa c #0018ef",
+"#E c #0018ff",
+"#Q c #0021ef",
+"#K c #0021ff",
+"a# c #0029ff",
+"a. c #0829ff",
+"#P c #0831ff",
+"#4 c #1021d6",
+"#R c #1021de",
+"#L c #1029d6",
+"#V c #1029e7",
+"#n c #1039f7",
+"#W c #1039ff",
+"#O c #1042ff",
+"ah c #1831ce",
+"#y c #1842ff",
+"aj c #2131c6",
+"#S c #2131ce",
+"#z c #2139de",
+".0 c #2142de",
+"ai c #2142e7",
+".t c #214aef",
+"#D c #214aff",
+".x c #2152ff",
+"al c #2939de",
+"#d c #294ae7",
+"#I c #2952ff",
+"#J c #295aff",
+"#T c #3142bd",
+"#N c #315aff",
+"#s c #3163ff",
+"#F c #394ac6",
+"#G c #3952d6",
+"ag c #395ae7",
+".B c #3963f7",
+"ae c #3963ff",
+".g c #396bff",
+"#U c #424ab5",
+"#2 c #4252b5",
+".J c #425ace",
+"#A c #4263de",
+".b c #426be7",
+"#p c #426bef",
+"#x c #426bff",
+".n c #4273ff",
+".o c #4a63ce",
+"#t c #4a6be7",
+".Q c #4a73de",
+"#3 c #4a73ff",
+"#C c #4a7bff",
+"#Z c #525abd",
+".1 c #526bbd",
+".W c #526bc6",
+".R c #526bce",
+".P c #527be7",
+"#w c #5284ff",
+"#m c #528cff",
+"ac c #5a63bd",
+"ak c #5a6bbd",
+".O c #5a7bf7",
+"#H c #5a84ff",
+"#9 c #5a8cff",
+"af c #636bb5",
+".h c #636bbd",
+"ab c #6384ef",
+"#v c #638cff",
+".w c #6394ff",
+".s c #639cff",
+"#M c #6b73b5",
+".C c #6b73bd",
+"#u c #6b9cff",
+".c c #737bb5",
+".S c #7384ce",
+".N c #738ce7",
+".a c #7394de",
+".8 c #7394ef",
+"#8 c #739cf7",
+"#B c #739cff",
+".A c #73a5ff",
+"#0 c #7b84b5",
+".T c #7b8cbd",
+".9 c #7b94c6",
+"#. c #7b94d6",
+".7 c #7ba5ff",
+".X c #7badff",
+".I c #7bb5ff",
+"#5 c #848ca5",
+".y c #848cad",
+".M c #8494b5",
+"## c #849cd6",
+"#c c #84adff",
+".G c #84b5ff",
+".Z c #84bdff",
+"#o c #8c8cad",
+"#a c #8ca5ce",
+".Y c #8cb5ff",
+".H c #8cbdff",
+"#1 c #9494a5",
+".U c #9494ad",
+"#7 c #949cad",
+"#b c #94ade7",
+".z c #94c6ff",
+".v c #94ceff",
+".j c #9c9cad",
+".u c #9ca5ad",
+"#r c #9cc6ff",
+".m c #9cceff",
+".d c #a5a5a5",
+"#6 c #a5a5ad",
+".V c #a5a5b5",
+".K c #a5adb5",
+".2 c #a5ceff",
+".r c #a5d6ff",
+".L c #adadad",
+".i c #adadb5",
+".p c #adadbd",
+".q c #addeff",
+"#e c #ade7ff",
+"#X c #b5b5b5",
+".D c #b5b5bd",
+".E c #b5b5c6",
+".F c #b5bdc6",
+".f c #b5deff",
+"#q c #b5efff",
+".# c #bdbdbd",
+"ad c #bdbdc6",
+".6 c #bddeff",
+"#i c #bde7ff",
+"#h c #bdefff",
+"#g c #c6f7ff",
+"#l c #cee7ff",
+"#j c #cef7ff",
+"#f c #ceffff",
+".k c #d6efff",
+"#k c #d6f7ff",
+".l c #d6ffff",
+".e c #deefff",
+".5 c #e7ffff",
+".4 c #efffff",
+".3 c #f7ffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.#QtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.m.n.o.pQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.f.q.r.m.s.t.cQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.q.v.m.r.m.w.x.y.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.z.z.z.z.m.m.A.B.C.DQtQtQtQt",
+"QtQt.#.E.F.#.#QtQtQtQtQtQtQtQtQtQt.j.G.H.z.H.z.m.m.I.n.J.KQtQtQt",
+".L.M.N.O.P.Q.R.S.T.U.E.#.#QtQtQt.V.W.X.H.Y.H.H.z.z.z.Z.g.0.VQtQt",
+".1.2.3.4.5.k.6.2.Y.7.8.a.9#.###a#b.Y.G.G.G.G.Y.G.Y.H.z#c.n#d.u.#",
+".b#e#f#g#h#i.f#h#g#g#j#k#k#k.e.4.4#l#c.X.G.G.G.G.G.G.G.H.H#m#n#o",
+"#p.m#q.r.m.m.m.z#r.m.z.m.r.q.q.q.m.H.G.G.X#c.G.G.G.X.X.X.X.7#s.J",
+"#t.v.q.m.z.H.H.H.H.H.Z.Y.G.G.G.G.G.G.G.X#c.I#c.X.X.X.A.A#u#u.n#d",
+"#t.H.r.z.Y.G#c.X.X.X.7.X.X.X.X.X.X.X.X.X.X.X.X.X.7.A#u#v#w#x#y#z",
+"#A.I.m.H.X.X.X.A.A#B.A#B#u#u#u#u#B.X#c.X.X.X.X.A.A#u.w#C.g#D#E#F",
+"#G.s.G.A.w#v#H#w#C.n#x#s#I#y#y#y#J#H.X.7.X.X.7.A#u.w#w#J#y#K#L.U",
+"#M.x.n#N#D#O#P#K#K#Q#Q#R#S#T#U#U#V#W.A.X.A.A#B#u.w.n#D#P#E#L.VQt",
+"#X.h#V#Q#Y#R#S#U#Z#0#1.p.#.#.#.#.V#2.s.7.A#u#u.w#3#D#P#E#4#5QtQt",
+"QtQt#6#1#7.D.#.#QtQtQtQtQtQtQtQtQt#6#8#B#u.w#9#s#ya.#E#F.V.#QtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.8#9#H#w#s#Wa#aa#2#XQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ab#w#C#N#W#K#Eac.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtad.Pae#J#Wa##Vaf#XQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ag#W#P#Eah#6QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ai#K#Eaj.jQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#akalak.iQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"
+]
+image3_data = [
+"25 25 2 1",
+"# c #000000",
+". c #ffffff",
+".........................",
+".........................",
+".........................",
+".........######..........",
+".......##########........",
+"......####....####.......",
+".....###........###......",
+"....#####........###.....",
+"....##.###........##.....",
+"...###..###.......###....",
+"...##....###.......##....",
+"...##.....###......##....",
+"...##......###.....##....",
+"...##.......###....##....",
+"...###.......###..###....",
+"....##........###.##.....",
+"....###........#####.....",
+".....###........###......",
+"......####....####.......",
+".......##########........",
+".........######..........",
+".........................",
+".........................",
+".........................",
+"........................."
+]
+image4_data = [
+"32 32 3 1",
+". c None",
+"# c #000080",
+"a c #808080",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"...............#########a.......",
+"....#.........###########a......",
+"....##.......###.......###a.....",
+"....###....####.........###a....",
+"....####..####...........###....",
+"....########..............##....",
+"....#######...............##....",
+"....#######...............##....",
+"....########..............##....",
+"....#########.............##....",
+"....##########...........##a....",
+"....###########.........##a.....",
+".......................a##......",
+"......................a##.......",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................",
+"................................"
+]
+image5_data = [
+"32 32 211 2",
+"Qt c None",
+"aJ c #000000",
+"#W c #080800",
+"#N c #100800",
+"#V c #101000",
+"#E c #101008",
+"#M c #181000",
+"#L c #181800",
+"#D c #181808",
+"#F c #181810",
+"as c #211800",
+"#K c #211808",
+"#J c #212110",
+"#G c #212118",
+"#q c #212121",
+"an c #292100",
+"#I c #292110",
+"aN c #292910",
+"#H c #292918",
+"#y c #292921",
+"aF c #312900",
+"#C c #312918",
+"#i c #312929",
+".0 c #313131",
+"#7 c #393100",
+"#U c #393108",
+"aG c #393931",
+".M c #393939",
+"#u c #423939",
+"#c c #424a42",
+"aE c #4a4200",
+"aY c #4a4210",
+".V c #4a4239",
+"#B c #4a4a39",
+".m c #4a4a42",
+"aP c #4a5218",
+".G c #4a5252",
+".z c #4a5a52",
+"aO c #524200",
+"am c #524a00",
+"#T c #524a08",
+"#p c #524a4a",
+".s c #525252",
+"#a c #525a52",
+".7 c #52635a",
+"#b c #526363",
+"az c #5a4a00",
+"#6 c #5a5208",
+"aw c #5a5210",
+".Z c #5a524a",
+".L c #5a5a52",
+".y c #5a5a5a",
+".F c #5a635a",
+"#S c #635208",
+"ax c #635a10",
+".U c #635a52",
+".r c #635a5a",
+"aZ c #636321",
+"## c #63635a",
+".A c #636363",
+"#h c #636b6b",
+"aL c #637329",
+"af c #6b5a00",
+".6 c #6b635a",
+"#o c #6b6363",
+".E c #6b6b63",
+"a4 c #6b7321",
+"aS c #6b7329",
+"aR c #6b7331",
+"aX c #736300",
+"al c #736308",
+"#R c #736b10",
+".T c #736b63",
+"a5 c #737329",
+".i c #73736b",
+".K c #737373",
+"a7 c #737b29",
+"#g c #737b73",
+"a9 c #7b7318",
+"#A c #7b7373",
+"a8 c #7b7b21",
+"aV c #7b7b29",
+"aQ c #7b7b5a",
+".J c #7b7b73",
+".1 c #7b7b7b",
+"b# c #7b8431",
+"a3 c #7b844a",
+".8 c #7b847b",
+"ay c #847308",
+"#5 c #847310",
+"aT c #847b21",
+"b. c #847b29",
+".S c #847b73",
+".d c #847b7b",
+"aW c #848421",
+"a1 c #848429",
+"a0 c #848431",
+"bq c #84844a",
+".H c #848484",
+"ae c #8c7b08",
+"ak c #8c7b10",
+"#j c #8c8484",
+"ba c #8c8c63",
+"a2 c #8c8c7b",
+".x c #8c8c84",
+".2 c #8c948c",
+".9 c #8cada5",
+"aC c #947b08",
+".Y c #947b73",
+"aK c #948c10",
+"#Q c #948c18",
+"a6 c #948c29",
+"#m c #948c84",
+"bp c #949442",
+"aH c #949484",
+".D c #94948c",
+".n c #949494",
+"bn c #949c4a",
+"bl c #949c5a",
+"bj c #949c63",
+".u c #949c94",
+".v c #94a59c",
+"aI c #9c8c10",
+"#4 c #9c8c18",
+"#O c #9c8c29",
+"aM c #9c9418",
+"#r c #9c948c",
+"bo c #9c9c4a",
+"bm c #9c9c52",
+"bk c #9c9c5a",
+"bh c #9c9c6b",
+".k c #9c9c94",
+".a c #9c9c9c",
+"bi c #9ca56b",
+"bf c #9ca573",
+".h c #9ca59c",
+"#f c #9ca5a5",
+".B c #9cbdb5",
+"#P c #a59400",
+"aB c #a59418",
+"#k c #a5948c",
+"ar c #a59c29",
+".N c #a59c8c",
+".P c #a59c94",
+".W c #a59c9c",
+"bg c #a5a573",
+"bd c #a5a584",
+".q c #a5a59c",
+".c c #a5a5a5",
+"be c #a5ad7b",
+".o c #a5ada5",
+".C c #a5adad",
+".I c #a5b5ad",
+"#d c #a5bdb5",
+".w c #a5c6bd",
+"ad c #ad9c10",
+"aj c #ad9c18",
+"#w c #ad9c94",
+".f c #ada59c",
+"bc c #adad7b",
+"bb c #adad84",
+".# c #adada5",
+".t c #adadad",
+".4 c #adb5ad",
+"ai c #b5a518",
+"aq c #b5a529",
+"aD c #b5a542",
+"ao c #b5a54a",
+".O c #b5a594",
+"#v c #b5a59c",
+"at c #b5ad52",
+"#z c #b5ad9c",
+".5 c #b5ada5",
+".j c #b5b5ad",
+".e c #b5b5b5",
+".3 c #b5bdb5",
+".Q c #b5bdbd",
+"#e c #b5cec6",
+"#8 c #bda539",
+"#x c #bda59c",
+"#3 c #bdad29",
+"#X c #bdad31",
+"ag c #bdad42",
+"#n c #bdb5ad",
+".b c #bdbdbd",
+".X c #bdcec6",
+"aU c #c6b510",
+"#. c #c6c6bd",
+".p c #c6cece",
+".g c #c6ded6",
+"ac c #cebd31",
+"#l c #ced6ce",
+"#s c #ced6d6",
+"#t c #cedede",
+"#9 c #d6c610",
+"#2 c #d6c631",
+"ap c #dec608",
+"ah c #dece10",
+"ab c #dece31",
+".l c #deefe7",
+".R c #deefef",
+"au c #e7ce08",
+"a. c #e7d621",
+"a# c #e7d631",
+"aa c #e7d639",
+"#1 c #e7de39",
+"#Y c #efde10",
+"av c #efde21",
+"aA c #efde29",
+"#Z c #f7e729",
+"#0 c #f7e739",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.bQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.e.m.nQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.b.a.o.p.q.r.s.tQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.u.v.w.k.x.y.z.A.bQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.t.k.B.C.k.D.E.F.G.HQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.b.#.#.o.I.b.c.J.K.L.M.tQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.a.N.O.P.Q.R.o.S.T.U.V.s.bQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.t.N.P.W.k.X.R.P.Y.i.A.Z.0.1QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.b.x.2.w.3.4.I.j.#.5.6.L.F.7.0.cQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.n.8.9.p#..o.4.x.x.x##.s#a#b.s#c.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.t.D.##d#e.h#f.o.P.2.2#g###h.A.z#i.KQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.b#j.P.f.P#k.q.4.X#l#m#n.n#o.J.6#p#i#q.cQtQtQtQtQtQt",
+"QtQtQtQtQtQt.W#m#k.O#m#r.5.k#s#t#m.q#r.U.E.T#p#u#i.M.eQtQtQtQtQt",
+"QtQtQtQtQt.b.x#r.o.t#v.f.o.4.l#l#w#x.f.i#o.E###a.m#y.nQtQtQtQtQt",
+"QtQtQtQtQt.b.e.c#d.o#z.u.q#f.I.q.#.#.2#A.U.m#B#h.h.j.bQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.b#C#D#E#F#G#G#G#H#I#J#K#L#M#N.iQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.b#O#P#Q#R#S#T#U#L#M#V#W#N#V#V.iQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.b#X#Y#Z#0#0#1#2#3#4#5#6#7#M#V#AQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.b#8#9a.a#aaaaabac#3adaeaf#7#M.JQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.bagaha.a##1aaaa#2aiajakalaman#AQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtaoapa.a#aaaqaraq#3aj#5afamas.JQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtatauava#aw#V#W#Max#4ayafazan.JQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtatahaAaB#W#N#M#V#V#RaCalazas.JQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.baDap#Z#Q#N#M#V#M#N#6akafaEaFaG.E#h.JQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtaHaIahaAaB#W#W#N#WaJ#6aKalamaF#WaJaJ#yQtQtQtQtQt",
+"QtQtQtQtQtQtQt.qaLaIahavaM#WaJ#W#DaN#RaealaOan#NaNaPaQQtQtQtQtQt",
+"QtQtQtQtQtQt.jaRaSaTaUavaB#WaNaPaLaVaWaeaX#6aYaZa0a1a2QtQtQtQtQt",
+"QtQtQtQtQt.ba3a4a5a5aVa6a1aZa7aSaSa5a8a9a4a5b.b#a5a5.kQtQtQtQtQt",
+"QtQtQtQtQtbaa7a7aVa0b.b#a7b#a0a7a7a7aSaSa7b.aVa0aVaR.#QtQtQtQtQt",
+"QtQtQtQtQtbbbcbdbebebfbgbhbhbibjbjbkbkblbmbmbnbobpbq.bQtQtQtQtQt"
+]
+image6_data = [
+"22 22 165 2",
+"Qt c None",
+".h c #000000",
+".o c #010101",
+"aF c #030303",
+"#n c #060606",
+".H c #080808",
+".r c #0c0c0c",
+".q c #121212",
+"#V c #124e7f",
+"#m c #131313",
+".G c #161615",
+"aI c #172cac",
+".6 c #181818",
+"aH c #1841b2",
+".p c #191919",
+"#8 c #1928ba",
+"#W c #1929ba",
+"aj c #192aba",
+"av c #1a31c2",
+"aE c #1b1b1b",
+"aD c #1b2bc8",
+"at c #1c79d2",
+"ah c #1c7dd4",
+"aA c #1d1d1d",
+"aC c #1d7ad7",
+"#6 c #1d7eda",
+".5 c #1e1e1e",
+"#7 c #1e8ae0",
+"ai c #1e8de0",
+"au c #1e90e0",
+".g c #242424",
+"#5 c #313b6c",
+"aB c #343d8d",
+"#3 c #393939",
+".f c #3d3d3d",
+"ak c #433967",
+"#C c #434442",
+"aw c #443c6e",
+"#l c #454643",
+"as c #454fa3",
+".4 c #474845",
+"#R c #474846",
+".e c #484848",
+"aG c #4856a0",
+".d c #4a4a4a",
+"#9 c #4c416a",
+".c c #4c4c4c",
+"ag c #4c5cae",
+"#X c #4d4669",
+"#z c #4dc2b2",
+"#P c #4e445a",
+"#G c #53504e",
+".l c #545454",
+".b c #555555",
+"#Q c #595274",
+"#i c #62b2a2",
+".a c #676767",
+"#j c #69b6a3",
+".F c #6f6f6a",
+".K c #6f8b89",
+"ax c #747474",
+"#a c #76a1a0",
+".# c #797979",
+"#A c #7bd7e8",
+"ay c #7d7d7d",
+"#U c #7e7d73",
+".I c #808080",
+".O c #81a3b8",
+"az c #828282",
+"#y c #82d1c0",
+"#S c #848484",
+"#O c #857e7c",
+"#F c #86add2",
+"#k c #86cdda",
+"#N c #89b1bd",
+"#h c #8acec3",
+"#o c #8c8c8c",
+"#L c #8cbbca",
+"al c #8d8d8d",
+".s c #8f8f8f",
+"#H c #909090",
+"#K c #90bac9",
+"#M c #91c4cf",
+"#t c #929292",
+".X c #94c2cf",
+".N c #94c2d0",
+".W c #959595",
+"#B c #96b9cb",
+".3 c #97bede",
+".L c #98c2ce",
+".P c #9b9b9b",
+"a. c #9c9c9c",
+"am c #9d9d9d",
+"#s c #9dbdc4",
+"#b c #9e9e9e",
+"#Y c #a0a0a0",
+"an c #a6a6a6",
+"#v c #a6d1d6",
+".Z c #a7a1a1",
+"#I c #a7a7a7",
+"#D c #a7edde",
+".M c #a8d8e5",
+"#u c #aeaeae",
+"ac c #b1b1b1",
+"a# c #b2b2b2",
+".2 c #b5cbd6",
+".V c #b6b6b6",
+"ar c #b7b7b7",
+"#Z c #b8b8b8",
+"#2 c #bababa",
+".Q c #babbb9",
+"aq c #bbbbbb",
+"#c c #bcbcbc",
+".8 c #bfbfbf",
+"ap c #c0c0c0",
+".1 c #c1d9d2",
+"aa c #c8c8c8",
+"ab c #cacaca",
+"ao c #cbcbcb",
+".Y c #ccf8f1",
+"#J c #cdcdcd",
+".R c #cecece",
+"#p c #d1f9f4",
+"#4 c #d5d5d5",
+"#w c #d5ece4",
+".9 c #d5f6f5",
+"#0 c #d6d6d6",
+".U c #d7d7d7",
+"af c #d8d8d8",
+".x c #dadada",
+".y c #dbdbdb",
+".w c #dcdcdc",
+"#e c #dcf7f4",
+"#1 c #dddddd",
+"ae c #dedede",
+".E c #dfdfdf",
+".z c #e0e0e0",
+"#g c #e0ebe4",
+"#q c #e1edea",
+"#d c #e2e2e2",
+"#x c #e2ebe2",
+".0 c #e2eee5",
+".v c #e3e3e3",
+"## c #e3e7d5",
+"#r c #e4ebd9",
+"#E c #e4f2ec",
+".u c #e5e5e5",
+".S c #e7e7e7",
+".k c #e9e9e9",
+".A c #ebebeb",
+".D c #ededed",
+".t c #f0f0f0",
+"#T c #f4f4f4",
+".n c #f6f6f6",
+".C c #f7f7f7",
+"#f c #f8f5f2",
+".m c #f8f8f8",
+".7 c #f9f9f9",
+"ad c #fafafa",
+"#. c #fbf0eb",
+".J c #fbfbfb",
+".T c #fcfcfc",
+".B c #fdfdfd",
+".j c #fefefe",
+".i c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.a.b.c.d.d.e.f.g.hQtQtQtQtQtQtQt",
+"QtQtQtQt.#.i.i.i.i.i.i.i.i.i.h.hQtQtQtQtQtQt",
+"QtQtQtQt.a.j.j.j.j.j.j.i.i.i.h.k.hQtQtQtQtQt",
+"QtQtQtQt.l.m.n.o.p.q.r.s.j.i.h.t.u.hQtQtQtQt",
+"QtQtQtQt.e.v.w.x.y.z.A.n.B.B.h.C.D.E.hQtQtQt",
+"QtQtQt.h.h.h.h.h.F.G.H.I.n.J.h.h.h.h.h.hQtQt",
+"QtQt.h.K.L.M.N.O.h.P.Q.R.S.n.T.j.U.V.W.hQtQt",
+"Qt.h.X.Y.Z.0.1.2.3.h.4.5.6.q.r.s.7.v.8.hQtQt",
+"Qt.h.9#..###.F.F.F#a.h#b#c#d.m.j.7.v#c.hQtQt",
+"Qt.h#e#f.a#g#h#i#j#k.h#l#m.r#n#o.7.v#c.hQtQt",
+"Qt.h#p#q.a#r.F.F.F#s.h#t#u.x.n.j.7.v#c.hQtQt",
+"Qt.h#v#w.##x#y#z#A#B.h#C#m#m.q#o.7.v#c.hQtQt",
+"QtQt.h#D.Z#E.F.F#F.h#G#H#I#J.A.7.m.v#c.hQtQt",
+"QtQtQt.h#K#L#M#N.h#O#P#Q#R#m.q#S#T#d#c.hQtQt",
+"QtQtQtQt.h.h.h.h.Z#U#V#W#X#Y#Z#0.S#1#2.hQtQt",
+"QtQtQtQt#3.t.v.x#4#5#6#7#8#9a.a#aaabac.hQtQt",
+"QtQtQtQt.6ad.kae.yafagahaiajakalamana..oQtQt",
+"QtQtQtQt.haeaoapaqaqarasatauavawaxayaz.oQtQt",
+"QtQtQtQtQt.h.h.h.h.haA.oaBaCaiaD.HaEaFQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtaGaHaIQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"
+]
+
+class MainWindow(QMainWindow):
+ def __init__(self,parent = None,name = None,fl = 0):
+ QMainWindow.__init__(self,parent,name,fl)
+ self.statusBar()
+
+ self.image0 = QPixmap(image0_data)
+ self.image1 = QPixmap(image1_data)
+ self.image2 = QPixmap(image2_data)
+ self.image3 = QPixmap(image3_data)
+ self.image4 = QPixmap(image4_data)
+ self.image5 = QPixmap(image5_data)
+ self.image6 = QPixmap(image6_data)
+
+ if not name:
+ self.setName("MainWindow")
+
+
+ self.setCentralWidget(QWidget(self,"qt_central_widget"))
+ MainWindowLayout = QHBoxLayout(self.centralWidget(),0,6,"MainWindowLayout")
+
+ self.Frame3 = QFrame(self.centralWidget(),"Frame3")
+ self.Frame3.setFrameShape(QFrame.StyledPanel)
+ self.Frame3.setFrameShadow(QFrame.Sunken)
+ Frame3Layout = QVBoxLayout(self.Frame3,1,0,"Frame3Layout")
+
+ self.WebBrowser = QAxWidget(self.Frame3,"WebBrowser")
+ self.WebBrowser.setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}")
+ self.WebBrowser.setFocusPolicy(QAxWidget.StrongFocus)
+ Frame3Layout.addWidget(self.WebBrowser)
+ MainWindowLayout.addWidget(self.Frame3)
+
+ self.actionGo = QAction(self,"actionGo")
+ self.actionGo.setIconSet(QIconSet(self.image0))
+ self.actionBack = QAction(self,"actionBack")
+ self.actionBack.setIconSet(QIconSet(self.image1))
+ self.actionForward = QAction(self,"actionForward")
+ self.actionForward.setIconSet(QIconSet(self.image2))
+ self.actionStop = QAction(self,"actionStop")
+ self.actionStop.setIconSet(QIconSet(self.image3))
+ self.actionRefresh = QAction(self,"actionRefresh")
+ self.actionRefresh.setIconSet(QIconSet(self.image4))
+ self.actionHome = QAction(self,"actionHome")
+ self.actionHome.setIconSet(QIconSet(self.image5))
+ self.actionFileClose = QAction(self,"actionFileClose")
+ self.FileNewGroup = QActionGroup(self,"FileNewGroup")
+ self.FileNewGroup.setUsesDropDown(1)
+ self.actionNewWindow = QAction(self.FileNewGroup,"actionNewWindow")
+ self.actionSearch = QAction(self,"actionSearch")
+ self.actionSearch.setIconSet(QIconSet(self.image6))
+ self.actionAbout = QAction(self,"actionAbout")
+ self.actionAboutQt = QAction(self,"actionAboutQt")
+
+
+ self.Toolbar = QToolBar(QString(""),self,Qt.DockTop)
+
+ self.actionBack.addTo(self.Toolbar)
+ self.actionForward.addTo(self.Toolbar)
+ self.actionStop.addTo(self.Toolbar)
+ self.actionRefresh.addTo(self.Toolbar)
+ self.actionHome.addTo(self.Toolbar)
+ self.Toolbar.addSeparator()
+ self.actionSearch.addTo(self.Toolbar)
+ self.Toolbar_2 = QToolBar(QString(""),self,Qt.DockTop)
+
+ self.Toolbar_2.setHorizontallyStretchable(1)
+
+ self.lblAddress = QLabel(self.Toolbar_2,"lblAddress")
+
+ self.addressEdit = QLineEdit(self.Toolbar_2,"addressEdit")
+ self.actionGo.addTo(self.Toolbar_2)
+
+
+ self.menubar = QMenuBar(self,"menubar")
+
+
+ self.PopupMenu = QPopupMenu(self)
+ self.FileNewGroup_2 = QPopupMenu(self)
+ self.PopupMenu.setAccel(QString.null,self.PopupMenu.insertItem(self.FileNewGroup.iconSet(),self.__tr("New"),self.FileNewGroup_2))
+ self.actionNewWindow.addTo(self.FileNewGroup_2)
+ self.PopupMenu.insertSeparator()
+ self.actionFileClose.addTo(self.PopupMenu)
+ self.menubar.insertItem(QString(""),self.PopupMenu,1)
+
+ self.unnamed = QPopupMenu(self)
+ self.actionAbout.addTo(self.unnamed)
+ self.actionAboutQt.addTo(self.unnamed)
+ self.menubar.insertItem(QString(""),self.unnamed,2)
+
+
+ self.languageChange()
+
+ self.resize(QSize(812,605).expandedTo(self.minimumSizeHint()))
+ self.clearWState(Qt.WState_Polished)
+
+ self.connect(self.actionHome,SIGNAL("activated()"),self.WebBrowser,SLOT("GoHome()"))
+ self.connect(self.actionRefresh,SIGNAL("activated()"),self.WebBrowser,SLOT("Refresh()"))
+ self.connect(self.actionStop,SIGNAL("activated()"),self.WebBrowser,SLOT("Stop()"))
+ self.connect(self.actionForward,SIGNAL("activated()"),self.WebBrowser,SLOT("GoForward()"))
+ self.connect(self.actionBack,SIGNAL("activated()"),self.WebBrowser,SLOT("GoBack()"))
+ self.connect(self.actionGo,SIGNAL("activated()"),self.go)
+ self.connect(self.actionFileClose,SIGNAL("activated()"),self.close)
+ self.connect(self.actionSearch,SIGNAL("activated()"),self.WebBrowser,SLOT("GoSearch()"))
+ self.connect(self.addressEdit,SIGNAL("returnPressed()"),self.go)
+ self.connect(self.WebBrowser,SIGNAL("NavigateComplete(const QString&)"),self.addressEdit.setText)
+ self.connect(self.WebBrowser,SIGNAL("TitleChange(const QString&)"),self.setTitle)
+ self.connect(self.WebBrowser,SIGNAL("NavigateComplete(const QString&)"),self.navigateComplete)
+ self.connect(self.WebBrowser,SIGNAL("CommandStateChange(int,bool)"),self.setCommandState)
+ self.connect(self.WebBrowser,SIGNAL("BeforeNavigate(const QString&,int,const QString&,const QVariant&,const QString&,bool&)"),self.navigateBegin)
+ self.connect(self.actionStop,SIGNAL("activated()"),self.navigateComplete)
+ self.connect(self.actionNewWindow,SIGNAL("activated()"),self.newWindow)
+ self.connect(self.actionAbout,SIGNAL("activated()"),self.aboutSlot)
+ self.connect(self.actionAboutQt,SIGNAL("activated()"),self.aboutQtSlot)
+
+ self.init()
+
+
+ def languageChange(self):
+ self.setCaption(self.__tr("Qt WebBrowser"))
+ self.WebBrowser.setControl(self.__tr("{8856F961-340A-11D0-A96B-00C04FD705A2}"))
+ self.actionGo.setText(self.__tr("Go"))
+ self.actionGo.setMenuText(self.__tr("Go"))
+ self.actionBack.setText(self.__tr("Back"))
+ self.actionBack.setAccel(self.__tr("Backspace"))
+ self.actionBack.setMenuText(self.__tr("Back"))
+ self.actionForward.setText(self.__tr("Forward"))
+ self.actionForward.setMenuText(self.__tr("Forward"))
+ self.actionStop.setText(self.__tr("Stop"))
+ self.actionStop.setMenuText(self.__tr("Stop"))
+ self.actionRefresh.setText(self.__tr("Refresh"))
+ self.actionRefresh.setMenuText(self.__tr("Refresh"))
+ self.actionHome.setText(self.__tr("Home"))
+ self.actionHome.setMenuText(self.__tr("Home"))
+ self.actionFileClose.setText(self.__tr("Close"))
+ self.actionFileClose.setMenuText(self.__tr("C&lose"))
+ self.FileNewGroup.setText(self.__tr("New"))
+ self.actionNewWindow.setText(self.__tr("Window"))
+ self.actionNewWindow.setAccel(self.__tr("Ctrl+N"))
+ self.actionNewWindow.setMenuText(self.__tr("Window"))
+ self.FileNewGroup.setMenuText(self.__tr("New"))
+ self.actionSearch.setText(self.__tr("Search"))
+ self.actionSearch.setMenuText(self.__tr("Search"))
+ self.actionAbout.setText(self.__tr("About"))
+ self.actionAbout.setMenuText(self.__tr("About"))
+ self.actionAboutQt.setText(self.__tr("About Qt"))
+ self.actionAboutQt.setMenuText(self.__tr("About Qt"))
+ self.Toolbar.setLabel(self.__tr("Toolbar"))
+ self.Toolbar_2.setLabel(self.__tr("Toolbar_2"))
+ self.lblAddress.setText(self.__tr("Address"))
+ self.PopupMenu.changeItem(self.PopupMenu.idAt(0),self.__tr("New"))
+ if self.menubar.findItem(1):
+ self.menubar.findItem(1).setText(self.__tr("&File"))
+ if self.menubar.findItem(2):
+ self.menubar.findItem(2).setText(self.__tr("&Help"))
+
+
+ def go(self):
+ print "MainWindow.go(): Not implemented yet"
+
+ def newWindow(self):
+ print "MainWindow.newWindow(): Not implemented yet"
+
+ def setProgress(self,a0,a1):
+ print "MainWindow.setProgress(int,int): Not implemented yet"
+
+ def init(self):
+ pass
+
+ def setTitle(self,a0):
+ print "MainWindow.setTitle(const QString&): Not implemented yet"
+
+ def setCommandState(self,a0,a1):
+ print "MainWindow.setCommandState(int,bool): Not implemented yet"
+
+ def navigateComplete(self):
+ print "MainWindow.navigateComplete(): Not implemented yet"
+
+ def navigateBegin(self):
+ print "MainWindow.navigateBegin(): Not implemented yet"
+
+ def aboutSlot(self):
+ print "MainWindow.aboutSlot(): Not implemented yet"
+
+ def aboutQtSlot(self):
+ print "MainWindow.aboutQtSlot(): Not implemented yet"
+
+ def __tr(self,s,c = None):
+ return qApp.translate("MainWindow",s,c)
diff --git a/python/pyqt/examples3/webbrowser/mainwindow.ui b/python/pyqt/examples3/webbrowser/mainwindow.ui
new file mode 100644
index 00000000..1689e8ad
--- /dev/null
+++ b/python/pyqt/examples3/webbrowser/mainwindow.ui
@@ -0,0 +1,410 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>MainWindow</class>
+<widget class="QMainWindow">
+ <property name="name">
+ <cstring>MainWindow</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>812</width>
+ <height>605</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Qt WebBrowser</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QFrame">
+ <property name="name">
+ <cstring>Frame3</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>1</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <widget class="QAxWidget">
+ <property name="name">
+ <cstring>WebBrowser</cstring>
+ </property>
+ <property name="focusPolicy">
+ <enum>StrongFocus</enum>
+ </property>
+ <property name="control">
+ <string>{8856F961-340A-11D0-A96B-00C04FD705A2}</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<menubar>
+ <property name="name">
+ <cstring>menubar</cstring>
+ </property>
+ <item text="&amp;File" name="PopupMenu">
+ <action name="FileNewGroup"/>
+ <item text="New" name="FileNewGroup_2" accel="">
+ <action name="actionNewWindow"/>
+ </item>
+ <separator/>
+ <action name="actionFileClose"/>
+ </item>
+ <item text="&amp;Help" name="unnamed">
+ <action name="actionAbout"/>
+ <action name="actionAboutQt"/>
+ </item>
+</menubar>
+<toolbars>
+ <toolbar dock="2">
+ <property name="name">
+ <cstring>Toolbar</cstring>
+ </property>
+ <property name="label">
+ <string>Toolbar</string>
+ </property>
+ <action name="actionBack"/>
+ <action name="actionForward"/>
+ <action name="actionStop"/>
+ <action name="actionRefresh"/>
+ <action name="actionHome"/>
+ <separator/>
+ <action name="actionSearch"/>
+ </toolbar>
+ <toolbar dock="2">
+ <property name="name">
+ <cstring>Toolbar_2</cstring>
+ </property>
+ <property name="horizontallyStretchable">
+ <bool>true</bool>
+ </property>
+ <property name="label">
+ <string>Toolbar_2</string>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>lblAddress</cstring>
+ </property>
+ <property name="text">
+ <string>Address</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>addressEdit</cstring>
+ </property>
+ </widget>
+ <action name="actionGo"/>
+ </toolbar>
+</toolbars>
+<customwidgets>
+</customwidgets>
+<actions>
+ <action>
+ <property name="name">
+ <cstring>actionGo</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image0</iconset>
+ </property>
+ <property name="text">
+ <string>Go</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionBack</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image1</iconset>
+ </property>
+ <property name="text">
+ <string>Back</string>
+ </property>
+ <property name="accel">
+ <string>Backspace</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionForward</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image2</iconset>
+ </property>
+ <property name="text">
+ <string>Forward</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionStop</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image3</iconset>
+ </property>
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionRefresh</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image4</iconset>
+ </property>
+ <property name="text">
+ <string>Refresh</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionHome</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image5</iconset>
+ </property>
+ <property name="text">
+ <string>Home</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionFileClose</cstring>
+ </property>
+ <property name="text">
+ <string>Close</string>
+ </property>
+ <property name="menuText">
+ <string>C&amp;lose</string>
+ </property>
+ </action>
+ <actiongroup>
+ <property name="name">
+ <cstring>FileNewGroup</cstring>
+ </property>
+ <property name="text">
+ <string>New</string>
+ </property>
+ <property name="usesDropDown">
+ <bool>true</bool>
+ </property>
+ <action>
+ <property name="name">
+ <cstring>actionNewWindow</cstring>
+ </property>
+ <property name="text">
+ <string>Window</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+N</string>
+ </property>
+ </action>
+ </actiongroup>
+ <action>
+ <property name="name">
+ <cstring>actionSearch</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image6</iconset>
+ </property>
+ <property name="text">
+ <string>Search</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionAbout</cstring>
+ </property>
+ <property name="text">
+ <string>About</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>actionAboutQt</cstring>
+ </property>
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ </action>
+</actions>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="1241">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade65232365200210543251d2e253d856405bffcbc54103b11c8563600020b03105719c4b530b08072f50880513560a09c080338d5209420294a4451a38c90426621ab5146d10de524a2aa417505445122861a547722bb0c971a3d2aa921c2ae446c6a9431fc85a9064551220e354009653dec00294e712a1ac4e97078a9a9b5e6020013b3f563</data>
+ </image>
+ <image name="image1">
+ <data format="XPM.GZ" length="4494">789ce596497332470c86effe15947573a5f4c1cc30cc542a07ef60bc808dd7540e3d9b6df006186c93ca7f8fba2535ce57be98dc9292313c487a2575f7ccf063a376d53baa6dfc589bbe9ad7fbbc96df99496da3983d3e7efcfec76f7faead87418dfe1a51500bd67f595befbfd6f2daf1f35369014e08a05e6fd4ab96e31e73d0282bc7a7cae23ff3ccfe8170ca6cee9843f51f3b4ec8cff9efccdebf2d2cf9b06bb9417a25c74f98bdff99390a84fb8e49af70f39891b2e40bfbf8b6b0917e87968346a8f5a6cc51c07ab02f2cf1983237552f709c86691e3bbd5be5821998a32067bd1765d13f67563d530a4b3df8b01c523d8ec74059faed086bfc82390e851b8ed3c86485e34365a9bfc5ece3df8433e10bcb5140f5dd3cf0e099f32f99e350cecb5858f2b1c1dc52fda663d334a277c0ecfd5d61c9373973120967969b548fd71b079e797d8e985b21eb63aecceb85e7c299f4ffaa2ce7739359ebc195631387c6ad1f5e302791ccbba72cf173e15cfa2d2cc7619cf1fa63c9dccaa4ff4bcfdc7fa82cfdf7999348f6bf299c4bfd4c59ea0f99535dafca71d60a65ffebca52ff8c3989e47cce98351fb785759e7bcbad65bf0be624ca9a8e87caac0fb1702ef191b2cc9731a7b9ec4f87d934659e27e142f8c671e6eb9d0ae7b2be07cc6924ccf999698a7e4f58f572e64cebb9f393444994e68e4365d9ff7be15caef70766ad678cb0f8f18359ebe109b3af27f199fadd794cf254eb196599774758e77d5496f5dd64a67959af122ef87c639b59eb81d34ba97fe3f4215196f3922acbbc28acf527cc792c7a857029ecf63bcded05efb8a52cf3cc9833ed2f66563dac0b8b1ebe3317ea77f73352173db8f6ccf54a66df0f30fb7c777d9bc214d2cf88d9cf73cfece3ddf3296b66da7fe199d7a32b5cc8feef31fbfe8f99bdde96b0faddf3272bac390665b99e90d9e7ef33972de9d73d7ff3d873255c49fc1b73257ee4f8d2eb5d336b3e8e8535ff86d9e7bbf35f2cf51366ef77cfeb6299df62563f3c0a8b1fdcf3d3569778773f756e66f7fcac967e175f797ffff5dfd9ff4103010d6698a35955030b2cb1c25bbcc3fbd5344861882352b8c5077c5c45836678c267ca7fc1314ebeaf81537cc599eb608e6ff88e1f2b682c705314b6486182dbb8f31d0ddca529f644619ff2db641d3cf82a8bfa9d62d7da670d3cc4233c760a63eaa08d2734478fac8f87ffc833788a6738c073bc20ebe3255eb1069d863e5e3b851bacfb7c6b0d0c30c488f24a3a2d4ddaf1986a3d600b13179be280ef597809e876e206000c69d8ec0e590f32c8a18012b7a0825b9799e018eee0de4e0b4318c103ff2ea2985b78c47d28a487ce276b634cca40356d1655801c3bf044af2136e0195ef8b711be4045ab50ff42e16bdbb6463d8e610253fe3d4855ec3ed80abd9f62397ef9c9e6cee835249bc31bbc731ff0010beacbcdbfaca29f2836a3e839fd1f3acb5cb6fd6e13b6605b34766097d6664cdf0d7faad9813dd827df08daf4de812ddaa7061c4017baf43ea6daef70c8fb0247704c932dc897b94e67da09553a811ef4a94a0f4ee10c069435216b630ae7a43b800b7fc6164ea543ea73ea75663b22a50e5cc215ec50956beaf606ead08080147b64c76403d20ebdc6142268528d3655ee3a1db6f88b535ee015b42081d4205ee1f4f335878501ea7644331dc81acecdb7ef63b86b32eae59956cff63237f92af7319c9a82669c989256bd0b6fa6fabe86bbfe0ecdadb9a399ce61b49a86355adfbedd45736756bc27b30afd161a9a9179585de33bf69fd2f8ebd7b5bf014644b906</data>
+ </image>
+ <image name="image2">
+ <data format="XPM.GZ" length="4494">789ce5965b4f23471085dff915d6d6db2aaac5e3b92aca037703cbc55c8c21ca43cf8c8d0dd85c6c307694ff9eeaaed3bd68771f968d14298a0a109fabebd4e99a9ef17cfad8e81d1f343e7e5a99cecc6c5435aaa1796a7cac9fc7e3c5ef7ffcf6e7ca8756d4909f661c35a20fbfac7ce8cc1a55e3f07ed2b7409702b4badaccfb996563020f5c7ecbf340b9a31c3591dff7ac7943e002cc8e73cf74acdcc27a8a2d37a5be4e1d9f04567f9fc105f25dcfea9726caad62a07c1158f58f94e3087e868ea57fa5fa0be590bfb11c3525affd4e03ebfa25b8507fbcaa1c47ca66e459fdf10c6c30af4dcfda8f5f9513dfffce71e1f5a956967adddfaeb25f4f7b60e8d199e596f42f6bc787ca213f554e5be06dc7a28ffdee282791cedb5c83d19fd795a55ecf4b3fb0ee07ebd312fae796e3283665e238524e2265de031bcc774d396d61be25b8c4fe1f02abfeab67f49f2867decfbd6393b6a03f03438f3bca19fa51cb33fc6f80fd7eae2c27e257e7cb4de5b4045f78d679f24960ddcfb172e6f73357ce63e88fc115ce43e558fcabbeb905fb7e47cae24ff5daca41af007bbd81e5b425f53aff6160d52f95f318f37d01a39ee7ca05f4790a469e0e1c97590bfa1b81f53c3e2bfbf5ecf697b532efe754398f31af437085eb65948b18e723f70cbf9e2bcc633db0f65b533609fcbafb372bf318fdcfc015e65b281731ee0ff6acf70767ca5e8f7be01abcab5cfa7e89e53cce2ba3fd1681b5df8172013f44e00acfbf4a39e8ef287b7dbe02234feefce795d727a36c12ccf75239d4b7c1bede9def42fcc0ef7960d5cbc05ebf543635aed752b94aa1ff02ee83ddf3b6a87c3d3f2b9b047a4fcaa17e0cf6f5eef928ab13f5476960d5eb7ac6f5dd07d7e04839e83d29d7be9ffbfe31b50dc723cfa87f08acf947e51a7ad457ee6760773ecaa4f47e36036bfd96673c3fb6c13578a01cf41f9505d5af3b2f655dc28fa93da33e550ef523e5e06f08861eb9e7b94cdfe7ddf753d50feb6f94437e00f67edcf3aa4e831ed8afe73bb05fefe655f7c37edcfd62bb81ddfb82935776cfeb41c87766ff2cfe7f1a4c6cb8e48ae91f68d4dce7015ff390473fad71c3b77cc7639ef03d3ffcb48f013ff293a84c79c6d54f693c8bc28b28589539bff2e2ed647e586389184bacf13a6ff0e6d71a32f92dde96bfdf9dbccc6387dba2d086caae4c668ff7bf68f0673ee0433ee263eef0099ff2199f8b62d0e32e5f704fea2fe5b70d3f57729556b91b349a1c718b634e64faa9fc7fc919e772220a91213254ca273b884bf72b4a54f1846ad925e93b1af56940d734a4110fe4efb5c40dddda907311734c7752d10b3a1ae289c634a17b7dafe331e995b3b124fbdfd25d85471763596fab7aa2a4f53d444653ded3773bb96e8faeae1de2ea8dff9da0b0ebfcd858e3357aa667bb1f68b4a5e7d256853559e8f56d64aefe85e6f44a0b5aea3bac5c2bebf74b8775fb6bfbb858771e7a6f1df09c36f89a36698bb6f53d5c4ef08ee4e6a2dd269b9d488729ed4a171b7bd40ece3228cce5d305edd3673ed7773139bd133a14d5233a96cff7a9237142a77446e7125dba900e70681564f5a6acdc1285ae9e0feaf150d675e8d2d59dd315ad52931fec2973d1a5489c6698e29c5a508829797bd629a52665bcf9fdd32ed95c1d50217b5c18b67390f34befb8e78873a9b6b39ad285216328a2de3bef5b32a59db5ccec42a6b565aaf7dffba6e663d3972b211ea86b065f3cbccbc7b53890399a21a55f677f5863e4f670c337df667f58e3d6dc99dbef3dd5ff6bdf73ff82c65fbfaefc0d4fb5b868</data>
+ </image>
+ <image name="image3">
+ <data format="XPM.GZ" length="802">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade65232325500210543251d2e25658564056503300071f540dc3430007371012a492a830156496538c094848922c9c2259134c099304914e3604c8424aa5e6449b0044216ca824ba2da8b4512218b4d122e8b55520fee5974072164511da487ea490c7f22cba249e20d3efc018f3fcae0d2702eb5d2106992b5d65c00b9a48974</data>
+ </image>
+ <image name="image4">
+ <data format="XPM.GZ" length="1241">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade65232365200210543251d2e253d856405bffcbc54105b19c8563600020b03103711c4b530b08072f50880513524ab518681443435ca984ae08ae06a94114a10ac443435ca3043904d4c4453a38ca604ae11590d9a0ab80bd0d46078914c35c4d885a608871a547f61f81d5d117a1862018930e5b8d5c0950c741a1b1e6a6aadb90086a9d853</data>
+ </image>
+ <image name="image5">
+ <data format="XPM.GZ" length="5598">789ca5985973db480ec7dff3295cc15b6a0b2351a428d6d63ef83e255bbe647b6a1fd02465dd872d9f53f3dd076c005dc926ce6a32eed8553f37fadf7fa0c1a69cdfbe6cdc9cb537befcf6e97145ab61be910fe861e34bf1349dbefdfedffffcf1e97323dae07f51bdbe117dfed7a7cfddd546bed199cfca0ae888016afeab62e8796ef110ee545caf05be16ae5bfc6ee096e7b6e756983f51b6f53b81257ecfb8eee7e9b162f66af1c78125fe48987f23f3fb81657e691cd5bddecc7316d555efd058f7eb2867aa771058f4de8c55cffb6dd4a34cf5b68d357e681c6515634db81a7e3ef59c35cccf5560bf9ef6953389c77660af074f15c751e05c38a6d81f2ef9f3a848f4e9d658f2c36b635dbfa54cc2383556bd33e12492fc70df38f1f3f8ae4cc2745a711285fda7caa4f95e06967a2d8c63f27a8fc2a60fa4acfa980a371b898f0767dc6cf8fdbc9f84c27e4de124d2fabe186b3dee8c75ff1365dbef2db0ccef0987fd2f2a6632fd576552fd2b63d57b08ecd7d39d70b321fd0560acfb6d1a4b7e3050764de7d79f08a70de937ea7b7689e68f4de1e0776e2c7ab8abecb47eb170aa7ee822b0e89f1b4b7fd24dc529abe9794f02cbf99e2b3badc7a5b1ee97089b3e0e8d253f3c364e253e5576120ff7c63a9f7966d2e771d358e75bca4ef3bb0e2cf9758db5fe47c6b21eeb81bd3f07c2ad58ebd130d67e6a194b3cf97e62b2fa24c67a1f5d2aab3f8781a53e17c6eaa7082cfa3de156acf9d5034b7e3563f1eb96c6eaf7c0b815fbf8d2739e3aedefb1b1de9723618b77a49cebf946c6e20f5f8d251e753e8b5bb9e74c980a4afc7a7fbf66b1ed8fb7c67a9ec7c2ad5cfd74038bdfa6b1f6cbd458fd2e84b358efbb0363f5b71358fccd8c33596f9c4bfddcc458fac78d8cf5797b3296f5f82c4c49e6f5c9bf9fb23ce41307967e3935d6f36c0b67b1ce3f188b5f3757367f5363b98fdc38b0cc0f8cf5f90bf3ea97028bfe50981289777d63edcf81b1c4439897f3c52d615738cfe0df371c1deb7db265acf98d8d253f7a50d67a60c758cfcbf4cc7f2fb0f8bf1736bfae30d6f35f1a4b3ce6c6e2df95ca85f6f7dc58f3db0e5c783e14e6ebc533e87e963fbe0873f9fd3cc97c91693fd028b0d4e3c558f3eb0b9b5f972bab3fe78c353f3056bfabc0e2371636bfe4cf9b29d1e76b69acfdb863accfd33cb0dc2fa7c6e2179e03cb79ae940b7dffbf1b6bfd1363f53b12367f581a6b3d1bca56df6e60a9bfc6e765def4ecef6bc7eafaf9e8d558fbb7a15ce87d7263acf7ffbdb1e40f33e1e0cf29ebfea8eb6d7ff29f17f8f4137dfe51d8fa0117ca65ee3fbfe3bd705116b2de9f775e3af50313e1a229f1f0682cf1b052e6e1d9dfbf1cddd4fd2363cdcfef5fb05b7d1f0c944bed4f67ac9f5f27c265bf4c3d9f07eefb787f1f96695eaa1e0a174d7d7f81b1ee4f81a5fe75e552d9bf1fca7e617e9e8d556f33b0c4fbcf5ffdb44c956bc6a2d75dfd6c2020fd3ce2ff69a0c31c0b2cff91461fef71804374bfaa81231ce3044b9ce2ecd734380fc2392e70890ff888bfa6f184cff8c24e5ef10ddf71f3a37c3ed6c015afdec26dfeb983bbb887fb78f0f734380fe031c7437f3247788c27d8fe713e1f6a1076f014cfb08be7ac7481977885d75c951fe4f3630dcea3c3eb7b9cc70d6b9ce12d9fee26de610debeb69b0fb578cb89a0d8c399711e794609373d9c39455f2b53466d8c20c17809c45cc7a3c00f011081cffccff379fef35388f1d0428a0c401f459e58c3d45700f0003cee71d8678fc730d7430e2557d3c8331f7568c37308129cc7006733e9d262c6008cb6ff3f94ea3c72bc678ca3f1fb80a637884154c71c974c55d72c91a4feca4fdf553f8ad46554d8e9ee30a9eb1efab31611f2ff0ca346427bb9c11e114debe7e7ebed328318702e7f0ce9dbee47a1c724655b745b0c94ea6b0c55519f059b98f73d19a6cc30eecc21eecfb7100877004c770026de8e070bdfe805338832e9cc3055cc2955f7b0d3de8f0cfebb5356ee016eea0c6a30e11342086049a907aadcd35355a90111250f5e5288706bfdb4bea572a78b49e06ddd3a0d2807a2502110d6944639ad09466ebf9e8ae684e0bf5b1a4075ab28f11ffa1df678dc7f57cb0c68a9ee899355e7c2ddbf40a31bdb1c63bcdfe86c6803669cb9f4555c76b38a76dcee57d5d1f5c8f1d5af0b9745581bb029a5c8f3eedd21eed73b70ebe56fa91061dd061f05139e9d1116b1cfb9aee55c4fcf6330d5cd289d778a6b65fdd831dea702e256b9cf2b974a84367d4fd580347744e17744957acc13e7cfc095d538f356ed8cd2ddd518dea147da4c1956890ffcf295ed5e4c83b4a59f182b9455935e3b801ab791c7fa4e188d7a4bcbee66353feaef9df8852ca2f3e9ee3ef73840f359cabfec22979f4ddbd1bf018ba118f318f899bf298b9b95bb8e537cffe9ffffef4171c39a0bf</data>
+ </image>
+ <image name="image6">
+ <data format="XPM.GZ" length="3742">789c8d96c9521c490c86ef3c458775734cc8ddd5b5c6c41c303b180cc60b66620eaacc2c9aa5599b7562de7da45fc5180c8e98fa39f091522e4a49c9bbb783bdedcdc1db77735733991d864198c8e5e06dbc9e4eeffffceb8fbfe7de64d9407f466531c8defc36f76667360883adb3d364c013051ae2039f8147266359068f4dc6740a2e4db05f05d726f0253898c017c6a3cc04ffafce79aa3af0143c36c17e055caa0aacbf06aeb2203e5f09ae4d185f75ce472de6e7737063c2fcb57356b702fed673e32c473d4bcf3760198f02e69325706b022f3a676df0f567e05035d1ed273dc79883e7c1d1045e70ae2456d84fd9738a589f0b703261bc72ae25e17ee4b0e7d8f3b5733374e603e32c37c11ff36970db12f193f7e07c1c6bec87c6e0c604ff0e1c4db03f36cec7e3a6f4fd2e38e779eee7bd05e7e350fa7e4fc0455ee6b84fb9eab913bfdf1c5ce5758efba54fffb1e75302d726f8af3817a5f8f922584cf06fc0211f951ebfd0b30afe07ce4510dfdf1e38e665e9f9f1e01c32cf1fda06a73c2f7c7eac5f8c8b61eef582f315b909dc82f1c17e07dc1459e5f1c77d953abb787e0ab832611cf957366dd9c707f556762a3fcf8673ddd6d8afdc1957b909fe98af2a65d4c787c08d09e3c8bfaad504f378de83a309e35fc049d9d747bda19c7dbe8f602d88d6fd11af3a33c1ffde398e02ec69178c0b04bb7fa12be03e08e7ab4b895e2f74ec1ca2e73f6d811b2d37df1feaa9969082f71ff4a73a98c01f9cdb3678fde27eea58f7f9cdc8bfba33c11efda2199ac01bcead048fd72678a4e9e3f6a86f6d172acc87fc69f290f9386f3d72f478a1bf348509fea8b7a66c9b80fec1a8b7a66a53f47cc2fe9b5ae77346fe35ad09e761703081d12f9b68c2fc57ce6d0c1e6fe463934ce0efc63234c11ffd5b4a13c66f9cb53d79fded832bcd27f47f5aeb59055e744eb1df3fe2251aeee4e7453f9264c27aa847b44f7f4f909fda3efb7ae30c5c84b65f1fef435b9a608ff7a4ad4c981ffb6b6b13d8fda5edfb37eff4dcb65e2f787f5a7cb0f7fd0413ecf13eb49d09f6783ff07cf97d8ec0a3f8d8df516f483faf07c45b1f27e9f30ff989e9fdbe11ff1034fd3c9eebe068c238fa9f6677f2fb27ac1f475dd3f97da25fc6c204be755673ef3f8db3360c1f1f824b13c651df2877c44fd0df511efe5ea39f44318151cf9a4e2ab0af870d63fee4dc55fdfe109f880ff3fb788a8ff98df733762630fa471aa6febda2839e5b3f0fe1bef4f18bc9fb01fa7dca4ce0bb9e5b671ef69c3cff18f99cc626d853cf551f3fe453ca531bbdde979cbb2c793e207f536102a39fa5ca0446bf4279f97b89feaabb5181511f38bedf2ffa47373461bdcfe0dc8471d46387860fc6fbaad155c11ef7a5d953747ede69cf2a30fe3fd06c5121fe88572726f8a37f68720ffbfdadf7ac02fb7e82098c7e85ebf2fde37dea92098cf7acc367bc33fbff7a6ecfc4c22d078eaac41d1ff0e4d7f66a7df84293e71ecfec858f9ee8d1fef8a9c733fb139ef2299ff1395ff0255fc167c233befee1f1cc3ef10ddff21ddff303cfabe77bd584177891971e3d7ed8db4e7b2df30aaff29a7aac3ff9ebe4a9bdf2067fe04ddee28ffafb36eff027de558fcfbaab2ffc95bf3db5578b3dfecefb3ce411673c56ceb9e0b23f47a5fbac7fb26f889988742f2a129e504b81a246e0c8ec293cb7a7441d0b1dd0840ee9883486744253bea4533a7bd5fe9c2ed4feb29fff4aff32a36b8dd5e92fe6bfa15bddcf1dddd303cd93c6911668aa2b5cbc363f3c16799f9630fbb2d20aadd21aadeb3d547a8617f6f0d8a00fb4495bfadb47daa61dfa84f977e933c597f64f6e6c9fbed057fa467bf49df669c8bb34a2eca53d8d35576ef88e722aa8a48a6a6a448320a20fd36bf3eb7f407c2c89efb5500f6422877224c77222533915e6b397fbd117f54ccee54275295732936bb9915bb9937b797869ff34e7649ecfe4bd2ce81a8bbc2a4bb2fc5a3dfe2c59915559fb75fdfe8f7affe7f7b97f011cdd9635</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>actionHome</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>GoHome()</slot>
+ </connection>
+ <connection>
+ <sender>actionRefresh</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>Refresh()</slot>
+ </connection>
+ <connection>
+ <sender>actionStop</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>Stop()</slot>
+ </connection>
+ <connection>
+ <sender>actionForward</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>GoForward()</slot>
+ </connection>
+ <connection>
+ <sender>actionBack</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>GoBack()</slot>
+ </connection>
+ <connection>
+ <sender>actionGo</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>go()</slot>
+ </connection>
+ <connection>
+ <sender>actionFileClose</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>close()</slot>
+ </connection>
+ <connection>
+ <sender>actionSearch</sender>
+ <signal>activated()</signal>
+ <receiver>WebBrowser</receiver>
+ <slot>GoSearch()</slot>
+ </connection>
+ <connection>
+ <sender>addressEdit</sender>
+ <signal>returnPressed()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>go()</slot>
+ </connection>
+ <connection>
+ <sender>WebBrowser</sender>
+ <signal>NavigateComplete(const QString&amp;)</signal>
+ <receiver>addressEdit</receiver>
+ <slot>setText(const QString&amp;)</slot>
+ </connection>
+ <connection>
+ <sender>WebBrowser</sender>
+ <signal>TitleChange(const QString&amp;)</signal>
+ <receiver>MainWindow</receiver>
+ <slot>setTitle(const QString&amp;)</slot>
+ </connection>
+ <connection>
+ <sender>WebBrowser</sender>
+ <signal>NavigateComplete(const QString&amp;)</signal>
+ <receiver>MainWindow</receiver>
+ <slot>navigateComplete()</slot>
+ </connection>
+ <connection>
+ <sender>WebBrowser</sender>
+ <signal>CommandStateChange(int,bool)</signal>
+ <receiver>MainWindow</receiver>
+ <slot>setCommandState(int,bool)</slot>
+ </connection>
+ <connection>
+ <sender>WebBrowser</sender>
+ <signal>BeforeNavigate(const QString&amp;,int,const QString&amp;,const QVariant&amp;,const QString&amp;,bool&amp;)</signal>
+ <receiver>MainWindow</receiver>
+ <slot>navigateBegin()</slot>
+ </connection>
+ <connection>
+ <sender>actionStop</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>navigateComplete()</slot>
+ </connection>
+ <connection>
+ <sender>actionNewWindow</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>newWindow()</slot>
+ </connection>
+ <connection>
+ <sender>actionAbout</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>aboutSlot()</slot>
+ </connection>
+ <connection>
+ <sender>actionAboutQt</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>aboutQtSlot()</slot>
+ </connection>
+</connections>
+<forwards>
+ <forward>class QProgressBar</forward>
+</forwards>
+<variables>
+ <variable>QProgressBar *pb;</variable>
+</variables>
+<slots>
+ <slot>go()</slot>
+ <slot>newWindow()</slot>
+ <slot>setProgress( int a, int b )</slot>
+ <slot>init()</slot>
+ <slot>setTitle( const QString &amp; title )</slot>
+ <slot>setCommandState( int cmd, bool on )</slot>
+ <slot>navigateComplete()</slot>
+ <slot>navigateBegin()</slot>
+ <slot>aboutSlot()</slot>
+ <slot>aboutQtSlot()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>qaxwidget.h</includehint>
+</includehints>
+</UI>
diff --git a/python/pyqt/examples3/webbrowser/webbrowser.py b/python/pyqt/examples3/webbrowser/webbrowser.py
new file mode 100644
index 00000000..bd1462e5
--- /dev/null
+++ b/python/pyqt/examples3/webbrowser/webbrowser.py
@@ -0,0 +1,91 @@
+# Copyright (C) 2001-2002 Trolltech AS. All rights reserved.
+# Copyright (C) 2004 Riverbank Computing Ltd. All rights reserved.
+#
+# This file is part of an example program for the ActiveQt integration.
+# This example program may be used, distributed and modified without
+# limitation.
+
+
+import sys
+import qt
+import qtaxcontainer
+
+import mainwindow
+
+
+class MainWindowImpl(mainwindow.MainWindow):
+ def init(self):
+ self.pb = qt.QProgressBar(self.statusBar())
+ self.pb.setPercentageVisible(False)
+ self.pb.hide()
+ self.statusBar().addWidget(self.pb, 0, True)
+
+ self.connect(self.WebBrowser, qt.SIGNAL("ProgressChange(int,int)"), self.setProgress)
+ self.connect(self.WebBrowser, qt.SIGNAL("StatusTextChange(const QString&)"), self.statusBar(), qt.SLOT("message(const QString&)"))
+
+ self.WebBrowser.dynamicCall("GoHome()");
+
+ self.subwindows = []
+
+ def go(self):
+ self.actionStop.setEnabled(True)
+ self.WebBrowser.dynamicCall("Navigate(const QString&)", qt.QVariant(self.addressEdit.text()))
+
+ def setTitle(self, title):
+ self.setCaption("Qt WebBrowser - " + title.latin1())
+
+ def setProgress(self, a, b):
+ if a <= 0 or b <= 0:
+ self.pb.hide()
+ return
+
+ self.pb.show()
+ self.pb.setTotalSteps(b)
+ self.pb.setProgress(a)
+
+ def setCommandState(self, cmd, on):
+ if cmd == 1:
+ self.actionForward.setEnabled(on)
+ elif cmd == 2:
+ self.actionBack.setEnabled(on)
+
+ def navigateBegin(self):
+ self.actionStop.setEnabled(True)
+
+ def navigateComplete(self):
+ self.actionStop.setEnabled(False)
+
+ def newWindow(self):
+ window = MainWindowImpl()
+ window.show()
+
+ if self.addressEdit.text().isEmpty():
+ return
+
+ window.addressEdit.setText(self.addressEdit.text())
+ window.actionStop.setEnabled(True)
+ window.go()
+
+ self.subwindows += window
+
+ def aboutSlot(self):
+ qt.QMessageBox.about(self, self.tr("About WebBrowser"), self.tr(
+"""This Example has been created using the ActiveQt integration into Qt Designer.
+It demonstrates the use of QAxWidget to embed the Internet Explorer ActiveX
+control into a Qt application."""))
+
+ def aboutQtSlot(self):
+ qt.QMessageBox.aboutQt(self, self.tr("About Qt"))
+
+
+def main(args):
+ a = qt.QApplication(args)
+ w = MainWindowImpl()
+ a.setMainWidget(w)
+ w.show()
+
+ return a.exec_loop()
+
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
diff --git a/python/pyqt/examples3/widgets.py b/python/pyqt/examples3/widgets.py
new file mode 100755
index 00000000..470f24ec
--- /dev/null
+++ b/python/pyqt/examples3/widgets.py
@@ -0,0 +1,500 @@
+#!/usr/bin/env python
+
+
+import sys, string
+from qt import *
+
+#
+## Constructs an analog clock widget that uses an internal QTimer.
+#
+def QMIN( x, y ):
+ if y > x:
+ return y
+ return x
+
+#
+## Constructs an analog clock widget that uses an internal QTimer.
+#
+
+class AnalogClock( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+ self.time = QTime.currentTime() # get current time
+ internalTimer = QTimer( self ) # create internal timer
+ self.connect( internalTimer, SIGNAL("timeout()"), self.timeout )
+ internalTimer.start( 5000 ) # emit signal every 5 seconds
+
+#
+## The QTimer::timeout() signal is received by this slot.
+#
+
+ def timeout( self ):
+ new_time = QTime.currentTime() # get the current time
+ if new_time.minute() != self.time.minute(): # minute has changed
+ self.update()
+
+#
+## The clock is painted using a 1000x1000 square coordinate system.
+#
+ def paintEvent( self, qe ): # paint clock
+ if not self.isVisible(): # is is invisible
+ return
+ self.time = QTime.currentTime() # save current time
+
+ pts = QPointArray()
+ paint = QPainter( self )
+ paint.setBrush( self.foregroundColor() ) # fill with foreground color
+
+ cp = QPoint( self.rect().center() ) # widget center point
+ d = QMIN( self.width(), self.height() ) # we want a circular clock
+
+ matrix = QWMatrix() # setup transformation matrix
+ matrix.translate( cp.x(), cp.y() ) # origin at widget center
+ matrix.scale( d / 1000.0, d / 1000.0 ) # scale coordinate system
+
+ h_angle = 30 * ( self.time.hour() % 12 - 3 ) + self.time.minute() / 2
+ matrix.rotate( h_angle ) # rotate to draw hour hand
+ paint.setWorldMatrix( matrix )
+ pts.setPoints( [ -20,0, 0,-20, 300,0, 0,20 ] )
+ paint.drawPolygon( pts ) # draw hour hand
+ matrix.rotate( -h_angle ) # rotate back to zero
+
+ m_angle = ( self.time.minute() - 15 ) * 6
+ matrix.rotate( m_angle ) # rotate to draw minute hand
+ paint.setWorldMatrix( matrix )
+ pts.setPoints( [ -10,0, 0,-10, 400,0, 0,10 ] )
+ paint.drawPolygon( pts ) # draw minute hand
+ matrix.rotate( -m_angle ) # rotate back to zero
+
+ for i in range( 0, 12 ): # draw hour lines
+ paint.setWorldMatrix( matrix )
+ paint.drawLine( 450,0, 500,0 )
+ matrix.rotate( 30 )
+
+
+class DigitalClock( QLCDNumber ):
+ def __init__( self, *args ):
+ apply( QLCDNumber.__init__,(self,) + args )
+ self.showingColon = 0
+ self.setFrameStyle(QFrame.Panel | QFrame.Raised)
+ self.setLineWidth( 2 )
+ self.showTime()
+ self.normalTimer = self.startTimer( 500 )
+ self.showDateTimer = -1
+
+ def timerEvent( self, e ):
+ if e.timerId() == self.showDateTimer:
+ self.stopDate()
+ else:
+ if self.showDateTimer == -1:
+ self.showTime()
+
+ def mousePressEvent( self, e ):
+ if e.button() == Qt.LeftButton:
+ self.showDate()
+
+ def showDate( self ):
+ if self.showDateTimer != -1:
+ return
+ d = QDate.currentDate()
+ self.display('%2d %2d' % (d.month(), d.day()))
+ self.showDateTimer = self.startTimer(2000)
+
+ def stopDate( self ):
+ self.killTimer(self.showDateTimer)
+ self.showDateTimer = -1
+ self.showTime()
+
+ def showTime( self ):
+ self.showingColon = not self.showingColon
+ s = list(str(QTime.currentTime().toString())[:5]) #.left(5)
+ if not self.showingColon:
+ s[2] = ' '
+ if s[0] == '0':
+ s[0] = ' '
+ s = string.join(s,'')
+ self.display( s )
+
+ def QMIN( x, y ):
+ if y > x:
+ return y
+ return x
+
+TRUE = 1
+FALSE = 0
+MOVIEFILENAME = "trolltech.gif"
+
+#
+# WidgetView contains lots of Qt widgets.
+#
+
+class WidgetView ( QWidget ):
+ def __init__( self, *args ):
+ apply( QWidget.__init__, (self,) + args )
+
+ # Set the window caption/title
+ self.setCaption( "Qt Widgets Demo Application" )
+
+ # Install an application-global event filter
+ qApp.installEventFilter( self )
+
+ # Create a layout to position the widgets
+ self.topLayout = QVBoxLayout( self, 10 )
+
+ # Create a grid layout to hold most of the widgets
+ self.grid = QGridLayout( 6, 3 )
+
+ # This layout will get all of the stretch
+ self.topLayout.addLayout( self.grid, 10 )
+
+ # Create a menubar
+ self.menubar = QMenuBar( self )
+ self.menubar.setSeparator( QMenuBar.InWindowsStyle )
+
+ # Create an easter egg
+ QToolTip.add( self.menubar, QRect( 0, 0, 2, 2 ), "easter egg" )
+
+ self.popup = QPopupMenu()
+ self.id = self.popup.insertItem( "&New" )
+ self.popup.setItemEnabled( self.id, FALSE )
+ self.id = self.popup.insertItem( "&Open" )
+ self.popup.setItemEnabled( self.id, FALSE )
+ self.popup.insertSeparator()
+ self.popup.insertItem( "&Quit", qApp, SLOT("quit()"), Qt.CTRL+Qt.Key_Q )
+
+ self.menubar.insertItem( "&File", self.popup )
+
+ # Must tell the layout about a menubar in a widget
+ self.topLayout.setMenuBar( self.menubar )
+
+ # Create an analog and a digital clock
+ self.aclock = AnalogClock( self )
+ self.aclock.resize( 50, 50 )
+ self.dclock = DigitalClock( self )
+ self.dclock.setMaximumWidth( 200 )
+ self.grid.addWidget( self.aclock, 0, 2 )
+ self.grid.addWidget( self.dclock, 1, 2 )
+
+ # Give the dclock widget a blue palette
+ col = QColor()
+ col.setRgb( 0xaa, 0xbe, 0xff )
+ self.dclock.setPalette( QPalette( col ) )
+
+ # make tool tips for both of them
+ QToolTip.add( self.aclock, "custom widget: analog clock" )
+ QToolTip.add( self.dclock, "custom widget: digital clock" )
+
+ # Create a push button.
+ self.pb = QPushButton( self, "button1" ) # create button 1
+ self.pb.setText( "Push button 1" )
+ self.pb.setFixedHeight( self.pb.sizeHint().height() )
+ self.grid.addWidget( self.pb, 0, 0, Qt.AlignVCenter )
+ self.connect( self.pb, SIGNAL("clicked()"), self.button1Clicked )
+ QToolTip.add( self.pb, "push button 1" )
+ self.pm = QPixmap()
+ self.pix = self.pm.load( "qt.png" ) # load pixmap for button 2
+ if not self.pix:
+ QMessageBox.information( None, "Qt Widgets Example",
+ "Could not load the file \"qt.png\", which\n"
+ "contains an icon used...\n\n"
+ "The text \"line 42\" will be substituted.",
+ QMessageBox.Ok + QMessageBox.Default )
+
+ # Create a label containing a QMovie
+ self.movielabel = QLabel( self, "label0" )
+ self.movie = QMovie( MOVIEFILENAME )
+ self.movie.connectStatus( self.movieStatus )
+ self.movie.connectUpdate( self.movieUpdate )
+ self.movielabel.setFrameStyle( QFrame.Box | QFrame.Plain )
+ self.movielabel.setMovie( self.movie )
+ self.movielabel.setMargin( 0 )
+ self.movielabel.setFixedSize( 128 + self.movielabel.frameWidth() * 2,
+ 64 + self.movielabel.frameWidth() * 2 )
+ self.grid.addWidget( self.movielabel, 0, 1, Qt.AlignCenter )
+ QToolTip.add( self.movielabel, "movie" )
+
+ # Create a group of check boxes
+ self.bg = QButtonGroup( self, "checkGroup" )
+ self.bg.setTitle( "Check Boxes" )
+ self.grid.addWidget( self.bg, 1, 0 )
+
+ # Create a layout for the check boxes
+ self.vbox = QVBoxLayout(self.bg, 10)
+
+ self.vbox.addSpacing( self.bg.fontMetrics().height() )
+
+ self.cb = range(3)
+ self.cb[0] = QCheckBox( self.bg )
+ self.cb[0].setText( "Read" )
+ self.vbox.addWidget( self.cb[0] )
+ self.cb[0].setMinimumSize( self.cb[0].sizeHint() )
+ self.cb[1] = QCheckBox( self.bg )
+ self.cb[1].setText( "Write" )
+ self.vbox.addWidget( self.cb[1] )
+ self.cb[1].setMinimumSize( self.cb[1].sizeHint() )
+ self.cb[2] = QCheckBox( self.bg )
+ self.cb[2].setText( "Execute" )
+ self.cb[2].setMinimumSize( self.cb[2].sizeHint() )
+ self.vbox.addWidget( self.cb[2] )
+ self.bg.setMinimumSize( self.bg.childrenRect().size() )
+ self.vbox.activate()
+
+ self.connect( self.bg, SIGNAL("clicked(int)"), self.checkBoxClicked )
+
+ QToolTip.add( self.cb[0], "check box 1" )
+ QToolTip.add( self.cb[1], "check box 2" )
+ QToolTip.add( self.cb[2], "check box 3" )
+
+ # Create a group of radio buttons
+ self.bg = QButtonGroup( self, "radioGroup" )
+ self.bg.setTitle( "Radio buttons" )
+
+ self.grid.addWidget( self.bg, 1, 1 )
+
+ # Create a layout for the radio buttons
+ self.vbox = QVBoxLayout( self.bg, 10 )
+
+ self.vbox.addSpacing( self.bg.fontMetrics().height() )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&AM" )
+ self.rb.setChecked( TRUE )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ QToolTip.add( self.rb, "radio button 1" )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&FM" )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ QToolTip.add( self.rb, "radio button 2" )
+ self.rb = QRadioButton( self.bg )
+ self.rb.setText( "&Short Wave" )
+ self.vbox.addWidget( self.rb )
+ self.rb.setMinimumSize( self.rb.sizeHint() )
+ self.vbox.activate()
+
+ self.connect( self.bg, SIGNAL("clicked(int)"), self.radioButtonClicked )
+ QToolTip.add( self.rb, "radio button 3" )
+
+ # Create a list box
+ self.lb = QListBox( self, "listBox" )
+ for i in range( 0, 100, 1 ): # fill list box
+ txt = QString()
+ txt = "line %d" % i
+ if i == 42 and self.pix:
+ self.lb.insertItem( self.pm )
+ else:
+ self.lb.insertItem( txt )
+
+ self.grid.addMultiCellWidget( self.lb, 2, 4, 0, 0 )
+ self.connect( self.lb, SIGNAL("selected(int)"), self.listBoxItemSelected )
+ QToolTip.add( self.lb, "list box" )
+
+ self.vbox = QVBoxLayout( 8 )
+ self.grid.addLayout( self.vbox, 2, 1 )
+
+ # Create a slider
+ self.sb = QSlider( 0, 300, 1, 100, QSlider.Horizontal, self, "Slider" )
+ self.sb.setTickmarks( QSlider.Below )
+ self.sb.setTickInterval( 10 )
+ self.sb.setFocusPolicy( QWidget.TabFocus )
+ self.sb.setFixedHeight( self.sb.sizeHint().height() )
+ self.vbox.addWidget( self.sb )
+
+ self.connect( self.sb, SIGNAL("valueChanged(int)"), self.sliderValueChanged )
+ QToolTip.add( self.sb, "slider" )
+
+ # Create a combo box
+ self.combo = QComboBox( FALSE, self, "comboBox" )
+ self.combo.insertItem( "darkBlue" )
+ self.combo.insertItem( "darkRed" )
+ self.combo.insertItem( "darkGreen" )
+ self.combo.insertItem( "blue" )
+ self.combo.insertItem( "red" )
+ self.combo.setFixedHeight( self.combo.sizeHint().height() )
+ self.vbox.addWidget( self.combo )
+ self.connect( self.combo, SIGNAL("activated(int)"), self.comboBoxItemActivated )
+ QToolTip.add( self.combo, "read-only combo box" )
+
+ # Create an editable combo box
+ self.edCombo = QComboBox( TRUE, self, "edComboBox" )
+ self.edCombo.insertItem( "Permutable" )
+ self.edCombo.insertItem( "Malleable" )
+ self.edCombo.insertItem( "Adaptable" )
+ self.edCombo.insertItem( "Alterable" )
+ self.edCombo.insertItem( "Inconstant" )
+ self.edCombo.setFixedHeight( self.edCombo.sizeHint().height() )
+ self.vbox.addWidget( self.edCombo )
+ self.connect( self.edCombo, SIGNAL("activated(const QString &)"), self.edComboBoxItemActivated)
+ QToolTip.add( self.edCombo, "editable combo box" )
+
+ self.edCombo.setAutoCompletion( TRUE )
+
+ self.vbox.addStretch( 1 )
+
+ self.vbox = QVBoxLayout( 8 )
+ self.grid.addLayout( self.vbox, 2, 2 )
+
+ # Create a spin box
+ self.spin = QSpinBox( 0, 10, 1, self, "spin" )
+ self.spin.setSuffix( " mm" )
+ self.spin.setSpecialValueText( "Auto" )
+ self.spin.setMinimumSize( self.spin.sizeHint() )
+ self.connect( self.spin, SIGNAL( "valueChanged(const QString &)" ), self.spinBoxValueChanged )
+ QToolTip.add( self.spin, "spin box" )
+ self.vbox.addWidget( self.spin )
+
+ self.vbox.addStretch( 1 )
+
+ # Create a multi line edit
+ self.mle = QMultiLineEdit( self, "multiLineEdit" )
+
+ self.grid.addMultiCellWidget( self.mle, 3, 3, 1, 2 )
+ self.mle.setMinimumHeight( self.mle.fontMetrics().height() * 3 )
+ self.mle.setText("This is a QMultiLineEdit widget,\n"
+ "useful for small multi-line\n"
+ "input fields.")
+ QToolTip.add( self.mle, "multi line editor" )
+
+ # Create a single line edit
+ self.le = QLineEdit( self, "lineEdit" )
+ self.grid.addMultiCellWidget( self.le, 4, 4, 1, 2 )
+ self.le.setFixedHeight( self.le.sizeHint().height() )
+ self.connect( self.le, SIGNAL("textChanged(const QString &)"), self.lineEditTextChanged )
+ QToolTip.add( self.le, "single line editor" )
+
+ # Create a horizontal line (sort of QFrame) above the message line
+ self.separator = QFrame( self, "separatorLine" )
+ self.separator.setFrameStyle( QFrame.HLine | QFrame.Sunken )
+ self.separator.setFixedHeight( self.separator.sizeHint().height() )
+ self.grid.addMultiCellWidget( self.separator, 5, 5, 0, 2 )
+ QToolTip.add( self.separator, "tool tips on a separator! wow!" )
+
+ self.grid.setRowStretch( 0, 0 )
+ self.grid.setRowStretch( 1, 0 )
+ self.grid.setRowStretch( 2, 0 )
+ self.grid.setRowStretch( 3, 1 )
+ self.grid.setRowStretch( 4, 1 )
+ self.grid.setRowStretch( 5, 0 )
+
+ self.grid.setColStretch( 0, 1 )
+ self.grid.setColStretch( 1, 1 )
+ self.grid.setColStretch( 2, 1 )
+
+ # Create an label and a message in a plain widget
+ # The message is updated when buttons are clicked etc.
+
+ self.hbox = QHBoxLayout()
+ self.topLayout.addLayout( self.hbox )
+ self.msgLabel = QLabel( self, "msgLabel" )
+ self.msgLabel.setText( "Message:" )
+ self.msgLabel.setAlignment( Qt.AlignHCenter | Qt.AlignVCenter )
+ self.msgLabel.setFixedSize( self.msgLabel.sizeHint() )
+ self.hbox.addWidget( self.msgLabel )
+ QToolTip.add( self.msgLabel, "label 1" )
+
+ self.msg = QLabel( self, "message" )
+ self.msg.setFrameStyle( QFrame.Panel | QFrame.Sunken )
+ self.msg.setAlignment( Qt.AlignCenter )
+ self.msg.setFont( QFont( "times", 12, QFont.Bold ) )
+ self.msg.setText( "Message" )
+ self.msg.setFixedHeight( self.msg.sizeHint().height() )
+ self.msg.setText( "" )
+ self.hbox.addWidget( self.msg, 5 )
+ QToolTip.add( self.msg, "label 2" )
+
+ self.topLayout.activate()
+
+ def setStatus(self, text):
+ self.msg.setText( text )
+
+ def movieUpdate( self, r ):
+ # Uncomment this to test animated icons on your window manager
+ self.setIcon( self.movie.framePixmap() )
+
+ def movieStatus( self, s ):
+ if s == QMovie.SourceEmpty or s == QMovie.UnrecognizedFormat:
+ pm = QPixmap('tt-logo.png')
+ self.movielabel.setPixmap(pm)
+ self.movielabel.setFixedSize(pm.size())
+ else:
+ if ( self.movielabel.movie() ): # for flicker-free animation:
+ self.movielabel.setBackgroundMode( QWidget.NoBackground )
+
+ def button1Clicked( self ):
+ self.msg.setText( "The first push button was clicked" )
+
+ def checkBoxClicked( self, id ):
+ txt = "Check box %s clicked : " % str(id)
+ chk = ["-","-","-"]
+ if self.cb[0].isChecked():
+ chk[0] = "r"
+ if self.cb[1].isChecked():
+ chk[1] = "w"
+ if self.cb[2].isChecked():
+ chk[2] = "x"
+ txt = txt + str(chk[0]+chk[1]+chk[2])
+ self.msg.setText( txt )
+
+ def edComboBoxItemActivated( self, text):
+ self.msg.setText( "Editable Combo Box set to %s" % text )
+
+ def radioButtonClicked( self, id ):
+ self.msg.setText( "Radio button #%d clicked" % id )
+
+ def listBoxItemSelected( self, index ):
+ self.msg.setText( "List box item %d selected" % index )
+
+ def sliderValueChanged( self, value ):
+ self.msg.setText( "Movie set to %d%% of normal speed" % value )
+ self.movie.setSpeed( value )
+
+ def comboBoxItemActivated( self, index ):
+ self.msg.setText( "Combo box item %d activated" % index )
+ p = QApplication.palette()
+ if index == 0:
+ p.setColor( QColorGroup.Highlight, Qt.darkBlue )
+ elif index == 1:
+ p.setColor( QColorGroup.Highlight, Qt.darkRed )
+ elif index == 2:
+ p.setColor( QColorGroup.Highlight, Qt.darkGreen )
+ elif index == 3:
+ p.setColor( QColorGroup.Highlight, Qt.blue )
+ elif index == 4:
+ p.setColor( QColorGroup.Highlight, Qt.red )
+ QApplication.setPalette( p, TRUE )
+
+ def lineEditTextChanged( self, newText ):
+ self.msg.setText("Line edit text: " + unicode(newText))
+
+ def spinBoxValueChanged( self, valueText ):
+ self.msg.setText("Spin box value: " + unicode(valueText))
+
+ # All application events are passed throught this event filter.
+ # We're using it to display some information about a clicked
+ # widget (right mouse button + CTRL).
+ #def eventFilter( self, event ):
+ # identify_now = TRUE
+ # if event.type() == Event_MouseButtonPress and identify_now:
+ # e = QMouseEvent( event )
+ # if (e.button() == Qt.RightButton) and (e.state() & Qt.ControlButton) != 0:
+ # txt = QString( "The clicked widget is a\n" )
+ # txt = txt + QObect.className()
+ # txt = txt + "\nThe widget's name is\n"
+ # if QObject.name():
+ # txt = txt + QObject.name()
+ # else:
+ # txt = txt + "<no name>"
+ # identify_now = FALSE # don't do it in message box
+ # QMessageBox.message( "Identify Widget", txt, 0, QObject )
+ # identify_now = TRUE; # allow it again
+ # return FALSE # don't eat event
+
+################################################################################################
+
+#QApplication.setColourSpec( QApplication.CustomColor )
+a = QApplication( sys.argv )
+
+w = WidgetView()
+a.setMainWidget( w )
+w.show()
+a.exec_loop()
diff --git a/python/pyqt/pylupdate3/LICENSE.GPL b/python/pyqt/pylupdate3/LICENSE.GPL
new file mode 100644
index 00000000..c7aea189
--- /dev/null
+++ b/python/pyqt/pylupdate3/LICENSE.GPL
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/python/pyqt/pylupdate3/fetchtr.cpp b/python/pyqt/pylupdate3/fetchtr.cpp
new file mode 100644
index 00000000..609dbc18
--- /dev/null
+++ b/python/pyqt/pylupdate3/fetchtr.cpp
@@ -0,0 +1,455 @@
+/**********************************************************************
+** Copyright (C) 2002 Detlev Offenbach <detlev@die-offenbachs.de>
+**
+** This is a modified version of lupdate. The original is part of Qt-Linguist.
+** The copyright of the original file can be found below.
+**
+** This version is modified to handle python sources.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** fetchtr.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qfile.h>
+#include <qregexp.h>
+#include <qstring.h>
+#include <qtextstream.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <metatranslator.h>
+#include <stdio.h>
+#include <string.h>
+/*#include <qxml.h>*/
+
+
+static const char MagicComment[] = "TRANSLATOR ";
+
+static QMap<QCString, int> needs_Q_OBJECT;
+static QMap<QCString, int> lacks_Q_OBJECT;
+
+/*
+ The first part of this source file is the python tokenizer. We skip
+ most of python; the only tokens that interest us are defined here.
+*/
+
+enum { Tok_Eof, Tok_class, Tok_return, Tok_tr,
+ Tok_trUtf8, Tok_translate, Tok_Ident,
+ Tok_Comment, Tok_Dot, Tok_String,
+ Tok_LeftParen, Tok_RightParen,
+ Tok_Comma};
+
+/*
+ The tokenizer maintains the following global variables. The names
+ should be self-explanatory.
+*/
+static QCString yyFileName;
+static int yyCh;
+static char yyIdent[128];
+static size_t yyIdentLen;
+static char yyComment[65536];
+static size_t yyCommentLen;
+static char yyString[16384];
+static size_t yyStringLen;
+static int yyParenDepth;
+static int yyLineNo;
+static int yyCurLineNo;
+
+// the file to read from (if reading from a file)
+static FILE *yyInFile;
+
+// the string to read from and current position in the string (otherwise)
+static QString yyInStr;
+static int yyInPos;
+static int buf;
+
+static int (*getChar)();
+static int (*peekChar)();
+
+static int getCharFromFile()
+{
+ int c;
+
+ if ( buf < 0 )
+ c = getc( yyInFile );
+ else {
+ c = buf;
+ buf = -1;
+ }
+ if ( c == '\n' )
+ yyCurLineNo++;
+ return c;
+}
+
+static int peekCharFromFile()
+{
+ int c = getc( yyInFile );
+ buf = c;
+ return c;
+}
+
+static void startTokenizer( const char *fileName, int (*getCharFunc)(),
+ int (*peekCharFunc)() )
+{
+ yyInPos = 0;
+ buf = -1;
+ getChar = getCharFunc;
+ peekChar = peekCharFunc;
+
+ yyFileName = fileName;
+ yyCh = getChar();
+ yyParenDepth = 0;
+ yyCurLineNo = 1;
+}
+
+static int getToken()
+{
+ const char tab[] = "abfnrtv";
+ const char backTab[] = "\a\b\f\n\r\t\v";
+ uint n;
+
+ yyIdentLen = 0;
+ yyCommentLen = 0;
+ yyStringLen = 0;
+
+ while ( yyCh != EOF ) {
+ yyLineNo = yyCurLineNo;
+
+ if ( isalpha(yyCh) || yyCh == '_' ) {
+ do {
+ if ( yyIdentLen < sizeof(yyIdent) - 1 )
+ yyIdent[yyIdentLen++] = (char) yyCh;
+ yyCh = getChar();
+ } while ( isalnum(yyCh) || yyCh == '_' );
+ yyIdent[yyIdentLen] = '\0';
+
+ switch ( yyIdent[0] ) {
+ case 'Q':
+ if ( strcmp(yyIdent + 1, "T_TR_NOOP") == 0 ) {
+ return Tok_tr;
+ } else if ( strcmp(yyIdent + 1, "T_TRANSLATE_NOOP") == 0 ) {
+ return Tok_translate;
+ }
+ break;
+ case 'c':
+ if ( strcmp(yyIdent + 1, "lass") == 0 )
+ return Tok_class;
+ break;
+ case 'r':
+ if ( strcmp(yyIdent + 1, "eturn") == 0 )
+ return Tok_return;
+ break;
+ case 't':
+ if ( strcmp(yyIdent + 1, "r") == 0 )
+ return Tok_tr;
+ else if ( strcmp(yyIdent + 1, "rUtf8") == 0 )
+ return Tok_trUtf8;
+ else if ( strcmp(yyIdent + 1, "ranslate") == 0 )
+ return Tok_translate;
+ case '_':
+ if ( strcmp(yyIdent + 1, "_tr") == 0 )
+ return Tok_tr;
+ else if ( strcmp(yyIdent + 1, "_trUtf8") == 0 )
+ return Tok_trUtf8;
+ }
+ return Tok_Ident;
+ } else {
+ switch ( yyCh ) {
+ case '#':
+ yyCh = getChar();
+ do {
+ yyCh = getChar();
+ } while ( yyCh != EOF && yyCh != '\n' );
+ break;
+ case '"':
+ case '\'':
+ int quoteChar;
+ int trippelQuote, singleQuote;
+ int in;
+
+ quoteChar = yyCh;
+ trippelQuote = 0;
+ singleQuote = 1;
+ in = 0;
+ yyCh = getChar();
+
+ while ( yyCh != EOF ) {
+ if ( singleQuote && (yyCh == '\n' || (in && yyCh == quoteChar)) )
+ break;
+
+ if ( yyCh == quoteChar ) {
+ if (peekChar() == quoteChar) {
+ yyCh = getChar();
+ if (!trippelQuote) {
+ trippelQuote = 1;
+ singleQuote = 0;
+ in = 1;
+ yyCh = getChar();
+ } else {
+ yyCh = getChar();
+ if (yyCh == quoteChar) {
+ trippelQuote = 0;
+ break;
+ }
+ }
+ } else if (trippelQuote) {
+ if ( yyStringLen < sizeof(yyString) - 1 )
+ yyString[yyStringLen++] = (char) yyCh;
+ yyCh = getChar();
+ continue;
+ } else
+ break;
+ } else
+ in = 1;
+
+ if ( yyCh == '\\' ) {
+ yyCh = getChar();
+
+ if ( yyCh == 'x' ) {
+ QCString hex = "0";
+
+ yyCh = getChar();
+ while ( isxdigit(yyCh) ) {
+ hex += (char) yyCh;
+ yyCh = getChar();
+ }
+ sscanf( hex, "%x", &n );
+ if ( yyStringLen < sizeof(yyString) - 1 )
+ yyString[yyStringLen++] = (char) n;
+ } else if ( yyCh >= '0' && yyCh < '8' ) {
+ QCString oct = "";
+
+ do {
+ oct += (char) yyCh;
+ yyCh = getChar();
+ } while ( yyCh >= '0' && yyCh < '8' );
+ sscanf( oct, "%o", &n );
+ if ( yyStringLen < sizeof(yyString) - 1 )
+ yyString[yyStringLen++] = (char) n;
+ } else {
+ const char *p = strchr( tab, yyCh );
+ if ( yyStringLen < sizeof(yyString) - 1 )
+ yyString[yyStringLen++] = ( p == 0 ) ?
+ (char) yyCh : backTab[p - tab];
+ yyCh = getChar();
+ }
+ } else {
+ if ( yyStringLen < sizeof(yyString) - 1 )
+ yyString[yyStringLen++] = (char) yyCh;
+ yyCh = getChar();
+ }
+ }
+ yyString[yyStringLen] = '\0';
+
+ if ( yyCh != quoteChar ) {
+ printf("%c\n", yyCh);
+ qWarning( "%s:%d: Unterminated string",
+ (const char *) yyFileName, yyLineNo );
+ }
+
+ if ( yyCh == EOF ) {
+ return Tok_Eof;
+ } else {
+ yyCh = getChar();
+ return Tok_String;
+ }
+ break;
+ case '(':
+ yyParenDepth++;
+ yyCh = getChar();
+ return Tok_LeftParen;
+ case ')':
+ yyParenDepth--;
+ yyCh = getChar();
+ return Tok_RightParen;
+ case ',':
+ yyCh = getChar();
+ return Tok_Comma;
+ case '.':
+ yyCh = getChar();
+ return Tok_Dot;
+ default:
+ yyCh = getChar();
+ }
+ }
+ }
+ return Tok_Eof;
+}
+
+/*
+ The second part of this source file is the parser. It accomplishes
+ a very easy task: It finds all strings inside a tr() or translate()
+ call, and possibly finds out the context of the call. It supports
+ three cases:
+ (1) the context is specified, as in FunnyDialog.tr("Hello") or
+ translate("FunnyDialog", "Hello");
+ (2) the call appears within an inlined function;
+ (3) the call appears within a function defined outside the class definition.
+*/
+
+static int yyTok;
+
+static bool match( int t )
+{
+ bool matches = ( yyTok == t );
+ if ( matches )
+ yyTok = getToken();
+ return matches;
+}
+
+static bool matchString( QCString *s )
+{
+ bool matches = ( yyTok == Tok_String );
+ *s = "";
+ while ( yyTok == Tok_String ) {
+ *s += yyString;
+ yyTok = getToken();
+ }
+ return matches;
+}
+
+static bool matchEncoding( bool *utf8 )
+{
+ if ( yyTok == Tok_Ident ) {
+ if ( strcmp(yyIdent, "QApplication") == 0 ) {
+ yyTok = getToken();
+ }
+ *utf8 = QString( yyIdent ).endsWith( QString("UTF8") );
+ yyTok = getToken();
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+static void parse( MetaTranslator *tor, const char *initialContext,
+ const char *defaultContext )
+{
+ QMap<QCString, QCString> qualifiedContexts;
+ QCString context;
+ QCString text;
+ QCString com;
+ QCString functionContext = initialContext;
+ QCString prefix;
+ bool utf8 = FALSE;
+
+ yyTok = getToken();
+ while ( yyTok != Tok_Eof ) {
+ switch ( yyTok ) {
+ case Tok_class:
+ yyTok = getToken();
+ functionContext = yyIdent;
+ yyTok = getToken();
+ break;
+ case Tok_tr:
+ case Tok_trUtf8:
+ utf8 = ( yyTok == Tok_trUtf8 );
+ yyTok = getToken();
+ if ( match(Tok_LeftParen) && matchString(&text) ) {
+ com = "";
+ if ( match(Tok_RightParen) || (match(Tok_Comma) &&
+ matchString(&com) && match(Tok_RightParen)) ) {
+ if ( prefix.isNull() ) {
+ context = defaultContext;
+ } else if ( qstrcmp(prefix, "self") == 0 ) {
+ context = functionContext;
+ } else {
+ context = prefix;
+ }
+ prefix = (const char *) 0;
+
+ if ( qualifiedContexts.contains(context) )
+ context = qualifiedContexts[context];
+ tor->insert( MetaTranslatorMessage(context, text, com,
+ QString::null, utf8) );
+ }
+ }
+ break;
+ case Tok_translate:
+ utf8 = FALSE;
+ yyTok = getToken();
+ if ( match(Tok_LeftParen) &&
+ matchString(&context) &&
+ match(Tok_Comma) &&
+ matchString(&text) ) {
+ com = "";
+ if ( match(Tok_RightParen) ||
+ (match(Tok_Comma) &&
+ matchString(&com) &&
+ (match(Tok_RightParen) ||
+ match(Tok_Comma) &&
+ matchEncoding(&utf8) &&
+ match(Tok_RightParen))) )
+ tor->insert( MetaTranslatorMessage(context, text, com,
+ QString::null, utf8) );
+ }
+ break;
+ case Tok_Ident:
+ if ( !prefix.isNull() )
+ prefix += ".";
+ prefix += yyIdent;
+ yyTok = getToken();
+ if ( yyTok != Tok_Dot )
+ prefix = (const char *) 0;
+ break;
+ case Tok_Comment:
+ com = yyComment;
+ com = com.simplifyWhiteSpace();
+ if ( com.left(sizeof(MagicComment) - 1) == MagicComment ) {
+ com.remove( 0, sizeof(MagicComment) - 1 );
+ int k = com.find( ' ' );
+ if ( k == -1 ) {
+ context = com;
+ } else {
+ context = com.left( k );
+ com.remove( 0, k + 1 );
+ tor->insert( MetaTranslatorMessage(context, "", com,
+ QString::null, FALSE) );
+ }
+ }
+ yyTok = getToken();
+ break;
+ default:
+ yyTok = getToken();
+ }
+ }
+
+ if ( yyParenDepth != 0 )
+ qWarning( "%s: Unbalanced parentheses in Python code",
+ (const char *) yyFileName );
+}
+
+void fetchtr_py( const char *fileName, MetaTranslator *tor,
+ const char *defaultContext, bool mustExist )
+{
+ yyInFile = fopen( fileName, "r" );
+ if ( yyInFile == 0 ) {
+ if ( mustExist )
+ qWarning( "pylupdate error: cannot open Python source file '%s': %s",
+ fileName, strerror(errno) );
+ return;
+ }
+
+ startTokenizer( fileName, getCharFromFile, peekCharFromFile );
+ parse( tor, 0, defaultContext );
+ fclose( yyInFile );
+}
diff --git a/python/pyqt/pylupdate3/main.cpp b/python/pyqt/pylupdate3/main.cpp
new file mode 100644
index 00000000..427fed51
--- /dev/null
+++ b/python/pyqt/pylupdate3/main.cpp
@@ -0,0 +1,155 @@
+/**********************************************************************
+** Copyright (C) 2002 Detlev Offenbach <detlev@die-offenbachs.de>
+**
+** This is a modified version of lupdate. The original is part of Qt-Linguist.
+** The copyright of the original file can be found below.
+**
+** This version is modified to handle python sources.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** main.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qfile.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qtextstream.h>
+
+#include <errno.h>
+#include <metatranslator.h>
+#include <proparser.h>
+#include <string.h>
+
+// defined in fetchtr.cpp
+extern void fetchtr_py( const char *fileName, MetaTranslator *tor,
+ const char *defaultContext, bool mustExist );
+
+// defined in merge.cpp
+extern void merge( MetaTranslator *tor, const MetaTranslator *virginTor,
+ bool verbose );
+
+typedef QValueList<MetaTranslatorMessage> TML;
+
+static void printUsage()
+{
+ qWarning( "Usage: pylupdate [options] file.pro...\n"
+ "Options:\n"
+ " -help Display this information and exits\n"
+ " -noobsolete\n"
+ " Drop all obsolete strings\n"
+ " -verbose\n"
+ " Explain what is being done\n"
+ " -version\n"
+ " Display the version of pylupdate and exits" );
+}
+
+int main( int argc, char **argv )
+{
+ bool verbose = FALSE;
+ bool noObsolete = FALSE;
+ bool metSomething = FALSE;
+ int numProFiles = 0;
+
+ for ( int i = 1; i < argc; i++ ) {
+ if ( qstrcmp(argv[i], "-help") == 0 ) {
+ printUsage();
+ return 0;
+ } else if ( qstrcmp(argv[i], "-noobsolete") == 0 ) {
+ noObsolete = TRUE;
+ continue;
+ } else if ( qstrcmp(argv[i], "-verbose") == 0 ) {
+ verbose = TRUE;
+ continue;
+ } else if ( qstrcmp(argv[i], "-version") == 0 ) {
+ qWarning( "pylupdate version %s", QT_VERSION_STR );
+ return 0;
+ }
+
+ numProFiles++;
+ QFile f( argv[i] );
+ if ( !f.open(IO_ReadOnly) ) {
+ qWarning( "pylupdate error: Cannot open project file '%s': %s",
+ argv[i], strerror(errno) );
+ return 1;
+ }
+
+ QTextStream t( &f );
+ QString fullText = t.read();
+ f.close();
+
+ MetaTranslator fetchedTor;
+ QString defaultContext = "@default";
+ QCString codec;
+ QStringList translatorFiles;
+ QStringList::Iterator tf;
+
+ QMap<QString, QString> tagMap = proFileTagMap( fullText );
+ QMap<QString, QString>::Iterator it;
+
+ for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
+ QStringList toks = QStringList::split( QChar(' '), it.data() );
+ QStringList::Iterator t;
+
+ for ( t = toks.begin(); t != toks.end(); ++t ) {
+ if ( it.key() == QString("SOURCES") ) {
+ fetchtr_py( *t, &fetchedTor,
+ defaultContext, TRUE );
+ metSomething = TRUE;
+ } else if ( it.key() == QString("TRANSLATIONS") ) {
+ translatorFiles.append( *t );
+ metSomething = TRUE;
+ } else if ( it.key() == QString("CODEC") ) {
+ codec = (*t).latin1();
+ }
+ }
+ }
+
+ for ( tf = translatorFiles.begin(); tf != translatorFiles.end(); ++tf ) {
+ MetaTranslator tor;
+ tor.load( *tf );
+ if ( !codec.isEmpty() )
+ tor.setCodec( codec );
+ if ( verbose )
+ qWarning( "Updating '%s'...", (*tf).latin1() );
+ merge( &tor, &fetchedTor, verbose );
+ if ( noObsolete )
+ tor.stripObsoleteMessages();
+ tor.stripEmptyContexts();
+ if ( !tor.save(*tf) )
+ qWarning( "pylupdate error: Cannot save '%s': %s", (*tf).latin1(),
+ strerror(errno) );
+ }
+ if ( !metSomething ) {
+ qWarning( "pylupdate warning: File '%s' does not look like a project"
+ " file", argv[i] );
+ } else if ( translatorFiles.isEmpty() ) {
+ qWarning( "pylupdate warning: Met no 'TRANSLATIONS' entry in project"
+ " file '%s'", argv[i] );
+ }
+ }
+
+ if ( numProFiles == 0 ) {
+ printUsage();
+ return 1;
+ }
+ return 0;
+}
diff --git a/python/pyqt/pylupdate3/merge.cpp b/python/pyqt/pylupdate3/merge.cpp
new file mode 100644
index 00000000..c569c938
--- /dev/null
+++ b/python/pyqt/pylupdate3/merge.cpp
@@ -0,0 +1,110 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** merge.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <metatranslator.h>
+
+// defined in numberh.cpp
+extern void applyNumberHeuristic( MetaTranslator *tor, bool verbose );
+// defined in sametexth.cpp
+extern void applySameTextHeuristic( MetaTranslator *tor, bool verbose );
+
+typedef QValueList<MetaTranslatorMessage> TML;
+
+/*
+ Merges two MetaTranslator objects into the first one. The first one is a set
+ of source texts and translations for a previous version of the
+ internationalized program; the second one is a set of fresh source text newly
+ extracted from the source code, without any translation yet.
+*/
+
+void merge( MetaTranslator *tor, const MetaTranslator *virginTor, bool verbose )
+{
+ int known = 0;
+ int neww = 0;
+ int obsoleted = 0;
+ TML all = tor->messages();
+ TML::Iterator it;
+
+ /*
+ The types of all the messages from the vernacular translator are updated
+ according to the virgin translator.
+ */
+ for ( it = all.begin(); it != all.end(); ++it ) {
+ MetaTranslatorMessage::Type newType = MetaTranslatorMessage::Unfinished;
+ MetaTranslatorMessage m = *it;
+
+ // skip context comment
+ if ( !QCString((*it).sourceText()).isEmpty() ) {
+ if ( !virginTor->contains((*it).context(), (*it).sourceText(),
+ (*it).comment()) ) {
+ newType = MetaTranslatorMessage::Obsolete;
+ if ( m.type() != MetaTranslatorMessage::Obsolete )
+ obsoleted++;
+ } else {
+ switch ( m.type() ) {
+ case MetaTranslatorMessage::Finished:
+ newType = MetaTranslatorMessage::Finished;
+ known++;
+ break;
+ case MetaTranslatorMessage::Unfinished:
+ newType = MetaTranslatorMessage::Unfinished;
+ known++;
+ break;
+ case MetaTranslatorMessage::Obsolete:
+ newType = MetaTranslatorMessage::Unfinished;
+ neww++;
+ }
+ }
+
+ if ( newType != m.type() ) {
+ m.setType( newType );
+ tor->insert( m );
+ }
+ }
+ }
+
+ /*
+ Messages found only in the virgin translator are added to the
+ vernacular translator. Among these are all the context comments.
+ */
+ all = virginTor->messages();
+
+ for ( it = all.begin(); it != all.end(); ++it ) {
+ if ( !tor->contains((*it).context(), (*it).sourceText(),
+ (*it).comment()) ) {
+ tor->insert( *it );
+ if ( !QCString((*it).sourceText()).isEmpty() )
+ neww++;
+ }
+ }
+
+ /*
+ The same-text heuristic handles cases where a message has an
+ obsolete counterpart with a different context or comment.
+ */
+ applySameTextHeuristic( tor, verbose );
+
+ /*
+ The number heuristic handles cases where a message has an
+ obsolete counterpart with mostly numbers differing in the
+ source text.
+ */
+ applyNumberHeuristic( tor, verbose );
+
+ if ( verbose )
+ qWarning( " %d known, %d new and %d obsoleted messages",
+ known, neww, obsoleted );
+}
diff --git a/python/pyqt/pylupdate3/metatranslator.cpp b/python/pyqt/pylupdate3/metatranslator.cpp
new file mode 100644
index 00000000..c3d06738
--- /dev/null
+++ b/python/pyqt/pylupdate3/metatranslator.cpp
@@ -0,0 +1,557 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** metatranslator.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qapplication.h>
+#include <qcstring.h>
+#include <qfile.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qtextcodec.h>
+#include <qtextstream.h>
+#include <qxml.h>
+
+#include "metatranslator.h"
+
+static bool encodingIsUtf8( const QXmlAttributes& atts )
+{
+ for ( int i = 0; i < atts.length(); i++ ) {
+ // utf8="true" is a pre-3.0 syntax
+ if ( atts.qName(i) == QString("utf8") ) {
+ return ( atts.value(i) == QString("true") );
+ } else if ( atts.qName(i) == QString("encoding") ) {
+ return ( atts.value(i) == QString("UTF-8") );
+ }
+ }
+ return FALSE;
+}
+
+class TsHandler : public QXmlDefaultHandler
+{
+public:
+ TsHandler( MetaTranslator *translator )
+ : tor( translator ), type( MetaTranslatorMessage::Finished ),
+ inMessage( FALSE ), ferrorCount( 0 ), contextIsUtf8( FALSE ),
+ messageIsUtf8( FALSE ) { }
+
+ virtual bool startElement( const QString& namespaceURI,
+ const QString& localName, const QString& qName,
+ const QXmlAttributes& atts );
+ virtual bool endElement( const QString& namespaceURI,
+ const QString& localName, const QString& qName );
+ virtual bool characters( const QString& ch );
+ virtual bool fatalError( const QXmlParseException& exception );
+
+private:
+ MetaTranslator *tor;
+ MetaTranslatorMessage::Type type;
+ bool inMessage;
+ QString context;
+ QString source;
+ QString comment;
+ QString translation;
+
+ QString accum;
+ int ferrorCount;
+ bool contextIsUtf8;
+ bool messageIsUtf8;
+};
+
+bool TsHandler::startElement( const QString& /* namespaceURI */,
+ const QString& /* localName */,
+ const QString& qName,
+ const QXmlAttributes& atts )
+{
+ if ( qName == QString("byte") ) {
+ for ( int i = 0; i < atts.length(); i++ ) {
+ if ( atts.qName(i) == QString("value") ) {
+ QString value = atts.value( i );
+ int base = 10;
+ if ( value.startsWith("x") ) {
+ base = 16;
+ value = value.mid( 1 );
+ }
+ int n = value.toUInt( 0, base );
+ if ( n != 0 )
+ accum += QChar( n );
+ }
+ }
+ } else {
+ if ( qName == QString("context") ) {
+ context.truncate( 0 );
+ source.truncate( 0 );
+ comment.truncate( 0 );
+ translation.truncate( 0 );
+ contextIsUtf8 = encodingIsUtf8( atts );
+ } else if ( qName == QString("message") ) {
+ inMessage = TRUE;
+ type = MetaTranslatorMessage::Finished;
+ source.truncate( 0 );
+ comment.truncate( 0 );
+ translation.truncate( 0 );
+ messageIsUtf8 = encodingIsUtf8( atts );
+ } else if ( qName == QString("translation") ) {
+ for ( int i = 0; i < atts.length(); i++ ) {
+ if ( atts.qName(i) == QString("type") ) {
+ if ( atts.value(i) == QString("unfinished") )
+ type = MetaTranslatorMessage::Unfinished;
+ else if ( atts.value(i) == QString("obsolete") )
+ type = MetaTranslatorMessage::Obsolete;
+ else
+ type = MetaTranslatorMessage::Finished;
+ }
+ }
+ }
+ accum.truncate( 0 );
+ }
+ return TRUE;
+}
+
+bool TsHandler::endElement( const QString& /* namespaceURI */,
+ const QString& /* localName */,
+ const QString& qName )
+{
+ if ( qName == QString("codec") || qName == QString("defaultcodec") ) {
+ // "codec" is a pre-3.0 syntax
+ tor->setCodec( accum );
+ } else if ( qName == QString("name") ) {
+ context = accum;
+ } else if ( qName == QString("source") ) {
+ source = accum;
+ } else if ( qName == QString("comment") ) {
+ if ( inMessage ) {
+ comment = accum;
+ } else {
+ if ( contextIsUtf8 )
+ tor->insert( MetaTranslatorMessage(context.utf8(), "",
+ accum.utf8(), QString::null, TRUE,
+ MetaTranslatorMessage::Unfinished) );
+ else
+ tor->insert( MetaTranslatorMessage(context.ascii(), "",
+ accum.ascii(), QString::null, FALSE,
+ MetaTranslatorMessage::Unfinished) );
+ }
+ } else if ( qName == QString("translation") ) {
+ translation = accum;
+ } else if ( qName == QString("message") ) {
+ if ( messageIsUtf8 )
+ tor->insert( MetaTranslatorMessage(context.utf8(), source.utf8(),
+ comment.utf8(), translation,
+ TRUE, type) );
+ else
+ tor->insert( MetaTranslatorMessage(context.ascii(), source.ascii(),
+ comment.ascii(), translation,
+ FALSE, type) );
+ inMessage = FALSE;
+ }
+ return TRUE;
+}
+
+bool TsHandler::characters( const QString& ch )
+{
+ QString t = ch;
+ t.replace( QRegExp(QChar('\r')), "" );
+ accum += t;
+ return TRUE;
+}
+
+bool TsHandler::fatalError( const QXmlParseException& exception )
+{
+ if ( ferrorCount++ == 0 ) {
+ QString msg;
+ msg.sprintf( "Parse error at line %d, column %d (%s).",
+ exception.lineNumber(), exception.columnNumber(),
+ exception.message().latin1() );
+ if ( qApp == 0 )
+ qWarning( "XML error: %s", msg.latin1() );
+ else
+ QMessageBox::information( qApp->mainWidget(),
+ QObject::tr("Qt Linguist"), msg );
+ }
+ return FALSE;
+}
+
+static QString numericEntity( int ch )
+{
+ return QString( ch <= 0x20 ? "<byte value=\"x%1\"/>" : "&#x%1;" )
+ .arg( ch, 0, 16 );
+}
+
+static QString protect( const QCString& str )
+{
+ QString result;
+ int len = (int) str.length();
+ for ( int k = 0; k < len; k++ ) {
+ switch( str[k] ) {
+ case '\"':
+ result += QString( "&quot;" );
+ break;
+ case '&':
+ result += QString( "&amp;" );
+ break;
+ case '>':
+ result += QString( "&gt;" );
+ break;
+ case '<':
+ result += QString( "&lt;" );
+ break;
+ case '\'':
+ result += QString( "&apos;" );
+ break;
+ default:
+ if ( (uchar) str[k] < 0x20 && str[k] != '\n' )
+ result += numericEntity( (uchar) str[k] );
+ else
+ result += str[k];
+ }
+ }
+ return result;
+}
+
+static QString evilBytes( const QCString& str, bool utf8 )
+{
+ if ( utf8 ) {
+ return protect( str );
+ } else {
+ QString result;
+ QCString t = protect( str ).latin1();
+ int len = (int) t.length();
+ for ( int k = 0; k < len; k++ ) {
+ if ( (uchar) t[k] >= 0x7f )
+ result += numericEntity( (uchar) t[k] );
+ else
+ result += QChar( t[k] );
+ }
+ return result;
+ }
+}
+
+MetaTranslatorMessage::MetaTranslatorMessage()
+ : utfeight( FALSE ), ty( Unfinished )
+{
+}
+
+MetaTranslatorMessage::MetaTranslatorMessage( const char *context,
+ const char *sourceText,
+ const char *comment,
+ const QString& translation,
+ bool utf8, Type type )
+ : QTranslatorMessage( context, sourceText, comment, translation ),
+ utfeight( FALSE ), ty( type )
+{
+ /*
+ Don't use UTF-8 if it makes no difference. UTF-8 should be
+ reserved for the real problematic case: non-ASCII (possibly
+ non-Latin-1) characters in .ui files.
+ */
+ if ( utf8 ) {
+ if ( sourceText != 0 ) {
+ int i = 0;
+ while ( sourceText[i] != '\0' ) {
+ if ( (uchar) sourceText[i] >= 0x80 ) {
+ utfeight = TRUE;
+ break;
+ }
+ i++;
+ }
+ }
+ if ( !utfeight && comment != 0 ) {
+ int i = 0;
+ while ( comment[i] != '\0' ) {
+ if ( (uchar) comment[i] >= 0x80 ) {
+ utfeight = TRUE;
+ break;
+ }
+ i++;
+ }
+ }
+ }
+}
+
+MetaTranslatorMessage::MetaTranslatorMessage( const MetaTranslatorMessage& m )
+ : QTranslatorMessage( m ), utfeight( m.utfeight ), ty( m.ty )
+{
+}
+
+MetaTranslatorMessage& MetaTranslatorMessage::operator=(
+ const MetaTranslatorMessage& m )
+{
+ QTranslatorMessage::operator=( m );
+ utfeight = m.utfeight;
+ ty = m.ty;
+ return *this;
+}
+
+bool MetaTranslatorMessage::operator==( const MetaTranslatorMessage& m ) const
+{
+ return qstrcmp( context(), m.context() ) == 0 &&
+ qstrcmp( sourceText(), m.sourceText() ) == 0 &&
+ qstrcmp( comment(), m.comment() ) == 0;
+}
+
+bool MetaTranslatorMessage::operator<( const MetaTranslatorMessage& m ) const
+{
+ int delta = qstrcmp( context(), m.context() );
+ if ( delta == 0 )
+ delta = qstrcmp( sourceText(), m.sourceText() );
+ if ( delta == 0 )
+ delta = qstrcmp( comment(), m.comment() );
+ return delta < 0;
+}
+
+MetaTranslator::MetaTranslator()
+ : codecName( "ISO-8859-1" ), codec( 0 )
+{
+}
+
+MetaTranslator::MetaTranslator( const MetaTranslator& tor )
+ : mm( tor.mm ), codecName( tor.codecName ), codec( tor.codec )
+{
+
+}
+
+MetaTranslator& MetaTranslator::operator=( const MetaTranslator& tor )
+{
+ mm = tor.mm;
+ codecName = tor.codecName;
+ codec = tor.codec;
+ return *this;
+}
+
+bool MetaTranslator::load( const QString& filename )
+{
+ mm.clear();
+
+ QFile f( filename );
+ if ( !f.open(IO_ReadOnly) )
+ return FALSE;
+
+ QTextStream t( &f );
+ QXmlInputSource in( t );
+ QXmlSimpleReader reader;
+ // don't click on these!
+ reader.setFeature( "http://xml.org/sax/features/namespaces", FALSE );
+ reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", TRUE );
+ reader.setFeature( "http://trolltech.com/xml/features/report-whitespace"
+ "-only-CharData", FALSE );
+ QXmlDefaultHandler *hand = new TsHandler( this );
+ reader.setContentHandler( hand );
+ reader.setErrorHandler( hand );
+
+ bool ok = reader.parse( in );
+ reader.setContentHandler( 0 );
+ reader.setErrorHandler( 0 );
+ delete hand;
+ f.close();
+ if ( !ok )
+ mm.clear();
+ return ok;
+}
+
+bool MetaTranslator::save( const QString& filename ) const
+{
+ QFile f( filename );
+ if ( !f.open(IO_WriteOnly) )
+ return FALSE;
+
+ QTextStream t( &f );
+ t.setCodec( QTextCodec::codecForName("ISO-8859-1") );
+
+ t << "<!DOCTYPE TS><TS>\n";
+ if ( codecName != "ISO-8859-1" )
+ t << "<defaultcodec>" << codecName << "</defaultcodec>\n";
+ TMM::ConstIterator m = mm.begin();
+ while ( m != mm.end() ) {
+ TMMInv inv;
+ TMMInv::Iterator i;
+ bool contextIsUtf8 = m.key().utf8();
+ QCString context = m.key().context();
+ QCString comment = "";
+
+ do {
+ if ( QCString(m.key().sourceText()).isEmpty() ) {
+ if ( m.key().type() != MetaTranslatorMessage::Obsolete ) {
+ contextIsUtf8 = m.key().utf8();
+ comment = QCString( m.key().comment() );
+ }
+ } else {
+ inv.insert( *m, m.key() );
+ }
+ } while ( ++m != mm.end() && QCString(m.key().context()) == context );
+
+ t << "<context";
+ if ( contextIsUtf8 )
+ t << " encoding=\"UTF-8\"";
+ t << ">\n";
+ t << " <name>" << evilBytes( context, contextIsUtf8 )
+ << "</name>\n";
+ if ( !comment.isEmpty() )
+ t << " <comment>" << evilBytes( comment, contextIsUtf8 )
+ << "</comment>\n";
+
+ for ( i = inv.begin(); i != inv.end(); ++i ) {
+ t << " <message";
+ if ( (*i).utf8() )
+ t << " encoding=\"UTF-8\"";
+ t << ">\n"
+ << " <source>" << evilBytes( (*i).sourceText(),
+ (*i).utf8() )
+ << "</source>\n";
+ if ( !QCString((*i).comment()).isEmpty() )
+ t << " <comment>" << evilBytes( (*i).comment(),
+ (*i).utf8() )
+ << "</comment>\n";
+ t << " <translation";
+ if ( (*i).type() == MetaTranslatorMessage::Unfinished )
+ t << " type=\"unfinished\"";
+ else if ( (*i).type() == MetaTranslatorMessage::Obsolete )
+ t << " type=\"obsolete\"";
+ t << ">" << protect( (*i).translation().utf8() )
+ << "</translation>\n";
+ t << " </message>\n";
+ }
+ t << "</context>\n";
+ }
+ t << "</TS>\n";
+ f.close();
+ return TRUE;
+}
+
+bool MetaTranslator::release( const QString& filename, bool verbose ) const
+{
+ QTranslator tor( 0 );
+ int finished = 0;
+ int unfinished = 0;
+ int untranslated = 0;
+ TMM::ConstIterator m;
+
+ for ( m = mm.begin(); m != mm.end(); ++m ) {
+ if ( m.key().type() != MetaTranslatorMessage::Obsolete ) {
+ if ( m.key().translation().isEmpty() ) {
+ untranslated++;
+ } else {
+ if ( m.key().type() == MetaTranslatorMessage::Unfinished )
+ unfinished++;
+ else
+ finished++;
+ tor.insert( m.key() );
+ }
+ }
+ }
+
+ bool saved = tor.save( filename, QTranslator::Stripped );
+ if ( saved && verbose )
+ qWarning( " %d finished, %d unfinished and %d untranslated messages",
+ finished, unfinished, untranslated );
+
+ return saved;
+}
+
+bool MetaTranslator::contains( const char *context, const char *sourceText,
+ const char *comment ) const
+{
+ return mm.find( MetaTranslatorMessage(context, sourceText, comment) ) !=
+ mm.end();
+}
+
+void MetaTranslator::insert( const MetaTranslatorMessage& m )
+{
+ int pos = mm.count();
+ TMM::Iterator n = mm.find( m );
+ if ( n != mm.end() )
+ pos = *n;
+ mm.replace( m, pos );
+}
+
+void MetaTranslator::stripObsoleteMessages()
+{
+ TMM newmm;
+
+ TMM::Iterator m = mm.begin();
+ while ( m != mm.end() ) {
+ if ( m.key().type() != MetaTranslatorMessage::Obsolete )
+ newmm.insert( m.key(), *m );
+ ++m;
+ }
+ mm = newmm;
+}
+
+void MetaTranslator::stripEmptyContexts()
+{
+ TMM newmm;
+
+ TMM::Iterator m = mm.begin();
+ while ( m != mm.end() ) {
+ if ( QCString(m.key().sourceText()).isEmpty() ) {
+ TMM::Iterator n = m;
+ ++n;
+ // the context comment is followed by other messages
+ if ( n != newmm.end() &&
+ qstrcmp(m.key().context(), n.key().context()) == 0 )
+ newmm.insert( m.key(), *m );
+ } else {
+ newmm.insert( m.key(), *m );
+ }
+ ++m;
+ }
+ mm = newmm;
+}
+
+void MetaTranslator::setCodec( const char *name )
+{
+ const int latin1 = 4;
+
+ codecName = name;
+ codec = QTextCodec::codecForName( name );
+ if ( codec == 0 || codec->mibEnum() == latin1 )
+ codec = 0;
+}
+
+QString MetaTranslator::toUnicode( const char *str, bool utf8 ) const
+{
+ if ( utf8 )
+ return QString::fromUtf8( str );
+ else if ( codec == 0 )
+ return QString( str );
+ else
+ return codec->toUnicode( str );
+}
+
+QValueList<MetaTranslatorMessage> MetaTranslator::messages() const
+{
+ int n = mm.count();
+ TMM::ConstIterator *t = new TMM::ConstIterator[n + 1];
+ TMM::ConstIterator m;
+ for ( m = mm.begin(); m != mm.end(); ++m )
+ t[*m] = m;
+
+ QValueList<MetaTranslatorMessage> val;
+ for ( int i = 0; i < n; i++ )
+ val.append( t[i].key() );
+
+ delete[] t;
+ return val;
+}
+
+QValueList<MetaTranslatorMessage> MetaTranslator::translatedMessages() const
+{
+ QValueList<MetaTranslatorMessage> val;
+ TMM::ConstIterator m;
+ for ( m = mm.begin(); m != mm.end(); ++m ) {
+ if ( m.key().type() == MetaTranslatorMessage::Finished )
+ val.append( m.key() );
+ }
+ return val;
+}
diff --git a/python/pyqt/pylupdate3/metatranslator.h b/python/pyqt/pylupdate3/metatranslator.h
new file mode 100644
index 00000000..a071207e
--- /dev/null
+++ b/python/pyqt/pylupdate3/metatranslator.h
@@ -0,0 +1,95 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** metatranslator.h
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#ifndef METATRANSLATOR_H
+#define METATRANSLATOR_H
+
+#include <qmap.h>
+#include <qstring.h>
+#include <qtranslator.h>
+#include <qvaluelist.h>
+
+class QTextCodec;
+
+class MetaTranslatorMessage : public QTranslatorMessage
+{
+public:
+ enum Type { Unfinished, Finished, Obsolete };
+
+ MetaTranslatorMessage();
+ MetaTranslatorMessage( const char *context, const char *sourceText,
+ const char *comment,
+ const QString& translation = QString::null,
+ bool utf8 = FALSE, Type type = Unfinished );
+ MetaTranslatorMessage( const MetaTranslatorMessage& m );
+
+ MetaTranslatorMessage& operator=( const MetaTranslatorMessage& m );
+
+ void setType( Type nt ) { ty = nt; }
+ Type type() const { return ty; }
+ bool utf8() const { return utfeight; }
+
+ bool operator==( const MetaTranslatorMessage& m ) const;
+ bool operator!=( const MetaTranslatorMessage& m ) const
+ { return !operator==( m ); }
+ bool operator<( const MetaTranslatorMessage& m ) const;
+ bool operator<=( const MetaTranslatorMessage& m )
+ { return !operator>( m ); }
+ bool operator>( const MetaTranslatorMessage& m ) const
+ { return this->operator<( m ); }
+ bool operator>=( const MetaTranslatorMessage& m ) const
+ { return !operator<( m ); }
+
+private:
+ bool utfeight;
+ Type ty;
+};
+
+class MetaTranslator
+{
+public:
+ MetaTranslator();
+ MetaTranslator( const MetaTranslator& tor );
+
+ MetaTranslator& operator=( const MetaTranslator& tor );
+
+ bool load( const QString& filename );
+ bool save( const QString& filename ) const;
+ bool release( const QString& filename, bool verbose = FALSE ) const;
+
+ bool contains( const char *context, const char *sourceText,
+ const char *comment ) const;
+ void insert( const MetaTranslatorMessage& m );
+
+ void stripObsoleteMessages();
+ void stripEmptyContexts();
+
+ void setCodec( const char *name );
+ QString toUnicode( const char *str, bool utf8 ) const;
+
+ QValueList<MetaTranslatorMessage> messages() const;
+ QValueList<MetaTranslatorMessage> translatedMessages() const;
+
+private:
+ typedef QMap<MetaTranslatorMessage, int> TMM;
+ typedef QMap<int, MetaTranslatorMessage> TMMInv;
+
+ TMM mm;
+ QCString codecName;
+ QTextCodec *codec;
+};
+
+#endif
diff --git a/python/pyqt/pylupdate3/numberh.cpp b/python/pyqt/pylupdate3/numberh.cpp
new file mode 100644
index 00000000..67048031
--- /dev/null
+++ b/python/pyqt/pylupdate3/numberh.cpp
@@ -0,0 +1,230 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** numberh.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qmemarray.h>
+#include <qcstring.h>
+#include <qmap.h>
+#include <qstringlist.h>
+
+#include <ctype.h>
+#include <metatranslator.h>
+
+typedef QMap<QCString, MetaTranslatorMessage> TMM;
+typedef QValueList<MetaTranslatorMessage> TML;
+
+static bool isDigitFriendly( int c )
+{
+ return ispunct( c ) || isspace( c );
+}
+
+static int numberLength( const char *s )
+{
+ int i = 0;
+
+ if ( isdigit(s[0]) ) {
+ do {
+ i++;
+ } while ( isdigit(s[i]) ||
+ (isDigitFriendly(s[i]) &&
+ (isdigit(s[i + 1]) ||
+ (isDigitFriendly(s[i + 1]) && isdigit(s[i + 2])))) );
+ }
+ return i;
+}
+
+/*
+ Returns a version of 'key' where all numbers have been replaced by zeroes. If
+ there were none, returns "".
+*/
+static QCString zeroKey( const char *key )
+{
+ QCString zeroed( strlen(key) + 1 );
+ char *z = zeroed.data();
+ int i = 0, j = 0;
+ int len;
+ bool metSomething = FALSE;
+
+ while ( key[i] != '\0' ) {
+ len = numberLength( key + i );
+ if ( len > 0 ) {
+ i += len;
+ z[j++] = '0';
+ metSomething = TRUE;
+ } else {
+ z[j++] = key[i++];
+ }
+ }
+ z[j] = '\0';
+
+ if ( metSomething )
+ return zeroed;
+ else
+ return "";
+}
+
+static QString translationAttempt( const QString& oldTranslation,
+ const char *oldSource,
+ const char *newSource )
+{
+ int p = zeroKey( oldSource ).contains( '0' );
+ int oldSourceLen = qstrlen( oldSource );
+ QString attempt;
+ QStringList oldNumbers;
+ QStringList newNumbers;
+ QMemArray<bool> met( p );
+ QMemArray<int> matchedYet( p );
+ int i, j;
+ int k = 0, ell, best;
+ int m, n;
+ int pass;
+
+ /*
+ This algorithm is hard to follow, so we'll consider an example
+ all along: oldTranslation is "XeT 3.0", oldSource is "TeX 3.0"
+ and newSource is "XeT 3.1".
+
+ First, we set up two tables: oldNumbers and newNumbers. In our
+ example, oldNumber[0] is "3.0" and newNumber[0] is "3.1".
+ */
+ for ( i = 0, j = 0; i < oldSourceLen; i++, j++ ) {
+ m = numberLength( oldSource + i );
+ n = numberLength( newSource + j );
+ if ( m > 0 ) {
+ oldNumbers.append( QCString(oldSource + i, m + 1) );
+ newNumbers.append( QCString(newSource + j, n + 1) );
+ i += m;
+ j += n;
+ met[k] = FALSE;
+ matchedYet[k] = 0;
+ k++;
+ }
+ }
+
+ /*
+ We now go over the old translation, "XeT 3.0", one letter at a
+ time, looking for numbers found in oldNumbers. Whenever such a
+ number is met, it is replaced with its newNumber equivalent. In
+ our example, the "3.0" of "XeT 3.0" becomes "3.1".
+ */
+ for ( i = 0; i < (int) oldTranslation.length(); i++ ) {
+ attempt += oldTranslation[i];
+ for ( k = 0; k < p; k++ ) {
+ if ( oldTranslation[i] == oldNumbers[k][matchedYet[k]] )
+ matchedYet[k]++;
+ else
+ matchedYet[k] = 0;
+ }
+
+ /*
+ Let's find out if the last character ended a match. We make
+ two passes over the data. In the first pass, we try to
+ match only numbers that weren't matched yet; if that fails,
+ the second pass does the trick. This is useful in some
+ suspicious cases, flagged below.
+ */
+ for ( pass = 0; pass < 2; pass++ ) {
+ best = p; // an impossible value
+ for ( k = 0; k < p; k++ ) {
+ if ( (!met[k] || pass > 0) &&
+ matchedYet[k] == (int) oldNumbers[k].length() &&
+ numberLength(oldTranslation.latin1() + (i + 1) -
+ matchedYet[k]) == matchedYet[k] ) {
+ // the longer the better
+ if ( best == p || matchedYet[k] > matchedYet[best] )
+ best = k;
+ }
+ }
+ if ( best != p ) {
+ attempt.truncate( attempt.length() - matchedYet[best] );
+ attempt += newNumbers[best];
+ met[best] = TRUE;
+ for ( k = 0; k < p; k++ )
+ matchedYet[k] = 0;
+ break;
+ }
+ }
+ }
+
+ /*
+ We flag two kinds of suspicious cases. They are identified as
+ such with comments such as "{2000?}" at the end.
+
+ Example of the first kind: old source text "TeX 3.0" translated
+ as "XeT 2.0" is flagged "TeX 2.0 {3.0?}", no matter what the
+ new text is.
+ */
+ for ( k = 0; k < p; k++ ) {
+ if ( !met[k] )
+ attempt += QString( " {" ) + newNumbers[k] + QString( "?}" );
+ }
+
+ /*
+ Example of the second kind: "1 of 1" translated as "1 af 1",
+ with new source text "1 of 2", generates "1 af 2 {1 or 2?}"
+ because it's not clear which of "1 af 2" and "2 af 1" is right.
+ */
+ for ( k = 0; k < p; k++ ) {
+ for ( ell = 0; ell < p; ell++ ) {
+ if ( k != ell && oldNumbers[k] == oldNumbers[ell] &&
+ newNumbers[k] < newNumbers[ell] )
+ attempt += QString( " {" ) + newNumbers[k] + QString( " or " ) +
+ newNumbers[ell] + QString( "?}" );
+ }
+ }
+ return attempt;
+}
+
+/*
+ Augments a MetaTranslator with translations easily derived from
+ similar existing (probably obsolete) translations.
+
+ For example, if "TeX 3.0" is translated as "XeT 3.0" and "TeX 3.1"
+ has no translation, "XeT 3.1" is added to the translator and is
+ marked Unfinished.
+*/
+void applyNumberHeuristic( MetaTranslator *tor, bool verbose )
+{
+ TMM translated, untranslated;
+ TMM::Iterator t, u;
+ TML all = tor->messages();
+ TML::Iterator it;
+ int inserted = 0;
+
+ for ( it = all.begin(); it != all.end(); ++it ) {
+ if ( (*it).type() == MetaTranslatorMessage::Unfinished ) {
+ if ( (*it).translation().isEmpty() )
+ untranslated.insert( zeroKey((*it).sourceText()), *it );
+ } else if ( !(*it).translation().isEmpty() ) {
+ translated.insert( zeroKey((*it).sourceText()), *it );
+ }
+ }
+
+ for ( u = untranslated.begin(); u != untranslated.end(); ++u ) {
+ t = translated.find( u.key() );
+ if ( t != translated.end() && !t.key().isEmpty() &&
+ qstrcmp((*t).sourceText(), (*u).sourceText()) != 0 ) {
+ MetaTranslatorMessage m( *u );
+ m.setTranslation( translationAttempt((*t).translation(),
+ (*t).sourceText(),
+ (*u).sourceText()) );
+ tor->insert( m );
+ inserted++;
+ }
+ }
+ if ( verbose && inserted != 0 )
+ qWarning( " number heuristic provided %d translation%s",
+ inserted, inserted == 1 ? "" : "s" );
+}
diff --git a/python/pyqt/pylupdate3/proparser.cpp b/python/pyqt/pylupdate3/proparser.cpp
new file mode 100644
index 00000000..f018b4c3
--- /dev/null
+++ b/python/pyqt/pylupdate3/proparser.cpp
@@ -0,0 +1,78 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** proparser.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qregexp.h>
+#include <qstringlist.h>
+
+#include "proparser.h"
+
+QMap<QString, QString> proFileTagMap( const QString& text )
+{
+ QString t = text;
+
+ /*
+ Strip comments, merge lines ending with backslash, add
+ spaces around '=' and '+=', replace '\n' with ';', and
+ simplify white spaces.
+ */
+ t.replace( QRegExp(QString("#[^\n]$")), QString(" ") );
+ t.replace( QRegExp(QString("\\\\\\s*\n")), QString(" ") );
+ t.replace( QRegExp(QString("=")), QString(" = ") );
+ t.replace( QRegExp(QString("\\+ =")), QString(" += ") );
+ t.replace( QRegExp(QString("\n")), QString(";") );
+ t = t.simplifyWhiteSpace();
+
+ QMap<QString, QString> tagMap;
+
+ QStringList lines = QStringList::split( QChar(';'), t );
+ QStringList::Iterator line;
+ for ( line = lines.begin(); line != lines.end(); ++line ) {
+ QStringList toks = QStringList::split( QChar(' '), *line );
+
+ if ( toks.count() >= 3 &&
+ (toks[1] == QString("=") || toks[1] == QString("+=")) ) {
+ QString tag = toks.first();
+ int k = tag.findRev( QChar(':') ); // as in 'unix:'
+ if ( k != -1 )
+ tag = tag.mid( k + 1 );
+ toks.remove( toks.begin() );
+
+ QString action = toks.first();
+ toks.remove( toks.begin() );
+
+ if ( tagMap.contains(tag) ) {
+ if ( action == QString("=") )
+ tagMap.replace( tag, toks.join(QChar(' ')) );
+ else
+ tagMap[tag] += QChar( ' ' ) + toks.join( QChar(' ') );
+ } else {
+ tagMap[tag] = toks.join( QChar(' ') );
+ }
+ }
+ }
+
+ QRegExp var( "\\$\\$[a-zA-Z0-9_]+" );
+ QMap<QString, QString>::Iterator it;
+ for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
+ int i = 0;
+
+ while ( (i = var.search(it.data(), i)) != -1 ) {
+ int len = var.matchedLength();
+ (*it).replace( i, len, tagMap[(*it).mid(i + 2, len - 2)] );
+ }
+ }
+ return tagMap;
+}
diff --git a/python/pyqt/pylupdate3/proparser.h b/python/pyqt/pylupdate3/proparser.h
new file mode 100644
index 00000000..2a66c8ab
--- /dev/null
+++ b/python/pyqt/pylupdate3/proparser.h
@@ -0,0 +1,25 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** proparser.h
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#ifndef PROPARSER_H
+#define PROPARSER_H
+
+#include <qmap.h>
+#include <qstring.h>
+
+QMap<QString, QString> proFileTagMap( const QString& text );
+
+#endif
diff --git a/python/pyqt/pylupdate3/pylupdate-prof.sbf b/python/pyqt/pylupdate3/pylupdate-prof.sbf
new file mode 100644
index 00000000..7a4c3c4a
--- /dev/null
+++ b/python/pyqt/pylupdate3/pylupdate-prof.sbf
@@ -0,0 +1,24 @@
+# This is the build file for pylupdate for Qt v3 Professional Edition.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+target = pylupdate
+sources = fetchtr.cpp main.cpp merge.cpp numberh.cpp sametexth.cpp metatranslator.cpp proparser.cpp qxml.cpp
+headers = metatranslator.h proparser.h
diff --git a/python/pyqt/pylupdate3/pylupdate.pro.in b/python/pyqt/pylupdate3/pylupdate.pro.in
new file mode 100644
index 00000000..c21725c6
--- /dev/null
+++ b/python/pyqt/pylupdate3/pylupdate.pro.in
@@ -0,0 +1,29 @@
+# Copyright (c) 2002
+# Detlev Offenbach <detlev@die-offenbachs.de>
+#
+# The project file pylupdate for Qt v3.
+
+
+TEMPLATE = app
+CONFIG += qt warn_on console release @PYQT_RBPROF@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = QT_INTERNAL_XML @BLX_DEFINES@
+
+DESTDIR = @PYQT_BINDIR@
+TARGET = pylupdate
+
+HEADERS = metatranslator.h \
+ proparser.h
+
+SOURCES = fetchtr.cpp \
+ main.cpp \
+ merge.cpp \
+ numberh.cpp \
+ sametexth.cpp \
+ metatranslator.cpp \
+ proparser.cpp
+
+rbprof:exists($(QTDIR)/src/qt_professional.pri) {
+ QT_SOURCE_TREE = $(QTDIR)
+ include($(QTDIR)/src/qt_professional.pri)
+}
diff --git a/python/pyqt/pylupdate3/pylupdate.sbf b/python/pyqt/pylupdate3/pylupdate.sbf
new file mode 100644
index 00000000..ec501ab7
--- /dev/null
+++ b/python/pyqt/pylupdate3/pylupdate.sbf
@@ -0,0 +1,24 @@
+# This is the build file for pylupdate for Qt v3 Professional Edition.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+target = pylupdate
+sources = fetchtr.cpp main.cpp merge.cpp numberh.cpp sametexth.cpp metatranslator.cpp proparser.cpp
+headers = metatranslator.h proparser.h
diff --git a/python/pyqt/pylupdate3/sametexth.cpp b/python/pyqt/pylupdate3/sametexth.cpp
new file mode 100644
index 00000000..1ee869f2
--- /dev/null
+++ b/python/pyqt/pylupdate3/sametexth.cpp
@@ -0,0 +1,78 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** sametexth.cpp
+**
+** This file is part of Qt Linguist.
+**
+** See the file LICENSE included in the distribution for the usage
+** and distribution terms.
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qcstring.h>
+#include <qmap.h>
+
+#include <metatranslator.h>
+
+typedef QMap<QCString, MetaTranslatorMessage> TMM;
+typedef QValueList<MetaTranslatorMessage> TML;
+
+/*
+ Augments a MetaTranslator with trivially derived translations.
+
+ For example, if "Enabled:" is consistendly translated as "Eingeschaltet:" no
+ matter the context or the comment, "Eingeschaltet:" is added as the
+ translation of any untranslated "Enabled:" text and is marked Unfinished.
+*/
+
+void applySameTextHeuristic( MetaTranslator *tor, bool verbose )
+{
+ TMM translated, avoid;
+ TMM::Iterator t;
+ TML untranslated;
+ TML::Iterator u;
+ TML all = tor->messages();
+ TML::Iterator it;
+ int inserted = 0;
+
+ for ( it = all.begin(); it != all.end(); ++it ) {
+ if ( (*it).type() == MetaTranslatorMessage::Unfinished ) {
+ if ( (*it).translation().isEmpty() )
+ untranslated.append( *it );
+ } else {
+ QCString key = (*it).sourceText();
+ t = translated.find( key );
+ if ( t != translated.end() ) {
+ /*
+ The same source text is translated at least two
+ different ways. Do nothing then.
+ */
+ if ( (*t).translation() != (*it).translation() ) {
+ translated.remove( key );
+ avoid.insert( key, *it );
+ }
+ } else if ( !avoid.contains(key) ) {
+ translated.insert( key, *it );
+ }
+ }
+ }
+
+ for ( u = untranslated.begin(); u != untranslated.end(); ++u ) {
+ QCString key = (*u).sourceText();
+ t = translated.find( key );
+ if ( t != translated.end() ) {
+ MetaTranslatorMessage m( *u );
+ m.setTranslation( (*t).translation() );
+ tor->insert( m );
+ inserted++;
+ }
+ }
+ if ( verbose && inserted != 0 )
+ qWarning( " same-text heuristic provided %d translation%s",
+ inserted, inserted == 1 ? "" : "s" );
+}
diff --git a/python/pyqt/pyqtconfig.py.in b/python/pyqt/pyqtconfig.py.in
new file mode 100644
index 00000000..8a6558d2
--- /dev/null
+++ b/python/pyqt/pyqtconfig.py.in
@@ -0,0 +1,187 @@
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# This module is intended to be used by the configuration scripts of extension
+# modules that %Import PyQt modules.
+
+
+import sipconfig
+
+
+# These are installation specific values created when PyQt was configured.
+# @SIP_CONFIGURATION@
+
+
+class Configuration(sipconfig.Configuration):
+ """The class that represents PyQt configuration values.
+ """
+ def __init__(self, sub_cfg=None):
+ """Initialise an instance of the class.
+
+ sub_cfg is the list of sub-class configurations. It should be None
+ when called normally.
+ """
+ if sub_cfg:
+ cfg = sub_cfg
+ else:
+ cfg = []
+
+ cfg.append(_pkg_config)
+
+ sipconfig.Configuration.__init__(self, cfg)
+
+
+class QtModuleMakefile(sipconfig.SIPModuleMakefile):
+ """The Makefile class for modules that %Import qt.
+ """
+ def __init__(self, *args, **kw):
+ """Initialise an instance of a module Makefile.
+ """
+ kw["qt"] = 1
+ apply(sipconfig.SIPModuleMakefile.__init__, (self, ) + args, kw)
+
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ # Note that we don't use self.extra_lib_dirs because we don't want
+ # it to be added to the rpath.
+ self.LIBDIR.append(self.config.pyqt_mod_dir)
+ self.extra_libs.append(self.module_as_lib("qt"))
+
+ sipconfig.SIPModuleMakefile.finalise(self)
+
+
+class QtAxContainerModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtaxcontainer.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtaxcontainer"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtCanvasModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtcanvas.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtcanvas"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtExtModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtext.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtext"))
+
+ self.extra_defines.extend(self.config._pyqt_qscintilla_defines)
+ self.extra_include_dirs.append(self.config._pyqt_qscintilla_inc_dir)
+ self.extra_lib_dirs.append(self.config._pyqt_qscintilla_lib_dir)
+ self.extra_libs.append("qscintilla")
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtGLModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtgl.
+ """
+ def __init__(self, *args, **kw):
+ """Initialise an instance of a module Makefile.
+ """
+ kw["opengl"] = 1
+ apply(QtModuleMakefile.__init__, (self, ) + args, kw)
+
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtgl"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtNetworkModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtnetwork.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtnetwork"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtTableModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qttable.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qttable"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtSQLModuleMakefile(QtTableModuleMakefile):
+ """The Makefile class for modules that %Import qtsql.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtsql"))
+
+ QtTableModuleMakefile.finalise(self)
+
+
+class QtUIModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtui.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtui"))
+
+ QtModuleMakefile.finalise(self)
+
+
+class QtXMLModuleMakefile(QtModuleMakefile):
+ """The Makefile class for modules that %Import qtxml.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ if self.config.sip_version < 0x040000:
+ self.extra_libs.append(self.module_as_lib("qtxml"))
+
+ QtModuleMakefile.finalise(self)
diff --git a/python/pyqt/pyuic2/COPYING b/python/pyqt/pyuic2/COPYING
new file mode 100644
index 00000000..c7aea189
--- /dev/null
+++ b/python/pyqt/pyuic2/COPYING
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/python/pyqt/pyuic2/domtool.cpp b/python/pyqt/pyuic2/domtool.cpp
new file mode 100644
index 00000000..2b14ee6c
--- /dev/null
+++ b/python/pyqt/pyuic2/domtool.cpp
@@ -0,0 +1,260 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (C) 2000, 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "domtool.h"
+
+#include <qsizepolicy.h>
+#include <qpalette.h>
+#include <qcursor.h>
+#include <qrect.h>
+#include <qsize.h>
+#include <qfont.h>
+
+
+/*!
+ \class DomTool domtool.h
+ \brief Tools for the dom
+
+ A collection of static functions used by Resource (part of the
+ designer) and Uic.
+
+*/
+
+
+/*!
+ Returns the contents of property \a name of object \a e as
+ variant or the variant passed as \a defValue if the property does
+ not exist.
+
+ \sa hasProperty()
+ */
+QVariant DomTool::readProperty( const QDomElement& e, const QString& name, const QVariant& defValue )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ if ( prop == name )
+ return elementToVariant( n2.nextSibling().toElement(), defValue );
+ }
+ }
+ }
+ return defValue;
+}
+
+/*!
+ Returns wheter object \a e defines property \a name or not.
+
+ \sa readProperty()
+ */
+bool DomTool::hasProperty( const QDomElement& e, const QString& name )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ if ( prop == name )
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+QVariant DomTool::elementToVariant( const QDomElement& e, const QVariant& defValue )
+{
+ QString dummy;
+ return elementToVariant( e, defValue, dummy );
+}
+
+/*!
+ Interprets element \a e as variant and returns the result of the interpretation.
+ */
+QVariant DomTool::elementToVariant( const QDomElement& e, const QVariant& defValue, QString &comment )
+{
+ QVariant v;
+ if ( e.tagName() == "rect" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0, w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QRect( x, y, w, h ) );
+ } else if ( e.tagName() == "point" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QPoint( x, y ) );
+ } else if ( e.tagName() == "size" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QSize( w, h ) );
+ } else if ( e.tagName() == "color" ) {
+ v = QVariant( readColor( e ) );
+ } else if ( e.tagName() == "font" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QFont f( defValue.toFont() );
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "family" )
+ f.setFamily( n3.firstChild().toText().data() );
+ else if ( n3.tagName() == "pointsize" )
+ f.setPointSize( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "bold" )
+ f.setBold( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "italic" )
+ f.setItalic( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "underline" )
+ f.setUnderline( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "strikeout" )
+ f.setStrikeOut( n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( f );
+ } else if ( e.tagName() == "string" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ QDomElement n = e;
+ n = n.nextSibling().toElement();
+ if ( n.tagName() == "comment" )
+ comment = n.firstChild().toText().data();
+ } else if ( e.tagName() == "cstring" ) {
+ v = QVariant( QCString( e.firstChild().toText().data() ) );
+ } else if ( e.tagName() == "number" ) {
+ v = QVariant( e.firstChild().toText().data().toInt() );
+ } else if ( e.tagName() == "bool" ) {
+ QString t = e.firstChild().toText().data();
+ v = QVariant( t == "true" || t == "1", 0 );
+ } else if ( e.tagName() == "pixmap" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "iconset" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "image" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "enum" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "set" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "sizepolicy" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QSizePolicy sp;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hsizetype" )
+ sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "vsizetype" )
+ sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( sp );
+ } else if ( e.tagName() == "cursor" ) {
+ v = QVariant( QCursor( e.firstChild().toText().data().toInt() ) );
+ }
+
+ return v;
+}
+
+
+/*! Returns the color which is returned in the dom element \a e.
+ */
+
+QColor DomTool::readColor( const QDomElement &e )
+{
+ QDomElement n = e.firstChild().toElement();
+ int r= 0, g = 0, b = 0;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "red" )
+ r = n.firstChild().toText().data().toInt();
+ else if ( n.tagName() == "green" )
+ g = n.firstChild().toText().data().toInt();
+ else if ( n.tagName() == "blue" )
+ b = n.firstChild().toText().data().toInt();
+ n = n.nextSibling().toElement();
+ }
+
+ return QColor( r, g, b );
+}
+
+/*!
+ Returns the contents of attribute \a name of object \a e as
+ variant or the variant passed as \a defValue if the attribute does
+ not exist.
+
+ \sa hasAttribute()
+ */
+QVariant DomTool::readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "attribute" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ if ( prop == name )
+ return elementToVariant( n2.nextSibling().toElement(), defValue );
+ }
+ }
+ }
+ return defValue;
+}
+
+/*!
+ Returns wheter object \a e defines attribute \a name or not.
+
+ \sa readAttribute()
+ */
+bool DomTool::hasAttribute( const QDomElement& e, const QString& name )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "attribute" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ if ( prop == name )
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
diff --git a/python/pyqt/pyuic2/domtool.h b/python/pyqt/pyuic2/domtool.h
new file mode 100644
index 00000000..7230bce8
--- /dev/null
+++ b/python/pyqt/pyuic2/domtool.h
@@ -0,0 +1,41 @@
+/**********************************************************************
+** Copyright (C) 2000 Troll Tech AS. All rights reserved.
+** Copyright (C) 2000, 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+**
+** This file is part of Qt GUI Designer.
+**
+** This file may be distributed under the terms of the GNU General
+** Public License version 2 as published by the Free Software
+** Foundation and appearing in the file COPYING included in the
+** packaging of this file. If you did not get the file, send email
+** to info@trolltech.com
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#ifndef DOMTOOL_H
+#define DOMTOOL_H
+
+#include <qnamespace.h>
+#include <qvariant.h>
+#include <qdom.h>
+
+
+class DomTool : public Qt
+{
+public:
+ static QVariant readProperty( const QDomElement& e, const QString& name, const QVariant& defValue );
+ static bool hasProperty( const QDomElement& e, const QString& name );
+ static QVariant elementToVariant( const QDomElement& e, const QVariant& defValue );
+ static QVariant elementToVariant( const QDomElement& e, const QVariant& defValue, QString &comment );
+ static QVariant readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue );
+ static bool hasAttribute( const QDomElement& e, const QString& name );
+ static QColor readColor( const QDomElement &e );
+
+};
+
+
+#endif // DOMTOOL_H
diff --git a/python/pyqt/pyuic2/globaldefs.h b/python/pyqt/pyuic2/globaldefs.h
new file mode 100644
index 00000000..700f7d20
--- /dev/null
+++ b/python/pyqt/pyuic2/globaldefs.h
@@ -0,0 +1,33 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef GLOBALDEFS_H
+#define GLOBALDEFS_H
+
+#include <qcolor.h>
+
+#define BOXLAYOUT_DEFAULT_MARGIN 11
+#define BOXLAYOUT_DEFAULT_SPACING 6
+
+static QColor backColor1( 226, 244, 216 );
+static QColor backColor2( 235, 235, 235 );
+static QColor selectedBack( 192, 192, 192 );
+
+#endif
diff --git a/python/pyqt/pyuic2/pyuic.pro.in b/python/pyqt/pyuic2/pyuic.pro.in
new file mode 100644
index 00000000..8df15136
--- /dev/null
+++ b/python/pyqt/pyuic2/pyuic.pro.in
@@ -0,0 +1,24 @@
+# Copyright (c) 2000, 2001
+# Phil Thompson <phil@river-bank.demon.co.uk>
+# Copyright (c) 2002, 2003
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# The project file for pyuic for Qt v2.
+
+
+TEMPLATE = app
+CONFIG = qt console warn_on release
+INCLUDEPATH = @BLX_INCLUDEPATH@ $(QTDIR)/src/3rdparty/zlib
+DEFINES = UIC @BLX_DEFINES@
+
+DESTDIR = @PYQT_BINDIR@
+TARGET = pyuic
+
+HEADERS = domtool.h \
+ globaldefs.h \
+ uic.h \
+ widgetdatabase.h
+
+SOURCES = domtool.cpp \
+ uic.cpp \
+ widgetdatabase.cpp
diff --git a/python/pyqt/pyuic2/pyuic.sbf b/python/pyqt/pyuic2/pyuic.sbf
new file mode 100644
index 00000000..5d480ec6
--- /dev/null
+++ b/python/pyqt/pyuic2/pyuic.sbf
@@ -0,0 +1,24 @@
+# This is the build file for pyuic for Qt v2.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+target = pyuic
+sources = uic.cpp widgetdatabase.cpp domtool.cpp
+headers = uic.h widgetdatabase.h domtool.h globaldefs.h
diff --git a/python/pyqt/pyuic2/uic.cpp b/python/pyqt/pyuic2/uic.cpp
new file mode 100644
index 00000000..19fb0794
--- /dev/null
+++ b/python/pyqt/pyuic2/uic.cpp
@@ -0,0 +1,1601 @@
+// Copyright (c) 2000 - 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+
+/**********************************************************************
+** Copyright (C) 2000 Troll Tech AS. All rights reserved.
+**
+** This file is part of Qt GUI Designer.
+**
+** This file may be distributed under the terms of the GNU General
+** Public License version 2 as published by the Free Software
+** Foundation and appearing in the file COPYING included in the
+** packaging of this file. If you did not get the file, send email
+** to info@trolltech.com
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include <qapplication.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <qstringlist.h>
+#include <qstrlist.h>
+#include <qdatetime.h>
+#include <widgetdatabase.h>
+#include <domtool.h>
+#include <globaldefs.h>
+#include <qregexp.h>
+#include <zlib.h>
+
+static QString mkBool( bool b )
+{
+ return b? "1" : "0";
+}
+
+static QString mkBool( const QString& s )
+{
+ return mkBool( s == "true" || s == "1" );
+}
+
+static bool toBool( const QString& s )
+{
+ return s == "true" || s.toInt() != 0;
+}
+
+
+// fixString is only used in conjunction with tr(). We need to write out the
+// string in utf8 and make sure it's converted from utf8 when created.
+static QString fixString( const QString &str )
+{
+ QString s( str );
+ s.replace( QRegExp( "\\\\" ), "\\\\" );
+ s.replace( QRegExp( "\"" ), "\\\"" );
+ s.replace( QRegExp( "\n" ), "\\n\"\n\"" );
+ s.replace( QRegExp( "\r" ), "\\r" );
+
+ bool onlyAscii = TRUE;
+ unsigned int i;
+ for ( i = 0; i < s.length(); i++ ) {
+ if ( s.at(i).unicode() >= 0x80 ) {
+ onlyAscii = FALSE;
+ break;
+ }
+ }
+ if ( onlyAscii )
+ s = "\"" + s + "\"";
+ else
+ s = "QString.fromUtf8(\"" + s + "\")";
+ return s;
+}
+
+static QString mkStdSet( const QString& prop )
+{
+ return QString( "set" ) + prop[0].upper() + prop.mid(1);
+}
+
+
+/*!
+ \class Uic uic.h
+ \brief User Interface Compiler
+
+ The class Uic encapsulates the user interface compiler (uic).
+ */
+
+static QString className;
+
+Uic::Uic( QTextStream &outStream, QDomDocument doc, const QString &trm )
+ : out( outStream ), trmacro( trm )
+{
+ item_used = cg_used = pal_used = 0;
+
+ initIndent();
+
+ layouts << "hbox" << "vbox" << "grid";
+ tags = layouts;
+ tags << "widget";
+
+ nameOfClass = getClassName( doc.firstChild().toElement() );
+
+ QDomElement firstWidget = doc.firstChild().firstChild().toElement();
+ while ( firstWidget.tagName() != "widget" )
+ firstWidget = firstWidget.nextSibling().toElement();
+
+ if ( nameOfClass.isEmpty() )
+ nameOfClass = getObjectName( firstWidget );
+
+ // This is a hack.
+ className = nameOfClass;
+
+ createFormImpl( firstWidget );
+}
+
+
+/*! Extracts a class name from \a e
+ */
+QString Uic::getClassName( const QDomElement& e )
+{
+ QDomElement n;
+ QString cn;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "class" ) {
+ QString s = n.firstChild().toText().data();
+ int i;
+ while ( ( i = s.find(' ' )) != -1 )
+ s[i] = '_';
+ cn = s;
+ } else if ( n.tagName() == "pixmapfunction" ) {
+ pixmapLoaderFunction = n.firstChild().toText().data();
+ }
+ }
+ return cn;
+}
+
+/*! Extracts an object name from \a e. It's stored in the 'name'
+ property.
+ */
+QString Uic::getObjectName( const QDomElement& e )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" && n2.firstChild().toText().data() == "name" ) {
+ return n2.nextSibling().toElement().firstChild().toText().data();
+ }
+ }
+ }
+ return QString::null;
+}
+
+/*! Extracts an layout name from \a e. It's stored in the 'name'
+ property of the preceeding sibling (the first child of a QLayoutWidget).
+ */
+QString Uic::getLayoutName( const QDomElement& e )
+{
+ QDomElement p = e.parentNode().toElement();
+ QString tail = QString::null;
+
+ if (getClassName(p) != "QLayoutWidget")
+ tail = "Layout";
+
+ QDomElement n;
+ for ( n = p.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" && n2.firstChild().toText().data() == "name" ) {
+ return n2.nextSibling().toElement().firstChild().toText().data() + tail;
+ }
+ }
+ }
+ return e.tagName();
+}
+
+QByteArray unzipXPM( QString data, ulong& length )
+{
+ char *ba = new char[ data.length() / 2 ];
+ for ( int i = 0; i < (int)data.length() / 2; ++i ) {
+ char h = data[ 2 * i ].latin1();
+ char l = data[ 2 * i + 1 ].latin1();
+ uchar r = 0;
+ if ( h <= '9' )
+ r += h - '0';
+ else
+ r += h - 'a' + 10;
+ r = r << 4;
+ if ( l <= '9' )
+ r += l - '0';
+ else
+ r += l - 'a' + 10;
+ ba[ i ] = r;
+ }
+ if ( length < data.length() * 5 )
+ length = data.length() * 5;
+ QByteArray baunzip( length );
+ ::uncompress( (uchar*) baunzip.data(), &length, (uchar*) ba, data.length()/2 );
+ return baunzip;
+}
+
+
+/*!
+ Creates an implementation ( cpp-file ) for the form given in \a e
+
+ \sa createFormDecl(), createObjectImpl()
+ */
+void Uic::createFormImpl( const QDomElement &e )
+{
+ QStringList::Iterator it;
+ QDomElement n;
+ QDomNodeList nl;
+ int i;
+ QString objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return;
+ QString objName = getObjectName( e );
+
+ // Handle custom widgets.
+ for (n = e; !n.isNull(); n = n.nextSibling().toElement())
+ {
+ if (n.tagName() != "customwidgets")
+ continue;
+
+ QDomElement n2 = n.firstChild().toElement();
+
+ while (!n2.isNull())
+ {
+ if (n2.tagName() == "customwidget")
+ {
+ QDomElement n3 = n2.firstChild().toElement();
+ QString cname, header;
+
+ while (!n3.isNull())
+ {
+ if (n3.tagName() == "class")
+ cname = n3.firstChild().toText().data();
+ else if (n3.tagName() == "header")
+ header = n3.firstChild().toText().data();
+
+ n3 = n3.nextSibling().toElement();
+ }
+
+ if (cname.isEmpty())
+ cname = "UnnamedCustomClass";
+
+ int ext = header.findRev('.');
+
+ if (ext >= 0)
+ header.truncate(ext);
+
+ if (header.isEmpty())
+ header = cname.lower();
+
+ out << "from " << header << " import " << cname << endl;
+ }
+
+ n2 = n2.nextSibling().toElement();
+ }
+ }
+
+ // find out what images are required
+ QStringList requiredImages;
+ nl = e.elementsByTagName( "pixmap" );
+ for ( int j = 0; j < (int) nl.length(); j++ ) {
+ requiredImages += nl.item(j).firstChild().toText().data();
+ }
+
+ QStringList images;
+ QStringList xpmImages;
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ // create images
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "images" ) {
+ nl = n.elementsByTagName( "image" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement tmp = nl.item(i).firstChild().toElement();
+ QString img = registerObject( tmp.firstChild().toText().data() );
+ if ( !requiredImages.contains( img ) )
+ continue;
+ tmp = tmp.nextSibling().toElement();
+ QString format = tmp.attribute("format", "PNG" );
+ QString data = tmp.firstChild().toText().data();
+
+ out << endl;
+ out << endl;
+
+ if ( format == "XPM.GZ" ) {
+ xpmImages += img;
+ ulong length = tmp.attribute("length").toULong();
+ QByteArray baunzip = unzipXPM( data, length );
+ int a = 0;
+ out << indent << img << "_data = [" << endl;
+ while ( baunzip[a] != '\"' )
+ a++;
+ for ( ; a < (int) length; a++ )
+ {
+ char ch;
+
+ if ((ch = baunzip[a]) == '}')
+ {
+ out << endl << "]" << endl;
+ break;
+ }
+
+ if (ch == '\"')
+ ch = '\'';
+
+ out << ch;
+ }
+ } else {
+ images += img;
+ out << indent << img << "_data = \\" << endl;
+ pushIndent();
+ out << indent << "'";
+ int a ;
+ for ( a = 0; a < (int) (data.length()/2)-1; a++ ) {
+ out << "\\x" << QString(data[2*a]) << QString(data[2*a+1]);
+ if ( a % 12 == 11 )
+ out << "' \\" << endl << indent << "'";
+ }
+ out << "\\x" << QString(data[2*a]) << QString(data[2*a+1]) << "'" << endl;
+ popIndent();
+ }
+ }
+ }
+ }
+ }
+
+ // register the object and unify its name
+ objName = registerObject( objName );
+
+
+ // constructor
+
+ out << endl;
+ out << endl;
+ out << indent << "class " << nameOfClass << "(" << objClass << "):" << endl;
+ pushIndent();
+
+ if ( objClass == "QDialog" || objClass == "QWizard" ) {
+ out << indent << "def __init__(self,parent = None,name = None,modal = 0,fl = 0):" << endl;
+ pushIndent();
+ out << indent << objClass << ".__init__(self,parent,name,modal,fl)" << endl;
+ } else if ( objClass == "QWidget" ) { // standard QWidget
+ out << indent << "def __init__(self,parent = None,name = None,fl = 0):" << endl;
+ pushIndent();
+ out << indent << objClass << ".__init__(self,parent,name,fl)" << endl;
+ } else {
+ out << indent << "def __init__(self,parent = None,name = None):" << endl;
+ pushIndent();
+ out << indent << objClass << ".__init__(self,parent,name)" << endl;
+ }
+
+ out << endl;
+
+ // create pixmaps for all images
+ if ( !images.isEmpty() ) {
+ QStringList::Iterator it;
+ for ( it = images.begin(); it != images.end(); ++it ) {
+ out << indent << (*it) << " = QPixmap()" << endl;
+ out << indent << (*it) << ".loadFromData(" << (*it) << "_data,'PNG')" << endl;
+ }
+
+ out << endl;
+ }
+ // create pixmaps for all images
+ if ( !xpmImages.isEmpty() ) {
+ for ( it = xpmImages.begin(); it != xpmImages.end(); ++it ) {
+ out << indent << (*it) << " = QPixmap(" << (*it) << "_data)" << endl;
+ }
+
+ out << endl;
+ }
+
+
+ // set the properties
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = toBool( n.attribute( "stdset" ) );
+ QDomElement n2 = n.firstChild().toElement();
+
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ QString value = setObjectProperty( objClass, QString::null, prop, n2.nextSibling().toElement(), stdset );
+
+ if ( value.isEmpty() )
+ continue;
+
+ if ( prop == "name" ) {
+ out << indent << "if name == None:" << endl;
+ pushIndent();
+ }
+
+ out << indent;
+
+ if ( prop == "geometry" && n2.nextSibling().toElement().tagName() == "rect") {
+ QDomElement n3 = n2.nextSibling().toElement().firstChild().toElement();
+ int w = 0, h = 0;
+
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+
+ out << "self.resize(" << w << "," << h << ")" << endl;
+ } else {
+ if ( stdset )
+ out << "self." << mkStdSet(prop) << "(" << value << ")" << endl;
+ else
+ out << "self.setProperty('" << prop << "',QVariant(" << value << "))" << endl;
+ }
+
+ if (prop == "name") {
+ popIndent();
+ out << endl;
+ }
+ }
+ }
+ }
+
+
+ // create all children, some forms have special requirements
+
+ if ( objClass == "QWizard" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, "self" );
+ QString label = DomTool::readAttribute( n, "title", "" ).toString();
+ out << indent << "self.addPage(" << page << ","<< trmacro << "(" << fixString( label ) << "))" << endl;
+ QVariant def( FALSE, 0 );
+ if ( DomTool::hasAttribute( n, "backEnabled" ) )
+ out << indent << "self.setBackEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "backEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "nextEnabled" ) )
+ out << indent << "self.setNextEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "nextEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "finishEnabled" ) )
+ out << indent << "self.setFinishEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "finishEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "helpEnabled" ) )
+ out << indent << "self.setHelpEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "helpEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "finish" ) )
+ out << indent << "self.setFinish(" << page << "," << mkBool( DomTool::readAttribute( n, "finish", def).toBool() ) << ")" << endl;
+ }
+ }
+ } else { // standard widgets
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) )
+ createObjectImpl( n, objName, "self" );
+ }
+ }
+
+ // Get the list of any user defined slots.
+
+ QStringList userSlots;
+
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "connections" ) {
+ for ( QDomElement n2 = n.firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "slot" ) {
+ userSlots += n2.firstChild().toText().data();
+ }
+ }
+ }
+ }
+
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "connections" ) {
+ // setup signals and slots connections
+ out << endl;
+ nl = n.elementsByTagName( "connection" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QString sender, receiver, signal, slot;
+ for ( QDomElement n2 = nl.item(i).firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "sender" )
+ sender = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "receiver" )
+ receiver = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "signal" )
+ signal = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "slot" )
+ slot = n2.firstChild().toText().data();
+ }
+ if ( sender.isEmpty() || receiver.isEmpty() || signal.isEmpty() || slot.isEmpty() )
+ continue;
+
+ sender = registeredName( sender );
+ receiver = registeredName( receiver );
+
+ // translate formwindow name to "self"
+ if ( sender == objName )
+ sender = "self";
+ else
+ sender = "self." + sender;
+ if ( receiver == objName )
+ receiver = "self";
+ else
+ receiver = "self." + receiver;
+
+ // Note that we never use the SLOT() macro in case we have
+ // custom widgets implemented in Python.
+ out << indent << "self.connect(" << sender
+ << ",SIGNAL('" << signal << "'),self."
+ << slot.left(slot.find('(')) << ")" << endl;
+ }
+ } else if ( n.tagName() == "tabstops" ) {
+ // setup tab order
+ out << endl;
+ QString lastName;
+ QDomElement n2 = n.firstChild().toElement();
+ while ( !n2.isNull() ) {
+ if ( n2.tagName() == "tabstop" ) {
+ QString name = n2.firstChild().toText().data();
+ name = registeredName( name );
+ if ( !lastName.isEmpty() )
+ out << indent << "self.setTabOrder(self." << lastName << ",self." << name << ")" << endl;
+ lastName = name;
+ }
+ n2 = n2.nextSibling().toElement();
+ }
+ }
+ }
+
+
+ // buddies
+ bool firstBuddy = TRUE;
+ for ( QValueList<Buddy>::Iterator buddy = buddies.begin(); buddy != buddies.end(); ++buddy ) {
+ if ( isObjectRegistered( (*buddy).buddy ) ) {
+ if ( firstBuddy ) {
+ out << endl;
+ }
+ out << indent << "self." << (*buddy).key << ".setBuddy(self." << registeredName( (*buddy).buddy ) << ")" << endl;
+ firstBuddy = FALSE;
+ }
+
+ }
+
+ // end of constructor
+ popIndent();
+
+ // handle application font changes if required
+ nl = e.elementsByTagName( "widget" );
+ bool needEventHandler = FALSE;
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ if ( DomTool::hasProperty( nl.item(i).toElement() , "font" ) ) {
+ needEventHandler = TRUE;
+ break;
+ }
+ }
+ if ( needEventHandler ) {
+ out << endl;
+ out << indent << "def event(self,ev):" << endl;
+ pushIndent();
+ out << indent << "ret = " << objClass << ".event(self,ev)" << endl;
+ out << endl;
+ out << indent << "if ev.type() == QEvent.ApplicationFontChange:" << endl;
+ pushIndent();
+
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ n = nl.item(i).toElement();
+ if ( DomTool::hasProperty( n, "font" ) )
+ createExclusiveProperty( n, "font" );
+ }
+
+ out << endl;
+ popIndent();
+ out << indent << "return ret" << endl;
+ popIndent();
+ }
+
+
+ // Generate user defined slot hooks.
+
+ for (it = userSlots.begin(); it != userSlots.end(); ++it) {
+ int astart = (*it).find('(');
+
+ out << endl;
+ out << indent << "def " << (*it).left(astart) << "(self";
+
+ // We don't reproduce the argument names (if any) because we would have
+ // to remove the types - too complicated for the moment, so we just
+ // count them and give them names based on their position.
+
+ QString args = (*it).mid(astart + 1,(*it).find(')') - astart - 1).stripWhiteSpace();
+
+ if (!args.isEmpty()) {
+ int nrargs = args.contains(',') + 1;
+
+ for (int i = 0; i < nrargs; ++i)
+ out << ",a" << i;
+ }
+
+ out << "):" << endl;
+ pushIndent();
+ out << indent << "print '" << nameOfClass << "." << *it << ": not implemented yet'" << endl;
+ popIndent();
+ }
+
+ popIndent();
+}
+
+
+/*!
+ Creates an implementation for the object given in \a e.
+
+ Traverses recursively over all children.
+
+ Returns the name of the generated child object.
+
+ \sa createObjectDecl()
+ */
+QString Uic::createObjectImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout )
+{
+
+ QDomElement n;
+ QString objClass, objName, fullObjName;
+
+ if ( layouts.contains( e.tagName() ) )
+ return createLayoutImpl( e, parentClass, parent, layout );
+
+ objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return objName;
+ objName = getObjectName( e );
+
+ QString definedName = objName;
+ bool isTmpObject = objName.isEmpty() || objClass == "QLayoutWidget";
+ if ( isTmpObject ) {
+ if ( objClass[0] == 'Q' )
+ objName = objClass.mid(1);
+ else
+ objName = objClass.lower();
+ }
+
+ bool isLine = objClass == "Line";
+ if ( isLine )
+ objClass = "QFrame";
+
+ out << endl;
+ if ( objClass == "QLayoutWidget" ) {
+ if ( layout.isEmpty() ) {
+ // register the object and unify its name
+ objName = registerObject( objName );
+ out << indent << objName << " = QWidget(" << parent << ",'" << definedName << "')" << endl;
+ } else {
+ // the layout widget is not necessary, hide it by creating its child in the parent
+ QString result;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if (tags.contains( n.tagName() ) )
+ result = createObjectImpl( n, parentClass, parent, layout );
+ }
+ return result;
+ }
+
+ // Layouts don't go into the class instance dictionary.
+ fullObjName = objName;
+ } else {
+ // register the object and unify its name
+ objName = registerObject( objName );
+
+ // Temporary objects don't go into the class instance dictionary.
+ fullObjName = isTmpObject ? objName : "self." + objName;
+
+ out << indent << fullObjName << " = " << createObjectInstance( objClass, parent, objName ) << endl;
+ }
+
+ lastItem = "None";
+ // set the properties and insert items
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = toBool( n.attribute( "stdset" ) );
+ QDomElement n2 = n.firstChild().toElement();
+
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ QString value = setObjectProperty( objClass, objName, prop, n2.nextSibling().toElement(), stdset );
+
+ if ( value.isEmpty() )
+ continue;
+ if ( prop == "name" )
+ continue;
+ if ( prop == "buddy" && value[0] == '\'' && value[(int)value.length()-1] == '\'' ) {
+ buddies << Buddy( objName, value.mid(1, value.length() - 2 ) );
+ continue;
+ }
+ if ( isLine && prop == "orientation" ) {
+ prop = "frameStyle";
+ if ( value.right(10) == "Horizontal" )
+ value = "QFrame.HLine | QFrame.Sunken";
+ else
+ value = "QFrame.VLine | QFrame.Sunken";
+ }
+ if ( prop == "buttonGroupId" ) {
+ if ( parentClass == "QButtonGroup" )
+ out << indent << parent << ".insert(" << fullObjName << "," << value << ")" << endl;
+ continue;
+ }
+ if ( prop == "geometry") {
+ out << indent << fullObjName << ".setGeometry(" << value << ")" << endl;
+ } else {
+ if ( stdset )
+ out << indent << fullObjName << "." << mkStdSet(prop) << "(" << value << ")" << endl;
+ else
+ out << indent << fullObjName << ".setProperty('" << prop << "',QVariant(" << value << "))" << endl;
+ }
+
+ }
+ } else if ( n.tagName() == "item" ) {
+ if ( objClass.mid(1) == "ListBox" ) {
+ QString s = createListBoxItemImpl( n, fullObjName );
+ if ( !s.isEmpty() )
+ out << indent << s << endl;
+ } else if ( objClass.mid(1) == "ComboBox" ) {
+ QString s = createListBoxItemImpl( n, fullObjName );
+ if ( !s.isEmpty() )
+ out << indent << s << endl;
+ } else if ( objClass.mid(1) == "IconView" ) {
+ QString s = createIconViewItemImpl( n, fullObjName );
+ if ( !s.isEmpty() )
+ out << indent << s << endl;
+ } else if ( objClass.mid(1) == "ListView" ) {
+ QString s = createListViewItemImpl( n, fullObjName, QString::null );
+ if ( !s.isEmpty() )
+ out << s << endl;
+ }
+ } else if ( n.tagName() == "column" ) {
+ if ( objClass.mid(1) == "ListView" ) {
+ QString s = createListViewColumnImpl( n, fullObjName );
+ if ( !s.isEmpty() )
+ out << s;
+ }
+ }
+ }
+
+ // create all children, some widgets have special requirements
+
+ if ( objClass == "QTabWidget" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, fullObjName );
+ QString label = DomTool::readAttribute( n, "title", "" ).toString();
+ out << indent << fullObjName << ".insertTab(" << page << "," << trmacro << "(" << fixString( label ) << "))" << endl;
+ }
+ }
+ } else { // standard widgets
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) )
+ createObjectImpl( n, objClass, fullObjName );
+ }
+ }
+
+ return fullObjName;
+}
+
+/*!
+ Creates implementation of an listbox item tag.
+*/
+
+QString Uic::createListBoxItemImpl( const QDomElement &e, const QString &parent )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString pix;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString attrib = n2.firstChild().toText().data();
+ QVariant v = DomTool::elementToVariant( n2.nextSibling().toElement(), QVariant() );
+ if ( attrib == "text" )
+ txt = v.toString();
+ else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() && !pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( pixmapLoaderFunction + "(" );
+ pix.append( ")" );
+ }
+ }
+ }
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ return pix.isEmpty() ?
+ parent + ".insertItem(" + trmacro + "(" + fixString( txt ) + "))":
+ parent + ".insertItem(" + pix + "," + trmacro + "(" + fixString( txt ) + "))";
+}
+
+/*!
+ Creates implementation of an iconview item tag.
+*/
+
+QString Uic::createIconViewItemImpl( const QDomElement &e, const QString &parent )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString pix;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString attrib = n2.firstChild().toText().data();
+ QVariant v = DomTool::elementToVariant( n2.nextSibling().toElement(), QVariant() );
+ if ( attrib == "text" )
+ txt = v.toString();
+ else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() && !pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( pixmapLoaderFunction + "( " );
+ pix.append( " )" );
+ }
+ }
+ }
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ if ( pix.isEmpty() )
+ return "QIconViewItem(" + parent + "," + trmacro + "(" + fixString( txt ) + "))";
+ return "QIconViewItem(" + parent + "," + trmacro + "(" + fixString( txt ) + ")," + pix + ")";
+
+}
+
+/*!
+ Creates implementation of an listview item tag.
+*/
+
+QString Uic::createListViewItemImpl( const QDomElement &e, const QString &parent,
+ const QString &parentItem )
+{
+ QString s;
+
+ QDomElement n = e.firstChild().toElement();
+
+ bool hasChildren = e.elementsByTagName( "item" ).count() > 0;
+ QString item;
+
+ if ( hasChildren ) {
+ item = registerObject( "item" );
+ s = indent + item + " = ";
+ } else {
+ item = "item";
+ if ( item_used )
+ s = indent + item + " = ";
+ else
+ s = indent + item + " = ";
+ item_used = TRUE;
+ }
+
+ if ( !parentItem.isEmpty() )
+ s += "QListViewItem(" + parentItem + "," + lastItem + ")\n";
+ else
+ s += "QListViewItem(" + parent + "," + lastItem + ")\n";
+
+ QStringList textes;
+ QStringList pixmaps;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString attrib = n2.firstChild().toText().data();
+ QVariant v = DomTool::elementToVariant( n2.nextSibling().toElement(), QVariant() );
+ if ( attrib == "text" )
+ textes << v.toString();
+ else if ( attrib == "pixmap" ) {
+ QString pix = v.toString();
+ if ( !pix.isEmpty() && !pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( pixmapLoaderFunction + "( " );
+ pix.append( " )" );
+ }
+ pixmaps << pix;
+ }
+ }
+ } else if ( n.tagName() == "item" ) {
+ s += indent + item + ".setOpen(1)\n";
+ s += createListViewItemImpl( n, parent, item );
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ for ( int i = 0; i < (int)textes.count(); ++i ) {
+ if ( !textes[ i ].isEmpty() )
+ s += indent + item + ".setText(" + QString::number( i ) + "," + trmacro + "(" + fixString( textes[ i ] ) + "))\n";
+ if ( !pixmaps[ i ].isEmpty() )
+ s += indent + item + ".setPixmap(" + QString::number( i ) + "," + pixmaps[ i ] + ")\n";
+ }
+
+ lastItem = item;
+ return s;
+}
+
+/*!
+ Creates implementation of an listview column tag.
+*/
+
+QString Uic::createListViewColumnImpl( const QDomElement &e, const QString &parent )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString pix;
+ bool clickable = FALSE, resizeable = FALSE;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString attrib = n2.firstChild().toText().data();
+ QVariant v = DomTool::elementToVariant( n2.nextSibling().toElement(), QVariant() );
+ if ( attrib == "text" )
+ txt = v.toString();
+ else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() && !pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( pixmapLoaderFunction + "( " );
+ pix.append( " )" );
+ }
+ } else if ( attrib == "clickable" )
+ clickable = v.toBool();
+ else if ( attrib == "resizeable" )
+ resizeable = v.toBool();
+ }
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ QString s;
+ s = indent + parent + ".addColumn(" + trmacro + "(" + fixString( txt ) + "))\n";
+ if ( !pix.isEmpty() )
+ s += indent + parent + ".header().setLabel(" + parent + ".header().count() - 1," + pix + "," + trmacro + "(" + fixString( txt ) + "))\n";
+ if ( !clickable )
+ s += indent + parent + ".header().setClickEnabled(0," + parent + ".header().count() - 1)\n";
+ if ( !resizeable )
+ s += indent + parent + ".header().setResizeEnabled(0," + parent + ".header().count() - 1)\n";
+
+ return s;
+}
+
+/*!
+ Creates the implementation of a layout tag. Called from createObjectImpl().
+ */
+QString Uic::createLayoutImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout )
+{
+ QDomElement n;
+ QString objClass, objName;
+ objClass = e.tagName();
+
+ QString qlayout = "QVBoxLayout";
+ if ( objClass == "hbox" )
+ qlayout = "QHBoxLayout";
+ else if ( objClass == "grid" )
+ qlayout = "QGridLayout";
+
+ bool isGrid = e.tagName() == "grid" ;
+ objName = registerObject( getLayoutName( e ) );
+ layoutObjects += objName;
+ int margin = DomTool::readProperty( e, "margin", BOXLAYOUT_DEFAULT_MARGIN ).toInt();
+ int spacing = DomTool::readProperty( e, "spacing", BOXLAYOUT_DEFAULT_SPACING ).toInt();
+
+ if ( (parentClass == "QGroupBox" || parentClass == "QButtonGroup") && layout.isEmpty() ) {
+ // special case for group box
+ out << indent << parent << ".setColumnLayout(0,Qt.Vertical)" << endl;
+ out << indent << parent << ".layout().setSpacing(0)" << endl;
+ out << indent << parent << ".layout().setMargin(0)" << endl;
+ out << indent << objName << " = " << qlayout << "(" << parent << ".layout())" << endl;
+ out << indent << objName << ".setAlignment(Qt.AlignTop)" << endl;
+ } else {
+ if ( layout.isEmpty() )
+ out << indent << objName << " = " << qlayout << "(" << parent << ")" << endl;
+ else
+ out << indent << objName << " = " << qlayout << "()" << endl;
+ }
+
+ out << indent << objName << ".setSpacing(" << spacing << ")" << endl;
+ out << indent << objName << ".setMargin(" << margin << ")" << endl;
+
+ if ( !isGrid ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "spacer" ) {
+ QString child = createSpacerImpl( n, parentClass, parent, objName );
+ out << indent << objName << ".addItem(" << child << ")" << endl;
+ } else if ( tags.contains( n.tagName() ) ) {
+ QString child = createObjectImpl( n, parentClass, parent, objName );
+ if ( isLayout( child ) )
+ out << indent << objName << ".addLayout(" << child << ")" << endl;
+ else
+ out << indent << objName << ".addWidget(" << child << ")" << endl;
+ }
+ }
+ } else {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ QDomElement ae = n;
+ int row = ae.attribute( "row" ).toInt();
+ int col = ae.attribute( "column" ).toInt();
+ int rowspan = ae.attribute( "rowspan" ).toInt();
+ int colspan = ae.attribute( "colspan" ).toInt();
+ if ( rowspan < 1 )
+ rowspan = 1;
+ if ( colspan < 1 )
+ colspan = 1;
+ if ( n.tagName() == "spacer" ) {
+ QString child = createSpacerImpl( n, parentClass, parent, objName );
+ if ( rowspan * colspan != 1 )
+ out << indent << objName << ".addMultiCell(" << child << ","
+ << row << "," << row + rowspan - 1 << "," << col << ","
+ << col + colspan - 1 << ")" << endl;
+ else
+ out << indent << objName << ".addItem(" << child << ","
+ << row << "," << col << ")" << endl;
+ } else if ( tags.contains( n.tagName() ) ) {
+ QString child = createObjectImpl( n, parentClass, parent, objName );
+ out << endl;
+ QString o = "Widget";
+ if ( isLayout( child ) )
+ o = "Layout";
+ if ( rowspan * colspan != 1 )
+ out << indent << objName << ".addMultiCell" << o << "(" << child << ","
+ << row << "," << row + rowspan - 1 << "," << col << "," << col + colspan - 1 << ")" << endl;
+ else
+ out << indent << objName << ".add" << o << "(" << child << ","
+ << row << "," << col << ")" << endl;
+ }
+ }
+ }
+
+ return objName;
+}
+
+
+
+QString Uic::createSpacerImpl( const QDomElement &e, const QString& /*parentClass*/, const QString& /*parent*/, const QString& /*layout*/)
+{
+ QDomElement n;
+ QString objClass, objName;
+ objClass = e.tagName();
+ objName = registerObject( "spacer" );
+
+ QSize size = DomTool::readProperty( e, "sizeHint", QSize(0,0) ).toSize();
+ QString sizeType = DomTool::readProperty( e, "sizeType", "Expanding" ).toString();
+ bool isVspacer = DomTool::readProperty( e, "orientation", "Horizontal" ) == "Vertical";
+
+ if ( sizeType != "Expanding" && sizeType != "MinimumExpanding" &&
+ DomTool::hasProperty( e, "geometry" ) ) { // compatibility Qt 2.2
+ QRect geom = DomTool::readProperty( e, "geometry", QRect(0,0,0,0) ).toRect();
+ size = geom.size();
+ }
+
+ if ( isVspacer )
+ out << indent << objName << " = QSpacerItem("
+ << size.width() << "," << size.height()
+ << ",QSizePolicy.Minimum,QSizePolicy." << sizeType << ")" << endl;
+ else
+ out << indent << objName << " = QSpacerItem("
+ << size.width() << "," << size.height()
+ << ",QSizePolicy." << sizeType << ",QSizePolicy.Minimum)" << endl;
+
+ return objName;
+}
+
+/*!
+ Creates a set-call for property \a exclusiveProp of the object
+ given in \a e.
+
+ If the object does not have this property, the function does nothing.
+
+ Exclusive properties are used to generate the implementation of
+ application font or palette change handlers in createFormImpl().
+
+ */
+void Uic::createExclusiveProperty( const QDomElement & e, const QString& exclusiveProp )
+{
+ QDomElement n;
+ QString objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return;
+ QString objName = getObjectName( e );
+ if ( objClass.isEmpty() )
+ return;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = toBool( n.attribute( "stdset" ) );
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ QString prop = n2.firstChild().toText().data();
+ if ( prop != exclusiveProp )
+ continue;
+ QString value = setObjectProperty( objClass, objName, prop, n2.nextSibling().toElement(), stdset );
+ if ( value.isEmpty() )
+ continue;
+ out << indent << objName << ".setProperty('" << prop << "',QVariant(" << value << "))" << endl;
+ }
+ }
+ }
+
+}
+
+
+const char* const ColorRole[] = {
+ "Foreground", "Button", "Light", "Midlight", "Dark", "Mid",
+ "Text", "BrightText", "ButtonText", "Base", "Background", "Shadow",
+ "Highlight", "HighlightedText", 0
+};
+
+
+/*!
+ Attention: this function has to be in sync with Resource::setWidgetProperty(). If you change one, change both.
+ */
+QString Uic::setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset )
+{
+ QString v;
+ if ( e.tagName() == "rect" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0, w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QRect(%1,%2,%3,%4)";
+ v = v.arg(x).arg(y).arg(w).arg(h);
+
+ } else if ( e.tagName() == "point" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QPoint(%1,%2)";
+ v = v.arg(x).arg(y);
+ } else if ( e.tagName() == "size" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QSize(%1,%2)";
+ v = v.arg(w).arg(h);
+ } else if ( e.tagName() == "color" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int r= 0, g = 0, b = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "red" )
+ r = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "green" )
+ g = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "blue" )
+ b = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QColor(%1,%2,%3)";
+ v = v.arg(r).arg(g).arg(b);
+ } else if ( e.tagName() == "font" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QString fontname = "f";
+ if ( !obj.isEmpty() ) {
+ fontname = obj + "_font";
+ out << indent << fontname << " = QFont(self." << obj << ".font())" << endl;
+ } else {
+ out << indent << fontname << " = QFont(self.font())" << endl;
+ }
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "family" )
+ out << indent << fontname << ".setFamily('" << n3.firstChild().toText().data() << "')" << endl;
+ else if ( n3.tagName() == "pointsize" )
+ out << indent << fontname << ".setPointSize(" << n3.firstChild().toText().data() << ")" << endl;
+ else if ( n3.tagName() == "bold" )
+ out << indent << fontname << ".setBold(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "italic" )
+ out << indent << fontname << ".setItalic(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "underline" )
+ out << indent << fontname << ".setUnderline(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "strikeout" )
+ out << indent << fontname << ".setStrikeOut(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ n3 = n3.nextSibling().toElement();
+ }
+
+ if ( prop == "font" ) {
+ if ( !obj.isEmpty() )
+ out << indent << "self." << obj << ".setFont(" << fontname << ")" << endl;
+ else
+ out << indent << "self.setFont(" << fontname << ")" << endl;
+ } else {
+ v = fontname;
+ }
+ } else if ( e.tagName() == "string" ) {
+ if ( prop == "toolTip" ) {
+ if ( !obj.isEmpty() )
+ out << indent << "QToolTip.add(self." << obj << "," + trmacro + "(" << fixString( e.firstChild().toText().data() ) << "))" << endl;
+ else
+ out << indent << "QToolTip.add(self," + trmacro + "(" << fixString( e.firstChild().toText().data() ) << "))" << endl;
+ } else if ( prop == "whatsThis" ) {
+ if ( !obj.isEmpty() )
+ out << indent << "QWhatsThis.add(self." << obj << "," << trmacro << "(" << fixString( e.firstChild().toText().data() ) << "))" << endl;
+ else
+ out << indent << "QWhatsThis.add(self," << trmacro << "(" << fixString( e.firstChild().toText().data() ) << "))" << endl;
+ } else {
+ v = trmacro + "(%1)";
+ v = v.arg( fixString( e.firstChild().toText().data() ) );
+ }
+ } else if ( e.tagName() == "cstring" ) {
+ v = "'%1'";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "number" ) {
+ v = "%1";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "bool" ) {
+ if ( stdset )
+ v = "%1";
+ else
+ v = "%1,0";
+ v = v.arg( mkBool( e.firstChild().toText().data() ) );
+ } else if ( e.tagName() == "pixmap" ) {
+ v = e.firstChild().toText().data();
+ if ( !pixmapLoaderFunction.isEmpty() ) {
+ v.prepend( pixmapLoaderFunction + "( " );
+ v.append( " )" );
+ }
+ } else if ( e.tagName() == "iconset" ) {
+ v = "QIconSet(%1)";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "image" ) {
+ v = e.firstChild().toText().data() + ".convertToImage()";
+ } else if ( e.tagName() == "enum" ) {
+ v = "%1.%2";
+ QString oc = objClass;
+ QString ev = e.firstChild().toText().data();
+ if ( oc == "QListView" && ev == "Manual" ) // #### workaround, rename QListView::Manual of WithMode enum in 3.0
+ oc = "QScrollView";
+ v = v.arg( oc ).arg( ev );
+ } else if ( e.tagName() == "set" ) {
+ QString keys( e.firstChild().toText().data() );
+ QStringList lst = QStringList::split( '|', keys );
+ v = "";
+ for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
+ v += objClass + "." + *it;
+ if ( it != lst.fromLast() )
+ v += " | ";
+ }
+ } else if ( e.tagName() == "sizepolicy" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QSizePolicy sp;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hsizetype" )
+ sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "vsizetype" )
+ sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ QString tmp;
+ if ( !obj.isEmpty() )
+ tmp = "self." + obj;
+ else
+ tmp = "self";
+ v = "QSizePolicy(%1,%2," + tmp + ".sizePolicy().hasHeightForWidth())";
+ v = v.arg( (int)sp.horData() ).arg( (int)sp.verData() );
+ } else if ( e.tagName() == "palette" ) {
+ QPalette pal;
+ bool no_pixmaps = e.elementsByTagName( "pixmap" ).count() == 0;
+ QDomElement n;
+ if ( no_pixmaps ) {
+ n = e.firstChild().toElement();
+ while ( !n.isNull() ) {
+ QColorGroup cg;
+ if ( n.tagName() == "active" ) {
+ cg = loadColorGroup( n );
+ pal.setActive( cg );
+ } else if ( n.tagName() == "inactive" ) {
+ cg = loadColorGroup( n );
+ pal.setInactive( cg );
+ } else if ( n.tagName() == "disabled" ) {
+ cg = loadColorGroup( n );
+ pal.setDisabled( cg );
+ }
+ n = n.nextSibling().toElement();
+ }
+ }
+ if ( no_pixmaps && pal == QPalette( pal.active().button(), pal.active().background() ) ) {
+ v = "QPalette(QColor(%1,%2,%3),QColor(%1,%2,%3))";
+ v = v.arg( pal.active().button().red() ).arg( pal.active().button().green() ).arg( pal.active().button().blue() );
+ v = v.arg( pal.active().background().red() ).arg( pal.active().background().green() ).arg( pal.active().background().blue() );
+ } else {
+ QString palette = "pal";
+ if ( !pal_used ) {
+ out << indent << palette << " = QPalette()" << endl;
+ pal_used = TRUE;
+ }
+ QString cg = "cg";
+ if ( !cg_used ) {
+ out << indent << cg << " = QColorGroup()" << endl;
+ cg_used = TRUE;
+ }
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "active")
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setActive(" << cg << ")" << endl;
+
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "inactive")
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setInactive(" << cg << ")" << endl;
+
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "disabled")
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setDisabled(" << cg << ")" << endl;
+ v = palette;
+ }
+ } else if ( e.tagName() == "cursor" ) {
+ v = "QCursor(%1)";
+ v = v.arg( e.firstChild().toText().data() );
+ }
+ return v;
+}
+
+
+
+/*!
+ Creates a colorgroup with name \a name from the color group \a cg
+ */
+void Uic::createColorGroupImpl( const QString& name, const QDomElement& e )
+{
+ QColorGroup cg;
+ int r = -1;
+ QDomElement n = e.firstChild().toElement();
+ QString color;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "color" ) {
+ r++;
+ QColor col = DomTool::readColor( n );
+ color = "QColor(%1,%2,%3)";
+ color = color.arg( col.red() ).arg( col.green() ).arg( col.blue() );
+ if ( col == white )
+ color = "Qt.white";
+ else if ( col == black )
+ color = "Qt.black";
+ if ( n.nextSibling().toElement().tagName() != "pixmap" ) {
+ out << indent << name << ".setColor(QColorGroup." << ColorRole[r] << "," << color << ")" << endl;
+ }
+ } else if ( n.tagName() == "pixmap" ) {
+ QString pixmap = n.firstChild().toText().data();
+ if ( !pixmapLoaderFunction.isEmpty() ) {
+ pixmap.prepend( pixmapLoaderFunction + "(" );
+ pixmap.append( ")" );
+ }
+ out << indent << name << ".setBrush(QColorGroup."
+ << ColorRole[r] << ",QBrush(" << color << "," << pixmap << "))" << endl;
+ }
+ n = n.nextSibling().toElement();
+ }
+}
+
+/*!
+ Auxiliary function to load a color group. The colorgroup must not
+ contain pixmaps.
+ */
+QColorGroup Uic::loadColorGroup( const QDomElement &e )
+{
+ QColorGroup cg;
+ int r = -1;
+ QDomElement n = e.firstChild().toElement();
+ QColor col;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "color" ) {
+ r++;
+ cg.setColor( (QColorGroup::ColorRole)r, (col = DomTool::readColor( n ) ) );
+ }
+ n = n.nextSibling().toElement();
+ }
+ return cg;
+}
+
+
+
+/*!
+ Registers an object with name \a name.
+
+ The returned name is a valid variable identifier, as similar to \a
+ name as possible and guaranteed to be unique within the form.
+
+ \sa registeredName(), isObjectRegistered()
+ */
+QString Uic::registerObject( const QString& name )
+{
+ if ( objectNames.isEmpty() ) {
+ // some temporary variables we need
+ objectNames += "img";
+ objectNames += "item";
+ objectNames += "cg";
+ objectNames += "pal";
+ }
+
+ QString result = name;
+ int i;
+ while ( ( i = result.find(' ' )) != -1 ) {
+ result[i] = '_';
+ }
+
+ if ( objectNames.contains( result ) ) {
+ int i = 2;
+ while ( objectNames.contains( result + "_" + QString::number(i) ) )
+ i++;
+ result += "_";
+ result += QString::number(i);
+ }
+ objectNames += result;
+ objectMapper.insert( name, result );
+ return result;
+}
+
+/*!
+ Returns the registered name for the original name \a name
+ or \a name if \a name wasn't registered.
+
+ \sa registerObject(), isObjectRegistered()
+ */
+QString Uic::registeredName( const QString& name )
+{
+ if ( !objectMapper.contains( name ) )
+ return name;
+ return objectMapper[name];
+}
+
+/*!
+ Returns whether the object \a name was registered yet or not.
+ */
+bool Uic::isObjectRegistered( const QString& name )
+{
+ return objectMapper.contains( name );
+}
+
+
+/*!
+ Unifies the entries in stringlist \a list. Should really be a QStringList feature.
+ */
+QStringList Uic::unique( const QStringList& list )
+{
+ QStringList result;
+ if (list.isEmpty() )
+ return result;
+ QStringList l = list;
+ l.sort();
+ result += l.first();
+ for ( QStringList::Iterator it = l.begin(); it != l.end(); ++it ) {
+ if ( *it != result.last() )
+ result += *it;
+ }
+ return result;
+}
+
+
+
+/*!
+ Creates an instance of class \a objClass, with parent \a parent and name \a objName
+ */
+QString Uic::createObjectInstance( const QString& objClass, const QString& parent, const QString& objName )
+{
+
+ if ( objClass.mid(1) == "ComboBox" ) {
+ return objClass + "(0," + parent + ",'" + objName + "')";
+ }
+ return objClass + "(" + parent + ",'" + objName + "')";
+}
+
+bool Uic::isLayout( const QString& name ) const
+{
+ return layoutObjects.contains( name );
+}
+
+
+#if defined(BLACKADDER)
+#include "ba.h"
+
+int BA::compilePython(const QString &fileName,const QString &outputFile,
+ const QString &trmacro,bool execCode)
+{
+#else
+int main( int argc, char * argv[] )
+{
+ const char *error = 0;
+ QString fileName;
+ QString outputFile;
+ QString trmacro;
+ bool execCode = FALSE;
+
+ for ( int n = 1; n < argc && error == 0; n++ ) {
+ QCString arg = argv[n];
+ if ( arg[0] == '-' ) { // option
+ QCString opt = &arg[1];
+ if ( opt[0] == 'o' ) { // output redirection
+ if ( opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing output-file name";
+ break;
+ }
+ outputFile = argv[++n];
+ } else
+ outputFile = &opt[1];
+ } else if ( opt == "tr" ) {
+ if ( opt == "tr" || opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing tr macro.";
+ break;
+ }
+ trmacro = argv[++n];
+ } else {
+ trmacro = &opt[1];
+ }
+ } else if ( opt == "x" ) {
+ execCode = TRUE;
+ }
+ } else {
+ if (!fileName.isEmpty()) // can handle only one file
+ error = "Too many input files specified";
+ else
+ fileName = argv[n];
+ }
+ }
+
+ if ( argc < 2 || error || fileName.isEmpty() ) {
+ fprintf( stderr, "PyQt user interface compiler\n" );
+ if ( error )
+ fprintf( stderr, "pyuic: %s\n", error );
+
+ fprintf( stderr, "Usage: %s [options] <uifile>\n"
+ "\nGenerate PyQt implementation:\n"
+ " %s [options] <uifile>\n"
+ "Options:\n"
+ "\t-o file Write output to file rather than stdout\n"
+ "\t-tr func Use func(...) rather than tr(...) for i18n\n"
+ "\t-x Generate extra code to test the class\n"
+ , argv[0], argv[0]);
+ exit( 1 );
+ }
+#endif
+
+ QFile file( fileName );
+ if ( !file.open( IO_ReadOnly ) )
+ qFatal( "pyuic: Could not open file '%s' ", (const char *)fileName );
+
+ QFile fileOut;
+ if (!outputFile.isEmpty()) {
+ fileOut.setName( outputFile );
+ if (!fileOut.open( IO_WriteOnly ) )
+ qFatal( "pyuic: Could not open output file '%s'", (const char *)outputFile );
+ } else {
+ fileOut.open( IO_WriteOnly, stdout );
+ }
+ QTextStream out( &fileOut );
+ out.setEncoding( QTextStream::UnicodeUTF8 );
+
+ QDomDocument doc;
+ if ( !doc.setContent( &file ) )
+ qFatal( "pyuic: Failed to parse %s\n", (const char *)fileName );
+
+ out << "# Form implementation generated from reading ui file '" << fileName << "'" << endl;
+ out << "#" << endl;
+ out << "# Created: " << QDateTime::currentDateTime().toString() << endl;
+ out << "# by: The Python User Interface Compiler (pyuic) " << PYQT_VERSION << endl;
+ out << "#" << endl;
+ out << "# WARNING! All changes made in this file will be lost!" << endl;
+ out << endl;
+ out << endl;
+
+ if (execCode)
+ out << "import sys" << endl;
+
+ out << "from qt import *" << endl;
+
+ Uic( out, doc, trmacro.isEmpty() ? QString("self.tr") : trmacro );
+
+ if (execCode) {
+ out << endl;
+ out << endl;
+ out << "if __name__ == '__main__':" << endl;
+ out << " a = QApplication(sys.argv)" << endl;
+ out << " QObject.connect(a,SIGNAL('lastWindowClosed()'),a,SLOT('quit()'))" << endl;
+ out << " w = " << className << "()" << endl;
+ out << " a.setMainWidget(w)" << endl;
+ out << " w.show()" << endl;
+ out << " a.exec_loop()" << endl;
+ }
+
+ return 0;
+}
diff --git a/python/pyqt/pyuic2/uic.h b/python/pyqt/pyuic2/uic.h
new file mode 100644
index 00000000..6c7befc4
--- /dev/null
+++ b/python/pyqt/pyuic2/uic.h
@@ -0,0 +1,133 @@
+/**********************************************************************
+** Copyright (C) 2000 Troll Tech AS. All rights reserved.
+** Copyright (C) 2000, 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+**
+** This file is part of Qt GUI Designer.
+**
+** This file may be distributed under the terms of the GNU General
+** Public License version 2 as published by the Free Software
+** Foundation and appearing in the file COPYING included in the
+** packaging of this file. If you did not get the file, send email
+** to info@trolltech.com
+**
+** The file is provided AS IS with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#ifndef UIC_H
+#define UIC_H
+
+#include <qnamespace.h>
+#include <qdom.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qmap.h>
+#include <qtextstream.h>
+#include <qcolor.h>
+
+
+#define PYQT_VERSION "3.17.2"
+
+
+class Uic : public Qt
+{
+public:
+ Uic( QTextStream& out, QDomDocument doc, const QString &trm );
+
+ void createFormImpl( const QDomElement &e );
+
+ QString createObjectImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ QString createLayoutImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ QString createObjectInstance( const QString& objClass, const QString& parent, const QString& objName );
+ QString createSpacerImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ void createExclusiveProperty( const QDomElement & e, const QString& exclusiveProp );
+ QString createListBoxItemImpl( const QDomElement &e, const QString &parent );
+ QString createIconViewItemImpl( const QDomElement &e, const QString &parent );
+ QString createListViewColumnImpl( const QDomElement &e, const QString &parent );
+ QString createListViewItemImpl( const QDomElement &e, const QString &parent,
+ const QString &parentItem );
+ void createColorGroupImpl( const QString& cg, const QDomElement& e );
+ QColorGroup loadColorGroup( const QDomElement &e );
+
+ QString getClassName( const QDomElement& e );
+ QString getObjectName( const QDomElement& e );
+ QString getLayoutName( const QDomElement& e );
+
+ QString setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset );
+
+ QString registerObject( const QString& name );
+ QString registeredName( const QString& name );
+ bool isObjectRegistered( const QString& name );
+ QStringList unique( const QStringList& );
+
+private:
+ void pushIndent()
+ {
+ ++nrindents;
+ setIndent();
+ }
+
+ void popIndent()
+ {
+ --nrindents;
+ setIndent();
+ }
+
+ void setIndent()
+ {
+ indent = "";
+
+ for (int i = 0; i < nrindents; ++i)
+ indent += newindent;
+ }
+
+ void initIndent()
+ {
+ newindent = " ";
+ indent = "";
+ nrindents = 0;
+ }
+
+ QString indent, newindent;
+ int nrindents;
+
+ QTextStream& out;
+ QStringList objectNames;
+ QMap<QString,QString> objectMapper;
+ QStringList tags;
+ QStringList layouts;
+ QString formName;
+ QString lastItem;
+ QString trmacro;
+
+ struct Buddy
+ {
+ Buddy( const QString& k, const QString& b )
+ : key( k ), buddy( b ) {}
+ Buddy(){}; // for valuelist
+ QString key;
+ QString buddy;
+ bool operator==( const Buddy& other ) const
+ { return (key == other.key); }
+ };
+ struct CustomInclude
+ {
+ QString header;
+ QString location;
+ };
+ QValueList<Buddy> buddies;
+
+ QStringList layoutObjects;
+ bool isLayout( const QString& name ) const;
+
+ uint item_used : 1;
+ uint cg_used : 1;
+ uint pal_used : 1;
+
+ QString pixmapLoaderFunction;
+ QString nameOfClass;
+};
+
+#endif
diff --git a/python/pyqt/pyuic2/widgetdatabase.cpp b/python/pyqt/pyuic2/widgetdatabase.cpp
new file mode 100644
index 00000000..0733fcef
--- /dev/null
+++ b/python/pyqt/pyuic2/widgetdatabase.cpp
@@ -0,0 +1,640 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include <qvariant.h> // HP-UX compiler needs this here
+
+#include "widgetdatabase.h"
+
+#if defined(DESIGNER)
+#include "../designer/formwindow.h"
+#include "../designer/pixmapchooser.h"
+#endif
+
+//#include "../integration/kdevelop/kdewidgets.h"
+
+#include <globaldefs.h>
+#include <qstrlist.h>
+#include <qdict.h>
+#include <qfile.h>
+#include <qtextstream.h>
+
+#include <qmodules.h>
+
+const int dbsize = 300;
+const int dbcustom = 200;
+const int dbdictsize = 211;
+static WidgetDatabaseRecord* db[ dbsize ];
+static QDict<int> *className2Id = 0;
+static int dbcount = 0;
+static int dbcustomcount = 200;
+static QStrList *wGroups;
+static QStrList *invisibleGroups;
+static bool whatsThisLoaded = FALSE;
+
+
+WidgetDatabaseRecord::WidgetDatabaseRecord()
+{
+ isContainer = FALSE;
+ icon = 0;
+ nameCounter = 0;
+}
+
+WidgetDatabaseRecord::~WidgetDatabaseRecord()
+{
+ delete icon;
+}
+
+
+/*!
+ \class WidgetDatabase widgetdatabase.h
+ \brief The WidgetDatabase class holds information about widgets
+
+ The WidgetDatabase holds information about widgets like toolTip(),
+ iconSet(), ... It works Id-based, so all access functions take the
+ widget id as parameter. To get the id for a widget (classname), use
+ idFromClassName().
+
+ All access functions are static. Having multiple widgetdatabases in
+ one application doesn't make sense anyway and so you don't need more
+ than an instance of the widgetdatabase.
+
+ For creating widgets, layouts, etc. see WidgetFactory.
+*/
+
+/*!
+ Creatse widget database. Does nothing
+*/
+
+WidgetDatabase::WidgetDatabase()
+{
+}
+
+/*! Sets up the widget database. If the static widgetdatabase already
+ exists, the functions returns immediately.
+*/
+
+void WidgetDatabase::setupDataBase()
+{
+ if ( dbcount )
+ return;
+
+ wGroups = new QStrList;
+ invisibleGroups = new QStrList;
+ invisibleGroups->append( "Forms" );
+ invisibleGroups->append( "Temp" );
+ className2Id = new QDict<int>( dbdictsize );
+ className2Id->setAutoDelete( TRUE );
+
+ WidgetDatabaseRecord *r = 0;
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "pushbutton.xpm";
+ r->name = "QPushButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Push Button";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "toolbutton.xpm";
+ r->name = "QToolButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Tool Button";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "radiobutton.xpm";
+ r->name = "QRadioButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Radio Button";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "checkbox.xpm";
+ r->name = "QCheckBox";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Check Box";
+
+
+
+
+ append( r );
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "groupbox.xpm";
+ r->name = "QGroupBox";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Group Box";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "buttongroup.xpm";
+ r->name = "QButtonGroup";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Button Group";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "frame.xpm";
+ r->name = "QFrame";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Frame";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "tabwidget.xpm";
+ r->name = "QTabWidget";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Tabwidget";
+ r->isContainer = TRUE;
+
+ append( r );
+
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "listbox.xpm";
+ r->name = "QListBox";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "List Box";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "listview.xpm";
+ r->name = "QListView";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "List View";
+
+ append( r );
+
+#if defined(QT_MODULE_ICONVIEW) || defined(UIC)
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "iconview.xpm";
+ r->name = "QIconView";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "Icon View";
+
+ append( r );
+#endif
+
+#if defined(QT_MODULE_TABLE)
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "table.xpm";
+ r->name = "QTable";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "Table";
+
+ append( r );
+#endif
+
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "lineedit.xpm";
+ r->name = "QLineEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Line Edit";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "spinbox.xpm";
+ r->name = "QSpinBox";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Spin Box";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "multilineedit.xpm";
+ r->name = "QMultiLineEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Multi Line Edit";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "combobox.xpm";
+ r->name = "QComboBox";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Combo Box";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "slider.xpm";
+ r->name = "QSlider";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Slider";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "dial.xpm";
+ r->name = "QDial";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Dial";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "label.xpm";
+ r->name = "QLabel";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Label";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "label.xpm";
+ r->name = "TextLabel";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Text Label";
+ r->whatsThis = "The Text Label provides a widget to display static text.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "pixlabel.xpm";
+ r->name = "PixmapLabel";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Pixmap Label";
+ r->whatsThis = "The Pixmap Label provides a widget to display pixmaps.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "lcdnumber.xpm";
+ r->name = "QLCDNumber";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "LCD Number";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "line.xpm";
+ r->name = "Line";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Line";
+ r->includeFile = "qframe.h";
+ r->whatsThis = "The Line widget provides horizontal and vertical lines.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "progress.xpm";
+ r->name = "QProgressBar";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Progress Bar";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "textview.xpm";
+ r->name = "QTextView";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Text View";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "textbrowser.xpm";
+ r->name = "QTextBrowser";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Text Browser";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "spacer.xpm";
+ r->name = "Spacer";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Spacer";
+ r->whatsThis = "The Spacer provides horizontal and vertical spacing to be able to manipulate the bahviour of layouts.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QWidget";
+ r->isContainer = FALSE;
+ r->group = widgetGroup( "Forms" );
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QDialog";
+ r->group = widgetGroup( "Forms" );
+ r->isContainer = FALSE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QWizard";
+ r->group = widgetGroup( "Forms" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QDesignerWizard";
+ r->group = widgetGroup( "Forms" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QLayoutWidget";
+ r->group = widgetGroup( "Temp" );
+ r->includeFile = "";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "tabwidget.xpm";
+ r->name = "QDesignerTabWidget";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "tabwidget.xpm";
+ r->name = "QDesignerWidget";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "tabwidget.xpm";
+ r->name = "QDesignerDialog";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+// qt_init_kde_widget_database();
+}
+
+/*!
+ Returns the number of elements in the widget database.
+*/
+
+int WidgetDatabase::count()
+{
+ setupDataBase();
+ return dbcount;
+}
+
+/*!
+ Returns the id at which the ids of custom widgets start.
+*/
+
+int WidgetDatabase::startCustom()
+{
+ setupDataBase();
+ return dbcustom;
+}
+
+/*! Returns the iconset which represents the class registered as \a
+ id.
+*/
+
+QIconSet WidgetDatabase::iconSet( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QIconSet();
+#if defined(DESIGNER)
+ if ( !r->icon )
+ r->icon = new QIconSet( PixmapChooser::loadPixmap( r->iconSet, PixmapChooser::Small ),
+ PixmapChooser::loadPixmap( r->iconSet, PixmapChooser::Large ) );
+ return *r->icon;
+#endif
+
+ return QIconSet();
+}
+
+/*!
+ Returns the classname of the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::className( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->name;
+}
+
+/*!
+ Returns the group to which the widget registered as \a id belongs.
+*/
+
+QString WidgetDatabase::group( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->group;
+}
+
+/*! Returns the tooltip text of the widget which is registered as \a
+ id.
+*/
+
+QString WidgetDatabase::toolTip( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->toolTip;
+}
+
+/*! Returns the what's this? test of the widget which is registered
+ as \a id.
+*/
+
+QString WidgetDatabase::whatsThis( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->whatsThis;
+}
+
+/*!
+ Returns the include file if the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::includeFile( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ if ( r->includeFile.isNull() )
+ return r->name.lower() + ".h";
+ return r->includeFile;
+}
+
+/*! Returns wheather the widget registered as \a id is a container
+ (can have children) or not.
+*/
+
+bool WidgetDatabase::isContainer( int id )
+{
+ setupDataBase();
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return FALSE;
+ return r->isContainer;
+}
+
+QString WidgetDatabase::createWidgetName( int id )
+{
+ setupDataBase();
+ QString n = className( id );
+ if ( n == "QLayoutWidget" )
+ n = "Layout";
+ if ( n[ 0 ] == 'Q' )
+ n = n.mid( 1 );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return n;
+ n += QString::number( ++r->nameCounter );
+ return n;
+}
+
+/*! Returns the id for \a name or -1 if \a name is unknown.
+ */
+int WidgetDatabase::idFromClassName( const QString &name )
+{
+ setupDataBase();
+ if ( name.isEmpty() )
+ return 0;
+ int *i = className2Id->find( name );
+ if ( i )
+ return *i;
+ if ( name == "FormWindow" )
+ return idFromClassName( "QLayoutWidget" );
+ return -1;
+}
+
+WidgetDatabaseRecord *WidgetDatabase::at( int index )
+{
+ if ( index < 0 )
+ return 0;
+ if ( index >= dbcustom && index < dbcustomcount )
+ return db[ index ];
+ if ( index < dbcount )
+ return db[ index ];
+ return 0;
+}
+
+void WidgetDatabase::insert( int index, WidgetDatabaseRecord *r )
+{
+ if ( index < 0 || index >= dbsize )
+ return;
+ db[ index ] = r;
+ className2Id->insert( r->name, new int( index ) );
+ if ( index < dbcustom )
+ dbcount = QMAX( dbcount, index );
+}
+
+void WidgetDatabase::append( WidgetDatabaseRecord *r )
+{
+ insert( dbcount++, r );
+}
+
+QString WidgetDatabase::widgetGroup( const QString &g )
+{
+ if ( wGroups->find( g ) == -1 )
+ wGroups->append( g );
+ return g;
+}
+
+QString WidgetDatabase::widgetGroup( int i )
+{
+ setupDataBase();
+ if ( i >= 0 && i < (int)wGroups->count() )
+ return wGroups->at( i );
+ return QString::null;
+}
+
+int WidgetDatabase::numWidgetGroups()
+{
+ setupDataBase();
+ return wGroups->count();
+}
+
+bool WidgetDatabase::isGroupVisible( const QString &g )
+{
+ setupDataBase();
+ return invisibleGroups->find( g ) == -1;
+}
+
+int WidgetDatabase::addCustomWidget( WidgetDatabaseRecord *r )
+{
+ insert( dbcustomcount++, r );
+ return dbcustomcount - 1;
+}
+
+bool WidgetDatabase::isCustomWidget( int id )
+{
+ if ( id >= dbcustom && id < dbcustomcount )
+ return TRUE;
+ return FALSE;
+}
+
+bool WidgetDatabase::isWhatsThisLoaded()
+{
+ return whatsThisLoaded;
+}
+
+void WidgetDatabase::loadWhatsThis( const QString &docPath )
+{
+ QString whatsthisFile = docPath + "/whatsthis";
+ QFile f( whatsthisFile );
+ if ( !f.open( IO_ReadOnly ) )
+ return;
+ QTextStream ts( &f );
+ while ( !ts.atEnd() ) {
+ QString s = ts.readLine();
+ QStringList l = QStringList::split( " | ", s );
+ int id = idFromClassName( l[ 1 ] );
+ WidgetDatabaseRecord *r = at( id );
+ if ( r )
+ r->whatsThis = l[ 0 ];
+ }
+ whatsThisLoaded = TRUE;
+}
diff --git a/python/pyqt/pyuic2/widgetdatabase.h b/python/pyqt/pyuic2/widgetdatabase.h
new file mode 100644
index 00000000..a28cd5fb
--- /dev/null
+++ b/python/pyqt/pyuic2/widgetdatabase.h
@@ -0,0 +1,75 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef WIDGETDATABASE_H
+#define WIDGETDATABASE_H
+
+#include <qiconset.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+struct WidgetDatabaseRecord
+{
+ WidgetDatabaseRecord();
+ ~WidgetDatabaseRecord();
+ QString iconSet, name, group, toolTip, whatsThis, includeFile;
+ uint isContainer : 1;
+ QIconSet *icon;
+ int nameCounter;
+};
+
+class WidgetDatabase : public Qt
+{
+public:
+ WidgetDatabase();
+ static void setupDataBase();
+
+ static int count();
+ static int startCustom();
+
+ static QIconSet iconSet( int id );
+ static QString className( int id );
+ static QString group( int id );
+ static QString toolTip( int id );
+ static QString whatsThis( int id );
+ static QString includeFile( int id );
+ static bool isContainer( int id );
+
+ static int idFromClassName( const QString &name );
+ static QString createWidgetName( int id );
+
+ static WidgetDatabaseRecord *at( int index );
+ static void insert( int index, WidgetDatabaseRecord *r );
+ static void append( WidgetDatabaseRecord *r );
+
+ static QString widgetGroup( const QString &g );
+ static QString widgetGroup( int i );
+ static int numWidgetGroups();
+ static bool isGroupVisible( const QString &g );
+
+ static int addCustomWidget( WidgetDatabaseRecord *r );
+ static bool isCustomWidget( int id );
+
+ static bool isWhatsThisLoaded();
+ static void loadWhatsThis( const QString &docPath );
+
+};
+
+#endif
diff --git a/python/pyqt/pyuic3/LICENSE.GPL b/python/pyqt/pyuic3/LICENSE.GPL
new file mode 100644
index 00000000..c7aea189
--- /dev/null
+++ b/python/pyqt/pyuic3/LICENSE.GPL
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/python/pyqt/pyuic3/domtool.cpp b/python/pyqt/pyuic3/domtool.cpp
new file mode 100644
index 00000000..b3514a06
--- /dev/null
+++ b/python/pyqt/pyuic3/domtool.cpp
@@ -0,0 +1,447 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "domtool.h"
+
+#include <qsizepolicy.h>
+#include <qcolor.h>
+#include <qcursor.h>
+#include <qdatetime.h>
+#include <qrect.h>
+#include <qsize.h>
+#include <qfont.h>
+#include <qdom.h>
+
+/*!
+ \class DomTool domtool.h
+ \brief Tools for the dom
+
+ A collection of static functions used by Resource (part of the
+ designer) and Uic.
+
+*/
+
+/*!
+ Returns the contents of property \a name of object \a e as
+ variant or the variant passed as \a defValue if the property does
+ not exist.
+
+ \sa hasProperty()
+*/
+QVariant DomTool::readProperty( const QDomElement& e, const QString& name, const QVariant& defValue, QString& comment )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ if ( n.attribute( "name" ) != name )
+ continue;
+ return elementToVariant( n.firstChild().toElement(), defValue, comment );
+ }
+ }
+ return defValue;
+}
+
+
+/*!
+ \overload
+ */
+QVariant DomTool::readProperty( const QDomElement& e, const QString& name, const QVariant& defValue )
+{
+ QString comment;
+ return readProperty( e, name, defValue, comment );
+}
+
+/*!
+ Returns wheter object \a e defines property \a name or not.
+
+ \sa readProperty()
+ */
+bool DomTool::hasProperty( const QDomElement& e, const QString& name )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ if ( n.attribute( "name" ) != name )
+ continue;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+QStringList DomTool::propertiesOfType( const QDomElement& e, const QString& type )
+{
+ QStringList result;
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ QDomElement n2 = n.firstChild().toElement();
+ if ( n2.tagName() == type )
+ result += n.attribute( "name" );
+ }
+ }
+ return result;
+}
+
+
+QVariant DomTool::elementToVariant( const QDomElement& e, const QVariant& defValue )
+{
+ QString dummy;
+ return elementToVariant( e, defValue, dummy );
+}
+
+/*!
+ Interprets element \a e as variant and returns the result of the interpretation.
+ */
+QVariant DomTool::elementToVariant( const QDomElement& e, const QVariant& defValue, QString &comment )
+{
+ QVariant v;
+ if ( e.tagName() == "rect" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0, w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QRect( x, y, w, h ) );
+ } else if ( e.tagName() == "point" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QPoint( x, y ) );
+ } else if ( e.tagName() == "size" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QSize( w, h ) );
+ } else if ( e.tagName() == "color" ) {
+ v = QVariant( readColor( e ) );
+ } else if ( e.tagName() == "font" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QFont f( defValue.toFont() );
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "family" )
+ f.setFamily( n3.firstChild().toText().data() );
+ else if ( n3.tagName() == "pointsize" )
+ f.setPointSize( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "bold" )
+ f.setBold( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "italic" )
+ f.setItalic( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "underline" )
+ f.setUnderline( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "strikeout" )
+ f.setStrikeOut( n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( f );
+ } else if ( e.tagName() == "string" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ QDomElement n = e;
+ n = n.nextSibling().toElement();
+ if ( n.tagName() == "comment" )
+ comment = n.firstChild().toText().data();
+ } else if ( e.tagName() == "cstring" ) {
+ v = QVariant( QCString( e.firstChild().toText().data() ) );
+ } else if ( e.tagName() == "number" ) {
+ bool ok = TRUE;
+ v = QVariant( e.firstChild().toText().data().toInt( &ok ) );
+ if ( !ok )
+ v = QVariant( e.firstChild().toText().data().toDouble() );
+ } else if ( e.tagName() == "bool" ) {
+ QString t = e.firstChild().toText().data();
+ v = QVariant( t == "true" || t == "1", 0 );
+ } else if ( e.tagName() == "pixmap" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "iconset" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "image" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "enum" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "set" ) {
+ v = QVariant( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "sizepolicy" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QSizePolicy sp;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hsizetype" )
+ sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "vsizetype" )
+ sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "horstretch" )
+ sp.setHorStretch( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "verstretch" )
+ sp.setVerStretch( n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( sp );
+ } else if ( e.tagName() == "cursor" ) {
+ v = QVariant( QCursor( e.firstChild().toText().data().toInt() ) );
+ } else if ( e.tagName() == "stringlist" ) {
+ QStringList lst;
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() )
+ lst << n.firstChild().toText().data();
+ v = QVariant( lst );
+ } else if ( e.tagName() == "date" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int y, m, d;
+ y = m = d = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "year" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "month" )
+ m = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "day" )
+ d = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QDate( y, m, d ) );
+ } else if ( e.tagName() == "time" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int h, m, s;
+ h = m = s = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hour" )
+ h = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "minute" )
+ m = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "second" )
+ s = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QTime( h, m, s ) );
+ } else if ( e.tagName() == "datetime" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int h, mi, s, y, mo, d ;
+ h = mi = s = y = mo = d = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hour" )
+ h = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "minute" )
+ mi = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "second" )
+ s = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "year" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "month" )
+ mo = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "day" )
+ d = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = QVariant( QDateTime( QDate( y, mo, d ), QTime( h, mi, s ) ) );
+ }
+ return v;
+}
+
+
+/*! Returns the color which is returned in the dom element \a e.
+ */
+
+QColor DomTool::readColor( const QDomElement &e )
+{
+ QDomElement n = e.firstChild().toElement();
+ int r= 0, g = 0, b = 0;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "red" )
+ r = n.firstChild().toText().data().toInt();
+ else if ( n.tagName() == "green" )
+ g = n.firstChild().toText().data().toInt();
+ else if ( n.tagName() == "blue" )
+ b = n.firstChild().toText().data().toInt();
+ n = n.nextSibling().toElement();
+ }
+
+ return QColor( r, g, b );
+}
+
+/*!
+ Returns the contents of attribute \a name of object \a e as
+ variant or the variant passed as \a defValue if the attribute does
+ not exist.
+
+ \sa hasAttribute()
+ */
+QVariant DomTool::readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue, QString& comment )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "attribute" ) {
+ if ( n.attribute( "name" ) != name )
+ continue;
+ return elementToVariant( n.firstChild().toElement(), defValue, comment );
+ }
+ }
+ return defValue;
+}
+
+/*!
+ \overload
+*/
+QVariant DomTool::readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue )
+{
+ QString comment;
+ return readAttribute( e, name, defValue, comment );
+}
+
+/*!
+ Returns wheter object \a e defines attribute \a name or not.
+
+ \sa readAttribute()
+ */
+bool DomTool::hasAttribute( const QDomElement& e, const QString& name )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "attribute" ) {
+ if ( n.attribute( "name" ) != name )
+ continue;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool toBool( const QString& s )
+{
+ return s == "true" || s.toInt() != 0;
+}
+
+/*!
+ Convert Qt 2.x format to Qt 3.0 format if necessary
+*/
+void DomTool::fixDocument( QDomDocument& doc )
+{
+ QDomElement e;
+ QDomNode n;
+ QDomNodeList nl;
+ int i = 0;
+
+ e = doc.firstChild().toElement();
+ if ( e.tagName() != "UI" )
+ return;
+
+ // latest version, don't do anything
+ if ( e.hasAttribute("version") && e.attribute("version").toDouble() > 3.0 )
+ return;
+
+ nl = doc.elementsByTagName( "property" );
+
+ // in 3.0, we need to fix a spelling error
+ if ( e.hasAttribute("version") && e.attribute("version").toDouble() == 3.0 ) {
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement el = nl.item(i).toElement();
+ QString s = el.attribute( "name" );
+ if ( s == "resizeable" ) {
+ el.removeAttribute( "name" );
+ el.setAttribute( "name", "resizable" );
+ }
+ }
+ return;
+ }
+
+
+ // in versions smaller than 3.0 we need to change more
+ e.setAttribute( "version", 3.0 );
+
+ e.setAttribute("stdsetdef", 1 );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ e = nl.item(i).toElement();
+ QString name;
+ QDomElement n2 = e.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ name = n2.firstChild().toText().data();
+ if ( name == "resizeable" )
+ e.setAttribute( "name", "resizable" );
+ else
+ e.setAttribute( "name", name );
+ e.removeChild( n2 );
+ }
+ bool stdset = toBool( e.attribute( "stdset" ) );
+ if ( stdset || name == "toolTip" || name == "whatsThis" ||
+ name == "buddy" ||
+ e.parentNode().toElement().tagName() == "item" ||
+ e.parentNode().toElement().tagName() == "spacer" ||
+ e.parentNode().toElement().tagName() == "column"
+ )
+ e.removeAttribute( "stdset" );
+ else
+ e.setAttribute( "stdset", 0 );
+ }
+
+ nl = doc.elementsByTagName( "attribute" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ e = nl.item(i).toElement();
+ QString name;
+ QDomElement n2 = e.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ name = n2.firstChild().toText().data();
+ e.setAttribute( "name", name );
+ e.removeChild( n2 );
+ }
+ }
+
+ nl = doc.elementsByTagName( "image" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ e = nl.item(i).toElement();
+ QString name;
+ QDomElement n2 = e.firstChild().toElement();
+ if ( n2.tagName() == "name" ) {
+ name = n2.firstChild().toText().data();
+ e.setAttribute( "name", name );
+ e.removeChild( n2 );
+ }
+ }
+
+ nl = doc.elementsByTagName( "widget" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ e = nl.item(i).toElement();
+ QString name;
+ QDomElement n2 = e.firstChild().toElement();
+ if ( n2.tagName() == "class" ) {
+ name = n2.firstChild().toText().data();
+ e.setAttribute( "class", name );
+ e.removeChild( n2 );
+ }
+ }
+
+}
+
diff --git a/python/pyqt/pyuic3/domtool.h b/python/pyqt/pyuic3/domtool.h
new file mode 100644
index 00000000..25b795d3
--- /dev/null
+++ b/python/pyqt/pyuic3/domtool.h
@@ -0,0 +1,47 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef DOMTOOL_H
+#define DOMTOOL_H
+
+#include <qvariant.h>
+#include <qnamespace.h>
+
+class QDomElement;
+class QDomDocument;
+
+class DomTool : public Qt
+{
+public:
+ static QVariant readProperty( const QDomElement& e, const QString& name, const QVariant& defValue );
+ static QVariant readProperty( const QDomElement& e, const QString& name, const QVariant& defValue, QString& comment );
+ static bool hasProperty( const QDomElement& e, const QString& name );
+ static QStringList propertiesOfType( const QDomElement& e, const QString& type );
+ static QVariant elementToVariant( const QDomElement& e, const QVariant& defValue );
+ static QVariant elementToVariant( const QDomElement& e, const QVariant& defValue, QString &comment );
+ static QVariant readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue );
+ static QVariant readAttribute( const QDomElement& e, const QString& name, const QVariant& defValue, QString& comment );
+ static bool hasAttribute( const QDomElement& e, const QString& name );
+ static QColor readColor( const QDomElement &e );
+ static void fixDocument( QDomDocument& );
+};
+
+
+#endif // DOMTOOL_H
diff --git a/python/pyqt/pyuic3/embed.cpp b/python/pyqt/pyuic3/embed.cpp
new file mode 100644
index 00000000..04f6494c
--- /dev/null
+++ b/python/pyqt/pyuic3/embed.cpp
@@ -0,0 +1,323 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (c) 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+** Copyright (c) 2002 Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include <qfile.h>
+#include <qimage.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#include <qfileinfo.h>
+#include <stdio.h>
+#include <ctype.h>
+
+// on embedded, we do not compress image data. Rationale: by mapping
+// the ready-only data directly into memory we are both faster and
+// more memory efficient
+#if (QT_VERSION < 0x030100 || defined(Q_WS_QWS)) && !defined(QT_NO_IMAGE_COLLECTION_COMPRESSION)
+#define QT_NO_IMAGE_COLLECTION_COMPRESSION
+#endif
+
+struct EmbedImage
+{
+ ~EmbedImage() { delete[] colorTable; }
+ int width, height, depth;
+ int numColors;
+ QRgb* colorTable;
+ QString name;
+ QString cname;
+ bool alpha;
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ ulong compressed;
+#endif
+};
+
+static QString convertToCIdentifier( const char *s )
+{
+ QString r = s;
+ int len = r.length();
+ if ( len > 0 && !isalpha( (char)r[0].latin1() ) )
+ r[0] = '_';
+ for ( int i=1; i<len; i++ ) {
+ if ( !isalnum( (char)r[i].latin1() ) )
+ r[i] = '_';
+ }
+ return r;
+}
+
+
+static ulong embedData( QTextStream& out, const uchar* input, int nbytes )
+{
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ QByteArray bazip( qCompress( input, nbytes ) );
+ uint len = bazip.size();
+#else
+ uint len = (uint)nbytes;
+#endif
+ static const char hexdigits[] = "0123456789abcdef";
+ QString s;
+ for ( uint i=0; i<len; i++ ) {
+ if ( (i%14) == 0 ) {
+ if (i)
+ s += '"';
+
+ s += " \\\n \"";
+ out << (const char*)s;
+ s.truncate( 0 );
+ }
+ uint v = (uchar)
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ bazip
+#else
+ input
+#endif
+ [(int)i];
+ s += "\\x";
+ s += hexdigits[(v >> 4) & 15];
+ s += hexdigits[v & 15];
+ if ( i == len-1 )
+ s += "\"\n";
+ }
+ if ( s.length() )
+ out << (const char*)s;
+ return (ulong)len;
+}
+
+static void embedData( QTextStream& out, const QRgb* input, int n )
+{
+ out << hex;
+ const QRgb *v = input;
+ for ( int i=0; i<n; i++ ) {
+ if ( (i%14) == 0 )
+ out << "\n ";
+ out << "0x";
+ out << hex << *v++;
+ if ( i < n-1 )
+ out << ',';
+ }
+ out << dec; // back to decimal mode
+}
+
+void Uic::embed( QTextStream& out, const char* project, const QStringList& images )
+{
+
+ QString cProject = convertToCIdentifier( project );
+
+ QStringList::ConstIterator it;
+ out << "# Image collection for project '" << project << "'.\n";
+ out << "#\n";
+ out << "# Generated from reading image files: \n";
+ for ( it = images.begin(); it != images.end(); ++it )
+ out << "# " << *it << "\n";
+ out << "#\n";
+ out << "# Created: " << QDateTime::currentDateTime().toString() << "\n";
+ out << "# by: The PyQt User Interface Compiler (pyuic) " << PYQT_VERSION << "\n";
+ out << "#\n";
+ out << "# WARNING! All changes made in this file will be lost!\n";
+
+ out << "\n";
+ out << "\n";
+ out << "from qt import QImage, QMimeSourceFactory";
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ out << ", qUncompress";
+#endif
+ out << "\n";
+ out << "\n";
+ out << "\n";
+
+
+ QPtrList<EmbedImage> list_image;
+ list_image.setAutoDelete( TRUE );
+ int image_count = 0;
+ for ( it = images.begin(); it != images.end(); ++it ) {
+ QImage img;
+ if ( !img.load( *it ) ) {
+ fprintf( stderr, "pyuic: cannot load image file %s\n", (*it).latin1() );
+ continue;
+ }
+ EmbedImage *e = new EmbedImage;
+ e->width = img.width();
+ e->height = img.height();
+ e->depth = img.depth();
+ e->numColors = img.numColors();
+ e->colorTable = new QRgb[e->numColors];
+ e->alpha = img.hasAlphaBuffer();
+ memcpy(e->colorTable, img.colorTable(), e->numColors*sizeof(QRgb));
+ QFileInfo fi( *it );
+ e->name = fi.fileName();
+ e->cname = QString("image_%1").arg( image_count++);
+ list_image.append( e );
+ out << "# " << *it << "\n";
+ QString s;
+ if ( e->depth == 1 )
+ img = img.convertBitOrder(QImage::BigEndian);
+ out << s.sprintf( "%s_data =",
+ (const char *)e->cname );
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ e->compressed =
+#endif
+ embedData( out, img.bits(), img.numBytes() );
+ out << "\n";
+ if ( e->numColors ) {
+ out << s.sprintf( "%s_ctable = [",
+ (const char *)e->cname );
+ embedData( out, e->colorTable, e->numColors );
+ out << "\n]\n\n";
+ }
+ }
+
+ if ( !list_image.isEmpty() ) {
+ out << indent << "embed_image_vec = [\n";
+ ++indent;
+ EmbedImage *e = list_image.first();
+ while ( e ) {
+ out << indent << "["
+ << e->width << ","
+ << e->height << ","
+ << e->depth << ","
+ << e->cname << "_data,"
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ << e->compressed << ","
+#endif
+ << e->numColors << ",";
+ if ( e->numColors )
+ out << e->cname << "_ctable,";
+ else
+ out << "None,";
+ if ( e->alpha )
+ out << "1,";
+ else
+ out << "0,";
+ out << "\"" << e->name << "\"],\n";
+ e = list_image.next();
+ }
+ --indent;
+ out << indent << "]\n";
+
+ out << "\n"
+ "\n"
+ "def uic_findImage(name):\n";
+ ++indent;
+ out << indent << "global embed_image_vec\n";
+ out << "\n";
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ out << indent << "for (w,h,depth,data,comp,nrCol,colTab,alpha,iname) in embed_image_vec:" << endl;
+#else
+ out << indent << "for (w,h,depth,data,nrCol,colTab,alpha,iname) in embed_image_vec:" << endl;
+#endif
+ ++indent;
+ out << indent << "if iname == str(name):" << endl;
+ ++indent;
+#ifndef QT_NO_IMAGE_COLLECTION_COMPRESSION
+ // Keep the data object alive until we have a deep copy of the image.
+ out << indent << "data = qUncompress(data).data()\n";
+#endif
+ out << indent << "img = QImage(data,w,h,depth,colTab,nrCol,QImage.BigEndian).copy()\n";
+ out << "\n";
+ out << indent << "if alpha:\n";
+ ++indent;
+ out << indent << "img.setAlphaBuffer(1)\n";
+ --indent;
+ out << "\n";
+ out << indent << "return img\n";
+ --indent;
+ --indent;
+ out << endl;
+ out << indent << "return QImage()\n";
+ --indent;
+ out << "\n";
+ out << "\n";
+
+ out << indent << "class MimeSourceFactory_" << cProject << "(QMimeSourceFactory):\n";
+ ++indent;
+ out << indent << "def __init__(self):\n";
+ ++indent;
+ out << indent << "QMimeSourceFactory.__init__(self)\n";
+ out << "\n";
+ --indent;
+ out << indent << "def data(self,abs_name):\n";
+ ++indent;
+ out << indent << "d = QMimeSourceFactory.data(self,abs_name)\n";
+ out << indent << "if d or abs_name.isNull():\n";
+ ++indent;
+ out << indent << "return d\n";
+ --indent;
+ out << "\n";
+ out << indent << "img = uic_findImage(abs_name)\n";
+ out << indent << "if not img.isNull():\n";
+ ++indent;
+ out << indent << "self.setImage(abs_name,img)\n";
+ --indent;
+ out << "\n";
+ out << indent << "return QMimeSourceFactory.data(self,abs_name)\n";
+ --indent;
+ --indent;
+ out << "\n";
+ out << "\n";
+
+ out << indent << "factory = None\n";
+ out << "\n";
+
+ out << indent << "def qInitImages_" << cProject << "():\n";
+ ++indent;
+ out << indent << "global factory\n";
+ out << "\n";
+ out << indent << "if factory is None:\n";
+ ++indent;
+ out << indent << "factory = MimeSourceFactory_" << cProject << "()\n";
+ out << indent << "QMimeSourceFactory.defaultFactory().addFactory(factory)\n";
+ --indent;
+ --indent;
+ out << "\n";
+ out << "\n";
+
+ out << indent << "def qCleanupImages_" << cProject << "():\n";
+ ++indent;
+ out << indent << "global factory\n";
+ out << "\n";
+ out << indent << "if factory is not None:\n";
+ ++indent;
+ out << indent << "QMimeSourceFactory.defaultFactory().removeFactory(factory)\n";
+ out << indent << "factory = None\n";
+ --indent;
+ --indent;
+ out << "\n";
+ out << "\n";
+
+ out << indent << "class StaticInitImages_" << cProject << ":\n";
+ ++indent;
+ out << indent << "def __init__(self):\n";
+ ++indent;
+ out << indent << "self.cleanup = qCleanupImages_" << cProject << "\n";
+ out << indent << "qInitImages_" << cProject << "()\n";
+ --indent;
+ out << "\n";
+ out << indent << "def __del__(self):\n";
+ ++indent;
+ out << indent << "self.cleanup()\n";
+ --indent;
+ --indent;
+ out << "\n";
+ out << "\n";
+
+ out << "staticImages = StaticInitImages_" << cProject << "()\n";
+ }
+}
diff --git a/python/pyqt/pyuic3/form.cpp b/python/pyqt/pyuic3/form.cpp
new file mode 100644
index 00000000..aedb4ac2
--- /dev/null
+++ b/python/pyqt/pyuic3/form.cpp
@@ -0,0 +1,938 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include <stdio.h>
+#include "uic.h"
+#include "parser.h"
+#include "widgetdatabase.h"
+#include "domtool.h"
+#include <qstringlist.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qregexp.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+
+#if QT_VERSION < 0x030100
+#include <zlib.h>
+#endif
+
+static QByteArray unzipXPM( QString data, ulong& length )
+{
+#if QT_VERSION >= 0x030100
+ const int lengthOffset = 4;
+ int baSize = data.length() / 2 + lengthOffset;
+ uchar *ba = new uchar[ baSize ];
+ for ( int i = lengthOffset; i < baSize; ++i ) {
+ char h = data[ 2 * (i-lengthOffset) ].latin1();
+ char l = data[ 2 * (i-lengthOffset) + 1 ].latin1();
+ uchar r = 0;
+ if ( h <= '9' )
+ r += h - '0';
+ else
+ r += h - 'a' + 10;
+ r = r << 4;
+ if ( l <= '9' )
+ r += l - '0';
+ else
+ r += l - 'a' + 10;
+ ba[ i ] = r;
+ }
+ // qUncompress() expects the first 4 bytes to be the expected length of the
+ // uncompressed data
+ ba[0] = ( length & 0xff000000 ) >> 24;
+ ba[1] = ( length & 0x00ff0000 ) >> 16;
+ ba[2] = ( length & 0x0000ff00 ) >> 8;
+ ba[3] = ( length & 0x000000ff );
+ QByteArray baunzip = qUncompress( ba, baSize );
+ delete[] ba;
+ return baunzip;
+#else
+ uchar *ba = new uchar[ data.length() / 2 ];
+ for ( int i = 0; i < (int)data.length() / 2; ++i ) {
+ char h = data[ 2 * i ].latin1();
+ char l = data[ 2 * i + 1 ].latin1();
+ uchar r = 0;
+ if ( h <= '9' )
+ r += h - '0';
+ else
+ r += h - 'a' + 10;
+ r = r << 4;
+ if ( l <= '9' )
+ r += l - '0';
+ else
+ r += l - 'a' + 10;
+ ba[ i ] = r;
+ }
+ // I'm not sure this makes sense. Why couldn't the compressed data be
+ // less than 20% of the original data? Maybe it's enough to trust the
+ // `length' passed as an argument. Quoting the zlib header:
+ // Upon entry, destLen is the total size of the destination
+ // buffer, which must be large enough to hold the entire
+ // uncompressed data. (The size of the uncompressed data must
+ // have been saved previously by the compressor and transmitted
+ // to the decompressor by some mechanism outside the scope of
+ // this compression library.)
+ // Which is the role of `length'. On the other hand this could prevent
+ // crashes in some cases of slightly corrupt UIC files.
+ if ( length < data.length() * 5 )
+ length = data.length() * 5;
+ QByteArray baunzip( length );
+ ::uncompress( (uchar*) baunzip.data(), &length, ba, data.length()/2 );
+ delete[] ba;
+ return baunzip;
+#endif
+}
+
+
+
+/*!
+ Creates an implementation ( cpp-file ) for the form given in \a e
+
+ \sa createFormDecl(), createObjectImpl()
+ */
+void Uic::createFormImpl( const QDomElement &e )
+{
+ QDomElement n;
+ QDomNodeList nl;
+ int i;
+ QString objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return;
+ QString objName = getObjectName( e );
+
+ // generate local and local includes required
+ QStringList globalIncludes;
+ QStringList::Iterator it;
+ QStringList sqlClasses;
+ QStringList axwidgets, databrowsers;
+
+ QMap<QString, CustomInclude> customWidgetIncludes;
+ QMap<QString, QString> functionImpls;
+ // find additional slots and functions
+ QStringList extraSlots;
+ QStringList extraSlotTypes;
+ nl = e.parentNode().toElement().elementsByTagName( "slot" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ n = nl.item(i).toElement();
+ if ( n.parentNode().toElement().tagName() != "slots"
+ && n.parentNode().toElement().tagName() != "connections" )
+ continue;
+ if ( n.attribute( "language", "C++" ) != "C++" )
+ continue;
+ QString slotName = n.firstChild().toText().data().stripWhiteSpace();
+ if ( slotName.endsWith( ";" ) )
+ slotName = slotName.left( slotName.length() - 1 );
+
+ extraSlots += Parser::cleanArgs(slotName);
+ extraSlotTypes += n.attribute( "returnType", "void" );
+ }
+
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "functions" ) { // compatibility
+ for ( QDomElement n2 = n.firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "function" ) {
+ QString fname = n2.attribute( "name" );
+ fname = Parser::cleanArgs( fname );
+ functionImpls.insert( fname, n2.firstChild().toText().data() );
+ }
+ }
+ }
+ }
+
+ // additional includes (local or global ) and forward declaractions
+ nl = e.parentNode().toElement().elementsByTagName( "include" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement n2 = nl.item(i).toElement();
+
+ QString s = n2.firstChild().toText().data();
+ if ( n2.attribute( "location" ) != "local" ) {
+ if ( s.right( 5 ) == ".ui.h" && !QFile::exists( s ) )
+ continue;
+ if ( n2.attribute( "impldecl", "in implementation" ) != "in implementation" )
+ continue;
+ globalIncludes += s;
+ }
+ }
+
+ // do the local includes afterwards, since global includes have priority on clashes
+ QFileInfo fi(fileName);
+
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement n2 = nl.item(i).toElement();
+ QString s = n2.firstChild().toText().data();
+ if ( n2.attribute( "location" ) == "local" &&!globalIncludes.contains( s ) ) {
+ if ( s.right( 5 ) != ".ui.h" )
+ continue;
+
+ if ( !QFile::exists( s ) )
+ {
+ s = fi.dirPath() + "/" + s;
+
+ if ( !QFile::exists( s ) )
+ continue;
+ }
+
+ if ( QFile::exists( s ) )
+ {
+ QFile f(s);
+ f.open(IO_ReadOnly);
+ QTextStream headerStream(&f);
+ QString line;
+ QString functionText;
+ QString functionName;
+ QRegExp rx("void .*::(.*\\(.*\\))");
+ int pos, inFunction = 0;
+
+ while (line = headerStream.readLine())
+ {
+ pos = rx.search(line);
+
+ if (pos > -1)
+ {
+ if (inFunction)
+ functionImpls.insert(Parser::cleanArgs(functionName),functionText);
+
+ functionName = rx.cap(1);
+ functionText = "";
+ inFunction = 1;
+ }
+ functionText += line + "\n";
+ }
+
+ if (inFunction)
+ functionImpls.insert(Parser::cleanArgs(functionName),functionText);
+ }
+ }
+ }
+
+ // additional custom widget headers
+ nl = e.parentNode().toElement().elementsByTagName( "header" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement n2 = nl.item(i).toElement();
+ QString s = n2.firstChild().toText().data();
+ if ( n2.attribute( "location" ) != "local" )
+ globalIncludes += s;
+ }
+
+ // includes for child widgets
+ for ( it = tags.begin(); it != tags.end(); ++it ) {
+ nl = e.parentNode().toElement().elementsByTagName( *it );
+ for ( i = 1; i < (int) nl.length(); i++ ) { // start at 1, 0 is the toplevel widget
+ QString name = getClassName( nl.item(i).toElement() );
+ if ( name == "Spacer" ) {
+ globalIncludes += "qlayout.h";
+ globalIncludes += "qapplication.h";
+ continue;
+ }
+ if ( name.mid( 1 ) == "ListView" )
+ globalIncludes += "qheader.h";
+ else if ( name == "QAxWidget" )
+ axwidgets += getObjectName(nl.item(i).toElement());
+ else if ( name == "QDataBrowser" )
+ databrowsers += getObjectName(nl.item(i).toElement());
+ if ( name != objClass ) {
+ int wid = WidgetDatabase::idFromClassName( name );
+ QMap<QString, CustomInclude>::Iterator it = customWidgetIncludes.find( name );
+ if ( it == customWidgetIncludes.end() )
+ globalIncludes += WidgetDatabase::includeFile( wid );
+ }
+ }
+ }
+
+ if (globalIncludes.findIndex("qtable.h") >= 0)
+ out << indent << "from qttable import QTable" << endl;
+
+ if (!axwidgets.empty())
+ out << indent << "from qtaxcontainer import QAxWidget" << endl;
+
+ if (globalIncludes.findIndex("qextscintilla.h") >= 0)
+ out << indent << "from qtext import QextScintilla" << endl;
+
+ registerDatabases( e );
+ dbConnections = unique( dbConnections );
+ if ( dbConnections.count() )
+ sqlClasses += "QSqlDatabase";
+ if ( dbCursors.count() )
+ sqlClasses += "QSqlCursor";
+ bool dbForm = FALSE;
+ if ( dbForms[ "(default)" ].count() )
+ dbForm = TRUE;
+ bool subDbForms = FALSE;
+ for ( it = dbConnections.begin(); it != dbConnections.end(); ++it ) {
+ if ( !(*it).isEmpty() && (*it) != "(default)" ) {
+ if ( dbForms[ (*it) ].count() ) {
+ subDbForms = TRUE;
+ break;
+ }
+ }
+ }
+ if ( dbForm || subDbForms ) {
+ sqlClasses += "QSqlForm";
+ sqlClasses += "QSqlRecord";
+ }
+
+ if (globalIncludes.findIndex("qdatatable.h") >= 0)
+ sqlClasses += "QDataTable";
+
+ if (globalIncludes.findIndex("qtableview.h") >= 0)
+ sqlClasses += "QTableView";
+
+ if (globalIncludes.findIndex("qdatabrowser.h") >= 0)
+ sqlClasses += "QDataBrowser";
+
+ if (globalIncludes.findIndex("qdataview.h") >= 0)
+ sqlClasses += "QDataView";
+
+ if ( !sqlClasses.empty() ) {
+ out << indent << "from qtsql import";
+ const char *sep = " ";
+
+ for ( it = sqlClasses.begin(); it != sqlClasses.end(); ++it ) {
+ out << sep << (*it);
+ sep = ", ";
+ }
+
+ out << endl;
+ }
+
+ // Add any code from the comments.
+ if (!pyCode.isEmpty())
+ out << pyCode;
+
+ out << endl;
+
+ // find out what images are required
+ QStringList requiredImages;
+ static const char *imgTags[] = { "pixmap", "iconset", 0 };
+ for ( i = 0; imgTags[i] != 0; i++ ) {
+ nl = e.parentNode().toElement().elementsByTagName( imgTags[i] );
+ for ( int j = 0; j < (int) nl.length(); j++ ) {
+ QDomNode nn = nl.item(j);
+ while ( nn.parentNode() != e.parentNode() )
+ nn = nn.parentNode();
+ if ( nn.nodeName() != "customwidgets" )
+ requiredImages += nl.item(j).firstChild().toText().data();
+ }
+ }
+
+ // register the object and unify its name
+ objName = registerObject( objName );
+
+ QStringList images;
+ QStringList xpmImages;
+ if ( pixmapLoaderFunction.isEmpty() && !externPixmaps ) {
+ // create images
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "images" ) {
+ nl = n.elementsByTagName( "image" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QString img = registerObject( nl.item(i).toElement().attribute( "name" ) );
+ if ( !requiredImages.contains( img ) )
+ continue;
+ QDomElement tmp = nl.item(i).firstChild().toElement();
+ if ( tmp.tagName() != "data" )
+ continue;
+ QString format = tmp.attribute("format", "PNG" );
+ QString data = tmp.firstChild().toText().data();
+ if ( format == "XPM.GZ" ) {
+ xpmImages += img;
+ ulong length = tmp.attribute("length").toULong();
+ QByteArray baunzip = unzipXPM( data, length );
+ length = baunzip.size();
+ // shouldn't we test the initial `length' against the
+ // resulting `length' to catch corrupt UIC files?
+ int a = 0;
+ out << indent << img << "_data = [" << endl;
+ while ( baunzip[a] != '\"' )
+ a++;
+ for ( ; a < (int) length; a++ )
+ {
+ char ch;
+
+ if ((ch = baunzip[a]) == '}')
+ {
+ out << endl << "]";
+ break;
+ }
+
+ out << ch;
+ }
+ out << endl;
+ } else {
+ images += img;
+ out << indent << img << "_data = \\" << endl;
+ ++indent;
+ out << indent << "\"";
+ int a ;
+ for ( a = 0; a < (int) (data.length()/2)-1; a++ ) {
+ out << "\\x" << QString(data[2*a]) << QString(data[2*a+1]);
+ if ( a % 12 == 11 )
+ out << "\" \\" << endl << indent << "\"";
+ }
+ out << "\\x" << QString(data[2*a]) << QString(data[2*a+1]) << "\"" << endl;
+ --indent;
+ }
+ }
+ }
+ }
+ out << endl;
+ } else if ( externPixmaps ) {
+#if QT_VERSION >= 0x030100
+ pixmapLoaderFunction = "QPixmap.fromMimeSource";
+#else
+ out << indent << "def uic_load_pixmap_" << objName << "(name):" << endl;
+ ++indent;
+ out << indent << "pix = QPixmap()" << endl;
+ out << indent << "m = QMimeSourceFactory.defaultFactory().data(name)" << endl;
+ out << endl;
+ out << indent << "if m:" << endl;
+ ++indent;
+ out << indent << "QImageDrag.decode(m,pix)" << endl;
+ --indent;
+ out << endl;
+ out << indent << "return pix" << endl;
+ --indent;
+ out << endl;
+ out << endl;
+ pixmapLoaderFunction = "uic_load_pixmap_" + objName;
+#endif
+ }
+
+
+ // constructor(s)
+
+ out << indent << "class " << nameOfClass << "(" << objClass << "):" << endl;
+ ++indent;
+
+ if ( objClass == "QDialog" || objClass == "QWizard" ) {
+ out << indent << "def __init__(self,parent = None,name = None,modal = 0,fl = 0):" << endl;
+ ++indent;
+ out << indent << objClass << ".__init__(self,parent,name,modal,fl)" << endl;
+ } else if ( objClass == "QWidget" ) {
+ out << indent << "def __init__(self,parent = None,name = None,fl = 0):" << endl;
+ ++indent;
+ out << indent << objClass << ".__init__(self,parent,name,fl)" << endl;
+ } else if ( objClass == "QMainWindow" ) {
+ out << indent << "def __init__(self,parent = None,name = None,fl = 0):" << endl;
+ ++indent;
+ out << indent << objClass << ".__init__(self,parent,name,fl)" << endl;
+ out << indent << "self.statusBar()" << endl;
+ isMainWindow = TRUE;
+ } else {
+ out << indent << "def __init__(self,parent = None,name = None):" << endl;
+ ++indent;
+ out << indent << objClass << ".__init__(self,parent,name)" << endl;
+ }
+
+ out << endl;
+
+ // create pixmaps for all images
+ if ( !images.isEmpty() ) {
+ QStringList::Iterator it;
+ for ( it = images.begin(); it != images.end(); ++it ) {
+ out << indent << "self." << (*it) << " = QPixmap()" << endl;
+ out << indent << "self." << (*it) << ".loadFromData(" << (*it) << "_data,\"PNG\")" << endl;
+ }
+ }
+ // create pixmaps for all images
+ if ( !xpmImages.isEmpty() ) {
+ for ( it = xpmImages.begin(); it != xpmImages.end(); ++it ) {
+ out << indent << "self." << (*it) << " = QPixmap(" << (*it) << "_data)" << endl;
+ }
+ out << endl;
+ }
+
+
+ // set the properties
+ QSize geometry( 0, 0 );
+
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = stdsetdef;
+ if ( n.hasAttribute( "stdset" ) )
+ stdset = toBool( n.attribute( "stdset" ) );
+ QString prop = n.attribute("name");
+ QDomElement n2 = n.firstChild().toElement();
+ QString value = setObjectProperty( objClass, QString::null, prop, n2, stdset );
+ if ( value.isEmpty() )
+ continue;
+
+ if ( prop == "geometry" && n2.tagName() == "rect") {
+ QDomElement n3 = n2.firstChild().toElement();
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ geometry.setWidth( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "height" )
+ geometry.setHeight( n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ } else {
+ QString call;
+ if ( stdset )
+ call = "self." + mkStdSet( prop ) + "(" + value + ")";
+ else
+ call = "self.setProperty(\"" + prop + "\",QVariant(" + value + "))";
+
+ if ( n2.tagName() == "string" ) {
+ trout << trindent << call << endl;
+ } else if ( prop == "name" ) {
+ out << indent << "if not name:" << endl;
+ ++indent;
+ out << indent << call << endl;
+ --indent;
+ out << endl;
+ } else {
+ out << indent << call << endl;
+ }
+ }
+ }
+ }
+
+ out << endl;
+
+ // create all children, some forms have special requirements
+
+ if ( objClass == "QWizard" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, "self" );
+ QString comment;
+ QString label = DomTool::readAttribute( n, "title", "", comment ).toString();
+ out << indent << "self.addPage(" << page << ",QString(\"\"))" << endl;
+ trout << trindent << "self.setTitle(" << page << ","<< trcall( label, comment ) << ")" << endl;
+ QVariant def( FALSE, 0 );
+ if ( DomTool::hasAttribute( n, "backEnabled" ) )
+ out << indent << "self.setBackEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "backEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "nextEnabled" ) )
+ out << indent << "self.setNextEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "nextEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "finishEnabled" ) )
+ out << indent << "self.setFinishEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "finishEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "helpEnabled" ) )
+ out << indent << "self.setHelpEnabled(" << page << "," << mkBool( DomTool::readAttribute( n, "helpEnabled", def).toBool() ) << ")" << endl;
+ if ( DomTool::hasAttribute( n, "finish" ) )
+ out << indent << "self.setFinish( " << page << "," << mkBool( DomTool::readAttribute( n, "finish", def).toBool() ) << ")" << endl;
+ }
+ }
+ } else { // standard widgets
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) )
+ createObjectImpl( n, objName, "self" );
+ }
+ }
+
+ // database support
+ dbConnections = unique( dbConnections );
+ if ( dbConnections.count() )
+ out << endl;
+ for ( it = dbConnections.begin(); it != dbConnections.end(); ++it ) {
+ if ( !(*it).isEmpty() && (*it) != "(default)") {
+ out << indent << "self." << (*it) << "Connection = QSqlDatabase.database(\"" <<(*it) << "\")" << endl;
+ }
+ }
+
+ nl = e.parentNode().toElement().elementsByTagName( "widget" );
+ for ( i = 1; i < (int) nl.length(); i++ ) { // start at 1, 0 is the toplevel widget
+ n = nl.item(i).toElement();
+ QString s = getClassName( n );
+ if ( (dbForm || subDbForms) && (s == "QDataBrowser" || s == "QDataView") ) {
+ QString objName = getObjectName( n );
+ QString tab = getDatabaseInfo( n, "table" );
+ QString con = getDatabaseInfo( n, "connection" );
+ out << indent << objName << "Form = QSqlForm(self,\"" << objName << "Form\")" << endl;
+ QDomElement n2;
+ for ( n2 = n.firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() )
+ createFormImpl( n2, objName, con, tab );
+ out << indent << "self." << objName << ".setForm(" << objName << "Form)" << endl;
+ }
+ }
+
+ // actions, toolbars, menubar
+ bool needEndl = FALSE;
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "actions" ) {
+ if ( !needEndl )
+ out << endl;
+ createActionImpl( n.firstChild().toElement(), "self" );
+ needEndl = TRUE;
+ }
+ }
+ if ( needEndl )
+ out << endl;
+ needEndl = FALSE;
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "toolbars" ) {
+ if ( !needEndl )
+ out << endl;
+ createToolbarImpl( n, objClass, objName );
+ needEndl = TRUE;
+ }
+ }
+ if ( needEndl )
+ out << endl;
+ needEndl = FALSE;
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "menubar" ) {
+ if ( !needEndl )
+ out << endl;
+ createMenuBarImpl( n, objClass, objName );
+ needEndl = TRUE;
+ }
+ }
+ if ( needEndl )
+ out << endl;
+
+ out << endl;
+ out << indent << "self.languageChange()" << endl;
+ out << endl;
+
+ // take minimumSizeHint() into account, for height-for-width widgets
+ if ( !geometry.isNull() ) {
+ out << indent << "self.resize(QSize(" << geometry.width() << ","
+ << geometry.height() <<").expandedTo(self.minimumSizeHint()))" << endl;
+ out << indent << "self.clearWState(Qt.WState_Polished)" << endl;
+ }
+
+ for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "connections" ) {
+ // setup signals and slots connections
+ out << endl;
+ nl = n.elementsByTagName( "connection" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QString sender, receiver, signal, slot;
+ for ( QDomElement n2 = nl.item(i).firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "sender" )
+ sender = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "receiver" )
+ receiver = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "signal" )
+ signal = n2.firstChild().toText().data();
+ else if ( n2.tagName() == "slot" )
+ slot = n2.firstChild().toText().data();
+ }
+ if ( sender.isEmpty() ||
+ receiver.isEmpty() ||
+ signal.isEmpty() ||
+ slot.isEmpty() )
+ continue;
+ if ( sender[0] == '<' ||
+ receiver[0] == '<' ||
+ signal[0] == '<' ||
+ slot[0] == '<' )
+ continue;
+
+ sender = registeredName( sender );
+ receiver = registeredName( receiver );
+
+ // translate formwindow name to "self"
+ if ( sender == objName )
+ sender = "self";
+ else
+ sender = "self." + sender;
+
+ bool isaxwidget = (axwidgets.findIndex(receiver) >= 0);
+ bool isdatabrowser = (databrowsers.findIndex(receiver) >= 0);
+
+ if ( receiver == objName )
+ receiver = "self";
+ else
+ receiver = "self." + receiver;
+
+ out << indent << "self.connect(" << sender
+ << ",SIGNAL(\"" << signal << "\")," << receiver;
+
+ // Normally we never use the SLOT() macro in case the
+ // connection is to a method of a Python custom widget. The
+ // exception is if the receiver is a QAxWidget where it must be
+ // used because the slots are dynamic.
+ if (isaxwidget)
+ out << ",SLOT(\"" << slot << "\")";
+ else
+ {
+ QString mname = slot.left(slot.find('('));
+
+ // Rename slots that have different names in PyQt.
+ if (isdatabrowser && mname == "del")
+ mname = "delOnCursor";
+
+ out << "." << mname;
+ }
+
+ out << ")" << endl;
+ }
+ } else if ( n.tagName() == "tabstops" ) {
+ // setup tab order
+ out << endl;
+ QString lastName;
+ QDomElement n2 = n.firstChild().toElement();
+ while ( !n2.isNull() ) {
+ if ( n2.tagName() == "tabstop" ) {
+ QString name = n2.firstChild().toText().data();
+ name = registeredName( name );
+ if ( !lastName.isEmpty() )
+ out << indent << "self.setTabOrder(self." << lastName << ",self." << name << ")" << endl;
+ lastName = name;
+ }
+ n2 = n2.nextSibling().toElement();
+ }
+ }
+ }
+
+ // buddies
+ bool firstBuddy = TRUE;
+ for ( QValueList<Buddy>::Iterator buddy = buddies.begin(); buddy != buddies.end(); ++buddy ) {
+ if ( isObjectRegistered( (*buddy).buddy ) ) {
+ if ( firstBuddy ) {
+ out << endl;
+ }
+ out << indent << "self." << (*buddy).key << ".setBuddy(self." << registeredName( (*buddy).buddy ) << ")" << endl;
+ firstBuddy = FALSE;
+ }
+
+ }
+
+ if ( extraSlots.find( "init()" ) != extraSlots.end() )
+ out << endl << indent << "self.init()" << endl;
+
+ // end of constructor
+ --indent;
+
+ // destructor
+ if ( extraSlots.find( "destroy()" ) != extraSlots.end() ) {
+ out << endl;
+ out << indent << "def __del__(self):" << endl;
+ ++indent;
+ out << indent << "self.destroy()" << endl;
+ --indent;
+ }
+
+ // handle application events if required
+ bool needFontEventHandler = FALSE;
+ bool needSqlTableEventHandler = FALSE;
+ bool needSqlDataBrowserEventHandler = FALSE;
+ nl = e.elementsByTagName( "widget" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ if ( !DomTool::propertiesOfType( nl.item(i).toElement() , "font" ).isEmpty() )
+ needFontEventHandler = TRUE;
+ QString s = getClassName( nl.item(i).toElement() );
+ if ( s == "QDataTable" || s == "QDataBrowser" ) {
+ if ( !isFrameworkCodeGenerated( nl.item(i).toElement() ) )
+ continue;
+ if ( s == "QDataTable" )
+ needSqlTableEventHandler = TRUE;
+ if ( s == "QDataBrowser" )
+ needSqlDataBrowserEventHandler = TRUE;
+ }
+ if ( needFontEventHandler && needSqlTableEventHandler && needSqlDataBrowserEventHandler )
+ break;
+ }
+ if ( needFontEventHandler && FALSE ) {
+ // indent = "\t"; // increase indentation for if-clause below
+ out << "/* " << endl;
+ out << " * Main event handler. Reimplemented to handle" << endl;
+ out << " * application font changes";
+ out << " */" << endl;
+ out << "bool " << nameOfClass << "::event( QEvent* ev )" << endl;
+ out << "{" << endl;
+ out << " bool ret = " << objClass << "::event( ev ); " << endl;
+ if ( needFontEventHandler ) {
+ ++indent;
+ out << " if ( ev->type() == QEvent::ApplicationFontChange ) {" << endl;
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ n = nl.item(i).toElement();
+ QStringList list = DomTool::propertiesOfType( n, "font" );
+ for ( it = list.begin(); it != list.end(); ++it )
+ createExclusiveProperty( n, *it );
+ }
+ out << " }" << endl;
+ --indent;
+ }
+ out << "}" << endl;
+ out << endl;
+ }
+
+ if ( needSqlTableEventHandler || needSqlDataBrowserEventHandler ) {
+ out << endl;
+ out << indent << "# Widget polish. Reimplemented to handle default data" << endl;
+ if ( needSqlTableEventHandler )
+ out << indent << "# table initialization." << endl;
+ if ( needSqlDataBrowserEventHandler )
+ out << indent << "# browser initialization." << endl;
+ out << indent << "def polish(self):" << endl;
+ ++indent;
+ if ( needSqlTableEventHandler ) {
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QString s = getClassName( nl.item(i).toElement() );
+ if ( s == "QDataTable" ) {
+ n = nl.item(i).toElement();
+ QString c = getObjectName( n );
+ QString conn = getDatabaseInfo( n, "connection" );
+ QString tab = getDatabaseInfo( n, "table" );
+ if ( !( conn.isEmpty() || tab.isEmpty() || !isFrameworkCodeGenerated( nl.item(i).toElement() ) ) ) {
+ out << indent << "if self." << c << ":" << endl;
+ ++indent;
+ out << indent << "cursor = self." << c << ".sqlCursor()" << endl;
+ out << endl;
+ out << indent << "if not cursor:" << endl;
+ ++indent;
+ if ( conn == "(default)" )
+ out << indent << "cursor = QSqlCursor(\"" << tab << "\")" << endl;
+ else
+ out << indent << "cursor = QSqlCursor(\"" << tab << "\",1,self." << conn << "Connection)" << endl;
+ out << indent << "if self." << c << ".isReadOnly():" << endl;
+ ++indent;
+ out << indent << "cursor.setMode(QSqlCursor.ReadOnly)" << endl;
+ --indent;
+ out << indent << "self." << c << ".setSqlCursor(cursor,0,1)" << endl;
+ --indent;
+ out << endl;
+ out << indent << "if not cursor.isActive():" << endl;
+ ++indent;
+ out << indent << "self." << c << ".refresh(QDataTable.RefreshAll)" << endl;
+ --indent;
+ --indent;
+ }
+ }
+ }
+ }
+ if ( needSqlDataBrowserEventHandler ) {
+ nl = e.elementsByTagName( "widget" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ QString s = getClassName( nl.item(i).toElement() );
+ if ( s == "QDataBrowser" ) {
+ QString obj = getObjectName( nl.item(i).toElement() );
+ QString tab = getDatabaseInfo( nl.item(i).toElement(),
+ "table" );
+ QString conn = getDatabaseInfo( nl.item(i).toElement(),
+ "connection" );
+ if ( !(tab.isEmpty() || !isFrameworkCodeGenerated( nl.item(i).toElement() ) ) ) {
+ out << indent << "if self." << obj << ":" << endl;
+ ++indent;
+ out << indent << "if not self." << obj << ".sqlCursor():" << endl;
+ ++indent;
+ if ( conn == "(default)" )
+ out << indent << "cursor = QSqlCursor(\"" << tab << "\")" << endl;
+ else
+ out << indent << "cursor = QSqlCursor(\"" << tab << "\",1,self." << conn << "Connection)" << endl;
+ out << indent << "self." << obj << ".setSqlCursor(cursor,1)" << endl;
+ out << indent << "self." << obj << ".refresh()" << endl;
+ out << indent << "self." << obj << ".first()" << endl;
+ --indent;
+ --indent;
+ }
+ }
+ }
+ }
+ out << indent << objClass << ".polish(self)" << endl;
+ --indent;
+ }
+
+ out << endl;
+ out << endl;
+ out << indent << "def languageChange(self):" << endl;
+ uint old = indent.setIndent(0);
+ out << languageChangeBody << endl;
+ indent.setIndent(old);
+
+ // create stubs for additional slots if necessary
+ if ( !extraSlots.isEmpty() && writeFunctImpl ) {
+ QStringList::ConstIterator cit;
+
+ for ( cit = extraSlots.begin(); cit != extraSlots.end(); ++cit ) {
+ pySlot(cit);
+
+ bool createWarning = TRUE;
+ QString fname = Parser::cleanArgs( *cit );
+ QMap<QString, QString>::Iterator fit = functionImpls.find( fname );
+ if ( fit != functionImpls.end() ) {
+ int begin = (*fit).find( "{" );
+ QString body = (*fit).mid( begin + 1, (*fit).findRev( "}" ) - begin - 1 );
+ createWarning = body.simplifyWhiteSpace().isEmpty();
+ if ( !createWarning )
+ {
+ ++indent;
+ QString formatted_body = body.replace(QRegExp("\n"), QString("\n") + QString(indent));
+ out << formatted_body << endl;
+ --indent;
+ }
+ }
+ if ( createWarning ) {
+ out << endl;
+ ++indent;
+ if ( *cit != "init()" && *cit != "destroy()" )
+ out << indent << "print \"" << nameOfClass << "." << (*cit) << ": Not implemented yet\"" << endl;
+ else
+ out << indent << "pass" << endl;
+ --indent;
+ }
+ }
+ }
+
+ --indent;
+}
+
+
+/*! Creates form support implementation code for the widgets given
+ in \a e.
+
+ Traverses recursively over all children.
+ */
+
+void Uic::createFormImpl( const QDomElement& e, const QString& form, const QString& connection, const QString& table )
+{
+ if ( e.tagName() == "widget" &&
+ e.attribute( "class" ) != "QDataTable" ) {
+ QString field = getDatabaseInfo( e, "field" );
+ if ( !field.isEmpty() ) {
+ if ( isWidgetInTable( e, connection, table ) )
+ out << indent << form << "Form.insert(self." << getObjectName( e ) << "," << fixString( field ) << ")" << endl;
+ }
+ }
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ createFormImpl( n, form, connection, table );
+ }
+}
+
+
+// Generate a Python slot definition.
+
+void Uic::pySlot(QStringList::ConstIterator &it)
+{
+ out << endl;
+
+ int astart = (*it).find('(');
+ out << indent << "def " << (*it).left(astart) << "(self";
+
+ // We don't reproduce the argument names (if any) because we would have to
+ // remove the types - too complicated for the moment, so we just count them
+ // and give them names based on their position.
+
+ QString args = (*it).mid(astart + 1,(*it).find(')') - astart - 1).stripWhiteSpace();
+
+ if (!args.isEmpty()) {
+ int nrargs = args.contains(',') + 1;
+
+ for (int i = 0; i < nrargs; ++i)
+ out << ",a" << i;
+ }
+
+ out << "):";
+}
diff --git a/python/pyqt/pyuic3/globaldefs.h b/python/pyqt/pyuic3/globaldefs.h
new file mode 100644
index 00000000..4ae0cd83
--- /dev/null
+++ b/python/pyqt/pyuic3/globaldefs.h
@@ -0,0 +1,56 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef GLOBALDEFS_H
+#define GLOBALDEFS_H
+
+#include <qcolor.h>
+#include <qapplication.h>
+
+#define BOXLAYOUT_DEFAULT_MARGIN 11
+#define BOXLAYOUT_DEFAULT_SPACING 6
+
+#ifndef NO_STATIC_COLORS
+static QColor *backColor1 = 0;
+static QColor *backColor2 = 0;
+static QColor *selectedBack = 0;
+
+static void init_colors()
+{
+ if ( backColor1 )
+ return;
+
+#if 0 // a calculated alternative for backColor1
+ QColorGroup myCg = qApp->palette().active();
+ int h1, s1, v1;
+ int h2, s2, v2;
+ myCg.color( QColorGroup::Base ).hsv( &h1, &s1, &v1 );
+ myCg.color( QColorGroup::Background ).hsv( &h2, &s2, &v2 );
+ QColor c( h1, s1, ( v1 + v2 ) / 2, QColor::Hsv );
+#endif
+
+ backColor1 = new QColor( 250, 248, 235 );
+ backColor2 = new QColor( 255, 255, 255 );
+ selectedBack = new QColor( 230, 230, 230 );
+}
+
+#endif
+
+#endif
diff --git a/python/pyqt/pyuic3/main.cpp b/python/pyqt/pyuic3/main.cpp
new file mode 100644
index 00000000..265a536c
--- /dev/null
+++ b/python/pyqt/pyuic3/main.cpp
@@ -0,0 +1,245 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (c) 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include "parser.h"
+#include "widgetdatabase.h"
+#include "domtool.h"
+#include <qapplication.h>
+#include <qfile.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+#include <qregexp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int main( int argc, char * argv[] )
+{
+ PyIndent indent;
+ bool testCode = FALSE, execCode = FALSE;
+ bool subcl = FALSE;
+ bool imagecollection = FALSE;
+ QStringList images;
+ const char *error = 0;
+ const char* fileName = 0;
+ QCString outputFile;
+ const char* projectName = 0;
+ const char* trmacro = 0;
+ bool fix = FALSE;
+ QApplication app(argc, argv, FALSE);
+ QString className, uicClass;
+
+ for ( int n = 1; n < argc && error == 0; n++ ) {
+ QCString arg = argv[n];
+ if ( arg[0] == '-' ) { // option
+ QCString opt = &arg[1];
+ if ( opt[0] == 'o' ) { // output redirection
+ if ( opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing output-file name";
+ break;
+ }
+ outputFile = argv[++n];
+ } else
+ outputFile = &opt[1];
+ } else if ( opt[0] == 'e' || opt == "embed" ) {
+ imagecollection = TRUE;
+ if ( opt == "embed" || opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing name of project";
+ break;
+ }
+ projectName = argv[++n];
+ } else
+ projectName = &opt[1];
+ } else if ( opt == "subimpl" ) {
+ subcl = TRUE;
+ if ( !(n < argc-1) ) {
+ error = "Missing class name";
+ break;
+ }
+ className = argv[++n];
+ } else if ( opt == "tr" ) {
+ if ( opt == "tr" || opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing tr macro";
+ break;
+ }
+ trmacro = argv[++n];
+ } else {
+ trmacro = &opt[1];
+ }
+ } else if ( opt == "version" ) {
+ fprintf( stderr,
+ "Python User Interface Compiler %s for Qt version %s\n",
+ PYQT_VERSION, QT_VERSION_STR );
+ return 1;
+ } else if ( opt == "help" ) {
+ break;
+ } else if ( opt == "fix" ) {
+ fix = TRUE;
+ } else if ( opt[0] == 'p' ) {
+ uint tabstop;
+ bool ok;
+
+ if ( opt[1] == '\0' ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing Python indent";
+ break;
+ }
+ tabstop = QCString(argv[++n]).toUInt(&ok);
+ } else
+ tabstop = opt.mid(1).toUInt(&ok);
+
+ if (ok)
+ indent.setTabStop(tabstop);
+ else
+ error = "Invalid Python indent";
+ } else if ( opt == "test" ) {
+ testCode = TRUE;
+ } else if ( opt == "x" ) {
+ execCode = TRUE;
+ } else {
+ error = "Unrecognized option";
+ }
+ } else {
+ if ( imagecollection )
+ images << argv[n];
+ else if ( fileName ) // can handle only one file
+ error = "Too many input files specified";
+ else
+ fileName = argv[n];
+ }
+ }
+
+ if ( argc < 2 || error || (!fileName && !imagecollection ) ) {
+ fprintf( stderr, "PyQt user interface compiler.\n" );
+ if ( error )
+ fprintf( stderr, "pyuic: %s\n", error );
+
+ fprintf( stderr, "Usage: %s [options] [mode] <uifile>\n"
+ "\nGenerate implementation:\n"
+ " %s [options] <uifile>\n"
+ "Generate image collection:\n"
+ " %s [options] -embed <project> <image1> <image2> <image3> ...\n"
+ "\t<project>\tproject name\n"
+ "\t<image[0..n]>\timage files\n"
+ "Generate subclass implementation:\n"
+ " %s [options] -subimpl <classname> <uifile>\n"
+ "\t<classname>\tname of the subclass to generate\n"
+ "Options:\n"
+ "\t-o file\t\tWrite output to file rather than stdout\n"
+ "\t-p indent\tSet the Python indent in spaces (0 to use a tab)\n"
+ "\t-tr func\tUse func() rather than QApplication.translate() for i18n\n"
+ "\t-x\t\tGenerate extra code to test and display the class\n"
+ "\t-test\t\tGenerate extra code to test but not display the class\n"
+ "\t-version\tDisplay version of pyuic\n"
+ "\t-help\t\tDisplay this information\n"
+ , argv[0], argv[0], argv[0], argv[0]);
+ return 1;
+ }
+
+ Uic::setIndent(indent);
+
+ QFile fileOut;
+ if ( !outputFile.isEmpty() ) {
+ fileOut.setName( outputFile );
+ if (!fileOut.open( IO_WriteOnly ) )
+ qFatal( "pyuic: Could not open output file '%s'", outputFile.data() );
+ } else {
+ fileOut.open( IO_WriteOnly, stdout );
+ }
+ QTextStream out( &fileOut );
+
+ if ( imagecollection ) {
+ out.setEncoding( QTextStream::Latin1 );
+ out << "# -*- coding: latin-1 -*-\n\n";
+ Uic::embed( out, projectName, images );
+ return 0;
+ }
+
+
+ out.setEncoding( QTextStream::UnicodeUTF8 );
+ QFile file( fileName );
+ if ( !file.open( IO_ReadOnly ) )
+ qFatal( "pyuic: Could not open file '%s' ", fileName );
+
+ QDomDocument doc;
+ QString errMsg;
+ int errLine;
+ if ( !doc.setContent( &file, &errMsg, &errLine ) )
+ qFatal( QString("pyuic: Failed to parse %s: ") + errMsg + QString (" in line %d\n"), fileName, errLine );
+
+ QDomElement e = doc.firstChild().toElement();
+ if ( e.hasAttribute("version") && e.attribute("version").toDouble() > 3.3 ) {
+ qWarning( QString("pyuic: File generated with too recent version of Qt Designer (%s vs. %s)"),
+ e.attribute("version").latin1(), QT_VERSION_STR );
+ return 1;
+ }
+
+ DomTool::fixDocument( doc );
+
+ if ( fix ) {
+ out << doc.toString();
+ return 0;
+ }
+
+ out << "# -*- coding: utf-8 -*-\n\n";
+
+ if ( !subcl ) {
+ out << "# Form implementation generated from reading ui file '" << fileName << "'" << endl;
+ out << "#" << endl;
+ out << "# Created: " << QDateTime::currentDateTime().toString() << endl;
+ out << "# by: The PyQt User Interface Compiler (pyuic) " << PYQT_VERSION << endl;
+ out << "#" << endl;
+ out << "# WARNING! All changes made in this file will be lost!" << endl;
+ out << endl;
+ out << endl;
+ }
+
+ if (testCode || execCode)
+ out << "import sys" << endl;
+
+ out << "from qt import *" << endl;
+
+ Uic( fileName, outputFile, out, doc, subcl, trmacro, className, uicClass );
+
+ if (testCode || execCode) {
+ out << endl;
+ out << indent << "if __name__ == \"__main__\":" << endl;
+ ++indent;
+ out << indent << "a = QApplication(sys.argv)" << endl;
+ out << indent << "QObject.connect(a,SIGNAL(\"lastWindowClosed()\"),a,SLOT(\"quit()\"))" << endl;
+ out << indent << "w = " << (subcl ? className : uicClass) << "()" << endl;
+ out << indent << "a.setMainWidget(w)" << endl;
+
+ if (execCode) {
+ out << indent << "w.show()" << endl;
+ out << indent << "a.exec_loop()" << endl;
+ }
+
+ --indent;
+ }
+
+ return 0;
+}
diff --git a/python/pyqt/pyuic3/object.cpp b/python/pyqt/pyuic3/object.cpp
new file mode 100644
index 00000000..834427f5
--- /dev/null
+++ b/python/pyqt/pyuic3/object.cpp
@@ -0,0 +1,704 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include "parser.h"
+#include "domtool.h"
+#include <qregexp.h>
+#include <qsizepolicy.h>
+#include <qstringlist.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+
+
+/*!
+ Creates an implementation for the object given in \a e.
+
+ Traverses recursively over all children.
+
+ Returns the name of the generated child object.
+ */
+
+static bool createdCentralWidget = FALSE;
+
+QString Uic::createObjectImpl( const QDomElement &e, const QString& parentClass, const QString& par, const QString& layout )
+{
+ QString parent( par );
+ if ( parent == "self" && isMainWindow ) {
+ if ( !createdCentralWidget )
+ out << indent << "self.setCentralWidget(QWidget(self,\"qt_central_widget\"))" << endl;
+ createdCentralWidget = TRUE;
+ parent = "self.centralWidget()";
+ }
+ QDomElement n;
+ QString objClass, objName, fullObjName;
+ int numItems = 0;
+ int numColumns = 0;
+ int numRows = 0;
+
+ if ( layouts.contains( e.tagName() ) )
+ return createLayoutImpl( e, parentClass, parent, layout );
+
+ objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return objName;
+ objName = getObjectName( e );
+
+ QString definedName = objName;
+ bool isTmpObject = objName.isEmpty() || objClass == "QLayoutWidget";
+ if ( isTmpObject ) {
+ if ( objClass[0] == 'Q' )
+ objName = objClass.mid(1);
+ else
+ objName = objClass.lower();
+ }
+
+ bool isLine = objClass == "Line";
+ if ( isLine )
+ objClass = "QFrame";
+
+ out << endl;
+ if ( objClass == "QLayoutWidget" ) {
+ if ( layout.isEmpty() ) {
+ // register the object and unify its name
+ objName = registerObject( objName );
+ out << indent << objName << " = QWidget(" << parent << ",\"" << definedName << "\")" << endl;
+ } else {
+ // the layout widget is not necessary, hide it by creating its child in the parent
+ QString result;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if (tags.contains( n.tagName() ) )
+ result = createObjectImpl( n, parentClass, parent, layout );
+ }
+ return result;
+ }
+
+ // Layouts don't go into the class instance dictionary.
+ fullObjName = objName;
+ } else if ( objClass != "QToolBar" && objClass != "QMenuBar" ) {
+ // register the object and unify its name
+ objName = registerObject( objName );
+
+ // Temporary objects don't go into the class instance dictionary.
+ fullObjName = isTmpObject ? objName : "self." + objName;
+
+ out << indent << fullObjName << " = " << createObjectInstance( objClass, parent, objName ) << endl;
+ }
+ else
+ fullObjName = "self." + objName;
+
+ if ( objClass == "QAxWidget" ) {
+ QString controlId;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" && n.attribute( "name" ) == "control" ) {
+ controlId = n.firstChild().toElement().text();
+ }
+ }
+ out << indent << fullObjName << ".setControl(\"" << controlId << "\")" << endl;
+ }
+
+ lastItem = "None";
+ // set the properties and insert items
+ bool hadFrameShadow = FALSE;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = stdsetdef;
+ if ( n.hasAttribute( "stdset" ) )
+ stdset = toBool( n.attribute( "stdset" ) );
+ QString prop = n.attribute( "name" );
+ if ( prop == "database" )
+ continue;
+ QString value = setObjectProperty( objClass, objName, prop, n.firstChild().toElement(), stdset );
+ if ( value.isEmpty() )
+ continue;
+ if ( prop == "name" )
+ continue;
+ if ( isLine && prop == "frameShadow" )
+ hadFrameShadow = TRUE;
+ if ( prop == "buddy" && value.startsWith("\"") && value.endsWith("\"") ) {
+ buddies << Buddy( objName, value.mid(1, value.length() - 2 ) );
+ continue;
+ }
+ if ( isLine && prop == "orientation" ) {
+ prop = "frameShape";
+ if ( value.right(10) == "Horizontal" )
+ value = "QFrame.HLine";
+ else
+ value = "QFrame.VLine";
+ if ( !hadFrameShadow ) {
+ prop = "frameStyle";
+ value += " | QFrame.Sunken";
+ }
+ }
+ if ( prop == "buttonGroupId" ) {
+ if ( parentClass == "QButtonGroup" )
+ out << indent << parent << ".insert( " << fullObjName << "," << value << ")" << endl;
+ continue;
+ }
+ if ( prop == "frameworkCode" )
+ continue;
+ if ( objClass == "QMultiLineEdit" &&
+ QRegExp("echoMode|hMargin|maxLength|maxLines|undoEnabled").exactMatch(prop) )
+ continue;
+ QString call = fullObjName + ".";
+ QString tail;
+ if ( stdset ) {
+ call += mkStdSet( prop ) + "(";
+ tail = ")";
+ } else {
+ call += "setProperty(\"" + prop + "\",QVariant(";
+ tail = "))";
+ }
+ if ( prop == "accel" ) {
+ call += "QKeySequence(";
+ tail += ")";
+ }
+ call += value + tail;
+
+ if ( n.firstChild().toElement().tagName() == "string" ||
+ prop == "currentItem" ) {
+ trout << trindent << call << endl;
+ } else {
+ out << indent << call << endl;
+ }
+ } else if ( n.tagName() == "item" ) {
+ QString call;
+ QString value;
+
+ if ( objClass.contains( "ListBox" ) ) {
+ call = createListBoxItemImpl( n, fullObjName );
+ if ( !call.isEmpty() ) {
+ if ( numItems == 0 )
+ trout << trindent << fullObjName << ".clear()" << endl;
+ trout << trindent << call << endl;
+ }
+ } else if ( objClass.contains( "ComboBox" ) ) {
+ call = createListBoxItemImpl( n, fullObjName, &value );
+ if ( !call.isEmpty() ) {
+ if ( numItems == 0 )
+ trout << trindent << fullObjName << ".clear()" << endl;
+ trout << trindent << call << endl;
+ }
+ } else if ( objClass.contains( "IconView" ) ) {
+ call = createIconViewItemImpl( n, fullObjName );
+ if ( !call.isEmpty() ) {
+ if ( numItems == 0 )
+ trout << trindent << fullObjName << ".clear()" << endl;
+ trout << trindent << call << endl;
+ }
+ } else if ( objClass.contains( "ListView" ) ) {
+ call = createListViewItemImpl( n, fullObjName, QString::null );
+ if ( !call.isEmpty() ) {
+ if ( numItems == 0 )
+ trout << trindent << fullObjName << ".clear()" << endl;
+ trout << call << endl;
+ }
+ }
+ if ( !call.isEmpty() )
+ numItems++;
+ } else if ( n.tagName() == "column" || n.tagName() == "row" ) {
+ QString call;
+ QString value;
+
+ if ( objClass.contains( "ListView" ) ) {
+ call = createListViewColumnImpl( n, fullObjName, &value );
+ if ( !call.isEmpty() ) {
+ out << call;
+ trout << trindent << fullObjName << ".header().setLabel("
+ << numColumns++ << "," << value << ")\n";
+ }
+ } else if ( objClass == "QTable" || objClass == "QDataTable" ) {
+ bool isCols = ( n.tagName() == "column" );
+ call = createTableRowColumnImpl( n, fullObjName, &value );
+ if ( !call.isEmpty() ) {
+ out << call;
+ trout << trindent << fullObjName << "."
+ << ( isCols ? "horizontalHeader" : "verticalHeader" )
+ << "().setLabel("
+ << ( isCols ? numColumns++ : numRows++ )
+ << "," << value << ")\n";
+ }
+ }
+ }
+ }
+
+ // create all children, some widgets have special requirements
+
+ if ( objClass == "QTabWidget" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, fullObjName );
+ QString comment;
+ QString label = DomTool::readAttribute( n, "title", "", comment ).toString();
+ out << indent << fullObjName << ".insertTab(" << page << ",QString.fromLatin1(\"\"))" << endl;
+ trout << trindent << fullObjName << ".changeTab(" << page << "," << trcall( label, comment ) << ")" << endl;
+ }
+ }
+ } else if ( objClass == "QWidgetStack" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, fullObjName );
+ int id = DomTool::readAttribute( n, "id", "" ).toInt();
+ out << indent << fullObjName << ".addWidget(" << page << "," << id << ")" << endl;
+ }
+ }
+ } else if ( objClass == "QToolBox" ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) ) {
+ QString page = createObjectImpl( n, objClass, fullObjName );
+ QString comment;
+ QString label = DomTool::readAttribute( n, "label", "", comment ).toString();
+ out << indent << fullObjName << ".addItem(" << page << ",QString.fromLatin1(\"\"))" << endl;
+ trout << trindent << fullObjName << ".setItemLabel(" << fullObjName
+ << ".indexOf(" << page << ")," << trcall( label, comment )
+ << ")" << endl;
+ }
+ }
+ } else if ( objClass != "QToolBar" && objClass != "QMenuBar" ) { // standard widgets
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( tags.contains( n.tagName() ) )
+ createObjectImpl( n, objClass, fullObjName );
+ }
+ }
+
+ return fullObjName;
+}
+
+
+
+/*!
+ Creates a set-call for property \a exclusiveProp of the object
+ given in \a e.
+
+ If the object does not have this property, the function does nothing.
+
+ Exclusive properties are used to generate the implementation of
+ application font or palette change handlers in createFormImpl().
+
+ */
+void Uic::createExclusiveProperty( const QDomElement & e, const QString& exclusiveProp )
+{
+ QDomElement n;
+ QString objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return;
+ QString objName = getObjectName( e );
+#if 0 // it's not clear whether this check should be here or not
+ if ( objName.isEmpty() )
+ return;
+#endif
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" ) {
+ bool stdset = stdsetdef;
+ if ( n.hasAttribute( "stdset" ) )
+ stdset = toBool( n.attribute( "stdset" ) );
+ QString prop = n.attribute( "name" );
+ if ( prop != exclusiveProp )
+ continue;
+ QString value = setObjectProperty( objClass, objName, prop, n.firstChild().toElement(), stdset );
+ if ( value.isEmpty() )
+ continue;
+ out << indent << indent << objName << ".setProperty(\"" << prop << "\",QVariant(" << value << "))" << endl;
+ }
+ }
+}
+
+
+/* Convert a QSizePolicy::SizeType to text. */
+static QString mapSizeType(QSizePolicy::SizeType st)
+{
+ const char *txt;
+
+ switch (st)
+ {
+ case QSizePolicy::Fixed:
+ txt = "QSizePolicy.Fixed";
+ break;
+
+ case QSizePolicy::Minimum:
+ txt = "QSizePolicy.Minimum";
+ break;
+
+ case QSizePolicy::Maximum:
+ txt = "QSizePolicy.Maximum";
+ break;
+
+ case QSizePolicy::Preferred:
+ txt = "QSizePolicy.Preferred";
+ break;
+
+ case QSizePolicy::MinimumExpanding:
+ txt = "QSizePolicy.MinimumExpanding";
+ break;
+
+ case QSizePolicy::Expanding:
+ txt = "QSizePolicy.Expanding";
+ break;
+
+ case QSizePolicy::Ignored:
+ txt = "QSizePolicy.Ignored";
+ break;
+
+ default:
+ txt = "Invalid QSizePolicy::SizeType";
+ }
+
+ return txt;
+}
+
+
+/*! Attention: this function has to be in sync with
+ Resource::saveProperty() and DomTool::elementToVariant. If you
+ change one, change all.
+ */
+QString Uic::setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset )
+{
+ QString v;
+ if ( e.tagName() == "rect" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0, w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QRect(%1,%2,%3,%4)";
+ v = v.arg(x).arg(y).arg(w).arg(h);
+
+ } else if ( e.tagName() == "point" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int x = 0, y = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "x" )
+ x = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "y" )
+ y = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QPoint(%1,%2)";
+ v = v.arg(x).arg(y);
+ } else if ( e.tagName() == "size" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int w = 0, h = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "width" )
+ w = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "height" )
+ h = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QSize(%1,%2)";
+ v = v.arg(w).arg(h);
+ } else if ( e.tagName() == "color" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int r = 0, g = 0, b = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "red" )
+ r = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "green" )
+ g = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "blue" )
+ b = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QColor(%1,%2,%3)";
+ v = v.arg(r).arg(g).arg(b);
+ } else if ( e.tagName() == "font" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QString attrname = e.parentNode().toElement().attribute( "name", "font" );
+ QString fontname;
+ if ( !obj.isEmpty() ) {
+ fontname = registerObject( obj + "_" + attrname );
+ out << indent << fontname << " = QFont(self." << obj << ".font())" << endl;
+ } else {
+ fontname = registerObject( "f" );
+ out << indent << fontname << " = QFont(self.font())" << endl;
+ }
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "family" )
+ out << indent << fontname << ".setFamily(\"" << n3.firstChild().toText().data() << "\")" << endl;
+ else if ( n3.tagName() == "pointsize" )
+ out << indent << fontname << ".setPointSize(" << n3.firstChild().toText().data() << ")" << endl;
+ else if ( n3.tagName() == "bold" )
+ out << indent << fontname << ".setBold(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "italic" )
+ out << indent << fontname << ".setItalic(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "underline" )
+ out << indent << fontname << ".setUnderline(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ else if ( n3.tagName() == "strikeout" )
+ out << indent << fontname << ".setStrikeOut(" << mkBool( n3.firstChild().toText().data() ) << ")" << endl;
+ n3 = n3.nextSibling().toElement();
+ }
+
+ if ( prop == "font" ) {
+ if ( !obj.isEmpty() )
+ out << indent << "self." << obj << ".setFont(" << fontname << ")" << endl;
+ else
+ out << indent << "self.setFont(" << fontname << ")" << endl;
+ } else {
+ v = fontname;
+ }
+ } else if ( e.tagName() == "string" ) {
+ QString txt = e.firstChild().toText().data();
+ QString com = getComment( e.parentNode() );
+
+ if ( prop == "toolTip" && objClass != "QAction" && objClass != "QActionGroup" ) {
+ if ( !obj.isEmpty() )
+ trout << trindent << "QToolTip.add(self." << obj << ","
+ << trcall( txt, com ) << ")" << endl;
+ else
+ trout << trindent << "QToolTip.add(self,"
+ << trcall( txt, com ) << ")" << endl;
+ } else if ( prop == "whatsThis" && objClass != "QAction" && objClass != "QActionGroup" ) {
+ if ( !obj.isEmpty() )
+ trout << trindent << "QWhatsThis.add(self." << obj << ","
+ << trcall( txt, com ) << ")" << endl;
+ else
+ trout << trindent << "QWhatsThis.add(self,"
+ << trcall( txt, com ) << ")" << endl;
+ } else {
+ v = trcall( txt, com );
+ }
+ } else if ( e.tagName() == "cstring" ) {
+ v = "\"%1\"";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "number" ) {
+ v = "%1";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "bool" ) {
+ if ( stdset )
+ v = "%1";
+ else
+ v = "QVariant(%1,0)";
+ v = v.arg( mkBool( e.firstChild().toText().data() ) );
+ } else if ( e.tagName() == "pixmap" ) {
+ v = e.firstChild().toText().data();
+ if ( !v.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ v.prepend( "self." );
+ } else {
+ v.prepend( pixmapLoaderFunction + "(" + QString( externPixmaps ? "\"" : "" ) );
+ v.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ } else if ( e.tagName() == "iconset" ) {
+ v = "QIconSet(%1)";
+ QString s = e.firstChild().toText().data();
+ if ( !s.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ s.prepend( "self." );
+ } else {
+ s.prepend( pixmapLoaderFunction + "(" + QString( externPixmaps ? "\"" : "" ) );
+ s.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ v = v.arg( s );
+ } else if ( e.tagName() == "image" ) {
+ v = e.firstChild().toText().data() + ".convertToImage()";
+ } else if ( e.tagName() == "enum" ) {
+ v = "%1.%2";
+ QString oc = objClass;
+ QString ev = e.firstChild().toText().data();
+ if ( oc == "QListView" && ev == "Manual" ) // #### workaround, rename QListView::Manual in 4.0
+ oc = "QScrollView";
+ v = v.arg( oc ).arg( ev );
+ } else if ( e.tagName() == "set" ) {
+ QString keys( e.firstChild().toText().data() );
+ QStringList lst = QStringList::split( '|', keys );
+ v = "";
+ QStringList::Iterator it = lst.begin();
+ while ( it != lst.end() ) {
+ v += objClass + "." + *it;
+ if ( it != lst.fromLast() )
+ v += " | ";
+ ++it;
+ }
+ } else if ( e.tagName() == "sizepolicy" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ QSizePolicy sp;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hsizetype" )
+ sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "vsizetype" )
+ sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "horstretch" )
+ sp.setHorStretch( n3.firstChild().toText().data().toInt() );
+ else if ( n3.tagName() == "verstretch" )
+ sp.setVerStretch( n3.firstChild().toText().data().toInt() );
+ n3 = n3.nextSibling().toElement();
+ }
+ QString tmp = "self.";
+ if ( !obj.isEmpty() )
+ tmp += obj + ".";
+ v = "QSizePolicy(%1,%2,%3,%4," + tmp + "sizePolicy().hasHeightForWidth())";
+ v = v.arg( mapSizeType(sp.horData()) ).arg( mapSizeType(sp.verData()) ).arg( sp.horStretch() ).arg( sp.verStretch() );
+ } else if ( e.tagName() == "palette" ) {
+ QPalette pal;
+ bool no_pixmaps = e.elementsByTagName( "pixmap" ).count() == 0;
+ QDomElement n;
+ if ( no_pixmaps ) {
+ n = e.firstChild().toElement();
+ while ( !n.isNull() ) {
+ QColorGroup cg;
+ if ( n.tagName() == "active" ) {
+ cg = loadColorGroup( n );
+ pal.setActive( cg );
+ } else if ( n.tagName() == "inactive" ) {
+ cg = loadColorGroup( n );
+ pal.setInactive( cg );
+ } else if ( n.tagName() == "disabled" ) {
+ cg = loadColorGroup( n );
+ pal.setDisabled( cg );
+ }
+ n = n.nextSibling().toElement();
+ }
+ }
+ if ( no_pixmaps && pal == QPalette( pal.active().button(), pal.active().background() ) ) {
+ v = "QPalette(QColor(%1,%2,%3),QColor(%1,%2,%3))";
+ v = v.arg( pal.active().button().red() ).arg( pal.active().button().green() ).arg( pal.active().button().blue() );
+ v = v.arg( pal.active().background().red() ).arg( pal.active().background().green() ).arg( pal.active().background().blue() );
+ } else {
+ QString palette = "pal";
+ if ( !pal_used ) {
+ out << indent << palette << " = QPalette()" << endl;
+ pal_used = TRUE;
+ }
+ QString cg = "cg";
+ if ( !cg_used ) {
+ out << indent << cg << " = QColorGroup()" << endl;
+ cg_used = TRUE;
+ }
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "active" )
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setActive(" << cg << ")" << endl;
+
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "inactive" )
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setInactive(" << cg << ")" << endl;
+
+ n = e.firstChild().toElement();
+ while ( !n.isNull() && n.tagName() != "disabled" )
+ n = n.nextSibling().toElement();
+ createColorGroupImpl( cg, n );
+ out << indent << palette << ".setDisabled(" << cg << ")" << endl;
+ v = palette;
+ }
+ } else if ( e.tagName() == "cursor" ) {
+ v = "QCursor(%1)";
+ v = v.arg( e.firstChild().toText().data() );
+ } else if ( e.tagName() == "date" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int y, m, d;
+ y = m = d = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "year" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "month" )
+ m = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "day" )
+ d = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QDate(%1,%2,%3)";
+ v = v.arg(y).arg(m).arg(d);
+ } else if ( e.tagName() == "time" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int h, m, s;
+ h = m = s = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hour" )
+ h = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "minute" )
+ m = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "second" )
+ s = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QTime(%1,%2,%3)";
+ v = v.arg(h).arg(m).arg(s);
+ } else if ( e.tagName() == "datetime" ) {
+ QDomElement n3 = e.firstChild().toElement();
+ int h, mi, s, y, mo, d;
+ h = mi = s = y = mo = d = 0;
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "hour" )
+ h = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "minute" )
+ mi = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "second" )
+ s = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "year" )
+ y = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "month" )
+ mo = n3.firstChild().toText().data().toInt();
+ else if ( n3.tagName() == "day" )
+ d = n3.firstChild().toText().data().toInt();
+ n3 = n3.nextSibling().toElement();
+ }
+ v = "QDateTime(QDate(%1,%2,%3),QTime(%4,%5,%6))";
+ v = v.arg(y).arg(mo).arg(d).arg(h).arg(mi).arg(s);
+ } else if ( e.tagName() == "stringlist" ) {
+ QStringList l;
+ QDomElement n3 = e.firstChild().toElement();
+ QString listname = "l";
+ if ( !obj.isEmpty() ) {
+ listname = obj + "_stringlist";
+ listname = registerObject( listname );
+ out << indent << listname << " = QStringList()" << endl;
+ } else {
+ out << indent << listname << " = QStringList()" << endl;
+ }
+ while ( !n3.isNull() ) {
+ if ( n3.tagName() == "string" )
+ out << indent << listname << ".append(\"" << n3.firstChild().toText().data().simplifyWhiteSpace() << "\")" << endl;
+ n3 = n3.nextSibling().toElement();
+ }
+ v = listname;
+ }
+ return v;
+}
+
+
+
+
+/*! Extracts a named object property from \a e.
+ */
+QDomElement Uic::getObjectProperty( const QDomElement& e, const QString& name )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement();
+ !n.isNull();
+ n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "property" && n.toElement().attribute("name") == name )
+ return n;
+ }
+ return n;
+}
+
diff --git a/python/pyqt/pyuic3/parser.cpp b/python/pyqt/pyuic3/parser.cpp
new file mode 100644
index 00000000..4fc13c5f
--- /dev/null
+++ b/python/pyqt/pyuic3/parser.cpp
@@ -0,0 +1,66 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "parser.h"
+#include <qobject.h>
+#include <qstringlist.h>
+
+class NormalizeObject : public QObject
+{
+public:
+ NormalizeObject() : QObject() {}
+ static QCString normalizeSignalSlot( const char *signalSlot ) { return QObject::normalizeSignalSlot( signalSlot ); }
+};
+
+QString Parser::cleanArgs( const QString &func )
+{
+ QString slot( func );
+ int begin = slot.find( "(" ) + 1;
+ QString args = slot.mid( begin );
+ args = args.left( args.find( ")" ) );
+ QStringList lst = QStringList::split( ',', args );
+ QString res = slot.left( begin );
+ for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
+ if ( it != lst.begin() )
+ res += ",";
+ QString arg = *it;
+ int pos = 0;
+ if ( ( pos = arg.find( "&" ) ) != -1 ) {
+ arg = arg.left( pos + 1 );
+ } else if ( ( pos = arg.find( "*" ) ) != -1 ) {
+ arg = arg.left( pos + 1 );
+ } else {
+ arg = arg.simplifyWhiteSpace();
+ if ( ( pos = arg.find( ':' ) ) != -1 )
+ arg = arg.left( pos ).simplifyWhiteSpace() + ":" + arg.mid( pos + 1 ).simplifyWhiteSpace();
+ QStringList l = QStringList::split( ' ', arg );
+ if ( l.count() == 2 ) {
+ if ( l[ 0 ] != "const" && l[ 0 ] != "unsigned" && l[ 0 ] != "var" )
+ arg = l[ 0 ];
+ } else if ( l.count() == 3 ) {
+ arg = l[ 0 ] + " " + l[ 1 ];
+ }
+ }
+ res += arg;
+ }
+ res += ")";
+
+ return QString::fromLatin1( NormalizeObject::normalizeSignalSlot( res.latin1() ) );
+}
diff --git a/python/pyqt/pyuic3/parser.h b/python/pyqt/pyuic3/parser.h
new file mode 100644
index 00000000..5a5671ad
--- /dev/null
+++ b/python/pyqt/pyuic3/parser.h
@@ -0,0 +1,33 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef PARSER_H
+#define PARSER_H
+
+#include <qstring.h>
+
+class Parser
+{
+public:
+ static QString cleanArgs( const QString &func );
+
+};
+
+#endif
diff --git a/python/pyqt/pyuic3/pyuic-prof.sbf b/python/pyqt/pyuic3/pyuic-prof.sbf
new file mode 100644
index 00000000..25013493
--- /dev/null
+++ b/python/pyqt/pyuic3/pyuic-prof.sbf
@@ -0,0 +1,24 @@
+# This is the build file for pyuic for Qt v3 Professional Edition.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+target = pyuic
+sources = main.cpp uic.cpp form.cpp object.cpp subclassing.cpp embed.cpp widgetdatabase.cpp domtool.cpp parser.cpp qdom.cpp qxml.cpp
+headers = domtool.h globaldefs.h parser.h uic.h widgetdatabase.h widgetinterface.h
diff --git a/python/pyqt/pyuic3/pyuic.pro.in b/python/pyqt/pyuic3/pyuic.pro.in
new file mode 100644
index 00000000..faebbd6f
--- /dev/null
+++ b/python/pyqt/pyuic3/pyuic.pro.in
@@ -0,0 +1,36 @@
+# Copyright (c) 2001
+# Phil Thompson <phil@river-bank.demon.co.uk>
+# Copyright (c) 2002, 2003
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# The project file for pyuic for Qt v3.
+
+
+TEMPLATE = app
+CONFIG += qt console warn_on release @PYQT_RBPROF@
+INCLUDEPATH += @BLX_INCLUDEPATH@ $(QTDIR)/src/3rdparty/zlib
+DEFINES += UIC QT_INTERNAL_XML @BLX_DEFINES@
+
+DESTDIR = @PYQT_BINDIR@
+TARGET = pyuic
+
+HEADERS = uic.h \
+ widgetdatabase.h \
+ domtool.h \
+ parser.h \
+ widgetinterface.h
+
+SOURCES = main.cpp \
+ uic.cpp \
+ form.cpp \
+ object.cpp \
+ subclassing.cpp \
+ embed.cpp \
+ widgetdatabase.cpp \
+ domtool.cpp \
+ parser.cpp
+
+rbprof:exists($(QTDIR)/src/qt_professional.pri) {
+ QT_SOURCE_TREE = $(QTDIR)
+ include($(QTDIR)/src/qt_professional.pri)
+}
diff --git a/python/pyqt/pyuic3/pyuic.sbf b/python/pyqt/pyuic3/pyuic.sbf
new file mode 100644
index 00000000..a40245de
--- /dev/null
+++ b/python/pyqt/pyuic3/pyuic.sbf
@@ -0,0 +1,24 @@
+# This is the build file for pyuic for Qt v3.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+target = pyuic
+sources = main.cpp uic.cpp form.cpp object.cpp subclassing.cpp embed.cpp widgetdatabase.cpp domtool.cpp parser.cpp
+headers = domtool.h globaldefs.h parser.h uic.h widgetdatabase.h widgetinterface.h
diff --git a/python/pyqt/pyuic3/subclassing.cpp b/python/pyqt/pyuic3/subclassing.cpp
new file mode 100644
index 00000000..299e0449
--- /dev/null
+++ b/python/pyqt/pyuic3/subclassing.cpp
@@ -0,0 +1,185 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include "parser.h"
+#include "widgetdatabase.h"
+#include "domtool.h"
+#include <qfile.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+#include <qregexp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/*!
+ Creates an implementation for a subclass \a subClass of the form
+ given in \a e
+
+ \sa createSubDecl()
+ */
+void Uic::createSubImpl( const QDomElement &e, const QString& subClass )
+{
+ QDomElement n;
+ QDomNodeList nl;
+ int i;
+
+ QString objClass = getClassName( e );
+ if ( objClass.isEmpty() )
+ return;
+
+ QString supClsMod = fileName;
+ int tail = supClsMod.findRev('.',-1);
+ if (tail >= 0)
+ supClsMod.truncate(tail);
+
+ out << indent << "from " << supClsMod << " import " << nameOfClass << endl;
+ out << endl;
+ out << endl;
+
+ out << indent << "class " << subClass << "(" << nameOfClass << "):" << endl;
+ ++indent;
+ out << endl;
+
+ // constructor
+ if ( objClass == "QDialog" || objClass == "QWizard" ) {
+ out << indent << "def __init__(self,parent = None,name = None,modal = 0,fl = 0):" << endl;
+ ++indent;
+ out << indent << nameOfClass << ".__init__(self,parent,name,modal,fl)" << endl;
+ } else { // standard QWidget
+ out << indent << "def __init__(self,parent = None,name = None,fl = 0):" << endl;
+ ++indent;
+ out << indent << nameOfClass << ".__init__(self,parent,name,fl)" << endl;
+ }
+ --indent;
+
+ // find additional functions
+ QStringList publicSlots, protectedSlots, privateSlots;
+ QStringList publicSlotTypes, protectedSlotTypes, privateSlotTypes;
+ QStringList publicSlotSpecifier, protectedSlotSpecifier, privateSlotSpecifier;
+ QStringList publicFuncts, protectedFuncts, privateFuncts;
+ QStringList publicFunctRetTyp, protectedFunctRetTyp, privateFunctRetTyp;
+ QStringList publicFunctSpec, protectedFunctSpec, privateFunctSpec;
+
+ nl = e.parentNode().toElement().elementsByTagName( "slot" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ n = nl.item(i).toElement();
+ if ( n.parentNode().toElement().tagName() != "slots"
+ && n.parentNode().toElement().tagName() != "connections" )
+ continue;
+ if ( n.attribute( "language", "C++" ) != "C++" )
+ continue;
+ QString returnType = n.attribute( "returnType", "void" );
+ QString functionName = n.firstChild().toText().data().stripWhiteSpace();
+ if ( functionName.endsWith( ";" ) )
+ functionName = functionName.left( functionName.length() - 1 );
+ QString specifier = n.attribute( "specifier" );
+ QString access = n.attribute( "access" );
+ if ( access == "protected" ) {
+ protectedSlots += functionName;
+ protectedSlotTypes += returnType;
+ protectedSlotSpecifier += specifier;
+ } else if ( access == "private" ) {
+ privateSlots += functionName;
+ privateSlotTypes += returnType;
+ privateSlotSpecifier += specifier;
+ } else {
+ publicSlots += functionName;
+ publicSlotTypes += returnType;
+ publicSlotSpecifier += specifier;
+ }
+ }
+
+ nl = e.parentNode().toElement().elementsByTagName( "function" );
+ for ( i = 0; i < (int) nl.length(); i++ ) {
+ n = nl.item(i).toElement();
+ if ( n.parentNode().toElement().tagName() != "functions" )
+ continue;
+ if ( n.attribute( "language", "C++" ) != "C++" )
+ continue;
+ QString returnType = n.attribute( "returnType", "void" );
+ QString functionName = n.firstChild().toText().data().stripWhiteSpace();
+ if ( functionName.endsWith( ";" ) )
+ functionName = functionName.left( functionName.length() - 1 );
+ QString specifier = n.attribute( "specifier" );
+ QString access = n.attribute( "access" );
+ if ( access == "protected" ) {
+ protectedFuncts += functionName;
+ protectedFunctRetTyp += returnType;
+ protectedFunctSpec += specifier;
+ } else if ( access == "private" ) {
+ privateFuncts += functionName;
+ privateFunctRetTyp += returnType;
+ privateFunctSpec += specifier;
+ } else {
+ publicFuncts += functionName;
+ publicFunctRetTyp += returnType;
+ publicFunctSpec += specifier;
+ }
+ }
+
+ if ( !publicFuncts.isEmpty() )
+ writeFunctionsSubImpl( publicFuncts, publicFunctRetTyp, publicFunctSpec, subClass, "public function" );
+
+ // create stubs for public additional slots
+ if ( !publicSlots.isEmpty() )
+ writeFunctionsSubImpl( publicSlots, publicSlotTypes, publicSlotSpecifier, subClass, "public slot" );
+
+ if ( !protectedFuncts.isEmpty() )
+ writeFunctionsSubImpl( protectedFuncts, protectedFunctRetTyp, protectedFunctSpec, subClass, "protected function" );
+
+ // create stubs for protected additional slots
+ if ( !protectedSlots.isEmpty() )
+ writeFunctionsSubImpl( protectedSlots, protectedSlotTypes, protectedSlotSpecifier, subClass, "protected slot" );
+
+ if ( !privateFuncts.isEmpty() )
+ writeFunctionsSubImpl( privateFuncts, privateFunctRetTyp, privateFunctSpec, subClass, "private function" );
+
+ // create stubs for private additional slots
+ if ( !privateSlots.isEmpty() )
+ writeFunctionsSubImpl( privateSlots, privateSlotTypes, privateSlotSpecifier, subClass, "private slot" );
+
+ --indent;
+}
+
+void Uic::writeFunctionsSubImpl( const QStringList &fuLst, const QStringList &typLst, const QStringList &specLst,
+ const QString &subClass, const QString &descr )
+{
+ QValueListConstIterator<QString> it, it2, it3;
+ for ( it = fuLst.begin(), it2 = typLst.begin(), it3 = specLst.begin();
+ it != fuLst.end(); ++it, ++it2, ++it3 ) {
+ QString type = *it2;
+ if ( type.isEmpty() )
+ type = "void";
+ if ( *it3 == "non virtual" )
+ continue;
+ out << endl;
+ out << indent << "# " << descr << endl;
+ pySlot(it);
+ ++indent;
+ out << endl;
+ out << indent << "print \"" << subClass << "." << (*it) << ": Not implemented yet\"" << endl;
+ --indent;
+ }
+ out << endl;
+}
diff --git a/python/pyqt/pyuic3/uic.cpp b/python/pyqt/pyuic3/uic.cpp
new file mode 100644
index 00000000..d3593020
--- /dev/null
+++ b/python/pyqt/pyuic3/uic.cpp
@@ -0,0 +1,1145 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (c) 2004 Phil Thompson <phil@riverbankcomputing.co.uk>
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "uic.h"
+#include "parser.h"
+#include "widgetdatabase.h"
+#include "domtool.h"
+#include <qfile.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+#include <qregexp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+bool Uic::isMainWindow = FALSE;
+PyIndent Uic::indent;
+PyIndent Uic::trindent;
+
+
+// Re-calculate the indent string based on the current number and nature of the
+// indent.
+void PyIndent::calc()
+{
+ indstr.truncate(0);
+
+ for (uint i = current; i > 0; --i)
+ if (tabStop == 0)
+ indstr += '\t';
+ else
+ for (uint t = 0; t < tabStop; ++t)
+ indstr += ' ';
+}
+
+
+QString Uic::getComment( const QDomNode& n )
+{
+ QDomNode child = n.firstChild();
+ while ( !child.isNull() ) {
+ if ( child.toElement().tagName() == "comment" )
+ return child.toElement().firstChild().toText().data();
+ child = child.nextSibling();
+ }
+ return QString::null;
+}
+
+QString Uic::mkBool( bool b )
+{
+ return b? "1" : "0";
+}
+
+QString Uic::mkBool( const QString& s )
+{
+ return mkBool( s == "true" || s == "1" );
+}
+
+bool Uic::toBool( const QString& s )
+{
+ return s == "true" || s.toInt() != 0;
+}
+
+QString Uic::fixString( const QString &str, bool encode )
+{
+#if QT_VERSION >= 0x030100
+ QString s;
+ if ( !encode ) {
+ s = str;
+ s.replace( "\\", "\\\\" );
+ s.replace( "\"", "\\\"" );
+ s.replace( "\r", "" );
+ s.replace( "\n", "\\n\"\n\"" );
+ } else {
+ QCString utf8 = str.utf8();
+ const int l = utf8.length();
+
+ for ( int i = 0; i < l; ++i ) {
+ uchar ch = (uchar)utf8[i];
+
+ if (ch != 0x0d) { // skip \r
+ s += "\\x";
+
+ if (ch <= 0x0f)
+ s += "0";
+
+ s += QString::number( ch, 16 );
+ }
+ }
+ }
+#else
+ QString s( str );
+ s.replace( QRegExp( "\\\\" ), "\\\\" );
+ s.replace( QRegExp( "\"" ), "\\\"" );
+ s.replace( QRegExp( "\r?\n" ), "\\n\"\n\"" );
+#endif
+ return "\"" + s + "\"";
+}
+
+QString Uic::trcall( const QString& sourceText, const QString& comment )
+{
+ if ( sourceText.isEmpty() && comment.isEmpty() )
+ return "QString.null";
+
+ QString t = trmacro;
+ bool encode = FALSE;
+ if ( t.isNull() ) {
+ t = "self.__tr";
+ for ( int i = 0; i < (int) sourceText.length(); i++ ) {
+ if ( sourceText[i].unicode() >= 0x80 ) {
+ t = "self.__trUtf8";
+ encode = TRUE;
+ break;
+ }
+ }
+
+ if (encode)
+ pyNeedTrUtf8 = TRUE;
+ else
+ pyNeedTr = TRUE;
+ }
+
+ if ( comment.isEmpty() ) {
+ return t + "(" + fixString( sourceText, encode ) + ")";
+ } else {
+ return t + "(" + fixString( sourceText, encode ) + "," +
+ fixString( comment, encode ) + ")";
+ }
+}
+
+QString Uic::mkStdSet( const QString& prop )
+{
+ return QString( "set" ) + prop[0].upper() + prop.mid(1);
+}
+
+
+
+/*!
+ \class Uic uic.h
+ \brief User Interface Compiler
+
+ The class Uic encapsulates the user interface compiler (uic).
+ */
+Uic::Uic( const QString &fn, const char *outputFn, QTextStream &outStream,
+ QDomDocument doc, bool subcl, const QString &trm,
+ const QString& subClass, QString &uicClass )
+ : out( outStream ), trout (&languageChangeBody ),
+ outputFileName( outputFn ), trmacro( trm ),
+ pyNeedTr(FALSE), pyNeedTrUtf8(FALSE)
+{
+ fileName = fn;
+ writeFunctImpl = TRUE;
+ defMargin = BOXLAYOUT_DEFAULT_MARGIN;
+ defSpacing = BOXLAYOUT_DEFAULT_SPACING;
+ externPixmaps = FALSE;
+
+ trindent.setIndent(2);
+
+ item_used = cg_used = pal_used = 0;
+
+ layouts << "hbox" << "vbox" << "grid";
+ tags = layouts;
+ tags << "widget";
+
+ pixmapLoaderFunction = getPixmapLoaderFunction( doc.firstChild().toElement() );
+ nameOfClass = getFormClassName( doc.firstChild().toElement() );
+
+#if QT_VERSION >= 0x030300
+ uiFileVersion = doc.firstChild().toElement().attribute("version");
+#endif
+ stdsetdef = toBool( doc.firstChild().toElement().attribute("stdsetdef") );
+
+ if ( doc.firstChild().isNull() || doc.firstChild().firstChild().isNull() )
+ return;
+
+ // Extract any Python code in the comments.
+ QStringList comm = QStringList::split('\n',getComment(doc.firstChild()));
+
+ for (QStringList::Iterator it = comm.begin(); it != comm.end(); ++it)
+ if ((*it).startsWith("Python:"))
+ pyCode += (*it).mid(7) + "\n";
+
+ QDomElement e = doc.firstChild().firstChild().toElement();
+ QDomElement widget;
+ while ( !e.isNull() ) {
+ if ( e.tagName() == "widget" ) {
+ widget = e;
+ } else if ( e.tagName() == "pixmapinproject" ) {
+ externPixmaps = TRUE;
+ } else if ( e.tagName() == "layoutdefaults" ) {
+ defSpacing = e.attribute( "spacing", defSpacing.toString() );
+ defMargin = e.attribute( "margin", defMargin.toString() );
+ } else if ( e.tagName() == "layoutfunctions" ) {
+ defSpacing = e.attribute( "spacing", defSpacing.toString() );
+
+ bool ok;
+ defSpacing.toInt( &ok );
+ if ( !ok ) {
+ QString buf = defSpacing.toString();
+ defSpacing = buf.append( "()" );
+ }
+ defMargin = e.attribute( "margin", defMargin.toString() );
+ defMargin.toInt( &ok );
+ if ( !ok ) {
+ QString buf = defMargin.toString();
+ defMargin = buf.append( "()" );
+ }
+ }
+ e = e.nextSibling().toElement();
+ }
+ e = widget;
+
+ if ( nameOfClass.isEmpty() )
+ nameOfClass = getObjectName( e );
+
+ uicClass = nameOfClass;
+
+ namespaces = QStringList::split( "::", nameOfClass );
+ bareNameOfClass = namespaces.last();
+ namespaces.remove( namespaces.fromLast() );
+
+ if ( subcl ) {
+ createSubImpl( e, subClass );
+ } else {
+ createFormImpl( e );
+ }
+
+ ++indent;
+
+ if (pyNeedTr)
+ {
+ out << "\n";
+ out << indent << "def __tr(self,s,c = None):\n";
+ ++indent;
+ out << indent << "return qApp.translate(\"" << nameOfClass << "\",s,c)\n";
+ --indent;
+ }
+
+ if (pyNeedTrUtf8)
+ {
+ out << "\n";
+ out << indent << "def __trUtf8(self,s,c = None):\n";
+ ++indent;
+ out << indent << "return qApp.translate(\"" << nameOfClass << "\",s,c,QApplication.UnicodeUTF8)\n";
+ --indent;
+ }
+
+ --indent;
+}
+
+/*! Extracts a pixmap loader function from \a e
+ */
+QString Uic::getPixmapLoaderFunction( const QDomElement& e )
+{
+ QDomElement n;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "pixmapfunction" )
+ return n.firstChild().toText().data();
+ }
+ return QString::null;
+}
+
+
+/*! Extracts the forms class name from \a e
+ */
+QString Uic::getFormClassName( const QDomElement& e )
+{
+ QDomElement n;
+ QString cn;
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "class" ) {
+ QString s = n.firstChild().toText().data();
+ int i;
+ while ( ( i = s.find(' ' )) != -1 )
+ s[i] = '_';
+ cn = s;
+ }
+ }
+ return cn;
+}
+
+/*! Extracts a class name from \a e.
+ */
+QString Uic::getClassName( const QDomElement& e )
+{
+ QString s = e.attribute( "class" );
+ if ( s.isEmpty() && e.tagName() == "toolbar" )
+ s = "QToolBar";
+ else if ( s.isEmpty() && e.tagName() == "menubar" )
+ s = "QMenuBar";
+ return s;
+}
+
+/*! Returns TRUE if database framework code is generated, else FALSE.
+*/
+
+bool Uic::isFrameworkCodeGenerated( const QDomElement& e )
+{
+ QDomElement n = getObjectProperty( e, "frameworkCode" );
+ if ( n.attribute("name") == "frameworkCode" &&
+ !DomTool::elementToVariant( n.firstChild().toElement(), QVariant( TRUE, 0 ) ).toBool() )
+ return FALSE;
+ return TRUE;
+}
+
+/*! Extracts an object name from \a e. It's stored in the 'name'
+ property.
+ */
+QString Uic::getObjectName( const QDomElement& e )
+{
+ QDomElement n = getObjectProperty( e, "name" );
+ if ( n.firstChild().toElement().tagName() == "cstring" )
+ return n.firstChild().toElement().firstChild().toText().data();
+ return QString::null;
+}
+
+/*! Extracts an layout name from \a e. It's stored in the 'name'
+ property of the preceeding sibling (the first child of a QLayoutWidget).
+ */
+QString Uic::getLayoutName( const QDomElement& e )
+{
+ QDomElement p = e.parentNode().toElement();
+ QString name;
+
+ if ( getClassName(p) != "QLayoutWidget" )
+ name = "Layout";
+
+ QDomElement n = getObjectProperty( p, "name" );
+ if ( n.firstChild().toElement().tagName() == "cstring" ) {
+ name.prepend( n.firstChild().toElement().firstChild().toText().data() );
+ return QStringList::split( "::", name ).last();
+ }
+ return e.tagName();
+}
+
+
+QString Uic::getDatabaseInfo( const QDomElement& e, const QString& tag )
+{
+ QDomElement n;
+ QDomElement n1;
+ int child = 0;
+ // database info is a stringlist stored in this order
+ if ( tag == "connection" )
+ child = 0;
+ else if ( tag == "table" )
+ child = 1;
+ else if ( tag == "field" )
+ child = 2;
+ else
+ return QString::null;
+ n = getObjectProperty( e, "database" );
+ if ( n.firstChild().toElement().tagName() == "stringlist" ) {
+ // find correct stringlist entry
+ QDomElement n1 = n.firstChild().firstChild().toElement();
+ for ( int i = 0; i < child && !n1.isNull(); ++i )
+ n1 = n1.nextSibling().toElement();
+ if ( n1.isNull() )
+ return QString::null;
+ return n1.firstChild().toText().data();
+ }
+ return QString::null;
+}
+
+
+/*!
+ Returns include file for class \a className or a null string.
+ */
+QString Uic::getInclude( const QString& className )
+{
+ int wid = WidgetDatabase::idFromClassName( className );
+ if ( wid != -1 )
+ return WidgetDatabase::includeFile( wid );
+ return QString::null;
+}
+
+
+void Uic::createActionImpl( const QDomElement &n, const QString &parent )
+{
+ for ( QDomElement ae = n; !ae.isNull(); ae = ae.nextSibling().toElement() ) {
+ QString objName = registerObject( getObjectName( ae ) );
+ if ( ae.tagName() == "action" )
+ out << indent << "self." << objName << " = QAction(" << parent << ",\"" << objName << "\")" << endl;
+ else if ( ae.tagName() == "actiongroup" )
+ out << indent << "self." << objName << " = QActionGroup(" << parent << ",\"" << objName << "\")" << endl;
+ else
+ continue;
+ bool subActionsDone = FALSE;
+#if QT_VERSION >= 0x030300
+ bool hasMenuText = FALSE;
+ QString actionText;
+#endif
+ for ( QDomElement n2 = ae.firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "property" ) {
+ bool stdset = stdsetdef;
+ if ( n2.hasAttribute( "stdset" ) )
+ stdset = toBool( n2.attribute( "stdset" ) );
+ QString prop = n2.attribute("name");
+ if ( prop == "name" )
+ continue;
+ QString value = setObjectProperty( "QAction", objName, prop, n2.firstChild().toElement(), stdset );
+ if ( value.isEmpty() )
+ continue;
+
+ QString call = "self." + objName + ".";
+ if ( stdset )
+ call += mkStdSet( prop ) + "(" + value + ")";
+ else
+ call += "setProperty(\"" + prop + "\",QVariant(" + value + "))";
+
+#if QT_VERSION >= 0x030300
+ if (prop == "menuText")
+ hasMenuText = TRUE;
+ else if (prop == "text")
+ actionText = value;
+#endif
+
+ if ( n2.firstChild().toElement().tagName() == "string" ) {
+ trout << trindent << call << endl;
+ } else {
+ out << indent << call << endl;
+ }
+ } else if ( !subActionsDone && ( n2.tagName() == "actiongroup" || n2.tagName() == "action" ) ) {
+ createActionImpl( n2, "self." + objName );
+ subActionsDone = TRUE;
+ }
+ }
+#if QT_VERSION >= 0x030300
+ // workaround for loading pre-3.3 files expecting bogus QAction behavior
+ if (!hasMenuText && !actionText.isEmpty() && uiFileVersion < "3.3")
+ trout << indent << "self." << objName << ".setMenuText(" << actionText << ")" << endl;
+#endif
+ }
+}
+
+QString get_dock( const QString &d )
+{
+ if ( d == "0" )
+ return "Qt.DockUnmanaged";
+ if ( d == "1" )
+ return "Qt.DockTornOff";
+ if ( d == "2" )
+ return "Qt.DockTop";
+ if ( d == "3" )
+ return "Qt.DockBottom";
+ if ( d == "4" )
+ return "Qt.DockRight";
+ if ( d == "5" )
+ return "Qt.DockLeft";
+ if ( d == "6" )
+ return "Qt.DockMinimized";
+ return "";
+}
+
+void Uic::createToolbarImpl( const QDomElement &n, const QString &parentClass, const QString &parent )
+{
+ QDomNodeList nl = n.elementsByTagName( "toolbar" );
+ for ( int i = 0; i < (int) nl.length(); i++ ) {
+ QDomElement ae = nl.item( i ).toElement();
+ QString dock = get_dock( ae.attribute( "dock" ) );
+ QString objName = getObjectName( ae );
+ out << indent << "self." << objName << " = QToolBar(QString(\"\"),self," << dock << ")" << endl;
+ createObjectImpl( ae, parentClass, parent );
+ for ( QDomElement n2 = ae.firstChild().toElement(); !n2.isNull(); n2 = n2.nextSibling().toElement() ) {
+ if ( n2.tagName() == "action" ) {
+ out << indent << "self." << n2.attribute( "name" ) << ".addTo(self." << objName << ")" << endl;
+ } else if ( n2.tagName() == "separator" ) {
+ out << indent << "self." << objName << ".addSeparator()" << endl;
+ } else if ( n2.tagName() == "widget" ) {
+ if ( n2.attribute( "class" ) != "Spacer" ) {
+ createObjectImpl( n2, "QToolBar", "self." + objName );
+ } else {
+ QString child = createSpacerImpl( n2, parentClass, parent, objName );
+ out << indent << "QApplication.sendPostedEvents(self." << objName
+ << ",QEvent.ChildInserted)" << endl;
+ out << indent << "self." << objName << ".boxLayout().addItem(" << child << ")" << endl;
+ }
+ }
+ }
+ }
+}
+
+void Uic::createMenuBarImpl( const QDomElement &n, const QString &parentClass, const QString &parent )
+{
+ QString objName = getObjectName( n );
+ out << indent << "self." << objName << " = QMenuBar(self,\"" << objName << "\")" << endl;
+ createObjectImpl( n, parentClass, parent );
+
+ int i = 0;
+ QDomElement c = n.firstChild().toElement();
+ while ( !c.isNull() ) {
+ if ( c.tagName() == "item" ) {
+ QString itemName = "self." + c.attribute( "name" );
+ out << endl;
+ out << indent << itemName << " = QPopupMenu(self)" << endl;
+ createPopupMenuImpl( c, parentClass, itemName );
+ out << indent << "self." << objName << ".insertItem(QString(\"\")," << itemName << "," << i << ")" << endl;
+ QString findItem("self." + objName + ".findItem(%1)");
+ findItem = findItem.arg(i);
+ trout << indent << "if " << findItem << ":" << endl;
+ ++indent;
+ trout << indent << findItem << ".setText(" << trcall( c.attribute( "text" ) ) << ")" << endl;
+ --indent;
+ } else if ( c.tagName() == "separator" ) {
+ out << endl;
+ out << indent << "self." << objName << ".insertSeparator(" << i << ")" << endl;
+ }
+ c = c.nextSibling().toElement();
+ i++;
+ }
+}
+
+void Uic::createPopupMenuImpl( const QDomElement &e, const QString &parentClass, const QString &parent )
+{
+ int i = 0;
+ for ( QDomElement n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "action" || n.tagName() == "actiongroup" ) {
+ QDomElement n2 = n.nextSibling().toElement();
+ if ( n2.tagName() == "item" ) { // the action has a sub menu
+ QString itemName = "self." + n2.attribute( "name" );
+ QString itemText = n2.attribute( "text" );
+ out << indent << itemName << " = QPopupMenu(self)" << endl;
+ out << indent << parent << ".setAccel(" << trcall( n2.attribute( "accel" ) ) << ",";
+ out << parent << ".insertItem(" << "self." << n.attribute( "name" ) << ".iconSet(),";
+ out << trcall( itemText ) << "," << itemName << "))" << endl;
+ trout << indent << parent << ".changeItem(" << parent << ".idAt(" << i << "),";
+ trout << trcall( itemText ) << ")" << endl;
+ createPopupMenuImpl( n2, parentClass, itemName );
+ n = n2;
+ } else {
+ out << indent << "self." << n.attribute( "name" ) << ".addTo(" << parent << ")" << endl;
+ }
+ } else if ( n.tagName() == "separator" ) {
+ out << indent << parent << ".insertSeparator()" << endl;
+ }
+ ++i;
+ }
+}
+
+/*!
+ Creates implementation of an listbox item tag.
+*/
+
+QString Uic::createListBoxItemImpl( const QDomElement &e, const QString &parent ,
+ QString *value )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString com;
+ QString pix;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QString attrib = n.attribute( "name" );
+ QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() );
+ if ( attrib == "text" ) {
+ txt = v.toString();
+ com = getComment( n );
+ } else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( "self." );
+ } else {
+ pix.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "self." ) );
+ pix.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ }
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ if ( value )
+ *value = trcall( txt, com );
+
+ if ( pix.isEmpty() )
+ return parent + ".insertItem(" + trcall( txt, com ) + ")";
+
+ return parent + ".insertItem(" + pix + "," + trcall( txt, com ) + ")";
+}
+
+/*!
+ Creates implementation of an iconview item tag.
+*/
+
+QString Uic::createIconViewItemImpl( const QDomElement &e, const QString &parent )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString com;
+ QString pix;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QString attrib = n.attribute( "name" );
+ QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() );
+ if ( attrib == "text" ) {
+ txt = v.toString();
+ com = getComment( n );
+ } else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( "self." );
+ } else {
+ pix.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "self." ) );
+ pix.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ }
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ if ( pix.isEmpty() )
+ return "QIconViewItem(" + parent + "," + trcall( txt, com ) + ")";
+ else
+ return "QIconViewItem(" + parent + "," + trcall( txt, com ) + "," + pix + ")";
+}
+
+/*!
+ Creates implementation of an listview item tag.
+*/
+
+QString Uic::createListViewItemImpl( const QDomElement &e, const QString &parent,
+ const QString &parentItem )
+{
+ QString s;
+
+ QDomElement n = e.firstChild().toElement();
+
+ bool hasChildren = e.elementsByTagName( "item" ).count() > 0;
+ QString item;
+
+ if ( hasChildren ) {
+ item = registerObject( "item" );
+ } else {
+ item = "item";
+ item_used = TRUE;
+ }
+ s = trindent + item + " = ";
+
+ if ( !parentItem.isEmpty() )
+ s += "QListViewItem(" + parentItem + "," + lastItem + ")\n";
+ else
+ s += "QListViewItem(" + parent + "," + lastItem + ")\n";
+
+ QStringList texts;
+ QStringList pixmaps;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QString attrib = n.attribute("name");
+ QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() );
+ if ( attrib == "text" )
+ texts << v.toString();
+ else if ( attrib == "pixmap" ) {
+ QString pix = v.toString();
+ if ( !pix.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( "self." );
+ } else {
+ pix.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "self." ) );
+ pix.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ pixmaps << pix;
+ }
+ } else if ( n.tagName() == "item" ) {
+ s += trindent + item + ".setOpen(1)\n";
+ s += createListViewItemImpl( n, parent, item );
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ for ( int i = 0; i < (int)texts.count(); ++i ) {
+ if ( !texts[ i ].isEmpty() )
+ s += trindent + item + ".setText(" + QString::number( i ) + "," + trcall( texts[ i ] ) + ")\n";
+ if ( !pixmaps[ i ].isEmpty() )
+ s += trindent + item + ".setPixmap(" + QString::number( i ) + "," + pixmaps[ i ] + ")\n";
+ }
+
+ lastItem = item;
+ return s;
+}
+
+/*!
+ Creates implementation of an listview column tag.
+*/
+
+QString Uic::createListViewColumnImpl( const QDomElement &e, const QString &parent,
+ QString *value )
+{
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString com;
+ QString pix;
+ bool clickable = FALSE, resizable = FALSE;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QString attrib = n.attribute("name");
+ QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() );
+ if ( attrib == "text" ) {
+ txt = v.toString();
+ com = getComment( n );
+ } else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( "self." );
+ } else {
+ pix.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "self." ) );
+ pix.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ } else if ( attrib == "clickable" )
+ clickable = v.toBool();
+ else if ( attrib == "resizable" || attrib == "resizeable" )
+ resizable = v.toBool();
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ if ( value )
+ *value = trcall( txt, com );
+
+ QString s;
+ s = indent + parent + ".addColumn(" + trcall( txt, com ) + ")\n";
+ if ( !pix.isEmpty() )
+ s += indent + parent + ".header().setLabel(" + parent + ".header().count() - 1,QIconSet(" + pix + ")," + trcall( txt, com ) + ")\n";
+ if ( !clickable )
+ s += indent + parent + ".header().setClickEnabled(0," + parent + ".header().count() - 1)\n";
+ if ( !resizable )
+ s += indent + parent + ".header().setResizeEnabled(0," + parent + ".header().count() - 1)\n";
+ return s;
+}
+
+QString Uic::createTableRowColumnImpl( const QDomElement &e, const QString &parent,
+ QString *value )
+{
+ QString objClass = getClassName( e.parentNode().toElement() );
+ QDomElement n = e.firstChild().toElement();
+ QString txt;
+ QString com;
+ QString pix;
+ QString field;
+ bool isRow = e.tagName() == "row";
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "property" ) {
+ QString attrib = n.attribute("name");
+ QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() );
+ if ( attrib == "text" ) {
+ txt = v.toString();
+ com = getComment( n );
+ } else if ( attrib == "pixmap" ) {
+ pix = v.toString();
+ if ( !pix.isEmpty() ) {
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pix.prepend( "self." );
+ } else {
+ pix.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "self." ) );
+ pix.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ }
+ } else if ( attrib == "field" )
+ field = v.toString();
+ }
+ n = n.nextSibling().toElement();
+ }
+
+ if ( value )
+ *value = trcall( txt, com );
+
+ // ### This generated code sucks! We have to set the number of
+ // rows/cols before and then only do setLabel/()
+ // ### careful, though, since QDataTable has an API which makes this code pretty good
+
+ QString s;
+ if ( isRow ) {
+ s = indent + parent + ".setNumRows(" + parent + ".numRows() + 1)\n";
+ if ( pix.isEmpty() )
+ s += indent + parent + ".verticalHeader().setLabel(" + parent + ".numRows() - 1,"
+ + trcall( txt, com ) + ")\n";
+ else
+ s += indent + parent + ".verticalHeader().setLabel(" + parent + ".numRows() - 1,QIconSet("
+ + pix + ")," + trcall( txt, com ) + ")\n";
+ } else {
+ if ( objClass == "QTable" ) {
+ s = indent + parent + ".setNumCols(" + parent + ".numCols() + 1)\n";
+ if ( pix.isEmpty() )
+ s += indent + parent + ".horizontalHeader().setLabel(" + parent + ".numCols() - 1,"
+ + trcall( txt, com ) + ")\n";
+ else
+ s += indent + parent + ".horizontalHeader().setLabel(" + parent + ".numCols() - 1,QIconSet("
+ + pix + ")," + trcall( txt, com ) + ")\n";
+ } else if ( objClass == "QDataTable" ) {
+ if ( !txt.isEmpty() && !field.isEmpty() ) {
+ if ( pix.isEmpty() )
+ out << indent << parent << ".addColumn(" << fixString( field ) << "," << trcall( txt, com ) << ")" << endl;
+ else
+ out << indent << parent << ".addColumn(" << fixString( field ) << "," << trcall( txt, com ) << ",QIconSet(" << pix << "))" << endl;
+ }
+ }
+ }
+ return s;
+}
+
+/*!
+ Creates the implementation of a layout tag. Called from createObjectImpl().
+ */
+QString Uic::createLayoutImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout )
+{
+ QDomElement n;
+ QString objClass, objName;
+ objClass = e.tagName();
+
+ QString qlayout = "QVBoxLayout";
+ if ( objClass == "hbox" )
+ qlayout = "QHBoxLayout";
+ else if ( objClass == "grid" )
+ qlayout = "QGridLayout";
+
+ bool isGrid = e.tagName() == "grid" ;
+ objName = registerObject( getLayoutName( e ) );
+ layoutObjects += objName;
+
+ QString margin = DomTool::readProperty( e, "margin", defMargin ).toString();
+ QString spacing = DomTool::readProperty( e, "spacing", defSpacing ).toString();
+ QString resizeMode = DomTool::readProperty( e, "resizeMode", QString::null ).toString();
+
+ QString optcells;
+ if ( isGrid )
+ optcells = "1,1,";
+ if ( (parentClass == "QGroupBox" || parentClass == "QButtonGroup") && layout.isEmpty() ) {
+ // special case for group box
+ out << indent << parent << ".setColumnLayout(0,Qt.Vertical)" << endl;
+ out << indent << parent << ".layout().setSpacing(" << spacing << ")" << endl;
+ out << indent << parent << ".layout().setMargin(" << margin << ")" << endl;
+ out << indent << objName << " = " << qlayout << "(" << parent << ".layout())" << endl;
+ out << indent << objName << ".setAlignment(Qt.AlignTop)" << endl;
+ } else {
+ out << indent << objName << " = " << qlayout << "(";
+ if ( layout.isEmpty() )
+ out << parent;
+ else {
+ out << "None";
+ if ( !DomTool::hasProperty( e, "margin" ) )
+ margin = "0";
+ }
+ out << "," << optcells << margin << "," << spacing << ",\"" << objName << "\")" << endl;
+ }
+ if ( !resizeMode.isEmpty() )
+ out << indent << objName << ".setResizeMode(QLayout." << resizeMode << ")" << endl;
+
+ if ( !isGrid ) {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ if ( n.tagName() == "spacer" ) {
+ QString child = createSpacerImpl( n, parentClass, parent, objName );
+ out << indent << objName << ".addItem(" << child << ")" << endl;
+ } else if ( tags.contains( n.tagName() ) ) {
+ QString child = createObjectImpl( n, parentClass, parent, objName );
+ if ( isLayout( child ) )
+ out << indent << objName << ".addLayout(" << child << ")" << endl;
+ else
+ out << indent << objName << ".addWidget(" << child << ")" << endl;
+ }
+ }
+ } else {
+ for ( n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) {
+ QDomElement ae = n;
+ int row = ae.attribute( "row" ).toInt();
+ int col = ae.attribute( "column" ).toInt();
+ int rowspan = ae.attribute( "rowspan" ).toInt();
+ int colspan = ae.attribute( "colspan" ).toInt();
+ if ( rowspan < 1 )
+ rowspan = 1;
+ if ( colspan < 1 )
+ colspan = 1;
+ if ( n.tagName() == "spacer" ) {
+ QString child = createSpacerImpl( n, parentClass, parent, objName );
+ if ( rowspan * colspan != 1 )
+ out << indent << objName << ".addMultiCell(" << child << ","
+ << row << "," << ( row + rowspan - 1 ) << "," << col << "," << ( col + colspan - 1 ) << ")" << endl;
+ else
+ out << indent << objName << ".addItem(" << child << ","
+ << row << "," << col << ")" << endl;
+ } else if ( tags.contains( n.tagName() ) ) {
+ QString child = createObjectImpl( n, parentClass, parent, objName );
+ out << endl;
+ QString o = "Widget";
+ if ( isLayout( child ) )
+ o = "Layout";
+ if ( rowspan * colspan != 1 )
+ out << indent << objName << ".addMultiCell" << o << "(" << child << ","
+ << row << "," << ( row + rowspan - 1 ) << "," << col << "," << ( col + colspan - 1 ) << ")" << endl;
+ else
+ out << indent << objName << ".add" << o << "(" << child << ","
+ << row << "," << col << ")" << endl;
+ }
+ }
+ }
+
+ return objName;
+}
+
+
+
+QString Uic::createSpacerImpl( const QDomElement &e, const QString& /*parentClass*/, const QString& /*parent*/, const QString& /*layout*/)
+{
+ QDomElement n;
+ QString objClass, objName;
+ objClass = e.tagName();
+ objName = registerObject( getObjectName( e ) );
+
+ QSize size = DomTool::readProperty( e, "sizeHint", QSize( 0, 0 ) ).toSize();
+ QString sizeType = DomTool::readProperty( e, "sizeType", "Expanding" ).toString();
+ bool isVspacer = DomTool::readProperty( e, "orientation", "Horizontal" ) == "Vertical";
+
+ if ( sizeType != "Expanding" && sizeType != "MinimumExpanding" &&
+ DomTool::hasProperty( e, "geometry" ) ) { // compatibility Qt 2.2
+ QRect geom = DomTool::readProperty( e, "geometry", QRect(0,0,0,0) ).toRect();
+ size = geom.size();
+ }
+
+ if ( isVspacer )
+ out << indent << objName << " = QSpacerItem("
+ << size.width() << "," << size.height()
+ << ",QSizePolicy.Minimum,QSizePolicy." << sizeType << ")" << endl;
+ else
+ out << indent << objName << " = QSpacerItem("
+ << size.width() << "," << size.height()
+ << ",QSizePolicy." << sizeType << ",QSizePolicy.Minimum)" << endl;
+
+ return objName;
+}
+
+static const char* const ColorRole[] = {
+ "Foreground", "Button", "Light", "Midlight", "Dark", "Mid",
+ "Text", "BrightText", "ButtonText", "Base", "Background", "Shadow",
+ "Highlight", "HighlightedText", "Link", "LinkVisited", 0
+};
+
+
+/*!
+ Creates a colorgroup with name \a name from the color group \a cg
+ */
+void Uic::createColorGroupImpl( const QString& name, const QDomElement& e )
+{
+ QColorGroup cg;
+ int r = -1;
+ QDomElement n = e.firstChild().toElement();
+ QString color;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "color" ) {
+ r++;
+ QColor col = DomTool::readColor( n );
+ color = "QColor(%1,%2,%3)";
+ color = color.arg( col.red() ).arg( col.green() ).arg( col.blue() );
+ if ( col == white )
+ color = "Qt.white";
+ else if ( col == black )
+ color = "Qt.black";
+ if ( n.nextSibling().toElement().tagName() != "pixmap" ) {
+ out << indent << name << ".setColor(QColorGroup." << ColorRole[r] << "," << color << ")" << endl;
+ }
+ } else if ( n.tagName() == "pixmap" ) {
+ QString pixmap = n.firstChild().toText().data();
+ if ( pixmapLoaderFunction.isEmpty() ) {
+ pixmap.prepend( "self." );
+ } else {
+ pixmap.prepend( pixmapLoaderFunction + "(" + QString( externPixmaps ? "\"" : "self." ) );
+ pixmap.append( QString( externPixmaps ? "\"" : "" ) + ")" );
+ }
+ out << indent << name << ".setBrush(QColorGroup."
+ << ColorRole[r] << ",QBrush(" << color << "," << pixmap << "))" << endl;
+ }
+ n = n.nextSibling().toElement();
+ }
+}
+
+/*!
+ Auxiliary function to load a color group. The colorgroup must not
+ contain pixmaps.
+ */
+QColorGroup Uic::loadColorGroup( const QDomElement &e )
+{
+ QColorGroup cg;
+ int r = -1;
+ QDomElement n = e.firstChild().toElement();
+ QColor col;
+ while ( !n.isNull() ) {
+ if ( n.tagName() == "color" ) {
+ r++;
+ cg.setColor( (QColorGroup::ColorRole)r, (col = DomTool::readColor( n ) ) );
+ }
+ n = n.nextSibling().toElement();
+ }
+ return cg;
+}
+
+/*! Returns TRUE if the widget properties specify that it belongs to
+ the database \a connection and \a table.
+*/
+
+bool Uic::isWidgetInTable( const QDomElement& e, const QString& connection, const QString& table )
+{
+ QString conn = getDatabaseInfo( e, "connection" );
+ QString tab = getDatabaseInfo( e, "table" );
+ if ( conn == connection && tab == table )
+ return TRUE;
+ return FALSE;
+}
+
+/*!
+ Registers all database connections, cursors and forms.
+*/
+
+void Uic::registerDatabases( const QDomElement& e )
+{
+ QDomElement n;
+ QDomNodeList nl;
+ int i;
+ nl = e.parentNode().toElement().elementsByTagName( "widget" );
+ for ( i = 0; i < (int) nl.length(); ++i ) {
+ n = nl.item(i).toElement();
+ QString conn = getDatabaseInfo( n, "connection" );
+ QString tab = getDatabaseInfo( n, "table" );
+ QString fld = getDatabaseInfo( n, "field" );
+ if ( !conn.isNull() ) {
+ dbConnections += conn;
+ if ( !tab.isNull() ) {
+ dbCursors[conn] += tab;
+ if ( !fld.isNull() )
+ dbForms[conn] += tab;
+ }
+ }
+ }
+}
+
+/*!
+ Registers an object with name \a name.
+
+ The returned name is a valid variable identifier, as similar to \a
+ name as possible and guaranteed to be unique within the form.
+
+ \sa registeredName(), isObjectRegistered()
+ */
+QString Uic::registerObject( const QString& name )
+{
+ if ( objectNames.isEmpty() ) {
+ // some temporary variables we need
+ objectNames += "img";
+ objectNames += "item";
+ objectNames += "cg";
+ objectNames += "pal";
+ }
+
+ QString result = name;
+ int i;
+ while ( ( i = result.find(' ' )) != -1 ) {
+ result[i] = '_';
+ }
+
+ if ( objectNames.contains( result ) ) {
+ int i = 2;
+ while ( objectNames.contains( result + "_" + QString::number(i) ) )
+ i++;
+ result += "_";
+ result += QString::number(i);
+ }
+ objectNames += result;
+ objectMapper.insert( name, result );
+ return result;
+}
+
+/*!
+ Returns the registered name for the original name \a name
+ or \a name if \a name wasn't registered.
+
+ \sa registerObject(), isObjectRegistered()
+ */
+QString Uic::registeredName( const QString& name )
+{
+ if ( !objectMapper.contains( name ) )
+ return name;
+ return objectMapper[name];
+}
+
+/*!
+ Returns whether the object \a name was registered yet or not.
+ */
+bool Uic::isObjectRegistered( const QString& name )
+{
+ return objectMapper.contains( name );
+}
+
+
+/*!
+ Unifies the entries in stringlist \a list. Should really be a QStringList feature.
+ */
+QStringList Uic::unique( const QStringList& list )
+{
+ if ( list.isEmpty() )
+ return list;
+
+ QStringList result;
+ for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) {
+ if ( !result.contains(*it) )
+ result += *it;
+ }
+ return result;
+}
+
+
+
+/*!
+ Creates an instance of class \a objClass, with parent \a parent and name \a objName
+ */
+QString Uic::createObjectInstance( const QString& objClass, const QString& parent, const QString& objName )
+{
+
+ if ( objClass.mid( 1 ) == "ComboBox" ) {
+ return objClass + "(0," + parent + ",\"" + objName + "\")";
+ }
+ return objClass + "(" + parent + ",\"" + objName + "\")";
+}
+
+bool Uic::isLayout( const QString& name ) const
+{
+ return layoutObjects.contains( name );
+}
diff --git a/python/pyqt/pyuic3/uic.h b/python/pyqt/pyuic3/uic.h
new file mode 100644
index 00000000..ea52ac34
--- /dev/null
+++ b/python/pyqt/pyuic3/uic.h
@@ -0,0 +1,183 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (c) 2001 Phil Thompson <phil@river-bank.demon.co.uk>
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef UIC_H
+#define UIC_H
+#include <qdom.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qmap.h>
+#include <qtextstream.h>
+#include <qpalette.h>
+#include <qvariant.h>
+
+
+#define PYQT_VERSION "3.17.2"
+
+
+class PyIndent
+{
+public:
+ PyIndent() : tabStop(4), current(0) {calc();}
+
+ void setTabStop(uint n) {tabStop = n; calc();}
+ uint setIndent(uint i) {uint old = current; current = i; calc(); return old;}
+ void operator++() {++current; calc();}
+ void operator--() {--current; calc();}
+ operator QString() {return indstr;}
+
+private:
+ uint tabStop;
+ uint current;
+ QString indstr;
+
+ void calc();
+};
+
+
+class Uic : public Qt
+{
+public:
+ Uic( const QString &fn, const char *outputFn, QTextStream& out,
+ QDomDocument doc, bool subcl, const QString &trm,
+ const QString& subclname, QString &uicClass );
+
+ static void setIndent(const PyIndent &pyind) {indent = pyind; trindent = pyind;}
+
+ void createFormImpl( const QDomElement &e );
+
+ void createSubImpl( const QDomElement &e, const QString& subclname );
+
+ void createActionImpl( const QDomElement& e, const QString &parent );
+ void createToolbarImpl( const QDomElement &e, const QString &parentClass, const QString &parent );
+ void createMenuBarImpl( const QDomElement &e, const QString &parentClass, const QString &parent );
+ void createPopupMenuImpl( const QDomElement &e, const QString &parentClass, const QString &parent );
+ QString createObjectImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ QString createLayoutImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ QString createObjectInstance( const QString& objClass, const QString& parent, const QString& objName );
+ QString createSpacerImpl( const QDomElement &e, const QString& parentClass, const QString& parent, const QString& layout = QString::null );
+ void createExclusiveProperty( const QDomElement & e, const QString& exclusiveProp );
+ QString createListBoxItemImpl( const QDomElement &e, const QString &parent, QString *value = 0 );
+ QString createIconViewItemImpl( const QDomElement &e, const QString &parent );
+ QString createListViewColumnImpl( const QDomElement &e, const QString &parent, QString *value = 0 );
+ QString createTableRowColumnImpl( const QDomElement &e, const QString &parent, QString *value = 0 );
+ QString createListViewItemImpl( const QDomElement &e, const QString &parent,
+ const QString &parentItem );
+ void createColorGroupImpl( const QString& cg, const QDomElement& e );
+ QColorGroup loadColorGroup( const QDomElement &e );
+
+ QDomElement getObjectProperty( const QDomElement& e, const QString& name );
+ QString getPixmapLoaderFunction( const QDomElement& e );
+ QString getFormClassName( const QDomElement& e );
+ QString getClassName( const QDomElement& e );
+ QString getObjectName( const QDomElement& e );
+ QString getLayoutName( const QDomElement& e );
+ QString getInclude( const QString& className );
+
+ QString setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset );
+
+ QString registerObject( const QString& name );
+ QString registeredName( const QString& name );
+ bool isObjectRegistered( const QString& name );
+ QStringList unique( const QStringList& );
+
+ QString trcall( const QString& sourceText, const QString& comment = "" );
+
+ static void embed( QTextStream& out, const char* project, const QStringList& images );
+
+private:
+ QTextStream& out;
+ QTextOStream trout;
+ QString languageChangeBody;
+ QCString outputFileName;
+ QStringList objectNames;
+ QMap<QString,QString> objectMapper;
+ QStringList tags;
+ QStringList layouts;
+ QString formName;
+ QString lastItem;
+ QString trmacro;
+ static PyIndent indent, trindent;
+
+ struct Buddy
+ {
+ Buddy( const QString& k, const QString& b )
+ : key( k ), buddy( b ) {}
+ Buddy(){} // for valuelist
+ QString key;
+ QString buddy;
+ bool operator==( const Buddy& other ) const
+ { return (key == other.key); }
+ };
+ struct CustomInclude
+ {
+ QString header;
+ QString location;
+ };
+ QValueList<Buddy> buddies;
+
+ QStringList layoutObjects;
+ bool isLayout( const QString& name ) const;
+
+ uint item_used : 1;
+ uint cg_used : 1;
+ uint pal_used : 1;
+ uint stdsetdef : 1;
+ uint externPixmaps : 1;
+
+#if QT_VERSION >= 0x030300
+ QString uiFileVersion;
+#endif
+ QString nameOfClass;
+ QStringList namespaces;
+ QString bareNameOfClass;
+ QString pixmapLoaderFunction;
+
+ void registerDatabases( const QDomElement& e );
+ bool isWidgetInTable( const QDomElement& e, const QString& connection, const QString& table );
+ bool isFrameworkCodeGenerated( const QDomElement& e );
+ QString getDatabaseInfo( const QDomElement& e, const QString& tag );
+ void createFormImpl( const QDomElement& e, const QString& form, const QString& connection, const QString& table );
+ void writeFunctionsSubImpl( const QStringList &fuLst, const QStringList &typLst, const QStringList &specLst,
+ const QString &subClass, const QString &descr );
+ QStringList dbConnections;
+ QMap< QString, QStringList > dbCursors;
+ QMap< QString, QStringList > dbForms;
+
+ static bool isMainWindow;
+ static QString mkBool( bool b );
+ static QString mkBool( const QString& s );
+ bool toBool( const QString& s );
+ static QString fixString( const QString &str, bool encode = FALSE );
+ static bool onlyAscii;
+ static QString mkStdSet( const QString& prop );
+ static QString getComment( const QDomNode& n );
+ QVariant defSpacing, defMargin;
+ QString fileName;
+ bool writeFunctImpl;
+
+ void pySlot(QStringList::ConstIterator &it);
+
+ QString pyCode;
+ bool pyNeedTr, pyNeedTrUtf8;
+};
+
+#endif
diff --git a/python/pyqt/pyuic3/widgetdatabase.cpp b/python/pyqt/pyuic3/widgetdatabase.cpp
new file mode 100644
index 00000000..6c447d5b
--- /dev/null
+++ b/python/pyqt/pyuic3/widgetdatabase.cpp
@@ -0,0 +1,953 @@
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about Qt Commercial License Agreements.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "widgetdatabase.h"
+#include "widgetinterface.h"
+
+#include <qapplication.h>
+#define NO_STATIC_COLORS
+#include <globaldefs.h>
+#include <qstrlist.h>
+#include <qdict.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qcleanuphandler.h>
+#include <qfeatures.h>
+
+#include <stdlib.h>
+
+const int dbsize = 300;
+const int dbcustom = 200;
+const int dbdictsize = 211;
+static WidgetDatabaseRecord* db[ dbsize ];
+static QDict<int> *className2Id = 0;
+static int dbcount = 0;
+static int dbcustomcount = 200;
+static QStrList *wGroups;
+static QStrList *invisibleGroups;
+static bool whatsThisLoaded = FALSE;
+static QPluginManager<WidgetInterface> *widgetPluginManager = 0;
+static bool plugins_set_up = FALSE;
+static bool was_in_setup = FALSE;
+
+QCleanupHandler<QPluginManager<WidgetInterface> > cleanup_manager;
+
+WidgetDatabaseRecord::WidgetDatabaseRecord()
+{
+ isForm = FALSE;
+ isContainer = FALSE;
+ icon = 0;
+ nameCounter = 0;
+ isCommon = FALSE;
+ isPlugin = FALSE;
+}
+
+WidgetDatabaseRecord::~WidgetDatabaseRecord()
+{
+ delete icon;
+}
+
+
+/*!
+ \class WidgetDatabase widgetdatabase.h
+ \brief The WidgetDatabase class holds information about widgets
+
+ The WidgetDatabase holds information about widgets like toolTip(),
+ iconSet(), ... It works Id-based, so all access functions take the
+ widget id as parameter. To get the id for a widget (classname), use
+ idFromClassName().
+
+ All access functions are static. Having multiple widgetdatabases in
+ one application doesn't make sense anyway and so you don't need more
+ than an instance of the widgetdatabase.
+
+ For creating widgets, layouts, etc. see WidgetFactory.
+*/
+
+/*!
+ Creates widget database. Does nothing.
+*/
+
+WidgetDatabase::WidgetDatabase()
+{
+}
+
+/*! Sets up the widget database. If the static widgetdatabase already
+ exists, the functions returns immediately.
+*/
+
+void WidgetDatabase::setupDataBase( int id )
+{
+ was_in_setup = TRUE;
+#ifndef UIC
+ Q_UNUSED( id )
+ if ( dbcount )
+ return;
+#else
+ if ( dbcount && id != -2 )
+ return;
+ if ( dbcount && !plugins_set_up ) {
+ setupPlugins();
+ return;
+ }
+ if ( dbcount && plugins_set_up)
+ return;
+#endif
+
+ wGroups = new QStrList;
+ invisibleGroups = new QStrList;
+ invisibleGroups->append( "Forms" );
+ invisibleGroups->append( "Temp" );
+ className2Id = new QDict<int>( dbdictsize );
+ className2Id->setAutoDelete( TRUE );
+
+ WidgetDatabaseRecord *r = 0;
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_pushbutton.png";
+ r->name = "QPushButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Push Button";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_toolbutton.png";
+ r->name = "QToolButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Tool Button";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_radiobutton.png";
+ r->name = "QRadioButton";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Radio Button";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_checkbox.png";
+ r->name = "QCheckBox";
+ r->group = widgetGroup( "Buttons" );
+ r->toolTip = "Check Box";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_groupbox.png";
+ r->name = "QGroupBox";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Group Box";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_buttongroup.png";
+ r->name = "QButtonGroup";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Button Group";
+ r->isContainer = TRUE;
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_frame.png";
+ r->name = "QFrame";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Frame";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_tabwidget.png";
+ r->name = "QTabWidget";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Tabwidget";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_widgetstack.png";
+ r->name = "QWidgetStack";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Widget Stack";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_toolbox.png";
+ r->name = "QToolBox";
+ r->group = widgetGroup( "Containers" );
+ r->toolTip = "Tool Box";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_listbox.png";
+ r->name = "QListBox";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "List Box";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_listview.png";
+ r->name = "QListView";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "List View";
+
+ append( r );
+
+#if !defined(QT_NO_ICONVIEW) || defined(UIC)
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_iconview.png";
+ r->name = "QIconView";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "Icon View";
+
+ append( r );
+#endif
+
+#if !defined(QT_NO_TABLE)
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_table.png";
+ r->name = "QTable";
+ r->group = widgetGroup( "Views" );
+ r->toolTip = "Table";
+
+ append( r );
+#endif
+
+#if !defined(QT_NO_SQL)
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_datatable.png";
+ r->includeFile = "qdatatable.h";
+ r->name = "QDataTable";
+ r->group = widgetGroup( "Database" );
+ r->toolTip = "Data Table";
+
+ append( r );
+#endif
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_lineedit.png";
+ r->name = "QLineEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Line Edit";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_spinbox.png";
+ r->name = "QSpinBox";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Spin Box";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_dateedit.png";
+ r->name = "QDateEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Date Edit";
+ r->includeFile = "qdatetimeedit.h";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_timeedit.png";
+ r->name = "QTimeEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Time Edit";
+ r->includeFile = "qdatetimeedit.h";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_datetimeedit.png";
+ r->name = "QDateTimeEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Date-Time Edit";
+ r->includeFile = "qdatetimeedit.h";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_multilineedit.png";
+ r->name = "QMultiLineEdit";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Multi Line Edit";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_richtextedit.png";
+ r->name = "QTextEdit";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Rich Text Edit";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_combobox.png";
+ r->name = "QComboBox";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Combo Box";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_slider.png";
+ r->name = "QSlider";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Slider";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_scrollbar.png";
+ r->name = "QScrollBar";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Scrollbar";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_dial.png";
+ r->name = "QDial";
+ r->group = widgetGroup( "Input" );
+ r->toolTip = "Dial";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_label.png";
+ r->name = "QLabel";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Label";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_label.png";
+ r->name = "TextLabel";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Text Label";
+ r->whatsThis = "The Text Label provides a widget to display static text.";
+ r->isCommon = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_pixlabel.png";
+ r->name = "PixmapLabel";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Pixmap Label";
+ r->whatsThis = "The Pixmap Label provides a widget to display pixmaps.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_lcdnumber.png";
+ r->name = "QLCDNumber";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "LCD Number";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_line.png";
+ r->name = "Line";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Line";
+ r->includeFile = "qframe.h";
+ r->whatsThis = "The Line widget provides horizontal and vertical lines.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_progress.png";
+ r->name = "QProgressBar";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Progress Bar";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_textview.png";
+ r->name = "QTextView";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Text View";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_textbrowser.png";
+ r->name = "QTextBrowser";
+ r->group = widgetGroup( "Display" );
+ r->toolTip = "Text Browser";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_spacer.png";
+ r->name = "Spacer";
+ r->group = widgetGroup( "Temp" );
+ r->toolTip = "Spacer";
+ r->whatsThis = "The Spacer provides horizontal and vertical spacing to be able to manipulate the behaviour of layouts.";
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QWidget";
+ r->isForm = TRUE;
+ r->group = widgetGroup( "Forms" );
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QDialog";
+ r->group = widgetGroup( "Forms" );
+ r->isForm = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QWizard";
+ r->group = widgetGroup( "Forms" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QDesignerWizard";
+ r->group = widgetGroup( "Forms" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QLayoutWidget";
+ r->group = widgetGroup( "Temp" );
+ r->includeFile = "";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->name = "QSplitter";
+ r->group = widgetGroup( "Temp" );
+ r->includeFile = "qsplitter.h";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_tabwidget.png";
+ r->name = "QDesignerTabWidget";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_tabwidget.png";
+ r->name = "QDesignerWidget";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "designer_tabwidget.png";
+ r->name = "QDesignerDialog";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QMainWindow";
+ r->includeFile = "qmainwindow.h";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QDesignerAction";
+ r->includeFile = "qaction.h";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = FALSE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QDesignerActionGroup";
+ r->includeFile = "qaction.h";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = FALSE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QScrollView";
+ r->includeFile = "qscrollview.h";
+ r->group = widgetGroup( "Temp" );
+ r->isContainer = TRUE;
+
+ append( r );
+
+#ifndef QT_NO_SQL
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QDataBrowser";
+ r->includeFile = "qdatabrowser.h";
+ r->group = widgetGroup( "Database" );
+ r->toolTip = "Data Browser";
+ r->iconSet = "designer_databrowser.png";
+ r->isContainer = TRUE;
+
+ append( r );
+
+ r = new WidgetDatabaseRecord;
+ r->iconSet = "";
+ r->name = "QDataView";
+ r->includeFile = "qdataview.h";
+ r->group = widgetGroup( "Database" );
+ r->toolTip = "Data View";
+ r->iconSet = "designer_dataview.png";
+ r->isContainer = TRUE;
+
+ append( r );
+#endif
+
+#ifndef UIC
+ setupPlugins();
+#endif
+}
+
+void WidgetDatabase::setupPlugins()
+{
+ if ( plugins_set_up )
+ return;
+ plugins_set_up = TRUE;
+ QStringList widgets = widgetManager()->featureList();
+ for ( QStringList::Iterator it = widgets.begin(); it != widgets.end(); ++it ) {
+ if ( hasWidget( *it ) )
+ continue;
+ WidgetDatabaseRecord *r = new WidgetDatabaseRecord;
+ WidgetInterface *iface = 0;
+ widgetManager()->queryInterface( *it, &iface );
+ if ( !iface )
+ continue;
+
+#ifndef UIC
+ QIconSet icon = iface->iconSet( *it );
+ if ( !icon.pixmap().isNull() )
+ r->icon = new QIconSet( icon );
+#endif
+ QString grp = iface->group( *it );
+ if ( grp.isEmpty() )
+ grp = "3rd party widgets";
+ r->group = widgetGroup( grp );
+ r->toolTip = iface->toolTip( *it );
+ r->whatsThis = iface->whatsThis( *it );
+ r->includeFile = iface->includeFile( *it );
+ r->isContainer = iface->isContainer( *it );
+ r->name = *it;
+ r->isPlugin = TRUE;
+ append( r );
+ iface->release();
+ }
+}
+
+/*!
+ Returns the number of elements in the widget database.
+*/
+
+int WidgetDatabase::count()
+{
+ setupDataBase( -1 );
+ return dbcount;
+}
+
+/*!
+ Returns the id at which the ids of custom widgets start.
+*/
+
+int WidgetDatabase::startCustom()
+{
+ setupDataBase( -1 );
+ return dbcustom;
+}
+
+/*!
+ Returns the iconset which represents the class registered as \a id.
+*/
+
+QIconSet WidgetDatabase::iconSet( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QIconSet();
+#if !defined(UIC) && !defined(RESOURCE)
+ if ( !r->icon ) {
+ if ( r->iconSet.isEmpty() )
+ return QIconSet();
+ QPixmap pix = QPixmap::fromMimeSource( r->iconSet );
+ if ( pix.isNull() )
+ pix = QPixmap( r->iconSet );
+ r->icon = new QIconSet( pix );
+ }
+ return *r->icon;
+#else
+ return QIconSet();
+#endif
+}
+
+/*!
+ Returns the classname of the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::className( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->name;
+}
+
+/*!
+ Returns the group the widget registered as \a id belongs to.
+*/
+
+QString WidgetDatabase::group( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->group;
+}
+
+/*!
+ Returns the tooltip text of the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::toolTip( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->toolTip;
+}
+
+/*!
+ Returns the what's this? text of the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::whatsThis( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ return r->whatsThis;
+}
+
+/*!
+ Returns the include file if the widget which is registered as \a id.
+*/
+
+QString WidgetDatabase::includeFile( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return QString::null;
+ if ( r->includeFile.isNull() )
+ return r->name.lower() + ".h";
+ return r->includeFile;
+}
+
+/*! Returns whether the widget registered as \a id is a form.
+*/
+bool WidgetDatabase::isForm( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return FALSE;
+ return r->isForm;
+}
+
+/*! Returns whether the widget registered as \a id can have children.
+*/
+
+bool WidgetDatabase::isContainer( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return FALSE;
+ return r->isContainer || r->isForm;
+}
+
+bool WidgetDatabase::isCommon( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return FALSE;
+ return r->isCommon;
+}
+
+QString WidgetDatabase::createWidgetName( int id )
+{
+ setupDataBase( id );
+ QString n = className( id );
+ if ( n == "QLayoutWidget" )
+ n = "Layout";
+ if ( n[ 0 ] == 'Q' && n[ 1 ].lower() != n[ 1 ] )
+ n = n.mid( 1 );
+ int colonColon = n.findRev( "::" );
+ if ( colonColon != -1 )
+ n = n.mid( colonColon + 2 );
+
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return n;
+ n += QString::number( ++r->nameCounter );
+ n[0] = n[0].lower();
+ return n;
+}
+
+/*! Returns the id for \a name or -1 if \a name is unknown.
+ */
+int WidgetDatabase::idFromClassName( const QString &name )
+{
+ setupDataBase( -1 );
+ if ( name.isEmpty() )
+ return 0;
+ int *i = className2Id->find( name );
+ if ( i )
+ return *i;
+ if ( name == "FormWindow" )
+ return idFromClassName( "QLayoutWidget" );
+#ifdef UIC
+ setupDataBase( -2 );
+ i = className2Id->find( name );
+ if ( i )
+ return *i;
+#endif
+ return -1;
+}
+
+bool WidgetDatabase::hasWidget( const QString &name )
+{
+ return className2Id->find( name ) != 0;
+}
+
+WidgetDatabaseRecord *WidgetDatabase::at( int index )
+{
+ if ( index < 0 )
+ return 0;
+ if ( index >= dbcustom && index < dbcustomcount )
+ return db[ index ];
+ if ( index < dbcount )
+ return db[ index ];
+ return 0;
+}
+
+void WidgetDatabase::insert( int index, WidgetDatabaseRecord *r )
+{
+ if ( index < 0 || index >= dbsize )
+ return;
+ db[ index ] = r;
+ className2Id->insert( r->name, new int( index ) );
+ if ( index < dbcustom )
+ dbcount = QMAX( dbcount, index );
+}
+
+void WidgetDatabase::append( WidgetDatabaseRecord *r )
+{
+ if ( !was_in_setup )
+ setupDataBase( -1 );
+ insert( dbcount++, r );
+}
+
+QString WidgetDatabase::widgetGroup( const QString &g )
+{
+ if ( wGroups->find( g ) == -1 )
+ wGroups->append( g );
+ return g;
+}
+
+bool WidgetDatabase::isGroupEmpty( const QString &grp )
+{
+ WidgetDatabaseRecord *r = 0;
+ for ( int i = 0; i < dbcount; ++i ) {
+ if ( !( r = db[ i ] ) )
+ continue;
+ if ( r->group == grp )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+QString WidgetDatabase::widgetGroup( int i )
+{
+ setupDataBase( -1 );
+ if ( i >= 0 && i < (int)wGroups->count() )
+ return wGroups->at( i );
+ return QString::null;
+}
+
+int WidgetDatabase::numWidgetGroups()
+{
+ setupDataBase( -1 );
+ return wGroups->count();
+}
+
+bool WidgetDatabase::isGroupVisible( const QString &g )
+{
+ setupDataBase( -1 );
+ return invisibleGroups->find( g ) == -1;
+}
+
+int WidgetDatabase::addCustomWidget( WidgetDatabaseRecord *r )
+{
+ insert( dbcustomcount++, r );
+ return dbcustomcount - 1;
+}
+
+void WidgetDatabase::customWidgetClassNameChanged( const QString &oldName,
+ const QString &newName )
+{
+ int id = idFromClassName( oldName );
+ if ( id == -1 )
+ return;
+ WidgetDatabaseRecord *r = db[ id ];
+ r->name = newName;
+ className2Id->remove( oldName );
+ className2Id->insert( newName, new int( id ) );
+}
+
+bool WidgetDatabase::isCustomWidget( int id )
+{
+ if ( id >= dbcustom && id < dbcustomcount )
+ return TRUE;
+ return FALSE;
+}
+
+bool WidgetDatabase::isCustomPluginWidget( int id )
+{
+ setupDataBase( id );
+ WidgetDatabaseRecord *r = at( id );
+ if ( !r )
+ return FALSE;
+ return r->isPlugin;
+}
+
+bool WidgetDatabase::isWhatsThisLoaded()
+{
+ return whatsThisLoaded;
+}
+
+void WidgetDatabase::loadWhatsThis( const QString &docPath )
+{
+ QString whatsthisFile = docPath + "/whatsthis";
+ QFile f( whatsthisFile );
+ if ( !f.open( IO_ReadOnly ) )
+ return;
+ QTextStream ts( &f );
+ while ( !ts.atEnd() ) {
+ QString s = ts.readLine();
+ QStringList l = QStringList::split( " | ", s );
+ int id = idFromClassName( l[ 1 ] );
+ WidgetDatabaseRecord *r = at( id );
+ if ( r )
+ r->whatsThis = l[ 0 ];
+ }
+ whatsThisLoaded = TRUE;
+}
+
+
+// ### Qt 3.1: make these publically accessible via QWidgetDatabase API
+#if defined(UIC)
+bool dbnounload = FALSE;
+QStringList *dbpaths = 0;
+#else
+extern QString *qwf_plugin_dir;
+#endif
+
+
+QPluginManager<WidgetInterface> *widgetManager()
+{
+ if ( !widgetPluginManager ) {
+ QString pluginDir = "/designer";
+#if !defined(UIC)
+ if ( qwf_plugin_dir )
+ pluginDir = *qwf_plugin_dir;
+#endif
+ widgetPluginManager = new QPluginManager<WidgetInterface>( IID_Widget, QApplication::libraryPaths(), pluginDir );
+ cleanup_manager.add( &widgetPluginManager );
+#if defined(UIC)
+ if ( dbnounload )
+ widgetPluginManager->setAutoUnload( FALSE );
+ if ( dbpaths ) {
+ QStringList::ConstIterator it = dbpaths->begin();
+ for ( ; it != dbpaths->end(); ++it )
+ widgetPluginManager->addLibraryPath( *it );
+ }
+#endif
+ }
+ return widgetPluginManager;
+}
diff --git a/python/pyqt/pyuic3/widgetdatabase.h b/python/pyqt/pyuic3/widgetdatabase.h
new file mode 100644
index 00000000..b44ef885
--- /dev/null
+++ b/python/pyqt/pyuic3/widgetdatabase.h
@@ -0,0 +1,96 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about Qt Commercial License Agreements.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef WIDGETDATABASE_H
+#define WIDGETDATABASE_H
+
+#include <qiconset.h>
+#include <qstring.h>
+#include "widgetinterface.h" // up here for GCC 2.7.* compatibility
+#include <private/qpluginmanager_p.h>
+
+
+extern QPluginManager<WidgetInterface> *widgetManager();
+
+struct WidgetDatabaseRecord
+{
+ WidgetDatabaseRecord();
+ ~WidgetDatabaseRecord();
+ QString iconSet, name, group, toolTip, whatsThis, includeFile;
+ uint isContainer : 1;
+ uint isForm : 1;
+ uint isCommon : 1;
+ uint isPlugin : 1;
+ QIconSet *icon;
+ int nameCounter;
+};
+
+class WidgetDatabase : public Qt
+{
+public:
+ WidgetDatabase();
+ static void setupDataBase( int id );
+ static void setupPlugins();
+
+ static int count();
+ static int startCustom();
+
+ static QIconSet iconSet( int id );
+ static QString className( int id );
+ static QString group( int id );
+ static QString toolTip( int id );
+ static QString whatsThis( int id );
+ static QString includeFile( int id );
+ static bool isForm( int id );
+ static bool isContainer( int id );
+ static bool isCommon( int id );
+
+ static int idFromClassName( const QString &name );
+ static QString createWidgetName( int id );
+
+ static WidgetDatabaseRecord *at( int index );
+ static void insert( int index, WidgetDatabaseRecord *r );
+ static void append( WidgetDatabaseRecord *r );
+
+ static QString widgetGroup( const QString &g );
+ static QString widgetGroup( int i );
+ static int numWidgetGroups();
+ static bool isGroupVisible( const QString &g );
+ static bool isGroupEmpty( const QString &grp );
+
+ static int addCustomWidget( WidgetDatabaseRecord *r );
+ static bool isCustomWidget( int id );
+ static bool isCustomPluginWidget( int id );
+
+ static bool isWhatsThisLoaded();
+ static void loadWhatsThis( const QString &docPath );
+
+ static bool hasWidget( const QString &name );
+ static void customWidgetClassNameChanged( const QString &oldName, const QString &newName );
+
+};
+
+#endif
diff --git a/python/pyqt/pyuic3/widgetinterface.h b/python/pyqt/pyuic3/widgetinterface.h
new file mode 100644
index 00000000..bf6bcd55
--- /dev/null
+++ b/python/pyqt/pyuic3/widgetinterface.h
@@ -0,0 +1,29 @@
+ /**********************************************************************
+** Copyright (C) 2000-2001 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef WIDGETINTERFACE_H
+#define WIDGETINTERFACE_H
+
+#include <private/qwidgetinterface_p.h>
+
+#define WidgetInterface QWidgetFactoryInterface
+#define IID_Widget IID_QWidgetFactory
+
+#endif
diff --git a/python/pyqt/sip/pyqt-gpl.sip b/python/pyqt/sip/pyqt-gpl.sip
new file mode 100644
index 00000000..bec8f9e3
--- /dev/null
+++ b/python/pyqt/sip/pyqt-gpl.sip
@@ -0,0 +1 @@
+%License /Type="gpl"/
diff --git a/python/pyqt/sip/qt/copying.sip b/python/pyqt/sip/qt/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qt/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qt/qaccel.sip b/python/pyqt/sip/qt/qaccel.sip
new file mode 100644
index 00000000..9c547ef4
--- /dev/null
+++ b/python/pyqt/sip/qt/qaccel.sip
@@ -0,0 +1,104 @@
+// This is the SIP interface definition for QAccel.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAccel</Title>
+<Para>
+<Literal>QAccel</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QAccel : QObject
+{
+%TypeHeaderCode
+#include <qaccel.h>
+%End
+
+public:
+ QAccel(QWidget * /TransferThis/,char * = 0);
+%If (Qt_2_1_0 -)
+ QAccel(QWidget *,QObject * /TransferThis/,char * = 0);
+%End
+
+ bool isEnabled();
+ void setEnabled(bool);
+
+ uint count();
+
+%If (- Qt_3_0_0)
+ int insertItem(int,int = -1);
+%End
+%If (Qt_3_0_0 -)
+ int insertItem(const QKeySequence &,int = -1);
+%End
+ void removeItem(int);
+ void clear();
+
+%If (- Qt_3_0_0)
+ int key(int);
+ int findKey(int) const;
+%End
+%If (Qt_3_0_0 -)
+ QKeySequence key(int);
+ int findKey(const QKeySequence &) const;
+%End
+
+ bool isItemEnabled(int) const;
+ void setItemEnabled(int,bool);
+
+ bool connectItem(int,SIP_RXOBJ_CON,SIP_SLOT_CON(int));
+ bool disconnectItem(int,SIP_RXOBJ_DIS,SIP_SLOT_DIS(int));
+
+ void repairEventFilter();
+
+%If (Qt_2_00 -)
+ void setWhatsThis(int,const QString &);
+ QString whatsThis(int) const;
+ void setIgnoreWhatsThis(bool);
+ bool ignoreWhatsThis() const;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ static int shortcutKey(const QString &);
+ static QString keyToString(int);
+ static int stringToKey(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ static QKeySequence shortcutKey(const QString &);
+ static QString keyToString(QKeySequence);
+ static QKeySequence stringToKey(const QString &);
+%End
+
+signals:
+ void activated(int);
+%If (Qt_3_1_0 -)
+ void activatedAmbiguously(int);
+%End
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+
+private:
+ QAccel(const QAccel &);
+};
diff --git a/python/pyqt/sip/qt/qaction.sip b/python/pyqt/sip/qt/qaction.sip
new file mode 100644
index 00000000..e1f5c705
--- /dev/null
+++ b/python/pyqt/sip/qt/qaction.sip
@@ -0,0 +1,210 @@
+// This is the SIP interface definition for QAction and QActionGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAction (Qt v2.2+)</Title>
+<Para>
+<Literal>QAction</Literal> is fully implemented.
+</Para>
+
+</Sect2>
+<Sect2><Title>QActionGroup (Qt v2.2+)</Title>
+<Para>
+<Literal>QActionGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_ACTION)
+%If (Qt_2_2_0 -)
+
+class QAction : QObject
+{
+%TypeHeaderCode
+#include <qaction.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QAction(QObject * /TransferThis/ = 0,const char * = 0,bool = 0);
+ QAction(const QString &,const QIconSet &,const QString &,int,
+ QObject * /TransferThis/,const char * = 0,bool = 0);
+ QAction(const QString &,const QString &,int,QObject * /TransferThis/,
+ const char * = 0,bool = 0);
+%End
+%If (Qt_3_0_0 - Qt_3_2_0)
+ QAction(QObject * /TransferThis/,const char * = 0,bool = 0);
+%End
+%If (Qt_3_2_0 -)
+ QAction(QObject * /TransferThis/,const char * = 0);
+ QAction(const QString &,QKeySequence,QObject * /TransferThis/,
+ const char * = 0);
+ QAction(const QIconSet &,const QString &,QKeySequence,
+ QObject * /TransferThis/,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ // Obsolete.
+ QAction(const QString &,const QIconSet &,const QString &,QKeySequence,
+ QObject * /TransferThis/,const char * = 0,bool = 0);
+ // Obsolete.
+ QAction(const QString &,const QString &,QKeySequence,
+ QObject * /TransferThis/,const char * = 0,bool = 0);
+%End
+%If (Qt_3_2_0 -)
+ // Obsolete.
+ QAction(QObject * /TransferThis/,const char *,bool);
+%End
+
+ virtual void setIconSet(const QIconSet &);
+ QIconSet iconSet() const;
+ virtual void setText(const QString &);
+ QString text() const;
+ virtual void setMenuText(const QString &);
+ QString menuText() const;
+ virtual void setToolTip(const QString &);
+ QString toolTip() const;
+ virtual void setStatusTip(const QString &);
+ QString statusTip() const;
+ virtual void setWhatsThis(const QString &);
+ QString whatsThis() const;
+%If (- Qt_3_0_0)
+ virtual void setAccel(int);
+ int accel() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setAccel(const QKeySequence &);
+ QKeySequence accel() const;
+%End
+ virtual void setToggleAction(bool);
+ bool isToggleAction() const;
+%If (- Qt_3_0_0)
+ virtual void setOn(bool);
+%End
+ bool isOn() const;
+ bool isEnabled() const;
+%If (Qt_3_1_0 -)
+ bool isVisible() const;
+%End
+ virtual bool addTo(QWidget *);
+ virtual bool removeFrom(QWidget *);
+
+protected:
+%If (Qt_3_0_0 -)
+ virtual void addedTo(QWidget *,QWidget *);
+ virtual void addedTo(int,QPopupMenu *);
+%End
+
+public slots:
+%If (Qt_3_3_0 -)
+ void activate();
+%End
+%If (Qt_3_0_0 -)
+ void toggle();
+ virtual void setOn(bool);
+%End
+ virtual void setEnabled(bool);
+%If (Qt_3_3_0 -)
+ void setDisabled(bool);
+%End
+%If (Qt_3_1_0 -)
+ void setVisible(bool);
+%End
+
+signals:
+ void activated();
+ void toggled(bool);
+
+private:
+%If (Qt_3_1_0 -)
+ QAction(const QAction &);
+%End
+};
+
+
+class QActionGroup : QAction
+{
+%TypeHeaderCode
+#include <qaction.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QActionGroup(QWidget * /TransferThis/,const char * = 0,bool = 1);
+%End
+%If (Qt_3_0_0 - Qt_3_2_0)
+ QActionGroup(QObject * /TransferThis/,const char * = 0,bool = 1);
+%End
+%If (Qt_3_2_0 -)
+ QActionGroup(QObject * /TransferThis/,const char * = 0);
+ // Obsolete.
+ QActionGroup(QObject * /TransferThis/,const char *,bool);
+%End
+
+ void setExclusive(bool);
+ bool isExclusive() const;
+%If (- Qt_3_0_0)
+ void insert(QAction *);
+%End
+%If (Qt_3_0_0 -)
+ void add(QAction *);
+ void addSeparator();
+%End
+ bool addTo(QWidget *);
+ bool removeFrom(QWidget *);
+ void setEnabled(bool);
+%If (Qt_3_2_0 -)
+ void setToggleAction(bool);
+ void setOn(bool);
+%End
+
+%If (Qt_3_0_0 -)
+ void setUsesDropDown(bool);
+ bool usesDropDown() const;
+
+ void setIconSet(const QIconSet &);
+ void setText(const QString &);
+ void setMenuText(const QString &);
+ void setToolTip(const QString &);
+ void setWhatsThis(const QString &);
+%End
+
+protected:
+%If (Qt_3_0_0 -)
+ void childEvent(QChildEvent *);
+ virtual void addedTo(QWidget *,QWidget *,QAction *);
+ virtual void addedTo(int,QPopupMenu *,QAction *);
+ virtual void addedTo(QWidget *,QWidget *);
+ virtual void addedTo(int,QPopupMenu *);
+%End
+
+signals:
+ void selected(QAction *);
+
+private:
+%If (Qt_3_1_0 -)
+ QActionGroup(const QActionGroup &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qapplication.sip b/python/pyqt/sip/qt/qapplication.sip
new file mode 100644
index 00000000..fbdf9e5e
--- /dev/null
+++ b/python/pyqt/sip/qt/qapplication.sip
@@ -0,0 +1,574 @@
+// This is the SIP interface definition for QApplication.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QApplication</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes one parameter which is a list of argument strings. Arguments
+used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>GUIenabled</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>Type <Parameter>type</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list. (Qt v2.2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+QApplication *qApp;
+
+
+class QApplication : QObject
+{
+%TypeHeaderCode
+#include <qapplication.h>
+#include <qwidgetlist.h>
+%End
+
+public:
+ QApplication(SIP_PYLIST) /PostHook=__pyQtQAppHook__/ [(int &,char **)];
+%MethodCode
+ // The Python interface is a list of argument strings that is
+ // modified.
+
+ int argc;
+ char **argv;
+
+ // Convert the list.
+ if ((argv = pyArgvToC(a0,argc)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Create it now the arguments are right.
+ static int nargc;
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQApplication(nargc,argv);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+ updatePyArgv(a0,argc,argv);
+ }
+%End
+
+ QApplication(SIP_PYLIST,bool) /PostHook=__pyQtQAppHook__/ [(int &,char **,bool)];
+%MethodCode
+ // The Python interface is a list of argument strings that is
+ // modified.
+
+ int argc;
+ char **argv;
+
+ // Convert the list.
+ if ((argv = pyArgvToC(a0,argc)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Create it now the arguments are right.
+ static int nargc;
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQApplication(nargc,argv,a1);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+ updatePyArgv(a0,argc,argv);
+ }
+%End
+
+%If (Qt_2_2_0 -)
+ enum Type {
+ Tty,
+ GuiClient,
+ GuiServer
+ };
+
+ QApplication(SIP_PYLIST,Type) /PostHook=__pyQtQAppHook__/ [(int &,char **,Type)];
+%MethodCode
+ // The Python interface is a list of argument strings that is
+ // modified.
+
+ int argc;
+ char **argv;
+
+ // Convert the list.
+ if ((argv = pyArgvToC(a0,argc)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Create it now the arguments are right.
+ static int nargc;
+ nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQApplication(nargc,argv,(QApplication::Type)a1);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+ updatePyArgv(a0,argc,argv);
+ }
+%End
+%End
+
+ ~QApplication();
+%MethodCode
+ // Make sure all remaining top level widgets are not owned by
+ // Python. When a PyQt script terminates we have no control
+ // over the order in which the QApplication instance and the
+ // top level widgets are destroyed. If the former happens
+ // first then we get a seg. fault. We could take the approach
+ // of only pretending to delete the QApplication instance, but
+ // Qt seems to allow an application to delete the QApplication
+ // instance and then create another one. The approach we take
+ // is to transfer ownership of all top level widgets away from
+ // Python so that the C++ dtor is not called if they are
+ // destroyed after the QApplication instance. This might be
+ // seen as a memory leak - but if we really are terminating
+ // then it doesn't matter, and if we are just deleting the
+ // QApplication instance then (I think) we should have already
+ // deleted the top level widgets manually. In any event, the X
+ // server resources will be freed.
+
+ QWidgetList *tlw = QApplication::topLevelWidgets();
+ QWidgetListIt it(*tlw);
+ QWidget *w;
+
+ while ((w = it.current()) != 0)
+ {
+ PyObject *sw;
+
+ if ((sw = sipGetWrapper(w,sipClass_QWidget)) != NULL)
+ sipTransferTo(sw,NULL);
+
+ ++it;
+ }
+
+ delete tlw;
+%End
+
+ int argc() const;
+ SIP_PYLIST argv() const;
+%MethodCode
+ // The Python interface returns a list of strings.
+
+ int argc = sipCpp -> argc();
+
+ if ((sipRes = PyList_New(argc)) == NULL)
+ sipIsErr = 1;
+ else
+ for (int a = 0; a < argc; ++a)
+ if (PyList_SetItem(sipRes,a,PyString_FromString(sipCpp -> argv()[a])) < 0)
+ {
+ Py_DECREF(sipRes);
+ sipIsErr = 1;
+ break;
+ }
+%End
+
+%If (Qt_2_3_0 -)
+ Type type() const;
+%End
+%If (- Qt_2_00)
+ static GUIStyle style();
+ static void setStyle(GUIStyle);
+%End
+%If (Qt_2_00 -)
+ static QStyle &style();
+ static void setStyle(QStyle * /Transfer/);
+%End
+%If (Qt_3_0_0 -)
+ static QStyle *setStyle(const QString &);
+%End
+
+%If (- Qt_2_00)
+ enum ColorSpec
+ {
+ NormalColor = 0,
+ CustomColor = 1,
+ PrivateColor = 4,
+ ManyColor = 4,
+ TrueColor = 4
+ };
+%End
+%If (Qt_2_00 -)
+ enum ColorSpec
+ {
+ NormalColor = 0,
+ CustomColor = 1,
+ ManyColor = 2
+ };
+%End
+
+ static int colorSpec();
+ static void setColorSpec(int);
+ static QCursor *overrideCursor();
+ static void setOverrideCursor(QCursor &,bool = 0);
+ static void restoreOverrideCursor();
+ static bool hasGlobalMouseTracking();
+ static void setGlobalMouseTracking(bool);
+%If (- Qt_2_00)
+ static QPalette *palette();
+ static void setPalette(QPalette &,bool = 0);
+ static QFont *font();
+ static void setFont(const QFont &,bool = 0);
+%End
+%If (Qt_2_00 -)
+ static QPalette palette(const QWidget * = 0);
+ static void setPalette(QPalette &,bool = 0,const char * = 0);
+ static QFont font(const QWidget * = 0);
+ static void setFont(const QFont &,bool = 0,const char * = 0);
+%End
+ static QFontMetrics fontMetrics();
+ QWidget *mainWidget() const;
+%If (- Qt_2_00)
+ // We may not need the /Transfer/ now that the QApplication dtor is
+ // instrumented, but we'll leave it in so as not to break old programs
+ // needlessly.
+ void setMainWidget(QWidget * /Transfer/);
+%End
+%If (Qt_2_00 -)
+ virtual void setMainWidget(QWidget *);
+ virtual void polish(QWidget *);
+%End
+ static QWidgetList *allWidgets();
+ static QWidgetList *topLevelWidgets();
+%If (- Qt_3_0_0)
+ static QWidget *desktop();
+%End
+%If (Qt_3_0_0 -)
+ static QDesktopWidget *desktop();
+%End
+ static QWidget *activePopupWidget();
+ static QWidget *activeModalWidget();
+ static QClipboard *clipboard();
+ QWidget *focusWidget() const;
+%If (Qt_2_00 -)
+ QWidget *activeWindow() const;
+%End
+ static QWidget *widgetAt(int,int,bool = 0);
+ static QWidget *widgetAt(const QPoint &,bool = 0);
+
+%If (Qt_3_1_0 -)
+ static QEventLoop *eventLoop();
+%End
+
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+ void processEvents() /ReleaseGIL/;
+ void processEvents(int) /ReleaseGIL/;
+ void processOneEvent() /ReleaseGIL/;
+%If (Qt_3_0_0 -)
+ bool hasPendingEvents();
+%End
+ int enter_loop() /ReleaseGIL/;
+ void exit_loop();
+%If (Qt_2_00 -)
+ int loopLevel() const;
+%End
+ static void exit(int = 0);
+ static bool sendEvent(QObject *,QEvent *) /ReleaseGIL/;
+ static void postEvent(QObject *,QEvent * /Transfer/) /ReleaseGIL/;
+ static void sendPostedEvents(QObject *,int) /ReleaseGIL/;
+%If (Qt_2_00 -)
+ static void sendPostedEvents() /ReleaseGIL/;
+ static void removePostedEvents(QObject *);
+%End
+ virtual bool notify(QObject *,QEvent *) /ReleaseGIL/;
+ static bool startingUp();
+ static bool closingDown();
+ static void flushX();
+%If (Qt_3_0_0 -)
+ static void flush();
+%End
+ static void syncX();
+ static void beep();
+%If (Qt_2_00 -)
+ void setDefaultCodec(QTextCodec *);
+ QTextCodec *defaultCodec() const;
+ void installTranslator(QTranslator *);
+ void removeTranslator(QTranslator *);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QString translate(const char *,const char *) const;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ QString translate(const char *,const char *,const char *) const;
+%End
+%If (Qt_3_0_0 -)
+ enum Encoding {
+ DefaultCodec,
+ UnicodeUTF8
+ };
+
+ QString translate(const char *,const char *,const char * = 0,
+ Encoding = DefaultCodec) const;
+%End
+%If (Qt_3_2_0 -)
+ QString applicationDirPath();
+ QString applicationFilePath();
+%End
+%If (- Qt_3_0_0)
+ static void setWinStyleHighlightColor(const QColor &);
+ static const QColor &winStyleHighlightColor();
+%End
+%If (Qt_2_00 -)
+ static void setDesktopSettingsAware(bool);
+ static bool desktopSettingsAware();
+ static void setCursorFlashTime(int);
+ static int cursorFlashTime();
+%End
+ static void setDoubleClickInterval(int);
+ static int doubleClickInterval();
+%If (Qt_2_1_0 -)
+ static void setWheelScrollLines(int);
+ static int wheelScrollLines();
+%If (Qt_2_2_0 -)
+ static void setGlobalStrut(const QSize &);
+ static QSize globalStrut();
+%End
+%If (Qt_3_0_0 -)
+ static void setLibraryPaths(const QStringList &);
+ static QStringList libraryPaths();
+ static void addLibraryPath(const QString &);
+ static void removeLibraryPath(const QString &);
+%End
+ static void setStartDragTime(int);
+ static int startDragTime();
+ static void setStartDragDistance(int);
+ static int startDragDistance();
+%If (Qt_3_0_0 -)
+ static void setReverseLayout(bool);
+ static bool reverseLayout();
+
+ static int horizontalAlignment(int);
+%End
+%If (Qt_2_2_0 -)
+ static bool isEffectEnabled(Qt::UIEffect);
+ static void setEffectEnabled(Qt::UIEffect,bool = 1);
+%End
+%End
+
+
+%If (Qt_2_00 -)
+ bool isSessionRestored() const;
+ QString sessionId() const;
+%If (Qt_3_1_0 -)
+ QString sessionKey() const;
+%End
+ virtual void commitData(QSessionManager &);
+ virtual void saveState(QSessionManager &);
+%End
+%If (Qt_2_1_0 -)
+ void wakeUpGuiThread();
+%End
+%If (Qt_THREAD_SUPPORT)
+%If (Qt_2_2_0 -)
+ void lock() /ReleaseGIL/;
+ void unlock(bool = 1);
+ bool locked();
+%End
+%If (Qt_3_0_0 -)
+ bool tryLock();
+%End
+%End
+
+signals:
+ void lastWindowClosed();
+%If (Qt_2_00 -)
+ void aboutToQuit();
+%End
+%If (Qt_2_1_0 -)
+ void guiThreadAwake();
+%End
+
+public slots:
+ void quit();
+%If (Qt_2_00 -)
+ void closeAllWindows();
+%End
+%If (Qt_3_2_0 -)
+ void aboutQt();
+%End
+
+protected:
+%If (Qt_3_1_0 -)
+ bool event(QEvent *);
+%End
+
+private:
+ QApplication(const QApplication &);
+
+
+%TypeCode
+#include <string.h>
+
+
+// Convert a Python argv list to a conventional C argc count and argv array.
+static char **pyArgvToC(PyObject *argvlist,int &argc)
+{
+ char **argv;
+
+ argc = PyList_Size(argvlist);
+
+ // Allocate space for two copies of the argument pointers, plus the
+ // terminating NULL.
+ if ((argv = (char **)sipMalloc(2 * (argc + 1) * sizeof (char *))) == NULL)
+ return NULL;
+
+ // Convert the list.
+ for (int a = 0; a < argc; ++a)
+ {
+ char *arg;
+
+ // Get the argument and allocate memory for it.
+ if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL ||
+ (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL)
+ return NULL;
+
+ // Copy the argument and save a pointer to it.
+ strcpy(argv[a],arg);
+ argv[a + argc + 1] = argv[a];
+ }
+
+ argv[argc + argc + 1] = argv[argc] = NULL;
+
+ return argv;
+}
+
+
+// Remove arguments from the Python argv list that have been removed from the
+// C argv array.
+static void updatePyArgv(PyObject *argvlist,int argc,char **argv)
+{
+ for (int a = 0, na = 0; a < argc; ++a)
+ {
+ // See if it was removed.
+ if (argv[na] == argv[a + argc + 1])
+ ++na;
+ else
+ PyList_SetSlice(argvlist,na,na + 1,NULL);
+ }
+}
+%End
+
+};
+
+
+enum QtMsgType {
+ QtDebugMsg,
+ QtWarningMsg,
+ QtFatalMsg
+};
+
+
+SIP_PYCALLABLE qInstallMsgHandler(SIP_PYCALLABLE /AllowNone/);
+%MethodCode
+ void (*old)(QtMsgType, const char *);
+
+ // Treat None as the default handler.
+ old = qInstallMsgHandler((a0 != Py_None) ? pyqtMsgHandler : 0);
+
+ // If we recognise the old handler, then return it. Otherwise return
+ // the default handler. This doesn't exactly mimic the Qt behaviour
+ // but it is probably close enough for the way it will be used.
+ sipRes = (old == pyqtMsgHandler) ? pyqtPyMsgHandler : Py_None;
+ Py_INCREF(sipRes);
+
+ // Save the new Python handler.
+ Py_XDECREF(pyqtPyMsgHandler);
+ pyqtPyMsgHandler = a0;
+ Py_INCREF(pyqtPyMsgHandler);
+%End
+
+%ModuleCode
+// The user supplied Python handler.
+static PyObject *pyqtPyMsgHandler = 0;
+
+// The C++ wrapper around the Python handler.
+static void pyqtMsgHandler(QtMsgType type, const char *msg)
+{
+ PyObject *res;
+
+ SIP_BLOCK_THREADS
+
+#if SIP_VERSION >= 0x040200
+ res = sipCallMethod(0, pyqtPyMsgHandler, "Es", type, sipEnum_QtMsgType, msg);
+#elif SIP_VERSION >= 0x040000
+ res = sipCallMethod(0, pyqtPyMsgHandler, "es", type, msg);
+#else
+ PyObject *args = Py_BuildValue("is", type, msg);
+
+ if (args != NULL)
+ {
+ res = PyEval_CallObject(pyqtPyMsgHandler, args);
+ Py_DECREF(args);
+ }
+#endif
+
+ Py_XDECREF(res);
+
+ if (res != NULL && res != Py_None)
+ {
+ PyErr_SetString(PyExc_TypeError, "invalid result type from PyQt message handler");
+ res = NULL;
+ }
+
+ if (res == NULL)
+ PyErr_Print();
+
+ SIP_UNBLOCK_THREADS
+}
+%End
diff --git a/python/pyqt/sip/qt/qarray.sip b/python/pyqt/sip/qt/qarray.sip
new file mode 100644
index 00000000..76125e1a
--- /dev/null
+++ b/python/pyqt/sip/qt/qarray.sip
@@ -0,0 +1,94 @@
+// This is the SIP interface definition for all types based on the QArray
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QArray&lt;type&gt; (Qt 1.x, 2.x)</Title>
+<Para>
+Types based on the <Literal>QArray</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_3_0_0)
+
+%MappedType QArray<int>
+{
+%TypeHeaderCode
+#include <qarray.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of integers.
+
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ for (uint i = 0; i < sipCpp -> count(); ++i)
+ if (PyList_SetItem(l,i,PyInt_FromLong((long)(sipCpp -> at(i)))) < 0)
+ {
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of integers to a QArray<int> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QArray<int> *qa = new QArray<int>(PyList_GET_SIZE(sipPy));
+
+ PyErr_Clear();
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ qa[i] = (int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ delete qa;
+ *sipIsErr = 1;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qa;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qassistantclient.sip b/python/pyqt/sip/qt/qassistantclient.sip
new file mode 100644
index 00000000..34c48203
--- /dev/null
+++ b/python/pyqt/sip/qt/qassistantclient.sip
@@ -0,0 +1,63 @@
+// This is the SIP interface definition for QAssistantClient.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAssistantClient (Qt v3.1+)</Title>
+<Para>
+<Literal>QAssistantClient</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_ASSISTANTCLIENT)
+%If (Qt_3_1_0 -)
+
+class QAssistantClient : QObject
+{
+%TypeHeaderCode
+#include <qassistantclient.h>
+%End
+
+public:
+ QAssistantClient(const QString &,QObject * /TransferThis/ = 0,
+ const char * = 0);
+
+ bool isOpen() const;
+
+%If (Qt_3_2_0 -)
+ void setArguments(const QStringList &);
+%End
+
+public slots:
+ virtual void openAssistant() /ReleaseGIL/;
+ virtual void closeAssistant();
+ virtual void showPage(const QString &);
+
+signals:
+ void assistantOpened();
+ void assistantClosed();
+ void error(const QString &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qbitmap.sip b/python/pyqt/sip/qt/qbitmap.sip
new file mode 100644
index 00000000..b0132ddc
--- /dev/null
+++ b/python/pyqt/sip/qt/qbitmap.sip
@@ -0,0 +1,59 @@
+// This is the SIP interface definition for QBitmap.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QBitmap</Title>
+<Para>
+<Literal>QBitmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QBitmap : QPixmap
+{
+%TypeHeaderCode
+#include <qbitmap.h>
+%End
+
+public:
+ QBitmap();
+%If (- Qt_2_00)
+ QBitmap(int,int,bool = 0);
+ QBitmap(const QSize &,bool = 0);
+%End
+%If (Qt_2_00 -)
+ QBitmap(int,int,bool = 0,QPixmap::Optimization = QPixmap::DefaultOptim);
+ QBitmap(const QSize &,bool = 0,QPixmap::Optimization = QPixmap::DefaultOptim);
+%End
+ QBitmap(int,int,uchar *,bool = 0);
+ QBitmap(const QSize &,uchar *,bool = 0);
+ QBitmap(const QBitmap &);
+%If (- Qt_2_00)
+ QBitmap(const char *,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QBitmap(const QString &,const char * = 0);
+%End
+
+ QBitmap xForm(const QWMatrix &) const;
+};
diff --git a/python/pyqt/sip/qt/qbrush.sip b/python/pyqt/sip/qt/qbrush.sip
new file mode 100644
index 00000000..ab629d75
--- /dev/null
+++ b/python/pyqt/sip/qt/qbrush.sip
@@ -0,0 +1,105 @@
+// This is the SIP interface definition for QBrush.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QBrush</Title>
+<Para>
+<Literal>QBrush</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+enum BrushStyle {
+ NoBrush,
+ SolidPattern,
+ Dense1Pattern,
+ Dense2Pattern,
+ Dense3Pattern,
+ Dense4Pattern,
+ Dense5Pattern,
+ Dense6Pattern,
+ Dense7Pattern,
+ HorPattern,
+ VerPattern,
+ CrossPattern,
+ BDiagPattern,
+ FDiagPattern,
+ DiagCrossPattern,
+ CustomPattern = 24
+};
+
+
+class QBrush
+{
+%TypeHeaderCode
+#include <qbrush.h>
+%End
+
+public:
+ QBrush();
+ QBrush(BrushStyle);
+ QBrush(const QColor &,BrushStyle = SolidPattern);
+ QBrush(const QColor &,const QPixmap &);
+ QBrush(const QBrush &);
+
+ BrushStyle style() const;
+ void setStyle(BrushStyle);
+ const QColor &color() const;
+ void setColor(const QColor &);
+ QPixmap *pixmap() const;
+ void setPixmap(const QPixmap &);
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+class QBrush : Qt
+{
+%TypeHeaderCode
+#include <qbrush.h>
+%End
+
+public:
+ QBrush();
+ QBrush(BrushStyle);
+ QBrush(const QColor &,BrushStyle = SolidPattern);
+ QBrush(const QColor &,const QPixmap &);
+ QBrush(const QBrush &);
+
+ BrushStyle style() const;
+ void setStyle(BrushStyle);
+ const QColor &color() const;
+ void setColor(const QColor &);
+ QPixmap *pixmap() const;
+ void setPixmap(const QPixmap &);
+
+ bool operator==(const QBrush &) const;
+ bool operator!=(const QBrush &) const;
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qbutton.sip b/python/pyqt/sip/qt/qbutton.sip
new file mode 100644
index 00000000..356de1e9
--- /dev/null
+++ b/python/pyqt/sip/qt/qbutton.sip
@@ -0,0 +1,184 @@
+// This is the SIP interface definition for QButton.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QButton</Title>
+<Para>
+<Literal>QButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QButton : QWidget
+{
+%TypeHeaderCode
+#include <qbutton.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QButton(QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QButton(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+
+%If (- Qt_2_00)
+ const char *text() const;
+ void setText(const char *);
+%End
+%If (Qt_2_00 -)
+ QString text() const;
+ virtual void setText(const QString &);
+%End
+ const QPixmap *pixmap() const;
+%If (- Qt_2_00)
+ void setPixmap(const QPixmap &);
+%End
+%If (Qt_2_00 -)
+ virtual void setPixmap(const QPixmap &);
+%End
+
+%If (- Qt_3_0_0)
+ int accel() const;
+%End
+%If (Qt_3_0_0 -)
+ QKeySequence accel() const;
+%End
+%If (- Qt_2_00)
+ void setAccel(int);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setAccel(int);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setAccel(const QKeySequence &);
+%End
+
+ bool isToggleButton() const;
+
+%If (Qt_2_00 -)
+ enum ToggleType
+ {
+ SingleShot,
+ Toggle,
+ Tristate
+ };
+
+ ToggleType toggleType() const;
+%End
+
+%If (- Qt_2_00)
+ void setDown(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setDown(bool);
+%End
+ bool isDown() const;
+
+ bool isOn() const;
+
+%If (Qt_2_00 -)
+ enum ToggleState
+ {
+ Off,
+ NoChange,
+ On
+ };
+
+ ToggleState state() const;
+%End
+
+%If (- Qt_3_0_0)
+ bool autoResize() const;
+%End
+%If (- Qt_2_00)
+ void setAutoResize(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setAutoResize(bool);
+%End
+
+ bool autoRepeat() const;
+%If (- Qt_2_00)
+ void setAutoRepeat(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setAutoRepeat(bool);
+%End
+
+%If (Qt_2_00 -)
+ bool isExclusiveToggle() const;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ bool focusNextPrevChild(bool);
+%End
+
+%If (Qt_2_00 -)
+ QButtonGroup *group() const;
+%End
+
+public slots:
+ void animateClick();
+ void toggle();
+
+signals:
+ void pressed();
+ void released();
+ void clicked();
+ void toggled(bool);
+%If (Qt_2_00 -)
+ void stateChanged(int);
+%End
+
+protected:
+ void setToggleButton(bool);
+%If (Qt_2_00 -)
+ virtual void setToggleType(ToggleType);
+%End
+ void setOn(bool);
+%If (Qt_2_00 -)
+ virtual void setState(ToggleState);
+%End
+
+ virtual bool hitButton(const QPoint &) const;
+ virtual void drawButton(QPainter *);
+ virtual void drawButtonLabel(QPainter *);
+
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_1_0 -)
+ void keyReleaseEvent(QKeyEvent *);
+%End
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void paintEvent(QPaintEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+
+ void enabledChange(bool);
+
+private:
+ QButton(const QButton &);
+};
diff --git a/python/pyqt/sip/qt/qbuttongroup.sip b/python/pyqt/sip/qt/qbuttongroup.sip
new file mode 100644
index 00000000..647bb173
--- /dev/null
+++ b/python/pyqt/sip/qt/qbuttongroup.sip
@@ -0,0 +1,104 @@
+// This is the SIP interface definition for QButtonGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QButtonGroup</Title>
+<Para>
+<Literal>QButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QButtonGroup : QGroupBox
+{
+%TypeHeaderCode
+#include <qbuttongroup.h>
+%End
+
+public:
+ QButtonGroup(QWidget * /TransferThis/ = 0,const char * = 0);
+%If (- Qt_2_00)
+ QButtonGroup(const char *,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QButtonGroup(const QString &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QButtonGroup(int,Orientation,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QButtonGroup(int,Orientation,const QString &,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+
+ bool isExclusive() const;
+%If (- Qt_2_00)
+ void setExclusive(bool);
+ void setButton(int);
+%End
+%If (Qt_2_00 -)
+ bool isRadioButtonExclusive() const;
+ virtual void setExclusive(bool);
+ virtual void setRadioButtonExclusive(bool);
+%End
+
+ int insert(QButton *,int = -1);
+ void remove(QButton *);
+ QButton *find(int) const;
+%If (Qt_2_00 -)
+ int id(QButton *) const;
+ int count() const;
+
+ virtual void setButton(int);
+
+ virtual void moveFocus(int);
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ QButton *selected();
+%End
+%If (Qt_3_0_0 -)
+ QButton *selected() const;
+%End
+%If (Qt_3_2_0 -)
+ int selectedId() const;
+%End
+
+signals:
+ void pressed(int);
+ void released(int);
+ void clicked(int);
+
+protected slots:
+ void buttonPressed();
+ void buttonReleased();
+ void buttonClicked();
+ void buttonToggled(bool);
+
+protected:
+%If (Qt_3_1_0 -)
+ bool event(QEvent *);
+%End
+
+private:
+ QButtonGroup(const QButtonGroup &);
+};
diff --git a/python/pyqt/sip/qt/qbytearray.sip b/python/pyqt/sip/qt/qbytearray.sip
new file mode 100644
index 00000000..fa992ec6
--- /dev/null
+++ b/python/pyqt/sip/qt/qbytearray.sip
@@ -0,0 +1,203 @@
+// This is the SIP interface definition for QByteArray.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QByteArray</Title>
+<Para>
+A Python string can be used whenever a <Literal>QByteArray</Literal> can be
+used. A <Literal>QByteArray</Literal> can be converted to a Python string
+using the Python <Literal>str()</Literal> function.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QByteArray &<Function>assign</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>char &<Function>at</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>contains</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>fill</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+ <ParamDef>int <Parameter>size</Parameter> = -1</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>find</Function></FuncDef>
+ <ParamDef>const char &<Parameter>d</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>i</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>resetRawData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint<Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QByteArray &<Function>setRawData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint<Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QByteArray
+{
+%TypeHeaderCode
+#include <qstring.h>
+%End
+
+public:
+ QByteArray();
+ QByteArray(int);
+ QByteArray(const QByteArray &);
+
+ SIP_PYOBJECT data() const;
+%MethodCode
+ // QByteArrays aren't '\0' terminated so set the size
+ // explicitly.
+
+ char *res;
+ uint len;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> data();
+ len = sipCpp -> size();
+ Py_END_ALLOW_THREADS
+
+ if (res)
+ {
+ if ((sipRes = PyString_FromStringAndSize(res,len)) == NULL)
+ sipIsErr = 1;
+ }
+ else
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+%End
+
+ // These are actually in QMemArray, which isn't implemented so pretend
+ // they are here.
+
+ uint nrefs() const;
+ bool isEmpty() const;
+ bool isNull() const;
+ bool resize(uint);
+ bool truncate(uint);
+// bool fill(const char &,int = -1);
+ void detach();
+ QByteArray copy() const;
+ QByteArray &assign(const QByteArray &);
+// QByteArray &assign(const char *,uint);
+ QByteArray &duplicate(const QByteArray &);
+ QByteArray &duplicate(const char *,uint);
+// QByteArray &setRawData(const char *,uint);
+// void resetRawData(const char *,uint);
+// int find(const char &,uint = 0) const;
+// int contains(const char &) const;
+// char &at(uint) const;
+
+ SIP_PYOBJECT __str__();
+%MethodCode
+ // QByteArrays aren't '\0' terminated so set the size
+ // explicitly.
+
+ char *data;
+ uint len;
+
+ Py_BEGIN_ALLOW_THREADS
+ data = sipCpp -> data();
+ len = sipCpp -> size();
+ Py_END_ALLOW_THREADS
+
+ if (data == NULL)
+ sipRes = PyString_FromString("");
+ else
+ sipRes = PyString_FromStringAndSize(data,len);
+%End
+
+%ConvertToTypeCode
+ // Allow a Python string whenever a QByteArray is expected.
+
+ if (sipIsErr == NULL)
+ return (PyString_Check(sipPy) ||
+ sipCanConvertToInstance(sipPy,sipClass_QByteArray,SIP_NO_CONVERTORS));
+
+ if (PyString_Check(sipPy))
+ {
+ Py_BEGIN_ALLOW_THREADS
+ QByteArray *ba = new QByteArray();
+
+ ba -> duplicate(PyString_AS_STRING(sipPy),PyString_GET_SIZE(sipPy));
+
+ *sipCppPtr = ba;
+ Py_END_ALLOW_THREADS
+
+ return sipGetState(sipTransferObj);
+ }
+
+ *sipCppPtr = reinterpret_cast<QByteArray *>(sipConvertToInstance(sipPy,sipClass_QByteArray,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr));
+
+ return 0;
+%End
+};
+
+
+%If (Qt_3_1_0 -)
+QByteArray qCompress(const uchar * /Array/,int /ArraySize/);
+QByteArray qCompress(const QByteArray &);
+QByteArray qUncompress(const uchar * /Array/,int /ArraySize/);
+QByteArray qUncompress(const QByteArray &);
+%End
diff --git a/python/pyqt/sip/qt/qcdestyle.sip b/python/pyqt/sip/qt/qcdestyle.sip
new file mode 100644
index 00000000..790662ff
--- /dev/null
+++ b/python/pyqt/sip/qt/qcdestyle.sip
@@ -0,0 +1,68 @@
+// This is the SIP interface definition for QCDEStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCDEStyle (Qt v2+)</Title>
+<Para>
+<Literal>QCDEStyle</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_STYLE_CDE)
+%If (Qt_2_00 -)
+
+class QCDEStyle : QMotifStyle
+{
+%TypeHeaderCode
+#include <qcdestyle.h>
+%End
+
+public:
+ QCDEStyle(bool = 0);
+
+%If (- Qt_3_0_0)
+ int defaultFrameWidth() const;
+ void drawArrow(QPainter *,ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0);
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,int,
+ bool = 0,bool = 1);
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qcheckbox.sip b/python/pyqt/sip/qt/qcheckbox.sip
new file mode 100644
index 00000000..9c2bfc45
--- /dev/null
+++ b/python/pyqt/sip/qt/qcheckbox.sip
@@ -0,0 +1,88 @@
+// This is the SIP interface definition for QCheckBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCheckBox</Title>
+<Para>
+<Literal>QCheckBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QCheckBox : QButton
+{
+%TypeHeaderCode
+#include <qcheckbox.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QCheckBox(QWidget * /TransferThis/ = 0,const char * = 0);
+ QCheckBox(const char *,QWidget * /TransferThis/,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QCheckBox(QWidget * /TransferThis/,const char * = 0);
+ QCheckBox(const QString &,QWidget * /TransferThis/,const char * = 0);
+%End
+
+ bool isChecked() const;
+
+%If (Qt_2_00 -)
+ void setNoChange();
+
+ void setTristate(bool = 1);
+%End
+%If (Qt_2_2_0 -)
+ bool isTristate() const;
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (- Qt_3_0_0)
+ void setChecked(bool);
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void setChecked(bool);
+%End
+
+protected:
+%If (Qt_2_00 -)
+ void resizeEvent(QResizeEvent *);
+%End
+ void drawButton(QPainter *);
+ void drawButtonLabel(QPainter *);
+%If (Qt_2_00 -)
+ void updateMask();
+%End
+%If (Qt_3_2_0 -)
+ bool hitButton(const QPoint &) const;
+%End
+
+private:
+ QCheckBox(const QCheckBox &);
+};
diff --git a/python/pyqt/sip/qt/qclipboard.sip b/python/pyqt/sip/qt/qclipboard.sip
new file mode 100644
index 00000000..4220c371
--- /dev/null
+++ b/python/pyqt/sip/qt/qclipboard.sip
@@ -0,0 +1,152 @@
+// This is the SIP interface definition for QClipboard.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QClipboard</Title>
+<FuncSynopsis>
+ <FuncDef>void *<Function>data</Function> const</FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented (Qt v1.x).
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>void *<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented (Qt v1.x).
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_CLIPBOARD)
+
+class QClipboard : QObject
+{
+%TypeHeaderCode
+#include <qclipboard.h>
+%End
+
+private:
+ QClipboard(QObject * /TransferThis/ = 0,const char * = 0);
+ ~QClipboard();
+
+public:
+%If (Qt_3_1_0 -)
+ enum Mode {
+ Clipboard,
+ Selection
+ };
+
+ void clear(Mode);
+%End
+ void clear();
+
+%If (Qt_3_0_0 -)
+ bool supportsSelection() const;
+ bool ownsSelection() const;
+ bool ownsClipboard() const;
+
+ void setSelectionMode(bool);
+ bool selectionModeEnabled() const;
+%End
+
+%If (Qt_3_1_0 -)
+ QString text(Mode) const;
+ QString text(QCString &,Mode) const;
+ void setText(const QString &,Mode);
+
+%If (Qt_MIMECLIPBOARD)
+ QMimeSource *data(Mode) const;
+ void setData(QMimeSource * /GetWrapper/,Mode);
+%MethodCode
+ sipCpp->setData(a0, a1);
+
+ // Transfer ownership to C++ and make sure the Python object
+ // stays alive by giving it a reference to itself. The cycle
+ // will be broken by QMimeSource's virtual dtor.
+ sipTransferTo(a0Wrapper, a0Wrapper);
+%End
+
+ QImage image(Mode) const;
+ QPixmap pixmap(Mode) const;
+ void setImage(const QImage &,Mode);
+ void setPixmap(const QPixmap &,Mode);
+%End
+%End
+
+%If (- Qt_2_00)
+// void *data(const char *) const;
+// void setData(const char *,void *);
+ const char *text() const;
+ void setText(const char *);
+ QPixmap *pixmap() const;
+%End
+
+%If (Qt_2_00 -)
+%If (Qt_MIMECLIPBOARD)
+ QMimeSource *data() const;
+ void setData(QMimeSource * /GetWrapper/);
+%MethodCode
+ sipCpp->setData(a0);
+
+ // Transfer ownership to C++ and make sure the Python object
+ // stays alive by giving it a reference to itself. The cycle
+ // will be broken by QMimeSource's virtual dtor.
+ sipTransferTo(a0Wrapper, a0Wrapper);
+%End
+%End
+ QString text() const;
+%If (Qt_2_2_0 -)
+ QString text(QCString &) const;
+%End
+ void setText(const QString &);
+%If (Qt_MIMECLIPBOARD)
+ QImage image() const;
+ QPixmap pixmap() const;
+ void setImage(const QImage &);
+%End
+%End
+
+%If (Qt_MIMECLIPBOARD)
+ void setPixmap(const QPixmap &);
+%End
+
+signals:
+%If (Qt_3_0_0 -)
+ void selectionChanged();
+%End
+ void dataChanged();
+
+protected:
+ void connectNotify(const char *);
+ bool event(QEvent *);
+
+private:
+ QClipboard(const QClipboard &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qcolor.sip b/python/pyqt/sip/qt/qcolor.sip
new file mode 100644
index 00000000..7d0d53ed
--- /dev/null
+++ b/python/pyqt/sip/qt/qcolor.sip
@@ -0,0 +1,207 @@
+// This is the SIP interface definition for QColor.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QColor</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getHsv</Function></FuncDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>v</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>h</Literal>,
+<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getRgb</Function></FuncDef>
+ <ParamDef>int *<Parameter>r</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>g</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>b</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>r</Literal>,
+<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>hsv</Function></FuncDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>v</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>h</Literal>,
+<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>rgb</Function></FuncDef>
+ <ParamDef>int *<Parameter>r</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>g</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>b</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the <Literal>r</Literal>,
+<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qcolor.h>
+%End
+
+
+%If (- Qt_2_00)
+// The global colours.
+
+QColor color0;
+QColor color1;
+QColor black;
+QColor white;
+QColor darkGray;
+QColor gray;
+QColor lightGray;
+QColor red;
+QColor green;
+QColor blue;
+QColor cyan;
+QColor magenta;
+QColor yellow;
+QColor darkRed;
+QColor darkGreen;
+QColor darkBlue;
+QColor darkCyan;
+QColor darkMagenta;
+QColor darkYellow;
+%End
+
+
+// Related functions.
+
+int qRed(QRgb);
+int qGreen(QRgb);
+int qBlue(QRgb);
+QRgb qRgb(int,int,int);
+int qGray(int,int,int);
+int qGray(QRgb);
+
+%If (Qt_2_00 -)
+int qAlpha(QRgb);
+QRgb qRgba(int,int,int,int);
+%End
+
+
+class QColor
+{
+%TypeHeaderCode
+#include <qcolor.h>
+%End
+
+public:
+ enum Spec {
+ Rgb,
+ Hsv
+ };
+
+ QColor();
+ QColor(int,int,int);
+ QColor(int,int,int,Spec);
+ QColor(QRgb,uint = 0xffffffff);
+%If (Qt_2_00 -)
+ QColor(const QString &);
+%End
+ QColor(const char *);
+ QColor(const QColor &);
+
+ bool isValid() const;
+ bool isDirty() const;
+%If (- Qt_2_00)
+ void setNamedColor(const char *);
+%End
+%If (Qt_2_1_0 -)
+ QString name() const;
+%End
+%If (Qt_2_00 -)
+ void setNamedColor(const QString &);
+%End
+
+ QRgb rgb() const;
+ void setRgb(int,int,int);
+ void setRgb(QRgb);
+%If (Qt_3_2_0 -)
+ void getRgb(int *,int *,int *) const;
+%End
+
+ // Obsolete and is hidden anyway by the overload above.
+ //void rgb(int *,int *,int *) const;
+
+ int red() const;
+ int green() const;
+ int blue() const;
+
+ void setHsv(int,int,int);
+
+%If (Qt_3_2_0 -)
+ void getHsv(int *,int *,int *) const;
+%End
+%If (- Qt_3_2_0)
+ void getHsv(int &,int &,int &) const;
+%End
+
+ // Obsolete.
+ void hsv(int *,int *,int *) const;
+
+ QColor light(int = 150) const;
+ QColor dark(int = 200) const;
+%If (- Qt_3_0_0)
+ static bool lazyAlloc();
+ static void setLazyAlloc(bool);
+%End
+
+ bool operator==(const QColor &) const;
+ bool operator!=(const QColor &) const;
+
+ uint alloc();
+ uint pixel() const;
+ static int maxColors();
+ static int numBitPlanes();
+ static int enterAllocContext();
+ static void leaveAllocContext();
+ static int currentAllocContext();
+ static void destroyAllocContext(int);
+%If (Qt_3_0_0 -)
+%End
+ static void initialize();
+ static void cleanup();
+%If (Qt_3_2_0 -)
+ static QStringList colorNames();
+%End
+};
diff --git a/python/pyqt/sip/qt/qcolordialog.sip b/python/pyqt/sip/qt/qcolordialog.sip
new file mode 100644
index 00000000..2f715d93
--- /dev/null
+++ b/python/pyqt/sip/qt/qcolordialog.sip
@@ -0,0 +1,77 @@
+// This is the SIP interface definition for QColorDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QColorDialog (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QRgb <Function>getRgba</Function></FuncDef>
+ <ParamDef>QRgb <Parameter>initial</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>initial</Literal>, <Literal>parent</Literal> and
+<Literal>name</Literal> parameters and returns a tuple containing the
+<Literal>QRgb</Literal> result and the <Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_COLORDIALOG)
+
+class QColorDialog : QDialog
+{
+%TypeHeaderCode
+#include <qcolordialog.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ static QColor getColor(QColor,QWidget * = 0,const char * = 0) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ static QColor getColor(const QColor & = Qt::white,QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+%End
+%If (Qt_2_1_0 -)
+ static QRgb getRgba(QRgb,bool * = 0,QWidget * = 0,const char * = 0) /ReleaseGIL/;
+ static int customCount();
+ static QRgb customColor(int);
+ static void setCustomColor(int,QRgb);
+%End
+%If (Qt_3_1_0 -)
+ static void setStandardColor(int,QRgb);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QColorDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0);
+ QColorDialog(const QColorDialog &);
+ ~QColorDialog();
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qcolorgroup.sip b/python/pyqt/sip/qt/qcolorgroup.sip
new file mode 100644
index 00000000..20e37b0e
--- /dev/null
+++ b/python/pyqt/sip/qt/qcolorgroup.sip
@@ -0,0 +1,125 @@
+// This is the SIP interface definition for QColorGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QColorGroup</Title>
+<Para>
+<Literal>QColorGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QColorGroup
+{
+%TypeHeaderCode
+#include <qpalette.h>
+%End
+
+public:
+ QColorGroup();
+ QColorGroup(const QColor &,const QColor &,const QColor &,const QColor &,
+ const QColor &,const QColor &,const QColor &);
+%If (Qt_2_00 -)
+ QColorGroup(const QBrush &,const QBrush &,const QBrush &,const QBrush &,
+ const QBrush &,const QBrush &,const QBrush &,const QBrush &,
+ const QBrush &);
+%End
+ QColorGroup(QColorGroup&);
+
+%If (- Qt_2_00)
+ QColor midlight() const;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ enum ColorRole
+ {
+ Foreground,
+ Button,
+ Light,
+ Midlight,
+ Dark,
+ Mid,
+ Text,
+ BrightText,
+ ButtonText,
+ Base,
+ Background,
+ Shadow,
+ Highlight,
+ HighlightedText,
+ NColorRoles
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum ColorRole
+ {
+ Foreground,
+ Button,
+ Light,
+ Midlight,
+ Dark,
+ Mid,
+ Text,
+ BrightText,
+ ButtonText,
+ Base,
+ Background,
+ Shadow,
+ Highlight,
+ HighlightedText,
+ Link,
+ LinkVisited,
+ NColorRoles
+ };
+%End
+
+%If (Qt_2_00 -)
+ const QColor &color(ColorRole) const;
+ const QBrush &brush(ColorRole) const;
+ void setColor(ColorRole,const QColor &);
+ void setBrush(ColorRole,const QBrush &);
+%End
+
+ const QColor &foreground() const;
+%If (Qt_2_00 -)
+ const QColor &button() const;
+%End
+ const QColor &light() const;
+ const QColor &dark() const;
+ const QColor &mid() const;
+ const QColor &text() const;
+ const QColor &base() const;
+ const QColor &background() const;
+%If (Qt_2_00 -)
+ const QColor &midlight() const;
+ const QColor &brightText() const;
+ const QColor &buttonText() const;
+ const QColor &shadow() const;
+ const QColor &highlight() const;
+ const QColor &highlightedText() const;
+%End
+%If (Qt_3_0_0 -)
+ const QColor &link() const;
+ const QColor &linkVisited() const;
+%End
+};
diff --git a/python/pyqt/sip/qt/qcombobox.sip b/python/pyqt/sip/qt/qcombobox.sip
new file mode 100644
index 00000000..3555eba1
--- /dev/null
+++ b/python/pyqt/sip/qt/qcombobox.sip
@@ -0,0 +1,277 @@
+// This is the SIP interface definition for QComboBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QComboBox</Title>
+<Para>
+<Literal>QComboBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QComboBox : QWidget
+{
+%TypeHeaderCode
+#include <qcombobox.h>
+%End
+
+public:
+ QComboBox(QWidget * /TransferThis/ = 0,char * = 0);
+ QComboBox(bool,QWidget * /TransferThis/ = 0,char * = 0);
+
+ int count() const;
+
+%If (Qt_2_00 -)
+ void insertStringList(QStringList &,int = -1);
+%End
+ void insertStrList(const QStrList *,int = -1);
+// void insertStrList(const QStrList &,int = -1);
+// void insertStrList(const char **,int = -1,int = -1);
+
+%If (- Qt_2_00)
+ void insertItem(const char *,int = -1);
+%End
+%If (Qt_2_00 -)
+ void insertItem(const QString &,int = -1);
+%End
+ void insertItem(const QPixmap &,int = -1);
+%If (Qt_2_1_0 -)
+ void insertItem(const QPixmap &,const QString &,int = -1);
+%End
+
+ void removeItem(int);
+
+%If (- Qt_3_0_0)
+ void clear();
+%End
+
+ int currentItem() const;
+%If (- Qt_2_00)
+ void setCurrentItem(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setCurrentItem(int);
+%End
+
+%If (- Qt_2_00)
+ const char *currentText() const;
+%End
+%If (Qt_2_00 -)
+ QString currentText() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setCurrentText(const QString &);
+%End
+
+%If (- Qt_2_00)
+ const char *text(int) const;
+%End
+%If (Qt_2_00 -)
+ QString text(int) const;
+%End
+ const QPixmap *pixmap(int) const;
+
+%If (- Qt_2_00)
+ void changeItem(const char *,int);
+%End
+%If (Qt_2_00 -)
+ void changeItem(const QString &,int);
+%End
+ void changeItem(const QPixmap &,int);
+%If (Qt_2_1_0 -)
+ void changeItem(const QPixmap &,const QString &,int);
+%End
+
+ bool autoResize() const;
+%If (- Qt_2_00)
+ void setAutoResize(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setAutoResize(bool);
+%End
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual QSizePolicy sizePolicy() const;
+%End
+
+%If (- Qt_2_00)
+ void setBackgroundColor(const QColor &);
+ void setStyle(GUIStyle);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setBackgroundColor(const QColor &);
+%End
+%If (- Qt_2_00)
+ void setPalette(const QPalette &);
+ void setFont(const QFont &);
+ void setEnabled(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setPalette(const QPalette &);
+ virtual void setFont(const QFont &);
+ virtual void setEnabled(bool);
+%End
+%If (Qt_3_0_0 -)
+ void setPalette(const QPalette &);
+ void setFont(const QFont &);
+ void setEnabled(bool);
+%End
+
+%If (- Qt_2_00)
+ void setSizeLimit(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setSizeLimit(int);
+%End
+ int sizeLimit() const;
+
+%If (- Qt_2_00)
+ void setMaxCount(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMaxCount(int);
+%End
+ int maxCount() const;
+
+ enum Policy {
+ NoInsertion,
+ AtTop,
+ AtCurrent,
+ AtBottom,
+ AfterCurrent,
+ BeforeCurrent
+ };
+
+%If (- Qt_2_00)
+ void setInsertionPolicy(Policy);
+%End
+%If (Qt_2_00 -)
+ virtual void setInsertionPolicy(Policy);
+%End
+ Policy insertionPolicy() const;
+
+%If (- Qt_2_00)
+ void setValidator(QValidator *);
+ QValidator *validator() const;
+%End
+%If (Qt_2_00 -)
+ virtual void setValidator(const QValidator *);
+ const QValidator *validator() const;
+%End
+
+%If (- Qt_2_00)
+ void setListBox(QListBox *);
+%End
+%If (Qt_2_00 -)
+ virtual void setListBox(QListBox *);
+%End
+ QListBox *listBox() const;
+
+%If (Qt_3_0_0 -)
+ virtual void setLineEdit(QLineEdit *);
+%End
+%If (Qt_2_1_0 -)
+ QLineEdit *lineEdit() const;
+%End
+
+%If (- Qt_2_00)
+ void setAutoCompletion(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setAutoCompletion(bool);
+%End
+ bool autoCompletion() const;
+
+ bool eventFilter(QObject *,QEvent *);
+
+%If (Qt_2_1_0 -)
+ void setDuplicatesEnabled(bool);
+ bool duplicatesEnabled() const;
+%End
+
+%If (Qt_2_2_0 -)
+ bool editable() const;
+ void setEditable(bool);
+%End
+
+%If (Qt_3_0_0 -)
+ virtual void popup();
+%End
+
+%If (Qt_3_3_0 -)
+ void hide();
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void clear();
+%End
+ void clearValidator();
+ void clearEdit();
+%If (- Qt_2_00)
+ void setEditText(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setEditText(const QString &);
+%End
+
+signals:
+ void activated(int);
+ void highlighted(int);
+%If (- Qt_2_00)
+ void activated(const char *);
+ void highlighted(const char *);
+%End
+%If (Qt_2_00 -)
+ void activated(const QString &);
+ void highlighted(const QString &);
+ void textChanged(const QString &);
+%End
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+%If (Qt_3_1_1 -)
+ void focusOutEvent(QFocusEvent *);
+%End
+%If (Qt_3_1_0 -)
+ void wheelEvent(QWheelEvent *);
+%End
+%If (- Qt_3_0_0)
+ void popup();
+%End
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+
+ void updateMask();
+%End
+
+private:
+ QComboBox(const QComboBox &);
+};
diff --git a/python/pyqt/sip/qt/qcommonstyle.sip b/python/pyqt/sip/qt/qcommonstyle.sip
new file mode 100644
index 00000000..b8387168
--- /dev/null
+++ b/python/pyqt/sip/qt/qcommonstyle.sip
@@ -0,0 +1,137 @@
+// This is the SIP interface definition for QCommonStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCommonStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QCommonStyle : QStyle
+{
+%TypeHeaderCode
+#include <qcommonstyle.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+ void drawComboButtonMask(QPainter *,int,int,int,int);
+ void drawPushButtonLabel(QPushButton *,QPainter *);
+ void getButtonShift(int &,int &);
+ int defaultFrameWidth() const;
+ void tabbarMetrics(const QTabBar *,int &,int &,int &);
+ void drawTab(QPainter *,const QTabBar *,QTab *,bool);
+ void drawTabMask(QPainter *,const QTabBar *,QTab *,bool);
+ ScrollControl scrollBarPointOver(const QScrollBar *,int,const QPoint &);
+ void drawSliderMask(QPainter *,int,int,int,int,Orientation,bool,bool);
+ void drawSliderGrooveMask(QPainter *,int,int,int,int,QCOORD,Orientation);
+ int maximumSliderDragDistance() const;
+ int popupSubmenuIndicatorWidth(const QFontMetrics &);
+%End
+
+%If (Qt_3_0_0 -)
+ QCommonStyle();
+
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption& = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControlMask(ControlElement,QPainter *,const QWidget *,
+ const QRect &,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect subRect(SubRect,const QWidget *) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawComplexControlMask(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect querySubControlMetrics(ComplexControl,const QWidget *,SubControl,
+ const QStyleOption & = QStyleOption()) const;
+
+ SubControl querySubControl(ComplexControl,const QWidget *,
+ const QPoint &,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ QSize sizeFromContents(ContentsType,const QWidget *,const QSize &,
+ const QStyleOption & = QStyleOption()) const;
+
+ int styleHint(StyleHint,const QWidget *,const QStyleOption &,
+ QStyleHintReturn *) const;
+
+ QPixmap stylePixmap(StylePixmap,const QWidget * = 0,
+ const QStyleOption & = QStyleOption()) const;
+
+%End
+
+private:
+%If (- Qt_3_0_0)
+ QCommonStyle(GUIStyle);
+ ~QCommonStyle();
+%End
+%If (Qt_3_0_0 -)
+ QCommonStyle(const QCommonStyle &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qcstring.sip b/python/pyqt/sip/qt/qcstring.sip
new file mode 100644
index 00000000..64b3b2ab
--- /dev/null
+++ b/python/pyqt/sip/qt/qcstring.sip
@@ -0,0 +1,223 @@
+// This is the SIP interface definition for QCString.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCString (Qt v2+)</Title>
+<Para>
+A Python string can be used whenever a <Literal>QCString</Literal> can be used.
+A <Literal>QCString</Literal> can be converted to a Python string using the
+Python <Literal>str()</Literal> function.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCString &amp;<Function>sprintf</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ulong <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QCString : QByteArray
+{
+%TypeHeaderCode
+#include <qcstring.h>
+%End
+
+public:
+ QCString();
+ QCString(int);
+ QCString(const QCString &);
+ QCString(const char *);
+ QCString(const char *,uint);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ uint length() const;
+ bool resize(uint);
+ bool truncate(uint);
+ bool fill(char,int = -1);
+ QCString copy() const;
+// QCString &sprintf(const char *,...);
+// int find(char,int = 0,bool = 1) const;
+ int find(const char *,int = 0,bool = 1) const;
+ int find(const QRegExp &,int = 0) const;
+// int findRev(char,int = -1,bool = 1) const;
+ int findRev(const char *,int = -1,bool = 1) const;
+ int findRev(const QRegExp &,int = -1) const;
+// int contains(char,bool = 1) const;
+ int contains(const char *,bool = 1) const;
+ int contains(const QRegExp &) const;
+ QCString left(uint) const;
+ QCString right(uint) const;
+ QCString mid(uint,uint = 0xffffffff) const;
+ QCString leftJustify(uint,char = ' ',bool = 0) const;
+ QCString rightJustify(uint,char = ' ',bool = 0) const;
+ QCString lower() const;
+ QCString upper() const;
+ QCString stripWhiteSpace() const;
+ QCString simplifyWhiteSpace() const;
+ QCString &insert(uint,const char *);
+// QCString &insert(uint,char);
+ QCString &append(const char *);
+ QCString &prepend(const char *);
+ QCString &remove(uint,uint);
+ QCString &replace(uint,uint,const char *);
+ QCString &replace(const QRegExp &,const char *);
+%If (Qt_3_1_0 -)
+// QCString &replace(char,const char *);
+ QCString &replace(const char *,const char *);
+// QCString &replace(char,char);
+%End
+
+ short toShort(bool * = 0) const;
+ ushort toUShort(bool * = 0) const;
+ int toInt(bool * = 0) const;
+ uint toUInt(bool * = 0) const;
+ long toLong(bool * = 0) const;
+ ulong toULong(bool * = 0) const;
+ float toFloat(bool * = 0) const;
+ double toDouble(bool * = 0) const;
+
+ QCString &setStr(const char *);
+// QCString &setNum(short);
+// QCString &setNum(ushort);
+ QCString &setNum(int /Constrained/);
+// QCString &setNum(uint);
+// QCString &setNum(long);
+// QCString &setNum(ulong);
+// QCString &setNum(float,char = 'g',int = 6);
+ QCString &setNum(double,char = 'g',int = 6);
+ bool setExpand(uint,char);
+
+ SIP_PYOBJECT __str__();
+%MethodCode
+ const char *s;
+
+ Py_BEGIN_ALLOW_THREADS
+ s = *sipCpp;
+ Py_END_ALLOW_THREADS
+
+ if (s == NULL)
+ s = "";
+
+ sipRes = PyString_FromString(s);
+%End
+
+%ConvertToTypeCode
+ // Allow a Python string whenever a QCString is expected.
+
+ if (sipIsErr == NULL)
+ return (PyString_Check(sipPy) ||
+ sipCanConvertToInstance(sipPy,sipClass_QCString,SIP_NO_CONVERTORS));
+
+ if (PyString_Check(sipPy))
+ {
+ *sipCppPtr = new QCString(PyString_AS_STRING(sipPy));
+
+ return sipGetState(sipTransferObj);
+ }
+
+ *sipCppPtr = reinterpret_cast<QCString *>(sipConvertToInstance(sipPy,sipClass_QCString,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr));
+
+ return 0;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qcursor.sip b/python/pyqt/sip/qt/qcursor.sip
new file mode 100644
index 00000000..3631c30e
--- /dev/null
+++ b/python/pyqt/sip/qt/qcursor.sip
@@ -0,0 +1,144 @@
+// This is the SIP interface definition for QCursor.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCursor</Title>
+<Para>
+<Literal>QCursor</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qcursor.h>
+%End
+
+
+%If (- Qt_2_00)
+// Global cursors.
+
+const QCursor arrowCursor;
+const QCursor upArrowCursor;
+const QCursor crossCursor;
+const QCursor waitCursor;
+const QCursor ibeamCursor;
+const QCursor sizeVerCursor;
+const QCursor sizeHorCursor;
+const QCursor sizeBDiagCursor;
+const QCursor sizeFDiagCursor;
+const QCursor sizeAllCursor;
+const QCursor blankCursor;
+%End
+
+
+%If (- Qt_3_0_0)
+enum QCursorShape {
+ ArrowCursor,
+ UpArrowCursor,
+ CrossCursor,
+ WaitCursor,
+ IbeamCursor,
+ SizeVerCursor,
+ SizeHorCursor,
+ SizeBDiagCursor,
+ SizeFDiagCursor,
+ SizeAllCursor,
+ BlankCursor,
+ LastCursor = BlankCursor,
+ BitmapCursor = 24
+};
+
+
+class QCursor
+{
+%TypeHeaderCode
+#include <qcursor.h>
+%End
+
+public:
+ QCursor();
+ QCursor(int);
+ QCursor(const QBitmap &,const QBitmap &,int = -1,int = -1);
+%If (Qt_2_00 -)
+ QCursor(const QPixmap &,int = -1,int = -1);
+%End
+ QCursor(const QCursor &);
+
+ int shape() const;
+ void setShape(int);
+ const QBitmap *bitmap() const;
+ const QBitmap *mask() const;
+ QPoint hotSpot() const;
+%If (- Qt_2_00)
+ HANDLE handle() const;
+%End
+%If (Qt_2_00 -)
+%If (WS_X11)
+ HANDLE handle() const;
+%End
+%End
+ static QPoint pos();
+ static void setPos(int,int);
+ static void setPos(const QPoint &);
+ static void initialize();
+ static void cleanup();
+};
+%End
+
+%If (Qt_3_0_0 -)
+class QCursor : Qt
+{
+%TypeHeaderCode
+#include <qcursor.h>
+%End
+
+public:
+ QCursor();
+ QCursor(int);
+ QCursor(const QBitmap &,const QBitmap &,int = -1,int = -1);
+ QCursor(const QPixmap &,int = -1,int = -1);
+ QCursor(const QCursor &);
+
+ int shape() const;
+ void setShape(int);
+ const QBitmap *bitmap() const;
+ const QBitmap *mask() const;
+ QPoint hotSpot() const;
+
+%If (WS_X11)
+ HANDLE handle() const;
+%If (Qt_3_3_0 -)
+ // This would have the same Python signature as QCursor(int).
+ //QCursor(HANDLE);
+%End
+%End
+ static QPoint pos();
+ static void setPos(int,int);
+ static void setPos(const QPoint &);
+ static void initialize();
+ static void cleanup();
+%If (WS_X11)
+ static int x11Screen();
+%End
+};
+%End
diff --git a/python/pyqt/sip/qt/qdatastream.sip b/python/pyqt/sip/qt/qdatastream.sip
new file mode 100644
index 00000000..1a271326
--- /dev/null
+++ b/python/pyqt/sip/qt/qdatastream.sip
@@ -0,0 +1,224 @@
+// This is the SIP interface definition for QDataStream.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDataStream</Title>
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>readBytes</Function></FuncDef>
+ <ParamDef>const char *&amp;<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint &amp;<Parameter>l</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters. The <Literal>QDataStream</Literal> result and the
+data read are returned as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>readRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>l</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>l</Literal> parameter. The
+<Literal>QDataStream</Literal> result and the data read are returned as a
+tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>writeBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>s</Literal> and not passed as a
+parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QDataStream &amp;<Function>writeRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>s</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>s</Literal> and not passed as a
+parameter.
+</Para>
+</Sect2>
+%End
+
+
+class QDataStream
+{
+%TypeHeaderCode
+#include <qdatastream.h>
+%End
+
+public:
+ QDataStream();
+ QDataStream(QIODevice *);
+ QDataStream(QByteArray,int);
+
+ QIODevice *device() const;
+ void setDevice(QIODevice *);
+ void unsetDevice();
+%If (Qt_2_00 -)
+ bool atEnd() const;
+%End
+ bool eof() const;
+
+ enum ByteOrder {
+ BigEndian,
+ LittleEndian
+ };
+
+ int byteOrder() const;
+ void setByteOrder(int);
+ bool isPrintableData() const;
+ void setPrintableData(bool);
+ int version() const;
+ void setVersion(int);
+
+ SIP_PYTUPLE readBytes() /ReleaseGIL/;
+%MethodCode
+ char *c;
+ uint l;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> QDataStream::readBytes(c,l);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(Sa)",sipSelf,c,l);
+
+ if (c)
+ delete[] c;
+%End
+
+ SIP_PYTUPLE readRawBytes(uint) /ReleaseGIL/;
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> QDataStream::readRawBytes(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(Sa)",sipSelf,buf,a0);
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+ QDataStream &writeBytes(const char * /Array/,
+ uint /ArraySize/) /ReleaseGIL/;
+ QDataStream &writeRawBytes(const char * /Array/,
+ uint /ArraySize/) /ReleaseGIL/;
+
+%If (Qt_3_0_0 -)
+ // These are taken from the corresponding class definitions. We limit
+ // them to Qt v3.0.0 and later just to avoid checking earlier versions.
+
+ QDataStream &operator<<(const QBrush &);
+ QDataStream &operator>>(QBrush & /Constrained/);
+
+ QDataStream &operator<<(const QColor &);
+ QDataStream &operator>>(QColor & /Constrained/);
+
+ QDataStream &operator<<(const QByteArray &);
+ QDataStream &operator>>(QByteArray & /Constrained/);
+
+ QDataStream &operator<<(const QCString &);
+ QDataStream &operator>>(QCString & /Constrained/);
+
+ QDataStream &operator<<(const QCursor &);
+ QDataStream &operator>>(QCursor & /Constrained/);
+
+ QDataStream &operator<<(const QDate &);
+ QDataStream &operator>>(QDate & /Constrained/);
+
+ QDataStream &operator<<(const QTime &);
+ QDataStream &operator>>(QTime & /Constrained/);
+
+ QDataStream &operator<<(const QDateTime &);
+ QDataStream &operator>>(QDateTime & /Constrained/);
+
+ QDataStream &operator<<(const QFont &);
+ QDataStream &operator>>(QFont & /Constrained/);
+
+ QDataStream &operator<<(const QImage &);
+ QDataStream &operator>>(QImage & /Constrained/);
+
+ QDataStream &operator<<(const QKeySequence &);
+ QDataStream &operator>>(QKeySequence & /Constrained/);
+
+ QDataStream &operator<<(const QColorGroup &);
+ QDataStream &operator>>(QColorGroup & /Constrained/);
+
+ QDataStream &operator<<(const QPalette &);
+ QDataStream &operator>>(QPalette & /Constrained/);
+
+ QDataStream &operator<<(const QPen &);
+ QDataStream &operator>>(QPen & /Constrained/);
+
+ QDataStream &operator<<(const QPicture &);
+ QDataStream &operator>>(QPicture & /Constrained/);
+
+ QDataStream &operator<<(const QPixmap &);
+ QDataStream &operator>>(QPixmap & /Constrained/);
+
+ QDataStream &operator<<(const QPointArray &);
+ QDataStream &operator>>(QPointArray & /Constrained/);
+
+ QDataStream &operator<<(const QPoint &);
+ QDataStream &operator>>(QPoint & /Constrained/);
+
+ QDataStream &operator<<(const QRect &);
+ QDataStream &operator>>(QRect & /Constrained/);
+
+ QDataStream &operator<<(const QRegion &);
+ QDataStream &operator>>(QRegion & /Constrained/);
+
+ QDataStream &operator<<(const QSize &);
+ QDataStream &operator>>(QSize & /Constrained/);
+
+ QDataStream &operator<<(const QString &);
+ QDataStream &operator>>(QString & /Constrained/);
+
+ QDataStream &operator<<(const QStringList &);
+ QDataStream &operator>>(QStringList & /Constrained/);
+
+ QDataStream &operator<<(const QVariant &);
+ QDataStream &operator>>(QVariant & /Constrained/);
+
+ QDataStream &operator<<(const QWMatrix &);
+ QDataStream &operator>>(QWMatrix & /Constrained/);
+%End
+%If (Qt_3_1_0 -)
+ QDataStream &operator<<(const QUuid &);
+ QDataStream &operator>>(QUuid & /Constrained/);
+%End
+
+private:
+ QDataStream(const QDataStream &);
+};
diff --git a/python/pyqt/sip/qt/qdatetime.sip b/python/pyqt/sip/qt/qdatetime.sip
new file mode 100644
index 00000000..cede0216
--- /dev/null
+++ b/python/pyqt/sip/qt/qdatetime.sip
@@ -0,0 +1,280 @@
+// This is the SIP interface definition for QDate, QDateTime and QTime.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDate</Title>
+<Para>
+The Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>weekNumber</Function></FuncDef>
+ <ParamDef>int *<Parameter>yearNum</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the week number and the year number as a
+tuple. (Qt v3.1+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QDateTime</Title>
+<Para>
+<Literal>QDateTime</Literal> is fully implemented, including the Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTime</Title>
+<Para>
+<Literal>QTime</Literal> is fully implemented, including the Python
+<Literal>==</Literal>, <Literal>!=</Literal>,
+<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
+<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
+and <Literal>__nonzero__</Literal>
+operators.
+</Para>
+</Sect2>
+%End
+
+
+class QDate
+{
+%TypeHeaderCode
+#include <qdatetime.h>
+%End
+
+public:
+ QDate();
+ QDate(int,int,int);
+
+ bool isNull() const;
+ bool isValid() const;
+
+ int year() const;
+ int month() const;
+ int day() const;
+ int dayOfWeek() const;
+ int dayOfYear() const;
+ int daysInMonth() const;
+ int daysInYear() const;
+
+%If (Qt_3_1_0 -)
+ int weekNumber(int * = 0) const;
+%End
+
+%If (- Qt_2_00)
+ virtual const char *monthName(int) const;
+ virtual const char *dayName(int) const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual QString monthName(int) const;
+ virtual QString dayName(int) const;
+%End
+%If (Qt_3_0_0 -)
+ static QString shortMonthName(int);
+ static QString shortDayName(int);
+ static QString longMonthName(int);
+ static QString longDayName(int);
+%End
+
+%If (- Qt_3_0_0)
+ QString toString() const;
+%End
+%If (Qt_3_0_0 -)
+ QString toString(Qt::DateFormat = Qt::TextDate) const;
+ QString toString(const QString &) const;
+%End
+ bool setYMD(int,int,int);
+ QDate addDays(int) const;
+%If (Qt_3_0_0 -)
+ QDate addMonths(int) const;
+ QDate addYears(int) const;
+%End
+ int daysTo(const QDate &) const;
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = !sipCpp -> isNull();
+%End
+
+ bool operator==(const QDate &) const;
+ bool operator!=(const QDate &) const;
+ bool operator<(const QDate &) const;
+ bool operator<=(const QDate &) const;
+ bool operator>(const QDate &) const;
+ bool operator>=(const QDate &) const;
+
+ static QDate currentDate();
+%If (Qt_3_1_0 -)
+ static QDate currentDate(Qt::TimeSpec);
+%End
+%If (Qt_3_0_0 -)
+ static QDate fromString(const QString &,Qt::DateFormat = Qt::TextDate);
+%End
+ static bool isValid(int,int,int);
+ static bool leapYear(int);
+
+%If (Qt_3_0_0 -)
+ // These are defined in Qt3 but not documented.
+ //static uint gregorianToJulian(int,int,int);
+ //static void julianToGregorian(uint,int &,int &,int &);
+%End
+};
+
+
+class QTime
+{
+%TypeHeaderCode
+#include <qdatetime.h>
+%End
+
+public:
+ QTime();
+ QTime(int,int,int = 0,int = 0);
+
+ bool isNull() const;
+ bool isValid() const;
+ int hour() const;
+ int minute() const;
+ int second() const;
+ int msec() const;
+
+%If (- Qt_3_0_0)
+ QString toString() const;
+%End
+%If (Qt_3_0_0 -)
+ QString toString(Qt::DateFormat = Qt::TextDate) const;
+ QString toString(const QString &) const;
+%End
+
+ bool setHMS(int,int,int,int = 0);
+
+ QTime addSecs(int) const;
+ int secsTo(const QTime &) const;
+ QTime addMSecs(int) const;
+ int msecsTo(const QTime &) const;
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = !sipCpp -> isNull();
+%End
+
+ bool operator==(const QTime &) const;
+ bool operator!=(const QTime &) const;
+ bool operator<(const QTime &) const;
+ bool operator<=(const QTime &) const;
+ bool operator>(const QTime &) const;
+ bool operator>=(const QTime &) const;
+
+ static QTime currentTime();
+%If (Qt_3_1_0 -)
+ static QTime currentTime(Qt::TimeSpec);
+%End
+%If (Qt_3_0_0 -)
+ static QTime fromString(const QString &,Qt::DateFormat = Qt::TextDate);
+%End
+ static bool isValid(int,int,int,int = 0);
+
+ void start();
+ int restart();
+%If (- Qt_3_0_0)
+ int elapsed();
+%End
+%If (Qt_3_0_0 -)
+ int elapsed() const;
+%End
+};
+
+
+class QDateTime
+{
+%TypeHeaderCode
+#include <qdatetime.h>
+%End
+
+public:
+ QDateTime();
+ QDateTime(const QDate &);
+ QDateTime(const QDate &,const QTime &);
+
+ bool isNull() const;
+ bool isValid() const;
+
+ QDate date() const;
+ QTime time() const;
+%If (Qt_3_1_0 -)
+ uint toTime_t() const;
+%End
+ void setDate(const QDate &);
+ void setTime(const QTime &);
+ void setTime_t(uint);
+%If (Qt_3_1_0 -)
+ void setTime_t(uint,Qt::TimeSpec);
+%End
+
+%If (- Qt_3_0_0)
+ QString toString() const;
+%End
+%If (Qt_3_0_0 -)
+ QString toString(Qt::DateFormat = Qt::TextDate) const;
+ QString toString(const QString &) const;
+%End
+
+ QDateTime addDays(int) const;
+%If (Qt_3_0_0 -)
+ QDateTime addMonths(int) const;
+ QDateTime addYears(int) const;
+%End
+ QDateTime addSecs(int) const;
+ int daysTo(const QDateTime &) const;
+ int secsTo(const QDateTime &) const;
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = !sipCpp -> isNull();
+%End
+
+ bool operator==(const QDateTime &) const;
+ bool operator!=(const QDateTime &) const;
+ bool operator<(const QDateTime &) const;
+ bool operator<=(const QDateTime &) const;
+ bool operator>(const QDateTime &) const;
+ bool operator>=(const QDateTime &) const;
+
+ static QDateTime currentDateTime();
+%If (Qt_3_1_0 -)
+ static QDateTime currentDateTime(Qt::TimeSpec);
+%End
+%If (Qt_3_0_0 -)
+ static QDateTime fromString(const QString &,
+ Qt::DateFormat = Qt::TextDate);
+%End
+};
diff --git a/python/pyqt/sip/qt/qdatetimeedit.sip b/python/pyqt/sip/qt/qdatetimeedit.sip
new file mode 100644
index 00000000..27ee8304
--- /dev/null
+++ b/python/pyqt/sip/qt/qdatetimeedit.sip
@@ -0,0 +1,256 @@
+// This is the SIP interface definition for QDateEdit, QDateTimeEdit and
+// QTimeEdit.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDateEdit (Qt v3+)</Title>
+<Para>
+<Literal>QDateEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTimeEdit (Qt v3+)</Title>
+<Para>
+<Literal>QTimeEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDateTimeEdit (Qt v3+)</Title>
+<Para>
+<Literal>QDateTimeEdit</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+// QDateEdit actually inherits QDateTimeEditBase but that's an internal class
+// and isn't exported under Windows in all versions.
+
+class QDateEdit : QWidget
+{
+%TypeHeaderCode
+#include <qdatetimeedit.h>
+%End
+
+public:
+ QDateEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+ QDateEdit(const QDate &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ enum Order {
+ DMY,
+ MDY,
+ YMD,
+ YDM
+ };
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%If (- Qt_3_1_0)
+ virtual void setDate(const QDate &);
+%End
+ QDate date() const;
+ virtual void setOrder(Order);
+ Order order() const;
+ virtual void setAutoAdvance(bool);
+ bool autoAdvance() const;
+
+ virtual void setMinValue(const QDate &);
+ QDate minValue() const;
+ virtual void setMaxValue(const QDate &);
+ QDate maxValue() const;
+ virtual void setRange(const QDate &,const QDate &);
+ QString separator() const;
+ virtual void setSeparator(const QString &);
+
+%If (Qt_3_2_0 -)
+ void removeFirstNumber(int);
+%End
+
+public slots:
+%If (Qt_3_1_0 -)
+ virtual void setDate(const QDate &);
+%End
+
+signals:
+ void valueChanged(const QDate &);
+
+protected:
+ bool event(QEvent *);
+ void timerEvent(QTimerEvent *);
+ void resizeEvent(QResizeEvent *);
+ void stepUp();
+ void stepDown();
+ QString sectionFormattedText(int);
+ void addNumber(int,int);
+ void removeLastNumber(int);
+ bool setFocusSection(int);
+
+ virtual void setYear(int);
+ virtual void setMonth(int);
+ virtual void setDay(int);
+ virtual void fix();
+ virtual bool outOfRange(int,int,int) const;
+
+protected slots:
+ void updateButtons();
+
+private:
+%If (Qt_3_1_0 -)
+ QDateEdit(const QDateEdit &);
+%End
+};
+
+
+// QDateEdit actually inherits QDateTimeEditBase but that's an internal class
+// and isn't exported under Windows in all versions.
+
+class QTimeEdit : QWidget
+{
+%TypeHeaderCode
+#include <qdatetimeedit.h>
+%End
+
+public:
+%If (Qt_3_1_0 -)
+ enum Display {
+ Hours,
+ Minutes,
+ Seconds,
+ AMPM
+ };
+%End
+
+ QTimeEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+ QTimeEdit(const QTime &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%If (- Qt_3_1_0)
+ virtual void setTime(const QTime &);
+%End
+ QTime time() const;
+ virtual void setAutoAdvance(bool);
+ bool autoAdvance() const;
+
+ virtual void setMinValue(const QTime &);
+ QTime minValue() const;
+ virtual void setMaxValue(const QTime &);
+ QTime maxValue() const;
+ virtual void setRange(const QTime &,const QTime &);
+ QString separator() const;
+ virtual void setSeparator(const QString &);
+
+%If (Qt_3_1_0 -)
+ uint display() const;
+ void setDisplay(uint);
+%End
+
+%If (Qt_3_2_0 -)
+ void removeFirstNumber(int);
+%End
+
+public slots:
+%If (Qt_3_1_0 -)
+ virtual void setTime(const QTime &);
+%End
+
+signals:
+ void valueChanged(const QTime &);
+
+protected:
+ bool event(QEvent *);
+ void timerEvent(QTimerEvent *);
+ void resizeEvent(QResizeEvent *);
+ void stepUp();
+ void stepDown();
+ QString sectionFormattedText(int);
+ void addNumber(int,int);
+ void removeLastNumber(int);
+ bool setFocusSection(int);
+
+ virtual bool outOfRange(int,int,int) const;
+ virtual void setHour(int);
+ virtual void setMinute(int);
+ virtual void setSecond(int);
+
+protected slots:
+ void updateButtons();
+
+private:
+%If (Qt_3_1_0 -)
+ QTimeEdit(const QTimeEdit &);
+%End
+};
+
+
+class QDateTimeEdit : QWidget
+{
+%TypeHeaderCode
+#include <qdatetimeedit.h>
+%End
+
+public:
+ QDateTimeEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+ QDateTimeEdit(const QDateTime &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%If (- Qt_3_1_0)
+ virtual void setDateTime(const QDateTime &);
+%End
+ QDateTime dateTime() const;
+
+ QDateEdit* dateEdit();
+ QTimeEdit* timeEdit();
+
+ virtual void setAutoAdvance(bool);
+ bool autoAdvance() const;
+
+public slots:
+%If (Qt_3_1_0 -)
+ virtual void setDateTime(const QDateTime &);
+%End
+
+signals:
+ void valueChanged(const QDateTime &);
+
+protected:
+ void init();
+ void resizeEvent(QResizeEvent *);
+%If (- Qt_3_1_2)
+ void layoutEditors();
+%End
+
+protected slots:
+ void newValue(const QDate &);
+ void newValue(const QTime &);
+
+private:
+%If (Qt_3_1_0 -)
+ QDateTimeEdit(const QDateTimeEdit &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qdesktopwidget.sip b/python/pyqt/sip/qt/qdesktopwidget.sip
new file mode 100644
index 00000000..a6030e68
--- /dev/null
+++ b/python/pyqt/sip/qt/qdesktopwidget.sip
@@ -0,0 +1,84 @@
+// This is the SIP interface definition for QDesktopWidget.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDesktopWidget (Qt v3+)</Title>
+<Para>
+<Literal>QDesktopWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDesktopWidget : QWidget
+{
+%TypeHeaderCode
+#include <qdesktopwidget.h>
+%End
+
+public:
+ QDesktopWidget();
+
+ bool isVirtualDesktop() const;
+
+ int numScreens() const;
+ int primaryScreen() const;
+
+ int screenNumber(QWidget * = 0) const;
+ int screenNumber(const QPoint &) const;
+
+ QWidget *screen(int = -1);
+
+ const QRect &screenGeometry(int = -1) const;
+%If (Qt_3_1_0 -)
+ const QRect &screenGeometry(QWidget *) const;
+ const QRect &screenGeometry(const QPoint &) const;
+
+ const QRect &availableGeometry(int = -1) const;
+ const QRect &availableGeometry(QWidget *) const;
+ const QRect &availableGeometry(const QPoint &) const;
+
+ void insertChild(QObject *);
+%End
+
+signals:
+%If (Qt_3_2_0 -)
+ void resized(int);
+%End
+%If (Qt_3_3_0 -)
+ void workAreaResized(int);
+%End
+
+protected:
+%If (Qt_3_1_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QDesktopWidget(const QDesktopWidget &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qdial.sip b/python/pyqt/sip/qt/qdial.sip
new file mode 100644
index 00000000..9587e8c4
--- /dev/null
+++ b/python/pyqt/sip/qt/qdial.sip
@@ -0,0 +1,112 @@
+// This is the SIP interface definition for QDial.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDial (Qt v2.2+)</Title>
+<Para>
+<Literal>QDial</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+%If (Qt_DIAL)
+
+class QDial : QWidget, QRangeControl
+{
+%TypeHeaderCode
+#include <qdial.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QDial(QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ QDial(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+ QDial(int,int,int,int,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ bool tracking() const;
+
+ bool wrapping() const;
+
+ int notchSize() const;
+
+ virtual void setNotchTarget(double);
+ double notchTarget() const;
+
+ bool notchesVisible() const;
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ int minValue() const;
+ int maxValue() const;
+ void setMinValue(int);
+ void setMaxValue(int);
+ int lineStep() const;
+ int pageStep() const;
+ void setLineStep(int);
+ void setPageStep(int);
+ int value() const;
+
+public slots:
+ virtual void setValue(int);
+ void addLine();
+ void subtractLine();
+ void addPage();
+ void subtractPage();
+ virtual void setNotchesVisible(bool);
+ virtual void setWrapping(bool);
+ virtual void setTracking(bool);
+
+signals:
+ void valueChanged(int);
+ void dialPressed();
+ void dialMoved(int);
+ void dialReleased();
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void paintEvent(QPaintEvent *);
+
+ void keyPressEvent(QKeyEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void wheelEvent(QWheelEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+
+ void valueChange();
+ void rangeChange();
+
+ virtual void repaintScreen(const QRect * = 0);
+
+private:
+ QDial(const QDial &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qdialog.sip b/python/pyqt/sip/qt/qdialog.sip
new file mode 100644
index 00000000..c2835202
--- /dev/null
+++ b/python/pyqt/sip/qt/qdialog.sip
@@ -0,0 +1,158 @@
+// This is the SIP interface definition for QDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDialog</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ dialog to be transfered
+to Python. This means that the C++ dialog will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the dialog is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+</Sect2>
+%End
+
+
+class QDialog : QWidget
+{
+%TypeHeaderCode
+#include <qdialog.h>
+%End
+
+public:
+ QDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,WFlags = 0);
+
+ enum DialogCode {
+ Rejected,
+ Accepted
+ };
+
+%If (- Qt_3_0_0)
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal dialog will
+ // probably have the main window as it's parent). This means
+ // the Qt dialog will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QDialog::exec();
+ Py_END_ALLOW_THREADS
+%End
+%End
+
+ int result() const;
+
+ void show();
+%If (Qt_2_00 -)
+ void hide();
+%End
+ void move(int,int);
+ void move(const QPoint &);
+ void resize(int,int);
+ void resize(const QSize &);
+ void setGeometry(int,int,int,int);
+ void setGeometry(const QRect &);
+
+%If (Qt_2_2_0 -)
+ void setOrientation(Orientation);
+ Orientation orientation() const;
+
+ void setExtension(QWidget *);
+ QWidget *extension() const;
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ void setSizeGripEnabled(bool);
+ bool isSizeGripEnabled() const;
+%End
+
+%If (Qt_3_2_0 -)
+ void setModal(bool);
+ bool isModal() const;
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal dialog will
+ // probably have the main window as it's parent). This means
+ // the Qt dialog will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QDialog::exec();
+ Py_END_ALLOW_THREADS
+%End
+%End
+
+protected slots:
+ virtual void done(int);
+%If (- Qt_2_00)
+ void accept();
+ void reject();
+%End
+%If (Qt_2_00 -)
+ virtual void accept();
+ virtual void reject();
+%End
+
+%If (Qt_2_2_0 -)
+ void showExtension(bool);
+%End
+
+protected:
+ void setResult(int);
+ void keyPressEvent(QKeyEvent *);
+ void closeEvent(QCloseEvent *);
+%If (Qt_2_2_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void contextMenuEvent(QContextMenuEvent *);
+ bool eventFilter(QObject *,QEvent *);
+ void adjustPosition(QWidget *);
+%End
+
+private:
+ QDialog(const QDialog &);
+};
diff --git a/python/pyqt/sip/qt/qdir.sip b/python/pyqt/sip/qt/qdir.sip
new file mode 100644
index 00000000..906e8051
--- /dev/null
+++ b/python/pyqt/sip/qt/qdir.sip
@@ -0,0 +1,384 @@
+// This is the SIP interface definition for QDir and QFileInfoList.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDir</Title>
+<Para>
+<Literal>QDir</Literal> is fully implemented, including the Python
+<Literal>len</Literal>, <Literal>[]</Literal> (for reading slices and
+individual elements), <Literal>==</Literal>, <Literal>!=</Literal> and
+<Literal>in</Literal> operators
+</Para>
+</Sect2>
+
+<Sect2><Title>QFileInfoList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QFileInfoList</Literal> is
+the return type of a function or the type of an argument, a Python list of
+<Literal>QFileInfo</Literal> instances is used instead.
+</Para>
+</Sect2>
+%End
+
+
+%MappedType QFileInfoList
+{
+%TypeHeaderCode
+#include <qdir.h>
+#include "sipqtQFileInfo.h"
+%End
+
+%ConvertFromTypeCode
+ PyObject *pl;
+ QFileInfo *obj;
+
+ // Convert the list.
+
+ if ((pl = PyList_New(0)) == NULL)
+ return NULL;
+
+ for (QFileInfoListIterator it(*sipCpp); (obj = it.current()) != NULL; ++it)
+ {
+ PyObject *inst;
+
+ if ((inst = sipConvertFromInstance(obj,sipClass_QFileInfo,sipTransferObj)) == NULL || PyList_Append(pl,inst) < 0)
+ {
+ Py_XDECREF(inst);
+ Py_DECREF(pl);
+
+ return NULL;
+ }
+
+ Py_DECREF(inst);
+ }
+
+ return pl;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of QFileInfo instances to a QFileInfoList on
+ // the heap.
+
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QFileInfo,0))
+ return 0;
+
+ return 1;
+ }
+
+ QFileInfoList *qfil = new QFileInfoList;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ QFileInfo *qfi;
+
+ // We apply the transfer to the list itself, not the elements.
+ // Note that any temporary element will never be destroyed.
+ // There is nothing that can be done about this.
+ qfi = reinterpret_cast<QFileInfo *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QFileInfo,0,0,0,sipIsErr));
+
+ if (*sipIsErr)
+ {
+ delete qfil;
+ return 0;
+ }
+
+ qfil -> append(qfi);
+ }
+
+ *sipCppPtr = qfil;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+
+class QDir
+{
+%TypeHeaderCode
+#include <qdir.h>
+%End
+
+public:
+ enum FilterSpec {
+ Dirs,
+ Files,
+ Drives,
+ NoSymLinks,
+ All,
+ TypeMask,
+
+ Readable,
+ Writable,
+ Executable,
+ RWEMask,
+
+ Modified,
+ Hidden,
+ System,
+ AccessMask,
+
+ DefaultFilter
+ };
+
+ enum SortSpec {
+ Name,
+ Time,
+ Size,
+ Unsorted,
+ SortByMask,
+
+ DirsFirst,
+ Reversed,
+ IgnoreCase,
+ DefaultSort
+ };
+
+ QDir();
+%If (- Qt_2_00)
+ QDir(const char *,const char * = 0,int = Name | IgnoreCase,int = All);
+%End
+%If (Qt_2_00 -)
+ QDir(const QString &,const QString & = QString::null,
+ int = Name | IgnoreCase,int = All);
+%End
+ QDir(const QDir &);
+
+%If (- Qt_2_00)
+ void setPath(const char *);
+ const char *path() const;
+ QString absPath() const;
+ QString canonicalPath() const;
+
+ QString dirName() const;
+ QString filePath(const char *,bool = 1) const;
+ QString absFilePath(const char *,bool = 1) const;
+
+ static QString convertSeparators(const char *);
+
+ bool cd(const char *,bool = 1);
+ bool cdUp();
+
+ const char *nameFilter() const;
+ void setNameFilter(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setPath(const QString &);
+ virtual QString path() const;
+ virtual QString absPath() const;
+ virtual QString canonicalPath() const;
+
+ virtual QString dirName() const;
+ virtual QString filePath(const QString &,bool = 1) const;
+ virtual QString absFilePath(const QString &,bool = 1) const;
+
+ static QString convertSeparators(const QString &);
+
+ virtual bool cd(const QString &,bool = 1);
+ virtual bool cdUp();
+
+ QString nameFilter() const;
+ virtual void setNameFilter(const QString &);
+%End
+ FilterSpec filter() const;
+%If (- Qt_2_00)
+ void setFilter(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setFilter(int);
+%End
+ SortSpec sorting() const;
+%If (- Qt_2_00)
+ void setSorting(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setSorting(int);
+%End
+
+ bool matchAllDirs() const;
+%If (- Qt_2_00)
+ void setMatchAllDirs(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setMatchAllDirs(bool);
+%End
+
+ uint count() const;
+
+ int __len__() const;
+%MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> count();
+ Py_END_ALLOW_THREADS
+%End
+
+ QString operator[](int) const;
+%MethodCode
+ int len;
+
+ Py_BEGIN_ALLOW_THREADS
+ len = sipCpp -> count();
+ Py_END_ALLOW_THREADS
+
+ if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QString((*sipCpp)[a0]);
+ Py_END_ALLOW_THREADS
+ }
+%End
+
+ QStringList operator[](SIP_PYSLICE) const;
+%MethodCode
+#if PY_VERSION_HEX >= 0x02050000
+ Py_ssize_t len, start, stop, step, slicelength, i;
+#else
+ int len, start, stop, step, slicelength, i;
+#endif
+
+ Py_BEGIN_ALLOW_THREADS
+ len = sipCpp -> count();
+ Py_END_ALLOW_THREADS
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QStringList();
+
+ for (i = 0; i < slicelength; ++i)
+ {
+ (*sipRes) += (*sipCpp)[start];
+ start += step;
+ }
+ Py_END_ALLOW_THREADS
+ }
+%End
+
+ int __contains__(const QString &) const;
+%MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = (sipCpp -> entryList().findIndex(*a0) >= 0);
+ Py_END_ALLOW_THREADS
+%End
+
+%If (- Qt_2_00)
+ const QStrList *entryList(int = DefaultFilter,int = DefaultSort) const;
+ const QStrList *entryList(const char *,int = DefaultFilter,
+ int = DefaultSort) const;
+ const QFileInfoList *entryInfoList(int = DefaultFilter,
+ int = DefaultSort) const;
+ const QFileInfoList *entryInfoList(const char *,int = DefaultFilter,
+ int = DefaultSort) const;
+%End
+%If (Qt_2_00 -)
+ virtual QStrList encodedEntryList(int = DefaultFilter,
+ int = DefaultSort) const;
+ virtual QStrList encodedEntryList(const QString &,int = DefaultFilter,
+ int = DefaultSort) const;
+ virtual QStringList entryList(int = DefaultFilter,
+ int = DefaultSort) const;
+ virtual QStringList entryList(const QString &,int = DefaultFilter,
+ int = DefaultSort) const;
+ virtual const QFileInfoList *entryInfoList(int = DefaultFilter,
+ int = DefaultSort) const;
+ virtual const QFileInfoList *entryInfoList(const QString &,
+ int = DefaultFilter,
+ int = DefaultSort) const;
+%End
+
+ static const QFileInfoList *drives();
+
+%If (- Qt_2_00)
+ bool mkdir(const char *,bool = 1) const;
+ bool rmdir(const char *,bool = 1) const;
+
+ bool isReadable() const;
+ bool exists() const;
+ bool isRoot() const;
+
+ bool isRelative() const;
+ void convertToAbs();
+
+ bool operator==(const QDir &) const;
+ bool operator!=(const QDir &) const;
+
+ bool remove(const char *,bool = 1);
+ bool rename(const char *,const char *,bool = 1);
+ bool exists(const char *,bool = 1);
+%End
+%If (Qt_2_00 -)
+ virtual bool mkdir(const QString &,bool = 1) const;
+ virtual bool rmdir(const QString &,bool = 1) const;
+
+ virtual bool isReadable() const;
+ virtual bool exists() const;
+ virtual bool isRoot() const;
+
+ virtual bool isRelative() const;
+ virtual void convertToAbs();
+
+ virtual bool remove(const QString &,bool = 1);
+ virtual bool rename(const QString &,const QString &,bool = 1);
+ virtual bool exists(const QString &,bool = 1);
+%End
+
+ static char separator();
+
+%If (- Qt_2_00)
+ static bool setCurrent(const char *);
+%End
+%If (Qt_2_00 -)
+ static bool setCurrent(const QString &);
+%End
+ static QDir current();
+ static QDir home();
+ static QDir root();
+ static QString currentDirPath();
+ static QString homeDirPath();
+ static QString rootDirPath();
+
+%If (- Qt_2_00)
+ static bool match(const char *,const char *);
+ static QString cleanDirPath(const char *);
+ static bool isRelativePath(const char *);
+%End
+%If (Qt_2_1_0 -)
+ static bool match(const QStringList &,const QString &);
+%End
+%If (Qt_2_00 -)
+ static bool match(const QString &,const QString &);
+ static QString cleanDirPath(const QString &);
+ static bool isRelativePath(const QString &);
+%End
+%If (Qt_3_1_0 -)
+ void refresh() const;
+%End
+};
diff --git a/python/pyqt/sip/qt/qdockarea.sip b/python/pyqt/sip/qt/qdockarea.sip
new file mode 100644
index 00000000..87c01268
--- /dev/null
+++ b/python/pyqt/sip/qt/qdockarea.sip
@@ -0,0 +1,88 @@
+// This is the SIP interface definition for QDockArea.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDockArea (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>hasDockWindow</Function> const</FuncDef>
+ <ParamDef>QDockWindow *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>w</Literal> parameter and returns the index of the
+QDockWIndow or -1 if the QDockArea does not contain the QDockWindow.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDockArea : QWidget
+{
+%TypeHeaderCode
+#include <qdockarea.h>
+%End
+
+public:
+ enum HandlePosition {
+ Normal,
+ Reverse
+ };
+
+ QDockArea(Orientation,HandlePosition = Normal,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void moveDockWindow(QDockWindow *,const QPoint &,const QRect &,bool);
+ void removeDockWindow(QDockWindow *,bool,bool,bool = 1);
+ void moveDockWindow(QDockWindow *,int = -1);
+
+ int hasDockWindow(QDockWindow *);
+%MethodCode
+ // The Python interface returns the index.
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> QDockArea::hasDockWindow(a0,&sipRes);
+ Py_END_ALLOW_THREADS
+%End
+
+ void invalidNextOffset(QDockWindow *);
+
+ Orientation orientation() const;
+ HandlePosition handlePosition() const;
+
+ bool eventFilter(QObject *,QEvent *);
+ bool isEmpty() const;
+ int count() const;
+ QPtrList<QDockWindow> dockWindowList() const;
+
+ bool isDockWindowAccepted(QDockWindow *);
+ void setAcceptDockWindow(QDockWindow *,bool);
+
+public slots:
+ void lineUp(bool);
+
+private:
+ QDockArea(const QDockArea &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qdockwindow.sip b/python/pyqt/sip/qt/qdockwindow.sip
new file mode 100644
index 00000000..5a2bef66
--- /dev/null
+++ b/python/pyqt/sip/qt/qdockwindow.sip
@@ -0,0 +1,135 @@
+// This is the SIP interface definition for QDockWindow.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDockWindow (Qt v3+)</Title>
+<Para>
+<Literal>QDockWindow</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDockWindow : QFrame
+{
+%TypeHeaderCode
+#include <qdockwindow.h>
+%End
+
+public:
+ enum Place {
+ InDock,
+ OutsideDock
+ };
+
+ enum CloseMode {
+ Never,
+ Docked,
+ Undocked,
+ Always
+ };
+
+ QDockWindow(Place = InDock,QWidget * /TransferThis/ = 0,
+ const char * = 0,WFlags = 0);
+%If (Qt_3_1_0 -)
+ QDockWindow(QWidget * /TransferThis/,const char * = 0,WFlags = 0);
+%End
+
+ virtual void setWidget(QWidget *);
+ QWidget *widget() const;
+
+ Place place() const;
+
+ QDockArea *area() const;
+
+ virtual void setCloseMode(int);
+ bool isCloseEnabled() const;
+ int closeMode() const;
+
+ virtual void setResizeEnabled(bool);
+ virtual void setMovingEnabled(bool);
+ bool isResizeEnabled() const;
+ bool isMovingEnabled() const;
+
+ virtual void setHorizontallyStretchable(bool);
+ virtual void setVerticallyStretchable(bool);
+ bool isHorizontallyStretchable() const;
+ bool isVerticallyStretchable() const;
+ bool isStretchable() const;
+
+ virtual void setOffset(int);
+ int offset() const;
+
+ virtual void setFixedExtentWidth(int);
+ virtual void setFixedExtentHeight(int);
+ QSize fixedExtent() const;
+
+ virtual void setNewLine(bool);
+ bool newLine() const;
+
+ Qt::Orientation orientation() const;
+
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize minimumSizeHint() const;
+
+ QBoxLayout *boxLayout();
+
+ virtual void setOpaqueMoving(bool);
+ bool opaqueMoving() const;
+
+ bool eventFilter(QObject *,QEvent *);
+
+signals:
+ void orientationChanged(Orientation);
+ void placeChanged(QDockWindow::Place);
+ void visibilityChanged(bool);
+
+public slots:
+ virtual void undock(QWidget *);
+ virtual void undock();
+ virtual void dock();
+ virtual void setOrientation(Orientation);
+ void setCaption(const QString &);
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void showEvent(QShowEvent *);
+ void hideEvent(QHideEvent *);
+ void contextMenuEvent(QContextMenuEvent *);
+
+%If (Qt_3_0_1 -)
+ void drawFrame(QPainter *);
+%End
+%If (Qt_3_1_0 -)
+ void drawContents(QPainter *);
+%End
+
+ bool event(QEvent *);
+
+private:
+ QDockWindow(const QDockWindow &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qdragobject.sip b/python/pyqt/sip/qt/qdragobject.sip
new file mode 100644
index 00000000..54652195
--- /dev/null
+++ b/python/pyqt/sip/qt/qdragobject.sip
@@ -0,0 +1,374 @@
+// This is the SIP interface definition for QDragObject, QImageDrag,
+// QStoredDrag, QTextDrag, QUriDrag, QUrlDrag, QColorDrag.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QColorDrag (Qt v2.1+)</Title>
+<Para>
+<Literal>QColorDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragObject</Title>
+<Para>
+<Literal>QDragObject</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageDrag</Title>
+<Para>
+<Literal>QImageDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QStoredDrag</Title>
+<Para>
+<Literal>QStoredDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextDrag</Title>
+<Para>
+<Literal>QTextDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QUriDrag (Qt v2+)</Title>
+<Para>
+<Literal>QUriDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QUrlDrag (Qt v1.x)</Title>
+<Para>
+<Literal>QUrlDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QDragObject : QObject
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ enum DragMode {
+ DragDefault,
+ DragCopy,
+ DragMove,
+ DragCopyOrMove
+ };
+
+ QDragObject(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ bool drag();
+ bool dragMove();
+ void dragCopy();
+ virtual bool provides(const char *) const;
+ virtual const char *format(int) const = 0;
+ virtual QByteArray encodedData(const char *) const = 0;
+ void setPixmap(QPixmap);
+ void setPixmap(QPixmap,QPoint);
+ QPixmap pixmap() const;
+ QPoint pixmapHotSpot() const;
+ QWidget *source();
+
+protected:
+ virtual bool drag(DragMode);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QDragObject : QObject, QMimeSource
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QDragObject(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (Qt_DRAGANDDROP)
+ bool drag();
+ bool dragMove();
+ void dragCopy();
+%If (Qt_3_0_0 -)
+ void dragLink();
+%End
+
+ virtual void setPixmap(QPixmap);
+%If (- Qt_3_0_0)
+ virtual void setPixmap(QPixmap,QPoint);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setPixmap(QPixmap,const QPoint &);
+%End
+ QPixmap pixmap() const;
+ QPoint pixmapHotSpot() const;
+%End
+
+ QWidget *source();
+ static QWidget *target();
+
+ static void setTarget(QWidget *);
+
+%If (Qt_DRAGANDDROP)
+%If (- Qt_3_0_0)
+ enum DragMode {
+ DragDefault,
+ DragCopy,
+ DragMove,
+ DragCopyOrMove
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum DragMode {
+ DragDefault,
+ DragCopy,
+ DragMove,
+ DragLink,
+ DragCopyOrMove
+ };
+%End
+%End
+
+protected:
+%If (Qt_DRAGANDDROP)
+ virtual bool drag(DragMode);
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QDragObject(const QDragObject &);
+%End
+};
+
+%End
+
+
+class QStoredDrag : QDragObject
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QStoredDrag(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_00)
+ void setEncodedData(const QByteArray&);
+%End
+%If (Qt_2_00 -)
+ virtual void setEncodedData(const QByteArray&);
+%End
+
+ const char *format(int) const;
+ virtual QByteArray encodedData(const char *) const;
+
+private:
+%If (Qt_3_1_0 -)
+ QStoredDrag(const QStoredDrag &);
+%End
+};
+
+
+%If (- Qt_2_00)
+
+class QTextDrag : QStoredDrag
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QTextDrag(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
+ QTextDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void setText(const char *);
+ static bool canDecode(QDragMoveEvent *);
+ static bool decode(QDropEvent *,QString &);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QTextDrag : QDragObject
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QTextDrag(const QString &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QTextDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ virtual void setText(const QString &);
+ virtual void setSubtype(const QCString &);
+
+ const char *format(int) const;
+ virtual QByteArray encodedData(const char *) const;
+
+ static bool canDecode(const QMimeSource *);
+ static bool decode(const QMimeSource *,QString &);
+ static bool decode(const QMimeSource *,QString &,QCString &);
+
+private:
+%If (Qt_3_1_0 -)
+ QTextDrag(const QTextDrag &);
+%End
+};
+
+%End
+
+
+class QImageDrag : QDragObject
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QImageDrag(QImage,QWidget * /TransferThis/ = 0,const char * = 0);
+ QImageDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_00)
+ void setImage(QImage);
+%End
+%If (Qt_2_00 -)
+ virtual void setImage(QImage);
+%End
+
+ const char *format(int) const;
+ virtual QByteArray encodedData(const char *) const;
+
+%If (- Qt_2_00)
+ static bool canDecode(QDragMoveEvent *);
+ static bool decode(QDropEvent *,QImage &);
+ static bool decode(QDropEvent *,QPixmap &);
+%End
+%If (Qt_2_00 -)
+ static bool canDecode(const QMimeSource *);
+ static bool decode(const QMimeSource *,QImage &);
+ static bool decode(const QMimeSource *,QPixmap &);
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QImageDrag(const QImageDrag &);
+%End
+};
+
+
+%If (- Qt_2_00)
+
+class QUrlDrag : QStoredDrag
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QUrlDrag(QStrList,QWidget * /TransferThis/ = 0,const char * = 0);
+ QUrlDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void setUrls(QStrList);
+ static QString urlToLocalFile(const char *);
+ static bool canDecode(QDragMoveEvent *);
+ static bool decode(QDropEvent *,QStrList &);
+ static bool decodeLocalFiles(QDropEvent *,QStrList &);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QUriDrag : QStoredDrag
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QUriDrag(QStrList,QWidget * /TransferThis/ = 0,const char * = 0);
+ QUriDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_3_0_0)
+ void setFilenames(QStringList);
+ void setUnicodeUris(QStringList);
+%End
+%If (Qt_3_0_0 -)
+ void setFileNames(const QStringList &);
+ void setUnicodeUris(const QStringList &);
+%End
+ virtual void setUris(QStrList);
+
+ static QString uriToLocalFile(const char *);
+ static QCString localFileToUri(const QString &);
+ static QString uriToUnicodeUri(const char *);
+ static QCString unicodeUriToUri(const QString &);
+ static bool canDecode(const QMimeSource *);
+ static bool decode(const QMimeSource *,QStrList &);
+ static bool decodeToUnicodeUris(const QMimeSource *,QStringList &);
+ static bool decodeLocalFiles(const QMimeSource *,QStringList &);
+
+private:
+%If (Qt_3_1_0 -)
+ QUriDrag(const QUriDrag &);
+%End
+};
+
+%End
+
+
+%If (Qt_2_1_0 -)
+
+class QColorDrag : QStoredDrag
+{
+%TypeHeaderCode
+#include <qdragobject.h>
+%End
+
+public:
+ QColorDrag(const QColor &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QColorDrag(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void setColor(const QColor &);
+
+ static bool canDecode(QMimeSource *);
+ static bool decode(QMimeSource *,QColor &);
+
+private:
+%If (Qt_3_1_0 -)
+ QColorDrag(const QColorDrag &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qdrawutil.sip b/python/pyqt/sip/qt/qdrawutil.sip
new file mode 100644
index 00000000..413ca4ad
--- /dev/null
+++ b/python/pyqt/sip/qt/qdrawutil.sip
@@ -0,0 +1,74 @@
+// This is the SIP interface definition for the Qt drawing utilities.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ModuleHeaderCode
+#include <qdrawutil.h>
+%End
+
+
+void qDrawShadeLine(QPainter *,int,int,int,int,const QColorGroup &,bool = 1,
+ int = 1,int = 0);
+void qDrawShadeLine(QPainter *,const QPoint &,const QPoint &,
+ const QColorGroup &,bool = 1,int = 1,int = 0);
+
+void qDrawShadeRect(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ int = 1,int = 0,const QBrush * = 0);
+void qDrawShadeRect(QPainter *,const QRect &,const QColorGroup &,bool = 0,
+ int = 1,int = 0,const QBrush * = 0);
+
+void qDrawShadePanel(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ int = 1,const QBrush * = 0);
+void qDrawShadePanel(QPainter *,const QRect &,const QColorGroup &,bool = 0,
+ int = 1,const QBrush * = 0);
+
+void qDrawWinButton(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+void qDrawWinButton(QPainter *,const QRect &,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+
+void qDrawWinPanel(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+void qDrawWinPanel(QPainter *,const QRect &,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+
+void qDrawPlainRect(QPainter *,int,int,int,int,const QColor &,int = 1,
+ const QBrush * = 0);
+void qDrawPlainRect(QPainter *,const QRect &,const QColor &,int = 1,
+ const QBrush * = 0);
+
+%If (- Qt_2_00)
+QRect qItemRect(QPainter *,GUIStyle,int,int,int,int,int,bool,const QPixmap *,
+ const char *,int = -1);
+
+void qDrawItem(QPainter *,GUIStyle,int,int,int,int,int,const QColorGroup &,bool,
+ const QPixmap *,const char *,int = -1);
+
+enum ArrowType {
+ UpArrow,
+ DownArrow,
+ LeftArrow,
+ RightArrow
+};
+
+void qDrawArrow(QPainter *,ArrowType,GUIStyle,bool,int,int,int,int,
+ const QColorGroup &,bool);
+%End
diff --git a/python/pyqt/sip/qt/qdropsite.sip b/python/pyqt/sip/qt/qdropsite.sip
new file mode 100644
index 00000000..a2c11dee
--- /dev/null
+++ b/python/pyqt/sip/qt/qdropsite.sip
@@ -0,0 +1,51 @@
+// This is the SIP interface definition for QDropSite.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDropSite</Title>
+<Para>
+<Literal>QDropSite</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_DRAGANDDROP)
+
+class QDropSite
+{
+%TypeHeaderCode
+#include <qdropsite.h>
+%End
+
+public:
+ QDropSite(QWidget *);
+
+%If (- Qt_2_00)
+ virtual void dragEnterEvent(QDragEnterEvent *);
+ virtual void dragMoveEvent(QDragMoveEvent *);
+ virtual void dragLeaveEvent(QDragLeaveEvent *);
+ virtual void dropEvent(QDropEvent *);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qerrormessage.sip b/python/pyqt/sip/qt/qerrormessage.sip
new file mode 100644
index 00000000..1f31264c
--- /dev/null
+++ b/python/pyqt/sip/qt/qerrormessage.sip
@@ -0,0 +1,57 @@
+// This is the SIP interface definition for QErrorMessage.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QErrorMessage (Qt v3+)</Title>
+<Para>
+<Literal>QErrorMessage</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QErrorMessage : QDialog
+{
+%TypeHeaderCode
+#include <qerrormessage.h>
+%End
+
+public:
+ QErrorMessage(QWidget * /TransferThis/,const char * = 0);
+
+ static QErrorMessage *qtHandler();
+
+public slots:
+ void message(const QString &);
+
+protected:
+ void done(int);
+
+private:
+%If (Qt_3_1_0 -)
+ QErrorMessage(const QErrorMessage &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qevent.sip b/python/pyqt/sip/qt/qevent.sip
new file mode 100644
index 00000000..d4db7057
--- /dev/null
+++ b/python/pyqt/sip/qt/qevent.sip
@@ -0,0 +1,1235 @@
+// This is the SIP interface definition for QEvent, QChildEvent, QCloseEvent,
+// QIconDragEvent, QContextMenuEvent, QCustomEvent, QDragEnterEvent,
+// QDragLeaveEvent, QDragMoveEvent, QDropEvent, QFocusEvent, QHideEvent,
+// QIMEvent, QIMComposeEvent, QKeyEvent, QMouseEvent, QMoveEvent, QPaintEvent,
+// QResizeEvent, QShowEvent, QTabletEvent, QTimerEvent, QWheelEvent.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QEvent</Title>
+<Para>
+<Literal>QEvent</Literal> is fully implemented.
+</Para>
+<Para>
+Instances of <Literal>QEvent</Literal>s are automatically converted to the
+correct sub-class.
+</Para>
+</Sect2>
+
+<Sect2><Title>QChildEvent</Title>
+<Para>
+<Literal>QChildEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCloseEvent</Title>
+<Para>
+<Literal>QCloseEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDragEvent (Qt v3.3+)</Title>
+<Para>
+<Literal>QIconDragEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QContextMenuEvent (Qt v3+)</Title>
+<Para>
+<Literal>QContextMenuEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCustomEvent</Title>
+<Para>
+<Literal>QCustomEvent</Literal> is fully implemented. Any Python object can be
+passed as the event data and its reference count is increased.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragEnterEvent</Title>
+<Para>
+<Literal>QDragEnterEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragLeaveEvent</Title>
+<Para>
+<Literal>QDragLeaveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDragMoveEvent</Title>
+<Para>
+<Literal>QDragMoveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDropEvent</Title>
+<Para>
+<Literal>QDropEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFocusEvent</Title>
+<Para>
+<Literal>QFocusEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHideEvent</Title>
+<Para>
+<Literal>QHideEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIMComposeEvent (Qt v3.1+)</Title>
+<Para>
+<Literal>QIMComposeEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIMEvent (Qt v3+)</Title>
+<Para>
+<Literal>QIMEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QKeyEvent</Title>
+<Para>
+<Literal>QKeyEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMouseEvent</Title>
+<Para>
+<Literal>QMouseEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMoveEvent</Title>
+<Para>
+<Literal>QMoveEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPaintEvent</Title>
+<Para>
+<Literal>QPaintEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QResizeEvent</Title>
+<Para>
+<Literal>QResizeEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QShowEvent</Title>
+<Para>
+<Literal>QShowEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTabletEvent (Qt v3+)</Title>
+<Para>
+<Literal>QTabletEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTimerEvent</Title>
+<Para>
+<Literal>QTimerEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWheelEvent (Qt v2+)</Title>
+<Para>
+<Literal>QWheelEvent</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qevent.h>
+%End
+
+
+%If (- Qt_2_00)
+
+const int Event_None;
+const int Event_Timer;
+const int Event_MouseButtonPress;
+const int Event_MouseButtonRelease;
+const int Event_MouseButtonDblClick;
+const int Event_MouseMove;
+const int Event_KeyPress;
+const int Event_KeyRelease;
+const int Event_FocusIn;
+const int Event_FocusOut;
+const int Event_Enter;
+const int Event_Leave;
+const int Event_Paint;
+const int Event_Move;
+const int Event_Resize;
+const int Event_Create;
+const int Event_Destroy;
+const int Event_Show;
+const int Event_Hide;
+const int Event_Close;
+const int Event_Quit;
+const int Event_Accel;
+const int Event_Clipboard;
+const int Event_SockAct;
+const int Event_DragEnter;
+const int Event_DragMove;
+const int Event_DragLeave;
+const int Event_Drop;
+const int Event_DragResponse;
+const int Event_ChildInserted;
+const int Event_ChildRemoved;
+const int Event_LayoutHint;
+const int Event_ActivateControl;
+const int Event_DeactivateControl;
+const int Event_User;
+
+
+enum ButtonState {
+ NoButton = 0x00,
+ LeftButton = 0x01,
+ RightButton = 0x02,
+ MidButton = 0x04,
+ MouseButtonMask = 0x07,
+ ShiftButton = 0x08,
+ ControlButton = 0x10,
+ AltButton = 0x20,
+ KeyButtonMask = 0x38
+};
+
+
+class QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QEvent(int);
+ QEvent(QEvent&);
+
+ int type() const;
+
+%ConvertToSubClassCode
+ switch (sipCpp -> type())
+ {
+ case Event_Timer:
+ sipClass = sipClass_QTimerEvent;
+ break;
+
+ case Event_MouseButtonPress:
+ case Event_MouseButtonRelease:
+ case Event_MouseButtonDblClick:
+ case Event_MouseMove:
+ sipClass = sipClass_QMouseEvent;
+ break;
+
+ case Event_KeyPress:
+ case Event_KeyRelease:
+ sipClass = sipClass_QKeyEvent;
+ break;
+
+ case Event_FocusIn:
+ case Event_FocusOut:
+ sipClass = sipClass_QFocusEvent;
+ break;
+
+ case Event_Paint:
+ sipClass = sipClass_QPaintEvent;
+ break;
+
+ case Event_Move:
+ sipClass = sipClass_QMoveEvent;
+ break;
+
+ case Event_Resize:
+ sipClass = sipClass_QResizeEvent;
+ break;
+
+ case Event_Close:
+ sipClass = sipClass_QCloseEvent;
+ break;
+
+ case Event_Show:
+ sipClass = sipClass_QShowEvent;
+ break;
+
+ case Event_Hide:
+ sipClass = sipClass_QHideEvent;
+ break;
+
+ case Event_DragMove:
+ sipClass = sipClass_QDragMoveEvent;
+ break;
+
+ case Event_DragEnter:
+ sipClass = sipClass_QDragEnterEvent;
+ break;
+
+ case Event_DragLeave:
+ sipClass = sipClass_QDragLeaveEvent;
+ break;
+
+ case Event_Drop:
+ sipClass = sipClass_QDropEvent;
+ break;
+
+ case Event_ChildInserted:
+ case Event_ChildRemoved:
+ sipClass = sipClass_QChildEvent;
+ break;
+
+ default:
+ sipClass = NULL;
+ }
+%End
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QEvent : Qt
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ enum Type
+ {
+ None,
+ Timer,
+ MouseButtonPress,
+ MouseButtonRelease,
+ MouseButtonDblClick,
+ MouseMove,
+ KeyPress,
+ KeyRelease,
+ FocusIn,
+ FocusOut,
+ Enter,
+ Leave,
+ Paint,
+ Move,
+ Resize,
+ Create,
+ Destroy,
+ Show,
+ Hide,
+ Close,
+ Quit,
+%If (Qt_2_1_0 -)
+ Reparent,
+ ShowMinimized,
+ ShowNormal,
+ WindowActivate,
+ WindowDeactivate,
+ ShowToParent,
+ HideToParent,
+ ShowMaximized,
+%End
+%If (Qt_3_0_0 -)
+ ShowFullScreen,
+%End
+ Accel,
+ Wheel,
+ AccelAvailable,
+%If (Qt_2_1_0 -)
+ CaptionChange,
+ IconChange,
+ ParentFontChange,
+ ApplicationFontChange,
+ ParentPaletteChange,
+ ApplicationPaletteChange,
+%End
+%If (Qt_3_0_0 -)
+ PaletteChange,
+%End
+ Clipboard,
+%If (Qt_2_2_0 -)
+ Speech,
+%End
+ SockAct,
+%If (Qt_2_2_0 -)
+ AccelOverride,
+%End
+%If (Qt_3_0_0 -)
+ DeferredDelete,
+%End
+ DragEnter,
+ DragMove,
+ DragLeave,
+ Drop,
+ DragResponse,
+ ChildInserted,
+ ChildRemoved,
+ LayoutHint,
+%If (Qt_2_2_0 -)
+ ShowWindowRequest,
+%End
+%If (Qt_3_3_0 -)
+ WindowBlocked,
+ WindowUnblocked,
+%End
+ ActivateControl,
+ DeactivateControl,
+%If (Qt_2_1_0 - Qt_2_2_0)
+ Configure,
+ ConfigureLayout,
+%End
+%If (Qt_3_0_0 -)
+ ContextMenu,
+ IMStart,
+ IMCompose,
+ IMEnd,
+ Accessibility,
+%End
+%If (Qt_3_0_0 - Qt_3_1_0)
+ Tablet,
+%End
+%If (Qt_3_1_0 -)
+ TabletMove,
+ LocaleChange,
+ LanguageChange,
+ LayoutDirectionChange,
+ Style,
+ TabletPress,
+ TabletRelease,
+%End
+%If (Qt_3_3_0 -)
+ OkRequest,
+ HelpRequest,
+ IconDrag,
+ WindowStateChange,
+%End
+ User,
+%If (Qt_3_0_0 -)
+ MaxUser,
+%End
+ };
+
+ QEvent(Type);
+ QEvent(QEvent&);
+ virtual ~QEvent();
+
+ Type type() const;
+%If (Qt_3_0_0 -)
+ bool spontaneous() const;
+%End
+
+%ConvertToSubClassCode
+ switch (sipCpp -> type())
+ {
+ case QEvent::Timer:
+ sipClass = sipClass_QTimerEvent;
+ break;
+
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseButtonDblClick:
+ case QEvent::MouseMove:
+ sipClass = sipClass_QMouseEvent;
+ break;
+
+ case QEvent::Accel:
+#if QT_VERSION >= 220
+ case QEvent::AccelOverride:
+#endif
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ sipClass = sipClass_QKeyEvent;
+ break;
+
+ case QEvent::FocusIn:
+ case QEvent::FocusOut:
+ sipClass = sipClass_QFocusEvent;
+ break;
+
+ case QEvent::Paint:
+ sipClass = sipClass_QPaintEvent;
+ break;
+
+ case QEvent::Move:
+ sipClass = sipClass_QMoveEvent;
+ break;
+
+ case QEvent::Resize:
+ sipClass = sipClass_QResizeEvent;
+ break;
+
+ case QEvent::Close:
+ sipClass = sipClass_QCloseEvent;
+ break;
+
+#if QT_VERSION >= 0x030300
+ case QEvent::IconDrag:
+ sipClass = sipClass_QIconDragEvent;
+ break;
+#endif
+
+ case QEvent::Wheel:
+ sipClass = sipClass_QWheelEvent;
+ break;
+
+ case QEvent::Show:
+ sipClass = sipClass_QShowEvent;
+ break;
+
+ case QEvent::Hide:
+ sipClass = sipClass_QHideEvent;
+ break;
+
+#if defined(SIP_FEATURE_Qt_DRAGANDDROP)
+ case QEvent::DragMove:
+ sipClass = sipClass_QDragMoveEvent;
+ break;
+
+ case QEvent::DragEnter:
+ sipClass = sipClass_QDragEnterEvent;
+ break;
+
+ case QEvent::DragLeave:
+ sipClass = sipClass_QDragLeaveEvent;
+ break;
+
+ case QEvent::Drop:
+ sipClass = sipClass_QDropEvent;
+ break;
+#endif
+
+ case QEvent::ChildInserted:
+ case QEvent::ChildRemoved:
+ sipClass = sipClass_QChildEvent;
+ break;
+
+#if QT_VERSION >= 0x030000
+ case QEvent::ContextMenu:
+ sipClass = sipClass_QContextMenuEvent;
+ break;
+
+ case QEvent::IMStart:
+ case QEvent::IMEnd:
+ sipClass = sipClass_QIMEvent;
+ break;
+#endif
+
+#if QT_VERSION >= 0x030000 && QT_VERSION < 0x030100
+ case QEvent::IMCompose:
+ sipClass = sipClass_QIMEvent;
+ break;
+
+ case QEvent::Tablet:
+ sipClass = sipClass_QTabletEvent;
+ break;
+#endif
+
+#if QT_VERSION >= 0x030100
+ case QEvent::IMCompose:
+ sipClass = sipClass_QIMComposeEvent;
+ break;
+
+ case QEvent::TabletMove:
+ case QEvent::TabletPress:
+ case QEvent::TabletRelease:
+ sipClass = sipClass_QTabletEvent;
+ break;
+#endif
+
+ default:
+ sipClass = (sipCpp -> type() < QEvent::User ?
+ sipClass_QEvent :
+ sipClass_QCustomEvent);
+ }
+%End
+};
+
+%End
+
+
+class QTimerEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QTimerEvent(int);
+
+ int timerId() const;
+};
+
+
+class QMouseEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QMouseEvent(int,const QPoint &,int,int);
+ QMouseEvent(int,const QPoint &,const QPoint &,int,int);
+%End
+%If (Qt_2_00 -)
+ QMouseEvent(Type,const QPoint &,int,int);
+ QMouseEvent(Type,const QPoint &,const QPoint &,int,int);
+%End
+
+ const QPoint &pos() const;
+ const QPoint &globalPos() const;
+ int x() const;
+ int y() const;
+ int globalX() const;
+ int globalY() const;
+%If (- Qt_2_00)
+ int button() const;
+ int state() const;
+%End
+%If (Qt_2_00 -)
+ ButtonState button() const;
+ ButtonState state() const;
+ ButtonState stateAfter() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+%End
+};
+
+
+%If (Qt_2_00 -)
+
+class QWheelEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QWheelEvent(const QPoint &,int,int);
+ QWheelEvent(const QPoint &,const QPoint &,int,int);
+%End
+%If (Qt_3_0_0 -)
+ QWheelEvent(const QPoint &,int,int,Orientation = Vertical);
+ QWheelEvent(const QPoint &,const QPoint &,int,int,
+ Orientation = Vertical);
+%End
+
+ int delta() const;
+ const QPoint &pos() const;
+ const QPoint &globalPos() const;
+ int x() const;
+ int y() const;
+ int globalX() const;
+ int globalY() const;
+ ButtonState state() const;
+%If (Qt_3_0_0 -)
+ Orientation orientation() const;
+%End
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QTabletEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ enum TabletDevice {
+ NoDevice,
+ Puck,
+ Stylus,
+ Eraser
+ };
+
+%If (- Qt_3_1_0)
+ QTabletEvent(const QPoint &,int,int,int,int,const QPair<int,int> &);
+%End
+%If (Qt_3_1_0 -)
+ QTabletEvent(Type,const QPoint &,const QPoint &,int,int,int,int,
+ const QPair<int,int> &);
+%End
+ QTabletEvent(const QPoint &,const QPoint &,int,int,int,int,
+ const QPair<int,int> &);
+
+ int pressure() const;
+ int xTilt() const;
+ int yTilt() const;
+ const QPoint &pos() const;
+ const QPoint &globalPos() const;
+ int x() const;
+ int y() const;
+ int globalX() const;
+ int globalY() const;
+ TabletDevice device() const;
+ int isAccepted() const;
+ void accept();
+ void ignore();
+ QPair<int,int> uniqueId();
+};
+
+%End
+
+
+class QKeyEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QKeyEvent(int,int,int,int);
+%End
+%If (Qt_2_00 -)
+ QKeyEvent(Type,int,int,int,const QString & = QString::null,bool = 0,
+ ushort = 1);
+%End
+
+ int key() const;
+ int ascii() const;
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+
+%If (- Qt_2_00)
+ int state() const;
+%End
+
+%If (Qt_2_00 -)
+ ButtonState state() const;
+ ButtonState stateAfter() const;
+ QString text() const;
+ bool isAutoRepeat() const;
+ int count() const;
+%End
+};
+
+
+class QFocusEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QFocusEvent(int);
+%End
+%If (Qt_2_00 -)
+ QFocusEvent(Type);
+%End
+
+ bool gotFocus() const;
+ bool lostFocus() const;
+
+%If (Qt_2_1_0 -)
+%If (- Qt_3_0_0)
+ enum Reason {
+ Mouse,
+ Tab,
+ ActiveWindow,
+ Popup,
+ Shortcut,
+ Other
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Reason {
+ Mouse,
+ Tab,
+ Backtab,
+ ActiveWindow,
+ Popup,
+ Shortcut,
+ Other
+ };
+%End
+
+ static Reason reason();
+ static void setReason(Reason);
+ static void resetReason();
+%End
+};
+
+
+class QPaintEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QPaintEvent(const QRect &);
+%End
+%If (Qt_2_00 -)
+ QPaintEvent(const QRegion &,bool = 1);
+ QPaintEvent(const QRect &,bool = 1);
+%End
+%If (Qt_3_3_0 -)
+ QPaintEvent(const QRegion &,const QRect &,bool = 1);
+%End
+
+ const QRect &rect() const;
+%If (Qt_2_00 -)
+ const QRegion &region() const;
+ bool erased() const;
+%End
+};
+
+
+class QMoveEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QMoveEvent(const QPoint &,const QPoint &);
+
+ const QPoint &pos() const;
+ const QPoint &oldPos() const;
+};
+
+
+class QResizeEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QResizeEvent(const QSize &,const QSize &);
+
+ const QSize &size() const;
+ const QSize &oldSize() const;
+};
+
+
+class QCloseEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QCloseEvent();
+
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+};
+
+
+%If (Qt_3_3_0 -)
+
+class QIconDragEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QIconDragEvent();
+
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+};
+
+%End
+
+
+class QShowEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QShowEvent(bool);
+
+ bool spontaneous() const;
+%End
+%If (Qt_3_0_0 -)
+ QShowEvent();
+%End
+};
+
+
+class QHideEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QHideEvent(bool);
+
+ bool spontaneous() const;
+%End
+%If (Qt_3_0_0 -)
+ QHideEvent();
+%End
+};
+
+
+%If (Qt_3_0_0 -)
+
+class QContextMenuEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ enum Reason {
+ Mouse,
+ Keyboard,
+ Other
+ };
+
+ QContextMenuEvent(Reason,const QPoint &,const QPoint &,int);
+ QContextMenuEvent(Reason,const QPoint &,int);
+
+ int x() const;
+ int y() const;
+ int globalX() const;
+ int globalY() const;
+
+ const QPoint &pos() const;
+ const QPoint &globalPos() const;
+
+ ButtonState state() const;
+ bool isAccepted() const;
+ bool isConsumed() const;
+ void consume();
+ void accept();
+ void ignore();
+ Reason reason() const;
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QIMEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QIMEvent(Type,const QString &,int);
+
+ const QString &text() const;
+ int cursorPos() const;
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+%If (Qt_3_1_0 -)
+ int selectionLength() const;
+%End
+};
+
+%End
+
+
+%If (Qt_3_1_0 -)
+
+class QIMComposeEvent : QIMEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QIMComposeEvent(Type,const QString &,int,int);
+};
+
+%End
+
+
+%If (- Qt_2_00)
+
+class QDropEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDropEvent(const QPoint &);
+
+ const QPoint &pos() const;
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+ QByteArray data(const char *);
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_DRAGANDDROP)
+
+class QDropEvent : QEvent, QMimeSource
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDropEvent(const QPoint &,Type = Drop);
+
+ const QPoint &pos() const;
+ bool isAccepted() const;
+ void accept(bool = 1);
+ void ignore();
+ bool isActionAccepted() const;
+ void acceptAction(bool = 1);
+
+ enum Action
+ {
+ Copy,
+ Link,
+ Move,
+ Private,
+ UserAction = 100
+ };
+
+ void setAction(Action);
+ Action action() const;
+ QWidget *source() const;
+ const char *format(int = 0) const;
+ QByteArray encodedData(const char *) const;
+ bool provides(const char *) const;
+ QByteArray data(const char *) const;
+ void setPoint(const QPoint &);
+};
+
+%End
+%End
+
+
+%If (- Qt_2_00)
+
+class QDragMoveEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDragMoveEvent(const QPoint &);
+
+ const QPoint &pos() const;
+ bool isAccepted() const;
+ void accept();
+ void ignore();
+ void accept(const QRect &);
+ void ignore(const QRect &);
+ QRect answerRect() const;
+ const char *format(int = 0);
+ bool provides(const char *);
+ QByteArray data(const char *);
+
+protected:
+ QDragMoveEvent(const QPoint &,int);
+};
+
+%End
+
+
+%If (Qt_DRAGANDDROP)
+%If (Qt_2_00 -)
+
+class QDragMoveEvent : QDropEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDragMoveEvent(const QPoint &,Type = DragMove);
+
+ QRect answerRect() const;
+ void accept(bool = 1);
+ void accept(const QRect &);
+ void ignore(const QRect &);
+ void ignore();
+};
+
+%End
+
+
+class QDragEnterEvent : QDragMoveEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDragEnterEvent(const QPoint &);
+};
+
+
+class QDragLeaveEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+ QDragLeaveEvent();
+};
+
+%End
+
+
+class QChildEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QChildEvent(int,QWidget *);
+%End
+%If (Qt_2_00 -)
+ QChildEvent(Type,QObject *);
+%End
+
+%If (- Qt_2_00)
+ QWidget *child() const;
+%End
+%If (Qt_2_00 -)
+ QObject *child() const;
+%End
+ bool inserted() const;
+ bool removed() const;
+};
+
+
+class QCustomEvent : QEvent
+{
+%TypeHeaderCode
+#include <qevent.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QCustomEvent(int,SIP_PYOBJECT /Transfer/);
+%End
+%If (Qt_2_00 -)
+ QCustomEvent(Type,SIP_PYOBJECT /Transfer/);
+%End
+%If (Qt_2_1_0 -)
+ QCustomEvent(int);
+%End
+ ~QCustomEvent();
+%VirtualCatcherCode
+ // We need to garbage collect any current data.
+
+ PyObject *old = reinterpret_cast<PyObject *>(data());
+
+ SIP_BLOCK_THREADS
+ Py_XDECREF(old);
+ SIP_UNBLOCK_THREADS
+%End
+
+ SIP_PYOBJECT data() const;
+%MethodCode
+ // We need to cast the result.
+
+ sipRes = reinterpret_cast<PyObject *>(sipCpp -> QCustomEvent::data());
+
+ // In case the event has been created from C++ code.
+ if (!sipRes)
+ sipRes = Py_None;
+
+ Py_INCREF(sipRes);
+%End
+
+%If (Qt_2_1_0 -)
+ void setData(SIP_PYOBJECT /Transfer/);
+%MethodCode
+ // We need to garbage collect any current data.
+
+ PyObject *old = reinterpret_cast<PyObject *>(sipCpp -> QCustomEvent::data());
+ sipCpp -> QCustomEvent::setData(a0);
+
+ Py_XDECREF(old);
+%End
+%End
+
+%GCTraverseCode
+ // Support the Python garbage collector. Although it's not obviously
+ // documented, we can't release the GIL in traverse code.
+
+ PyObject *obj = reinterpret_cast<PyObject *>(sipCpp -> QCustomEvent::data());
+
+ if (obj)
+ sipRes = sipVisit(obj, sipArg);
+ else
+ sipRes = 0;
+%End
+
+%GCClearCode
+ // Support the Python garbage collector.
+
+ PyObject *obj = reinterpret_cast<PyObject *>(sipCpp -> QCustomEvent::data());
+
+ sipCpp -> QCustomEvent::setData(0);
+
+ Py_XDECREF(obj);
+
+ sipRes = 0;
+%End
+};
diff --git a/python/pyqt/sip/qt/qeventloop.sip b/python/pyqt/sip/qt/qeventloop.sip
new file mode 100644
index 00000000..22d7a2cd
--- /dev/null
+++ b/python/pyqt/sip/qt/qeventloop.sip
@@ -0,0 +1,89 @@
+// This is the SIP interface definition for QEventLoop.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QEventLoop (Qt v3.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_1_0 -)
+
+class QEventLoop : QObject
+{
+%TypeHeaderCode
+#include <qeventloop.h>
+%End
+
+public:
+ QEventLoop(QObject * /TransferThis/ = 0,const char * = 0);
+
+ enum ProcessEvents {
+ AllEvents,
+ ExcludeUserInput,
+ ExcludeSocketNotifiers,
+ WaitForMore
+ };
+
+ typedef uint ProcessEventsFlags;
+
+ void processEvents(ProcessEventsFlags,int) /ReleaseGIL/;
+ virtual bool processEvents(ProcessEventsFlags) /ReleaseGIL/;
+
+ virtual bool hasPendingEvents() const;
+
+ virtual void registerSocketNotifier(QSocketNotifier *);
+ virtual void unregisterSocketNotifier(QSocketNotifier *);
+%If (Qt_3_1_1 -)
+ // These were present in the X11 version of Qt v3.1.0 but didn't make
+ // it to the Windows version until Qt v3.1.1.
+ void setSocketNotifierPending(QSocketNotifier *);
+ int activateSocketNotifiers();
+
+ int activateTimers();
+ int timeToWait() const;
+%End
+
+ virtual int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+ virtual void exit(int = 0);
+
+ virtual int enterLoop();
+ virtual void exitLoop();
+ virtual int loopLevel() const;
+
+ virtual void wakeUp();
+
+signals:
+ void awake();
+ void aboutToBlock();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qfile.sip b/python/pyqt/sip/qt/qfile.sip
new file mode 100644
index 00000000..f87685c7
--- /dev/null
+++ b/python/pyqt/sip/qt/qfile.sip
@@ -0,0 +1,310 @@
+// This is the SIP interface definition for QFile.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFile</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>open</Function></FuncDef>
+ <ParamDef>int <Parameter>m</Parameter></ParamDef>
+ <ParamDef>FILE *<Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readLine</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>setDecodingFunction</Function></FuncDef>
+ <ParamDef>EncoderFn <Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>setEncodingFunction</Function></FuncDef>
+ <ParamDef>EncoderFn <Parameter>f</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+%End
+
+
+class QFile : QIODevice
+{
+%TypeHeaderCode
+#include <qfile.h>
+%End
+
+public:
+ QFile();
+%If (- Qt_2_00)
+ QFile(const char *);
+%End
+%If (Qt_2_00 -)
+ QFile(const QString &);
+%End
+
+%If (- Qt_2_00)
+ const char *name() const;
+ void setName(const char *);
+%End
+%If (Qt_2_00 -)
+ QString name() const;
+ void setName(const QString &);
+%End
+
+%If (Qt_2_00 -)
+ static QCString encodeName(const QString &);
+ static QString decodeName(const QCString &);
+// static void setEncodingFunction(EncoderFn);
+// static void setDecodingFunction(DecoderFn);
+%End
+
+ bool exists() const;
+%If (- Qt_2_00)
+ static bool exists(const char *);
+%End
+%If (Qt_2_00 -)
+ static bool exists(const QString &);
+%End
+
+ bool remove();
+%If (- Qt_2_00)
+ static bool remove(const char *);
+%End
+%If (Qt_2_00 -)
+ static bool remove(const QString &);
+%End
+
+ bool open(int) /ReleaseGIL/;
+// bool open(int,FILE *) /ReleaseGIL/;
+ bool open(int,int) /ReleaseGIL/;
+ void close();
+ void flush() /ReleaseGIL/;
+
+%If (- Qt_3_0_0)
+ uint size() const;
+ int at() const;
+ bool at(int);
+%End
+%If (Qt_3_0_0 -)
+ Offset size() const;
+ Offset at() const;
+ bool at(Offset);
+%End
+ bool atEnd() const;
+
+%If (- Qt_3_0_0)
+ SIP_PYOBJECT readBlock(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QFile::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+ int writeBlock(const char * /Array/,uint /ArraySize/) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ SIP_PYOBJECT readBlock(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QFile::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+
+ Q_LONG writeBlock(const char * /Array/,
+ Q_ULONG /ArraySize/) /ReleaseGIL/;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ int writeBlock(const QByteArray &) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ Q_LONG writeBlock(const QByteArray &) /ReleaseGIL/;
+%End
+
+%If (- Qt_3_0_0)
+ SIP_PYOBJECT readLine(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QFile::readLine(buf,a0) : sipCpp -> readLine(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%End
+%If (Qt_3_0_0 -)
+ SIP_PYOBJECT readLine(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QFile::readLine(buf,a0) : sipCpp -> readLine(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ int readLine(QString &,uint) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ Q_LONG readLine(QString &,Q_ULONG) /ReleaseGIL/;
+%End
+
+ int getch();
+ int putch(int);
+ int ungetch(int);
+
+ int handle() const;
+
+%If (Qt_3_2_0 -)
+ QString errorString() const;
+%End
+
+protected:
+%If (Qt_3_2_0 -)
+ void setErrorString(const QString &);
+%End
+
+private:
+ QFile(const QFile &);
+};
diff --git a/python/pyqt/sip/qt/qfiledialog.sip b/python/pyqt/sip/qt/qfiledialog.sip
new file mode 100644
index 00000000..611387a3
--- /dev/null
+++ b/python/pyqt/sip/qt/qfiledialog.sip
@@ -0,0 +1,361 @@
+// This is the SIP interface definition for QFileDialog, QFileIconProvider and
+// QFilePreview.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFileDialog</Title>
+<Para>
+<Literal>QFileDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFileIconProvider</Title>
+<Para>
+<Literal>QFileIconProvider</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QFilePreview</Title>
+<Para>
+<Literal>QFilePreview</Literal> is fully implemented. However it cannot be
+used from Python in the same way as it is used from C++ because PyQt does not
+support multiple inheritance involving more than one wrapped class. A trick
+that seems to work is to use composition rather than inheritance as in the
+following code fragment.
+</Para>
+<ProgramListing>
+class FilePreview(QFilePreview):
+ pass
+
+class Preview(QLabel):
+ def __init__(self, parent=None):
+ QLabel.__init__(self, parent)
+ self.preview = FilePreview()
+ self.preview.previewUrl = self.previewUrl
+</ProgramListing>
+<Para>
+Note that QFilePreview cannot be instantiated directly because it is abstract.
+Thanks to Hans-Peter Jansen for this trick.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_FILEDIALOG)
+
+class QFileIconProvider : QObject
+{
+%TypeHeaderCode
+#include <qfiledialog.h>
+%End
+
+public:
+ QFileIconProvider(QObject * /TransferThis/ = 0,const char * = 0);
+
+ virtual const QPixmap *pixmap(const QFileInfo &);
+
+private:
+%If (Qt_2_1_0 -)
+ QFileIconProvider(const QFileIconProvider &);
+%End
+};
+
+
+%If (Qt_2_1_0 -)
+class QFilePreview
+{
+%TypeHeaderCode
+#include <qfiledialog.h>
+%End
+
+public:
+ QFilePreview();
+
+ virtual void previewUrl(const QUrl &) = 0;
+};
+%End
+
+
+class QFileDialog : QDialog
+{
+%TypeHeaderCode
+#include <qfiledialog.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QFileDialog(const char *,const char * = 0,QWidget * /TransferThis/ = 0,
+ const char * = 0,bool = 0);
+%End
+%If (Qt_2_00 -)
+ QFileDialog(const QString &,const QString & = QString::null,
+ QWidget * /TransferThis/ = 0,const char * = 0,bool = 0);
+%End
+ QFileDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0);
+
+%If (- Qt_2_00)
+ static QString getOpenFileName(const char * = 0,const char * = 0,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QString getSaveFileName(const char * = 0,const char * = 0,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QString getExistingDirectory(const char * = 0,QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QStrList getOpenFileNames(const char * = 0,const char * = 0,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ static QString getOpenFileName(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QString getSaveFileName(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QString getExistingDirectory(const QString & = QString::null,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+ static QStringList getOpenFileNames(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,
+ const char * = 0) /ReleaseGIL/;
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ static QString getOpenFileName(const QString &,const QString &,
+ QWidget *,const char *,
+ const QString &) /ReleaseGIL/;
+ static QString getSaveFileName(const QString &,const QString &,
+ QWidget *,const char *,
+ const QString &) /ReleaseGIL/;
+ static QString getExistingDirectory(const QString &,QWidget *,
+ const char *,
+ const QString &) /ReleaseGIL/;
+ static QStringList getOpenFileNames(const QString &,const QString &,
+ QWidget *,const char *,
+ const QString &) /ReleaseGIL/;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ static QString getExistingDirectory(const QString &,QWidget *,
+ const char *,
+ const QString &,bool) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ static QString getOpenFileName(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,const char * = 0,
+ const QString & = QString::null,
+ QString * = 0,bool = 1) /ReleaseGIL/;
+
+ static QString getSaveFileName(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,const char * = 0,
+ const QString & = QString::null,
+ QString * = 0,bool = 1) /ReleaseGIL/;
+
+ static QString getExistingDirectory(const QString & = QString::null,
+ QWidget * = 0,const char * = 0,
+ const QString & = QString::null,
+ bool = 1,bool = 1) /ReleaseGIL/;
+
+ static QStringList getOpenFileNames(const QString & = QString::null,
+ const QString & = QString::null,
+ QWidget * = 0,const char * = 0,
+ const QString & = QString::null,
+ QString * = 0,
+ bool = 1) /ReleaseGIL/;
+
+%End
+
+ static void setIconProvider(QFileIconProvider *);
+ static QFileIconProvider *iconProvider();
+
+ QString selectedFile() const;
+%If (Qt_2_1_0 -)
+ QString selectedFilter() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setSelectedFilter(const QString &);
+ virtual void setSelectedFilter(int);
+%End
+
+%If (- Qt_2_00)
+ void setSelection(const char *);
+%End
+%If (Qt_2_00 -)
+ void setSelection(const QString &);
+%End
+
+%If (Qt_2_1_0 -)
+ void selectAll(bool);
+
+ QStringList selectedFiles() const;
+%End
+
+%If (- Qt_2_00)
+ const char *dirPath() const;
+%End
+%If (Qt_2_00 -)
+ QString dirPath() const;
+%End
+
+ void setDir(const QDir &);
+ const QDir* dir() const;
+
+%If (Qt_2_1_0 -)
+ void setShowHiddenFiles(bool);
+ bool showHiddenFiles() const;
+%End
+
+ void rereadDir() /ReleaseGIL/;
+%If (Qt_2_1_0 -)
+ void resortDir();
+%End
+
+%If (- Qt_2_2_0)
+ enum Mode {
+ AnyFile,
+ ExistingFile,
+ Directory,
+ ExistingFiles
+ };
+%End
+%If (Qt_2_2_0 -)
+ enum Mode {
+ AnyFile,
+ ExistingFile,
+ Directory,
+ ExistingFiles,
+ DirectoryOnly
+ };
+%End
+
+ void setMode(Mode);
+ Mode mode() const;
+
+%If (Qt_2_1_0 -)
+ enum ViewMode {
+ Detail,
+ List
+ };
+
+ enum PreviewMode {
+ NoPreview,
+ Contents,
+ Info
+ };
+
+ void setViewMode(ViewMode);
+ ViewMode viewMode() const;
+ void setPreviewMode(PreviewMode);
+ PreviewMode previewMode() const;
+%End
+
+ bool eventFilter(QObject *,QEvent *);
+
+%If (Qt_2_1_0 -)
+ bool isInfoPreviewEnabled() const;
+ bool isContentsPreviewEnabled() const;
+ void setInfoPreviewEnabled(bool);
+ void setContentsPreviewEnabled(bool);
+
+ void setInfoPreview(QWidget *,QFilePreview *);
+ void setContentsPreview(QWidget *,QFilePreview *);
+
+ QUrl url() const;
+%End
+
+%If (Qt_3_0_0 -)
+ void addFilter(const QString &);
+%End
+
+public slots:
+%If (Qt_2_2_0 -)
+ void done(int);
+%End
+%If (- Qt_2_00)
+ void setDir(const char *);
+%End
+%If (Qt_2_00 -)
+ void setDir(const QString &);
+%End
+%If (Qt_2_1_0 -)
+ void setUrl(const QUrlOperator &);
+%End
+%If (- Qt_2_00)
+ void setFilter(const char *);
+%End
+%If (Qt_2_00 -)
+ void setFilter(const QString &);
+%End
+%If (Qt_2_1_0 -)
+ void setFilters(const QString &);
+%End
+// void setFilters(const char **);
+%If (- Qt_2_00)
+ void setFilters(const QStrList &);
+%End
+%If (Qt_2_00 -)
+ void setFilters(const QStringList &);
+%End
+
+signals:
+%If (- Qt_2_00)
+ void fileHighlighted(const char *);
+ void fileSelected(const char *);
+ void dirEntered(const char *);
+%End
+%If (Qt_2_00 -)
+ void fileHighlighted(const QString &);
+ void fileSelected(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ void filesSelected(const QStringList &);
+%End
+%If (Qt_2_00 -)
+ void dirEntered(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ void filterSelected(const QString &);
+%End
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void keyPressEvent(QKeyEvent *);
+
+ void addWidgets(QLabel *,QWidget *,QPushButton *);
+%If (Qt_2_1_0 -)
+ void addToolButton(QButton *,bool = 0);
+ void addLeftWidget(QWidget *);
+ void addRightWidget(QWidget *);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void addFilter(const QString &);
+%End
+
+private:
+ QFileDialog(const QFileDialog &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qfileinfo.sip b/python/pyqt/sip/qt/qfileinfo.sip
new file mode 100644
index 00000000..3755e317
--- /dev/null
+++ b/python/pyqt/sip/qt/qfileinfo.sip
@@ -0,0 +1,145 @@
+// This is the SIP interface definition for QFileInfo.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFileInfo</Title>
+<Para>
+<Literal>QFileInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QFileInfo
+{
+%TypeHeaderCode
+#include <qfileinfo.h>
+%End
+
+public:
+ enum PermissionSpec {
+%If (Qt_3_2_0 -)
+ ReadOwner, WriteOwner, ExeOwner,
+%End
+ ReadUser, WriteUser, ExeUser,
+ ReadGroup, WriteGroup, ExeGroup,
+ ReadOther, WriteOther, ExeOther
+ };
+
+ QFileInfo();
+%If (- Qt_2_00)
+ QFileInfo(const char *);
+%End
+%If (Qt_2_00 -)
+ QFileInfo(const QString &);
+%End
+ QFileInfo(const QFile &);
+%If (- Qt_2_00)
+ QFileInfo(const QDir &,const char *);
+%End
+%If (Qt_2_00 -)
+ QFileInfo(const QDir &,const QString &);
+%End
+ QFileInfo(const QFileInfo &);
+
+%If (- Qt_2_00)
+ void setFile(const char *);
+%End
+%If (Qt_2_00 -)
+ void setFile(const QString &);
+%End
+ void setFile(const QFile &);
+%If (- Qt_2_00)
+ void setFile(const QDir &,const char *);
+%End
+%If (Qt_2_00 -)
+ void setFile(const QDir &,const QString &);
+%End
+ bool exists() const;
+ void refresh() const;
+ bool caching() const;
+ void setCaching(bool);
+
+%If (- Qt_2_00)
+ const char *filePath() const;
+%End
+%If (Qt_2_00 -)
+ const QString filePath() const;
+%End
+ QString fileName() const;
+ QString absFilePath() const;
+%If (- Qt_3_0_0)
+ QString baseName() const;
+%End
+%If (Qt_3_0_0 -)
+ QString baseName(bool = 1) const;
+%End
+%If (- Qt_2_00)
+ QString extension() const;
+%End
+%If (Qt_2_00 -)
+ QString extension(bool = 1) const;
+%End
+
+ QString dirPath(bool = 0) const;
+ QDir dir(bool = 0) const;
+ bool isReadable() const;
+ bool isWritable() const;
+ bool isExecutable() const;
+%If (Qt_3_1_0 -)
+ bool isHidden() const;
+%End
+
+ bool isRelative() const;
+ bool convertToAbs();
+
+ bool isFile() const;
+ bool isDir() const;
+ bool isSymLink() const;
+
+ QString readLink() const /ReleaseGIL/;
+
+%If (- Qt_2_00)
+ const char *owner() const;
+%End
+%If (Qt_2_00 -)
+ QString owner() const;
+%End
+ uint ownerId() const;
+%If (- Qt_2_00)
+ const char *group() const;
+%End
+%If (Qt_2_00 -)
+ QString group() const;
+%End
+ uint groupId() const;
+
+ bool permission(int) const;
+
+ uint size() const;
+
+%If (Qt_3_0_0 -)
+ QDateTime created() const;
+%End
+ QDateTime lastModified() const;
+ QDateTime lastRead() const;
+};
diff --git a/python/pyqt/sip/qt/qfont.sip b/python/pyqt/sip/qt/qfont.sip
new file mode 100644
index 00000000..b2abfd40
--- /dev/null
+++ b/python/pyqt/sip/qt/qfont.sip
@@ -0,0 +1,441 @@
+// This is the SIP interface definition for QFont.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFont</Title>
+<Para>
+<Literal>QFont</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+%End
+
+
+class QFont
+{
+%TypeHeaderCode
+#include <qfont.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ enum CharSet {
+ Latin1, ISO_8859_1 = Latin1, AnyCharSet,
+ Latin2, ISO_8859_2 = Latin2,
+ Latin3, ISO_8859_3 = Latin3,
+ Latin4, ISO_8859_4 = Latin4,
+ Latin5, ISO_8859_5 = Latin5,
+ Latin6, ISO_8859_6 = Latin6,
+ Latin7, ISO_8859_7 = Latin7,
+ Latin8, ISO_8859_8 = Latin8,
+ Latin9, ISO_8859_9 = Latin9,
+ KOI8R
+ };
+%End
+%If (Qt_2_00 - Qt_2_1_0)
+ enum CharSet {
+ ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
+ ISO_8859_2, Latin2 = ISO_8859_2,
+ ISO_8859_3, Latin3 = ISO_8859_3,
+ ISO_8859_4, Latin4 = ISO_8859_4,
+ ISO_8859_5,
+ ISO_8859_6,
+ ISO_8859_7,
+ ISO_8859_8,
+ ISO_8859_9, Latin5 = ISO_8859_9,
+ ISO_8859_10, Latin6 = ISO_8859_10,
+ ISO_8859_11,
+ ISO_8859_12,
+ ISO_8859_13, Latin7 = ISO_8859_13,
+ ISO_8859_14, Latin8 = ISO_8859_14,
+ ISO_8859_15, Latin9 = ISO_8859_15,
+ KOI8R,
+ Set_Ja, Set_1 = Set_Ja,
+ Set_Ko,
+ Set_Th_TH,
+ Set_Zh,
+ Set_Zh_TW, Set_N = Set_Zh_TW,
+ Unicode
+ };
+%End
+%If (Qt_2_1_0 - Qt_2_2_0)
+ enum CharSet {
+ ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
+ ISO_8859_2, Latin2 = ISO_8859_2,
+ ISO_8859_3, Latin3 = ISO_8859_3,
+ ISO_8859_4, Latin4 = ISO_8859_4,
+ ISO_8859_5,
+ ISO_8859_6,
+ ISO_8859_7,
+ ISO_8859_8,
+ ISO_8859_9, Latin5 = ISO_8859_9,
+ ISO_8859_10, Latin6 = ISO_8859_10,
+ ISO_8859_11,
+ ISO_8859_12,
+ ISO_8859_13, Latin7 = ISO_8859_13,
+ ISO_8859_14, Latin8 = ISO_8859_14,
+ ISO_8859_15, Latin9 = ISO_8859_15,
+ KOI8R,
+ Set_Ja, Set_1 = Set_Ja,
+ Set_Ko,
+ Set_Th_TH,
+ Set_Zh,
+ Set_Zh_TW, Set_N = Set_Zh_TW,
+ Unicode,
+ Set_GBK,
+ Set_Big5
+ };
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ enum CharSet {
+ ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
+ ISO_8859_2, Latin2 = ISO_8859_2,
+ ISO_8859_3, Latin3 = ISO_8859_3,
+ ISO_8859_4, Latin4 = ISO_8859_4,
+ ISO_8859_5,
+ ISO_8859_6,
+ ISO_8859_7,
+ ISO_8859_8,
+ ISO_8859_9, Latin5 = ISO_8859_9,
+ ISO_8859_10, Latin6 = ISO_8859_10,
+ ISO_8859_11,
+ ISO_8859_12,
+ ISO_8859_13, Latin7 = ISO_8859_13,
+ ISO_8859_14, Latin8 = ISO_8859_14,
+ ISO_8859_15, Latin9 = ISO_8859_15,
+ KOI8R,
+ Set_Ja, Set_1 = Set_Ja,
+ Set_Ko,
+ Set_Th_TH,
+ Set_Zh,
+ Set_Zh_TW, Set_N = Set_Zh_TW,
+ Unicode,
+ Set_GBK,
+ Set_Big5,
+ JIS_X_0201 = 0xa0,
+ JIS_X_0208 = 0xc0, Enc16 = JIS_X_0208,
+ KSC_5601,
+ GB_2312,
+ Big5,
+ TSCII
+ };
+%End
+
+ enum StyleHint {
+ Helvetica,
+ Times,
+ Courier,
+ OldEnglish,
+ System,
+ AnyStyle,
+ SansSerif,
+ Serif,
+ TypeWriter,
+ Decorative
+ };
+
+%If (Qt_2_2_0 -)
+ enum StyleStrategy {
+ PreferDefault,
+ PreferBitmap,
+ PreferDevice,
+ PreferOutline,
+ ForceOutline,
+ PreferMatch,
+ PreferQuality,
+%If (Qt_3_0_0 -)
+ PreferAntialias,
+ NoAntialias,
+%End
+%If (Qt_3_2_0 -)
+ OpenGLCompatible,
+%End
+ };
+%End
+
+ enum Weight {
+ Light,
+ Normal,
+ DemiBold,
+ Bold,
+ Black
+ };
+
+%If (Qt_3_2_0 -)
+ enum Stretch {
+ UltraCondensed,
+ ExtraCondensed,
+ Condensed,
+ SemiCondensed,
+ Unstretched,
+ SemiExpanded,
+ Expanded,
+ ExtraExpanded,
+ UltraExpanded
+ };
+%End
+
+ QFont();
+%If (- Qt_2_00)
+ QFont(const char *,int = 12,int = Normal,bool = 0);
+ QFont(const char *,int,int,bool,CharSet);
+%End
+%If (Qt_2_00 - Qt_3_2_0)
+ QFont(const QString &,int = 12,int = Normal,bool = 0);
+%End
+%If (Qt_3_2_0 -)
+ QFont(const QString &,int = 12,int = -1,bool = 0);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QFont(const QString &,int,int,bool,CharSet);
+%End
+ QFont(const QFont &);
+
+%If (- Qt_2_00)
+ const char *family() const;
+ void setFamily(const char *);
+%End
+%If (Qt_2_00 -)
+ QString family() const;
+ void setFamily(const QString &);
+
+ float pointSizeFloat() const;
+ void setPointSizeFloat(float);
+
+ int pixelSize() const;
+ void setPixelSize(int);
+ void setPixelSizeFloat(float);
+%End
+ int pointSize() const;
+ void setPointSize(int);
+
+ int weight() const;
+ void setWeight(int);
+
+ bool bold() const;
+ void setBold(bool);
+
+ bool italic() const;
+ void setItalic(bool);
+
+ bool underline() const;
+ void setUnderline(bool);
+
+%If (Qt_3_2_0 -)
+ bool overline() const;
+ void setOverline(bool);
+%End
+
+ bool strikeOut() const;
+ void setStrikeOut(bool);
+
+ bool fixedPitch() const;
+ void setFixedPitch(bool);
+
+ StyleHint styleHint() const;
+%If (Qt_2_2_0 -)
+ StyleStrategy styleStrategy() const;
+%End
+%If (- Qt_3_0_0)
+ void setStyleHint(StyleHint);
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ void setStyleHint(StyleHint,StyleStrategy);
+%End
+%If (Qt_3_0_0 -)
+ void setStyleHint(StyleHint,StyleStrategy = PreferDefault);
+ void setStyleStrategy(StyleStrategy);
+%End
+
+%If (- Qt_3_0_0)
+ CharSet charSet() const;
+ void setCharSet(CharSet);
+%End
+
+%If (Qt_3_2_0 -)
+ int stretch() const;
+ void setStretch(int);
+%End
+
+ bool rawMode() const;
+ void setRawMode(bool);
+
+ bool exactMatch() const;
+
+ bool operator==(const QFont &) const;
+ bool operator!=(const QFont &) const;
+
+ bool isCopyOf(const QFont &) const;
+
+%If (- Qt_2_00)
+ HANDLE handle(HANDLE = 0);
+ const char *rawName() const;
+ static const QFont &defaultFont();
+ static const char *substitute(const char *);
+ static void insertSubstitution(const char *,const char *);
+ static void removeSubstitution(const char *);
+ static void listSubstitutions(QStrList *);
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ static CharSet charSetForLocale();
+%End
+
+%If (Qt_2_00 -)
+%If (- Qt_3_0_0)
+%If (WS_X11)
+ HANDLE handle() const;
+%End
+%End
+%If (Qt_3_0_0 -)
+%If (WS_X11)
+ Qt::HANDLE handle() const;
+%End
+%End
+ void setRawName(const QString &);
+ QString rawName() const;
+%End
+ QString key() const;
+%If (Qt_3_0_0 -)
+ QString toString() const;
+ bool fromString(const QString &);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ static QString encodingName(CharSet);
+%End
+%If (Qt_2_00 -)
+ static QString substitute(const QString &);
+%If (Qt_3_0_0 -)
+ static QStringList substitutes(const QString &);
+%End
+ static QStringList substitutions();
+ static void insertSubstitution(const QString &,const QString &);
+%If (Qt_3_0_0 -)
+ static void insertSubstitutions(const QString &,const QStringList &);
+%End
+ static void removeSubstitution(const QString &);
+%If (- Qt_3_0_0)
+ static void locale_init();
+%End
+%End
+
+ static void initialize();
+ static void cleanup();
+ static void cacheStatistics();
+
+%If (Qt_3_0_0 -)
+ enum Script {
+ Latin,
+ Greek,
+ Cyrillic,
+ Armenian,
+ Georgian,
+ Runic,
+ Ogham,
+ SpacingModifiers,
+ CombiningMarks,
+
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Khmer,
+
+ Han,
+ Hiragana,
+ Katakana,
+ Hangul,
+ Bopomofo,
+ Yi,
+
+ Ethiopic,
+ Cherokee,
+ CanadianAboriginal,
+ Mongolian,
+
+ CurrencySymbols,
+ LetterlikeSymbols,
+ NumberForms,
+ MathematicalOperators,
+ TechnicalSymbols,
+ GeometricSymbols,
+ MiscellaneousSymbols,
+ EnclosedAndSquare,
+ Braille,
+
+ Unicode,
+
+%If (Qt_3_2_0 -)
+ Tagalog,
+ Hanunoo,
+ Buhid,
+ Tagbanwa,
+
+ KatakanaHalfWidth,
+%End
+
+%If (Qt_3_3_0 -)
+ Limbu,
+ TaiLe,
+%End
+ };
+
+ QString defaultFamily() const;
+ QString lastResortFamily() const;
+ QString lastResortFont() const;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ static QFont defaultFont();
+%End
+%If (- Qt_3_0_0)
+ static void setDefaultFont(const QFont &);
+%End
+
+%If (Qt_3_2_0 -)
+ QFont resolve(const QFont &) const;
+%End
+
+protected:
+ bool dirty() const;
+%If (- Qt_3_0_0)
+ QString defaultFamily() const;
+ QString lastResortFamily() const;
+ QString lastResortFont() const;
+%End
+ int deciPointSize() const;
+};
diff --git a/python/pyqt/sip/qt/qfontdatabase.sip b/python/pyqt/sip/qt/qfontdatabase.sip
new file mode 100644
index 00000000..cacecea7
--- /dev/null
+++ b/python/pyqt/sip/qt/qfontdatabase.sip
@@ -0,0 +1,121 @@
+// This is the SIP interface definition for QFontDatabase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFontDatabase (Qt v2.1+)</Title>
+<Para>
+<Literal>QFontDatabase</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_FONTDATABASE)
+%If (Qt_2_1_0 -)
+
+class QFontDatabase
+{
+%TypeHeaderCode
+#include <qfontdatabase.h>
+%End
+
+public:
+ QFontDatabase();
+
+ static QValueList<int> standardSizes();
+
+%If (- Qt_3_0_0)
+ QStringList charSets(const QString &,bool = 1 ) const;
+ QStringList families(bool = 1) const;
+ QStringList styles(const QString &,
+ const QString & = QString::null) const;
+ QValueList<int> pointSizes(const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null);
+ QValueList<int> smoothSizes(const QString &,const QString &,
+ const QString & = QString::null);
+%End
+%If (Qt_3_0_0 -)
+ QStringList families() const;
+%If (Qt_3_2_0 -)
+ QStringList families(QFont::Script) const;
+%End
+ QStringList styles(const QString &) const;
+ QValueList<int> pointSizes(const QString &,
+ const QString & = QString::null);
+ QValueList<int> smoothSizes(const QString &,const QString &);
+%End
+ QString styleString(const QFont &);
+
+%If (- Qt_3_0_0)
+ QFont font(const QString,const QString &,int,
+ const QString = QString::null);
+
+ bool isBitmapScalable(const QString &,const QString & = QString::null,
+ const QString & = QString::null) const;
+ bool isSmoothlyScalable(const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null) const;
+ bool isScalable(const QString &,const QString & = QString::null,
+ const QString & = QString::null) const;
+%End
+%If (Qt_3_0_0 -)
+ QFont font(const QString,const QString &,int);
+
+ bool isBitmapScalable(const QString &,
+ const QString & = QString::null) const;
+ bool isSmoothlyScalable(const QString &,
+ const QString & = QString::null) const;
+ bool isScalable(const QString &,const QString & = QString::null) const;
+%End
+%If (Qt_2_3_0 - Qt_3_0_0)
+ bool isFixedPitch(const QString &,const QString & = QString::null,
+ const QString & = QString::null) const;
+%End
+%If (Qt_3_0_0 -)
+ bool isFixedPitch(const QString &,
+ const QString & = QString::null) const;
+%End
+
+%If (- Qt_3_0_0)
+ bool italic(const QString &,const QString &,
+ const QString & = QString::null) const;
+ bool bold(const QString &,const QString &,
+ const QString & = QString::null) const;
+ int weight(const QString &,const QString &,
+ const QString & = QString::null) const;
+
+ static QString verboseCharSetName(const QString &);
+ static QString charSetSample(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ bool italic(const QString &,const QString &) const;
+ bool bold(const QString &,const QString &) const;
+ int weight(const QString &,const QString &) const;
+
+ static QString scriptName(QFont::Script);
+ static QString scriptSample(QFont::Script);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qfontdialog.sip b/python/pyqt/sip/qt/qfontdialog.sip
new file mode 100644
index 00000000..9196000e
--- /dev/null
+++ b/python/pyqt/sip/qt/qfontdialog.sip
@@ -0,0 +1,105 @@
+// This is the SIP interface definition for QFontDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFontDialog (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QFont <Function>getFont</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>const QFont &<Parameter>def</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>def</Literal>, <Literal>parent</Literal> and
+<Literal>name</Literal> parameters and returns a tuple containing the
+<Literal>QFont</Literal> result and the <Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QFont <Function>getFont</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>parent</Literal> and <Literal>name</Literal> parameters
+and returns a tuple containing the <Literal>QFont</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_FONTDIALOG)
+
+class QFontDialog : QDialog
+{
+%TypeHeaderCode
+#include <qfontdialog.h>
+%End
+
+public:
+ static QFont getFont(bool *,const QFont &,QWidget * = 0,
+ const char * = 0);
+ static QFont getFont(bool *,QWidget * = 0,const char * = 0);
+
+signals:
+%If (- Qt_3_2_0)
+ void fontSelected(const QFont &);
+ void fontHighlighted(const QFont &);
+%End
+
+protected:
+%If (- Qt_3_2_0)
+ bool eventFilter(QObject *,QEvent *);
+
+ QListBox *familyListBox() const;
+ virtual void updateFamilies();
+
+ QListBox *styleListBox() const;
+ virtual void updateStyles();
+
+ QListBox *sizeListBox() const;
+ virtual void updateSizes();
+
+ QComboBox *scriptCombo() const;
+ virtual void updateScripts();
+%End
+
+protected slots:
+%If (- Qt_3_2_0)
+ void sizeChanged(const QString &);
+%End
+
+private:
+ QFontDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+%If (Qt_2_1_0 -)
+ QFontDialog(const QFontDialog &);
+%End
+ ~QFontDialog();
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qfontinfo.sip b/python/pyqt/sip/qt/qfontinfo.sip
new file mode 100644
index 00000000..d58eab0f
--- /dev/null
+++ b/python/pyqt/sip/qt/qfontinfo.sip
@@ -0,0 +1,70 @@
+// This is the SIP interface definition for QFontInfo.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFontInfo</Title>
+<Para>
+<Literal>QFontInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QFontInfo
+{
+%TypeHeaderCode
+#include <qfontinfo.h>
+%End
+
+public:
+ QFontInfo(const QFont &);
+%If (Qt_3_2_0 -)
+ QFontInfo(const QFont &,QFont::Script);
+%End
+ QFontInfo(const QFontInfo &);
+
+%If (- Qt_2_00)
+ const char *family() const;
+%End
+%If (Qt_2_00 -)
+ QString family() const;
+%End
+%If (Qt_3_0_0 -)
+ int pixelSize() const;
+%End
+ int pointSize() const;
+ bool italic() const;
+ int weight() const;
+ bool bold() const;
+ bool underline() const;
+%If (Qt_3_2_0 -)
+ bool overline() const;
+%End
+ bool strikeOut() const;
+ bool fixedPitch() const;
+ QFont::StyleHint styleHint() const;
+%If (- Qt_3_0_0)
+ QFont::CharSet charSet() const;
+%End
+ bool rawMode() const;
+ bool exactMatch() const;
+};
diff --git a/python/pyqt/sip/qt/qfontmetrics.sip b/python/pyqt/sip/qt/qfontmetrics.sip
new file mode 100644
index 00000000..e5059fb5
--- /dev/null
+++ b/python/pyqt/sip/qt/qfontmetrics.sip
@@ -0,0 +1,220 @@
+// This is the SIP interface definition for QFontMetrics.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFontMetrics</Title>
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>int <Parameter>tabstops</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>tabarray</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>tabarray</Literal> parameter is a Python list of integers.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QSize <Function>size</Function></FuncDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>int <Parameter>tabstops</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>tabarray</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>tabarray</Literal> parameter is a Python list of integers.
+</Para>
+</Sect2>
+%End
+
+
+class QFontMetrics
+{
+%TypeHeaderCode
+#include <qfontmetrics.h>
+%End
+
+public:
+ QFontMetrics(const QFont &);
+%If (Qt_3_2_0 -)
+ QFontMetrics(const QFont &,QFont::Script);
+%End
+ QFontMetrics(const QFontMetrics &);
+
+ int ascent() const;
+ int descent() const;
+ int height() const;
+ int leading() const;
+ int lineSpacing() const;
+ int minLeftBearing() const;
+ int minRightBearing() const;
+ int maxWidth() const;
+%If (- Qt_2_00)
+ bool inFont(char) const;
+ int leftBearing(char) const;
+ int rightBearing(char) const;
+ int width(const char *,int = -1) const;
+ int width(char) const;
+ QRect boundingRect(const char *,int = -1) const;
+ QRect boundingRect(char) const;
+
+ QRect boundingRect(int,int,int,int,int,const char *,int = -1,
+ SIP_PYLIST /AllowNone/ = 0) const;
+%MethodCode
+ int *tabarray;
+
+ if (intListToArray(a8,&tabarray) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QRect(sipCpp -> QFontMetrics::boundingRect(a0,a1,a2,a3,a4,a5,a6,a7,tabarray));
+ Py_END_ALLOW_THREADS
+
+ if (tabarray)
+ sipFree((ANY *)tabarray);
+ }
+%End
+
+ QSize size(int,const char *,int = -1,int = 0,
+ SIP_PYLIST /AllowNone/ = 0) const;
+%MethodCode
+ int *tabarray;
+
+ if (intListToArray(a4,&tabarray) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QSize(sipCpp -> QFontMetrics::size(a0,a1,a2,a3,tabarray));
+ Py_END_ALLOW_THREADS
+
+ if (tabarray)
+ sipFree((ANY *)tabarray);
+ }
+%End
+%End
+%If (Qt_2_00 -)
+ bool inFont(QChar) const;
+ int leftBearing(QChar) const;
+ int rightBearing(QChar) const;
+ int width(const QString &,int = -1) const;
+ int width(QChar) const;
+%If (Qt_3_0_0 -)
+ int charWidth(const QString &,int) const;
+%End
+ QRect boundingRect(const QString &,int = -1) const;
+ QRect boundingRect(QChar) const;
+
+ QRect boundingRect(int,int,int,int,int,const QString &,int = -1,
+ int = 0,SIP_PYLIST /AllowNone/ = 0) const;
+%MethodCode
+ int *tabarray;
+
+ if (intListToArray(a8,&tabarray) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QRect(sipCpp -> QFontMetrics::boundingRect(a0,a1,a2,a3,a4,*a5,a6,a7,tabarray));
+ Py_END_ALLOW_THREADS
+
+ if (tabarray)
+ sipFree((ANY *)tabarray);
+ }
+%End
+
+ QSize size(int,const QString &,int = -1,int = 0,
+ SIP_PYLIST /AllowNone/ = 0) const;
+%MethodCode
+ int *tabarray;
+
+ if (intListToArray(a4,&tabarray) < 0)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = new QSize(sipCpp -> QFontMetrics::size(a0,*a1,a2,a3,tabarray));
+ Py_END_ALLOW_THREADS
+
+ if (tabarray)
+ sipFree((ANY *)tabarray);
+ }
+%End
+%End
+
+ int underlinePos() const;
+%If (Qt_3_2_0 -)
+ int overlinePos() const;
+%End
+ int strikeOutPos() const;
+ int lineWidth() const;
+
+%TypeCode
+// Convert an optional Python list of integers to a zero terminated array.
+// Return a negative value if there was an error.
+static int intListToArray(PyObject *pl,int **ap)
+{
+ int i, nint, *ip;
+
+ // The trivial case.
+ if (!pl || pl == Py_None)
+ {
+ *ap = 0;
+ return 0;
+ }
+
+ nint = PyList_Size(pl);
+
+ if ((*ap = (int *)sipMalloc((nint + 1) * sizeof (int))) == NULL)
+ return -1;
+
+ // Convert the list.
+ PyErr_Clear();
+
+ ip = *ap;
+
+ for (i = 0; i < nint; ++i)
+ {
+ *ip++ = PyInt_AsLong(PyList_GetItem(pl,i));
+
+ if (PyErr_Occurred())
+ {
+ sipFree((ANY *)*ap);
+ return -1;
+ }
+ }
+
+ // Terminate the list.
+ *ip = 0;
+
+ return 0;
+}
+%End
+
+};
diff --git a/python/pyqt/sip/qt/qframe.sip b/python/pyqt/sip/qt/qframe.sip
new file mode 100644
index 00000000..9e2a4e24
--- /dev/null
+++ b/python/pyqt/sip/qt/qframe.sip
@@ -0,0 +1,180 @@
+// This is the SIP interface definition for QFrame.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFrame</Title>
+<Para>
+<Literal>QFrame</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QFrame : QWidget
+{
+%TypeHeaderCode
+#include <qframe.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QFrame(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0,
+ bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ QFrame(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+
+ int frameStyle() const;
+%If (- Qt_2_00)
+ void setFrameStyle(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setFrameStyle(int);
+%End
+
+ int frameWidth() const;
+ QRect contentsRect() const;
+
+%If (- Qt_2_00)
+ bool lineShapesOk() const;
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (- Qt_2_00)
+ enum {
+ NoFrame,
+ Box,
+ Panel,
+ WinPanel,
+ HLine,
+ VLine,
+ MShape,
+ Plain,
+ Raised,
+ Sunken,
+ MShadow
+ };
+%End
+%If (Qt_2_00 -)
+ enum Shape {
+ NoFrame,
+ Box,
+ Panel,
+ WinPanel,
+ HLine,
+ VLine,
+ StyledPanel,
+ PopupPanel,
+%If (Qt_3_0_0 -)
+ MenuBarPanel,
+ ToolBarPanel,
+%End
+%If (Qt_3_0_1 -)
+ LineEditPanel,
+ TabWidgetPanel,
+%End
+%If (Qt_3_1_0 -)
+ GroupBoxPanel,
+%End
+ MShape
+ };
+%End
+
+%If (Qt_2_00 -)
+ enum Shadow {
+ Plain,
+ Raised,
+ Sunken,
+ MShadow
+ };
+%End
+
+%If (- Qt_2_00)
+ int frameShape() const;
+%End
+%If (Qt_2_00 -)
+ Shape frameShape() const;
+ void setFrameShape(Shape);
+%End
+%If (- Qt_2_00)
+ int frameShadow() const;
+%End
+%If (Qt_2_00 -)
+ Shadow frameShadow() const;
+ void setFrameShadow(Shadow);
+%End
+
+ int lineWidth() const;
+%If (- Qt_2_00)
+ void setLineWidth(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setLineWidth(int);
+%End
+
+ int margin() const;
+%If (- Qt_2_00)
+ void setMargin(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMargin(int);
+%End
+
+ int midLineWidth() const;
+%If (- Qt_2_00)
+ void setMidLineWidth(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMidLineWidth(int);
+%End
+
+ QRect frameRect() const;
+%If (Qt_2_00 -)
+ virtual void setFrameRect(const QRect &);
+%End
+
+protected:
+%If (- Qt_2_00)
+ void setFrameRect(const QRect &);
+%End
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+ virtual void drawFrame(QPainter *);
+ virtual void drawContents(QPainter *);
+ virtual void frameChanged();
+%If (Qt_2_00 - Qt_3_0_0)
+ void updateMask();
+ virtual void drawFrameMask(QPainter *);
+ virtual void drawContentsMask(QPainter *);
+%End
+%If (Qt_3_1_0 -)
+ void styleChange(QStyle &);
+%End
+
+private:
+ QFrame(const QFrame &);
+};
diff --git a/python/pyqt/sip/qt/qglobal.sip b/python/pyqt/sip/qt/qglobal.sip
new file mode 100644
index 00000000..e2fb63a9
--- /dev/null
+++ b/python/pyqt/sip/qt/qglobal.sip
@@ -0,0 +1,74 @@
+// This is the SIP interface definition for some Qt globals.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ModuleHeaderCode
+#include <qglobal.h>
+%End
+
+
+const int QT_VERSION;
+const char *QT_VERSION_STR;
+
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned uint;
+typedef unsigned long ulong;
+typedef char * pchar;
+typedef uchar * puchar;
+typedef const char * pcchar;
+
+typedef char Q_INT8;
+typedef unsigned char Q_UINT8;
+typedef short Q_INT16;
+typedef unsigned short Q_UINT16;
+typedef int Q_INT32;
+typedef unsigned Q_UINT32;
+
+%If (Qt_Q_LONG_IS_long)
+typedef long Q_LONG;
+typedef unsigned long Q_ULONG;
+%End
+%If (!Qt_Q_LONG_IS_long)
+typedef long long Q_LONG;
+typedef unsigned long long Q_ULONG;
+%End
+
+const char *qVersion();
+
+%If (Qt_3_0_0 -)
+%End
+
+%If (Qt_3_1_0 -)
+const char *qInstallPath();
+const char *qInstallPathDocs();
+const char *qInstallPathHeaders();
+const char *qInstallPathLibs();
+const char *qInstallPathBins();
+const char *qInstallPathPlugins();
+const char *qInstallPathData();
+%End
+%If (Qt_3_2_0 -)
+const char *qInstallPathTranslations();
+%If (!WS_WIN)
+const char *qInstallPathSysconf();
+%End
+%End
diff --git a/python/pyqt/sip/qt/qgmanager.sip b/python/pyqt/sip/qt/qgmanager.sip
new file mode 100644
index 00000000..5a194b81
--- /dev/null
+++ b/python/pyqt/sip/qt/qgmanager.sip
@@ -0,0 +1,88 @@
+// This is the SIP interface definition for QGManager.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGManager (Qt v1.x)</Title>
+<Para>
+<Literal>QGManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QChain (Qt v1.x)</Title>
+<Para>
+<Literal>QChain</Literal> is implemented as an opaque class.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QChain;
+
+
+class QGManager : QObject
+{
+%TypeHeaderCode
+#include <qgmanager.h>
+%End
+
+public:
+ QGManager(QWidget *,const char * = 0);
+
+ enum Direction {
+ LeftToRight,
+ RightToLeft,
+ Down,
+ Up
+ };
+
+ enum {
+ unlimited = QCOORD_MAX
+ };
+
+ void setBorder(int);
+ QChain *newSerChain(Direction);
+ QChain *newParChain(Direction);
+ bool add(QChain *,QChain *,int = 0);
+ bool addWidget(QChain *,QWidget *,int = 0);
+ bool addSpacing(QChain *,int,int = 0,int = unlimited);
+ bool addBranch(QChain *,QChain *,int,int);
+ void setStretch(QChain *,int);
+ bool activate();
+ void freeze(int = 0,int = 0);
+ void unFreeze();
+ QChain *xChain();
+ QChain *yChain();
+ void setMenuBar(QWidget *);
+ QWidget *mainWidget();
+ void remove(QWidget *);
+ void setName(QChain *,const char *);
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+
+private:
+ QGManager(const QGManager &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qgrid.sip b/python/pyqt/sip/qt/qgrid.sip
new file mode 100644
index 00000000..f26acb34
--- /dev/null
+++ b/python/pyqt/sip/qt/qgrid.sip
@@ -0,0 +1,72 @@
+// This is the SIP interface definition for QGrid.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGrid (Qt v2+)</Title>
+<Para>
+<Literal>QGrid</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QGrid : QFrame
+{
+%TypeHeaderCode
+#include <qgrid.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ enum Direction {
+ Horizontal,
+ Vertical
+ };
+%End
+
+ QGrid(int,QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%If (- Qt_3_0_0)
+ QGrid(int,Direction,QWidget * /TransferThis/ = 0,const char * = 0,
+ WFlags = 0);
+%End
+%If (Qt_3_0_0 -)
+ QGrid(int,Orientation,QWidget * /TransferThis/ = 0,const char * = 0,
+ WFlags = 0);
+%End
+
+ void setSpacing(int);
+%If (Qt_2_1_0 -)
+ QSize sizeHint() const;
+%End
+
+protected:
+ void frameChanged();
+
+private:
+%If (Qt_2_1_0 -)
+ QGrid(const QGrid &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qgridview.sip b/python/pyqt/sip/qt/qgridview.sip
new file mode 100644
index 00000000..d1ca16b1
--- /dev/null
+++ b/python/pyqt/sip/qt/qgridview.sip
@@ -0,0 +1,76 @@
+// This is the SIP interface definition for QGridView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGridView (Qt v3+)</Title>
+<Para>
+<Literal>QGridView</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QGridView : QScrollView
+{
+%TypeHeaderCode
+#include <qgridview.h>
+%End
+
+public:
+ QGridView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ int numRows() const;
+ virtual void setNumRows(int);
+ int numCols() const;
+ virtual void setNumCols(int);
+
+ int cellWidth() const;
+ virtual void setCellWidth(int);
+ int cellHeight() const;
+ virtual void setCellHeight(int);
+
+ QRect cellRect() const;
+ QRect cellGeometry(int,int);
+ QSize gridSize() const;
+
+ int rowAt(int) const;
+ int columnAt(int) const;
+
+ void repaintCell(int,int,bool = 1);
+ void updateCell(int,int);
+ void ensureCellVisible(int,int);
+
+protected:
+ virtual void paintCell(QPainter *,int,int) = 0;
+ virtual void paintEmptyArea(QPainter *,int,int,int,int);
+
+ void drawContents(QPainter *,int,int,int,int);
+
+ virtual void dimensionChange(int,int);
+
+private:
+ QGridView(const QGridView &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qgroupbox.sip b/python/pyqt/sip/qt/qgroupbox.sip
new file mode 100644
index 00000000..c420082c
--- /dev/null
+++ b/python/pyqt/sip/qt/qgroupbox.sip
@@ -0,0 +1,135 @@
+// This is the SIP interface definition for QGroupBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGroupBox</Title>
+<Para>
+<Literal>QGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QGroupBox : QFrame
+{
+%TypeHeaderCode
+#include <qgroupbox.h>
+%End
+
+public:
+ QGroupBox(QWidget * /TransferThis/ = 0,const char * = 0);
+%If (- Qt_2_00)
+ QGroupBox(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QGroupBox(const QString &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QGroupBox(int,Orientation,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+ QGroupBox(int,Orientation,const QString &,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+%End
+
+%If (Qt_2_00 -)
+ virtual void setColumnLayout(int,Orientation);
+%End
+
+%If (- Qt_2_00)
+ const char *title() const;
+ void setTitle(const char *);
+%End
+%If (Qt_2_00 -)
+ QString title() const;
+ virtual void setTitle(const QString &);
+%End
+
+ int alignment() const;
+%If (- Qt_2_00)
+ void setAlignment(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setAlignment(int);
+%End
+
+%If (Qt_2_1_0 -)
+ int columns() const;
+ void setColumns(int);
+
+ Orientation orientation() const;
+ void setOrientation(Orientation);
+%End
+
+%If (Qt_3_0_0 -)
+ int insideMargin() const;
+ int insideSpacing() const;
+ void setInsideMargin(int);
+ void setInsideSpacing(int);
+%End
+
+%If (Qt_2_1_0 -)
+ void addSpace(int);
+%End
+%If (Qt_2_2_0 -)
+ QSize sizeHint() const;
+%End
+
+%If (Qt_3_1_0 -)
+ bool isFlat() const;
+ void setFlat(bool);
+%End
+%If (Qt_3_2_0 -)
+ bool isCheckable() const;
+ void setCheckable(bool);
+ bool isChecked() const;
+ void setEnabled(bool);
+%End
+
+public slots:
+%If (Qt_3_2_0 -)
+ void setChecked(bool);
+%End
+
+signals:
+%If (Qt_3_2_0 -)
+ void toggled(bool);
+%End
+
+protected:
+%If (Qt_2_2_0 -)
+ bool event(QEvent *);
+%End
+%If (Qt_2_00 -)
+ void childEvent(QChildEvent *);
+ void resizeEvent(QResizeEvent *);
+%End
+ void paintEvent(QPaintEvent *);
+%If (Qt_2_00 - Qt_3_0_0)
+ void updateMask();
+%End
+%If (Qt_2_1_0 -)
+ void focusInEvent(QFocusEvent *);
+ void fontChange(const QFont &);
+%End
+
+private:
+ QGroupBox(const QGroupBox &);
+};
diff --git a/python/pyqt/sip/qt/qhbox.sip b/python/pyqt/sip/qt/qhbox.sip
new file mode 100644
index 00000000..7e5b2ee3
--- /dev/null
+++ b/python/pyqt/sip/qt/qhbox.sip
@@ -0,0 +1,75 @@
+// This is the SIP interface definition for QHBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHBox (Qt v2+)</Title>
+<Para>
+<Literal>QHBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QHBox : QFrame
+{
+%TypeHeaderCode
+#include <qhbox.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QHBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0,
+ bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ QHBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+
+ void setSpacing(int);
+%If (Qt_2_1_0 -)
+ bool setStretchFactor(QWidget *,int);
+ QSize sizeHint() const;
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ QHBox(bool,QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0,
+ bool = 1);
+%End
+%If (Qt_3_0_0 - Qt_3_2_0)
+ QHBox(bool,QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+%If (Qt_3_2_0 -)
+ QHBox(bool,QWidget * /TransferThis/,const char *,WFlags = 0);
+%End
+
+ void frameChanged();
+
+private:
+%If (Qt_3_1_0 -)
+ QHBox(const QHBox &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qhbuttongroup.sip b/python/pyqt/sip/qt/qhbuttongroup.sip
new file mode 100644
index 00000000..60cad68a
--- /dev/null
+++ b/python/pyqt/sip/qt/qhbuttongroup.sip
@@ -0,0 +1,48 @@
+// This is the SIP interface definition for QHButtonGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHButtonGroup (Qt v2+)</Title>
+<Para>
+<Literal>QHButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QHButtonGroup : QButtonGroup
+{
+%TypeHeaderCode
+#include <qhbuttongroup.h>
+%End
+
+public:
+ QHButtonGroup(QWidget * /TransferThis/ = 0,const char * = 0);
+ QHButtonGroup(const QString &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+private:
+ QHButtonGroup(const QHButtonGroup &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qheader.sip b/python/pyqt/sip/qt/qheader.sip
new file mode 100644
index 00000000..30302082
--- /dev/null
+++ b/python/pyqt/sip/qt/qheader.sip
@@ -0,0 +1,268 @@
+// This is the SIP interface definition for QHeader.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHeader</Title>
+<Para>
+<Literal>QHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QHeader : QTableView
+{
+%TypeHeaderCode
+#include <qheader.h>
+%End
+
+public:
+ QHeader(QWidget * /TransferThis/ = 0,const char * = 0);
+ QHeader(int,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ enum Orientation {
+ Horizontal,
+ Vertical
+ };
+
+ int addLabel(const char *,int = -1);
+ void setLabel(int,const char *,int = -1);
+ const char *label(int);
+ void setOrientation(Orientation);
+ Orientation orientation() const;
+ void setTracking(bool);
+ bool tracking() const;
+ void setClickEnabled(bool,int = -1);
+ void setResizeEnabled(bool,int = -1);
+ void setMovingEnabled(bool);
+ void setCellSize(int,int);
+ int cellSize(int) const;
+ int cellPos(int) const;
+ int cellAt(int) const;
+ int count() const;
+ int offset() const;
+ QSize sizeHint() const;
+ int mapToLogical(int) const;
+ int mapToActual(int) const;
+
+public slots:
+ void setOffset(int);
+
+signals:
+ void sectionClicked(int);
+ void sizeChange(int,int,int);
+ void moved(int,int);
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ QRect sRect(int);
+ void paintCell(QPainter *,int,int);
+ void setupPainter(QPainter *);
+ int cellHeight(int);
+ int cellWidth(int);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+
+private:
+ QHeader(const QHeader &);
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+class QHeader : QWidget
+{
+%TypeHeaderCode
+#include <qheader.h>
+%End
+
+public:
+ QHeader(QWidget * /TransferThis/ = 0,const char * = 0);
+ QHeader(int,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ int addLabel(const QString &,int = -1);
+ int addLabel(const QIconSet &,const QString &,int = -1);
+%If (Qt_2_1_0 -)
+ void removeLabel(int);
+%End
+ virtual void setLabel(int,const QString &,int = -1);
+ virtual void setLabel(int,const QIconSet &,const QString &,int = -1);
+
+ QString label(int) const;
+ QIconSet *iconSet(int) const;
+
+ virtual void setOrientation(Orientation);
+ Orientation orientation() const;
+ virtual void setTracking(bool);
+ bool tracking() const;
+
+ virtual void setClickEnabled(bool,int = -1);
+ virtual void setResizeEnabled(bool,int = -1);
+ virtual void setMovingEnabled(bool);
+%If (Qt_3_0_0 -)
+ virtual void setStretchEnabled(bool,int);
+%End
+%If (Qt_2_1_0 -)
+ bool isClickEnabled(int = -1) const;
+ bool isResizeEnabled(int = -1) const;
+ bool isMovingEnabled() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isStretchEnabled() const;
+ bool isStretchEnabled(int) const;
+%End
+
+%If (Qt_2_1_0 -)
+ void resizeSection(int,int);
+ int sectionSize(int) const;
+ int sectionPos(int) const;
+ int sectionAt(int) const;
+%End
+ int count() const;
+%If (Qt_3_0_0 -)
+ int headerWidth() const;
+ QRect sectionRect(int) const;
+%End
+
+%If (- Qt_3_0_0)
+ virtual void setCellSize(int,int);
+ int cellSize(int) const;
+ int cellPos(int) const;
+ int cellAt(int) const;
+%End
+
+ int offset() const;
+
+ QSize sizeHint() const;
+%If (- Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_2_1_0 -)
+ int mapToSection(int) const;
+ int mapToIndex(int) const;
+%End
+%If (- Qt_3_0_0)
+ int mapToLogical(int) const;
+ int mapToActual(int) const;
+%End
+
+%If (Qt_2_1_0 -)
+ void moveSection(int,int);
+%End
+%If (- Qt_3_0_0)
+ virtual void moveCell(int,int);
+%End
+
+%If (Qt_3_2_0 -)
+ // This is placed before the obsolete version below so that it has
+ // precedence. It may still cause problems with old code until SIP
+ // distinguishes between bools and enums.
+ void setSortIndicator(int,SortOrder);
+ int sortIndicatorSection() const;
+ SortOrder sortIndicatorOrder() const;
+%End
+%If (Qt_2_1_0 -)
+ // Obsolete.
+ void setSortIndicator(int,bool = 1);
+%End
+
+%If (Qt_3_0_0 -)
+ void adjustHeaderSize();
+%End
+
+public slots:
+%If (Qt_2_2_0 -)
+ void setUpdatesEnabled(bool);
+%End
+ virtual void setOffset(int);
+
+signals:
+%If (Qt_2_1_0 -)
+ void clicked(int);
+ void pressed(int);
+ void released(int);
+%End
+ void sizeChange(int,int,int);
+%If (Qt_2_1_0 -)
+ void indexChange(int,int,int);
+%End
+%If (- Qt_3_0_0)
+ void sectionClicked(int);
+ void moved(int,int);
+%End
+%If (Qt_3_2_0 -)
+ void sectionHandleDoubleClicked(int);
+%End
+
+protected:
+%If (Qt_2_1_0 -)
+ void paintEvent(QPaintEvent *);
+%End
+%If (Qt_2_2_0 -)
+ void showEvent(QShowEvent *);
+%End
+%If (- Qt_2_1_0)
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+ QRect sRect(int);
+
+%If (- Qt_3_0_0)
+ void paintSection(QPainter *,int,QRect);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void paintSectionLabel(QPainter *,int,const QRect &);
+%End
+%If (Qt_3_0_0 -)
+ virtual void paintSection(QPainter *,int,const QRect &);
+ virtual void paintSectionLabel(QPainter *,int,const QRect &);
+%End
+
+%If (Qt_3_1_0 -)
+ void fontChange(const QFont &);
+%End
+
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+%If (Qt_3_2_0 -)
+ void mouseDoubleClickEvent(QMouseEvent *);
+%End
+
+%If (Qt_3_1_0 -)
+ void keyPressEvent(QKeyEvent *);
+ void keyReleaseEvent(QKeyEvent *);
+%End
+
+private:
+ QHeader(const QHeader &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qhgroupbox.sip b/python/pyqt/sip/qt/qhgroupbox.sip
new file mode 100644
index 00000000..c12059af
--- /dev/null
+++ b/python/pyqt/sip/qt/qhgroupbox.sip
@@ -0,0 +1,48 @@
+// This is the SIP interface definition for QHGroupBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHGroupBox (Qt v2+)</Title>
+<Para>
+<Literal>QHGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QHGroupBox : QGroupBox
+{
+%TypeHeaderCode
+#include <qhgroupbox.h>
+%End
+
+public:
+ QHGroupBox(QWidget * /TransferThis/ = 0,const char * = 0);
+ QHGroupBox(const QString &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+private:
+ QHGroupBox(const QHGroupBox &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qiconset.sip b/python/pyqt/sip/qt/qiconset.sip
new file mode 100644
index 00000000..4a55058a
--- /dev/null
+++ b/python/pyqt/sip/qt/qiconset.sip
@@ -0,0 +1,146 @@
+// This is the SIP interface definition for QIconSet and QIconFactory.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QIconSet</Title>
+<Para>
+<Literal>QIconSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconFactory (Qt v3.1+)</Title>
+<Para>
+<Literal>QIconFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QIconSet
+{
+%TypeHeaderCode
+#include <qiconset.h>
+%End
+
+public:
+ enum Size {
+ Automatic,
+ Small,
+ Large
+ };
+
+ enum Mode {
+ Normal,
+ Disabled,
+ Active
+ };
+
+%If (Qt_3_0_0 -)
+ enum State {
+ On,
+ Off
+ };
+%End
+
+%If (Qt_2_1_0 -)
+ QIconSet();
+%End
+ QIconSet(const QPixmap &,Size = Automatic);
+%If (Qt_2_2_0 -)
+ QIconSet(const QPixmap &,const QPixmap &);
+%End
+ QIconSet(const QIconSet &);
+
+ void reset(const QPixmap &,Size);
+
+%If (- Qt_2_00)
+ void setPixmap(const QPixmap &,Size,Mode = Normal);
+ void setPixmap(const char *,Size,Mode = Normal);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setPixmap(const QPixmap &,Size,Mode = Normal);
+ virtual void setPixmap(const QString &,Size,Mode = Normal);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setPixmap(const QPixmap &,Size,Mode = Normal,State = Off);
+ virtual void setPixmap(const QString &,Size,Mode = Normal,State = Off);
+%End
+%If (- Qt_3_0_0)
+ QPixmap pixmap(Size,Mode) const;
+%If (Qt_2_1_0 -)
+// QPixmap pixmap(Size,bool) const;
+%End
+%End
+%If (Qt_3_0_0 -)
+ QPixmap pixmap(Size,Mode,State = Off) const;
+// QPixmap pixmap(Size,bool,State = Off) const;
+%End
+ QPixmap pixmap() const;
+%If (- Qt_3_0_0)
+ bool isGenerated(Size,Mode) const;
+%End
+%If (Qt_3_0_0 -)
+ bool isGenerated(Size,Mode,State = Off) const;
+ void clearGenerated();
+%End
+%If (Qt_3_1_0 -)
+ void installIconFactory(QIconFactory *);
+%End
+
+%If (Qt_2_1_0 -)
+ bool isNull() const;
+%End
+
+ void detach();
+
+%If (Qt_3_0_0 -)
+ static void setIconSize(Size,const QSize &);
+ static const QSize &iconSize(Size);
+%End
+};
+
+
+%If (Qt_3_1_0 -)
+
+class QIconFactory
+{
+%TypeHeaderCode
+#include <qiconset.h>
+%End
+
+public:
+ QIconFactory();
+
+ virtual QPixmap *createPixmap(const QIconSet &,QIconSet::Size,
+ QIconSet::Mode,
+ QIconSet::State) /Factory/;
+ void setAutoDelete(bool);
+ bool autoDelete() const;
+
+ static QIconFactory *defaultFactory();
+ static void installDefaultFactory(QIconFactory * /Transfer/);
+
+private:
+ QIconFactory(const QIconFactory &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qiconview.sip b/python/pyqt/sip/qt/qiconview.sip
new file mode 100644
index 00000000..122d2ec2
--- /dev/null
+++ b/python/pyqt/sip/qt/qiconview.sip
@@ -0,0 +1,457 @@
+// This is the SIP interface definition for QIconView, QIconViewItem, QIconDrag
+// and QIconDragItem.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QIconView (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>QIconViewItem *<Function>makeRowLayout</Function></FuncDef>
+ <ParamDef>QIconViewItem *<Parameter>begin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconViewItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconViewItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDrag (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconDrag</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIconDragItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QIconDragItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_ICONVIEW)
+%If (Qt_2_1_0 -)
+
+%If (Qt_DRAGANDDROP)
+
+class QIconDragItem
+{
+%TypeHeaderCode
+#include <qiconview.h>
+%End
+
+public:
+ QIconDragItem();
+
+ virtual QByteArray data() const;
+ virtual void setData(const QByteArray &);
+};
+
+
+class QIconDrag : QDragObject
+{
+%TypeHeaderCode
+#include <qiconview.h>
+%End
+
+public:
+ QIconDrag(QWidget * /TransferThis/,const char * = 0);
+
+ void append(const QIconDragItem &,const QRect &,const QRect &);
+
+ virtual const char* format(int) const;
+ static bool canDecode(QMimeSource *);
+ virtual QByteArray encodedData(const char *) const;
+
+private:
+%If (Qt_3_1_0 -)
+ QIconDrag(const QIconDrag &);
+%End
+};
+
+%End
+
+
+class QIconViewItem : Qt
+{
+%TypeHeaderCode
+#include <qiconview.h>
+%End
+
+public:
+ QIconViewItem(QIconView * /TransferThis/);
+ QIconViewItem(QIconView * /TransferThis/,QIconViewItem *);
+ QIconViewItem(QIconView * /TransferThis/,const QString &);
+ QIconViewItem(QIconView * /TransferThis/,QIconViewItem *,
+ const QString &);
+ QIconViewItem(QIconView * /TransferThis/,const QString &,
+ const QPixmap &);
+ QIconViewItem(QIconView * /TransferThis/,QIconViewItem *,
+ const QString &,const QPixmap &);
+%If (Qt_3_0_0 -)
+ QIconViewItem(QIconView * /TransferThis/,const QString &,
+ const QPicture &);
+ QIconViewItem(QIconView * /TransferThis/,QIconViewItem *,
+ const QString &,const QPicture &);
+%End
+
+ virtual void setRenameEnabled(bool);
+ virtual void setDragEnabled(bool);
+ virtual void setDropEnabled(bool);
+
+ virtual QString text() const;
+ virtual QPixmap *pixmap() const;
+%If (Qt_3_0_0 -)
+ virtual QPicture *picture() const;
+%End
+ virtual QString key() const;
+
+ bool renameEnabled() const;
+ bool dragEnabled() const;
+ bool dropEnabled() const;
+
+ QIconView *iconView() const;
+ QIconViewItem *prevItem() const;
+ QIconViewItem *nextItem() const;
+
+ int index() const;
+
+ virtual void setSelected(bool,bool);
+ virtual void setSelected(bool);
+ virtual void setSelectable(bool);
+
+ bool isSelected() const;
+ bool isSelectable() const;
+
+ virtual void repaint();
+
+%If (- Qt_3_0_0)
+ virtual void move(int,int);
+%End
+%If (Qt_3_0_0 -)
+ virtual bool move(int,int);
+%End
+ virtual void moveBy(int,int);
+%If (- Qt_3_0_0)
+ virtual void move(const QPoint &);
+%End
+%If (Qt_3_0_0 -)
+ virtual bool move(const QPoint &);
+%End
+ virtual void moveBy(const QPoint &);
+
+ QRect rect() const;
+ int x() const;
+ int y() const;
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QPoint pos() const;
+ QRect textRect(bool = 1) const;
+ QRect pixmapRect(bool = 1) const;
+%If (- Qt_3_0_0)
+ bool contains(QPoint) const;
+ bool intersects(QRect) const;
+%End
+%If (Qt_3_0_0 -)
+ bool contains(const QPoint &) const;
+ bool intersects(const QRect &) const;
+%End
+
+ virtual bool acceptDrop(const QMimeSource *) const;
+
+ void rename();
+
+ virtual int compare(QIconViewItem *) const;
+
+ virtual void setText(const QString &);
+ virtual void setPixmap(const QPixmap &);
+%If (Qt_3_0_0 -)
+ virtual void setPicture(const QPicture &);
+%End
+ virtual void setText(const QString &,bool,bool = 1);
+ virtual void setPixmap(const QPixmap &,bool,bool = 1);
+ virtual void setKey(const QString &);
+
+%If (Qt_3_0_0 -)
+ virtual int rtti() const;
+%End
+
+protected:
+ virtual void removeRenameBox();
+ virtual void calcRect(const QString & = QString::null);
+ virtual void paintItem(QPainter *,const QColorGroup &);
+ virtual void paintFocus(QPainter *,const QColorGroup &);
+%If (Qt_DRAGANDDROP)
+ virtual void dropped(QDropEvent *,const QValueList<QIconDragItem> &);
+%End
+ virtual void dragEntered();
+ virtual void dragLeft();
+ void setItemRect(const QRect &);
+ void setTextRect(const QRect &);
+ void setPixmapRect(const QRect &);
+ void calcTmpText();
+%If (Qt_3_1_0 -)
+ QString tempText() const;
+%End
+};
+
+
+class QIconView : QScrollView
+{
+%TypeHeaderCode
+#include <qiconview.h>
+%End
+
+public:
+ enum SelectionMode {
+ Single,
+ Multi,
+ Extended,
+ NoSelection
+ };
+
+ enum Arrangement {
+ LeftToRight,
+ TopToBottom
+ };
+
+ enum ResizeMode {
+ Fixed,
+ Adjust
+ };
+
+ enum ItemTextPos {
+ Bottom,
+ Right
+ };
+
+ QIconView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ virtual void insertItem(QIconViewItem *,QIconViewItem * = 0);
+ virtual void takeItem(QIconViewItem *);
+
+ int index(const QIconViewItem *) const;
+
+ QIconViewItem *firstItem() const;
+ QIconViewItem *lastItem() const;
+ QIconViewItem *currentItem() const;
+ virtual void setCurrentItem(QIconViewItem *);
+ virtual void setSelected(QIconViewItem *,bool,bool = 0);
+
+ uint count() const;
+
+ virtual void showEvent(QShowEvent *);
+
+ virtual void setSelectionMode(SelectionMode);
+ SelectionMode selectionMode() const;
+
+ QIconViewItem *findItem(const QPoint &) const;
+%If (- Qt_3_0_0)
+ QIconViewItem *findItem(const QString &) const;
+%End
+%If (Qt_3_0_0 -)
+ QIconViewItem *findItem(const QString &,
+ ComparisonFlags = BeginsWith) const;
+%End
+ virtual void selectAll(bool);
+ virtual void clearSelection();
+ virtual void invertSelection();
+
+ virtual void repaintItem(QIconViewItem *);
+%If (Qt_3_1_0 -)
+ void repaintSelectedItems();
+%End
+
+ void ensureItemVisible(QIconViewItem *);
+ QIconViewItem* findFirstVisibleItem(const QRect &) const;
+ QIconViewItem* findLastVisibleItem(const QRect &) const;
+
+ virtual void clear();
+
+ virtual void setGridX(int);
+ virtual void setGridY(int);
+ int gridX() const;
+ int gridY() const;
+ virtual void setSpacing(int);
+ int spacing() const;
+ virtual void setItemTextPos(ItemTextPos);
+ ItemTextPos itemTextPos() const;
+ virtual void setItemTextBackground(const QBrush &);
+ QBrush itemTextBackground() const;
+ virtual void setArrangement(Arrangement);
+ Arrangement arrangement() const;
+ virtual void setResizeMode(ResizeMode);
+ ResizeMode resizeMode() const;
+ virtual void setMaxItemWidth(int);
+ int maxItemWidth() const;
+ virtual void setMaxItemTextLength(int);
+ int maxItemTextLength() const;
+ virtual void setAutoArrange(bool);
+ bool autoArrange() const;
+ virtual void setShowToolTips(bool);
+ bool showToolTips() const;
+
+ void setSorting(bool,bool = 1);
+ bool sorting() const;
+ bool sortDirection() const;
+
+ virtual void setItemsMovable(bool);
+ bool itemsMovable() const;
+ virtual void setWordWrapIconText(bool);
+ bool wordWrapIconText() const;
+
+ bool eventFilter(QObject *,QEvent *);
+
+ QSize minimumSizeHint() const;
+%If (- Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+ QSize sizeHint() const;
+
+ virtual void sort(bool = 1);
+
+ virtual void setFont(const QFont &);
+ virtual void setPalette(const QPalette &);
+
+%If (Qt_3_0_0 -)
+ bool isRenaming() const;
+%End
+
+public slots:
+ virtual void arrangeItemsInGrid(const QSize &,bool = 1);
+ virtual void arrangeItemsInGrid(bool = 1);
+ virtual void setContentsPos(int,int);
+ virtual void updateContents();
+
+signals:
+ void selectionChanged();
+ void selectionChanged(QIconViewItem *);
+ void currentChanged(QIconViewItem *);
+ void clicked(QIconViewItem *);
+ void clicked(QIconViewItem *,const QPoint &);
+ void pressed(QIconViewItem *);
+ void pressed(QIconViewItem *,const QPoint &);
+
+ void doubleClicked(QIconViewItem *);
+ void returnPressed(QIconViewItem *);
+ void rightButtonClicked(QIconViewItem *,const QPoint &);
+ void rightButtonPressed(QIconViewItem *,const QPoint &);
+ void mouseButtonPressed(int,QIconViewItem *,const QPoint &);
+ void mouseButtonClicked(int,QIconViewItem *,const QPoint &);
+%If (Qt_3_0_0 -)
+ void contextMenuRequested(QIconViewItem *,const QPoint &);
+%End
+%If (Qt_DRAGANDDROP)
+ void dropped(QDropEvent *,const QValueList<QIconDragItem> &);
+%End
+ void moved();
+ void onItem(QIconViewItem *);
+ void onViewport();
+ void itemRenamed(QIconViewItem *,const QString &);
+ void itemRenamed(QIconViewItem *);
+
+protected slots:
+ virtual void doAutoScroll();
+ virtual void adjustItems();
+ virtual void slotUpdate();
+
+protected:
+%If (- Qt_3_0_0)
+ virtual void drawContents(QPainter *,int,int,int,int);
+ virtual void contentsMousePressEvent(QMouseEvent *);
+ virtual void contentsMouseReleaseEvent(QMouseEvent *);
+ virtual void contentsMouseMoveEvent(QMouseEvent *);
+ virtual void contentsMouseDoubleClickEvent(QMouseEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void drawContents(QPainter *,int,int,int,int);
+ void contentsMousePressEvent(QMouseEvent *);
+ void contentsMouseReleaseEvent(QMouseEvent *);
+ void contentsMouseMoveEvent(QMouseEvent *);
+ void contentsMouseDoubleClickEvent(QMouseEvent *);
+ void contentsContextMenuEvent(QContextMenuEvent *);
+%End
+
+%If (- Qt_3_0_0)
+%If (Qt_DRAGANDDROP)
+ virtual void contentsDragEnterEvent(QDragEnterEvent *);
+ virtual void contentsDragMoveEvent(QDragMoveEvent *);
+ virtual void contentsDragLeaveEvent(QDragLeaveEvent *);
+ virtual void contentsDropEvent(QDropEvent *);
+%End
+
+ virtual void resizeEvent(QResizeEvent *);
+ virtual void keyPressEvent(QKeyEvent *);
+ virtual void focusInEvent(QFocusEvent *);
+ virtual void focusOutEvent(QFocusEvent *);
+ virtual void enterEvent(QEvent *);
+%End
+%If (Qt_3_0_0 -)
+%If (Qt_DRAGANDDROP)
+ void contentsDragEnterEvent(QDragEnterEvent *);
+ void contentsDragMoveEvent(QDragMoveEvent *);
+ void contentsDragLeaveEvent(QDragLeaveEvent *);
+ void contentsDropEvent(QDropEvent *);
+%End
+
+ void resizeEvent(QResizeEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void enterEvent(QEvent *);
+%End
+
+ virtual void drawRubber(QPainter *);
+%If (Qt_DRAGANDDROP)
+ virtual QDragObject *dragObject();
+ virtual void startDrag();
+%End
+ virtual void insertInGrid(QIconViewItem *);
+ virtual void drawBackground(QPainter *,const QRect &);
+
+ void emitSelectionChanged(QIconViewItem * = 0);
+ void emitRenamed(QIconViewItem *);
+
+%If (- Qt_3_0_0)
+// QIconViewItem *makeRowLayout(QIconViewItem *,int &);
+%End
+%If (Qt_3_0_0 -)
+// QIconViewItem *makeRowLayout(QIconViewItem *,int &,bool &);
+%End
+
+ void styleChange(QStyle &);
+%If (Qt_3_0_0 -)
+ void windowActivationChange(bool);
+%End
+
+private:
+ QIconView(const QIconView &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qimage.sip b/python/pyqt/sip/qt/qimage.sip
new file mode 100644
index 00000000..aa7e2e5f
--- /dev/null
+++ b/python/pyqt/sip/qt/qimage.sip
@@ -0,0 +1,544 @@
+// This is the SIP interface definition for QImage, QImageIO and
+// QImageTextKeyLang.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QImage</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QImage</Function></FuncDef>
+ <ParamDef>const char *<Parameter>xpm</Parameter>[]</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a list of strings as its parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QImage</Function></FuncDef>
+ <ParamDef>uchar *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>depth</Parameter></ParamDef>
+ <ParamDef>QRgb *<Parameter>colorTable</Parameter></ParamDef>
+ <ParamDef>int <Parameter>numColors</Parameter></ParamDef>
+ <ParamDef>Endian <Parameter>bitOrder</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>colorTable</Literal> parameter is a list of QRgb instances or
+None. (Qt v2.1+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar *<Function>bits</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QRgb *<Function>colorTable</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QImage <Function>convertDepthWithPalette</Function></FuncDef>
+ <ParamDef>int</ParamDef>
+ <ParamDef>QRgb *<Parameter>p</Parameter></ParamDef>
+ <ParamDef>int <Parameter>pc</Parameter></ParamDef>
+ <ParamDef>int <Parameter>cf</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar **<Function>jumpTable</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter> = 0</ParamDef>
+ <ParamDef>ColorMode <Parameter>mode</Parameter> = Auto</ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>buf</Literal> and not passed as
+a parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar *<Function>scanLine</Function></FuncDef>
+ <ParamDef>int <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The return value is a <Literal>sip.voidptr</Literal> object which is only
+useful if passed to another Python module.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageIO</Title>
+<FuncSynopsis>
+ <FuncDef>static void <Function>defineIOHandler</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>header</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>flags</Parameter></ParamDef>
+ <ParamDef>image_io_handler <Parameter>read_image</Parameter></ParamDef>
+ <ParamDef>image_io_handler <Parameter>write_image</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QImageTextKeyLang</Title>
+<Para>
+<Literal>QImageTextKeyLang</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QImage
+{
+%TypeHeaderCode
+#include <qimage.h>
+%End
+
+public:
+ enum Endian {
+ IgnoreEndian,
+ BigEndian,
+ LittleEndian
+ };
+
+ QImage();
+ QImage(int,int,int,int = 0,Endian = IgnoreEndian);
+ QImage(const QSize &,int,int = 0,Endian = IgnoreEndian);
+%If (- Qt_2_00)
+ QImage(const char *,char * = 0);
+%End
+%If (Qt_2_00 -)
+ QImage(const QString &,char * = 0);
+%End
+
+ QImage(SIP_PYLIST) [(const char **)];
+%MethodCode
+ // The Python interface is a list of strings that make up the
+ // image.
+
+ const char **str;
+
+ if ((str = PyQt_qt_ListToArray(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // There is no wrapper class for QImage.
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new QImage(str);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)str);
+ }
+%End
+
+%If (Qt_2_00 -)
+ QImage(const QByteArray &);
+%End
+
+%If (Qt_2_1_0 -)
+ QImage(uchar *,int,int,int,SIP_PYLIST /AllowNone/,int,Endian) [(uchar *,int,int,int,int,QRgb *,int,Endian)];
+%MethodCode
+ // The Python interface takes a list of QRgb instances.
+
+ QRgb *coltab;
+
+ if (a4 == Py_None)
+ coltab = 0;
+ else
+ {
+ int len = PyList_Size(a4);
+
+ if (a5 > len)
+ a5 = len;
+
+ coltab = new QRgb[len];
+
+ PyErr_Clear();
+
+ for (int i = 0; i < a5; ++i)
+ {
+ coltab[i] = PyLong_AsLong(PyList_GetItem(a4,i));
+
+ if (PyErr_Occurred())
+ {
+ delete[] coltab;
+ sipIsErr = 1;
+ break;
+ }
+ }
+ }
+
+ if (!sipIsErr)
+ {
+ // There is no wrapper class for QImage.
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new QImage(a0,a1,a2,a3,0,a5,(QImage::Endian)a6);
+
+ if (coltab)
+ {
+ // Now set the colours using the QImage's self
+ // allocated colour table. If we had passed in
+ // coltab as the colour table then we couldn't
+ // have freed it and it would leak.
+ for (int i = 0; i < a5; ++i)
+ sipCpp -> setColor(i,coltab[i]);
+
+ delete[] coltab;
+ }
+ Py_END_ALLOW_THREADS
+ }
+%End
+%End
+
+ QImage(const QImage &);
+
+ bool operator==(const QImage &) const;
+ bool operator!=(const QImage &) const;
+
+ void detach();
+ QImage copy() const;
+ QImage copy(int,int,int,int,int = 0) const;
+%If (- Qt_3_0_0)
+ QImage copy(QRect &) const;
+%End
+%If (Qt_3_0_0 -)
+ QImage copy(const QRect &) const;
+%End
+%If (Qt_3_1_0 -)
+ static QImage fromMimeSource(const QString &);
+%End
+ bool isNull() const;
+
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+ int numColors() const;
+ Endian bitOrder() const;
+
+ QRgb color(int) const;
+ void setColor(int,QRgb);
+ void setNumColors(int);
+
+ bool hasAlphaBuffer() const;
+ void setAlphaBuffer(bool);
+
+ bool allGray() const;
+ bool isGrayscale() const;
+
+ // Actually returns uchar *.
+ void *bits() const;
+ // Actually returns uchar *.
+ void *scanLine(int) const;
+ // Actually returns uchar **.
+ void *jumpTable() const;
+ // Actually returns QRgb *.
+ void *colorTable() const;
+ int numBytes() const;
+ int bytesPerLine() const;
+
+ bool create(int,int,int,int = 0,Endian = IgnoreEndian);
+ bool create(const QSize &,int,int = 0,Endian = IgnoreEndian);
+ void reset();
+
+ void fill(uint);
+%If (Qt_2_00 -)
+ void invertPixels(bool = 1);
+%End
+
+ QImage convertDepth(int) const;
+// QImage convertDepthWithPalette(int,QRgb *,int,int = 0) const;
+ QImage convertDepth(int,int) const;
+ QImage convertBitOrder(Endian) const;
+
+%If (- Qt_3_0_0)
+ QImage smoothScale(int,int) const;
+%End
+%If (Qt_3_0_0 -)
+ enum ScaleMode {
+ ScaleFree,
+ ScaleMin,
+ ScaleMax
+ };
+
+ QImage smoothScale(int,int,ScaleMode = ScaleFree) const;
+ QImage smoothScale(const QSize &,ScaleMode = ScaleFree) const;
+ QImage scale(int,int,ScaleMode = ScaleFree) const;
+ QImage scale(const QSize &,ScaleMode = ScaleFree) const;
+ QImage scaleWidth(int) const;
+ QImage scaleHeight(int) const;
+ QImage xForm(const QWMatrix &) const;
+%End
+
+%If (- Qt_2_00)
+ QImage createAlphaMask(bool = 0) const;
+ QImage createAlphaMask(int) const;
+%End
+%If (Qt_2_00 -)
+ QImage createAlphaMask(int = 0) const;
+%End
+ QImage createHeuristicMask(bool = 1) const;
+%If (Qt_2_00 -)
+ QImage mirror() const;
+%End
+%If (Qt_2_1_0 -)
+ QImage mirror(bool,bool) const;
+%End
+%If (Qt_2_00 -)
+ QImage swapRGB() const;
+%End
+
+ static Endian systemBitOrder();
+ static Endian systemByteOrder();
+
+%If (- Qt_2_00)
+ static const char *imageFormat(const char *);
+%End
+%If (Qt_2_00 -)
+ static const char *imageFormat(const QString &);
+%End
+ static QStrList inputFormats();
+ static QStrList outputFormats();
+%If (Qt_2_1_0 -)
+ static QStringList inputFormatList();
+ static QStringList outputFormatList();
+%End
+%If (- Qt_2_00)
+ bool load(const char *,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ bool load(const QString &,const char * = 0);
+%End
+ bool loadFromData(const uchar * /Array/,uint /ArraySize/,
+ const char * = 0);
+ bool loadFromData(QByteArray,char * = 0);
+%If (- Qt_2_00)
+ bool save(const char *,const char *) const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ bool save(const QString &,const char *) const;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ bool save(const QString &,const char *,int) const;
+%End
+%If (Qt_3_0_0 -)
+ bool save(const QString &,const char *,int = -1) const;
+%End
+%If (Qt_3_2_0 -)
+ bool save(QIODevice *,const char *,int = -1) const;
+%End
+
+ bool valid(int,int) const;
+ int pixelIndex(int,int) const;
+ QRgb pixel(int,int) const;
+ void setPixel(int,int,uint);
+
+%If (Qt_2_1_0 -)
+ int dotsPerMeterX() const;
+ int dotsPerMeterY() const;
+ void setDotsPerMeterX(int);
+ void setDotsPerMeterY(int);
+ QPoint offset() const;
+ void setOffset(const QPoint &);
+%If (Qt_IMAGE_TEXT)
+ QValueList<QImageTextKeyLang> textList() const;
+ QStringList textLanguages() const;
+ QStringList textKeys() const;
+ QString text(const char *,const char * = 0) const;
+ QString text(const QImageTextKeyLang &) const;
+ void setText(const char *,const char *,const QString &);
+%End
+%End
+};
+
+
+void bitBlt(QImage *,int,int,const QImage *,int = 0,int = 0,int = -1,int = -1,
+ int = 0);
+
+
+class QImageIO
+{
+%TypeHeaderCode
+#include <qimage.h>
+%End
+
+public:
+ QImageIO();
+ QImageIO(QIODevice *,const char *);
+%If (Qt_2_00 -)
+ QImageIO(const QString &,const char *);
+%End
+%If (- Qt_2_00)
+ QImageIO(const char *,const char *);
+%End
+
+ const QImage &image() const;
+ int status() const;
+ const char *format() const;
+ QIODevice *ioDevice() const;
+%If (Qt_2_00 -)
+ QString fileName() const;
+%End
+%If (- Qt_2_00)
+ const char *fileName() const;
+%End
+%If (Qt_3_0_0 -)
+ int quality() const;
+%End
+%If (Qt_2_00 -)
+ QString description() const;
+%End
+%If (- Qt_2_00)
+ const char *description() const;
+%End
+ const char *parameters() const;
+%If (Qt_3_0_0 -)
+ float gamma() const;
+%End
+
+ void setImage(const QImage &);
+ void setStatus(int);
+ void setFormat(const char *);
+ void setIODevice(QIODevice *);
+%If (Qt_2_00 -)
+ void setFileName(const QString &);
+%End
+%If (- Qt_2_00)
+ void setFileName(const char *);
+%End
+%If (Qt_3_0_0 -)
+ void setQuality(int);
+%End
+%If (Qt_2_00 -)
+ void setDescription(const QString &);
+%End
+%If (- Qt_2_00)
+ void setDescription(const char *);
+%End
+ void setParameters(const char *);
+%If (Qt_3_0_0 -)
+ void setGamma(float);
+%End
+
+ bool read();
+ bool write();
+
+ static const char *imageFormat(const QString &);
+ static const char *imageFormat(QIODevice *);
+ static QStrList inputFormats();
+ static QStrList outputFormats();
+
+// static void defineIOHandler(const char *,const char *,const char *,
+// image_io_handler,image_io_handler);
+
+private:
+ QImageIO(const QImageIO &);
+};
+
+
+%If (Qt_2_1_0 -)
+%If (Qt_IMAGE_TEXT)
+
+class QImageTextKeyLang
+{
+%TypeHeaderCode
+#include <qimage.h>
+%End
+
+public:
+ QImageTextKeyLang(const char *,const char *);
+ QImageTextKeyLang();
+
+ QCString key;
+ QCString lang;
+};
+
+%End
+%End
+
+
+%ModuleHeaderCode
+const char **PyQt_qt_ListToArray(PyObject *lst);
+%End
+
+
+%ModuleCode
+// Convert a list of strings to an array of strings on the heap. Also used by
+// QPixmap.
+const char **PyQt_qt_ListToArray(PyObject *lst)
+{
+ int nstr;
+ const char **str, **sp;
+
+ nstr = PyList_Size(lst);
+
+ if ((str = (const char **)sipMalloc(nstr * sizeof (char *))) == NULL)
+ return NULL;
+
+ // Convert the list.
+ sp = str;
+
+ for (int i = 0; i < nstr; ++i)
+ {
+ char *s;
+
+ if ((s = PyString_AsString(PyList_GetItem(lst,i))) == NULL)
+ {
+ sipFree((ANY *)str);
+ return NULL;
+ }
+
+ *sp++ = s;
+ }
+
+ return str;
+}
+%End
diff --git a/python/pyqt/sip/qt/qinputdialog.sip b/python/pyqt/sip/qt/qinputdialog.sip
new file mode 100644
index 00000000..80a5394f
--- /dev/null
+++ b/python/pyqt/sip/qt/qinputdialog.sip
@@ -0,0 +1,174 @@
+// This is the SIP interface definition for QInputDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QInputDialog (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v2.1 - v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>QLineEdit::EchoMode<Parameter>echo</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v2.2 - v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getText</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>QLineEdit::EchoMode<Parameter>echo</Parameter> = QLineEdit::Normal</ParamDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+(Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static int <Function>getInteger</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>int <Parameter>num</Parameter> = 0</ParamDef>
+ <ParamDef>int <Parameter>from</Parameter> = -2147483647</ParamDef>
+ <ParamDef>int <Parameter>to</Parameter> = 2147483647</ParamDef>
+ <ParamDef>int <Parameter>step</Parameter> = 1</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>int</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static double <Function>getDouble</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>double <Parameter>num</Parameter> = 0</ParamDef>
+ <ParamDef>double <Parameter>from</Parameter> = -2147483647</ParamDef>
+ <ParamDef>double <Parameter>to</Parameter> = 2147483647</ParamDef>
+ <ParamDef>int <Parameter>step</Parameter> = 1</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>double</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static QString <Function>getItem</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>caption</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>label</Parameter></ParamDef>
+ <ParamDef>const QStringList &<Parameter>list</Parameter></ParamDef>
+ <ParamDef>int <Parameter>current</Parameter> = 0</ParamDef>
+ <ParamDef>bool <Parameter>editable</Parameter> = TRUE</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 -)
+%If (Qt_INPUTDIALOG)
+
+class QInputDialog : QDialog
+{
+%TypeHeaderCode
+#include <qinputdialog.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ static QString getText(const QString &,const QString &,
+ QLineEdit::EchoMode = QLineEdit::Normal,
+ const QString & = QString::null,
+ bool * = 0,QWidget * = 0,const char * = 0);
+%End
+
+%If (- Qt_3_0_0)
+ static QString getText(const QString &,const QString &,
+ const QString & = QString::null,
+ bool * = 0,QWidget * = 0,const char * = 0);
+%End
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+ static QString getText(const QString &,const QString &,
+ QLineEdit::EchoMode,
+ const QString & = QString::null,
+ bool * = 0,QWidget * = 0,const char * = 0);
+%End
+
+ static int getInteger(const QString &,const QString &,int = 0,
+ int = -2147483647,int = 2147483647,int = 1,
+ bool * = 0,QWidget * = 0,const char * = 0);
+
+ static double getDouble(const QString &,const QString &,
+ double = 0,double = -2147483647,
+ double = 2147483647,int = 1,
+ bool * = 0,QWidget * = 0,const char * = 0);
+
+ static QString getItem(const QString &,const QString &,
+ const QStringList &,int = 0,bool = TRUE,
+ bool * = 0,QWidget * = 0,const char * = 0);
+
+private:
+ QInputDialog(const QInputDialog &);
+ ~QInputDialog();
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qinterlacestyle.sip b/python/pyqt/sip/qt/qinterlacestyle.sip
new file mode 100644
index 00000000..5455b2fb
--- /dev/null
+++ b/python/pyqt/sip/qt/qinterlacestyle.sip
@@ -0,0 +1,103 @@
+// This is the SIP interface definition for QInterlaceStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QInterlaceStyle (Qt v2.3.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+</Para>
+</Sect2>
+%End
+
+
+// Temporary until it is ported to Qt3.
+%If (Qt_STYLE_INTERLACE)
+%If (Qt_2_3_1 - Qt_3_0_0)
+
+class QInterlaceStyle : QMotifStyle
+{
+%TypeHeaderCode
+#include <qinterlacestyle.h>
+%End
+
+public:
+ QInterlaceStyle();
+
+ void polish(QApplication *);
+ void unPolish(QApplication *);
+ void polish(QWidget *);
+ void unPolish(QWidget *);
+ int defaultFrameWidth() const;
+ QRect pushButtonContentsRect(QPushButton *);
+ void drawFocusRect(QPainter *,const QRect &,const QColorGroup &,
+ const QColor * = 0,bool = 0);
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawButtonMask(QPainter *,int,int,int,int);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+
+ void drawPushButton(QPushButton *,QPainter *);
+ QSize indicatorSize() const;
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,
+ int,bool = 0,bool = 1);
+ void drawIndicatorMask(QPainter *,int,int,int,int,int);
+ QSize exclusiveIndicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,
+ bool = 1);
+ void drawExclusiveIndicatorMask(QPainter *,int,int,int,int,bool);
+ QRect comboButtonRect(int,int,int,int);
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool,bool,bool,const QBrush *);
+ void drawPushButtonLabel(QPushButton *,QPainter *);
+ void drawPanel(QPainter *,int,int,int,int,const QColorGroup &,bool,int,
+ const QBrush *);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,
+ uint);
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderMask(QPainter *,int,int,int,int,Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+ void drawSliderGrooveMask(QPainter *,int,int,int,int,QCOORD,
+ Orientation);
+ int splitterWidth() const;
+ void drawSplitter(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qiodevice.sip b/python/pyqt/sip/qt/qiodevice.sip
new file mode 100644
index 00000000..32079d2d
--- /dev/null
+++ b/python/pyqt/sip/qt/qiodevice.sip
@@ -0,0 +1,408 @@
+// This is the SIP interface definition for QIODevice.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QIODevice</Title>
+<Para>
+<Literal>QIODevice</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qiodevice.h>
+%End
+
+
+// Device access types.
+
+const int IO_Direct;
+const int IO_Sequential;
+const int IO_Combined;
+const int IO_TypeMask;
+
+// Handling modes.
+
+const int IO_Raw;
+const int IO_Async;
+
+// Device open modes.
+
+const int IO_ReadOnly;
+const int IO_WriteOnly;
+const int IO_ReadWrite;
+const int IO_Append;
+const int IO_Truncate;
+const int IO_Translate;
+const int IO_ModeMask;
+
+// Device state.
+
+const int IO_Open;
+const int IO_StateMask;
+
+// Device status.
+
+const int IO_Ok;
+const int IO_ReadError;
+const int IO_WriteError;
+const int IO_FatalError;
+const int IO_ResourceError;
+const int IO_OpenError;
+const int IO_ConnectError;
+const int IO_AbortError;
+const int IO_TimeOutError;
+%If (Qt_2_00 -)
+const int IO_UnspecifiedError;
+%End
+
+
+class QIODevice
+{
+%TypeHeaderCode
+#include <qiodevice.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ typedef Q_ULONG Offset;
+%End
+
+ QIODevice();
+
+ int flags() const;
+ int mode() const;
+ int state() const;
+ bool isDirectAccess() const;
+ bool isSequentialAccess() const;
+ bool isCombinedAccess() const;
+ bool isBuffered() const;
+ bool isRaw() const;
+ bool isSynchronous() const;
+ bool isAsynchronous() const;
+ bool isTranslated() const;
+ bool isReadable() const;
+ bool isWritable() const;
+ bool isReadWrite() const;
+ bool isInactive() const;
+ bool isOpen() const;
+
+ int status() const;
+ void resetStatus();
+
+ virtual bool open(int) = 0 /ReleaseGIL/;
+ virtual void close() = 0;
+ virtual void flush() = 0 /ReleaseGIL/;
+
+%If (- Qt_3_0_0)
+ virtual uint size() const = 0;
+ virtual int at() const;
+ virtual bool at(int);
+%End
+%If (Qt_3_0_0 -)
+ virtual Offset size() const = 0;
+ virtual Offset at() const;
+ virtual bool at(Offset);
+%End
+ virtual bool atEnd() const;
+ bool reset();
+
+%If (- Qt_3_0_0)
+ virtual SIP_PYOBJECT readBlock(uint) = 0 /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%VirtualCatcherCode
+ PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"i",a1);
+
+ if (result != NULL)
+ {
+ PyObject *buf;
+
+ sipParseResult(&sipIsErr,sipMethod,result,"O",&buf);
+
+ if (buf == Py_None)
+ sipRes = -1;
+ else if (!PyString_Check(buf))
+ {
+ sipBadCatcherResult(sipMethod);
+ sipIsErr = 1;
+ }
+ else
+ {
+ memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf));
+ sipRes = PyString_GET_SIZE(buf);
+ }
+
+ Py_DECREF(buf);
+ Py_DECREF(result);
+ }
+%End
+%End
+%If (Qt_3_0_0 -)
+ virtual SIP_PYOBJECT readBlock(Q_ULONG) = 0 /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%VirtualCatcherCode
+ PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"l",a1);
+
+ if (result != NULL)
+ {
+ PyObject *buf;
+
+ sipParseResult(&sipIsErr,sipMethod,result,"O",&buf);
+
+ if (buf == Py_None)
+ sipRes = -1L;
+ else if (!PyString_Check(buf))
+ {
+ sipBadCatcherResult(sipMethod);
+ sipIsErr = 1;
+ }
+ else
+ {
+ memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf));
+ sipRes = PyString_GET_SIZE(buf);
+ }
+
+ Py_DECREF(buf);
+ Py_DECREF(result);
+ }
+%End
+%End
+
+%If (- Qt_3_0_0)
+ virtual int writeBlock(const char * /Array/,
+ uint /ArraySize/) = 0 /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ virtual Q_LONG writeBlock(const char * /Array/,
+ Q_ULONG /ArraySize/) = 0 /ReleaseGIL/;
+%End
+
+%If (- Qt_3_0_0)
+ virtual SIP_PYOBJECT readLine(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp->QIODevice::readLine(buf, a0) : sipCpp->readLine(buf, a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%VirtualCatcherCode
+ PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"i",a1);
+
+ if (result != NULL)
+ {
+ PyObject *buf;
+
+ sipParseResult(&sipIsErr,sipMethod,result,"O",&buf);
+
+ if (buf == Py_None)
+ sipRes = -1;
+ else if (!PyString_Check(buf))
+ {
+ sipBadCatcherResult(sipMethod);
+ sipIsErr = 1;
+ }
+ else
+ {
+ memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf));
+ sipRes = PyString_GET_SIZE(buf);
+ }
+
+ Py_DECREF(buf);
+ Py_DECREF(result);
+ }
+%End
+%End
+%If (Qt_3_0_0 -)
+ virtual SIP_PYOBJECT readLine(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp->QIODevice::readLine(buf, a0) : sipCpp->readLine(buf, a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%VirtualCatcherCode
+ PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"l",a1);
+
+ if (result != NULL)
+ {
+ PyObject *buf;
+
+ sipParseResult(&sipIsErr,sipMethod,result,"O",&buf);
+
+ if (buf == Py_None)
+ sipRes = -1L;
+ else if (!PyString_Check(buf))
+ {
+ sipBadCatcherResult(sipMethod);
+ sipIsErr = 1;
+ }
+ else
+ {
+ memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf));
+ sipRes = PyString_GET_SIZE(buf);
+ }
+
+ Py_DECREF(buf);
+ Py_DECREF(result);
+ }
+%End
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ int writeBlock(const QByteArray &) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ Q_LONG writeBlock(const QByteArray &) /ReleaseGIL/;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ QByteArray readAll() /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ virtual QByteArray readAll() /ReleaseGIL/;
+%End
+
+ virtual int getch() = 0 /ReleaseGIL/;
+ virtual int putch(int) = 0 /ReleaseGIL/;
+ virtual int ungetch(int) = 0;
+
+protected:
+ void setFlags(int);
+ void setType(int);
+ void setMode(int);
+ void setState(int);
+ void setStatus(int);
+
+private:
+ QIODevice(const QIODevice &);
+};
diff --git a/python/pyqt/sip/qt/qkeycode.sip b/python/pyqt/sip/qt/qkeycode.sip
new file mode 100644
index 00000000..72c0a253
--- /dev/null
+++ b/python/pyqt/sip/qt/qkeycode.sip
@@ -0,0 +1,286 @@
+// This is the SIP interface definition for the key code definitions.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If (- Qt_2_00)
+
+%ModuleHeaderCode
+#include <qkeycode.h>
+%End
+
+// Accelerator modifiers.
+const uint SHIFT;
+const uint CTRL;
+const uint ALT;
+const uint ASCII_ACCEL;
+
+// Miscellaneous keys.
+const int Key_Escape;
+const int Key_Tab;
+const int Key_Backtab;
+const int Key_Backspace;
+const int Key_Return;
+const int Key_Enter;
+const int Key_Insert;
+const int Key_Delete;
+const int Key_Pause;
+const int Key_Print;
+const int Key_SysReq;
+
+// Cursor keys.
+const int Key_Home;
+const int Key_End;
+const int Key_Left;
+const int Key_Up;
+const int Key_Right;
+const int Key_Down;
+const int Key_Prior;
+const int Key_PageUp;
+const int Key_Next;
+const int Key_PageDown;
+
+// Modifiers.
+const int Key_Shift;
+const int Key_Control;
+const int Key_Meta;
+const int Key_Alt;
+const int Key_CapsLock;
+const int Key_NumLock;
+const int Key_ScrollLock;
+
+// Function keys.
+const int Key_F1;
+const int Key_F2;
+const int Key_F3;
+const int Key_F4;
+const int Key_F5;
+const int Key_F6;
+const int Key_F7;
+const int Key_F8;
+const int Key_F9;
+const int Key_F10;
+const int Key_F11;
+const int Key_F12;
+const int Key_F13;
+const int Key_F14;
+const int Key_F15;
+const int Key_F16;
+const int Key_F17;
+const int Key_F18;
+const int Key_F19;
+const int Key_F20;
+const int Key_F21;
+const int Key_F22;
+const int Key_F23;
+const int Key_F24;
+const int Key_F25;
+const int Key_F26;
+const int Key_F27;
+const int Key_F28;
+const int Key_F29;
+const int Key_F30;
+const int Key_F31;
+const int Key_F32;
+const int Key_F33;
+const int Key_F34;
+const int Key_F35;
+
+// Extra keys.
+const int Key_Super_L;
+const int Key_Super_R;
+const int Key_Menu;
+%If (Qt_1_43 -)
+const int Key_Hyper_L;
+const int Key_Hyper_R;
+%End
+
+// The 7 bit printable ASCII keys.
+const int Key_Space;
+const int Key_Exclam;
+const int Key_QuoteDbl;
+const int Key_NumberSign;
+const int Key_Dollar;
+const int Key_Percent;
+const int Key_Ampersand;
+const int Key_Apostrophe;
+const int Key_ParenLeft;
+const int Key_ParenRight;
+const int Key_Asterisk;
+const int Key_Plus;
+const int Key_Comma;
+const int Key_Minus;
+const int Key_Period;
+const int Key_Slash;
+const int Key_0;
+const int Key_1;
+const int Key_2;
+const int Key_3;
+const int Key_4;
+const int Key_5;
+const int Key_6;
+const int Key_7;
+const int Key_8;
+const int Key_9;
+const int Key_Colon;
+const int Key_Semicolon;
+const int Key_Less;
+const int Key_Equal;
+const int Key_Greater;
+const int Key_Question;
+const int Key_At;
+const int Key_A;
+const int Key_B;
+const int Key_C;
+const int Key_D;
+const int Key_E;
+const int Key_F;
+const int Key_G;
+const int Key_H;
+const int Key_I;
+const int Key_J;
+const int Key_K;
+const int Key_L;
+const int Key_M;
+const int Key_N;
+const int Key_O;
+const int Key_P;
+const int Key_Q;
+const int Key_R;
+const int Key_S;
+const int Key_T;
+const int Key_U;
+const int Key_V;
+const int Key_W;
+const int Key_X;
+const int Key_Y;
+const int Key_Z;
+const int Key_BracketLeft;
+const int Key_Backslash;
+const int Key_BracketRight;
+const int Key_AsciiCircum;
+const int Key_Underscore;
+const int Key_QuoteLeft;
+const int Key_BraceLeft;
+const int Key_Bar;
+const int Key_BraceRight;
+const int Key_AsciiTilde;
+
+// Latin 1 codes.
+const int Key_nobreakspace;
+const int Key_exclamdown;
+const int Key_cent;
+const int Key_sterling;
+const int Key_currency;
+const int Key_yen;
+const int Key_brokenbar;
+const int Key_section;
+const int Key_diaeresis;
+const int Key_copyright;
+const int Key_ordfeminine;
+const int Key_guillemotleft;
+const int Key_notsign;
+const int Key_hyphen;
+const int Key_registered;
+const int Key_macron;
+const int Key_degree;
+const int Key_plusminus;
+const int Key_twosuperior;
+const int Key_threesuperior;
+const int Key_acute;
+const int Key_mu;
+const int Key_paragraph;
+const int Key_periodcentered;
+const int Key_cedilla;
+const int Key_onesuperior;
+const int Key_masculine;
+const int Key_guillemotright;
+const int Key_onequarter;
+const int Key_onehalf;
+const int Key_threequarters;
+const int Key_questiondown;
+const int Key_Agrave;
+const int Key_Aacute;
+const int Key_Acircumflex;
+const int Key_Atilde;
+const int Key_Adiaeresis;
+const int Key_Aring;
+const int Key_AE;
+const int Key_Ccedilla;
+const int Key_Egrave;
+const int Key_Eacute;
+const int Key_Ecircumflex;
+const int Key_Ediaeresis;
+const int Key_Igrave;
+const int Key_Iacute;
+const int Key_Icircumflex;
+const int Key_Idiaeresis;
+const int Key_ETH;
+const int Key_Ntilde;
+const int Key_Ograve;
+const int Key_Oacute;
+const int Key_Ocircumflex;
+const int Key_Otilde;
+const int Key_Odiaeresis;
+const int Key_multiply;
+const int Key_Ooblique;
+const int Key_Ugrave;
+const int Key_Uacute;
+const int Key_Ucircumflex;
+const int Key_Udiaeresis;
+const int Key_Yacute;
+const int Key_THORN;
+const int Key_ssharp;
+const int Key_agrave;
+const int Key_aacute;
+const int Key_acircumflex;
+const int Key_atilde;
+const int Key_adiaeresis;
+const int Key_aring;
+const int Key_ae;
+const int Key_ccedilla;
+const int Key_egrave;
+const int Key_eacute;
+const int Key_ecircumflex;
+const int Key_ediaeresis;
+const int Key_igrave;
+const int Key_iacute;
+const int Key_icircumflex;
+const int Key_idiaeresis;
+const int Key_eth;
+const int Key_ntilde;
+const int Key_ograve;
+const int Key_oacute;
+const int Key_ocircumflex;
+const int Key_otilde;
+const int Key_odiaeresis;
+const int Key_division;
+const int Key_oslash;
+const int Key_ugrave;
+const int Key_uacute;
+const int Key_ucircumflex;
+const int Key_udiaeresis;
+const int Key_yacute;
+const int Key_thorn;
+const int Key_ydiaeresis;
+
+const int Key_unknown;
+
+%End
diff --git a/python/pyqt/sip/qt/qkeysequence.sip b/python/pyqt/sip/qt/qkeysequence.sip
new file mode 100644
index 00000000..c7800f93
--- /dev/null
+++ b/python/pyqt/sip/qt/qkeysequence.sip
@@ -0,0 +1,119 @@
+// This is the SIP interface definition for QKeySequence.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QKeySequence (Qt v3+)</Title>
+<Para>
+<Literal>QKeySequence</Literal> is fully implemented including the operators
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>QString()</Literal> and
+<Literal>int()</Literal>. A <Literal>QString</Literal> instance or a Python
+integer may be used whenever a <Literal>QKeySequence</Literal> can be used.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QKeySequence : Qt
+{
+%TypeHeaderCode
+#include <qkeysequence.h>
+%End
+
+public:
+ QKeySequence();
+ QKeySequence(const QString &);
+ QKeySequence(int);
+%If (Qt_3_1_0 -)
+ QKeySequence(int,int,int = 0,int = 0);
+
+ bool operator==(const QKeySequence &) const;
+ bool operator!=(const QKeySequence &) const;
+
+ uint count() const;
+ bool isEmpty() const;
+ Qt::SequenceMatch matches(const QKeySequence &) const;
+%End
+
+ int __int__() const;
+
+%ConvertToTypeCode
+ // Allow a QString or a Python integer whenever a QKeySequence is
+ // expected.
+
+ if (sipIsErr == NULL)
+ {
+ if (sipCanConvertToInstance(sipPy,sipClass_QKeySequence,SIP_NO_CONVERTORS))
+ return 1;
+
+ if (sipCanConvertToInstance(sipPy,sipClass_QString,0))
+ return 1;
+
+ PyErr_Clear();
+
+ PyInt_AsLong(sipPy);
+
+ return !PyErr_Occurred();
+ }
+
+ // We do this case before the int case because, otherwise,
+ // PyInt_AsLong() would achieve the same result but less efficiently.
+
+ if (sipCanConvertToInstance(sipPy,sipClass_QKeySequence,SIP_NO_CONVERTORS))
+ {
+ *sipCppPtr = reinterpret_cast<QKeySequence *>(sipConvertToInstance(sipPy,sipClass_QKeySequence,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr));
+
+ return 0;
+ }
+
+ if (sipCanConvertToInstance(sipPy,sipClass_QString,0))
+ {
+ int state;
+ QString *s = reinterpret_cast<QString *>(sipConvertToInstance(sipPy,sipClass_QString,0,0,&state,sipIsErr));
+
+ if (*sipIsErr)
+ {
+ sipReleaseInstance(s,sipClass_QString,state);
+ return 0;
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ *sipCppPtr = new QKeySequence(*s);
+ Py_END_ALLOW_THREADS
+
+ sipReleaseInstance(s,sipClass_QString,state);
+
+ return sipGetState(sipTransferObj);
+ }
+
+ int key = PyInt_AsLong(sipPy);
+
+ Py_BEGIN_ALLOW_THREADS
+ *sipCppPtr = new QKeySequence(key);
+ Py_END_ALLOW_THREADS
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qlabel.sip b/python/pyqt/sip/qt/qlabel.sip
new file mode 100644
index 00000000..62655e6c
--- /dev/null
+++ b/python/pyqt/sip/qt/qlabel.sip
@@ -0,0 +1,157 @@
+// This is the SIP interface definition for QLabel.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLabel</Title>
+<Para>
+<Literal>QLabel</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QLabel : QFrame
+{
+%TypeHeaderCode
+#include <qlabel.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QLabel(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ QLabel(const char *,QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ QLabel(QWidget *,const char *,QWidget * /TransferThis/,const char * = 0,WFlags = 0);
+%End
+%If (Qt_2_00 -)
+ QLabel(QWidget * /TransferThis/,const char * = 0,WFlags = 0);
+ QLabel(const QString &,QWidget * /TransferThis/,const char * = 0,WFlags = 0);
+ QLabel(QWidget *,const QString &,QWidget * /TransferThis/,const char * = 0,WFlags = 0);
+%End
+
+%If (- Qt_2_00)
+ const char *text() const;
+%End
+%If (Qt_2_00 -)
+ QString text() const;
+%End
+ QPixmap *pixmap() const;
+%If (Qt_3_0_0 -)
+ QPicture *picture() const;
+%End
+ QMovie *movie() const;
+
+%If (Qt_2_00 -)
+ TextFormat textFormat() const;
+ void setTextFormat(TextFormat);
+%End
+
+ int alignment() const;
+%If (- Qt_2_00)
+ void setAlignment(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setAlignment(int);
+%End
+%If (- Qt_2_00)
+ int margin() const;
+ void setMargin(int);
+%End
+%If (Qt_2_00 -)
+ int indent() const;
+ void setIndent(int);
+%End
+
+ bool autoResize() const;
+%If (- Qt_2_00)
+ void setAutoResize(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setAutoResize(bool);
+%End
+%If (Qt_2_2_0 -)
+ bool hasScaledContents() const;
+ void setScaledContents(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+ QSize sizeHint() const;
+%If (Qt_2_1_0 -)
+ QSize minimumSizeHint() const;
+%End
+%If (- Qt_2_00)
+ void setBuddy(QWidget *);
+%End
+%If (Qt_2_00 -)
+ virtual void setBuddy(QWidget *);
+%End
+ QWidget *buddy() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ void setAutoMask(bool);
+%End
+%If (Qt_2_00 -)
+ int heightForWidth(int) const;
+%End
+
+%If (Qt_3_0_0 -)
+ void setFont(const QFont &);
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setText(const char *);
+ void setPixmap(const QPixmap &);
+%End
+%If (Qt_2_00 -)
+ virtual void setText(const QString &);
+ virtual void setPixmap(const QPixmap &);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setPicture(const QPicture &);
+%End
+%If (- Qt_2_00)
+ void setMovie(const QMovie &);
+ void setNum(int /Constrained/);
+ void setNum(double);
+%End
+%If (Qt_2_00 -)
+ virtual void setMovie(const QMovie &);
+ virtual void setNum(int /Constrained/);
+ virtual void setNum(double);
+%End
+ void clear();
+
+protected:
+ void drawContents(QPainter *);
+%If (Qt_2_00 - Qt_3_0_0)
+ void drawContentsMask(QPainter *);
+%End
+%If (Qt_2_1_0 -)
+ void fontChange(const QFont &);
+%End
+%If (Qt_2_2_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+
+private:
+ QLabel(const QLabel &);
+};
diff --git a/python/pyqt/sip/qt/qlayout.sip b/python/pyqt/sip/qt/qlayout.sip
new file mode 100644
index 00000000..4270e1ef
--- /dev/null
+++ b/python/pyqt/sip/qt/qlayout.sip
@@ -0,0 +1,597 @@
+// This is the SIP interface definition for QBoxLayout, QGLayoutIterator,
+// QGridLayout, QHBoxLayout, QLayout, QLayoutItem, QLayoutIterator,
+// QSpacerItem, QVBoxLayout and QWidgetItem.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLayout</Title>
+<Para>
+<Literal>QLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QBoxLayout</Title>
+<Para>
+<Literal>QBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLayoutIterator (Qt v2+)</Title>
+<Para>
+<Literal>QGLayoutIterator</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGridLayout</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>findWidget</Function></FuncDef>
+ <ParamDef>QWidget *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>row</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>w</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result, <Literal>row</Literal> and
+<Literal>col</Literal>. (Qt v2+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QHBoxLayout</Title>
+<Para>
+<Literal>QHBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QLayoutItem (Qt v2+)</Title>
+<Para>
+<Literal>QLayoutItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QLayoutIterator (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>QLayoutItem *<Function>next</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a wrapper around the <Literal>QLayoutIterator</Literal>
+<Literal>++</Literal> operator.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSpacerItem (Qt v2+)</Title>
+<Para>
+<Literal>QSpacerItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QVBoxLayout</Title>
+<Para>
+<Literal>QVBoxLayout</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWidgetItem (Qt v2+)</Title>
+<Para>
+<Literal>QWidgetItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QLayout : QObject
+{
+%TypeHeaderCode
+#include <qlayout.h>
+%End
+
+public:
+ enum
+ {
+ unlimited = QCOORD_MAX
+ };
+
+ int defaultBorder() const;
+ virtual bool activate();
+ void freeze(int,int);
+ void freeze();
+ void setMenuBar(QMenuBar *);
+ QWidget *mainWidget();
+
+protected:
+ QLayout(QWidget * /TransferThis/,int,int,const char *);
+ QLayout(int = -1,const char * = 0);
+
+ QGManager *basicManager();
+ virtual QChain *mainVerticalChain() = 0;
+ virtual QChain *mainHorizontalChain() = 0;
+ virtual void initGM() = 0;
+ void addChildLayout(QLayout *);
+
+private:
+ QLayout(const QLayout &);
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+class QGLayoutIterator
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ virtual QLayoutItem *next() = 0;
+ virtual QLayoutItem *current() = 0;
+ virtual QLayoutItem *takeCurrent() = 0 /TransferBack/;
+};
+
+
+class QLayoutIterator
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ QLayoutIterator(QGLayoutIterator *) /Default/;
+ QLayoutIterator(const QLayoutIterator &);
+
+ QLayoutItem *next();
+%MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = ++(*sipCpp);
+ Py_END_ALLOW_THREADS
+%End
+
+ QLayoutItem *current();
+ QLayoutItem *takeCurrent() /TransferBack/;
+ void deleteCurrent();
+};
+
+
+class QLayoutItem
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ QLayoutItem(int = 0 );
+
+%ConvertToSubClassCode
+ // Note that we let the QObject sub-class code handle QLayout and it's
+ // sub-classes.
+ if (sipCpp->widget())
+ sipClass = sipClass_QWidgetItem;
+ else if (sipCpp->spacerItem())
+ sipClass = sipClass_QSpacerItem;
+ else
+ sipClass = NULL;
+%End
+
+ virtual QSize sizeHint() const = 0;
+ virtual QSize minimumSize() const = 0;
+ virtual QSize maximumSize() const = 0;
+ virtual QSizePolicy::ExpandData expanding() const = 0;
+ virtual void setGeometry(const QRect &) = 0;
+ virtual QRect geometry() const = 0;
+ virtual bool isEmpty() const = 0;
+ virtual bool hasHeightForWidth() const;
+ virtual int heightForWidth(int) const;
+ virtual void invalidate();
+
+ virtual QWidget *widget();
+ virtual QLayoutIterator iterator();
+ virtual QLayout *layout();
+ virtual QSpacerItem *spacerItem();
+
+ int alignment() const;
+ virtual void setAlignment(int);
+};
+
+
+class QSpacerItem : QLayoutItem
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ QSpacerItem(int,int,QSizePolicy::SizeType = QSizePolicy::Minimum,
+ QSizePolicy::SizeType = QSizePolicy::Minimum);
+
+ void changeSize(int,int,QSizePolicy::SizeType = QSizePolicy::Minimum,
+ QSizePolicy::SizeType = QSizePolicy::Minimum);
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+ QSizePolicy::ExpandData expanding() const;
+ bool isEmpty() const;
+ void setGeometry(const QRect &);
+ QRect geometry() const;
+ QSpacerItem *spacerItem();
+};
+
+
+class QWidgetItem : QLayoutItem
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ QWidgetItem(QWidget *);
+
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+ QSizePolicy::ExpandData expanding() const;
+ bool isEmpty() const;
+ void setGeometry(const QRect &) ;
+ QRect geometry() const;
+ virtual QWidget *widget();
+
+ bool hasHeightForWidth() const;
+ int heightForWidth(int) const;
+};
+
+
+class QLayout : QObject, QLayoutItem
+{
+%TypeHeaderCode
+#include <qabstractlayout.h>
+%End
+
+public:
+ enum ResizeMode {
+ FreeResize,
+ Minimum,
+ Fixed,
+%If (Qt_3_1_0 -)
+ Auto
+%End
+ };
+
+ QLayout(QWidget * /TransferThis/,int = 0,int = -1,const char * = 0);
+ QLayout(QLayout * /TransferThis/,int = -1,const char * = 0);
+ QLayout(int = -1,const char * = 0);
+
+ int margin() const;
+ int spacing() const;
+
+ virtual void setMargin(int);
+ virtual void setSpacing(int);
+
+%If (- Qt_3_1_0)
+ enum {
+ unlimited
+ };
+%End
+
+%If (Qt_3_0_0 -)
+ int defaultBorder() const;
+ void freeze(int,int);
+ void freeze();
+%End
+
+ void setResizeMode(ResizeMode);
+ ResizeMode resizeMode() const;
+
+ virtual void setMenuBar(QMenuBar *);
+ QMenuBar *menuBar() const;
+
+ QWidget *mainWidget();
+ bool isTopLevel() const;
+
+ virtual void setAutoAdd(bool);
+ bool autoAdd() const;
+
+%If (Qt_2_1_0 -)
+ void invalidate();
+%End
+ QRect geometry() const;
+ bool activate();
+
+ void add(QWidget *);
+ virtual void addItem(QLayoutItem * /Transfer/) = 0;
+
+%If (Qt_3_1_0 -)
+ void remove(QWidget *);
+ void removeItem(QLayoutItem * /TransferBack/);
+%End
+
+ QSizePolicy::ExpandData expanding() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+ void setGeometry(const QRect &) = 0;
+ QLayoutIterator iterator() = 0;
+ bool isEmpty() const;
+
+ int totalHeightForWidth(int) const;
+ QSize totalMinimumSize() const;
+ QSize totalMaximumSize() const;
+ QSize totalSizeHint() const;
+ QLayout *layout();
+
+%If (Qt_2_1_0 -)
+ bool supportsMargin() const;
+%End
+
+%If (Qt_2_2_0 -)
+ void setEnabled(bool);
+ bool isEnabled() const;
+%End
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+%If (Qt_3_0_0 -)
+ void childEvent(QChildEvent *);
+%End
+ void addChildLayout(QLayout *);
+ void deleteAllItems();
+
+%If (Qt_2_1_0 -)
+ void setSupportsMargin(bool);
+ QRect alignmentRect(const QRect &) const;
+%End
+
+private:
+ QLayout(const QLayout &);
+};
+
+%End
+
+
+class QGridLayout : QLayout
+{
+%TypeHeaderCode
+#include <qlayout.h>
+%End
+
+public:
+%If (- Qt_2_1_0)
+ QGridLayout(QWidget * /TransferThis/,int,int,int = 0,int = -1,const char * = 0);
+ QGridLayout(int,int,int = -1,const char * = 0);
+%End
+%If (Qt_2_00 - Qt_2_1_0)
+ QGridLayout(QLayout * /TransferThis/,int,int,int = -1,const char * = 0);
+%End
+%If (Qt_2_1_0 -)
+ QGridLayout(QWidget * /TransferThis/,int = 1,int = 1,int = 0,int = -1,const char * = 0);
+ QGridLayout(int = 1,int = 1,int = -1,const char * = 0);
+ QGridLayout(QLayout * /TransferThis/,int = 1,int = 1,int = -1,const char * = 0);
+%End
+
+%If (Qt_2_00 -)
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+%End
+
+%If (- Qt_2_00)
+ void setRowStretch(int,int);
+ void setColStretch(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setRowStretch(int,int);
+ virtual void setColStretch(int,int);
+%End
+%If (Qt_2_1_0 -)
+ int rowStretch(int) const;
+ int colStretch(int) const;
+%End
+
+%If (Qt_3_2_0 -)
+ void setRowSpacing(int,int);
+ void setColSpacing(int,int);
+ int rowSpacing(int) const;
+ int colSpacing(int) const;
+%End
+
+ int numRows() const;
+ int numCols() const;
+%If (Qt_2_1_0 -)
+ QRect cellGeometry(int,int) const;
+%End
+
+%If (Qt_2_00 -)
+ bool hasHeightForWidth() const;
+ int heightForWidth(int) const;
+%If (Qt_3_1_0 -)
+ int minimumHeightForWidth(int) const;
+%End
+
+ QSizePolicy::ExpandData expanding() const;
+ void invalidate();
+
+ void addItem(QLayoutItem * /Transfer/);
+%End
+%If (Qt_2_1_0 -)
+ void addItem(QLayoutItem * /Transfer/,int,int);
+%End
+%If (Qt_2_00 -)
+ void addMultiCell(QLayoutItem * /Transfer/,int,int,int,int,int = 0);
+%End
+
+ void addWidget(QWidget *,int,int,int = 0);
+ void addMultiCellWidget(QWidget *,int,int,int,int,int = 0);
+ void addLayout(QLayout * /Transfer/,int,int);
+%If (Qt_2_2_0 -)
+ void addMultiCellLayout(QLayout * /Transfer/,int,int,int,int,int = 0);
+%End
+ void addRowSpacing(int,int);
+ void addColSpacing(int,int);
+ void expand(int,int);
+
+%If (Qt_2_00 -)
+ enum Corner {
+ TopLeft,
+ TopRight,
+ BottomLeft,
+ BottomRight
+ };
+
+ void setOrigin(Corner);
+%End
+%If (Qt_3_0_0 -)
+ Corner origin() const;
+%End
+%If (Qt_2_00 -)
+ QLayoutIterator iterator();
+ void setGeometry(const QRect &);
+%End
+
+protected:
+%If (- Qt_2_00)
+ QChain *mainVerticalChain();
+ QChain *mainHorizontalChain();
+ void initGM();
+%End
+
+%If (Qt_2_00 -)
+ bool findWidget(QWidget *,int *,int *);
+ void add(QLayoutItem * /Transfer/,int,int);
+%End
+
+private:
+ QGridLayout(const QGridLayout &);
+};
+
+
+class QBoxLayout : QLayout
+{
+%TypeHeaderCode
+#include <qlayout.h>
+%End
+
+public:
+ enum Direction {
+ LeftToRight,
+ RightToLeft,
+ TopToBottom,
+ BottomToTop,
+ Down = TopToBottom,
+ Up = BottomToTop
+ };
+
+ QBoxLayout(QWidget * /TransferThis/,Direction,int = 0,int = -1,const char * = 0);
+%If (Qt_2_00 -)
+ QBoxLayout(QLayout * /TransferThis/,Direction,int = -1,const char * = 0);
+%End
+ QBoxLayout(Direction,int = -1,const char * = 0);
+
+ Direction direction() const;
+%If (Qt_2_1_0 -)
+ void setDirection(Direction);
+%End
+ void addSpacing(int);
+ void addStretch(int = 0);
+%If (- Qt_2_00)
+ void addWidget(QWidget *,int = 0,int = AlignCenter);
+%End
+ void addLayout(QLayout * /Transfer/,int = 0);
+ void addStrut(int);
+%If (Qt_2_00 -)
+ void addItem(QLayoutItem * /Transfer/);
+ void addWidget(QWidget *,int = 0,int = 0);
+%If (Qt_2_1_0 -)
+ void insertSpacing(int,int);
+ void insertStretch(int,int = 0);
+ void insertWidget(int,QWidget *,int = 0,int = 0);
+ void insertLayout(int,QLayout * /Transfer/,int = 0);
+ int findWidget(QWidget *);
+%End
+ bool setStretchFactor(QWidget *,int);
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+ bool hasHeightForWidth() const;
+ int heightForWidth(int) const;
+%If (Qt_3_1_0 -)
+ int minimumHeightForWidth(int) const;
+%End
+
+ QSizePolicy::ExpandData expanding() const;
+ void invalidate();
+ QLayoutIterator iterator();
+ void setGeometry(const QRect &);
+%End
+
+protected:
+%If (- Qt_2_00)
+ QChain *mainVerticalChain();
+ QChain *mainHorizontalChain();
+ void initGM();
+%End
+%If (Qt_2_1_0 -)
+ void insertItem(int,QLayoutItem * /Transfer/);
+%End
+
+private:
+ QBoxLayout(const QBoxLayout &);
+};
+
+
+class QHBoxLayout : QBoxLayout
+{
+%TypeHeaderCode
+#include <qlayout.h>
+%End
+
+public:
+ QHBoxLayout(QWidget * /TransferThis/,int = 0,int = -1,const char * = 0);
+%If (Qt_2_00 -)
+ QHBoxLayout(QLayout * /TransferThis/,int = -1,const char * = 0);
+%End
+ QHBoxLayout(int = -1,const char * = 0);
+
+private:
+%If (Qt_3_1_0 -)
+ QHBoxLayout(const QHBoxLayout &);
+%End
+};
+
+
+class QVBoxLayout : QBoxLayout
+{
+%TypeHeaderCode
+#include <qlayout.h>
+%End
+
+public:
+ QVBoxLayout(QWidget * /TransferThis/,int = 0,int = -1,const char * = 0);
+%If (Qt_2_00 -)
+ QVBoxLayout(QLayout * /TransferThis/,int = -1,const char * = 0);
+%End
+ QVBoxLayout(int = -1,const char * = 0);
+
+private:
+%If (Qt_3_1_0 -)
+ QVBoxLayout(const QVBoxLayout &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qlcdnumber.sip b/python/pyqt/sip/qt/qlcdnumber.sip
new file mode 100644
index 00000000..ae250fd8
--- /dev/null
+++ b/python/pyqt/sip/qt/qlcdnumber.sip
@@ -0,0 +1,137 @@
+// This is the SIP interface definition for QLCDNumber.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLCDNumber</Title>
+<Para>
+<Literal>QLCDNumber</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QLCDNumber : QFrame
+{
+%TypeHeaderCode
+#include <qlcdnumber.h>
+%End
+
+public:
+ QLCDNumber(QWidget * /TransferThis/ = 0,const char * = 0);
+ QLCDNumber(uint,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_00)
+ enum Mode {
+ HEX,
+ DEC,
+ OCT,
+ BIN
+ };
+%End
+%If (Qt_2_00 -)
+ enum Mode {
+ Hex, HEX = Hex,
+ Dec, DEC = Dec,
+ Oct, OCT = Oct,
+ Bin, BIN = Bin
+ };
+%End
+
+ enum SegmentStyle {
+ Outline,
+ Filled,
+ Flat
+ };
+
+ bool smallDecimalPoint() const;
+
+ int numDigits() const;
+%If (- Qt_2_00)
+ void setNumDigits(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setNumDigits(int);
+%End
+
+ bool checkOverflow(int /Constrained/) const;
+ bool checkOverflow(double) const;
+
+ Mode mode() const;
+%If (- Qt_2_00)
+ void setMode(Mode);
+%End
+%If (Qt_2_00 -)
+ virtual void setMode(Mode);
+%End
+
+ SegmentStyle segmentStyle() const;
+%If (- Qt_2_00)
+ void setSegmentStyle(SegmentStyle);
+%End
+%If (Qt_2_00 -)
+ virtual void setSegmentStyle(SegmentStyle);
+%End
+
+ double value() const;
+ int intValue() const;
+
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void display(const char *);
+%End
+%If (Qt_2_00 -)
+ void display(const QString &);
+%End
+ void display(int /Constrained/);
+ void display(double);
+%If (- Qt_2_00)
+ void setHexMode();
+ void setDecMode();
+ void setOctMode();
+ void setBinMode();
+ void setSmallDecimalPoint(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setHexMode();
+ virtual void setDecMode();
+ virtual void setOctMode();
+ virtual void setBinMode();
+ virtual void setSmallDecimalPoint(bool);
+%End
+
+signals:
+ void overflow();
+
+protected:
+%If (- Qt_2_00)
+ void resizeEvent(QResizeEvent *);
+%End
+ void drawContents(QPainter *);
+
+private:
+ QLCDNumber(const QLCDNumber &);
+};
diff --git a/python/pyqt/sip/qt/qlibrary.sip b/python/pyqt/sip/qt/qlibrary.sip
new file mode 100644
index 00000000..cb9813ad
--- /dev/null
+++ b/python/pyqt/sip/qt/qlibrary.sip
@@ -0,0 +1,59 @@
+// This is the SIP interface definition for QLibrary.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLibrary (Qt v3+)</Title>
+<Para>
+<Literal>QLibrary</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QLibrary
+{
+%TypeHeaderCode
+#include <qlibrary.h>
+%End
+
+public:
+ QLibrary(const QString &);
+
+ void *resolve(const char *);
+ static void *resolve(const QString &,const char *);
+
+ bool load();
+ virtual bool unload();
+ bool isLoaded() const;
+
+ bool autoUnload() const;
+ void setAutoUnload(bool);
+
+ QString library() const;
+
+private:
+ QLibrary(const QLibrary &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qlineedit.sip b/python/pyqt/sip/qt/qlineedit.sip
new file mode 100644
index 00000000..47bd3fa0
--- /dev/null
+++ b/python/pyqt/sip/qt/qlineedit.sip
@@ -0,0 +1,427 @@
+// This is the SIP interface definition for QLineEdit.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLineEdit</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>characterAt</Function></FuncDef>
+ <ParamDef>int <Parameter>xpos</Parameter></ParamDef>
+ <ParamDef>QChar *<Parameter>chr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>xpos</Literal> parameter and returns the int
+result and the <Literal>chr</Literal> value as a tuple. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>start</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>end</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns the bool result and the
+<Literal>start</Literal> and <Literal>end</Literal> values as a tuple.
+(Qt v3+)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QLineEdit : QFrame
+{
+%TypeHeaderCode
+#include <qlineedit.h>
+%End
+
+public:
+ QLineEdit(QWidget * /TransferThis/,const char * = 0);
+ QLineEdit(const QString &,QWidget * /TransferThis/,const char * = 0);
+%If (Qt_3_2_0 -)
+ QLineEdit(const QString &,const QString &,QWidget * /TransferThis/,
+ const char * = 0);
+%End
+
+ QString text() const;
+
+ QString displayText() const;
+
+ int maxLength() const;
+
+ bool frame() const;
+
+ enum EchoMode {
+ Normal,
+ NoEcho,
+ Password
+ };
+
+ EchoMode echoMode() const;
+
+ bool isReadOnly() const;
+
+ const QValidator *validator() const;
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ int cursorPosition() const;
+ // Obsolete.
+ bool validateAndSet(const QString &,int,int,int);
+
+ int alignment() const;
+
+ void cursorForward(bool,int = 1);
+ void cursorBackward(bool,int = 1);
+ void cursorWordForward(bool);
+ void cursorWordBackward(bool);
+ void backspace();
+ void del() /PyName=delChar/;
+ void home(bool);
+ void end(bool);
+
+%If (Qt_3_2_0 -)
+ bool isModified() const;
+ void clearModified();
+%End
+
+ // Obsolete.
+ bool edited() const;
+ // Obsolete.
+ void setEdited(bool);
+
+ bool hasSelectedText() const;
+ QString selectedText() const;
+%If (Qt_3_2_0 -)
+ int selectionStart() const;
+%End
+
+ bool isUndoAvailable() const;
+ bool isRedoAvailable() const;
+
+ bool dragEnabled() const;
+
+%If (Qt_3_2_0 -)
+ QString inputMask() const;
+ void setInputMask(const QString &);
+ bool hasAcceptableInput() const;
+%End
+
+public slots:
+ virtual void setText(const QString &);
+ virtual void selectAll();
+ virtual void deselect();
+ virtual void clearValidator();
+ virtual void insert(const QString &);
+ virtual void clear();
+ virtual void undo();
+ virtual void redo();
+ virtual void setMaxLength(int);
+ virtual void setFrame(bool);
+ virtual void setEchoMode(EchoMode);
+ virtual void setReadOnly(bool);
+ virtual void setValidator(const QValidator *);
+ virtual void setFont(const QFont &);
+ virtual void setPalette(const QPalette &);
+ virtual void setSelection(int,int);
+ virtual void setCursorPosition(int);
+ virtual void setAlignment(int);
+%If (Qt_CLIPBOARD)
+ virtual void cut();
+ virtual void copy() const;
+ virtual void paste();
+%End
+ virtual void setDragEnabled(bool);
+
+signals:
+ void textChanged(const QString &);
+ void returnPressed();
+%If (Qt_3_1_0 -)
+ void lostFocus();
+%End
+ void selectionChanged();
+
+protected:
+ bool event(QEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void imStartEvent(QIMEvent *);
+ void imComposeEvent(QIMEvent *);
+ void imEndEvent(QIMEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void resizeEvent(QResizeEvent *);
+ void drawContents(QPainter *);
+%If (Qt_DRAGANDDROP)
+ void dragEnterEvent(QDragEnterEvent *);
+ void dragMoveEvent(QDragMoveEvent *);
+ void dragLeaveEvent(QDragLeaveEvent *);
+ void dropEvent(QDropEvent *);
+%End
+ void contextMenuEvent(QContextMenuEvent *);
+ virtual QPopupMenu *createPopupMenu() /Factory/;
+ void windowActivationChange(bool);
+
+public:
+ // These appeared in v3.0.2 but defined as incompatible 3.0 addons,
+ // until v3.1.0. v3.2.0 then defined them as internal and obsolete.
+%If (Qt_3_1_0 -)
+ void setPasswordChar(QChar);
+ QChar passwordChar() const;
+%End
+
+ // Obsolete.
+ SIP_PYTUPLE characterAt(int) const;
+%MethodCode
+ int res;
+ QChar *chr;
+
+ Py_BEGIN_ALLOW_THREADS
+ chr = new QChar();
+ res = sipCpp -> characterAt(a0,chr);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(iB)",res,chr,sipClass_QChar,NULL);
+%End
+
+ // Obsolete.
+ bool getSelection(int *,int *);
+
+private:
+ QLineEdit(const QLineEdit &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QLineEdit : QWidget
+{
+%TypeHeaderCode
+#include <qlineedit.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QLineEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QLineEdit(QWidget * /TransferThis/,const char * = 0);
+ QLineEdit(const QString &,QWidget * /TransferThis/,const char * = 0);
+%End
+
+%If (- Qt_2_00)
+ const char *text() const;
+%End
+%If (Qt_2_00 -)
+ QString text() const;
+
+ QString displayText() const;
+%End
+
+%If (- Qt_2_00)
+ void setMaxLength(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMaxLength(int);
+%End
+ int maxLength() const;
+
+%If (- Qt_2_00)
+ void setFrame(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setFrame(bool);
+%End
+ bool frame() const;
+
+ enum EchoMode {
+ Normal,
+ NoEcho,
+ Password
+ };
+
+%If (- Qt_2_00)
+ void setEchoMode(EchoMode);
+%End
+%If (Qt_2_00 -)
+ virtual void setEchoMode(EchoMode);
+%End
+ EchoMode echoMode() const;
+
+%If (Qt_2_1_0 -)
+ void setReadOnly(bool);
+%End
+%If (Qt_2_1_0 -)
+ bool isReadOnly() const;
+%End
+
+%If (- Qt_2_00)
+ void setValidator(QValidator *);
+ QValidator *validator() const;
+%End
+%If (Qt_2_00 -)
+ virtual void setValidator(QValidator *);
+%End
+%If (Qt_2_00 -)
+ const QValidator *validator() const;
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 -)
+ QSize minimumSizeHint() const;
+%End
+%If (Qt_2_00 -)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (- Qt_2_00)
+ void setCursorPosition(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setCursorPosition(int);
+%End
+ int cursorPosition() const;
+%If (- Qt_2_00)
+ bool validateAndSet(const char *,int,int,int);
+%End
+%If (Qt_2_00 -)
+ bool validateAndSet(const QString &,int,int,int);
+%End
+
+%If (Qt_2_00 -)
+ int alignment() const;
+%End
+
+%If (Qt_2_00 -)
+ void cursorLeft(bool,int = 1);
+ void cursorRight(bool,int = 1);
+ void cursorWordForward(bool);
+ void cursorWordBackward(bool);
+ void backspace();
+ void del() /PyName=delChar/;
+ void home(bool);
+ void end(bool);
+
+ void setEdited(bool);
+ bool edited() const;
+%End
+
+%If (Qt_2_00 -)
+ bool hasMarkedText() const;
+ QString markedText() const;
+%End
+
+%If (Qt_CLIPBOARD)
+ void cut();
+ void copy() const;
+ void paste();
+%End
+
+%If (- Qt_2_00)
+ void setEnabled(bool);
+ void setFont(const QFont &);
+ void setPalette(const QPalette &);
+ void setSelection(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setEnabled(bool);
+ virtual void setFont(const QFont &);
+ virtual void setPalette(const QPalette &);
+ virtual void setSelection(int,int);
+
+ void setAlignment(int);
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setText(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setText(const QString &);
+%End
+ void selectAll();
+ void deselect();
+ void clearValidator();
+%If (- Qt_2_00)
+ void insert(const char *);
+%End
+%If (Qt_2_00 -)
+ void insert(const QString &);
+%End
+ void clear();
+
+signals:
+%If (- Qt_2_00)
+ void textChanged(const char *);
+%End
+%If (Qt_2_00 -)
+ void textChanged(const QString &);
+%End
+ void returnPressed();
+
+protected:
+%If (Qt_2_2_0 -)
+ bool event(QEvent *);
+%End
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+ void leaveEvent(QEvent *);
+ void repaintArea(int,int);
+%If (- Qt_2_00)
+ void timerEvent(QTimerEvent *);
+ bool event(QEvent *);
+ bool hasMarkedText() const;
+ QString markedText() const;
+%End
+%If (Qt_2_00 -)
+%If (Qt_DRAGANDDROP)
+ void dragEnterEvent(QDragEnterEvent *);
+ void dropEvent(QDropEvent *);
+%End
+%End
+
+private:
+ QLineEdit(const QLineEdit &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qlist.sip b/python/pyqt/sip/qt/qlist.sip
new file mode 100644
index 00000000..8b5750ca
--- /dev/null
+++ b/python/pyqt/sip/qt/qlist.sip
@@ -0,0 +1,111 @@
+// This is the SIP interface definition for all types based on the QList
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QList&lt;type&gt; (Qt v2)</Title>
+<Para>
+Types based on the <Literal>QList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+
+template<Type>
+%MappedType QList<Type>
+{
+%TypeHeaderCode
+#include <qlist.h>
+%End
+
+%ConvertFromTypeCode
+ Type *tb;
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+
+ for (tb = sipCpp -> first(); tb != NULL; tb = sipCpp -> next())
+ {
+ PyObject *tbobj;
+
+ if ((tbobj = sipConvertFromInstance(tb,sipClass_Type,sipTransferObj)) == NULL || PyList_SetItem(l,i,tbobj) < 0)
+ {
+ Py_XDECREF(tbobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,0))
+ return 0;
+
+ return 1;
+ }
+
+ QList<Type> *ql = new QList<Type>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ // We apply the transfer to the list itself, not the elements.
+ // Note that any temporary element will never be destroyed.
+ // There is nothing that can be done about this.
+ ql -> append(reinterpret_cast<Type *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,0,0,0,sipIsErr)));
+
+ if (*sipIsErr)
+ {
+ delete ql;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = ql;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qlistbox.sip b/python/pyqt/sip/qt/qlistbox.sip
new file mode 100644
index 00000000..0027e8f2
--- /dev/null
+++ b/python/pyqt/sip/qt/qlistbox.sip
@@ -0,0 +1,571 @@
+// This is the SIP interface definition for QListBox, QListBoxItem,
+// QListBoxPixmap and QListBoxText.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QListBox</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>itemYPos</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>yPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>index</Literal> parameter and returns a tuple
+containing the <Literal>bool</Literal> result and <Literal>yPos</Literal>.
+(Qt v1.x)
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxItem</Title>
+<Para>
+<Literal>QListBoxItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxPixmap</Title>
+<Para>
+<Literal>QListBoxPixmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListBoxText</Title>
+<Para>
+<Literal>QListBoxText</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+%ModuleHeaderCode
+#include <qlistbox.h>
+%End
+
+// List box item types.
+const int LBI_Undefined;
+const int LBI_Text;
+const int LBI_Pixmap;
+const int LBI_UserDefined;
+
+
+class QListBox : QTableView
+{
+%TypeHeaderCode
+#include <qlistbox.h>
+%End
+
+public:
+ QListBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ void setFont(const QFont &);
+ uint count() const;
+ void insertStrList(const QStrList *,int = -1);
+// void insertStrList(const char **,int = -1,int = -1);
+ void insertItem(const QListBoxItem * /Transfer/,int = -1);
+ void insertItem(const char *,int = -1);
+ void insertItem(const QPixmap &,int = -1);
+ void inSort(const QListBoxItem *);
+ void inSort(const char *);
+ void removeItem(int);
+ void clear();
+ const char *text(int) const;
+ const QPixmap *pixmap(int) const;
+ void changeItem(const QListBoxItem * /Transfer/,int);
+ void changeItem(const char *,int);
+ void changeItem(const QPixmap &,int);
+ bool autoUpdate() const;
+ void setAutoUpdate(bool);
+ int numItemsVisible() const;
+ void setFixedVisibleLines(int);
+ int currentItem() const;
+ void setCurrentItem(int);
+ void centerCurrentItem();
+ int topItem() const;
+ void setTopItem(int);
+ void setBottomItem(int);
+ bool dragSelect() const;
+ void setDragSelect(bool);
+ bool autoScroll() const;
+ void setAutoScroll(bool);
+ bool autoScrollBar() const;
+ void setAutoScrollBar(bool);
+ bool scrollBar() const;
+ void setScrollBar(bool);
+ bool autoBottomScrollBar() const;
+ void setAutoBottomScrollBar(bool);
+ bool bottomScrollBar() const;
+ void setBottomScrollBar(bool);
+ bool smoothScrolling() const;
+ void setSmoothScrolling(bool);
+ int itemHeight() const;
+ int itemHeight(int) const;
+ long maxItemWidth() const;
+ bool isMultiSelection() const;
+ void setMultiSelection(bool);
+ void setSelected(int,bool);
+ bool isSelected(int) const;
+ QSize sizeHint() const;
+
+public slots:
+ void clearSelection();
+
+signals:
+ void highlighted(int);
+ void selected(int);
+ void highlighted(const char *);
+ void selected(const char *);
+ void selectionChanged();
+
+protected:
+ QListBoxItem *item(int) const;
+ bool itemVisible(int);
+ int cellHeight(int = 0);
+ void paintCell(QPainter *,int,int);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void resizeEvent(QResizeEvent *);
+ void timerEvent(QTimerEvent *);
+ int findItem(int) const;
+ bool itemYPos(int,int *) const;
+ void updateItem(int,bool = 1);
+ void clearList();
+ void updateCellWidth();
+ void toggleCurrentItem();
+
+private:
+ QListBox(const QListBox &);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QListBox : QScrollView
+{
+%TypeHeaderCode
+#include <qlistbox.h>
+%End
+
+public:
+ QListBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ virtual void setFont(const QFont &);
+
+ uint count() const;
+
+ void insertStringList(const QStringList &,int = -1);
+ void insertStrList(const QStrList *,int = -1);
+// void insertStrList(const QStrList &,int = -1);
+// void insertStrList(const char **,int = -1,int = -1);
+
+ void insertItem(const QListBoxItem * /Transfer/,int = -1);
+%If (Qt_2_1_0 -)
+ void insertItem(const QListBoxItem * /Transfer/,const QListBoxItem *);
+%End
+ void insertItem(const QString &,int = -1);
+ void insertItem(const QPixmap &,int = -1);
+%If (Qt_2_1_0 -)
+ void insertItem(const QPixmap &,const QString &,int = -1);
+%End
+
+ void removeItem(int);
+
+%If (- Qt_3_0_0)
+ void clear();
+%End
+
+ QString text(int) const;
+ const QPixmap *pixmap(int) const;
+
+ void changeItem(const QListBoxItem * /Transfer/,int);
+ void changeItem(const QString &,int);
+ void changeItem(const QPixmap &,int);
+%If (Qt_2_1_0 -)
+ void changeItem(const QPixmap &,const QString &,int);
+%End
+
+ void takeItem(const QListBoxItem * /TransferBack/);
+
+ int numItemsVisible() const;
+
+ int currentItem() const;
+%If (Qt_2_1_0 -)
+ QString currentText() const;
+%End
+ virtual void setCurrentItem(int);
+ virtual void setCurrentItem(QListBoxItem *);
+ void centerCurrentItem();
+ int topItem() const;
+ virtual void setTopItem(int);
+ virtual void setBottomItem(int);
+
+ long maxItemWidth() const;
+
+%If (- Qt_2_1_0)
+ enum SelectionMode {
+ Single,
+ Multi,
+ Extended
+ };
+%End
+%If (Qt_2_1_0 -)
+ enum SelectionMode {
+ Single,
+ Multi,
+ Extended,
+ NoSelection
+ };
+%End
+
+ virtual void setSelectionMode(SelectionMode);
+ SelectionMode selectionMode() const;
+
+ void setMultiSelection(bool);
+ bool isMultiSelection() const;
+
+ virtual void setSelected(QListBoxItem *,bool);
+ void setSelected(int,bool);
+ bool isSelected(int) const;
+ bool isSelected(QListBoxItem *) const;
+%If (Qt_3_1_0 -)
+ QListBoxItem *selectedItem() const;
+%End
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ QListBoxItem *item(int) const;
+ int index(const QListBoxItem *) const;
+%If (Qt_2_1_0 - Qt_3_0_0)
+ QListBoxItem *findItem(const QString &) const;
+%End
+%If (Qt_3_0_0 -)
+ QListBoxItem *findItem(const QString &,
+ ComparisonFlags = BeginsWith) const;
+%End
+
+ void triggerUpdate(bool);
+
+ bool itemVisible(int);
+ bool itemVisible(const QListBoxItem *);
+
+ enum LayoutMode {
+ FixedNumber,
+ FitToWidth,
+ FitToHeight = FitToWidth,
+ Variable
+ };
+
+ virtual void setColumnMode(LayoutMode);
+ virtual void setColumnMode(int);
+ virtual void setRowMode(LayoutMode);
+ virtual void setRowMode(int);
+
+ LayoutMode columnMode() const;
+ LayoutMode rowMode() const;
+
+ int numColumns() const;
+ int numRows() const;
+
+ bool variableWidth() const;
+ virtual void setVariableWidth(bool);
+
+ bool variableHeight() const;
+ virtual void setVariableHeight(bool);
+
+ void viewportPaintEvent(QPaintEvent *);
+
+ int itemHeight(int = 0) const;
+ QListBoxItem *itemAt(QPoint) const;
+
+ QRect itemRect(QListBoxItem *) const;
+
+%If (Qt_2_1_0 -)
+ QListBoxItem *firstItem() const;
+
+ void sort(bool = 1);
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void clear();
+%End
+ virtual void ensureCurrentVisible();
+ virtual void clearSelection();
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void selectAll(bool);
+ void invertSelection();
+%End
+%If (Qt_3_0_0 -)
+ virtual void selectAll(bool);
+ virtual void invertSelection();
+%End
+
+signals:
+ void highlighted(int);
+ void selected(int);
+ void highlighted(const QString &);
+ void selected(const QString &);
+ void highlighted(QListBoxItem *);
+ void selected(QListBoxItem *);
+
+ void selectionChanged();
+%If (Qt_2_1_0 -)
+ void selectionChanged(QListBoxItem *);
+ void currentChanged(QListBoxItem *);
+ void clicked(QListBoxItem *);
+ void clicked(QListBoxItem *,const QPoint &);
+ void pressed(QListBoxItem *);
+ void pressed(QListBoxItem *,const QPoint &);
+
+ void doubleClicked(QListBoxItem *);
+ void returnPressed(QListBoxItem *);
+ void rightButtonClicked(QListBoxItem *,const QPoint &);
+ void rightButtonPressed(QListBoxItem *,const QPoint &);
+ void mouseButtonPressed(int,QListBoxItem *,const QPoint &);
+ void mouseButtonClicked(int,QListBoxItem *,const QPoint &);
+%End
+
+%If (Qt_3_0_0 -)
+ void contextMenuRequested(QListBoxItem *,const QPoint &);
+%End
+
+%If (Qt_2_1_0 -)
+ void onItem(QListBoxItem *);
+ void onViewport();
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ void viewportMousePressEvent(QMouseEvent *);
+ void viewportMouseReleaseEvent(QMouseEvent *);
+ void viewportMouseDoubleClickEvent(QMouseEvent *);
+ void viewportMouseMoveEvent(QMouseEvent *);
+%End
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+%If (Qt_3_0_0 -)
+ void contentsContextMenuEvent(QContextMenuEvent *);
+%End
+
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void resizeEvent(QResizeEvent *);
+ void showEvent(QShowEvent *);
+
+%If (Qt_3_0_0 -)
+ bool eventFilter(QObject *,QEvent *);
+%End
+
+ void updateItem(int);
+ void updateItem(QListBoxItem *);
+
+ virtual void paintCell(QPainter *,int,int);
+
+ void toggleCurrentItem();
+%If (Qt_2_2_0 -)
+ bool isRubberSelecting() const;
+%End
+
+ void doLayout() const;
+
+%If (Qt_3_0_0 -)
+ void windowActivationChange(bool);
+%End
+
+protected slots:
+%If (Qt_2_1_0 -)
+ void clearInputString();
+%End
+
+private:
+ QListBox(const QListBox &);
+};
+
+%End
+
+
+class QListBoxItem
+{
+%TypeHeaderCode
+#include <qlistbox.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QListBoxItem();
+%End
+%If (Qt_2_00 -)
+ QListBoxItem(QListBox * /TransferThis/ = 0);
+%End
+%If (Qt_2_1_0 -)
+ QListBoxItem(QListBox * /TransferThis/,QListBoxItem *);
+%End
+
+%If (- Qt_2_00)
+ virtual const char *text() const;
+%End
+%If (Qt_2_00 -)
+ virtual QString text() const;
+%End
+ virtual const QPixmap *pixmap() const;
+
+%If (- Qt_2_00)
+ virtual int height(const QListBox *) const = 0;
+ virtual int width(const QListBox *) const = 0;
+%End
+%If (Qt_2_00 -)
+ virtual int height(const QListBox *) const;
+ virtual int width(const QListBox *) const;
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+ bool selected() const;
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ bool current() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isSelected() const;
+ bool isCurrent() const;
+%End
+
+%If (Qt_2_00 -)
+ QListBox *listBox() const;
+%End
+
+%If (Qt_2_1_0 -)
+ void setSelectable(bool);
+ bool isSelectable() const;
+
+ QListBoxItem *next() const;
+ QListBoxItem *prev() const;
+%End
+
+%If (Qt_3_0_0 -)
+ virtual int rtti() const;
+%End
+
+protected:
+ virtual void paint(QPainter *) = 0;
+%If (- Qt_2_00)
+ void setText(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setText(const QString &);
+%End
+%If (Qt_2_1_0 -)
+ void setCustomHighlighting(bool);
+%End
+
+private:
+ QListBoxItem(const QListBoxItem &);
+};
+
+class QListBoxText : QListBoxItem
+{
+%TypeHeaderCode
+#include <qlistbox.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QListBoxText(const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QListBoxText(QListBox * /TransferThis/,
+ const QString & = QString::null);
+ QListBoxText(const QString & = QString::null);
+%End
+%If (Qt_2_1_0 -)
+ QListBoxText(QListBox * /TransferThis/,const QString &,QListBoxItem *);
+%End
+
+%If (- Qt_2_00)
+ void paint(QPainter *);
+%End
+ int height(const QListBox *) const;
+ int width(const QListBox *) const;
+
+%If (Qt_3_0_0 -)
+ int rtti() const;
+%End
+
+protected:
+%If (Qt_2_00 -)
+ void paint(QPainter *);
+%End
+
+private:
+ QListBoxText(const QListBoxText &);
+};
+
+class QListBoxPixmap : QListBoxItem
+{
+%TypeHeaderCode
+#include <qlistbox.h>
+%End
+
+public:
+%If (Qt_2_00 -)
+ QListBoxPixmap(QListBox * /TransferThis/,const QPixmap &);
+%End
+ QListBoxPixmap(const QPixmap &);
+%If (Qt_2_1_0 -)
+ QListBoxPixmap(QListBox * /TransferThis/,const QPixmap &,
+ QListBoxItem *);
+ QListBoxPixmap(QListBox * /TransferThis/,const QPixmap &,
+ const QString &);
+ QListBoxPixmap(const QPixmap &,const QString &);
+ QListBoxPixmap(QListBox * /TransferThis/,const QPixmap &,
+ const QString &,QListBoxItem *);
+%End
+
+ const QPixmap *pixmap() const;
+%If (Qt_2_00 -)
+ int height(const QListBox *) const;
+ int width(const QListBox *) const;
+%End
+
+%If (Qt_3_0_0 -)
+ int rtti() const;
+%End
+
+protected:
+ void paint(QPainter *);
+%If (- Qt_2_00)
+ int height(const QListBox *) const;
+ int width(const QListBox *) const;
+%End
+
+private:
+ QListBoxPixmap(const QListBoxPixmap &);
+};
diff --git a/python/pyqt/sip/qt/qlistview.sip b/python/pyqt/sip/qt/qlistview.sip
new file mode 100644
index 00000000..2028d1e0
--- /dev/null
+++ b/python/pyqt/sip/qt/qlistview.sip
@@ -0,0 +1,770 @@
+// This is the SIP interface definition for QListView, QListViewItem,
+// QCheckListItem and QListViewItemIterator.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QListView</Title>
+<Para>
+<Literal>QListView</Literal> is fully implemented.
+</Para>
+<Para>
+Note that to remove a child <Literal>QListViewItem</Literal> you must first
+call <Literal>takeItem()</Literal> and then <Literal>del()</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListViewItem</Title>
+<Para>
+<Literal>QListViewItem</Literal> is fully implemented.
+</Para>
+<Para>
+Note that to remove a child <Literal>QListViewItem</Literal> you must first
+call <Literal>takeItem()</Literal> and then <Literal>del()</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCheckListItem</Title>
+<Para>
+<Literal>QCheckListItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QListViewItemIterator (Qt v2+)</Title>
+<Para>
+<Literal>QListViewItemIterator</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QListViewItem
+{
+%TypeHeaderCode
+#include <qlistview.h>
+%End
+
+public:
+ QListViewItem(QListView * /TransferThis/);
+ QListViewItem(QListViewItem * /TransferThis/);
+ QListViewItem(QListView * /TransferThis/,QListViewItem *);
+ QListViewItem(QListViewItem * /TransferThis/,QListViewItem *);
+
+ QListViewItem(QListView * /TransferThis/,
+ const char *,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0);
+
+ QListViewItem(QListViewItem * /TransferThis/,
+ const char *,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0);
+
+ QListViewItem(QListView * /TransferThis/,QListViewItem *,
+ const char *,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0);
+
+ QListViewItem(QListViewItem * /TransferThis/,QListViewItem *,
+ const char *,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0,
+ const char * = 0,const char * = 0);
+
+ virtual void insertItem(QListViewItem * /Transfer/);
+ virtual void removeItem(QListViewItem * /TransferBack/);
+ int height() const;
+ virtual void invalidateHeight();
+ int totalHeight() const;
+ virtual int width(const QFontMetrics &,const QListView *,int) const;
+ void widthChanged(int = -1) const;
+ int depth() const;
+ virtual void setText(int,const char *);
+ virtual const char *text(int) const;
+ virtual void setPixmap(int,const QPixmap &);
+ virtual const QPixmap *pixmap(int) const;
+ virtual const char *key(int,bool) const;
+ virtual void sortChildItems(int,bool);
+ int childCount() const;
+ bool isOpen() const;
+ virtual void setOpen(bool);
+ virtual void setup();
+ virtual void setSelected(bool);
+ bool isSelected() const;
+ virtual void paintCell(QPainter *,const QColorGroup &,int,int,int);
+ virtual void paintBranches(QPainter *,const QColorGroup &,int,int,int,
+ GUIStyle);
+ virtual void paintFocus(QPainter *,const QColorGroup &,const QRect &);
+ QListViewItem *firstChild() const;
+ QListViewItem *nextSibling() const;
+ QListViewItem *parent() const;
+ QListViewItem *itemAbove();
+ QListViewItem *itemBelow();
+ int itemPos() const;
+ QListView *listView() const;
+ virtual void setSelectable(bool);
+ bool isSelectable() const;
+ virtual void setExpandable(bool);
+ bool isExpandable();
+ void repaint() const;
+
+protected:
+ virtual void enforceSortOrder() const;
+ virtual void setHeight(int);
+ virtual void activate();
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QListViewItem : Qt
+{
+%TypeHeaderCode
+#include <qlistview.h>
+%End
+
+public:
+ QListViewItem(QListView * /TransferThis/);
+ QListViewItem(QListViewItem * /TransferThis/);
+ QListViewItem(QListView * /TransferThis/,QListViewItem *);
+ QListViewItem(QListViewItem * /TransferThis/,QListViewItem *);
+
+ QListViewItem(QListView * /TransferThis/,
+ QString,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null);
+
+ QListViewItem(QListViewItem * /TransferThis/,
+ QString,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null);
+
+ QListViewItem(QListView * /TransferThis/,QListViewItem *,
+ QString,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null);
+
+ QListViewItem(QListViewItem * /TransferThis/,QListViewItem *,
+ QString,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null,
+ QString = QString::null,QString = QString::null);
+
+ virtual void insertItem(QListViewItem * /Transfer/);
+ virtual void takeItem(QListViewItem * /TransferBack/);
+
+ int height() const;
+ virtual void invalidateHeight();
+ int totalHeight() const;
+ virtual int width(const QFontMetrics &,const QListView *,int) const;
+ void widthChanged(int = -1) const;
+ int depth() const;
+
+ virtual void setText(int,const QString &);
+ virtual QString text(int) const;
+
+ virtual void setPixmap(int,const QPixmap &);
+ virtual const QPixmap *pixmap(int) const;
+
+ virtual QString key(int,bool) const;
+%If (Qt_3_0_0 -)
+ virtual int compare(QListViewItem *,int,bool) const;
+%End
+ virtual void sortChildItems(int,bool);
+
+ int childCount() const;
+
+ bool isOpen() const;
+ virtual void setOpen(bool);
+ virtual void setup();
+
+ virtual void setSelected(bool);
+ bool isSelected() const;
+
+ virtual void paintCell(QPainter *,const QColorGroup &,int,int,int);
+%If (- Qt_3_0_0)
+ virtual void paintBranches(QPainter *,const QColorGroup &,int,int,int,
+ GUIStyle);
+%End
+%If (Qt_3_0_0 -)
+ virtual void paintBranches(QPainter *,const QColorGroup &,int,int,int);
+%End
+ virtual void paintFocus(QPainter *,const QColorGroup &,const QRect &);
+
+ QListViewItem *firstChild() const;
+ QListViewItem *nextSibling() const;
+ QListViewItem *parent() const;
+
+ QListViewItem *itemAbove();
+ QListViewItem *itemBelow();
+
+ int itemPos() const;
+
+ QListView *listView() const;
+
+ virtual void setSelectable(bool);
+ bool isSelectable() const;
+
+ virtual void setExpandable(bool);
+ bool isExpandable();
+
+ void repaint() const;
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void sort();
+%End
+%If (Qt_3_0_0 -)
+ virtual void sort();
+%End
+%If (Qt_2_2_0 -)
+ void moveItem(QListViewItem *);
+%End
+
+%If (Qt_3_0_0 -)
+ virtual void setDragEnabled(bool);
+ virtual void setDropEnabled(bool);
+ bool dragEnabled() const;
+ bool dropEnabled() const;
+ virtual bool acceptDrop(const QMimeSource *) const;
+
+ void setVisible(bool);
+ bool isVisible() const;
+
+ virtual void setRenameEnabled(int,bool);
+ bool renameEnabled(int) const;
+ virtual void startRename(int);
+
+ virtual void setEnabled(bool);
+ bool isEnabled() const;
+
+ virtual int rtti() const;
+
+ virtual void setMultiLinesEnabled(bool);
+ bool multiLinesEnabled() const;
+%End
+
+protected:
+ virtual void enforceSortOrder() const;
+ virtual void setHeight(int);
+ virtual void activate();
+
+%If (Qt_2_1_0 -)
+ bool activatedPos(QPoint &);
+%End
+%If (Qt_3_0_0 -)
+ virtual void dropped(QDropEvent *);
+ virtual void dragEntered();
+ virtual void dragLeft();
+ virtual void okRename(int);
+ virtual void cancelRename(int);
+
+ void ignoreDoubleClick();
+%End
+};
+
+%End
+
+
+class QListView : QScrollView
+{
+%TypeHeaderCode
+#include <qlistview.h>
+%End
+
+public:
+%If (Qt_2_2_0 - Qt_3_0_0)
+ QListView(QWidget * /TransferThis/,const char *,WFlags);
+%End
+%If (- Qt_3_0_0)
+ QListView(QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ QListView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+
+ int treeStepSize() const;
+ virtual void setTreeStepSize(int);
+
+ virtual void insertItem(QListViewItem * /Transfer/);
+%If (Qt_2_00 -)
+ virtual void takeItem(QListViewItem * /TransferBack/);
+%End
+
+%If (- Qt_3_0_0)
+ virtual void clear();
+%End
+ QHeader *header() const;
+
+%If (- Qt_2_00)
+ virtual int addColumn(const char *,int = -1);
+ virtual void setColumnText(int,const char *);
+ const char *columnText(int) const;
+%End
+%If (Qt_2_00 -)
+ virtual int addColumn(const QString &,int = -1);
+ virtual int addColumn(const QIconSet &,const QString &,int = -1);
+%If (Qt_2_1_0 -)
+ void removeColumn(int);
+%End
+ virtual void setColumnText(int,const QString &);
+ virtual void setColumnText(int,const QIconSet &,const QString &);
+ QString columnText(int) const;
+%End
+ virtual void setColumnWidth(int,int);
+ int columnWidth(int) const;
+
+ enum WidthMode
+ {
+ Manual,
+ Maximum
+ };
+
+ virtual void setColumnWidthMode(int,WidthMode);
+ WidthMode columnWidthMode(int) const;
+%If (Qt_2_1_0 -)
+ int columns() const;
+%End
+
+ virtual void setColumnAlignment(int,int);
+ int columnAlignment(int) const;
+
+ void show();
+
+ QListViewItem *itemAt(const QPoint &) const;
+ QRect itemRect(const QListViewItem *) const;
+ int itemPos(const QListViewItem *);
+
+ void ensureItemVisible(const QListViewItem *);
+
+ void repaintItem(const QListViewItem *) const;
+
+ virtual void setMultiSelection(bool);
+ bool isMultiSelection() const;
+
+%If (Qt_2_1_0 -)
+ enum SelectionMode {
+ Single,
+ Multi,
+ Extended,
+ NoSelection
+ };
+
+ void setSelectionMode(SelectionMode);
+ SelectionMode selectionMode() const;
+%End
+
+%If (Qt_2_1_0 -)
+ virtual void clearSelection();
+%End
+ virtual void setSelected(QListViewItem *,bool);
+%If (Qt_3_2_0 -)
+ void setSelectionAnchor(QListViewItem *);
+%End
+ bool isSelected(QListViewItem *) const;
+%If (Qt_2_1_0 -)
+ QListViewItem *selectedItem() const;
+%End
+ virtual void setOpen(QListViewItem *,bool);
+ bool isOpen(QListViewItem *) const;
+
+ virtual void setCurrentItem(QListViewItem *);
+ QListViewItem *currentItem() const;
+
+ QListViewItem *firstChild() const;
+%If (Qt_3_0_0 -)
+ QListViewItem *lastItem() const;
+%End
+
+ int childCount() const;
+
+ virtual void setAllColumnsShowFocus(bool);
+ bool allColumnsShowFocus() const;
+
+ virtual void setItemMargin(int);
+ int itemMargin() const;
+
+ virtual void setRootIsDecorated(bool);
+ bool rootIsDecorated() const;
+
+ virtual void setSorting(int,bool = 1);
+%If (Qt_3_1_0 -)
+ int sortColumn() const;
+%End
+%If (Qt_3_2_0 -)
+ void setSortColumn(int);
+ SortOrder sortOrder() const;
+ void setSortOrder(SortOrder);
+%End
+%If (Qt_3_0_0 -)
+ virtual void sort();
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void sort();
+%End
+
+%If (- Qt_2_00)
+ void setStyle(GUIStyle);
+ void setFont(const QFont &);
+ void setPalette(const QPalette &);
+%End
+%If (Qt_2_00 -)
+ virtual void setFont(const QFont &);
+ virtual void setPalette(const QPalette &);
+%End
+
+ bool eventFilter(QObject *,QEvent *);
+
+ QSize sizeHint() const;
+%If (Qt_2_00 -)
+ QSize minimumSizeHint() const;
+%End
+
+%If (Qt_2_1_0 -)
+ void setShowSortIndicator(bool);
+ bool showSortIndicator() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setShowToolTips(bool);
+ bool showToolTips() const;
+
+ enum ResizeMode {
+ NoColumn,
+ AllColumns,
+ LastColumn
+ };
+
+ virtual void setResizeMode(ResizeMode);
+ ResizeMode resizeMode() const;
+
+ QListViewItem *findItem(const QString &,int,
+ ComparisonFlags = ExactMatch | CaseSensitive) const;
+
+ enum RenameAction {
+ Accept,
+ Reject
+ };
+
+ virtual void setDefaultRenameAction(RenameAction);
+ RenameAction defaultRenameAction() const;
+ bool isRenaming() const;
+%End
+
+%If (Qt_3_2_0 -)
+ void hideColumn(int);
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ virtual void clear();
+%End
+%If (Qt_2_1_0 -)
+ void invertSelection();
+ void selectAll(bool);
+ void setContentsPos(int,int);
+%End
+ void triggerUpdate();
+%If (Qt_3_2_0 -)
+ void adjustColumn(int);
+%End
+
+signals:
+ void selectionChanged();
+ void selectionChanged(QListViewItem *);
+ void currentChanged(QListViewItem *);
+%If (Qt_2_1_0 -)
+ void clicked(QListViewItem *);
+ void clicked(QListViewItem *,const QPoint &,int);
+ void pressed(QListViewItem *);
+ void pressed(QListViewItem *,const QPoint &,int);
+%End
+
+ void doubleClicked(QListViewItem *);
+%If (Qt_3_2_0 -)
+ void doubleClicked(QListViewItem *,const QPoint &,int);
+%End
+ void returnPressed(QListViewItem *);
+%If (Qt_3_0_0 -)
+ void spacePressed(QListViewItem *);
+%End
+ void rightButtonClicked(QListViewItem *,const QPoint &,int);
+ void rightButtonPressed(QListViewItem *,const QPoint &,int);
+%If (Qt_2_1_0 -)
+ void mouseButtonPressed(int,QListViewItem *,const QPoint &,int);
+ void mouseButtonClicked(int,QListViewItem *,const QPoint &,int);
+%End
+
+%If (Qt_3_0_0 -)
+ void contextMenuRequested(QListViewItem *,const QPoint &,int);
+%End
+
+%If (Qt_2_1_0 -)
+ void onItem(QListViewItem *);
+ void onViewport();
+
+ void expanded(QListViewItem *);
+ void collapsed(QListViewItem *);
+%End
+%If (Qt_3_0_0 -)
+ void dropped(QDropEvent *);
+ void itemRenamed(QListViewItem *,int,const QString &);
+ void itemRenamed(QListViewItem *,int);
+%End
+
+protected:
+%If (- Qt_2_00)
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+%End
+%If (Qt_2_00 -)
+ void contentsMousePressEvent(QMouseEvent *);
+ void contentsMouseReleaseEvent(QMouseEvent *);
+ void contentsMouseMoveEvent(QMouseEvent *);
+ void contentsMouseDoubleClickEvent(QMouseEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void contentsContextMenuEvent(QContextMenuEvent *);
+ void contentsDragEnterEvent(QDragEnterEvent *);
+ void contentsDragMoveEvent(QDragMoveEvent *);
+ void contentsDragLeaveEvent(QDragLeaveEvent *);
+ void contentsDropEvent(QDropEvent *);
+ virtual QDragObject *dragObject();
+ virtual void startDrag();
+%End
+
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+
+ void keyPressEvent(QKeyEvent *);
+
+ void resizeEvent(QResizeEvent *);
+%If (Qt_3_0_0 -)
+ void viewportResizeEvent(QResizeEvent *);
+%End
+
+%If (Qt_2_00 -)
+ void showEvent(QShowEvent *);
+%End
+
+ void drawContentsOffset(QPainter *,int,int,int,int,int,int);
+
+ virtual void paintEmptyArea(QPainter *,const QRect &);
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+%If (- Qt_3_0_0)
+ void enabledChange(bool);
+%End
+%If (Qt_3_0_0 -)
+ void windowActivationChange(bool);
+%End
+
+protected slots:
+ void updateContents();
+%If (Qt_2_00 -)
+ void doAutoScroll();
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QListView(const QWidget &);
+%End
+};
+
+
+class QCheckListItem : QListViewItem
+{
+%TypeHeaderCode
+#include <qlistview.h>
+%End
+
+public:
+ enum Type {
+ RadioButton,
+ CheckBox,
+ Controller,
+%If (Qt_3_2_0 -)
+ RadioButtonController,
+ CheckBoxController,
+%End
+ };
+
+%If (Qt_3_2_0 -)
+ enum ToggleState {
+ Off,
+ NoChange,
+ On
+ };
+%End
+
+%If (Qt_3_2_0 -)
+ QCheckListItem(QCheckListItem * /TransferThis/,const QString &,
+ Type = RadioButtonController);
+ QCheckListItem(QCheckListItem * /TransferThis/,QListViewItem *,
+ const QString &,Type = RadioButtonController);
+ QCheckListItem(QListViewItem * /TransferThis/,const QString &,
+ Type = RadioButtonController);
+ QCheckListItem(QListViewItem * /TransferThis/,QListViewItem *,
+ const QString &,Type = RadioButtonController);
+ QCheckListItem(QListView * /TransferThis/,const QString &,
+ Type = RadioButtonController);
+ QCheckListItem(QListView * /TransferThis/,QListViewItem *,
+ const QString &,Type = RadioButtonController);
+%End
+%If (Qt_2_00 - Qt_3_2_0)
+ QCheckListItem(QCheckListItem * /TransferThis/,const QString &,
+ Type = Controller);
+%If (Qt_3_1_0 -)
+ QCheckListItem(QCheckListItem * /TransferThis/,QListViewItem *,
+ const QString &,Type = Controller);
+%End
+ QCheckListItem(QListViewItem * /TransferThis/,const QString &,
+ Type = Controller);
+%If (Qt_3_1_0 -)
+ QCheckListItem(QListViewItem * /TransferThis/,QListViewItem *,
+ const QString &,Type = Controller);
+%End
+ QCheckListItem(QListView * /TransferThis/,const QString &,
+ Type = Controller);
+%If (Qt_3_1_0 -)
+ QCheckListItem(QListView * /TransferThis/,QListViewItem *,
+ const QString &,Type = Controller);
+%End
+%End
+%If (Qt_2_00 -)
+ QCheckListItem(QListViewItem * /TransferThis/,const QString &,
+ const QPixmap &);
+ QCheckListItem(QListView * /TransferThis/,const QString &,
+ const QPixmap &);
+%End
+%If (- Qt_2_00)
+ QCheckListItem(QCheckListItem * /TransferThis/,const char *,
+ Type = Controller);
+ QCheckListItem(QListView * /TransferThis/,const char *,
+ Type = Controller);
+ QCheckListItem(QListViewItem * /TransferThis/,const char *,
+ const QPixmap &);
+ QCheckListItem(QListView * /TransferThis/,const char *,
+ const QPixmap &);
+%End
+
+ void paintCell(QPainter *,const QColorGroup &,int,int,int);
+%If (Qt_2_00 -)
+ virtual void paintFocus(QPainter *,const QColorGroup &,const QRect &);
+%End
+ int width(const QFontMetrics &,const QListView *,int) const;
+ void setup();
+
+%If (- Qt_2_00)
+ void setOn(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setOn(bool);
+%End
+ bool isOn() const;
+ Type type() const;
+%If (- Qt_2_00)
+ const char *text() const;
+ const char *text(int) const;
+%End
+%If (Qt_2_00 -)
+ QString text() const;
+ QString text(int) const;
+%End
+
+%If (Qt_3_2_0 -)
+ void setTristate(bool);
+ bool isTristate() const;
+ ToggleState state() const;
+ void setState(ToggleState);
+%End
+
+%If (Qt_3_0_0 -)
+ int rtti() const;
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ void paintBranches(QPainter *,const QColorGroup &,int,int,int,GUIStyle);
+%End
+ void activate();
+ void turnOffChild();
+ virtual void stateChange(bool);
+};
+
+
+%If (Qt_2_00 -)
+
+class QListViewItemIterator
+{
+%TypeHeaderCode
+#include <qlistview.h>
+%End
+
+public:
+%If (Qt_3_2_0 -)
+ enum IteratorFlag {
+ Visible,
+ Invisible,
+ Selected,
+ Unselected,
+ Selectable,
+ NotSelectable,
+ DragEnabled,
+ DragDisabled,
+ DropEnabled,
+ DropDisabled,
+ Expandable,
+ NotExpandable,
+ Checked,
+ NotChecked
+ };
+%End
+
+ QListViewItemIterator();
+ QListViewItemIterator(QListViewItem *);
+%If (Qt_3_2_0 -)
+ QListViewItemIterator(QListViewItem *,int);
+%End
+
+ QListViewItemIterator(const QListViewItemIterator &);
+ QListViewItemIterator(QListView *);
+%If (Qt_3_2_0 -)
+ QListViewItemIterator(QListView *,int);
+%End
+
+ QListViewItemIterator &operator+=(int);
+ QListViewItemIterator &operator-=(int);
+
+ QListViewItem *current() const;
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qlocale.sip b/python/pyqt/sip/qt/qlocale.sip
new file mode 100644
index 00000000..71f3e6db
--- /dev/null
+++ b/python/pyqt/sip/qt/qlocale.sip
@@ -0,0 +1,537 @@
+// This is the SIP interface definition for QLocale.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLocale (Qt v3.3+)</Title>
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_ULONG <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_3_0 -)
+
+class QLocale
+{
+%TypeHeaderCode
+#include <qlocale.h>
+%End
+
+public:
+ enum Language {
+ C,
+ Abkhazian,
+ Afan,
+ Afar,
+ Afrikaans,
+ Albanian,
+ Amharic,
+ Arabic,
+ Armenian,
+ Assamese,
+ Aymara,
+ Azerbaijani,
+ Bashkir,
+ Basque,
+ Bengali,
+ Bhutani,
+ Bihari,
+ Bislama,
+ Breton,
+ Bulgarian,
+ Burmese,
+ Byelorussian,
+ Cambodian,
+ Catalan,
+ Chinese,
+ Corsican,
+ Croatian,
+ Czech,
+ Danish,
+ Dutch,
+ English,
+ Esperanto,
+ Estonian,
+ Faroese,
+ FijiLanguage,
+ Finnish,
+ French,
+ Frisian,
+ Gaelic,
+ Galician,
+ Georgian,
+ German,
+ Greek,
+ Greenlandic,
+ Guarani,
+ Gujarati,
+ Hausa,
+ Hebrew,
+ Hindi,
+ Hungarian,
+ Icelandic,
+ Indonesian,
+ Interlingua,
+ Interlingue,
+ Inuktitut,
+ Inupiak,
+ Irish,
+ Italian,
+ Japanese,
+ Javanese,
+ Kannada,
+ Kashmiri,
+ Kazakh,
+ Kinyarwanda,
+ Kirghiz,
+ Korean,
+ Kurdish,
+ Kurundi,
+ Laothian,
+ Latin,
+ Latvian,
+ Lingala,
+ Lithuanian,
+ Macedonian,
+ Malagasy,
+ Malay,
+ Malayalam,
+ Maltese,
+ Maori,
+ Marathi,
+ Moldavian,
+ Mongolian,
+ NauruLanguage,
+ Nepali,
+ Norwegian,
+ Occitan,
+ Oriya,
+ Pashto,
+ Persian,
+ Polish,
+ Portuguese,
+ Punjabi,
+ Quechua,
+ RhaetoRomance,
+ Romanian,
+ Russian,
+ Samoan,
+ Sangho,
+ Sanskrit,
+ Serbian,
+ SerboCroatian,
+ Sesotho,
+ Setswana,
+ Shona,
+ Sindhi,
+ Singhalese,
+ Siswati,
+ Slovak,
+ Slovenian,
+ Somali,
+ Spanish,
+ Sundanese,
+ Swahili,
+ Swedish,
+ Tagalog,
+ Tajik,
+ Tamil,
+ Tatar,
+ Telugu,
+ Thai,
+ Tibetan,
+ Tigrinya,
+ TongaLanguage,
+ Tsonga,
+ Turkish,
+ Turkmen,
+ Twi,
+ Uigur,
+ Ukrainian,
+ Urdu,
+ Uzbek,
+ Vietnamese,
+ Volapuk,
+ Welsh,
+ Wolof,
+ Xhosa,
+ Yiddish,
+ Yoruba,
+ Zhuang,
+ Zulu,
+ LastLanguage
+ };
+
+ enum Country {
+ AnyCountry,
+ Afghanistan,
+ Albania,
+ Algeria,
+ AmericanSamoa,
+ Andorra,
+ Angola,
+ Anguilla,
+ Antarctica,
+ AntiguaAndBarbuda,
+ Argentina,
+ Armenia,
+ Aruba,
+ Australia,
+ Austria,
+ Azerbaijan,
+ Bahamas,
+ Bahrain,
+ Bangladesh,
+ Barbados,
+ Belarus,
+ Belgium,
+ Belize,
+ Benin,
+ Bermuda,
+ Bhutan,
+ Bolivia,
+ BosniaAndHerzegowina,
+ Botswana,
+ BouvetIsland,
+ Brazil,
+ BritishIndianOceanTerritory,
+ BruneiDarussalam,
+ Bulgaria,
+ BurkinaFaso,
+ Burundi,
+ Cambodia,
+ Cameroon,
+ Canada,
+ CapeVerde,
+ CaymanIslands,
+ CentralAfricanRepublic,
+ Chad,
+ Chile,
+ China,
+ ChristmasIsland,
+ CocosIslands,
+ Colombia,
+ Comoros,
+ DemocraticRepublicOfCongo,
+ PeoplesRepublicOfCongo,
+ CookIslands,
+ CostaRica,
+ IvoryCoast,
+ Croatia,
+ Cuba,
+ Cyprus,
+ CzechRepublic,
+ Denmark,
+ Djibouti,
+ Dominica,
+ DominicanRepublic,
+ EastTimor,
+ Ecuador,
+ Egypt,
+ ElSalvador,
+ EquatorialGuinea,
+ Eritrea,
+ Estonia,
+ Ethiopia,
+ FalklandIslands,
+ FaroeIslands,
+ FijiCountry,
+ Finland,
+ France,
+ MetropolitanFrance,
+ FrenchGuiana,
+ FrenchPolynesia,
+ FrenchSouthernTerritories,
+ Gabon,
+ Gambia,
+ Georgia,
+ Germany,
+ Ghana,
+ Gibraltar,
+ Greece,
+ Greenland,
+ Grenada,
+ Guadeloupe,
+ Guam,
+ Guatemala,
+ Guinea,
+ GuineaBissau,
+ Guyana,
+ Haiti,
+ HeardAndMcDonaldIslands,
+ Honduras,
+ HongKong,
+ Hungary,
+ Iceland,
+ India,
+ Indonesia,
+ Iran,
+ Iraq,
+ Ireland,
+ Israel,
+ Italy,
+ Jamaica,
+ Japan,
+ Jordan,
+ Kazakhstan,
+ Kenya,
+ Kiribati,
+ DemocraticRepublicOfKorea,
+ RepublicOfKorea,
+ Kuwait,
+ Kyrgyzstan,
+ Lao,
+ Latvia,
+ Lebanon,
+ Lesotho,
+ Liberia,
+ LibyanArabJamahiriya,
+ Liechtenstein,
+ Lithuania,
+ Luxembourg,
+ Macau,
+ Macedonia,
+ Madagascar,
+ Malawi,
+ Malaysia,
+ Maldives,
+ Mali,
+ Malta,
+ MarshallIslands,
+ Martinique,
+ Mauritania,
+ Mauritius,
+ Mayotte,
+ Mexico,
+ Micronesia,
+ Moldova,
+ Monaco,
+ Mongolia,
+ Montserrat,
+ Morocco,
+ Mozambique,
+ Myanmar,
+ Namibia,
+ NauruCountry,
+ Nepal,
+ Netherlands,
+ NetherlandsAntilles,
+ NewCaledonia,
+ NewZealand,
+ Nicaragua,
+ Niger,
+ Nigeria,
+ Niue,
+ NorfolkIsland,
+ NorthernMarianaIslands,
+ Norway,
+ Oman,
+ Pakistan,
+ Palau,
+ PalestinianTerritory,
+ Panama,
+ PapuaNewGuinea,
+ Paraguay,
+ Peru,
+ Philippines,
+ Pitcairn,
+ Poland,
+ Portugal,
+ PuertoRico,
+ Qatar,
+ Reunion,
+ Romania,
+ RussianFederation,
+ Rwanda,
+ SaintKittsAndNevis,
+ StLucia,
+ StVincentAndTheGrenadines,
+ Samoa,
+ SanMarino,
+ SaoTomeAndPrincipe,
+ SaudiArabia,
+ Senegal,
+ Seychelles,
+ SierraLeone,
+ Singapore,
+ Slovakia,
+ Slovenia,
+ SolomonIslands,
+ Somalia,
+ SouthAfrica,
+ SouthGeorgiaAndTheSouthSandwichIslands,
+ Spain,
+ SriLanka,
+ StHelena,
+ StPierreAndMiquelon,
+ Sudan,
+ Suriname,
+ SvalbardAndJanMayenIslands,
+ Swaziland,
+ Sweden,
+ Switzerland,
+ SyrianArabRepublic,
+ Taiwan,
+ Tajikistan,
+ Tanzania,
+ Thailand,
+ Togo,
+ Tokelau,
+ TongaCountry,
+ TrinidadAndTobago,
+ Tunisia,
+ Turkey,
+ Turkmenistan,
+ TurksAndCaicosIslands,
+ Tuvalu,
+ Uganda,
+ Ukraine,
+ UnitedArabEmirates,
+ UnitedKingdom,
+ UnitedStates,
+ UnitedStatesMinorOutlyingIslands,
+ Uruguay,
+ Uzbekistan,
+ Vanuatu,
+ VaticanCityState,
+ Venezuela,
+ VietNam,
+ BritishVirginIslands,
+ USVirginIslands,
+ WallisAndFutunaIslands,
+ WesternSahara,
+ Yemen,
+ Yugoslavia,
+ Zambia,
+ Zimbabwe,
+ LastCountry
+ };
+
+ QLocale();
+ QLocale(const QString &);
+ QLocale(Language,Country = AnyCountry);
+ QLocale(const QLocale &);
+
+ Language language() const;
+ Country country() const;
+ QString name() const;
+
+ short toShort(const QString &,bool * = 0) const;
+ ushort toUShort(const QString &,bool * = 0) const;
+ int toInt(const QString &,bool * = 0) const;
+ uint toUInt(const QString &,bool * = 0) const;
+ Q_LONG toLong(const QString &,bool * = 0) const;
+ Q_ULONG toULong(const QString &,bool * = 0) const;
+ //Q_LLONG toLongLong(const QString &,bool * = 0) const;
+ //Q_ULLONG toULongLong(const QString &,bool * = 0) const;
+ float toFloat(const QString &,bool * = 0) const;
+ double toDouble(const QString &,bool * = 0) const;
+
+ //QString toString(short) const;
+ //QString toString(ushort) const;
+ QString toString(int /Constrained/) const;
+ //QString toString(uint) const;
+ //QString toString(Q_LONG) const;
+ //QString toString(Q_ULONG) const;
+ //QString toString(Q_LLONG) const;
+ //QString toString(Q_ULLONG) const;
+ //QString toString(float,char = 'g',int = 6) const;
+ QString toString(double,char = 'g',int = 6) const;
+
+ static QString languageToString(Language);
+ static QString countryToString(Country);
+ static void setDefault(const QLocale &);
+
+ static QLocale c();
+ static QLocale system();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qmainwindow.sip b/python/pyqt/sip/qt/qmainwindow.sip
new file mode 100644
index 00000000..11a2f120
--- /dev/null
+++ b/python/pyqt/sip/qt/qmainwindow.sip
@@ -0,0 +1,289 @@
+// This is the SIP interface definition for QMainWindow.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMainWindow</Title>
+<FuncSynopsis>
+ <FuncDef>QTextStream &amp;<Function>operator&lt&lt;</Function></FuncDef>
+ <ParamDef>QTextStream &amp;<Parameter></Parameter></ParamDef>
+ <ParamDef>const QMainWindow &amp;<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This operator is fully implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &amp;<Function>operator&gt&gt;</Function></FuncDef>
+ <ParamDef>QTextStream &amp;<Parameter></Parameter></ParamDef>
+ <ParamDef>QMainWindow &amp;<Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This operator is fully implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getLocation</Function></FuncDef>
+ <ParamDef>QToolBar *<Parameter>tb</Parameter></ParamDef>
+ <ParamDef>ToolBarDock &amp;<Parameter>dock</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>index</Parameter></ParamDef>
+ <ParamDef>bool &amp;<Parameter>nl</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>extraOffset</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>tb</Literal> parameter and returns a tuple of the
+result, <Literal>dock</Literal>, <Literal>index</Literal>,
+<Literal>nl</Literal> and <Literal>extraOffset</Literal> values. (Qt v2.1.0+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QList&lt;QToolBar&gt; <Function>toolBars</Function></FuncDef>
+ <ParamDef>ToolBarDock <Parameter>dock</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of <Literal>QToolBar</Literal> instances. (Qt v2.1.0+)
+</Para>
+</Sect2>
+%End
+
+
+class QMainWindow : QWidget
+{
+%TypeHeaderCode
+#include <qmainwindow.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QMainWindow(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+%If (Qt_2_00 -)
+ QMainWindow(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = WType_TopLevel);
+%End
+
+ QMenuBar *menuBar() const;
+ QStatusBar *statusBar() const;
+ QToolTipGroup *toolTipGroup() const;
+ virtual void setCentralWidget(QWidget *);
+ QWidget *centralWidget() const;
+
+%If (- Qt_2_1_0)
+ enum ToolBarDock {
+ Unmanaged,
+ TornOff,
+ Top,
+ Bottom,
+ Right,
+ Left
+ };
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ enum ToolBarDock {
+ Unmanaged,
+ TornOff,
+ Top,
+ Bottom,
+ Right,
+ Left,
+ Minimized
+ };
+%End
+
+%If (- Qt_2_00)
+ void setDockEnabled(ToolBarDock,bool);
+ void addToolBar(QToolBar *,const char *,ToolBarDock = Top,bool = 0);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setDockEnabled(ToolBarDock,bool);
+ void addToolBar(QToolBar *,ToolBarDock = Top,bool = 0);
+ void addToolBar(QToolBar *,const QString &,ToolBarDock = Top,bool = 0);
+ void moveToolBar(QToolBar *,ToolBarDock = Top);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setDockEnabled(QToolBar *,ToolBarDock,bool);
+ bool isDockEnabled(QToolBar *,ToolBarDock) const;
+ void moveToolBar(QToolBar *,ToolBarDock,bool,int,int = -1);
+ bool toolBarsMovable() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setDockEnabled(Dock,bool);
+%End
+%If (- Qt_3_0_0)
+ bool isDockEnabled(ToolBarDock) const;
+ void removeToolBar(QToolBar *);
+%End
+%If (Qt_3_0_0 -)
+ bool isDockEnabled(Dock) const;
+ bool isDockEnabled(QDockArea *) const;
+ virtual void setDockEnabled(QDockWindow *,Dock,bool);
+ bool isDockEnabled(QDockWindow *,Dock) const;
+ bool isDockEnabled(QDockWindow *,QDockArea *) const;
+
+ virtual void addDockWindow(QDockWindow *,Dock = DockTop,bool = 0);
+ virtual void addDockWindow(QDockWindow *,const QString &,
+ Dock = DockTop,bool = 0);
+ virtual void moveDockWindow(QDockWindow *,Dock = DockTop);
+ virtual void moveDockWindow(QDockWindow *,Dock,bool,int,int = -1);
+ virtual void removeDockWindow(QDockWindow *);
+%End
+
+ void show();
+%If (Qt_3_1_0 -)
+ void hide();
+%End
+%If (Qt_2_1_0 -)
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%End
+
+ bool rightJustification() const;
+ bool usesBigPixmaps() const;
+%If (Qt_2_1_0 -)
+ bool usesTextLabel() const;
+%End
+%If (Qt_3_0_0 -)
+ bool dockWindowsMovable() const;
+%End
+%If (Qt_2_1_0 -)
+ bool opaqueMoving() const;
+%End
+
+ bool eventFilter(QObject *,QEvent *);
+
+%If (Qt_3_0_0 -)
+ bool getLocation(QDockWindow *,Dock &,int &,bool &,int &) const;
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ bool getLocation(QToolBar *,ToolBarDock &,int &,bool &,int &) const;
+%End
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+ QList<QToolBar> toolBars(ToolBarDock) const;
+%End
+%If (Qt_3_0_0 -)
+ QPtrList<QDockWindow> dockWindows(Dock) const;
+ QPtrList<QDockWindow> dockWindows() const;
+ void lineUpDockWindows(bool = 0);
+%End
+
+%If (Qt_2_1_0 -)
+ void lineUpToolBars(bool = 0);
+ bool isDockMenuEnabled() const;
+%End
+
+%If (Qt_3_0_0 -)
+ bool hasDockWindow(QDockWindow *);
+ QPtrList<QToolBar> toolBars(Dock) const;
+
+ // The following one is in Qt3 but not documented.
+ //virtual QDockArea *dockingArea(const QPoint &);
+ QDockArea *leftDock() const;
+ QDockArea *rightDock() const;
+ QDockArea *topDock() const;
+ QDockArea *bottomDock() const;
+
+ virtual bool isCustomizable() const;
+
+ bool appropriate(QDockWindow *) const;
+
+ enum DockWindows {
+ OnlyToolBars,
+ NoToolBars,
+ AllDockWindows
+ };
+
+ QPopupMenu *createDockWindowMenu(DockWindows = AllDockWindows) const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setRightJustification(bool);
+ void setUsesBigPixmaps(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setRightJustification(bool);
+ virtual void setUsesBigPixmaps(bool);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setUsesTextLabel(bool);
+ void setToolBarsMovable(bool);
+ void setOpaqueMoving(bool);
+ void setDockMenuEnabled(bool);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setUsesTextLabel(bool);
+ virtual void setDockWindowsMovable(bool);
+ virtual void setOpaqueMoving(bool);
+ virtual void setDockMenuEnabled(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ void whatsThis();
+%End
+%If (Qt_3_0_0 -)
+ virtual void whatsThis();
+ virtual void setAppropriate(QDockWindow *,bool);
+ virtual void customize();
+%End
+
+signals:
+ void pixmapSizeChanged(bool);
+%If (Qt_2_1_0 -)
+ void usesTextLabelChanged(bool);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void startMovingToolBar(QToolBar *);
+ void endMovingToolBar(QToolBar *);
+ void toolBarPositionChanged(QToolBar *);
+%End
+%If (Qt_3_0_0 -)
+ void dockWindowPositionChanged(QDockWindow *);
+%End
+
+protected slots:
+%If (- Qt_2_00)
+ void setUpLayout();
+%End
+%If (Qt_2_00 -)
+ virtual void setUpLayout();
+%End
+%If (Qt_3_0_0 -)
+ virtual bool showDockMenu(const QPoint &);
+ void menuAboutToShow();
+%End
+
+protected:
+ void paintEvent(QPaintEvent *);
+%If (Qt_2_00 -)
+ void childEvent(QChildEvent *);
+%End
+ bool event(QEvent *);
+%If (Qt_2_00 - Qt_3_0_0)
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+
+private:
+%If (Qt_2_00 -)
+ QMainWindow(const QMainWindow &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qmemarray.sip b/python/pyqt/sip/qt/qmemarray.sip
new file mode 100644
index 00000000..d3e371ca
--- /dev/null
+++ b/python/pyqt/sip/qt/qmemarray.sip
@@ -0,0 +1,92 @@
+// This is the SIP interface definition for all types based on the QMemArray
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMemArray&lt;type&gt; (Qt v3+)</Title>
+<Para>
+Types based on the <Literal>QMemArray</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+%MappedType QMemArray<int>
+{
+%TypeHeaderCode
+#include <qmemarray.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of integers.
+
+ PyObject *l;
+
+ // Create the list.
+ if ((l = PyList_New(sipCpp -> size())) == NULL)
+ return NULL;
+
+ // Get it.
+ for (uint i = 0; i < sipCpp -> size(); ++i)
+ if (PyList_SetItem(l,i,PyInt_FromLong((long)sipCpp -> at(i))) < 0)
+ {
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of integers to a QMemArray<int> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QMemArray<int> *qma = new QMemArray<int>(PyList_GET_SIZE(sipPy));
+
+ PyErr_Clear();
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ (*qma)[i] = (int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ delete qma;
+ *sipIsErr = 1;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qma;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qmenubar.sip b/python/pyqt/sip/qt/qmenubar.sip
new file mode 100644
index 00000000..5f614582
--- /dev/null
+++ b/python/pyqt/sip/qt/qmenubar.sip
@@ -0,0 +1,118 @@
+// This is the SIP interface definition for QMenuBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMenuBar</Title>
+<Para>
+<Literal>QMenuBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QMenuBar : QFrame, QMenuData
+{
+%TypeHeaderCode
+#include <qmenubar.h>
+%End
+
+public:
+ QMenuBar(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void updateItem(int);
+
+ void show();
+ void hide();
+
+ bool eventFilter(QObject *,QEvent *);
+
+ int heightForWidth(int) const;
+
+ enum Separator {
+ Never = 0,
+ InWindowsStyle = 1
+ };
+
+ Separator separator() const;
+%If (- Qt_2_00)
+ void setSeparator(Separator);
+%End
+%If (Qt_2_00 -)
+ virtual void setSeparator(Separator);
+%End
+
+%If (Qt_2_1_0 -)
+ void setDefaultUp(bool);
+ bool isDefaultUp() const;
+%End
+
+%If (Qt_2_00 -)
+ bool customWhatsThis() const;
+%End
+
+%If (Qt_2_1_0 -)
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize minimumSizeHint() const;
+%End
+
+%If (Qt_2_2_0 -)
+ void activateItemAt(int);
+%End
+
+signals:
+ void activated(int);
+ void highlighted(int);
+
+protected:
+ void drawContents(QPainter *);
+ void fontChange(const QFont &);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_1_0 -)
+ void focusInEvent(QFocusEvent *);
+%End
+%If (Qt_2_00 -)
+ void focusOutEvent(QFocusEvent *);
+%End
+ void resizeEvent(QResizeEvent *);
+ void leaveEvent(QEvent *);
+ void menuContentsChanged();
+ void menuStateChanged();
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+%If (Qt_3_0_0 -)
+ int itemAtPos(const QPoint &);
+ void hidePopups();
+ QRect itemRect(int);
+%End
+
+private:
+ void menuInsPopup(QPopupMenu *);
+ void menuDelPopup(QPopupMenu *);
+ void frameChanged();
+
+ QMenuBar(const QMenuBar &);
+};
diff --git a/python/pyqt/sip/qt/qmenudata.sip b/python/pyqt/sip/qt/qmenudata.sip
new file mode 100644
index 00000000..ac5dab0b
--- /dev/null
+++ b/python/pyqt/sip/qt/qmenudata.sip
@@ -0,0 +1,291 @@
+// This is the SIP interface definition for QMenuData, QCustomMenuItem and
+// QMenuItem.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMenuData</Title>
+<FuncSynopsis>
+ <FuncDef>QMenuItem *<Function>findItem</Function></FuncDef>
+ <ParamDef>int <Parameter>id</Parameter></ParamDef>
+ <ParamDef>QMenuData **<Parameter>parent</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCustomMenuItem (Qt v2.1+)</Title>
+<Para>
+<Literal>QCustomMenuItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMenuItem</Title>
+<Para>
+<Literal>QMenuItem</Literal> is an internal Qt class.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+// Even though this is an internal class, uic for Qt v3.1.0 generates code that
+// uses it.
+class QMenuItem
+{
+%TypeHeaderCode
+#include <qmenudata.h>
+%End
+
+public:
+ QMenuItem();
+
+ void setText(const QString &);
+
+private:
+ QMenuItem(const QMenuItem &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QMenuItem;
+
+%End
+
+
+class QMenuData
+{
+%TypeHeaderCode
+#include <qmenudata.h>
+%End
+
+public:
+ QMenuData();
+
+ uint count();
+
+%If (- Qt_2_00)
+ int insertItem(const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0);
+ int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0);
+ int insertItem(const QPixmap &,const char *,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(int),int = 0);
+ int insertItem(const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int,int,
+ int = -1);
+ int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int,int,
+ int = -1);
+ int insertItem(const QPixmap&,const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
+ int,int,int = -1);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ int insertItem(const QString &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0,
+ int = -1,int = -1);
+ int insertItem(const QIconSet &,const QString &,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(int),int = 0,int = -1,int = -1);
+ int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0,
+ int = -1,int = -1);
+ int insertItem(const QIconSet &,const QPixmap &,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(int),int = 0,int = -1,int = -1);
+%End
+%If (Qt_3_0_0 -)
+ int insertItem(const QString &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
+ const QKeySequence & = QKeySequence(0),int = -1,
+ int = -1);
+ int insertItem(const QIconSet &,const QString &,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(int),
+ const QKeySequence & = QKeySequence(0),int = -1,
+ int = -1);
+ int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
+ const QKeySequence & = QKeySequence(0),int = -1,
+ int = -1);
+ int insertItem(const QIconSet &,const QPixmap &,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(int),
+ const QKeySequence & = QKeySequence(0),int = -1,
+ int = -1);
+%End
+
+%If (- Qt_2_00)
+ int insertItem(const char *,int = -1,int = -1);
+ int insertItem(const char *,QPopupMenu *,int = -1,int = -1);
+ int insertItem(const QPixmap &,const char *,int = -1,int = -1);
+ int insertItem(const QPixmap &,const char *,QPopupMenu *,int = -1,
+ int = -1);
+%End
+%If (Qt_2_00 -)
+ int insertItem(const QString &,int = -1,int = -1);
+ int insertItem(const QIconSet &,const QString &,int = -1,int = -1);
+
+ int insertItem(const QString &,QPopupMenu *,int = -1,int = -1);
+ int insertItem(const QIconSet &,const QString &,QPopupMenu *,int = -1,
+ int = -1);
+%End
+
+ int insertItem(const QPixmap &,int = -1,int = -1);
+%If (Qt_2_00 -)
+ int insertItem(const QIconSet &,const QPixmap &,int = -1,int = -1);
+%End
+ int insertItem(const QPixmap &,QPopupMenu *,int = -1,int = -1);
+%If (Qt_2_00 -)
+ int insertItem(const QIconSet &,const QPixmap &,QPopupMenu *,int = -1,
+ int = -1);
+%End
+
+%If (Qt_2_1_0 -)
+ int insertItem(QWidget * /Transfer/,int = -1,int = -1);
+ int insertItem(const QIconSet &,QCustomMenuItem * /Transfer/,int = -1,
+ int = -1);
+ int insertItem(QCustomMenuItem * /Transfer/,int = -1,int = -1);
+%End
+
+%If (Qt_2_1_0 -)
+ int insertSeparator(int = -1);
+%End
+%If (- Qt_2_1_0)
+ void insertSeparator(int = -1);
+%End
+
+ void removeItem(int);
+ void removeItemAt(int);
+ void clear();
+
+%If (- Qt_3_0_0)
+ int accel(int) const;
+ void setAccel(int,int);
+%End
+%If (Qt_3_0_0 -)
+ QKeySequence accel(int) const;
+ void setAccel(const QKeySequence &,int);
+%End
+
+%If (- Qt_2_00)
+ const char *text(int) const;
+%End
+%If (Qt_2_00 -)
+ QIconSet *iconSet(int) const;
+ QString text(int) const;
+%End
+ QPixmap *pixmap(int) const;
+
+%If (Qt_2_00 -)
+ void setWhatsThis(int,const QString &);
+ QString whatsThis(int) const;
+%End
+
+%If (- Qt_2_00)
+ void changeItem(const char *,int);
+ void changeItem(const QPixmap &,int);
+ void changeItem(const QPixmap &,const char *,int);
+%End
+%If (Qt_2_00 -)
+ void changeItem(int,const QString &);
+ void changeItem(int,const QPixmap &);
+ void changeItem(int,const QIconSet &,const QString &);
+ void changeItem(int,const QIconSet &,const QPixmap &);
+%End
+
+%If (Qt_3_0_0 -)
+ bool isItemActive(int) const;
+%End
+
+ bool isItemEnabled(int) const;
+ void setItemEnabled(int,bool);
+
+ bool isItemChecked(int) const;
+ void setItemChecked(int,bool);
+
+%If (Qt_3_1_0 -)
+ bool isItemVisible(int) const;
+ void setItemVisible(int,bool);
+%End
+
+ virtual void updateItem(int);
+
+ int indexOf(int) const;
+ int idAt(int) const;
+%If (- Qt_2_00)
+ void setId(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setId(int,int);
+%End
+
+ bool connectItem(int,SIP_RXOBJ_CON,SIP_SLOT_CON(int));
+ bool disconnectItem(int,SIP_RXOBJ_DIS,SIP_SLOT_DIS(int));
+
+%If (Qt_2_1_0 -)
+ bool setItemParameter(int,int);
+ int itemParameter(int) const;
+%End
+
+ QMenuItem *findItem(int) const;
+// QMenuItem *findItem(int,QMenuData **) const;
+%If (Qt_3_0_0 -)
+// Not documented in the Qt3 API (the similar findPopup() was internal in
+// Qt2).
+// QMenuItem *findItem(QPopupMenu *,int * = 0) const;
+%End
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+ void activateItemAt(int);
+%End
+%If (Qt_3_0_0 -)
+ virtual void activateItemAt(int);
+%End
+
+protected:
+ virtual void menuContentsChanged();
+ virtual void menuStateChanged();
+ virtual void menuInsPopup(QPopupMenu *);
+ virtual void menuDelPopup(QPopupMenu *);
+%If (- Qt_3_0_0)
+// Documented as internal in the Qt2 API.
+// QMenuItem *findPopup(QPopupMenu *,int * = 0);
+%End
+
+private:
+ QMenuData(const QMenuData &);
+};
+
+
+%If (Qt_2_1_0 -)
+
+class QCustomMenuItem : Qt
+{
+%TypeHeaderCode
+#include <qmenudata.h>
+%End
+
+public:
+ QCustomMenuItem();
+
+ virtual bool fullSpan() const;
+ virtual bool isSeparator() const;
+ virtual void setFont(const QFont &);
+ virtual void paint(QPainter *,const QColorGroup &,bool,bool,int,int,
+ int,int) = 0;
+ virtual QSize sizeHint() = 0;
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qmessagebox.sip b/python/pyqt/sip/qt/qmessagebox.sip
new file mode 100644
index 00000000..16e635e3
--- /dev/null
+++ b/python/pyqt/sip/qt/qmessagebox.sip
@@ -0,0 +1,204 @@
+// This is the SIP interface definition for QMessageBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMessageBox</Title>
+<Para>
+<Literal>QMessageBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_MESSAGEBOX)
+
+class QMessageBox : QDialog
+{
+%TypeHeaderCode
+#include <qmessagebox.h>
+%End
+
+public:
+ enum Icon {
+ NoIcon,
+ Information,
+ Warning,
+ Critical,
+%If (Qt_3_2_0 -)
+ Question,
+%End
+ };
+
+ QMessageBox(QWidget * /TransferThis/ = 0,const char * = 0);
+%If (- Qt_2_00)
+ QMessageBox(const char *,const char *,Icon,int,int,int,
+ QWidget * /TransferThis/ = 0,const char * = 0,bool = 1,
+ WFlags = 0);
+%End
+%If (Qt_2_00 -)
+ QMessageBox(const QString &,const QString &,Icon,int,int,int,
+ QWidget * /TransferThis/ = 0,const char * = 0,bool = 1,
+ WFlags = WStyle_DialogBorder);
+%End
+
+ enum {
+ Ok,
+ Cancel,
+ Yes,
+ No,
+ Abort,
+ Retry,
+ Ignore,
+%If (Qt_3_2_0 -)
+ YesAll,
+ NoAll,
+%End
+ ButtonMask,
+ Default,
+ Escape,
+ FlagMask
+ };
+
+%If (- Qt_2_00)
+ static int information(QWidget *,const char *,const char *,int,int = 0,
+ int = 0) /ReleaseGIL/;
+ static int information(QWidget *,const char *,const char *,
+ const char * = "OK",const char * = 0,
+ const char * = 0,int = 0,int = -1) /ReleaseGIL/;
+
+ static int warning(QWidget *,const char *,const char *,int,int,
+ int = 0) /ReleaseGIL/;
+ static int warning(QWidget *,const char *,const char *,
+ const char * = "OK",const char * = 0,
+ const char * = 0,int = 0,int = -1) /ReleaseGIL/;
+
+ static int critical(QWidget *,const char *,const char *,int,int,
+ int = 0) /ReleaseGIL/;
+ static int critical(QWidget *,const char *,const char *,
+ const char * = "OK",const char * = 0,
+ const char * = 0,int = 0,int = -1) /ReleaseGIL/;
+
+ static void about(QWidget *,const char *,const char *) /ReleaseGIL/;
+ static void aboutQt(QWidget *,const char * = 0) /ReleaseGIL/;
+
+ const char *text() const;
+ void setText(const char *);
+%End
+%If (Qt_2_00 -)
+ static int information(QWidget *,const QString &,const QString &,int,
+ int = 0,int = 0) /ReleaseGIL/;
+ static int information(QWidget *,const QString &,const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ int = 0,int = -1) /ReleaseGIL/;
+
+%If (Qt_3_2_0 -)
+ static int question(QWidget *,const QString &,const QString &,int,
+ int = 0,int = 0) /ReleaseGIL/;
+ static int question(QWidget *,const QString &,const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ int = 0,int = -1) /ReleaseGIL/;
+%End
+
+ static int warning(QWidget *,const QString &,const QString &,int,
+ int = 0,int = 0) /ReleaseGIL/;
+ static int warning(QWidget *,const QString &,const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null,int = 0,
+ int = -1) /ReleaseGIL/;
+
+ static int critical(QWidget *,const QString &,const QString &,int,
+ int = 0,int = 0) /ReleaseGIL/;
+ static int critical(QWidget *,const QString &,const QString &,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null,int = 0,
+ int = -1) /ReleaseGIL/;
+
+ static void about(QWidget *,const QString &,
+ const QString &) /ReleaseGIL/;
+ static void aboutQt(QWidget *,
+ const QString & = QString::null) /ReleaseGIL/;
+
+ QString text() const;
+ void setText(const QString &);
+%End
+
+ Icon icon() const;
+
+ void setIcon(Icon);
+%If (Qt_2_00 -)
+ void setIcon(const QPixmap &);
+%End
+
+ const QPixmap *iconPixmap() const;
+ void setIconPixmap(const QPixmap &);
+
+%If (- Qt_2_00)
+ const char *buttonText(int) const;
+ void setButtonText(int,const char *);
+%End
+%If (Qt_2_00 -)
+ QString buttonText(int) const;
+ void setButtonText(int,const QString &);
+%End
+
+ void adjustSize();
+
+%If (- Qt_3_0_0)
+ static QPixmap standardIcon(Icon,GUIStyle);
+%End
+%If (Qt_3_0_0 -)
+ static QPixmap standardIcon(Icon);
+%End
+
+%If (Qt_2_1_0 -)
+ TextFormat textFormat() const;
+ void setTextFormat(TextFormat);
+%End
+
+%If (- Qt_2_00)
+ void setStyle(GUIStyle);
+%End
+
+protected:
+ void resizeEvent(QResizeEvent *);
+%If (Qt_3_0_0 -)
+ void showEvent(QShowEvent *);
+%End
+%If (Qt_3_2_0 -)
+ void closeEvent(QCloseEvent *);
+%End
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_00 -)
+ void styleChanged(QStyle &);
+%End
+
+private:
+ QMessageBox(const QMessageBox &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qmetaobject.sip b/python/pyqt/sip/qt/qmetaobject.sip
new file mode 100644
index 00000000..5cf77037
--- /dev/null
+++ b/python/pyqt/sip/qt/qmetaobject.sip
@@ -0,0 +1,170 @@
+// This is the SIP interface definition for QMetaObject and QMetaProperty.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMetaObject</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>numClassInfo</Function> const</FuncDef>
+ <ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QClassInfo *<Function>classInfo</Function> const</FuncDef>
+ <ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMetaProperty</Title>
+<Para>
+<Literal>QMetaProperty</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QMetaObject
+{
+%TypeHeaderCode
+#include <qmetaobject.h>
+%End
+
+public:
+ const char *className() const;
+ const char *superClassName() const;
+ QMetaObject *superClass() const;
+
+%If (Qt_2_1_0 -)
+ bool inherits(const char *) const;
+
+ int numSlots(bool = 0) const;
+ int numSignals(bool = 0) const;
+
+ QStrList slotNames(bool = 0) const;
+ QStrList signalNames(bool = 0) const;
+
+ //int numClassInfo(bool = 0) const;
+ //QClassInfo *classInfo(int,bool = 0) const;
+ const char *classInfo(const char *,bool = 0) const;
+
+%If (Qt_PROPERTIES)
+%If (Qt_3_0_0 -)
+ const QMetaProperty *property(int,bool = 0) const;
+ int findProperty(const char *,bool = 0) const;
+ int numProperties(bool = 0) const;
+%End
+%If (- Qt_3_0_0)
+ const QMetaProperty *property(const char *,bool = 0) const;
+%End
+
+ QStrList propertyNames(bool = 0) const;
+%End
+%End
+
+private:
+ QMetaObject(const QMetaObject &);
+};
+
+
+%If (Qt_PROPERTIES)
+%If (Qt_2_1_0 -)
+
+class QMetaProperty
+{
+%TypeHeaderCode
+#include <qmetaobject.h>
+%End
+
+public:
+ const char *type() const;
+ const char *name() const;
+
+%If (Qt_2_2_0 -)
+ bool writable() const;
+%End
+%If (- Qt_3_0_0)
+ bool writeable() const;
+%End
+ bool isValid() const;
+
+ bool isSetType() const;
+ bool isEnumType() const;
+ QStrList enumKeys() const;
+
+ int keyToValue(const char *) const;
+ const char *valueToKey(int) const;
+ int keysToValue(const QStrList &) const;
+ QStrList valueToKeys(int) const;
+
+%If (Qt_3_1_0 -)
+ bool designable(QObject * = 0) const;
+ bool scriptable(QObject * = 0) const;
+ bool stored(QObject * = 0) const;
+%End
+%If (Qt_3_0_0 - Qt_3_1_0)
+ bool designable(QObject *) const;
+ bool scriptable(QObject *) const;
+ bool stored(QObject *) const;
+%End
+
+%If (Qt_3_0_0 -)
+ bool reset(QObject *) const;
+%End
+
+%If (- Qt_3_0_0)
+ bool stored(QObject *) const;
+ bool designable() const;
+
+ enum Specification {
+ Unspecified,
+ Class,
+ Reference,
+ Pointer,
+ ConstCharStar
+ };
+
+ enum Flags {
+ UnresolvedEnum,
+ UnresolvedSet,
+ UnresolvedEnumOrSet,
+ UnresolvedStored,
+ UnresolvedDesignable,
+ NotDesignable,
+ NotStored,
+%If (Qt_2_2_0 -)
+ StdSet,
+%End
+ };
+
+ bool testFlags(uint) const;
+ void setFlags(uint);
+ void clearFlags(uint);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qmime.sip b/python/pyqt/sip/qt/qmime.sip
new file mode 100644
index 00000000..cb5abd80
--- /dev/null
+++ b/python/pyqt/sip/qt/qmime.sip
@@ -0,0 +1,104 @@
+// This is the SIP interface definition for the Qt v2+ QMimeSource,
+// QMimeSourceFactory and QWindowsMime classes.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMimeSource (Qt v2+)</Title>
+<Para>
+<Literal>QMimeSource</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMimeSourceFactory (Qt v2+)</Title>
+<Para>
+<Literal>QMimeSourceFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QWindowsMime (Qt v3+)</Title>
+<Para>
+<Literal>QWindowsMime</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QMimeSource
+{
+%TypeHeaderCode
+#include <qmime.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ QMimeSource();
+%End
+
+ virtual const char *format(int = 0) const = 0;
+ virtual bool provides(const char *) const;
+ virtual QByteArray encodedData(const char *) const = 0;
+%If (Qt_3_0_0 -)
+ int serialNumber() const;
+%End
+};
+
+
+class QMimeSourceFactory
+{
+%TypeHeaderCode
+#include <qmime.h>
+%End
+
+public:
+ QMimeSourceFactory();
+
+ static QMimeSourceFactory *defaultFactory();
+ static void setDefaultFactory(QMimeSourceFactory * /Transfer/);
+%If (Qt_3_0_0 -)
+ static QMimeSourceFactory *takeDefaultFactory() /TransferBack/;
+ static void addFactory(QMimeSourceFactory *);
+ static void removeFactory(QMimeSourceFactory *);
+%End
+
+ virtual const QMimeSource *data(const QString &) const;
+ virtual QString makeAbsolute(const QString &,const QString &) const;
+ const QMimeSource *data(const QString &,const QString &) const;
+
+ virtual void setText(const QString &,const QString &);
+ virtual void setImage(const QString &,const QImage &);
+ virtual void setPixmap(const QString &,const QPixmap &);
+ virtual void setData(const QString &,QMimeSource * /Transfer/);
+ virtual void setFilePath(const QStringList &);
+%If (Qt_2_1_0 -)
+ virtual QStringList filePath() const;
+ void addFilePath(const QString &);
+%End
+ virtual void setExtensionType(const QString &,const char *);
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+%End
diff --git a/python/pyqt/sip/qt/qmotifplusstyle.sip b/python/pyqt/sip/qt/qmotifplusstyle.sip
new file mode 100644
index 00000000..18aaa3e0
--- /dev/null
+++ b/python/pyqt/sip/qt/qmotifplusstyle.sip
@@ -0,0 +1,150 @@
+// This is the SIP interface definition for QMotifPlusStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMotifPlusStyle (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_STYLE_MOTIFPLUS)
+%If (Qt_2_2_0 -)
+
+class QMotifPlusStyle : QMotifStyle
+{
+%TypeHeaderCode
+#include <qmotifplusstyle.h>
+%End
+
+public:
+%If (- Qt_3_0_5)
+ QMotifPlusStyle(bool = 0);
+%End
+%If (Qt_3_0_5 -)
+ QMotifPlusStyle(bool = 1);
+%End
+
+ void polish(QPalette &);
+ void polish(QWidget *);
+ void unPolish(QWidget *);
+
+ void polish(QApplication *);
+ void unPolish(QApplication *);
+
+%If (- Qt_3_0_0)
+ void polishPopupMenu(QPopupMenu *);
+ int defaultFrameWidth() const;
+ void drawArrow(QPainter *,ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0);
+ void drawMenuBarItem(QPainter *,int,int,int,int,QMenuItem *,
+ QColorGroup &,bool,bool);
+ void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool,bool,int,int,int,int);
+ void drawPushButton(QPushButton *,QPainter *);
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+
+ void getButtonShift(int &,int &);
+
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,int,
+ bool = 0,bool = 1);
+ QSize indicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+ QSize exclusiveIndicatorSize() const;
+ void drawPanel(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ int = 1,const QBrush * = 0);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,uint);
+ void drawTab(QPainter *,const QTabBar *,QTab *,bool);
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+%End
+%If (Qt_3_0_0 -)
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect subRect(SubRect,const QWidget *) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect querySubControlMetrics(ComplexControl,const QWidget *,
+ SubControl,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ int styleHint(StyleHint,const QWidget *,
+ const QStyleOption & = QStyleOption(),
+ QStyleHintReturn * = 0) const;
+%End
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qmotifstyle.sip b/python/pyqt/sip/qt/qmotifstyle.sip
new file mode 100644
index 00000000..d749745b
--- /dev/null
+++ b/python/pyqt/sip/qt/qmotifstyle.sip
@@ -0,0 +1,168 @@
+// This is the SIP interface definition for QMotifStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMotifStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_STYLE_MOTIF)
+
+class QMotifStyle : QCommonStyle
+{
+%TypeHeaderCode
+#include <qmotifstyle.h>
+%End
+
+public:
+ QMotifStyle(bool = 0);
+
+ void setUseHighlightColors(bool);
+ bool useHighlightColors() const;
+
+ void polish(QPalette &);
+ void polish(QWidget *);
+ void polish(QApplication *);
+
+%If (- Qt_3_0_0)
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawFocusRect(QPainter *,const QRect &,const QColorGroup &,
+ const QColor * =0,bool = 0);
+
+%If (Qt_2_1_0 -)
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+%End
+
+ void drawPushButton(QPushButton *,QPainter *);
+ void drawArrow(QPainter *,ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0);
+ QSize indicatorSize() const;
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,int,
+ bool = 0,bool = 1);
+ QSize exclusiveIndicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+ void drawExclusiveIndicatorMask(QPainter *,int,int,int,int,bool);
+
+ void tabbarMetrics(const QTabBar *,int &,int &,int &);
+
+ void drawTab(QPainter *,const QTabBar *,QTab *,bool);
+ void drawTabMask(QPainter *,const QTabBar *,QTab *,bool);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,uint);
+ int sliderLength() const;
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+ int splitterWidth() const;
+ void drawSplitter(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation);
+ void drawCheckMark(QPainter *,int,int,int,int,const QColorGroup &,bool,
+ bool);
+ void polishPopupMenu(QPopupMenu *);
+ int extraPopupMenuItemWidth(bool,int,QMenuItem *,const QFontMetrics &);
+ int popupMenuItemHeight(bool,QMenuItem *,const QFontMetrics &);
+ void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool,bool,int,int,int,int);
+%End
+%If (Qt_3_0_0 -)
+ void polishPopupMenu(QPopupMenu *);
+
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect querySubControlMetrics(ComplexControl,const QWidget *,SubControl,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ QSize sizeFromContents(ContentsType,const QWidget *,const QSize &,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect subRect(SubRect,const QWidget *) const;
+
+ QPixmap stylePixmap(StylePixmap,const QWidget * = 0,
+ const QStyleOption & = QStyleOption()) const;
+
+ int styleHint(StyleHint,const QWidget *,
+ const QStyleOption & = QStyleOption(),
+ QStyleHintReturn * = 0) const;
+%End
+
+private:
+%If (Qt_3_0_0 -)
+ QMotifStyle(const QMotifStyle &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qmovie.sip b/python/pyqt/sip/qt/qmovie.sip
new file mode 100644
index 00000000..ba4f3e92
--- /dev/null
+++ b/python/pyqt/sip/qt/qmovie.sip
@@ -0,0 +1,109 @@
+// This is the SIP interface definition for QMovie.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMovie</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QMovie</Function></FuncDef>
+ <ParamDef>QDataSource *<Parameter>src</Parameter></ParamDef>
+ <ParamDef>int <Parameter>bufsize</Parameter> = 1024</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>pushData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>int <Parameter>length</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>length</Literal> is derived from <Literal>data</Literal> and not
+passed as a parameter. (Qt v2.2.0+)
+</Para>
+</Sect2>
+%End
+
+
+class QMovie
+{
+%TypeHeaderCode
+#include <qmovie.h>
+%End
+
+public:
+ QMovie();
+%If (Qt_2_2_0 -)
+ QMovie(int);
+%End
+// QMovie(QDataSource *,int = 1024);
+%If (- Qt_2_00)
+ QMovie(const char *,int = 1024);
+%End
+%If (Qt_2_00 -)
+ QMovie(const QString &,int = 1024);
+%End
+ QMovie(QByteArray,int = 1024);
+ QMovie(const QMovie &);
+
+%If (Qt_2_2_0 -)
+ int pushSpace() const;
+ void pushData(const uchar * /Array/,int /ArraySize/);
+%End
+ const QColor &backgroundColor() const;
+ void setBackgroundColor(const QColor &);
+ const QRect &getValidRect() const;
+ const QPixmap &framePixmap() const;
+%If (Qt_2_2_0 -)
+ const QImage &frameImage() const;
+%End
+ bool isNull() const;
+ int frameNumber() const;
+ int steps() const;
+ bool paused() const;
+ bool finished() const;
+ bool running() const;
+ void unpause();
+ void pause();
+ void step();
+ void step(int);
+ void restart();
+ int speed() const;
+ void setSpeed(int);
+ void connectResize(SIP_RXOBJ_CON,SIP_SLOT_CON(const QSize &));
+ void disconnectResize(SIP_RXOBJ_DIS,SIP_SLOT_DIS(const QSize &));
+ void connectUpdate(SIP_RXOBJ_CON,SIP_SLOT_CON(const QRect &));
+ void disconnectUpdate(SIP_RXOBJ_DIS,SIP_SLOT_DIS(const QRect &));
+
+ enum Status {
+ SourceEmpty = -2,
+ UnrecognizedFormat = -1,
+ Paused = 1,
+ EndOfFrame = 2,
+ EndOfLoop = 3,
+ EndOfMovie = 4,
+ SpeedChanged = 5
+ };
+
+ void connectStatus(SIP_RXOBJ_CON,SIP_SLOT_CON(int));
+ void disconnectStatus(SIP_RXOBJ_DIS,SIP_SLOT_DIS(int));
+};
diff --git a/python/pyqt/sip/qt/qmultilinedit.sip b/python/pyqt/sip/qt/qmultilinedit.sip
new file mode 100644
index 00000000..1d407bae
--- /dev/null
+++ b/python/pyqt/sip/qt/qmultilinedit.sip
@@ -0,0 +1,374 @@
+// This is the SIP interface definition for QMultiLineEdit.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMultiLineEdit</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>cursorPosition</Function> const</FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>line</Literal> and
+<Literal>col</Literal> values. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getCursorPosition</Function> const</FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>line</Literal> and
+<Literal>col</Literal> values. (Qt v1.x, Qt v2.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>getMarkedRegion</Function></FuncDef>
+ <ParamDef>int *<Parameter>line1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>line2</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>col2</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the bool result and the
+<Literal>line1</Literal>, <Literal>col1</Literal>, <Literal>line2</Literal> and
+<Literal>col2</Literal> values.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QMultiLineEdit : QTextEdit
+{
+%TypeHeaderCode
+#include <qmultilineedit.h>
+%End
+
+public:
+ QMultiLineEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ QString textLine(int) const;
+ int numLines() const;
+
+ virtual void insertLine(const QString &,int = -1);
+%If (Qt_3_1_0 -)
+ virtual void insertAt(const QString &,int,int);
+ virtual void insertAt(const QString &,int,int,bool);
+%End
+%If (- Qt_3_1_0)
+ virtual void insertAt(const QString &,int,int,bool = 0);
+%End
+ virtual void removeLine(int);
+
+%If (Qt_3_1_0 -)
+ virtual void setCursorPosition(int,int);
+ virtual void setCursorPosition(int,int,bool);
+%End
+%If (- Qt_3_1_0)
+ virtual void setCursorPosition(int,int,bool = 0);
+%End
+ bool atBeginning() const;
+ bool atEnd() const;
+
+ void setAlignment(int);
+ int alignment() const;
+
+ void setEdited(bool);
+ bool edited() const;
+
+ bool hasMarkedText() const;
+ QString markedText() const;
+
+ void cursorWordForward(bool);
+ void cursorWordBackward(bool);
+
+ bool autoUpdate() const;
+ virtual void setAutoUpdate(bool);
+
+ int totalWidth() const;
+ int totalHeight() const;
+
+ int maxLines() const;
+ void setMaxLines(int);
+
+public slots:
+ void deselect();
+
+protected:
+ QPoint cursorPoint() const;
+ virtual void insertAndMark(const QString &,bool);
+ virtual void newLine();
+ virtual void killLine();
+ virtual void pageUp(bool = 0);
+ virtual void pageDown(bool = 0);
+ virtual void cursorLeft(bool = 0,bool = 1);
+ virtual void cursorRight(bool = 0,bool = 1);
+ virtual void cursorUp(bool = 0);
+ virtual void cursorDown(bool = 0);
+ virtual void backspace();
+ virtual void home(bool = 0);
+ virtual void end(bool = 0);
+ bool getMarkedRegion(int *,int *,int *,int *) const;
+ int lineLength(int) const;
+
+private:
+ QMultiLineEdit(const QMultiLineEdit &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QMultiLineEdit : QTableView
+{
+%TypeHeaderCode
+#include <qmultilinedit.h>
+%End
+
+public:
+ QMultiLineEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ int numLines() const;
+ virtual void removeLine(int);
+
+ void cursorPosition(int *,int *) const;
+ void getCursorPosition(int *,int *) const;
+
+ bool atBeginning() const;
+ bool atEnd() const;
+ int maxLineWidth() const;
+ bool autoUpdate() const;
+ bool isReadOnly() const;
+ bool isOverwriteMode() const;
+ QString text() const;
+
+%If (- Qt_2_00)
+ const char *textLine(int) const;
+ void setFont(const QFont &);
+ virtual void insertLine(const char *,int = -1);
+ virtual void insertAt(const char *,int,int);
+ void setCursorPosition(int,int,bool = 0);
+ void setFixedVisibleLines(int);
+ void setAutoUpdate(bool);
+%End
+
+%If (Qt_2_00 -)
+ QString textLine(int) const;
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+ QSizePolicy sizePolicy() const;
+ virtual void setFont(const QFont &);
+ virtual void insertLine(const QString &,int = -1);
+ virtual void insertAt(const QString &,int,int,bool = 0);
+ virtual void setCursorPosition(int,int,bool = 0);
+ virtual void setFixedVisibleLines(int);
+ void setAlignment(int);
+ int alignment() const;
+ virtual void setValidator(const QValidator *);
+ const QValidator *validator() const;
+ void setEdited(bool);
+ bool edited() const;
+ void cursorWordForward(bool);
+ void cursorWordBackward(bool);
+
+ enum EchoMode
+ {
+ Normal,
+ NoEcho,
+ Password
+ };
+
+ virtual void setEchoMode(EchoMode);
+ EchoMode echoMode() const;
+ virtual void setMaxLineLength(int);
+ int maxLineLength() const;
+ virtual void setMaxLines(int);
+ int maxLines() const;
+ virtual void setHMargin(int);
+ int hMargin() const;
+ virtual void setSelection(int,int,int,int);
+ virtual void setAutoUpdate(bool);
+%End
+
+%If (Qt_2_1_0 -)
+ void setMaxLength(int);
+ int maxLength() const;
+
+ enum WordWrap {
+ NoWrap,
+ WidgetWidth,
+ FixedPixelWidth,
+ FixedColumnWidth
+ };
+
+ void setWordWrap(WordWrap);
+ WordWrap wordWrap() const;
+ void setWrapColumnOrWidth(int);
+ int wrapColumnOrWidth() const;
+
+ enum WrapPolicy {
+ AtWhiteSpace,
+ Anywhere
+ };
+
+ void setWrapPolicy(WrapPolicy);
+ WrapPolicy wrapPolicy() const;
+ void setUndoEnabled(bool);
+ bool isUndoEnabled() const;
+ void setUndoDepth(int);
+ int undoDepth() const;
+ int length() const;
+ static void setDefaultTabStop(int);
+ static int defaultTabStop();
+%End
+
+public slots:
+ void clear();
+ void deselect();
+ void selectAll();
+%If (Qt_CLIPBOARD)
+ void paste();
+%If (Qt_2_2_0 -)
+ void pasteSubType(const QCString &);
+%End
+ void cut();
+%End
+%If (- Qt_2_00)
+ void setText(const char *);
+ void setReadOnly(bool);
+ void setOverwriteMode(bool);
+ void append(const char *);
+ void copyText();
+%End
+%If (Qt_2_00 -)
+ virtual void setText(const QString &);
+ virtual void setReadOnly(bool);
+ virtual void setOverwriteMode(bool);
+ void append(const QString &);
+%If (Qt_CLIPBOARD)
+ void copyText() const;
+ void copy() const;
+%End
+ void insert(const QString &);
+%End
+%If (Qt_2_1_0 -)
+ void undo();
+ void redo();
+%End
+
+signals:
+ void textChanged();
+ void returnPressed();
+%If (Qt_2_1_0 -)
+ void undoAvailable(bool);
+ void redoAvailable(bool);
+%End
+%If (Qt_2_2_0 -)
+ void copyAvailable(bool);
+%End
+
+protected:
+ void paintCell(QPainter *,int,int);
+%If (Qt_2_2_0 -)
+ bool event(QEvent *);
+%End
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+%If (Qt_2_00 -)
+ void wheelEvent(QWheelEvent *);
+%End
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+ void timerEvent(QTimerEvent *);
+ void leaveEvent(QEvent *);
+ void resizeEvent(QResizeEvent *);
+%If (Qt_DRAGANDDROP)
+%If (Qt_2_00 -)
+ void dragMoveEvent(QDragMoveEvent *);
+%End
+%If (Qt_2_1_0 -)
+ void dragEnterEvent(QDragEnterEvent *);
+%End
+%If (Qt_2_00 -)
+ void dropEvent(QDropEvent *);
+ void dragLeaveEvent(QDragLeaveEvent *);
+%End
+%End
+ bool hasMarkedText() const;
+ QString markedText() const;
+ int textWidth(int);
+%If (- Qt_2_00)
+ int textWidth(QString *);
+%End
+%If (Qt_2_00 -)
+ int textWidth(const QString &);
+%End
+ QPoint cursorPoint() const;
+%If (- Qt_2_00)
+ virtual void insertChar(char);
+%End
+%If (Qt_2_00 -)
+ virtual void insert(const QString &,bool);
+%End
+ virtual void newLine();
+ virtual void killLine();
+ virtual void pageUp(bool = 0);
+ virtual void pageDown(bool = 0);
+ virtual void cursorLeft(bool = 0,bool = 1);
+ virtual void cursorRight(bool = 0,bool = 1);
+ virtual void cursorUp(bool = 0);
+ virtual void cursorDown(bool = 0);
+ virtual void backspace();
+ virtual void del() /PyName=delChar/;
+ virtual void home(bool = 0);
+ virtual void end(bool = 0);
+ bool getMarkedRegion(int *,int *,int *,int *) const;
+ int lineLength(int) const;
+ QString *getString(int) const;
+%If (Qt_2_1_0 -)
+ bool isEndOfParagraph(int) const;
+%End
+%If (Qt_2_00 -)
+ QString stringShown(int) const;
+ void insertChar(QChar);
+%End
+
+private:
+ QMultiLineEdit(const QMultiLineEdit &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qmutex.sip b/python/pyqt/sip/qt/qmutex.sip
new file mode 100644
index 00000000..1f9ff868
--- /dev/null
+++ b/python/pyqt/sip/qt/qmutex.sip
@@ -0,0 +1,104 @@
+// This is the SIP interface definition for QMutex and QMutexLocker.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QMutex (Qt v2.2+)</Title>
+<Para>
+<Literal>QMutex</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QMutexLocker (Qt v3.1+)</Title>
+<Para>
+<Literal>QMutexLocker</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_THREAD_SUPPORT)
+
+%If (Qt_3_0_0 -)
+
+class QMutex
+{
+%TypeHeaderCode
+#include <qmutex.h>
+%End
+
+public:
+ QMutex(bool = 0);
+
+ void lock() /ReleaseGIL/;
+ void unlock();
+ bool locked();
+ bool tryLock();
+
+private:
+ QMutex(const QMutex &);
+};
+
+%End
+
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+
+class QMutex : Qt
+{
+%TypeHeaderCode
+#include <qthread.h>
+%End
+
+public:
+ QMutex(bool = 0);
+
+ void lock() /ReleaseGIL/;
+ void unlock();
+ bool locked();
+
+private:
+ QMutex(const QMutex &);
+};
+
+%End
+
+
+%If (Qt_3_1_0 -)
+
+class QMutexLocker
+{
+%TypeHeaderCode
+#include <qmutex.h>
+%End
+
+public:
+ QMutexLocker(QMutex *) /ReleaseGIL/;
+
+ QMutex *mutex() const;
+
+private:
+ QMutexLocker(const QMutexLocker &);
+};
+
+%End
+
+%End
diff --git a/python/pyqt/sip/qt/qnamespace.sip b/python/pyqt/sip/qt/qnamespace.sip
new file mode 100644
index 00000000..cddd3b51
--- /dev/null
+++ b/python/pyqt/sip/qt/qnamespace.sip
@@ -0,0 +1,903 @@
+// This is the SIP interface definition for the Qt v2+ Qt class.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>Qt (Qt v2+)</Title>
+<Para>
+<Literal>Qt</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class Qt
+{
+%TypeHeaderCode
+#include <qnamespace.h>
+%End
+
+public:
+ static const QColor &color0;
+ static const QColor &color1;
+ static const QColor &black;
+ static const QColor &white;
+ static const QColor &darkGray;
+ static const QColor &gray;
+ static const QColor &lightGray;
+ static const QColor &red;
+ static const QColor &green;
+ static const QColor &blue;
+ static const QColor &cyan;
+ static const QColor &magenta;
+ static const QColor &yellow;
+ static const QColor &darkRed;
+ static const QColor &darkGreen;
+ static const QColor &darkBlue;
+ static const QColor &darkCyan;
+ static const QColor &darkMagenta;
+ static const QColor &darkYellow;
+
+ enum ButtonState {
+ NoButton,
+ LeftButton,
+ RightButton,
+ MidButton,
+ MouseButtonMask,
+ ShiftButton,
+ ControlButton,
+ AltButton,
+%If (Qt_3_0_0 -)
+ MetaButton,
+%End
+ KeyButtonMask,
+%If (Qt_2_2_0 -)
+ Keypad,
+%End
+ };
+
+ enum Orientation {
+ Horizontal,
+ Vertical
+ };
+
+%If (Qt_3_2_0 -)
+ enum SortOrder {
+ Ascending,
+ Descending
+ };
+%End
+
+%If (- Qt_3_0_0)
+ enum AlignmentFlags {
+ AlignLeft,
+ AlignRight,
+ AlignHCenter,
+ AlignTop,
+ AlignBottom,
+ AlignVCenter,
+ AlignCenter,
+
+ SingleLine,
+ DontClip,
+ ExpandTabs,
+ ShowPrefix,
+ WordBreak
+ };
+%End
+
+%If (Qt_3_0_0 -)
+ enum AlignmentFlags {
+ AlignAuto,
+ AlignLeft,
+ AlignRight,
+ AlignHCenter,
+ AlignJustify,
+ AlignHorizontal_Mask,
+ AlignTop,
+ AlignBottom,
+ AlignVCenter,
+ AlignVertical_Mask,
+ AlignCenter
+ };
+
+ enum TextFlags {
+ SingleLine,
+ DontClip,
+ ExpandTabs,
+ ShowPrefix,
+ WordBreak,
+ BreakAnywhere,
+ DontPrint, // Internal
+ NoAccel
+ };
+
+ typedef uint WState;
+
+ // WidgetState isn't part of the public API but is used in code
+ // generated by uic/pyuic, so we implement the minimum required.
+ enum WidgetState {
+ WState_Polished
+ };
+%End
+
+ typedef uint WFlags;
+
+ enum WidgetFlags {
+ WType_TopLevel,
+%If (- Qt_3_0_0)
+ WType_Modal,
+%End
+%If (Qt_3_0_0 -)
+ WType_Dialog,
+%End
+ WType_Popup,
+ WType_Desktop,
+ WType_Mask,
+
+ WStyle_Customize,
+ WStyle_NormalBorder,
+ WStyle_DialogBorder,
+ WStyle_NoBorder,
+ WStyle_Title,
+ WStyle_SysMenu,
+ WStyle_Minimize,
+ WStyle_Maximize,
+ WStyle_MinMax,
+ WStyle_Tool,
+ WStyle_StaysOnTop,
+%If (- Qt_3_0_0)
+ WStyle_Dialog,
+%End
+%If (- Qt_2_1_0)
+ WStyle_Reserved2,
+ WStyle_Reserved3,
+%End
+%If (Qt_2_1_0 -)
+ WStyle_ContextHelp,
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ WStyle_NoBorderEx,
+%End
+%If (Qt_3_0_0 -)
+ WStyle_Reserved,
+%End
+ WStyle_Mask,
+
+ WDestructiveClose,
+ WPaintDesktop,
+ WPaintUnclipped,
+ WPaintClever,
+ WResizeNoErase, // Obsolete
+ WMouseNoMask,
+%If (- Qt_3_0_0)
+ WNorthWestGravity,
+%End
+%If (Qt_3_0_0 -)
+ WStaticContents,
+%End
+%If (Qt_2_1_0 -)
+ WRepaintNoErase, // Obsolete
+ WX11BypassWM,
+%End
+%If (Qt_3_0_0 -)
+ WWinOwnDC,
+%End
+%If (Qt_2_2_0 -)
+ WGroupLeader,
+%End
+%If (Qt_3_0_0 -)
+ WShowModal,
+ WNoMousePropagation,
+ WSubWindow,
+%End
+%If (Qt_3_1_0 -)
+ WStyle_Splash,
+%End
+%If (Qt_3_2_0 -)
+ WNoAutoErase,
+%End
+ };
+
+
+%If (Qt_3_3_0 -)
+
+ enum WindowState {
+ WindowNoState,
+ WindowMinimized,
+ WindowMaximized,
+ WindowFullScreen,
+ WindowActive
+ };
+
+%End
+
+ enum ImageConversionFlags {
+ ColorMode_Mask,
+ AutoColor,
+ ColorOnly,
+ MonoOnly,
+
+ AlphaDither_Mask,
+ ThresholdAlphaDither,
+ OrderedAlphaDither,
+ DiffuseAlphaDither,
+
+ Dither_Mask,
+ DiffuseDither,
+ OrderedDither,
+ ThresholdDither,
+
+ DitherMode_Mask,
+ AutoDither,
+ PreferDither,
+ AvoidDither
+ };
+
+ enum BGMode {
+ TransparentMode,
+ OpaqueMode
+ };
+
+%If (- Qt_3_0_0)
+ enum PaintUnit {
+ PixelUnit,
+ LoMetricUnit,
+ HiMetricUnit,
+ LoEnglishUnit,
+ HiEnglishUnit,
+ TwipsUnit
+ };
+%End
+
+ enum GUIStyle {
+%If (- Qt_3_0_0)
+ MacStyle,
+%End
+ WindowsStyle,
+%If (- Qt_3_0_0)
+ Win3Style,
+ PMStyle,
+%End
+ MotifStyle
+ };
+
+%If (Qt_3_1_0 -)
+ enum SequenceMatch {
+ NoMatch,
+ PartialMatch,
+ Identical
+ };
+%End
+
+ enum Modifier {
+%If (Qt_3_1_0 -)
+ META,
+%End
+ SHIFT,
+ CTRL,
+ ALT,
+ MODIFIER_MASK,
+ UNICODE_ACCEL,
+ ASCII_ACCEL
+ };
+
+ enum Key {
+ Key_Escape,
+ Key_Tab,
+ Key_Backtab,
+ Key_BackTab,
+ Key_Backspace,
+ Key_BackSpace,
+ Key_Return,
+ Key_Enter,
+ Key_Insert,
+ Key_Delete,
+ Key_Pause,
+ Key_Print,
+ Key_SysReq,
+%If (Qt_3_1_0 -)
+ Key_Clear,
+%End
+
+ Key_Home,
+ Key_End,
+ Key_Left,
+ Key_Up,
+ Key_Right,
+ Key_Down,
+ Key_Prior,
+ Key_PageUp,
+ Key_Next,
+ Key_PageDown,
+
+ Key_Shift,
+ Key_Control,
+ Key_Meta,
+ Key_Alt,
+ Key_CapsLock,
+ Key_NumLock,
+ Key_ScrollLock,
+
+ Key_F1,
+ Key_F2,
+ Key_F3,
+ Key_F4,
+ Key_F5,
+ Key_F6,
+ Key_F7,
+ Key_F8,
+ Key_F9,
+ Key_F10,
+ Key_F11,
+ Key_F12,
+ Key_F13,
+ Key_F14,
+ Key_F15,
+ Key_F16,
+ Key_F17,
+ Key_F18,
+ Key_F19,
+ Key_F20,
+ Key_F21,
+ Key_F22,
+ Key_F23,
+ Key_F24,
+ Key_F25,
+ Key_F26,
+ Key_F27,
+ Key_F28,
+ Key_F29,
+ Key_F30,
+ Key_F31,
+ Key_F32,
+ Key_F33,
+ Key_F34,
+ Key_F35,
+
+ Key_Super_L,
+ Key_Super_R,
+ Key_Menu,
+ Key_Hyper_L,
+ Key_Hyper_R,
+%If (Qt_3_0_0 -)
+ Key_Help,
+ Key_Direction_L,
+ Key_Direction_R,
+%End
+
+ Key_Space,
+ Key_Any,
+ Key_Exclam,
+ Key_QuoteDbl,
+ Key_NumberSign,
+ Key_Dollar,
+ Key_Percent,
+ Key_Ampersand,
+ Key_Apostrophe,
+ Key_ParenLeft,
+ Key_ParenRight,
+ Key_Asterisk,
+ Key_Plus,
+ Key_Comma,
+ Key_Minus,
+ Key_Period,
+ Key_Slash,
+ Key_0,
+ Key_1,
+ Key_2,
+ Key_3,
+ Key_4,
+ Key_5,
+ Key_6,
+ Key_7,
+ Key_8,
+ Key_9,
+ Key_Colon,
+ Key_Semicolon,
+ Key_Less,
+ Key_Equal,
+ Key_Greater,
+ Key_Question,
+ Key_At,
+ Key_A,
+ Key_B,
+ Key_C,
+ Key_D,
+ Key_E,
+ Key_F,
+ Key_G,
+ Key_H,
+ Key_I,
+ Key_J,
+ Key_K,
+ Key_L,
+ Key_M,
+ Key_N,
+ Key_O,
+ Key_P,
+ Key_Q,
+ Key_R,
+ Key_S,
+ Key_T,
+ Key_U,
+ Key_V,
+ Key_W,
+ Key_X,
+ Key_Y,
+ Key_Z,
+ Key_BracketLeft,
+ Key_Backslash,
+ Key_BracketRight,
+ Key_AsciiCircum,
+ Key_Underscore,
+ Key_QuoteLeft,
+ Key_BraceLeft,
+ Key_Bar,
+ Key_BraceRight,
+ Key_AsciiTilde,
+
+ Key_nobreakspace,
+ Key_exclamdown,
+ Key_cent,
+ Key_sterling,
+ Key_currency,
+ Key_yen,
+ Key_brokenbar,
+ Key_section,
+ Key_diaeresis,
+ Key_copyright,
+ Key_ordfeminine,
+ Key_guillemotleft,
+ Key_notsign,
+ Key_hyphen,
+ Key_registered,
+ Key_macron,
+ Key_degree,
+ Key_plusminus,
+ Key_twosuperior,
+ Key_threesuperior,
+ Key_acute,
+ Key_mu,
+ Key_paragraph,
+ Key_periodcentered,
+ Key_cedilla,
+ Key_onesuperior,
+ Key_masculine,
+ Key_guillemotright,
+ Key_onequarter,
+ Key_onehalf,
+ Key_threequarters,
+ Key_questiondown,
+ Key_Agrave,
+ Key_Aacute,
+ Key_Acircumflex,
+ Key_Atilde,
+ Key_Adiaeresis,
+ Key_Aring,
+ Key_AE,
+ Key_Ccedilla,
+ Key_Egrave,
+ Key_Eacute,
+ Key_Ecircumflex,
+ Key_Ediaeresis,
+ Key_Igrave,
+ Key_Iacute,
+ Key_Icircumflex,
+ Key_Idiaeresis,
+ Key_ETH,
+ Key_Ntilde,
+ Key_Ograve,
+ Key_Oacute,
+ Key_Ocircumflex,
+ Key_Otilde,
+ Key_Odiaeresis,
+ Key_multiply,
+ Key_Ooblique,
+ Key_Ugrave,
+ Key_Uacute,
+ Key_Ucircumflex,
+ Key_Udiaeresis,
+ Key_Yacute,
+ Key_THORN,
+ Key_ssharp,
+ Key_agrave,
+ Key_aacute,
+ Key_acircumflex,
+ Key_atilde,
+ Key_adiaeresis,
+ Key_aring,
+ Key_ae,
+ Key_ccedilla,
+ Key_egrave,
+ Key_eacute,
+ Key_ecircumflex,
+ Key_ediaeresis,
+ Key_igrave,
+ Key_iacute,
+ Key_icircumflex,
+ Key_idiaeresis,
+ Key_eth,
+ Key_ntilde,
+ Key_ograve,
+ Key_oacute,
+ Key_ocircumflex,
+ Key_otilde,
+ Key_odiaeresis,
+ Key_division,
+ Key_oslash,
+ Key_ugrave,
+ Key_uacute,
+ Key_ucircumflex,
+ Key_udiaeresis,
+ Key_yacute,
+ Key_thorn,
+ Key_ydiaeresis,
+
+%If (Qt_3_1_0 -)
+ Key_Back,
+ Key_Forward,
+ Key_Stop,
+ Key_Refresh,
+
+ Key_VolumeDown,
+ Key_VolumeMute,
+ Key_VolumeUp,
+ Key_BassBoost,
+ Key_BassUp,
+ Key_BassDown,
+ Key_TrebleUp,
+ Key_TrebleDown,
+
+ Key_MediaPlay,
+ Key_MediaStop,
+ Key_MediaPrev,
+ Key_MediaNext,
+ Key_MediaRecord,
+
+ Key_HomePage,
+ Key_Favorites,
+ Key_Search,
+ Key_Standby,
+ Key_OpenUrl,
+
+ Key_LaunchMail,
+ Key_LaunchMedia,
+ Key_Launch0,
+ Key_Launch1,
+ Key_Launch2,
+ Key_Launch3,
+ Key_Launch4,
+ Key_Launch5,
+ Key_Launch6,
+ Key_Launch7,
+ Key_Launch8,
+ Key_Launch9,
+ Key_LaunchA,
+ Key_LaunchB,
+ Key_LaunchC,
+ Key_LaunchD,
+ Key_LaunchE,
+ Key_LaunchF,
+
+ Key_MediaLast,
+%End
+
+ Key_unknown
+ };
+
+ enum ArrowType {
+ UpArrow,
+ DownArrow,
+ LeftArrow,
+ RightArrow
+ };
+
+ enum RasterOp {
+ CopyROP,
+ OrROP,
+ XorROP,
+ NotAndROP,
+ EraseROP,
+ NotCopyROP,
+ NotOrROP,
+ NotXorROP,
+ AndROP,
+ NotEraseROP,
+ NotROP,
+ ClearROP,
+ SetROP,
+ NopROP,
+ AndNotROP,
+ OrNotROP,
+ NandROP,
+ NorROP,
+ LastROP
+ };
+
+ enum PenStyle {
+ NoPen,
+ SolidLine,
+ DashLine,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine,
+%If (Qt_2_1_0 -)
+ MPenStyle
+%End
+ };
+
+%If (Qt_2_1_0 -)
+ enum PenCapStyle {
+ FlatCap,
+ SquareCap,
+ RoundCap,
+ MPenCapStyle
+ };
+
+ enum PenJoinStyle {
+ MiterJoin,
+ BevelJoin,
+ RoundJoin,
+ MPenJoinStyle
+ };
+%End
+
+ enum BrushStyle {
+ NoBrush,
+ SolidPattern,
+ Dense1Pattern,
+ Dense2Pattern,
+ Dense3Pattern,
+ Dense4Pattern,
+ Dense5Pattern,
+ Dense6Pattern,
+ Dense7Pattern,
+ HorPattern,
+ VerPattern,
+ CrossPattern,
+ BDiagPattern,
+ FDiagPattern,
+ DiagCrossPattern,
+ CustomPattern
+ };
+
+%If (Qt_3_1_0 -)
+ enum MacintoshVersion {
+ MV_Unknown,
+
+ MV_9,
+%If (Qt_3_2_0 -)
+ MV_10_DOT_0,
+%End
+ MV_10_DOT_1,
+ MV_10_DOT_2,
+%If (Qt_3_2_0 -)
+ MV_10_DOT_3,
+%End
+%If (Qt_3_3_5 -)
+ MV_10_DOT_4,
+%End
+
+%If (Qt_3_2_0 -)
+ MV_CHEETAH,
+ MV_PUMA,
+%End
+ MV_JAGUAR,
+%If (Qt_3_2_0 -)
+ MV_PANTHER,
+%End
+%If (Qt_3_3_5 -)
+ MV_TIGER,
+%End
+ };
+%End
+
+ enum WindowsVersion {
+ WV_32s,
+ WV_95,
+ WV_98,
+%If (Qt_3_0_0 -)
+ WV_Me,
+%End
+%If (Qt_2_1_0 -)
+ WV_DOS_based,
+%End
+
+ WV_NT,
+%If (Qt_2_1_0 -)
+ WV_2000,
+%End
+%If (Qt_3_0_0 -)
+ WV_XP,
+%End
+%If (Qt_3_3_0 -)
+ WV_2003,
+%End
+%If (Qt_3_3_6 -)
+ WV_VISTA,
+%End
+%If (Qt_2_1_0 -)
+ WV_NT_based,
+%End
+
+%If (Qt_3_3_0 -)
+ WV_CE,
+ WV_CENET,
+ WV_CE_based,
+%End
+ };
+
+%If (Qt_2_2_0 -)
+ enum UIEffect {
+ UI_General,
+ UI_AnimateMenu,
+ UI_FadeMenu,
+ UI_AnimateCombo,
+ UI_AnimateTooltip,
+ UI_FadeTooltip,
+%If (Qt_3_2_0 -)
+ UI_AnimateToolBox,
+%End
+ };
+%End
+
+%If (Qt_3_0_0 -)
+ enum CursorShape {
+ ArrowCursor,
+ UpArrowCursor,
+ CrossCursor,
+ WaitCursor,
+ IbeamCursor,
+ SizeVerCursor,
+ SizeHorCursor,
+ SizeBDiagCursor,
+ SizeFDiagCursor,
+ SizeAllCursor,
+ BlankCursor,
+ SplitVCursor,
+ SplitHCursor,
+ PointingHandCursor,
+ ForbiddenCursor,
+ WhatsThisCursor,
+%If (Qt_3_3_0 -)
+ BusyCursor,
+%End
+ LastCursor,
+ BitmapCursor
+ };
+%End
+
+ static const QCursor &arrowCursor;
+ static const QCursor &upArrowCursor;
+ static const QCursor &crossCursor;
+ static const QCursor &waitCursor;
+ static const QCursor &ibeamCursor;
+ static const QCursor &sizeVerCursor;
+ static const QCursor &sizeHorCursor;
+ static const QCursor &sizeBDiagCursor;
+ static const QCursor &sizeFDiagCursor;
+ static const QCursor &sizeAllCursor;
+ static const QCursor &blankCursor;
+ static const QCursor &splitVCursor;
+ static const QCursor &splitHCursor;
+ static const QCursor &pointingHandCursor;
+%If (Qt_2_1_0 -)
+ static const QCursor &forbiddenCursor;
+%End
+%If (Qt_3_0_0 -)
+ static const QCursor &whatsThisCursor;
+%End
+%If (Qt_3_3_0 -)
+ static const QCursor &busyCursor;
+%End
+
+ enum TextFormat {
+ PlainText,
+ RichText,
+ AutoText,
+%If (Qt_3_1_0 -)
+ LogText,
+%End
+ };
+
+%If (Qt_3_1_0 -)
+ enum AnchorAttribute {
+ AnchorName,
+ AnchorHref
+ };
+%End
+
+%If (Qt_3_0_0 -)
+ enum Dock {
+ DockUnmanaged,
+ DockTornOff,
+ DockTop,
+ DockBottom,
+ DockRight,
+ DockLeft,
+ DockMinimized
+ };
+
+ enum DateFormat {
+ TextDate,
+ ISODate,
+ LocalDate
+ };
+
+%If (Qt_3_1_0 -)
+ enum TimeSpec {
+ LocalTime,
+ UTC
+ };
+%End
+
+ enum BackgroundMode {
+ FixedColor,
+ FixedPixmap,
+ NoBackground,
+ PaletteForeground,
+ PaletteButton,
+ PaletteLight,
+ PaletteMidlight,
+ PaletteDark,
+ PaletteMid,
+ PaletteText,
+ PaletteBrightText,
+ PaletteBase,
+ PaletteBackground,
+ PaletteShadow,
+ PaletteHighlight,
+ PaletteHighlightedText,
+ PaletteButtonText,
+ PaletteLink,
+ PaletteLinkVisited,
+ X11ParentRelative
+ };
+
+ typedef uint ComparisonFlags;
+
+ enum StringComparisonMode {
+ CaseSensitive,
+ BeginsWith,
+ EndsWith,
+ Contains,
+ ExactMatch
+ };
+
+%If (Qt_3_2_0 -)
+ enum Corner {
+ TopLeft,
+ TopRight,
+ BottomLeft,
+ BottomRight
+ };
+%End
+
+%If (WS_X11)
+ typedef unsigned long HANDLE;
+%End
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qnetworkprotocol.sip b/python/pyqt/sip/qt/qnetworkprotocol.sip
new file mode 100644
index 00000000..6af512b9
--- /dev/null
+++ b/python/pyqt/sip/qt/qnetworkprotocol.sip
@@ -0,0 +1,227 @@
+// This is the SIP interface definition for QNetworkOperation, QNetworkProtocol
+// and QNetworkProtocolFactoryBase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QNetworkOperation (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkOperation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QNetworkProtocol (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkProtocol</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QNetworkProtocolFactoryBase (Qt v2.1+)</Title>
+<Para>
+<Literal>QNetworkProtocolFactoryBase</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL)
+%If (Qt_2_1_0 -)
+
+class QNetworkProtocolFactoryBase
+{
+%TypeHeaderCode
+#include <qnetworkprotocol.h>
+%End
+
+public:
+ virtual QNetworkProtocol *createObject() = 0 /Factory/;
+
+};
+
+
+class QNetworkProtocol : QObject
+{
+%TypeHeaderCode
+#include <qnetworkprotocol.h>
+%End
+
+public:
+ enum State {
+ StWaiting,
+ StInProgress,
+ StDone,
+ StFailed,
+ StStopped
+ };
+
+%If (- Qt_3_0_0)
+ enum Operation {
+ OpListChildren,
+ OpMkdir,
+ OpRemove,
+ OpRename,
+ OpGet,
+ OpPut
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Operation {
+ OpListChildren,
+ OpMkDir,
+ OpRemove,
+ OpRename,
+ OpGet,
+ OpPut
+ };
+%End
+
+ enum ConnectionState {
+ ConHostFound,
+ ConConnected,
+ ConClosed
+ };
+
+%If (- Qt_3_0_0)
+ enum Error {
+ NoError,
+ ErrValid,
+ ErrUnknownProtocol,
+ ErrUnsupported,
+ ErrParse,
+ ErrLoginIncorrect,
+ ErrHostNotFound,
+ ErrListChlidren,
+ ErrMkdir,
+ ErrRemove,
+ ErrRename,
+ ErrGet,
+ ErrPut,
+ ErrFileNotExisting,
+ ErrPermissionDenied
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Error {
+ NoError,
+ ErrValid,
+ ErrUnknownProtocol,
+ ErrUnsupported,
+ ErrParse,
+ ErrLoginIncorrect,
+ ErrHostNotFound,
+ ErrListChildren,
+ ErrMkDir,
+ ErrRemove,
+ ErrRename,
+ ErrGet,
+ ErrPut,
+ ErrFileNotExisting,
+ ErrPermissionDenied
+ };
+%End
+
+ QNetworkProtocol();
+
+ virtual void setUrl(QUrlOperator *);
+
+ virtual void setAutoDelete(bool,int = 10000);
+ bool autoDelete() const;
+
+ static void registerNetworkProtocol(const QString &,
+ QNetworkProtocolFactoryBase *);
+ static QNetworkProtocol *getNetworkProtocol(const QString &) /Factory/;
+ static bool hasOnlyLocalFileSystem();
+
+ virtual int supportedOperations() const;
+ virtual void addOperation(QNetworkOperation *);
+
+ QUrlOperator *url() const;
+ QNetworkOperation *operationInProgress() const;
+ virtual void clearOperationQueue();
+ virtual void stop();
+
+signals:
+ void data(const QByteArray &,QNetworkOperation *);
+ void connectionStateChanged(int,const QString &);
+ void finished(QNetworkOperation *);
+ void start(QNetworkOperation *);
+ void newChildren(const QValueList<QUrlInfo> &,QNetworkOperation *);
+ void newChild(const QUrlInfo &,QNetworkOperation *);
+ void createdDirectory(const QUrlInfo &,QNetworkOperation *);
+ void removed(QNetworkOperation *);
+ void itemChanged(QNetworkOperation *);
+ void dataTransferProgress(int,int,QNetworkOperation *);
+
+protected:
+ virtual void processOperation(QNetworkOperation *);
+ virtual void operationListChildren(QNetworkOperation *);
+ virtual void operationMkDir(QNetworkOperation *);
+ virtual void operationRemove(QNetworkOperation *);
+ virtual void operationRename(QNetworkOperation *);
+ virtual void operationGet(QNetworkOperation *);
+ virtual void operationPut(QNetworkOperation *);
+%If (Qt_3_0_0 -)
+ virtual void operationPutChunk(QNetworkOperation *);
+%End
+ virtual bool checkConnection(QNetworkOperation *);
+
+private:
+%If (Qt_3_1_0 -)
+ QNetworkProtocol(const QNetworkProtocol &);
+%End
+};
+
+
+class QNetworkOperation : QObject
+{
+%TypeHeaderCode
+#include <qnetworkprotocol.h>
+%End
+
+public:
+ QNetworkOperation(QNetworkProtocol::Operation,const QString &,
+ const QString &,const QString &);
+ QNetworkOperation(QNetworkProtocol::Operation,const QByteArray &,
+ const QByteArray &,const QByteArray &);
+
+ void setState(QNetworkProtocol::State);
+ void setProtocolDetail(const QString &);
+ void setErrorCode(int);
+ void setArg(int,const QString &);
+ void setRawArg(int,const QByteArray &);
+
+ QNetworkProtocol::Operation operation() const;
+ QNetworkProtocol::State state() const;
+ QString arg(int) const;
+ QByteArray rawArg(int) const;
+ QString protocolDetail() const;
+ int errorCode() const;
+
+ void free();
+
+private:
+%If (Qt_3_1_0 -)
+ QNetworkOperation(const QNetworkOperation &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qobject.sip b/python/pyqt/sip/qt/qobject.sip
new file mode 100644
index 00000000..97b3ff88
--- /dev/null
+++ b/python/pyqt/sip/qt/qobject.sip
@@ -0,0 +1,1369 @@
+// This is the SIP interface definition for QObject.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QObject</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const char *<Parameter>signal</Parameter> = 0</ParamDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static bool <Function>disconnect</Function></FuncDef>
+ <ParamDef>const QObject *<Parameter>sender</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>signal</Parameter></ParamDef>
+ <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>member</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+At the moment PyQt does not support the full behaviour of the corresponding Qt
+method. In particular, specifying None (ie. 0 in C++) for the
+<Literal>signal</Literal> and <Literal>receiver</Literal> parameters is not yet
+supported.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QObject : Qt
+{
+%TypeHeaderCode
+#include <qobject.h>
+#include <qapplication.h>
+%End
+
+public:
+ QObject(QObject * /TransferThis/ = 0,const char * = 0);
+
+%ConvertToSubClassCode
+ static struct class_graph {
+ char *name;
+ sipWrapperType **type;
+ int yes, no;
+ } graph[] = {
+ {sipName_QWidget, &sipClass_QWidget, 25, 1},
+#if QT_VERSION >= 0x030100 && defined(SIP_FEATURE_Qt_ASSISTANTCLIENT)
+ {sipName_QAssistantClient, &sipClass_QAssistantClient, -1, 2},
+#else
+ {NULL, NULL, -1, 2},
+#endif
+ {sipName_QSessionManager, &sipClass_QSessionManager, -1, 3},
+ {sipName_QTranslator, &sipClass_QTranslator, -1, 4},
+#if QT_VERSION >= 0x030000
+ {sipName_QProcess, &sipClass_QProcess, -1, 5},
+#else
+ {NULL, NULL, -1, 5},
+#endif
+ {sipName_QToolTipGroup, &sipClass_QToolTipGroup, -1, 6},
+#if defined(SIP_FEATURE_Qt_FILEDIALOG)
+ {sipName_QFileIconProvider, &sipClass_QFileIconProvider, -1, 7},
+#else
+ {NULL, NULL, -1, 7},
+#endif
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_ACTION)
+ {sipName_QAction, &sipClass_QAction, 89, 8},
+#else
+ {NULL, NULL, -1, 8},
+#endif
+#if QT_VERSION >= 0x030000
+ {sipName_QObjectCleanupHandler, &sipClass_QObjectCleanupHandler, -1, 9},
+#else
+ {NULL, NULL, -1, 9},
+#endif
+ {sipName_QTimer, &sipClass_QTimer, -1, 10},
+ {sipName_QLayout, &sipClass_QLayout, 90, 11},
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL)
+ {sipName_QUrlOperator, &sipClass_QUrlOperator, -1, 12},
+#else
+ {NULL, NULL, -1, 12},
+#endif
+ {sipName_QStyleSheet, &sipClass_QStyleSheet, -1, 13},
+ {sipName_QValidator, &sipClass_QValidator, 94, 14},
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL)
+ {sipName_QNetworkOperation, &sipClass_QNetworkOperation, -1, 15},
+#else
+ {NULL, NULL, -1, 15},
+#endif
+ {sipName_QAccel, &sipClass_QAccel, -1, 16},
+#if QT_VERSION >= 0x030100
+ {sipName_QEventLoop, &sipClass_QEventLoop, -1, 17},
+#else
+ {NULL, NULL, -1, 17},
+#endif
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL)
+ {sipName_QNetworkProtocol, &sipClass_QNetworkProtocol, -1, 18},
+#else
+ {NULL, NULL, -1, 18},
+#endif
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_SOUND)
+ {sipName_QSound, &sipClass_QSound, -1, 19},
+#else
+ {NULL, NULL, -1, 19},
+#endif
+ {sipName_QApplication, &sipClass_QApplication, -1, 20},
+ {sipName_QDragObject, &sipClass_QDragObject, 97, 21},
+ {sipName_QSocketNotifier, &sipClass_QSocketNotifier, -1, 22},
+ {sipName_QStyle, &sipClass_QStyle, 103, 23},
+ {sipName_QSignalMapper, &sipClass_QSignalMapper, -1, 24},
+#if defined(SIP_FEATURE_Qt_CLIPBOARD)
+ {sipName_QClipboard, &sipClass_QClipboard, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QStatusBar, &sipClass_QStatusBar, -1, 26},
+#if defined(SIP_FEATURE_Qt_SIZEGRIP)
+ {sipName_QSizeGrip, &sipClass_QSizeGrip, -1, 27},
+#else
+ {NULL, NULL, -1, 27},
+#endif
+ {sipName_QTabWidget, &sipClass_QTabWidget, -1, 28},
+#if QT_VERSION >= 0x030000
+ {sipName_QDateEdit, &sipClass_QDateEdit, -1, 29},
+#else
+ {NULL, NULL, -1, 29},
+#endif
+ {sipName_QMainWindow, &sipClass_QMainWindow, -1, 30},
+#if QT_VERSION >= 0x030000
+ {sipName_QDateTimeEdit, &sipClass_QDateTimeEdit, -1, 31},
+#else
+ {NULL, NULL, -1, 31},
+#endif
+#if QT_VERSION >= 0x030000
+ {sipName_QTimeEdit, &sipClass_QTimeEdit, -1, 32},
+#else
+ {NULL, NULL, -1, 32},
+#endif
+ {sipName_QFrame, &sipClass_QFrame, 46, 33},
+ {sipName_QScrollBar, &sipClass_QScrollBar, -1, 34},
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_DIAL)
+ {sipName_QDial, &sipClass_QDial, -1, 35},
+#else
+ {NULL, NULL, -1, 35},
+#endif
+ {sipName_QButton, &sipClass_QButton, 75, 36},
+ {sipName_QTabBar, &sipClass_QTabBar, -1, 37},
+ {sipName_QDialog, &sipClass_QDialog, 79, 38},
+ {sipName_QComboBox, &sipClass_QComboBox, -1, 39},
+ {sipName_QHeader, &sipClass_QHeader, -1, 40},
+#if QT_VERSION >= 0x030000
+ {sipName_QDockArea, &sipClass_QDockArea, -1, 41},
+#else
+ {NULL, NULL, -1, 41},
+#endif
+#if QT_VERSION >= 0x030200
+ {sipName_QSplashScreen, &sipClass_QSplashScreen, -1, 42},
+#else
+ {NULL, NULL, -1, 42},
+#endif
+ {sipName_QSlider, &sipClass_QSlider, -1, 43},
+ {sipName_QSpinBox, &sipClass_QSpinBox, -1, 44},
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_WORKSPACE)
+ {sipName_QWorkspace, &sipClass_QWorkspace, -1, 45},
+#else
+ {NULL, NULL, -1, 45},
+#endif
+#if QT_VERSION >= 0x030000
+ {sipName_QDesktopWidget, &sipClass_QDesktopWidget, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QGrid, &sipClass_QGrid, -1, 47},
+ {sipName_QLineEdit, &sipClass_QLineEdit, -1, 48},
+#if QT_VERSION >= 0x030200
+ {sipName_QToolBox, &sipClass_QToolBox, -1, 49},
+#else
+ {NULL, NULL, -1, 49},
+#endif
+ {sipName_QWidgetStack, &sipClass_QWidgetStack, -1, 50},
+#if QT_VERSION >= 0x030000
+ {sipName_QDockWindow, &sipClass_QDockWindow, 60, 51},
+#else
+ {NULL, NULL, -1, 51},
+#endif
+ {sipName_QMenuBar, &sipClass_QMenuBar, -1, 52},
+ {sipName_QLabel, &sipClass_QLabel, -1, 53},
+ {sipName_QGroupBox, &sipClass_QGroupBox, 61, 54},
+ {sipName_QPopupMenu, &sipClass_QPopupMenu, -1, 55},
+#if defined(SIP_FEATURE_Qt_SPLITTER)
+ {sipName_QSplitter, &sipClass_QSplitter, -1, 56},
+#else
+ {NULL, NULL, -1, 56},
+#endif
+ {sipName_QProgressBar, &sipClass_QProgressBar, -1, 57},
+ {sipName_QScrollView, &sipClass_QScrollView, 66, 58},
+ {sipName_QHBox, &sipClass_QHBox, 74, 59},
+ {sipName_QLCDNumber, &sipClass_QLCDNumber, -1, -1},
+ {sipName_QToolBar, &sipClass_QToolBar, -1, -1},
+ {sipName_QButtonGroup, &sipClass_QButtonGroup, 64, 62},
+ {sipName_QHGroupBox, &sipClass_QHGroupBox, -1, 63},
+ {sipName_QVGroupBox, &sipClass_QVGroupBox, -1, -1},
+ {sipName_QVButtonGroup, &sipClass_QVButtonGroup, -1, 65},
+ {sipName_QHButtonGroup, &sipClass_QHButtonGroup, -1, -1},
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_ICONVIEW)
+ {sipName_QIconView, &sipClass_QIconView, -1, 67},
+#else
+ {NULL, NULL, -1, 67},
+#endif
+ {sipName_QListView, &sipClass_QListView, -1, 68},
+ {sipName_QListBox, &sipClass_QListBox, -1, 69},
+#if QT_VERSION >= 0x030000
+ {sipName_QGridView, &sipClass_QGridView, -1, 70},
+#else
+ {NULL, NULL, -1, 70},
+#endif
+#if QT_VERSION >= 0x030000
+ {sipName_QTextEdit, &sipClass_QTextEdit, 71, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QTextBrowser, &sipClass_QTextBrowser, -1, 72},
+ {sipName_QMultiLineEdit, &sipClass_QMultiLineEdit, -1, 73},
+ {sipName_QTextView, &sipClass_QTextView, -1, -1},
+ {sipName_QVBox, &sipClass_QVBox, -1, -1},
+ {sipName_QToolButton, &sipClass_QToolButton, -1, 76},
+ {sipName_QRadioButton, &sipClass_QRadioButton, -1, 77},
+ {sipName_QPushButton, &sipClass_QPushButton, -1, 78},
+ {sipName_QCheckBox, &sipClass_QCheckBox, -1, -1},
+#if defined(WS_X11) && defined(SIP_FEATURE_Qt_PRINTDIALOG)
+ {sipName_QPrintDialog, &sipClass_QPrintDialog, -1, 80},
+#else
+ {NULL, NULL, -1, 80},
+#endif
+#if QT_VERSION >= 0x030000
+ {sipName_QErrorMessage, &sipClass_QErrorMessage, -1, 81},
+#else
+ {NULL, NULL, -1, 81},
+#endif
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_INPUTDIALOG)
+ {sipName_QInputDialog, &sipClass_QInputDialog, -1, 82},
+#else
+ {NULL, NULL, -1, 82},
+#endif
+#if defined(SIP_FEATURE_Qt_MESSAGEBOX)
+ {sipName_QMessageBox, &sipClass_QMessageBox, -1, 83},
+#else
+ {NULL, NULL, -1, 83},
+#endif
+#if defined(SIP_FEATURE_Qt_WIZARD)
+ {sipName_QWizard, &sipClass_QWizard, -1, 84},
+#else
+ {NULL, NULL, -1, 84},
+#endif
+#if defined(SIP_FEATURE_Qt_COLORDIALOG)
+ {sipName_QColorDialog, &sipClass_QColorDialog, -1, 85},
+#else
+ {NULL, NULL, -1, 85},
+#endif
+#if defined(SIP_FEATURE_Qt_FONTDIALOG)
+ {sipName_QFontDialog, &sipClass_QFontDialog, -1, 86},
+#else
+ {NULL, NULL, -1, 86},
+#endif
+#if defined(SIP_FEATURE_Qt_FILEDIALOG)
+ {sipName_QFileDialog, &sipClass_QFileDialog, -1, 87},
+#else
+ {NULL, NULL, -1, 87},
+#endif
+#if defined(SIP_FEATURE_Qt_PROGRESSDIALOG)
+ {sipName_QProgressDialog, &sipClass_QProgressDialog, -1, 88},
+#else
+ {NULL, NULL, -1, 88},
+#endif
+#if defined(SIP_FEATURE_Qt_TABDIALOG)
+ {sipName_QTabDialog, &sipClass_QTabDialog, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_ACTION)
+ {sipName_QActionGroup, &sipClass_QActionGroup, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QGridLayout, &sipClass_QGridLayout, -1, 91},
+ {sipName_QBoxLayout, &sipClass_QBoxLayout, 92, -1},
+ {sipName_QHBoxLayout, &sipClass_QHBoxLayout, -1, 93},
+ {sipName_QVBoxLayout, &sipClass_QVBoxLayout, -1, -1},
+ {sipName_QDoubleValidator, &sipClass_QDoubleValidator, -1, 95},
+ {sipName_QIntValidator, &sipClass_QIntValidator, -1, 96},
+#if QT_VERSION >= 0x030000
+ {sipName_QRegExpValidator, &sipClass_QRegExpValidator, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QTextDrag, &sipClass_QTextDrag, -1, 98},
+ {sipName_QStoredDrag, &sipClass_QStoredDrag, 101, 99},
+#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_ICONVIEW) && defined(SIP_FEATURE_Qt_DRAGANDDROP)
+ {sipName_QIconDrag, &sipClass_QIconDrag, -1, 100},
+#else
+ {NULL, NULL, -1, 100},
+#endif
+ {sipName_QImageDrag, &sipClass_QImageDrag, -1, -1},
+#if QT_VERSION >= 210
+ {sipName_QColorDrag, &sipClass_QColorDrag, -1, 102},
+#else
+ {NULL, NULL, -1, 102},
+#endif
+ {sipName_QUriDrag, &sipClass_QUriDrag, -1, -1},
+ {sipName_QCommonStyle, &sipClass_QCommonStyle, 104, -1},
+#if defined(SIP_FEATURE_Qt_STYLE_WINDOWS)
+ {sipName_QWindowsStyle, &sipClass_QWindowsStyle, 106, 105},
+#else
+ {NULL, NULL, -1, 105},
+#endif
+#if defined(SIP_FEATURE_Qt_STYLE_MOTIF)
+ {sipName_QMotifStyle, &sipClass_QMotifStyle, 107, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+#if defined(SIP_FEATURE_Qt_STYLE_PLATINUM)
+ {sipName_QPlatinumStyle, &sipClass_QPlatinumStyle, -1, 110},
+#else
+ {NULL, NULL, -1, 110},
+#endif
+#if defined(SIP_FEATURE_Qt_STYLE_CDE)
+ {sipName_QCDEStyle, &sipClass_QCDEStyle, -1, 108},
+#else
+ {NULL, NULL, -1, 108},
+#endif
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_STYLE_MOTIFPLUS)
+ {sipName_QMotifPlusStyle, &sipClass_QMotifPlusStyle, -1, 109},
+#else
+ {NULL, NULL, -1, 109},
+#endif
+#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_STYLE_SGI)
+ {sipName_QSGIStyle, &sipClass_QSGIStyle, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+#if defined(PYQT_STYLE_WINDOWSXP)
+ {sipName_QWindowsXPStyle, &sipClass_QWindowsXPStyle, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ };
+
+ int i = 0;
+
+ sipClass = NULL;
+
+ do
+ {
+ struct class_graph *cg = &graph[i];
+
+ if (cg->name != NULL && sipCpp->inherits(cg->name))
+ {
+ sipClass = *cg->type;
+ i = cg->yes;
+ }
+ else
+ i = cg->no;
+ }
+ while (i >= 0);
+%End
+
+ // This is really virtual. With the way we are implementing it doesn't
+ // need to be and has the advantage that the C++ implementation can be
+ // used in %ConvertToSubClassCode to get the C++ name for Python
+ // sub-classes. However, it is also means that C++ plugins can't get
+ // the true (Python) class name.
+ SIP_PYOBJECT className() const;
+%MethodCode
+ sipRes = sipClassName(sipSelf);
+%End
+
+%If (- Qt_3_0_0)
+ static QString tr(const char *) /AutoGen=Qt_TRANSLATION/;
+%End
+%If (Qt_2_2_0 - Qt_2_3_1)
+ // There was an apparent bug in moc prior to Qt v2.3.1 where this
+ // method wasn't automatically generated.
+
+ static QString tr(const char *,const char *);
+%End
+%If (Qt_2_3_1 - Qt_3_0_0)
+ static QString tr(const char *,const char *) /AutoGen=Qt_TRANSLATION/;
+%End
+%If (Qt_3_0_0 -)
+ // Note that tr() and trUtf8() are really static methods. We pretend
+ // they aren't so that we can use self to get hold of the class name.
+ // We could mimic moc's behaviour more accurately by creating tr() and
+ // trUtf8() methods for a Python sub-class instance in the sub-class's
+ // ctor.
+
+ QString tr(const char *,const char * = 0);
+%MethodCode
+ PyObject *nmobj;
+
+ if ((nmobj = sipClassName(sipSelf)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ char *cname = PyString_AsString(nmobj);
+
+ Py_BEGIN_ALLOW_THREADS
+
+ if (cname && qApp)
+ sipRes = new QString(qApp -> translate(cname,a0,a1,QApplication::DefaultCodec));
+ else
+ sipRes = new QString(QString::fromLatin1(a0));
+
+ Py_END_ALLOW_THREADS
+
+ Py_DECREF(nmobj);
+ }
+%End
+
+ QString trUtf8(const char *,const char * = 0);
+%MethodCode
+ PyObject *nmobj;
+
+ if ((nmobj = sipClassName(sipSelf)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ char *cname = PyString_AsString(nmobj);
+
+ Py_BEGIN_ALLOW_THREADS
+
+ if (cname && qApp)
+ sipRes = new QString(qApp -> translate(cname,a0,a1,QApplication::UnicodeUTF8));
+ else
+ sipRes = new QString(QString::fromUtf8(a0));
+
+ Py_END_ALLOW_THREADS
+
+ Py_DECREF(nmobj);
+ }
+%End
+%End
+ virtual QMetaObject *metaObject() const /AutoGen/;
+ virtual bool event(QEvent *);
+ virtual bool eventFilter(QObject *,QEvent *);
+
+ bool isA(const char *) const;
+%MethodCode
+ // The Qt implementation doesn't know anything about Python
+ // sub-classes. For SIP v4 we use the Python type's name. For
+ // SIP v3 we use the broken Qt behaviour as it's deprecated and
+ // we want to keep things simple.
+
+#if SIP_VERSION >= 0x040000
+ sipRes = (strcmp(sipSelf -> ob_type -> tp_name,a0) == 0);
+#else
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> QObject::isA(a0);
+ Py_END_ALLOW_THREADS
+#endif
+%End
+
+ bool inherits(const char *) const;
+%MethodCode
+ // The Qt implementation doesn't know anything about Python
+ // sub-classes. For SIP v4 we use the Python type's MRO. For
+ // SIP v3 we use the broken Qt behaviour as it's deprecated and
+ // we want to keep things simple.
+
+#if SIP_VERSION >= 0x040000
+ PyObject *mro = sipSelf -> ob_type -> tp_mro;
+
+ sipRes = 0;
+
+ for (int i = 0; i < PyTuple_GET_SIZE(mro); ++i)
+ if (strcmp(((PyTypeObject *)PyTuple_GET_ITEM(mro,i)) -> tp_name,a0) == 0)
+ {
+ sipRes = 1;
+ break;
+ }
+#else
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> QObject::inherits(a0);
+ Py_END_ALLOW_THREADS
+#endif
+%End
+
+%If (- Qt_3_0_0)
+ QStringList superClasses(bool = 0) const;
+%End
+ const char *name() const;
+ const char *name(const char *) const;
+ virtual void setName(const char *);
+ bool isWidgetType() const;
+ bool highPriority() const;
+ bool signalsBlocked() const;
+ void blockSignals(bool);
+ int startTimer(int);
+ void killTimer(int);
+ void killTimers();
+%If (- Qt_3_0_0)
+ QObject *child(const char *,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ QObject *child(const char *,const char * = 0,bool = 1);
+%End
+ const QObjectList *children() const;
+%If (Qt_2_1_0 -)
+ static const QObjectList *objectTrees();
+%End
+%If (- Qt_3_0_0)
+ QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1);
+%End
+
+%If (Qt_3_0_0 -)
+ QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1) const;
+%MethodCode
+ // The Qt implementation doesn't know anything about Python
+ // sub-classes. For SIP v4 we get all classes and then use the
+ // Python type's MRO to weed out those we don't want. For SIP
+ // v3 we use the broken Qt behaviour as it's deprecated and we
+ // want to keep things simple.
+
+#if SIP_VERSION >= 0x040000
+ sipRes = sipCpp -> QObject::queryList(0, a1, a2, a3);
+
+ if (a0 && sipRes)
+ {
+ QObject *o = sipRes -> first();
+
+ while (o)
+ {
+ bool remove = TRUE;
+ PyObject *pyo = sipConvertFromInstance(o, sipClass_QObject, 0);
+
+ if (pyo)
+ {
+ PyObject *mro = pyo -> ob_type -> tp_mro;
+
+ for (int i = 0; i < PyTuple_GET_SIZE(mro); ++i)
+ if (strcmp(((PyTypeObject *)PyTuple_GET_ITEM(mro,i)) -> tp_name,a0) == 0)
+ {
+ remove = FALSE;
+ break;
+ }
+
+ Py_DECREF(pyo);
+ }
+
+ if (remove)
+ {
+ sipRes -> remove();
+ o = sipRes -> current();
+ }
+ else
+ o = sipRes -> next();
+ }
+ }
+#else
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> QObject::queryList(a0, a1, a2, a3);
+ Py_END_ALLOW_THREADS
+#endif
+%End
+%End
+
+ virtual void insertChild(QObject * /Transfer/);
+ virtual void removeChild(QObject * /TransferBack/);
+ void installEventFilter(const QObject *);
+ void removeEventFilter(const QObject *);
+
+ static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT);
+%MethodCode
+ sipRes = sipConnectRx(a0,a1,a2,a3,0);
+%End
+
+ static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE);
+%MethodCode
+ sipRes = sipConnectRx(a0,a1,a2,0,0);
+%End
+
+ SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_SLOT) const;
+%MethodCode
+ sipRes = sipConnectRx(a0,a1,sipSelf,a2,0);
+%End
+
+ static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT);
+%MethodCode
+ sipRes = sipDisconnectRx(a0,a1,a2,a3);
+%End
+
+ static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE);
+%MethodCode
+ sipRes = sipDisconnectRx(a0,a1,a2,0);
+%End
+
+// bool disconnect(const char * = 0,const QObject * = 0,const char * = 0);
+// bool disconnect(const QObject *,const char * = 0);
+ void dumpObjectTree();
+ void dumpObjectInfo();
+ QObject *parent() const;
+
+ void emit(SIP_SIGNAL,SIP_PYTUPLE);
+%MethodCode
+ if (sipEmitSignal(sipSelf,a0,a1) < 0)
+ sipIsErr = 1;
+%End
+
+%If (Qt_PROPERTIES)
+%If (Qt_2_1_0 - Qt_3_0_0)
+ bool setProperty(const char *,const QVariant &);
+ QVariant property(const char *) const;
+%End
+%If (Qt_3_0_0 -)
+ virtual bool setProperty(const char *,const QVariant &);
+ virtual QVariant property(const char *) const;
+%End
+%End
+
+signals:
+ void destroyed();
+%If (Qt_3_0_0 -)
+ void destroyed(QObject *);
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void deleteLater();
+%End
+
+public:
+ // This is actually protected, but we never need to call the real
+ // method.
+ SIP_PYOBJECT sender();
+%MethodCode
+ sipRes = sipGetSender();
+%End
+
+protected:
+ virtual void timerEvent(QTimerEvent *);
+ virtual void childEvent(QChildEvent *);
+%If (Qt_3_0_0 -)
+ virtual void customEvent(QCustomEvent *);
+%End
+
+private:
+ QObject(const QObject &);
+};
+
+
+SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT);
+%MethodCode
+ Py_INCREF(a0);
+ sipRes = a0;
+%End
+
+
+SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT,SIP_PYOBJECT);
+%MethodCode
+ Py_INCREF(a1);
+ sipRes = a1;
+%End
+
+%End
+
+
+%If (- Qt_2_00)
+
+class QObject
+{
+%TypeHeaderCode
+#include <qobject.h>
+%End
+
+public:
+ QObject(QObject * /TransferThis/ = 0,const char * = 0);
+
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_QAccel, &sipClass_QAccel},
+ {sipName_QApplication, &sipClass_QApplication},
+ {sipName_QBoxLayout, &sipClass_QBoxLayout},
+ {sipName_QButton, &sipClass_QButton},
+ {sipName_QButtonGroup, &sipClass_QButtonGroup},
+ {sipName_QCheckBox, &sipClass_QCheckBox},
+#if defined(SIP_FEATURE_Qt_CLIPBOARD)
+ {sipName_QClipboard, &sipClass_QClipboard},
+#endif
+ {sipName_QComboBox, &sipClass_QComboBox},
+ {sipName_QDialog, &sipClass_QDialog},
+ {sipName_QDoubleValidator, &sipClass_QDoubleValidator},
+ {sipName_QDragObject, &sipClass_QDragObject},
+#if defined(SIP_FEATURE_Qt_FILEDIALOG)
+ {sipName_QFileDialog, &sipClass_QFileDialog},
+ {sipName_QFileIconProvider, &sipClass_QFileIconProvider},
+#endif
+ {sipName_QFrame, &sipClass_QFrame},
+ {sipName_QGridLayout, &sipClass_QGridLayout},
+ {sipName_QGroupBox, &sipClass_QGroupBox},
+ {sipName_QHBoxLayout, &sipClass_QHBoxLayout},
+ {sipName_QHeader, &sipClass_QHeader},
+ {sipName_QImageDrag, &sipClass_QImageDrag},
+ {sipName_QIntValidator, &sipClass_QIntValidator},
+ {sipName_QLCDNumber, &sipClass_QLCDNumber},
+ {sipName_QLabel, &sipClass_QLabel},
+ {sipName_QLayout, &sipClass_QLayout},
+ {sipName_QLineEdit, &sipClass_QLineEdit},
+ {sipName_QListBox, &sipClass_QListBox},
+ {sipName_QListView, &sipClass_QListView},
+ {sipName_QMainWindow, &sipClass_QMainWindow},
+ {sipName_QMenuBar, &sipClass_QMenuBar},
+#if defined(SIP_FEATURE_Qt_MESSAGEBOX)
+ {sipName_QMessageBox, &sipClass_QMessageBox},
+#endif
+ {sipName_QMultiLineEdit, &sipClass_QMultiLineEdit},
+ {sipName_QPopupMenu, &sipClass_QPopupMenu},
+#if defined(WS_X11) && defined(SIP_FEATURE_Qt_PRINTDIALOG)
+ {sipName_QPrintDialog, &sipClass_QPrintDialog},
+#endif
+ {sipName_QProgressBar, &sipClass_QProgressBar},
+#if defined(SIP_FEATURE_Qt_PROGRESSDIALOG)
+ {sipName_QProgressDialog, &sipClass_QProgressDialog},
+#endif
+ {sipName_QPushButton, &sipClass_QPushButton},
+ {sipName_QRadioButton, &sipClass_QRadioButton},
+ {sipName_QScrollBar, &sipClass_QScrollBar},
+ {sipName_QScrollView, &sipClass_QScrollView},
+ {sipName_QSlider, &sipClass_QSlider},
+ {sipName_QSocketNotifier, &sipClass_QSocketNotifier},
+ {sipName_QSpinBox, &sipClass_QSpinBox},
+#if defined(SIP_FEATURE_Qt_SPLITTER)
+ {sipName_QSplitter, &sipClass_QSplitter},
+#endif
+ {sipName_QStatusBar, &sipClass_QStatusBar},
+ {sipName_QStoredDrag, &sipClass_QStoredDrag},
+ {sipName_QTabBar, &sipClass_QTabBar},
+ {sipName_QTextDrag, &sipClass_QTextDrag},
+ {sipName_QTimer, &sipClass_QTimer},
+ {sipName_QToolBar, &sipClass_QToolBar},
+ {sipName_QToolButton, &sipClass_QToolButton},
+ {sipName_QToolTipGroup, &sipClass_QToolTipGroup},
+ {sipName_QVBoxLayout, &sipClass_QVBoxLayout},
+ {sipName_QValidator, &sipClass_QValidator},
+ {sipName_QWidget, &sipClass_QWidget},
+ {sipName_QWidgetStack, &sipClass_QWidgetStack}
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
+%End
+
+ static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT);
+%MethodCode
+ sipRes = sipConnectRx(a0,a1,a2,a3,0);
+%End
+
+ static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE);
+%MethodCode
+ sipRes = sipConnectRx(a0,a1,a2,0,0);
+%End
+
+ static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT);
+%MethodCode
+ sipRes = sipDisconnectRx(a0,a1,a2,a3);
+%End
+
+ static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE);
+%MethodCode
+ sipRes = sipDisconnectRx(a0,a1,a2,0);
+%End
+
+ virtual bool event(QEvent *);
+ virtual bool eventFilter(QObject *,QEvent *);
+ const char *tr(const char *) const;
+ virtual QMetaObject *metaObject() const /AutoGen/;
+
+ // This is actually virtual. However, with the way we are implementing
+ // it we can ignore it.
+ SIP_PYOBJECT className() const;
+%MethodCode
+ sipRes = sipClassName(sipSelf);
+%End
+
+ bool isA(const char *) const;
+ bool inherits(const char *) const;
+ const char *name() const;
+ const char *name(const char *) const;
+ void setName(const char *);
+ bool isWidgetType() const;
+ bool highPriority() const;
+ bool signalsBlocked() const;
+ void blockSignals(bool);
+ int startTimer(int);
+ void killTimer(int);
+ void killTimers();
+ const QObjectList *children() const;
+ QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1);
+ void insertChild(QObject * /Transfer/);
+ void removeChild(QObject * /TransferBack/);
+ void installEventFilter(const QObject *);
+ void removeEventFilter(const QObject *);
+// bool connect(QObject *,const char *,const char *);
+// bool disconnect(const char * = 0,const QObject * = 0,const char * = 0);
+// bool disconnect(const QObject *,const char * = 0);
+ void dumpObjectTree();
+ void dumpObjectInfo();
+ QObject *parent() const;
+
+ void emit(SIP_SIGNAL,SIP_PYTUPLE);
+%MethodCode
+ if (sipEmitSignal(sipSelf,a0,a1) < 0)
+ sipIsErr = 1;
+%End
+
+signals:
+ void destroyed();
+
+public:
+ // This is actually protected, but we never need to call the real
+ // method.
+ SIP_PYOBJECT sender();
+%MethodCode
+ sipRes = sipGetSender();
+%End
+
+protected:
+ virtual void timerEvent(QTimerEvent *);
+
+private:
+ QObject(const QObject &);
+};
+
+%End
+
+
+SIP_PYOBJECT SLOT(const char *);
+%MethodCode
+ if (!a0)
+ {
+ PyErr_Format(PyExc_TypeError,"qt.SLOT() slot name cannot be None");
+ sipIsErr = 1;
+ }
+ else
+ {
+ int len = strlen(a0);
+
+ if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ char *dp = PyString_AS_STRING(sipRes);
+
+ *dp++ = '1';
+
+ memcpy(dp,a0,len + 1);
+ }
+ }
+%End
+
+
+SIP_PYOBJECT SIGNAL(const char *);
+%MethodCode
+ if (!a0)
+ {
+ PyErr_Format(PyExc_TypeError,"qt.SIGNAL() signal cannot be None");
+ sipIsErr = 1;
+ }
+ else
+ {
+ int len = strlen(a0);
+
+ if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ char *dp = PyString_AS_STRING(sipRes);
+
+ *dp++ = '2';
+
+ memcpy(dp,a0,len + 1);
+ }
+ }
+%End
+
+
+SIP_PYOBJECT PYSIGNAL(const char *);
+%MethodCode
+ if (!a0)
+ {
+ PyErr_Format(PyExc_TypeError,"qt.PYSIGNAL() signal cannot be None");
+ sipIsErr = 1;
+ }
+ else
+ {
+ int len = strlen(a0);
+
+ if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ char *dp = PyString_AS_STRING(sipRes);
+
+ *dp++ = '9';
+
+ memcpy(dp,a0,len + 1);
+ }
+ }
+%End
+
+
+// This is Qt support code for SIP v4.4 and later.
+%ModuleCode
+
+#include <qobject.h>
+#include <qvariant.h>
+#include <qmetaobject.h>
+#include <private/qucom_p.h>
+#include <private/qucomextra_p.h>
+
+
+// This class is used as a slot on behalf of connections to a Python callable.
+// It is derived from QObject but is not run through moc. Instead the normal
+// moc-generated methods are handwritten in order to implement a universal
+// slot. This requires some knowledge of the internal implementation of
+// signals and slots but it is likely that they will only change between major
+// Qt versions.
+class UniversalSlot : public QObject
+{
+public:
+ UniversalSlot(QObject *qtx, sipSlotConnection *conn, const char **member);
+ ~UniversalSlot();
+
+ virtual QMetaObject *metaObject() const
+ {
+ return staticMetaObject();
+ }
+
+ virtual bool qt_invoke(int, QUObject *args);
+ static QMetaObject *staticMetaObject();
+
+ static const QObject *lastSender;
+
+ static UniversalSlot *unislots;
+ UniversalSlot *nextus, *prevus;
+ sipSlotConnection conn;
+
+private:
+ static QMetaObject *metaObj;
+};
+
+
+// Create a universal slot. Note that this will leak if there is no signal
+// transmitter (ie. no parent) - QTimer.singleShot() for example.
+UniversalSlot::UniversalSlot(QObject *qtx, sipSlotConnection *connection, const char **member) : QObject()
+{
+ // Save the connection.
+ conn = *connection;
+
+ // Detect when the transmitter is destroyed.
+ if (qtx)
+ connect(qtx, SIGNAL(destroyed(QObject *)), SLOT(deleteLater()));
+
+ // Return the slot to connect to.
+ *member = SLOT(unislot());
+
+ // Add this one to the global list.
+ nextus = unislots;
+
+ if (nextus)
+ nextus -> prevus = this;
+
+ prevus = 0;
+ unislots = this;
+}
+
+
+// Destroy a universal slot.
+UniversalSlot::~UniversalSlot()
+{
+ sipFreeConnection(&conn);
+
+ // Remove this one from the global list.
+ if (nextus)
+ nextus -> prevus = prevus;
+
+ if (prevus)
+ prevus -> nextus = nextus;
+ else
+ unislots = nextus;
+}
+
+
+QMetaObject *UniversalSlot::metaObj = 0;
+
+#if QT_VERSION >= 0x030100
+static QMetaObjectCleanUp cleanUp_UniversalSlot("UniversalSlot", &UniversalSlot::staticMetaObject);
+#else
+static QMetaObjectCleanUp cleanUp_UniversalSlot;
+#endif
+
+const QObject *UniversalSlot::lastSender = 0;
+UniversalSlot *UniversalSlot::unislots = 0;
+
+
+QMetaObject *UniversalSlot::staticMetaObject()
+{
+ if (metaObj)
+ return metaObj;
+
+ // Define a single slot that takes no arguments and so will accept any
+ // connection.
+ static const QUMethod slot = {"unislot", 0, 0};
+ static const QMetaData slot_tbl[] = {
+ {"unislot()", &slot, QMetaData::Public}
+ };
+
+ metaObj = QMetaObject::new_metaobject(
+ "UniversalSlot", QObject::staticMetaObject(),
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif
+ 0, 0);
+
+ cleanUp_UniversalSlot.setMetaObject(metaObj);
+
+ return metaObj;
+}
+
+
+bool UniversalSlot::qt_invoke(int id, QUObject *qargs)
+{
+ if (id - staticMetaObject()->slotOffset() != 0)
+ return QObject::qt_invoke(id, qargs);
+
+ bool ok = TRUE;
+ const sipSignature *psig = conn.sc_signature;
+ QVariant *qv;
+
+ // Save in case it is asked for later.
+ lastSender = sender();
+
+ // If the sender was a QSignal then the single argument will be wrapped
+ // in a QVariant instance. At the moment we handle int argument as
+ // that is all that is needed by PyQt (and PyKDE).
+ if (lastSender -> inherits("QSignal"))
+ qv = &static_QUType_QVariant.get(qargs + 1);
+ else
+ qv = 0;
+
+#ifdef WITH_THREAD
+ PyGILState_STATE state = PyGILState_Ensure();
+#endif
+
+ PyObject *argtup = PyTuple_New(psig->sg_nrargs);
+
+ if (!argtup)
+ ok = FALSE;
+ else
+ {
+ for (int a = 0; a < psig->sg_nrargs; ++a)
+ {
+ PyObject *arg;
+
+ ++qargs;
+
+ switch (psig->sg_args[a].atype)
+ {
+ case char_sat:
+ case schar_sat:
+ case uchar_sat:
+ arg = PyString_FromStringAndSize((char *)static_QUType_ptr.get(qargs), 1);
+ break;
+
+ case string_sat:
+ case sstring_sat:
+ case ustring_sat:
+ arg = PyString_FromString((char *)static_QUType_ptr.get(qargs));
+ break;
+
+ case short_sat:
+ arg = PyInt_FromLong(*(short *)static_QUType_ptr.get(qargs));
+ break;
+
+ case ushort_sat:
+ arg = PyLong_FromUnsignedLong(*(unsigned short *)static_QUType_ptr.get(qargs));
+ break;
+
+ case int_sat:
+ if (qv)
+ arg = PyInt_FromLong(qv -> asInt());
+ else
+ arg = PyInt_FromLong(static_QUType_int.get(qargs));
+ break;
+
+ case uint_sat:
+ arg = PyLong_FromUnsignedLong(*(unsigned *)static_QUType_ptr.get(qargs));
+ break;
+
+ case long_sat:
+ arg = PyLong_FromLong(*(long *)static_QUType_ptr.get(qargs));
+ break;
+
+ case ulong_sat:
+ arg = PyLong_FromUnsignedLong(*(unsigned long *)static_QUType_ptr.get(qargs));
+ break;
+
+ case longlong_sat:
+ arg = PyLong_FromLongLong(*(PY_LONG_LONG *)static_QUType_ptr.get(qargs));
+ break;
+
+ case ulonglong_sat:
+ arg = PyLong_FromUnsignedLongLong(*(unsigned PY_LONG_LONG *)static_QUType_ptr.get(qargs));
+ break;
+
+ case float_sat:
+ arg = PyFloat_FromDouble(*(float *)static_QUType_ptr.get(qargs));
+ break;
+
+ case double_sat:
+ arg = PyFloat_FromDouble(static_QUType_double.get(qargs));
+ break;
+
+ case enum_sat:
+ arg = sipConvertFromNamedEnum(*(int *)static_QUType_ptr.get(qargs), psig->sg_args[a].u.et);
+ break;
+
+ case bool_sat:
+ arg = PyInt_FromLong(static_QUType_bool.get(qargs));
+ break;
+
+ case void_sat:
+ arg = sipConvertFromVoidPtr((void *)static_QUType_ptr.get(qargs));
+ break;
+
+ case class_sat:
+ case classp_sat:
+ arg = sipConvertFromInstance((void *)static_QUType_ptr.get(qargs),psig->sg_args[a].u.wt,0);
+ break;
+
+ case mtype_sat:
+ case mtypep_sat:
+ arg = sipConvertFromMappedType((void *)static_QUType_ptr.get(qargs),psig->sg_args[a].u.mt,0);
+ break;
+
+ case qvariant_sat:
+ case qvariantp_sat:
+ arg = sipConvertFromInstance((void *)&static_QUType_QVariant.get(qargs),sipClass_QVariant,0);
+ break;
+
+ case pyobject_sat:
+ arg = (PyObject *)static_QUType_ptr.get(qargs);
+ break;
+
+ default:
+ arg = Py_NotImplemented;
+ Py_INCREF(Py_NotImplemented);
+ }
+
+ PyTuple_SET_ITEM(argtup, a, arg);
+ }
+
+ // Dispatch to the real slot.
+ if (ok && sipEmitToSlot(&conn.sc_slot, argtup) < 0)
+ ok = FALSE;
+
+ Py_DECREF(argtup);
+ }
+
+ if (!ok)
+ PyErr_Print();
+
+#ifdef WITH_THREAD
+ PyGILState_Release(state);
+#endif
+
+ return ok;
+}
+
+
+// Declare explicit C linkage.
+extern "C"
+{
+ static void *sipQtCreateUniversalSlot(sipWrapper *, sipSlotConnection *, const char **);
+ static void sipQtDestroyUniversalSlot(void *);
+ static void *sipQtFindSlot(void *, const char *, PyObject *, const char *, const char **);
+ static int sipQtConnect(void *, const char *, void *, const char *, int);
+ static int sipQtDisconnect(void *, const char *, void *, const char *);
+ static int sipQtSignalsBlocked(void *);
+ static const void *sipQtGetSender();
+ static void sipQtForgetSender();
+ static int sipQtSameSignalSlotName(const char *, const char *);
+ static sipSlotConnection *sipQtFindConnection(void *, void **);
+}
+
+
+// Factory function to create a universal slot instance. Returns a pointer to
+// the instance or 0 if there was an error.
+static void *sipQtCreateUniversalSlot(sipWrapper *tx, sipSlotConnection *conn, const char **member)
+{
+ QObject *qtx = 0;
+
+ // See if the transmitter is a QObject in which case we will connect
+ // to it's destroyed signal so that the universal slot can be destroyed
+ // at the same time. (Note that we used to do this by making the
+ // universal slot a child of the transmitter. This doesn't work as
+ // expected because QWidget destroys its children before emitting the
+ // destroyed signal.)
+ if (tx && PyObject_TypeCheck(tx, (PyTypeObject *)sipClass_QObject))
+ qtx = reinterpret_cast<QObject *>(conn->sc_transmitter);
+
+ return new UniversalSlot(qtx, conn, member);
+}
+
+
+// Dispose of a receiver that might be a universal slot.
+static void sipQtDestroyUniversalSlot(void *rx)
+{
+ for (UniversalSlot *us = UniversalSlot::unislots; us; us = us->nextus)
+ if (us == reinterpret_cast<QObject *>(rx))
+ {
+ delete us;
+ break;
+ }
+}
+
+
+// Search for the universal slot connected to a particular Qt signal.
+static void *sipQtFindSlot(void *tx, const char *sig, PyObject *rxObj, const char *slot, const char **member)
+{
+ for (UniversalSlot *us = UniversalSlot::unislots; us; us = us->nextus)
+ if (sipSameConnection(&us->conn, tx, sig, rxObj, slot))
+ {
+ *member = SLOT(unislot());
+ return us;
+ }
+
+ return 0;
+}
+
+
+// Connect a Qt signal to a Qt slot.
+static int sipQtConnect(void *tx, const char *sig, void *rx, const char *slot, int)
+{
+ return QObject::connect(reinterpret_cast<QObject *>(tx), sig,
+ reinterpret_cast<QObject *>(rx), slot);
+}
+
+
+// Disconnect a Qt signal from a Qt slot.
+static int sipQtDisconnect(void *tx, const char *sig, void *rx, const char *slot)
+{
+ return QObject::disconnect(reinterpret_cast<QObject *>(tx), sig,
+ reinterpret_cast<QObject *>(rx), slot);
+}
+
+
+// See if signals are currently blocked for a QObject.
+static int sipQtSignalsBlocked(void *qobj)
+{
+ return reinterpret_cast<QObject *>(qobj)->signalsBlocked();
+}
+
+
+// Get the last sender for QObject::sender().
+static const void *sipQtGetSender()
+{
+ return UniversalSlot::lastSender;
+}
+
+
+// Forget the last sender.
+static void sipQtForgetSender()
+{
+ UniversalSlot::lastSender = 0;
+}
+
+
+// See if two signal or slot names are the same.
+static int sipQtSameSignalSlotName(const char *s1, const char *s2)
+{
+ // moc formats signal names, so we should first convert the supplied
+ // string to the same format before comparing them. Instead we just
+ // compare them as they are, but ignoring all spaces - this will have
+ // the same result.
+ do
+ {
+ // Skip any spaces.
+
+ while (*s1 == ' ')
+ ++s1;
+
+ while (*s2 == ' ')
+ ++s2;
+
+ if (*s1++ != *s2)
+ return 0;
+ }
+ while (*s2++ != '\0');
+
+ return 1;
+}
+
+
+// Return the next connection for a particular transmitter. This will be
+// called with the GIL locked.
+static sipSlotConnection *sipQtFindConnection(void *tx, void **context)
+{
+ UniversalSlot *us = *reinterpret_cast<UniversalSlot **>(context);
+
+ if (!us)
+ us = UniversalSlot::unislots;
+
+ sipSlotConnection *conn = 0;
+
+ while (us)
+ {
+ sipSlotConnection *this_conn = &us->conn;
+
+ us = us->nextus;
+
+ if (this_conn->sc_transmitter == tx)
+ {
+ conn = this_conn;
+ break;
+ }
+ }
+
+ *context = us;
+
+ return conn;
+}
+
+%End
diff --git a/python/pyqt/sip/qt/qobjectcleanuphandler.sip b/python/pyqt/sip/qt/qobjectcleanuphandler.sip
new file mode 100644
index 00000000..0828fc7f
--- /dev/null
+++ b/python/pyqt/sip/qt/qobjectcleanuphandler.sip
@@ -0,0 +1,49 @@
+// This is the SIP interface definition for QObjectCleanupHandler.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QObjectCleanupHandler (Qt v3+)</Title>
+<Para>
+<Literal>QObjectCleanupHandler</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QObjectCleanupHandler : QObject
+{
+%TypeHeaderCode
+#include <qobjectcleanuphandler.h>
+%End
+
+public:
+ QObjectCleanupHandler();
+
+ QObject *add(QObject *);
+ void remove(QObject *);
+ bool isEmpty() const;
+ void clear();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qobjectlist.sip b/python/pyqt/sip/qt/qobjectlist.sip
new file mode 100644
index 00000000..d9adc9e0
--- /dev/null
+++ b/python/pyqt/sip/qt/qobjectlist.sip
@@ -0,0 +1,108 @@
+// This is the SIP interface definition for QObjectList.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QObjectList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QObjectList</Literal> is the
+return type of a function or the type of an argument, a Python list of
+<Literal>QObject</Literal> instances is used instead.
+</Para>
+</Sect2>
+%End
+
+
+%MappedType QObjectList
+{
+%TypeHeaderCode
+#include <qobjectlist.h>
+#include "sipqtQObject.h"
+%End
+
+%ConvertFromTypeCode
+ // Convert the list.
+
+ PyObject *pl;
+ QObject *obj;
+
+ if ((pl = PyList_New(0)) == NULL)
+ return NULL;
+
+ for (QObjectListIt it(*sipCpp); (obj = it.current()) != NULL; ++it)
+ {
+ PyObject *inst;
+
+ if ((inst = sipConvertFromInstance(obj,sipClass_QObject,sipTransferObj)) == NULL || PyList_Append(pl,inst) < 0)
+ {
+ Py_XDECREF(inst);
+ Py_DECREF(pl);
+
+ return NULL;
+ }
+
+ Py_DECREF(inst);
+ }
+
+ return pl;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of QObject instances to a QObjectList on the
+ // heap.
+
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QObject,0))
+ return 0;
+
+ return 1;
+ }
+
+ QObjectList *qol = new QObjectList;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ QObject *qobj;
+
+ // We apply the transfer to the list itself, not the elements.
+ // Note that any temporary element will never be destroyed.
+ // There is nothing that can be done about this.
+ qobj = reinterpret_cast<QObject *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QObject,0,0,0,sipIsErr));
+
+ if (*sipIsErr)
+ {
+ delete qol;
+ return 0;
+ }
+
+ qol -> append(qobj);
+ }
+
+ *sipCppPtr = qol;
+
+ return sipGetState(sipTransferObj);
+%End
+};
diff --git a/python/pyqt/sip/qt/qpaintdevice.sip b/python/pyqt/sip/qt/qpaintdevice.sip
new file mode 100644
index 00000000..52b78f28
--- /dev/null
+++ b/python/pyqt/sip/qt/qpaintdevice.sip
@@ -0,0 +1,247 @@
+// This is the SIP interface definition for QPaintDevice.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPaintDevice</Title>
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>cmd</Function></FuncDef>
+ <ParamDef>int</ParamDef>
+ <ParamDef>QPainter *</ParamDef>
+ <ParamDef>QPDevCmdParam *</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qpaintdevice.h>
+%End
+
+
+%If (- Qt_2_00)
+
+// Painter device types.
+
+const int PDT_UNDEF;
+const int PDT_WIDGET;
+const int PDT_PIXMAP;
+const int PDT_PRINTER;
+const int PDT_PICTURE;
+const int PDT_MASK;
+
+// Painter device flags.
+
+const int PDF_EXTDEV;
+const int PDF_PAINTACTIVE;
+
+
+void bitBlt(QPaintDevice *,int,int,const QPaintDevice *,int = 0,int = 0,
+ int = -1,int = -1,RasterOp = CopyROP,bool = 0);
+void bitBlt(QPaintDevice *,int,int,const QImage *,int = 0,int = 0,int = -1,
+ int = -1,int = 0);
+void bitBlt(QPaintDevice *,const QPoint &,const QPaintDevice *,
+ const QRect & = QRect(0,0,-1,-1),RasterOp = CopyROP,bool = 0);
+
+%End
+
+%If (Qt_2_00 -)
+
+void bitBlt(QPaintDevice *,int,int,const QPaintDevice *,int = 0,int = 0,
+ int = -1,int = -1,Qt::RasterOp = Qt::CopyROP,bool = 0);
+void bitBlt(QPaintDevice *,int,int,const QImage *,int = 0,int = 0,int = -1,
+ int = -1,int = 0);
+void bitBlt(QPaintDevice *,const QPoint &,const QPaintDevice *,
+ const QRect & = QRect(0,0,-1,-1),Qt::RasterOp = Qt::CopyROP,
+ bool = 0);
+
+%End
+
+
+class QPaintDevice
+{
+%TypeHeaderCode
+#include <qpaintdevice.h>
+%End
+
+public:
+ int devType() const;
+ bool isExtDev() const;
+ bool paintingActive() const;
+
+%If (Qt_3_0_0 -)
+ virtual void setResolution(int);
+ virtual int resolution() const;
+%End
+
+%If (- Qt_2_00)
+ HANDLE handle() const;
+%If (WS_X11)
+ Display *x11Display() const;
+ static int x11Screen();
+ static int x11Depth();
+ static int x11Cells();
+ static HANDLE x11Colormap();
+ static bool x11DefaultColormap();
+ static void *x11Visual();
+ static bool x11DefaultVisual();
+%End
+%End
+
+%If (Qt_2_00 -)
+%If (WS_X11)
+%If (- Qt_3_0_0)
+ HANDLE handle() const;
+%End
+%If (Qt_3_0_0 -)
+ Qt::HANDLE handle() const;
+ Qt::HANDLE x11RenderHandle() const;
+%End
+ Display *x11Display() const;
+ int x11Screen() const;
+ int x11Depth() const;
+ int x11Cells() const;
+%If (- Qt_3_0_0)
+ HANDLE x11Colormap() const;
+%End
+%If (Qt_3_0_0 -)
+ Qt::HANDLE x11Colormap() const;
+%End
+ bool x11DefaultColormap() const;
+ void *x11Visual() const;
+ bool x11DefaultVisual() const;
+
+ static Display *x11AppDisplay();
+ static int x11AppScreen();
+
+ static int x11AppDpiX();
+ static int x11AppDpiY();
+%If (Qt_2_1_0 -)
+ static void x11SetAppDpiX(int);
+ static void x11SetAppDpiY(int);
+%End
+ static int x11AppDepth();
+ static int x11AppCells();
+%If (Qt_3_1_0 -)
+ static Qt::HANDLE x11AppRootWindow();
+%End
+%If (Qt_3_0_0 -)
+ static Qt::HANDLE x11AppColormap();
+%End
+%If (- Qt_3_0_0)
+ static HANDLE x11AppColormap();
+%End
+ static bool x11AppDefaultColormap();
+ static void *x11AppVisual();
+ static bool x11AppDefaultVisual();
+
+%If (Qt_3_1_0 -)
+ static int x11AppDepth(int);
+ static int x11AppCells(int);
+ static Qt::HANDLE x11AppRootWindow(int);
+ static Qt::HANDLE x11AppColormap(int);
+ static void *x11AppVisual(int);
+ static bool x11AppDefaultColormap(int);
+ static bool x11AppDefaultVisual(int);
+ static int x11AppDpiX(int);
+ static int x11AppDpiY(int);
+ static void x11SetAppDpiX(int,int);
+ static void x11SetAppDpiY(int,int);
+%End
+%End
+
+ enum PDevCmd
+ {
+ PdcNOP,
+ PdcDrawPoint,
+ PdcDrawFirst,
+ PdcMoveTo,
+ PdcLineTo,
+ PdcDrawLine,
+ PdcDrawRect,
+ PdcDrawRoundRect,
+ PdcDrawEllipse,
+ PdcDrawArc,
+ PdcDrawPie,
+ PdcDrawChord,
+ PdcDrawLineSegments,
+ PdcDrawPolyline,
+ PdcDrawPolygon,
+%If (Qt_3_0_0 -)
+ PdcDrawCubicBezier,
+%End
+%If (- Qt_3_0_0)
+ PdcDrawQuadBezier,
+%End
+ PdcDrawText,
+ PdcDrawTextFormatted,
+ PdcDrawPixmap,
+ PdcDrawImage,
+ PdcDrawText2,
+ PdcDrawText2Formatted,
+%If (Qt_3_2_0 -)
+ PdcDrawTextItem,
+%End
+ PdcDrawLast,
+
+ PdcBegin,
+ PdcEnd,
+ PdcSave,
+ PdcRestore,
+ PdcSetdev,
+ PdcSetBkColor,
+ PdcSetBkMode,
+ PdcSetROP,
+ PdcSetBrushOrigin,
+ PdcSetFont,
+ PdcSetPen,
+ PdcSetBrush,
+ PdcSetTabStops,
+ PdcSetTabArray,
+ PdcSetUnit,
+ PdcSetVXform,
+ PdcSetWindow,
+ PdcSetViewport,
+ PdcSetWXform,
+ PdcSetWMatrix,
+ PdcSaveWMatrix,
+ PdcRestoreWMatrix,
+ PdcSetClip,
+ PdcSetClipRegion,
+ PdcReservedStart,
+ PdcReservedStop
+ };
+
+%End
+
+protected:
+ QPaintDevice(uint);
+// virtual bool cmd(int,QPainter *,QPDevCmdParam *);
+// virtual int metric(int) const;
+// virtual int fontMet(QFont *,int,const char *,int = 0) const;
+// virtual int fontInf(QFont *,int) const;
+
+private:
+ QPaintDevice(const QPaintDevice &);
+};
diff --git a/python/pyqt/sip/qt/qpaintdevicemetrics.sip b/python/pyqt/sip/qt/qpaintdevicemetrics.sip
new file mode 100644
index 00000000..ece93568
--- /dev/null
+++ b/python/pyqt/sip/qt/qpaintdevicemetrics.sip
@@ -0,0 +1,55 @@
+// This is the SIP interface definition for QPaintDeviceMetrics.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPaintDeviceMetrics</Title>
+<Para>
+<Literal>QPaintDeviceMetrics</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QPaintDeviceMetrics
+{
+%TypeHeaderCode
+#include <qpaintdevicemetrics.h>
+%End
+
+public:
+ QPaintDeviceMetrics(const QPaintDevice *);
+
+ int width() const;
+ int height() const;
+ int widthMM() const;
+ int heightMM() const;
+%If (Qt_2_00 -)
+ int logicalDpiX() const;
+ int logicalDpiY() const;
+%End
+%If (Qt_3_0_0 -)
+ int physicalDpiX() const;
+ int physicalDpiY() const;
+%End
+ int numColors() const;
+ int depth() const;
+};
diff --git a/python/pyqt/sip/qt/qpainter.sip b/python/pyqt/sip/qt/qpainter.sip
new file mode 100644
index 00000000..f9b1fca1
--- /dev/null
+++ b/python/pyqt/sip/qt/qpainter.sip
@@ -0,0 +1,676 @@
+// This is the SIP interface definition for QPainter.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPainter</Title>
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QRect <Function>boundingRect</Function></FuncDef>
+ <ParamDef>const QRect&</ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>drawText</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int <Parameter>w</Parameter></ParamDef>
+ <ParamDef>int <Parameter>h</Parameter></ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>QRect *<Parameter>br</Parameter> = 0</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>drawText</Function></FuncDef>
+ <ParamDef>const QRect&</ParamDef>
+ <ParamDef>int <Parameter>flags</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>len</Parameter> = -1</ParamDef>
+ <ParamDef>QRect *<Parameter>br</Parameter> = 0</ParamDef>
+ <ParamDef>char **<Parameter>intern</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>intern</Literal> parameter is not supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setTabArray</Function></FuncDef>
+ <ParamDef>int *<Parameter>ta</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of tab stops.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int *<Function>tabArray</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of tab stops.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+%ModuleHeaderCode
+#include <qpainter.h>
+%End
+
+enum BGMode {
+ TransparentMode,
+ OpaqueMode
+};
+
+enum PaintUnit {
+ PixelUnit,
+ LoMetricUnit,
+ HiMetricUnit,
+ LoEnglishUnit,
+ HiEnglishUnit,
+ TwipsUnit
+};
+
+
+class QPainter
+{
+%TypeHeaderCode
+#include <qpainter.h>
+%End
+
+public:
+ QPainter();
+ QPainter(const QPaintDevice *);
+ QPainter(const QPaintDevice *,const QWidget *);
+
+ bool begin(const QPaintDevice *);
+ bool begin(const QPaintDevice *,const QWidget *);
+ bool end();
+ QPaintDevice *device() const;
+
+ static void redirect(QPaintDevice *,QPaintDevice *);
+%If (Qt_3_2_0 -)
+ static QPaintDevice *redirect(QPaintDevice *);
+%End
+
+ bool isActive() const;
+ void flush();
+ void save();
+ void restore();
+ QFontMetrics fontMetrics() const;
+ QFontInfo fontInfo() const;
+ const QFont &font() const;
+ void setFont(const QFont&);
+ const QPen &pen() const;
+ void setPen(const QPen &);
+ void setPen(PenStyle);
+ void setPen(const QColor &);
+ const QBrush &brush() const;
+ void setBrush(const QBrush &);
+ void setBrush(BrushStyle);
+ void setBrush(const QColor &);
+ const QColor &backgroundColor() const;
+ void setBackgroundColor(const QColor &);
+ BGMode backgroundMode() const;
+ void setBackgroundMode(BGMode);
+ RasterOp rasterOp() const;
+ void setRasterOp(RasterOp);
+ const QPoint &brushOrigin() const;
+ void setBrushOrigin(int,int);
+ void setBrushOrigin(const QPoint &);
+
+ bool hasViewXForm() const;
+ bool hasWorldXForm() const;
+
+ void setViewXForm(bool);
+ QRect window() const;
+ void setWindow(const QRect &);
+ void setWindow(int,int,int,int);
+ QRect viewport() const;
+ void setViewport(const QRect &);
+ void setViewport(int,int,int,int);
+
+ void setWorldXForm(bool);
+ const QWMatrix &worldMatrix() const;
+ void setWorldMatrix(const QWMatrix &,bool = 0);
+
+ void scale(float,float);
+ void shear(float,float);
+ void rotate(float);
+
+ void translate(float,float);
+ void resetXForm();
+
+ QPoint xForm(QPoint &) const;
+ QRect xForm(QRect &) const;
+ QPointArray xForm(QPointArray &) const;
+ QPointArray xForm(QPointArray &,int,int) const;
+ QPoint xFormDev(QPoint &) const;
+ QRect xFormDev(QRect &) const;
+ QPointArray xFormDev(QPointArray &) const;
+ QPointArray xFormDev(QPointArray &,int,int) const;
+ void setClipping(bool);
+ bool hasClipping() const;
+ const QRegion &clipRegion() const;
+ void setClipRect(const QRect &);
+ void setClipRect(int,int,int,int);
+ void setClipRegion(const QRegion &);
+ void drawPoint(int,int);
+ void drawPoint(const QPoint &);
+ void drawPoints(const QPointArray &,int,int = -1);
+ void moveTo(int,int);
+ void moveTo(const QPoint &);
+ void lineTo(int,int);
+ void lineTo(const QPoint &);
+ void drawLine(int,int,int,int);
+ void drawLine(const QPoint &,const QPoint &);
+ void drawRect(int,int,int,int);
+ void drawRect(const QRect &);
+ void drawWinFocusRect(int,int,int,int);
+ void drawWinFocusRect(int,int,int,int,const QColor &);
+ void drawWinFocusRect(const QRect &);
+ void drawWinFocusRect(const QRect &,const QColor &);
+ void drawRoundRect(int,int,int,int,int,int);
+ void drawRoundRect(const QRect &,int,int);
+ void drawEllipse(int,int,int,int);
+ void drawEllipse(const QRect &);
+ void drawArc(int,int,int,int,int,int);
+ void drawArc(const QRect &,int,int);
+ void drawPie(int,int,int,int,int,int);
+ void drawPie(const QRect &,int,int);
+ void drawChord(int,int,int,int,int,int);
+ void drawChord(const QRect &,int,int);
+ void drawLineSegments(const QPointArray &,int = 0,int = -1);
+ void drawPolyline(const QPointArray &,int = 0,int = -1);
+ void drawPolygon(const QPointArray &,bool = 0,int = 0,int = -1);
+ void drawQuadBezier(const QPointArray &,int = 0);
+ void drawPixmap(int,int,const QPixmap &,int = 0,int = 0,int = -1,int = -1);
+ void drawPixmap(const QPoint &,const QPixmap &,const QRect &);
+ void drawPixmap(const QPoint &,const QPixmap &);
+ void drawImage(int,int,const QImage &,int = 0,int = 0,int = -1,int = -1);
+ void drawImage(const QPoint &,const QImage &,const QRect &);
+ void drawImage(const QPoint &,const QImage &);
+ void drawTiledPixmap(int,int,int,int,const QPixmap &,int = 0,int = 0);
+ void drawTiledPixmap(const QRect &,const QPixmap &,const QPoint &);
+ void drawTiledPixmap(const QRect &,const QPixmap &);
+ void drawPicture(const QPicture &);
+ void fillRect(int,int,int,int,const QBrush &);
+ void fillRect(const QRect &,const QBrush &);
+ void eraseRect(int,int,int,int);
+ void eraseRect(const QRect &);
+ void drawText(int,int,char *,int = -1);
+ void drawText(const QPoint &,const char *,int = -1);
+ void drawText(int,int,int,int,int,const char *,int = -1,QRect * = 0);
+ void drawText(const QRect &,int,const char *,int = -1,QRect * = 0);
+
+%If (Qt_3_2_0 -)
+ void drawTextItem(int,int,const QTextItem &,int = 0);
+ void drawTextItem(const QPoint &,const QTextItem &,int = 0);
+%End
+
+ QRect boundingRect(int,int,int,int,int,const char *,int = -1);
+ QRect boundingRect(const QRect &,int,const char *,int = -1);
+
+ int tabStops() const;
+ void setTabStops(int);
+
+ SIP_PYLIST tabArray() const;
+%MethodCode
+ int *tabs;
+
+ Py_BEGIN_ALLOW_THREADS
+ tabs = sipCpp -> tabArray();
+ Py_END_ALLOW_THREADS
+
+ int len = 0;
+
+ if (tabs)
+ {
+ int *tp = tabs;
+
+ do
+ ++len;
+ while (*tp++ != 0);
+ }
+
+ if ((sipRes = PyList_New(len)) == NULL)
+ sipIsErr = 1;
+ else if (tabs)
+ {
+ int *tp = tabs;
+
+ len = 0;
+
+ do
+ {
+ if (PyList_SET_ITEM(sipRes,len,PyInt_FromLong((long)*tp)) < 0)
+ {
+ Py_DECREF(sipRes);
+ sipIsErr = 1;
+ break;
+ }
+
+ ++len;
+ }
+ while (*tp++ != 0);
+ }
+%End
+
+ void setTabArray(SIP_PYLIST);
+%MethodCode
+ int len, *tabs;
+
+ len = PyList_GET_SIZE(a0);
+
+ // Allocate space for the array. Note, this memory is never
+ // reclaimed.
+ if ((tabs = (int *)sipMalloc(len * sizeof (int))) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Convert the list.
+
+ int *tp = tabs;
+
+ for (int i = 0; i < len; ++i)
+ {
+ *tp++ = (int)PyInt_AsLong(PyList_GET_ITEM(a0,i));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ sipFree((ANY *)tabs);
+ sipIsErr = 1;
+ break;
+ }
+ }
+
+ if (!sipIsErr)
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> setTabArray(tabs);
+ Py_END_ALLOW_THREADS
+ }
+ }
+%End
+
+ HANDLE handle() const;
+ static void initialize();
+ static void cleanup();
+
+private:
+ QPainter(const QPainter &);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QPainter : Qt
+{
+%TypeHeaderCode
+#include <qpainter.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ enum CoordinateMode {
+ CoordDevice,
+ CoordPainter
+ };
+%End
+
+ QPainter();
+%If (- Qt_3_0_0)
+ QPainter(const QPaintDevice *);
+ QPainter(const QPaintDevice *,const QWidget *);
+%End
+%If (Qt_3_0_0 -)
+ QPainter(const QPaintDevice *,bool = 0);
+ QPainter(const QPaintDevice *,const QWidget *,bool = 0);
+%End
+
+%If (- Qt_3_0_0)
+ bool begin(const QPaintDevice *);
+ bool begin(const QPaintDevice *,const QWidget *);
+%End
+%If (Qt_3_0_0 -)
+ bool begin(const QPaintDevice *,bool = 0);
+ bool begin(const QPaintDevice *,const QWidget *,bool = 0);
+%End
+ bool end();
+ QPaintDevice *device() const;
+
+ static void redirect(QPaintDevice *,QPaintDevice *);
+
+ bool isActive() const;
+
+%If (Qt_3_0_0 -)
+ void flush(const QRegion &,CoordinateMode = CoordDevice);
+%End
+ void flush();
+ void save();
+ void restore();
+
+ QFontMetrics fontMetrics() const;
+ QFontInfo fontInfo() const;
+
+ const QFont &font() const;
+ void setFont(const QFont&);
+ const QPen &pen() const;
+ void setPen(const QPen &);
+ void setPen(PenStyle);
+ void setPen(const QColor &);
+ const QBrush &brush() const;
+ void setBrush(const QBrush &);
+ void setBrush(BrushStyle);
+ void setBrush(const QColor &);
+%If (Qt_2_1_0 -)
+ // The omission of this from Qt/Embedded is probably a bug.
+%End
+
+ const QColor &backgroundColor() const;
+ void setBackgroundColor(const QColor &);
+ BGMode backgroundMode() const;
+ void setBackgroundMode(BGMode);
+ RasterOp rasterOp() const;
+ void setRasterOp(RasterOp);
+ const QPoint &brushOrigin() const;
+ void setBrushOrigin(int,int);
+ void setBrushOrigin(const QPoint &);
+
+ bool hasViewXForm() const;
+ bool hasWorldXForm() const;
+
+%If (Qt_TRANSFORMATIONS)
+ void setViewXForm(bool);
+ QRect window() const;
+ void setWindow(const QRect &);
+ void setWindow(int,int,int,int);
+ QRect viewport() const;
+ void setViewport(const QRect &);
+ void setViewport(int,int,int,int);
+
+ void setWorldXForm(bool);
+ const QWMatrix &worldMatrix() const;
+ void setWorldMatrix(const QWMatrix &,bool = 0);
+
+ void saveWorldMatrix();
+ void restoreWorldMatrix();
+
+ void scale(double,double);
+ void shear(double,double);
+ void rotate(double);
+%End
+ void translate(double,double);
+ void resetXForm();
+%If (Qt_3_0_0 -)
+ double translationX() const;
+ double translationY() const;
+%End
+
+ QPoint xForm(const QPoint &) const;
+ QRect xForm(const QRect &) const;
+ QPointArray xForm(const QPointArray &) const;
+ QPointArray xForm(const QPointArray &,int,int) const;
+ QPoint xFormDev(const QPoint &) const;
+ QRect xFormDev(const QRect &) const;
+ QPointArray xFormDev(const QPointArray &) const;
+ QPointArray xFormDev(const QPointArray &,int,int) const;
+
+ void setClipping(bool);
+ bool hasClipping() const;
+%If (- Qt_3_0_0)
+ const QRegion &clipRegion() const;
+ void setClipRect(const QRect &);
+ void setClipRect(int,int,int,int);
+ void setClipRegion(const QRegion &);
+%End
+%If (Qt_3_0_0 -)
+ QRegion clipRegion(CoordinateMode = CoordDevice) const;
+ void setClipRect(const QRect &,CoordinateMode = CoordDevice);
+ void setClipRect(int,int,int,int,CoordinateMode = CoordDevice);
+ void setClipRegion(const QRegion &,CoordinateMode = CoordDevice);
+%End
+
+ void drawPoint(int,int);
+ void drawPoint(const QPoint &);
+ void drawPoints(const QPointArray &,int,int = -1);
+ void moveTo(int,int);
+ void moveTo(const QPoint &);
+ void lineTo(int,int);
+ void lineTo(const QPoint &);
+ void drawLine(int,int,int,int);
+ void drawLine(const QPoint &,const QPoint &);
+ void drawRect(int,int,int,int);
+ void drawRect(const QRect &);
+ void drawWinFocusRect(int,int,int,int);
+ void drawWinFocusRect(int,int,int,int,const QColor &);
+ void drawWinFocusRect(const QRect &);
+ void drawWinFocusRect(const QRect &,const QColor &);
+%If (- Qt_3_0_0)
+ void drawRoundRect(int,int,int,int,int,int);
+ void drawRoundRect(const QRect &,int,int);
+%End
+%If (Qt_3_0_0 -)
+ void drawRoundRect(int,int,int,int,int = 25,int = 25);
+ void drawRoundRect(const QRect &,int = 25,int = 25);
+%End
+ void drawEllipse(int,int,int,int);
+ void drawEllipse(const QRect &);
+ void drawArc(int,int,int,int,int,int);
+ void drawArc(const QRect &,int,int);
+ void drawPie(int,int,int,int,int,int);
+ void drawPie(const QRect &,int,int);
+ void drawChord(int,int,int,int,int,int);
+ void drawChord(const QRect &,int,int);
+ void drawLineSegments(const QPointArray &,int = 0,int = -1);
+ void drawPolyline(const QPointArray &,int = 0,int = -1);
+ void drawPolygon(const QPointArray &,bool = 0,int = 0,int = -1);
+%If (- Qt_3_0_0)
+ void drawQuadBezier(const QPointArray &,int = 0);
+%End
+%If (Qt_3_0_0 -)
+ void drawConvexPolygon(const QPointArray &,int = 0,int = -1);
+ void drawCubicBezier(const QPointArray &,int = 0);
+%End
+ void drawPixmap(int,int,const QPixmap &,int = 0,int = 0,int = -1,
+ int = -1);
+ void drawPixmap(const QPoint &,const QPixmap &,const QRect &);
+ void drawPixmap(const QPoint &,const QPixmap &);
+%If (Qt_3_0_0 -)
+ void drawPixmap(const QRect &,const QPixmap &);
+%End
+%If (- Qt_3_0_0)
+ void drawImage(int,int,const QImage &,int = 0,int = 0,int = -1,
+ int = -1);
+ void drawImage(const QPoint &,const QImage &,const QRect &);
+ void drawImage(const QPoint &,const QImage &);
+%End
+%If (Qt_3_0_0 -)
+ void drawImage(int,int,const QImage &,int = 0,int = 0,int = -1,
+ int = -1,int = 0);
+ void drawImage(const QPoint &,const QImage &,const QRect &,int = 0);
+ void drawImage(const QPoint &,const QImage &,int = 0);
+ void drawImage(const QRect &,const QImage &);
+%End
+ void drawTiledPixmap(int,int,int,int,const QPixmap &,int = 0,int = 0);
+ void drawTiledPixmap(const QRect &,const QPixmap &,const QPoint &);
+ void drawTiledPixmap(const QRect &,const QPixmap &);
+%If (Qt_PICTURE)
+ void drawPicture(const QPicture &);
+%If (Qt_3_0_0 -)
+ void drawPicture(int,int,const QPicture &);
+ void drawPicture(const QPoint &,const QPicture &);
+%End
+%End
+
+ void fillRect(int,int,int,int,const QBrush &);
+ void fillRect(const QRect &,const QBrush &);
+ void eraseRect(int,int,int,int);
+ void eraseRect(const QRect &);
+
+%If (Qt_3_0_0 -)
+ enum TextDirection {
+ Auto,
+ RTL,
+ LTR
+ };
+%End
+
+%If (- Qt_3_0_0)
+ void drawText(int,int,const QString &,int = -1);
+ void drawText(const QPoint &,const QString &,int = -1);
+%End
+%If (Qt_3_0_0 -)
+ void drawText(int,int,const QString &,int = -1,TextDirection = Auto);
+ void drawText(const QPoint &,const QString &,int = -1,
+ TextDirection = Auto);
+ void drawText(int,int,const QString &,int,int,TextDirection = Auto);
+ void drawText(const QPoint &,const QString &,int,int,
+ TextDirection = Auto);
+%End
+ void drawText(int,int,int,int,int,const QString &,int = -1,QRect * = 0);
+ void drawText(const QRect &,int,const QString &,int = -1,QRect * = 0);
+
+ QRect boundingRect(int,int,int,int,int,const QString &,int = -1);
+ QRect boundingRect(const QRect &,int,const QString &,int = -1);
+ int tabStops() const;
+ void setTabStops(int);
+
+ SIP_PYLIST tabArray() const;
+%MethodCode
+ int *tabs;
+
+ Py_BEGIN_ALLOW_THREADS
+ tabs = sipCpp -> tabArray();
+ Py_END_ALLOW_THREADS
+
+ int len = 0;
+
+ if (tabs)
+ {
+ int *tp = tabs;
+
+ do
+ ++len;
+ while (*tp++ != 0);
+ }
+
+ if ((sipRes = PyList_New(len)) == NULL)
+ sipIsErr = 1;
+ else if (tabs)
+ {
+ int *tp = tabs;
+
+ len = 0;
+
+ do
+ {
+ if (PyList_SET_ITEM(sipRes,len,PyInt_FromLong((long)*tp)) < 0)
+ {
+ Py_DECREF(sipRes);
+ sipIsErr = 1;
+ break;
+ }
+
+ ++len;
+ }
+ while (*tp++ != 0);
+ }
+%End
+
+ void setTabArray(SIP_PYLIST);
+%MethodCode
+ int len, *tabs;
+
+ len = PyList_GET_SIZE(a0);
+
+ // Allocate space for the array. Note, this memory is never
+ // reclaimed.
+ if ((tabs = (int *)sipMalloc(len * sizeof (int))) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Convert the list.
+
+ int *tp = tabs;
+
+ for (int i = 0; i < len; ++i)
+ {
+ *tp++ = (int)PyInt_AsLong(PyList_GET_ITEM(a0,i));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ sipFree((ANY *)tabs);
+ sipIsErr = 1;
+ break;
+ }
+ }
+
+ if (!sipIsErr)
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> setTabArray(tabs);
+ Py_END_ALLOW_THREADS
+ }
+ }
+%End
+
+%If (WS_X11)
+ HANDLE handle() const;
+%End
+
+ static void initialize();
+ static void cleanup();
+
+private:
+ QPainter(const QPainter &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qpair.sip b/python/pyqt/sip/qt/qpair.sip
new file mode 100644
index 00000000..6064e222
--- /dev/null
+++ b/python/pyqt/sip/qt/qpair.sip
@@ -0,0 +1,83 @@
+// This is the SIP interface definition for all types based on the QPair
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPair&lt;type,type&gt; (Qt v3+)</Title>
+<Para>
+Types based on the <Literal>QPair</Literal> template are automatically
+converted to and from Python tuples of two elements.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+%MappedType QPair<int,int>
+{
+%TypeHeaderCode
+#include <qpair.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of integers.
+
+ PyObject *t;
+
+ // Create the tuple.
+
+ if ((t = PyTuple_New(2)) == NULL)
+ return NULL;
+
+ // Fill it.
+
+ PyTuple_SET_ITEM(t,0,PyInt_FromLong((long)sipCpp -> first));
+ PyTuple_SET_ITEM(t,1,PyInt_FromLong((long)sipCpp -> second));
+
+ return t;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python tuple of integers to a QPair<int,int> on the heap.
+
+ if (sipIsErr == NULL)
+ return (PyTuple_Size(sipPy) == 2);
+
+ PyErr_Clear();
+
+ int fst = (int)PyInt_AsLong(PyTuple_GET_ITEM(sipPy,0));
+ int sec = (int)PyInt_AsLong(PyTuple_GET_ITEM(sipPy,1));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ *sipIsErr = 1;
+ return 0;
+ }
+
+ *sipCppPtr = new QPair<int,int>(fst,sec);
+
+ return 1;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qpalette.sip b/python/pyqt/sip/qt/qpalette.sip
new file mode 100644
index 00000000..ae7b94ca
--- /dev/null
+++ b/python/pyqt/sip/qt/qpalette.sip
@@ -0,0 +1,102 @@
+// This is the SIP interface definition for QPalette.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPalette</Title>
+<Para>
+<Literal>QPalette</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+%End
+
+
+class QPalette
+{
+%TypeHeaderCode
+#include <qpalette.h>
+%End
+
+public:
+ QPalette();
+ QPalette(const QColor &);
+%If (Qt_2_00 -)
+ QPalette(const QColor &,const QColor &);
+%End
+ QPalette(const QColorGroup &,const QColorGroup &,const QColorGroup &);
+ QPalette(const QPalette &);
+
+%If (Qt_2_00 - Qt_2_1_0)
+ enum ColorGroup {
+ Normal,
+ Disabled,
+ Active,
+ NColorGroups
+ };
+%End
+%If (Qt_2_1_0 -)
+ enum ColorGroup {
+ Normal,
+ Disabled,
+ Active,
+ Inactive,
+ NColorGroups
+ };
+%End
+
+%If (Qt_2_00 -)
+ const QColor &color(ColorGroup,QColorGroup::ColorRole) const;
+ const QBrush &brush(ColorGroup,QColorGroup::ColorRole) const;
+ void setColor(ColorGroup,QColorGroup::ColorRole,const QColor &);
+ void setBrush(ColorGroup,QColorGroup::ColorRole,const QBrush &);
+ void setColor(QColorGroup::ColorRole,const QColor &);
+ void setBrush(QColorGroup::ColorRole,const QBrush &);
+%End
+
+ QPalette copy() const;
+
+ const QColorGroup &active() const;
+ const QColorGroup &disabled() const;
+%If (Qt_2_1_0 -)
+ const QColorGroup &inactive() const;
+%End
+ const QColorGroup &normal() const;
+
+ void setActive(const QColorGroup &);
+ void setDisabled(const QColorGroup &);
+%If (Qt_2_1_0 -)
+ void setInactive(const QColorGroup &);
+%End
+ void setNormal(const QColorGroup &);
+
+ bool operator==(const QPalette &) const;
+ bool operator!=(const QPalette &) const;
+
+ bool isCopyOf(const QPalette &);
+ int serialNumber() const;
+
+%If (Qt_3_0_0 -)
+ // These are defined in Qt3, but don't appear in the documentation.
+ //static QColorGroup::ColorRole foregroundRoleFromMode(Qt::BackgroundMode);
+ //static QColorGroup::ColorRole backgroundRoleFromMode(Qt::BackgroundMode);
+%End
+};
diff --git a/python/pyqt/sip/qt/qpen.sip b/python/pyqt/sip/qt/qpen.sip
new file mode 100644
index 00000000..f59db981
--- /dev/null
+++ b/python/pyqt/sip/qt/qpen.sip
@@ -0,0 +1,101 @@
+// This is the SIP interface definition for QPen.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPen</Title>
+<Para>
+<Literal>QPen</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+enum PenStyle {
+ NoPen,
+ SolidLine,
+ DashLine,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine
+};
+
+
+class QPen
+{
+%TypeHeaderCode
+#include <qpen.h>
+%End
+
+public:
+ QPen();
+ QPen(PenStyle);
+ QPen(const QColor &,uint = 0,PenStyle = SolidLine);
+ QPen(const QPen &);
+
+ PenStyle style() const;
+ void setStyle(PenStyle);
+ uint width() const;
+ void setWidth(uint);
+ const QColor &color() const;
+ void setColor(const QColor &);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QPen : Qt
+{
+%TypeHeaderCode
+#include <qpen.h>
+%End
+
+public:
+ QPen();
+ QPen(PenStyle);
+ QPen(const QColor &,uint = 0,PenStyle = SolidLine);
+%If (Qt_2_1_0 -)
+ QPen(const QColor &,uint,PenStyle,PenCapStyle,PenJoinStyle);
+%End
+ QPen(const QPen &);
+
+ PenStyle style() const;
+ void setStyle(PenStyle);
+ uint width() const;
+ void setWidth(uint);
+ const QColor &color() const;
+ void setColor(const QColor &);
+%If (Qt_2_1_0 -)
+ PenCapStyle capStyle() const;
+ void setCapStyle(PenCapStyle);
+ PenJoinStyle joinStyle() const;
+ void setJoinStyle(PenJoinStyle);
+%End
+
+ bool operator==(const QPen &) const;
+ bool operator!=(const QPen &) const;
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qpicture.sip b/python/pyqt/sip/qt/qpicture.sip
new file mode 100644
index 00000000..dbeb3091
--- /dev/null
+++ b/python/pyqt/sip/qt/qpicture.sip
@@ -0,0 +1,111 @@
+// This is the SIP interface definition for QPicture.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPicture</Title>
+<FuncSynopsis>
+ <FuncDef>const char *<Function>data</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setData</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>size</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>size</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_PICTURE)
+
+class QPicture : QPaintDevice
+{
+%TypeHeaderCode
+#include <qpicture.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QPicture();
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QPicture(int = 0);
+%End
+%If (Qt_3_0_0 -)
+ QPicture(int = -1);
+ QPicture(const QPicture &);
+%End
+
+ bool isNull() const;
+
+ uint size() const;
+// const char *data() const;
+%If (- Qt_2_00)
+ void setData(const char * /Array/,uint /ArraySize/);
+%End
+%If (Qt_2_00 -)
+ virtual void setData(const char * /Array/,uint /ArraySize/);
+%End
+
+ bool play(QPainter *);
+
+%If (- Qt_2_00)
+ bool load(const char *);
+ bool save(const char *);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ bool load(const QString &);
+ bool save(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ bool load(QIODevice *,const char * = 0);
+ bool load(const QString &,const char * = 0);
+ bool save(QIODevice *,const char * = 0);
+ bool save(const QString &,const char * = 0);
+
+ QRect boundingRect() const;
+%End
+%If (Qt_3_1_0 -)
+ void setBoundingRect(const QRect &);
+%End
+
+protected:
+%If (Qt_3_0_0 -)
+ void detach();
+ QPicture copy() const;
+%End
+
+private:
+%If (- Qt_3_0_0)
+ QPicture(const QPicture &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qpixmap.sip b/python/pyqt/sip/qt/qpixmap.sip
new file mode 100644
index 00000000..d00cd78f
--- /dev/null
+++ b/python/pyqt/sip/qt/qpixmap.sip
@@ -0,0 +1,288 @@
+// This is the SIP interface definition for QPixmap.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPixmap</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPixmap</Function></FuncDef>
+ <ParamDef>const char *<Parameter>xpm</Parameter>[]</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a list of strings as its parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter> = 0</ParamDef>
+ <ParamDef>ColorMode <Parameter>mode</Parameter> = Auto</ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>buf</Literal> and not passed as
+a parameter.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>loadFromData</Function></FuncDef>
+ <ParamDef>const uchar *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>int <Parameter>conversion_flags</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QPixmap : QPaintDevice
+{
+%TypeHeaderCode
+#include <qpixmap.h>
+%End
+
+public:
+ enum ColorMode
+ {
+ Auto,
+ Color,
+ Mono
+ };
+
+ QPixmap();
+ QPixmap(int,int,int = -1);
+ QPixmap(const QSize &,int = -1);
+ QPixmap(const char *,const char * = 0,ColorMode = Auto);
+ QPixmap(const char *,const char *,int);
+
+ QPixmap(SIP_PYLIST) [(const char **)];
+%MethodCode
+ // The Python interface is a list of strings that make up the
+ // image.
+
+ const char **str;
+
+ if ((str = PyQt_qt_ListToArray(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQPixmap(str);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)str);
+ }
+%End
+
+ QPixmap(const QPixmap &);
+
+ bool isNull() const;
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+ static int defaultDepth();
+ void fill(const QColor & = white);
+ void fill(const QWidget *,int,int);
+ void fill(const QWidget *,const QPoint &);
+ void resize(int,int);
+ void resize(const QSize &);
+ const QBitmap *mask() const;
+ void setMask(const QBitmap &);
+ bool selfMask() const;
+ QBitmap createHeuristicMask(bool = 1) const;
+ static QPixmap grabWindow(WId,int = 0,int = 0,int = -1,int = -1);
+ QPixmap xForm(const QWMatrix &) const;
+ static QWMatrix trueMatrix(const QWMatrix &,int,int);
+ QImage convertToImage() const;
+ bool convertFromImage(const QImage &,ColorMode = Auto);
+ bool convertFromImage(const QImage &,int);
+ static const char *imageFormat(const char *);
+ bool load(const char *,const char * = 0,ColorMode = Auto);
+ bool load(const char *,const char *,int);
+ bool loadFromData(const uchar * /Array/,uint /ArraySize/,
+ const char * = 0,ColorMode = Auto);
+// bool loadFromData(const uchar *,uint,const char *,int);
+ bool loadFromData(QByteArray,const char * = 0,int = 0);
+ bool save(const char *,const char *) const;
+ int serialNumber() const;
+
+ enum Optimization
+ {
+ NoOptim,
+ NormalOptim,
+ BestOptim
+ };
+
+ Optimization optimization() const;
+ void setOptimization(Optimization);
+ static Optimization defaultOptimization();
+ static void setDefaultOptimization(Optimization);
+ virtual void detach();
+ bool isQBitmap() const;
+
+protected:
+ QPixmap(int,int,const uchar *,bool);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QPixmap : QPaintDevice, Qt
+{
+%TypeHeaderCode
+#include <qpixmap.h>
+%End
+
+public:
+ enum ColorMode
+ {
+ Auto,
+ Color,
+ Mono
+ };
+
+ enum Optimization
+ {
+ DefaultOptim,
+ NoOptim,
+ MemoryOptim,
+ NormalOptim,
+ BestOptim
+ };
+
+ QPixmap();
+%If (Qt_3_0_0 -)
+ QPixmap(const QImage &);
+%End
+ QPixmap(int,int,int = -1,Optimization = DefaultOptim);
+ QPixmap(const QSize &,int = -1,Optimization = DefaultOptim);
+ QPixmap(const QString &,const char * = 0,ColorMode = Auto);
+ QPixmap(const QString &,const char *,int);
+
+ QPixmap(SIP_PYLIST) [(const char **)];
+%MethodCode
+ // The Python interface is a list of strings that make up the
+ // image.
+
+ const char **str;
+
+ if ((str = PyQt_qt_ListToArray(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQPixmap(str);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)str);
+ }
+%End
+
+ QPixmap(const QByteArray &);
+ QPixmap(const QPixmap &);
+
+ bool isNull() const;
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+ static int defaultDepth();
+ void fill(const QColor & = Qt::white);
+ void fill(const QWidget *,int,int);
+ void fill(const QWidget *,const QPoint &);
+ void resize(int,int);
+ void resize(const QSize &);
+ const QBitmap *mask() const;
+ void setMask(const QBitmap &);
+ bool selfMask() const;
+%If (Qt_3_1_0 -)
+ bool hasAlpha() const;
+%End
+%If (Qt_3_2_0 -)
+ bool hasAlphaChannel() const;
+%End
+ QBitmap createHeuristicMask(bool = 1) const;
+%If (Qt_3_1_0 -)
+ static QPixmap fromMimeSource(const QString &);
+%End
+ static QPixmap grabWindow(WId,int = 0,int = 0,int = -1,int = -1);
+%If (Qt_2_1_0 -)
+ static QPixmap grabWidget(QWidget *,int = 0,int = 0,int = -1,int = -1);
+%End
+
+ QPixmap xForm(const QWMatrix &) const;
+ static QWMatrix trueMatrix(const QWMatrix &,int,int);
+ QImage convertToImage() const;
+ bool convertFromImage(const QImage &,ColorMode = Auto);
+ bool convertFromImage(const QImage &,int);
+ static const char *imageFormat(const QString &);
+ bool load(const QString &,const char * = 0,ColorMode = Auto);
+ bool load(const QString &,const char *,int);
+ bool loadFromData(const uchar * /Array/,uint /ArraySize/,
+ const char * = 0,ColorMode = Auto);
+// bool loadFromData(const uchar *,uint,const char *,int);
+ bool loadFromData(QByteArray,const char * = 0,int = 0);
+%If (- Qt_3_0_0)
+ bool save(const QString &,const char *) const;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ bool save(const QString &,const char *,int) const;
+%End
+%If (Qt_3_0_0 -)
+ bool save(const QString &,const char *,int = -1) const;
+%End
+%If (Qt_3_2_0 -)
+ bool save(QIODevice *,const char *,int = -1) const;
+%End
+ int serialNumber() const;
+ Optimization optimization() const;
+ void setOptimization(Optimization);
+ static Optimization defaultOptimization();
+ static void setDefaultOptimization(Optimization);
+ virtual void detach();
+ bool isQBitmap() const;
+
+%If (Qt_3_0_0 -)
+%If (WS_X11)
+ static int x11SetDefaultScreen(int);
+ void x11SetScreen(int);
+%End
+%End
+
+protected:
+ QPixmap(int,int,const uchar *,bool);
+};
+
+%End
+
+%If (Qt_3_2_0 -)
+void copyBlt(QPixmap *,int,int,const QPixmap *,int = 0,int = 0,int = -1,
+ int = -1);
+%End
diff --git a/python/pyqt/sip/qt/qpixmapcache.sip b/python/pyqt/sip/qt/qpixmapcache.sip
new file mode 100644
index 00000000..5e8e0664
--- /dev/null
+++ b/python/pyqt/sip/qt/qpixmapcache.sip
@@ -0,0 +1,53 @@
+// This is the SIP interface definition for QPixmapCache.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPixmapCache (Qt v3+)</Title>
+<Para>
+<Literal>QPixmapCache</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QPixmapCache
+{
+%TypeHeaderCode
+#include <qpixmapcache.h>
+%End
+
+public:
+ static int cacheLimit();
+ static void setCacheLimit(int);
+ static QPixmap *find(const QString &);
+ static bool find(const QString &,QPixmap &);
+// static bool insert(const QString &,QPixmap *);
+ static bool insert(const QString &,const QPixmap &);
+%If (Qt_3_2_0 -)
+ static void remove(const QString &);
+%End
+ static void clear();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qplatinumstyle.sip b/python/pyqt/sip/qt/qplatinumstyle.sip
new file mode 100644
index 00000000..5392eea6
--- /dev/null
+++ b/python/pyqt/sip/qt/qplatinumstyle.sip
@@ -0,0 +1,142 @@
+// This is the SIP interface definition for QPlatinumStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPlatinumStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_STYLE_PLATINUM)
+
+class QPlatinumStyle : QWindowsStyle
+{
+%TypeHeaderCode
+#include <qplatinumstyle.h>
+%End
+
+public:
+ QPlatinumStyle();
+
+%If (- Qt_3_0_0)
+ void drawPopupPanel(QPainter *,int,int,int,int,const QColorGroup &,
+ int = 2,const QBrush * = 0);
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+ QRect buttonRect(int,int,int,int);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawPushButton(QPushButton *,QPainter *);
+ void drawPushButtonLabel(QPushButton *,QPainter *);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,uint);
+ ScrollControl scrollBarPointOver(const QScrollBar *,int,const QPoint &);
+ QSize indicatorSize() const;
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,int,
+ bool = 0,bool = 1);
+ void drawIndicatorMask(QPainter *,int,int,int,int,int);
+ QSize exclusiveIndicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+ int sliderLength() const;
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderMask(QPainter *,int,int,int,int,Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+ int maximumSliderDragDistance() const;
+ void drawCheckMark(QPainter *,int,int,int,int,const QColorGroup &,
+ bool,bool);
+ void polishPopupMenu(QPopupMenu *);
+ int extraPopupMenuItemWidth(bool,int,QMenuItem *,const QFontMetrics &);
+ int popupMenuItemHeight(bool,QMenuItem *,const QFontMetrics &);
+ void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool,bool,int,int,int,int);
+%End
+%If (Qt_3_0_0 -)
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect querySubControlMetrics(ComplexControl,const QWidget *,SubControl,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ QRect subRect(SubRect,const QWidget *) const;
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ void drawScrollBarBackground(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,
+ const QBrush * = 0);
+%End
+ QColor mixedColor(const QColor &,const QColor &) const;
+%If (- Qt_3_0_0)
+ void drawRiffles(QPainter *,int,int,int,int,const QColorGroup &,bool);
+%End
+%If (Qt_3_0_0 -)
+ void drawRiffles(QPainter *,int,int,int,int,const QColorGroup &,
+ bool) const;
+%End
+
+private:
+%If (Qt_3_0_0 -)
+ QPlatinumStyle(const QPlatinumStyle &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qpoint.sip b/python/pyqt/sip/qt/qpoint.sip
new file mode 100644
index 00000000..6dc338fd
--- /dev/null
+++ b/python/pyqt/sip/qt/qpoint.sip
@@ -0,0 +1,103 @@
+// This is the SIP interface definition for QPoint.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPoint</Title>
+<Para>
+The Python
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>, unary <Literal>-</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>,
+<Literal>/</Literal>, <Literal>/=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal> and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rx</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>ry</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QPoint
+{
+%TypeHeaderCode
+#include <qpoint.h>
+%End
+
+public:
+ QPoint();
+ QPoint(int,int);
+
+ bool isNull() const;
+ int x() const;
+ int y() const;
+ void setX(int);
+ void setY(int);
+%If (Qt_2_00 -)
+ int manhattanLength() const;
+%End
+// QCOORD &rx();
+// QCOORD &ry();
+
+ QPoint &operator+=(const QPoint &);
+ QPoint &operator-=(const QPoint &);
+ QPoint &operator*=(int /Constrained/);
+ QPoint &operator*=(double);
+ QPoint &operator/=(int /Constrained/);
+ QPoint &operator/=(double);
+
+ int __nonzero__();
+%MethodCode
+ sipRes = !sipCpp -> isNull();
+%End
+
+ // Qt defines the remaining operators as global, rather than part of
+ // the class, but SIP doesn't support global operators.
+ bool operator==(const QPoint &);
+ bool operator!=(const QPoint &);
+ const QPoint operator+(const QPoint &);
+ const QPoint operator-(const QPoint &);
+ const QPoint operator*(int /Constrained/);
+ const QPoint operator*(double);
+
+ const QPoint __neg__();
+%MethodCode
+ sipRes = new QPoint(-(*sipCpp));
+%End
+
+ const QPoint operator/(int /Constrained/);
+ const QPoint operator/(double);
+};
diff --git a/python/pyqt/sip/qt/qpointarray.sip b/python/pyqt/sip/qt/qpointarray.sip
new file mode 100644
index 00000000..c88b56b6
--- /dev/null
+++ b/python/pyqt/sip/qt/qpointarray.sip
@@ -0,0 +1,247 @@
+// This is the SIP interface definition for QPointArray.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPointArray</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPointArray</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>point</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the single parameter <Literal>i</Literal> and returns the
+<Literal>x</Literal> and <Literal>y</Literal> values as a tuple.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>putPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, <Literal>index</Literal> and a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>putPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>index</Parameter></ParamDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firstx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firsty</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>const QCOORD *<Parameter>points</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single parameter which is a list of points.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setPoints</Function></FuncDef>
+ <ParamDef>int <Parameter>nPoints</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firstx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>firsty</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QPointArray
+{
+%TypeHeaderCode
+#include <qpointarray.h>
+%End
+
+%TypeCode
+// Convert a list of numbers to an array on QCOORDs on the heap.
+
+static QCOORD *getPoints(int nrpnts,PyObject *pntlist)
+{
+ QCOORD *pnts, *pp;
+
+ if ((pnts = (QCOORD *)sipMalloc(nrpnts * sizeof (QCOORD))) == NULL)
+ return NULL;
+
+ // Convert the list.
+
+ pp = pnts;
+
+ for (int i = 0; i < nrpnts; ++i)
+ {
+ *pp++ = (QCOORD)PyInt_AsLong(PyList_GetItem(pntlist,i));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ sipFree((ANY *)pnts);
+ return NULL;
+ }
+ }
+
+ return pnts;
+}
+%End
+
+public:
+ QPointArray();
+ QPointArray(int);
+ QPointArray(const QPointArray &);
+ QPointArray(const QRect &,bool = 0);
+
+ QPointArray(SIP_PYLIST) [(int,const QCOORD *)];
+%MethodCode
+ // The Python interface is a list of QCOORDs.
+
+ int nrpnts;
+ QCOORD *pnts;
+
+ nrpnts = PyList_GET_SIZE(a0);
+
+ if ((pnts = getPoints(nrpnts,a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // No wrapper class for QPointArray.
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new QPointArray(nrpnts / 2,pnts);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)pnts);
+ }
+%End
+
+ QPointArray copy() const;
+ void translate(int,int);
+ QRect boundingRect() const;
+
+ void point(uint,int *,int *) const;
+ // This is hidden by the above. It would probably be better to remove
+ // the one above, but that would break backwards compatibility.
+ //QPoint point(uint) const;
+ void setPoint(uint,int,int);
+ void setPoint(uint,const QPoint &);
+
+ bool setPoints(SIP_PYLIST);
+%MethodCode
+ int nrpnts;
+ QCOORD *pnts;
+
+ nrpnts = PyList_GET_SIZE(a0);
+
+ if ((pnts = getPoints(nrpnts,a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> setPoints(nrpnts / 2,pnts);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)pnts);
+ }
+%End
+
+// bool setPoints(int,int,int,...);
+
+ bool putPoints(int,SIP_PYLIST);
+%MethodCode
+ int nrpnts;
+ QCOORD *pnts;
+
+ nrpnts = PyList_GET_SIZE(a1);
+
+ if ((pnts = getPoints(nrpnts,a1)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> putPoints(a0,nrpnts / 2,pnts);
+ Py_END_ALLOW_THREADS
+
+ sipFree((ANY *)pnts);
+ }
+%End
+
+// bool putPoints(int,int,int,int,...);
+%If (Qt_3_0_0 -)
+ bool putPoints(int,int,const QPointArray &,int = 0);
+%End
+
+%If (- Qt_2_00)
+ QPoint at(uint) const;
+%End
+
+ void makeArc(int,int,int,int,int,int);
+ void makeEllipse(int,int,int,int);
+%If (Qt_TRANSFORMATIONS)
+%If (Qt_2_00 -)
+ void makeArc(int,int,int,int,int,int,const QWMatrix &);
+%End
+%End
+%If (- Qt_3_0_0)
+ QPointArray quadBezier() const;
+%End
+%If (Qt_3_0_0 -)
+ QPointArray cubicBezier() const;
+%End
+
+ // These are actually in QArray, which isn't implemented so pretend
+ // they are here.
+
+ uint nrefs() const;
+ bool isEmpty() const;
+ bool isNull() const;
+ bool resize(uint);
+ uint size() const;
+ bool truncate(uint);
+ bool fill(const QPoint &,int = -1);
+%If (Qt_2_00 -)
+ QPoint &at(uint) const;
+%End
+%If (Qt_2_1_0 -)
+ void sort();
+ int bsearch(const QPoint &) const;
+%End
+ int find(const QPoint &,uint = 0) const;
+ int contains(const QPoint &) const;
+};
diff --git a/python/pyqt/sip/qt/qpopupmenu.sip b/python/pyqt/sip/qt/qpopupmenu.sip
new file mode 100644
index 00000000..08366b42
--- /dev/null
+++ b/python/pyqt/sip/qt/qpopupmenu.sip
@@ -0,0 +1,282 @@
+// This is the SIP interface definition for QPopupMenu.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPopupMenu</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ menu to be transfered
+to Python. This means that the C++ menu will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the menu is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef>const QPoint &<Parameter>pos</Parameter></ParamDef>
+ <ParamDef>int <Parameter>indexAtPoint</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>exec_loop</Literal> in Python.
+</Para>
+<Para>
+This method also causes ownership of the underlying C++ menu to be transfered
+to Python. This means that the C++ menu will be deleted when the Python
+wrapper is garbage collected. Although this is a little inconsistent, it
+ensures that the menu is deleted without having to explicity code it using
+<Literal>QObject.deleteLater()</Literal> or other techniques.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QPopupMenu : QTableView, QMenuData
+{
+%TypeHeaderCode
+#include <qpopupmenu.h>
+%End
+
+public:
+ QPopupMenu(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void popup(const QPoint &,int = 0);
+ void updateItem(int);
+ void setCheckable(bool);
+ bool isCheckable() const;
+ void setFont(const QFont &);
+ void show();
+ void hide();
+
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal menu will
+ // probably have the main window as it's parent). This means
+ // the Qt menu will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QPopupMenu::exec();
+ Py_END_ALLOW_THREADS
+%End
+
+ int exec(const QPoint &,int = 0) /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal menu will
+ // probably have the main window as it's parent). This means
+ // the Qt menu will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QPopupMenu::exec(*a0,a1);
+ Py_END_ALLOW_THREADS
+%End
+
+ void setActiveItem(int);
+ int idAt(int) const;
+%If (Qt_1_43 -)
+ int idAt(const QPoint &) const;
+%End
+
+signals:
+ void activated(int);
+ void highlighted(int);
+ void activatedRedirect(int);
+ void highlightedRedirect(int);
+ void aboutToShow();
+
+protected:
+ int cellHeight(int);
+ int cellWidth(int);
+ void paintCell(QPainter *,int,int);
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void timerEvent(QTimerEvent *);
+
+private:
+ QPopupMenu(const QPopupMenu &);
+ void menuContentsChanged();
+ void menuStateChanged();
+ void menuInsPopup(QPopupMenu *);
+ void menuDelPopup(QPopupMenu *);
+ void frameChanged();
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+class QPopupMenu : QFrame, QMenuData
+{
+%TypeHeaderCode
+#include <qpopupmenu.h>
+%End
+
+public:
+ QPopupMenu(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_3_0_5)
+ void popup(const QPoint &,int = 0);
+%End
+%If (Qt_3_0_5 -)
+ void popup(const QPoint &,int = -1);
+%End
+ void updateItem(int);
+
+ virtual void setCheckable(bool);
+ bool isCheckable() const;
+
+ void setFont(const QFont &);
+ void show();
+ void hide();
+
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal menu will
+ // probably have the main window as it's parent). This means
+ // the Qt menu will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QPopupMenu::exec();
+ Py_END_ALLOW_THREADS
+%End
+
+ int exec(const QPoint &,int = 0) /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+%MethodCode
+ // Transfer ownership back to Python (a modal menu will
+ // probably have the main window as it's parent). This means
+ // the Qt menu will be deleted when the Python wrapper is
+ // garbage collected. Although this is a little inconsistent,
+ // it saves having to code it explicitly to avoid the memory
+ // leak.
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp->QPopupMenu::exec(*a0,a1);
+ Py_END_ALLOW_THREADS
+%End
+
+ virtual void setActiveItem(int);
+ QSize sizeHint() const;
+
+ int idAt(int) const;
+ int idAt(const QPoint &) const;
+
+ bool customWhatsThis() const;
+
+%If (Qt_2_1_0 -)
+ int insertTearOffHandle(int = -1,int = -1);
+%End
+
+%If (Qt_2_2_0 -)
+ void activateItemAt(int);
+%End
+%If (Qt_3_0_0 -)
+ QRect itemGeometry(int);
+%End
+
+signals:
+ void activated(int);
+ void highlighted(int);
+ void activatedRedirect(int);
+ void highlightedRedirect(int);
+ void aboutToShow();
+%If (Qt_2_2_0 -)
+ void aboutToHide();
+%End
+
+protected:
+ int itemHeight(int) const;
+ int itemHeight(QMenuItem *) const;
+ void drawItem(QPainter *,int,QMenuItem *,bool,int,int,int,int);
+
+ void drawContents(QPainter *);
+
+ void closeEvent(QCloseEvent *);
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_1_0 -)
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+%End
+ void timerEvent(QTimerEvent *);
+%If (Qt_3_0_0 -)
+ void leaveEvent(QEvent *);
+%End
+ void styleChange(QStyle &);
+%If (Qt_3_1_0 -)
+ void enabledChange(bool);
+%End
+%If (Qt_2_1_0 -)
+ int columns() const;
+
+ bool focusNextPrevChild(bool);
+%End
+
+%If (Qt_3_0_0 -)
+ int itemAtPos(const QPoint &,bool = 1) const;
+%End
+
+private:
+ QPopupMenu(const QPopupMenu &);
+
+ void menuContentsChanged();
+ void menuStateChanged();
+ void menuInsPopup(QPopupMenu *);
+ void menuDelPopup(QPopupMenu *);
+ void frameChanged();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qprintdialog.sip b/python/pyqt/sip/qt/qprintdialog.sip
new file mode 100644
index 00000000..2ead1f98
--- /dev/null
+++ b/python/pyqt/sip/qt/qprintdialog.sip
@@ -0,0 +1,64 @@
+// This is the SIP interface definition for QPrintDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPrintDialog (X11)</Title>
+<Para>
+<Literal>QPrintDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (WS_X11)
+%If (Qt_PRINTDIALOG)
+
+class QPrintDialog : QDialog
+{
+%TypeHeaderCode
+#include <qprintdialog.h>
+%End
+
+public:
+ QPrintDialog(QPrinter *,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_3_0_0)
+ static bool getPrinterSetup(QPrinter *);
+%End
+%If (Qt_3_0_0 -)
+ static bool getPrinterSetup(QPrinter *,QWidget * = 0);
+ static void setGlobalPrintDialog(QPrintDialog *);
+%End
+
+ void setPrinter(QPrinter *,bool = 0);
+ QPrinter *printer() const;
+
+%If (Qt_2_1_0 -)
+ void addButton(QPushButton *);
+%End
+
+private:
+ QPrintDialog(const QPrintDialog &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qprinter.sip b/python/pyqt/sip/qt/qprinter.sip
new file mode 100644
index 00000000..b8bf4f9f
--- /dev/null
+++ b/python/pyqt/sip/qt/qprinter.sip
@@ -0,0 +1,256 @@
+// This is the SIP interface definition for QPrinter.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPrinter</Title>
+<Para>
+<Literal>QPrinter</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_PRINTER)
+
+class QPrinter : QPaintDevice
+{
+%TypeHeaderCode
+#include <qprinter.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ enum PrinterMode {
+ ScreenResolution,
+ PrinterResolution,
+ HighResolution,
+ Compatible
+ };
+%End
+
+%If (- Qt_3_0_0)
+ QPrinter();
+%End
+%If (Qt_3_0_0 -)
+ QPrinter(PrinterMode = ScreenResolution);
+%End
+
+ enum Orientation {
+ Portrait,
+ Landscape
+ };
+
+ enum PageSize {
+ A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7,
+ A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
+ DLE, Folio, Ledger, Tabloid,
+%If (Qt_2_3_1 -)
+ Custom,
+%End
+%If (Qt_2_00 -)
+ NPageSize
+%End
+ };
+
+ enum PageOrder {
+ FirstPageFirst,
+ LastPageFirst
+ };
+
+ enum ColorMode {
+ GrayScale,
+ Color
+ };
+
+%If (Qt_3_0_0 -)
+ enum PaperSource {
+ OnlyOne,
+ Lower,
+ Middle,
+ Manual,
+ Envelope,
+ EnvelopeManual,
+ Auto,
+ Tractor,
+ SmallFormat,
+ LargeFormat,
+ LargeCapacity,
+ Cassette,
+ FormSource
+ };
+%End
+
+%If (Qt_3_2_0 -)
+ enum PrintRange {
+ AllPages,
+ Selection,
+ PageRange
+ };
+
+ enum PrinterOption {
+ PrintToFile,
+ PrintSelection,
+ PrintPageRange
+ };
+%End
+
+%If (- Qt_2_00)
+ const char *printerName() const;
+ void setPrinterName(const char *);
+%End
+%If (Qt_2_00 -)
+ QString printerName() const;
+ virtual void setPrinterName(const QString &);
+%End
+ bool outputToFile() const;
+%If (- Qt_2_00)
+ void setOutputToFile(bool);
+ const char *outputFileName() const;
+ void setOutputFileName(const char *);
+
+ const char *printProgram() const;
+ void setPrintProgram(const char *);
+
+ const char *docName() const;
+ void setDocName(const char *);
+ const char *creator() const;
+ void setCreator(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setOutputToFile(bool);
+ QString outputFileName() const;
+ virtual void setOutputFileName(const QString &);
+
+ QString printProgram() const;
+ virtual void setPrintProgram(const QString &);
+
+ QString printerSelectionOption() const;
+ virtual void setPrinterSelectionOption(const QString &);
+
+ QString docName() const;
+ virtual void setDocName(const QString &);
+ QString creator() const;
+ virtual void setCreator(const QString &);
+%End
+
+ Orientation orientation() const;
+%If (- Qt_2_00)
+ void setOrientation(Orientation);
+%End
+%If (Qt_2_00 -)
+ virtual void setOrientation(Orientation);
+%End
+ PageSize pageSize() const;
+%If (- Qt_2_00)
+ void setPageSize(PageSize);
+
+ void setPageOrder(PageOrder);
+%End
+%If (Qt_2_00 -)
+ virtual void setPageSize(PageSize);
+
+ virtual void setPageOrder(PageOrder);
+%End
+ PageOrder pageOrder() const;
+
+%If (Qt_3_0_0 -)
+ void setResolution(int);
+ int resolution() const;
+%End
+
+%If (- Qt_2_00)
+ void setColorMode(ColorMode);
+%End
+%If (Qt_2_00 -)
+ virtual void setColorMode(ColorMode);
+%End
+ ColorMode colorMode() const;
+
+%If (Qt_2_00 -)
+ virtual void setFullPage(bool);
+ bool fullPage() const;
+ QSize margins() const;
+%End
+
+%If (Qt_3_1_0 -)
+ void setMargins(uint,uint,uint,uint);
+// void margins(uint *,uint *,uint *,uint *) const;
+%End
+
+ int fromPage() const;
+ int toPage() const;
+%If (- Qt_2_00)
+ void setFromTo(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setFromTo(int,int);
+%End
+ int minPage() const;
+ int maxPage() const;
+%If (- Qt_2_00)
+ void setMinMax(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMinMax(int,int);
+%End
+ int numCopies() const;
+%If (- Qt_2_00)
+ void setNumCopies(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setNumCopies(int);
+%End
+
+%If (Qt_3_0_0 -)
+ bool collateCopiesEnabled() const;
+ void setCollateCopiesEnabled(bool);
+
+ bool collateCopies() const;
+ void setCollateCopies(bool);
+%End
+
+%If (Qt_3_2_0 -)
+ PrintRange printRange() const;
+ void setPrintRange(PrintRange);
+%End
+
+ bool newPage();
+ bool abort();
+ bool aborted() const;
+
+ bool setup(QWidget * = 0);
+
+%If (Qt_3_0_0 -)
+ PaperSource paperSource() const;
+ virtual void setPaperSource(PaperSource);
+%End
+
+%If (Qt_3_2_0 -)
+ void setOptionEnabled(PrinterOption,bool);
+ bool isOptionEnabled(PrinterOption);
+%End
+
+private:
+ QPrinter(const QPrinter &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qprocess.sip b/python/pyqt/sip/qt/qprocess.sip
new file mode 100644
index 00000000..c02c5120
--- /dev/null
+++ b/python/pyqt/sip/qt/qprocess.sip
@@ -0,0 +1,112 @@
+// This is the SIP interface definition for QProcess.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QProcess (Qt v3+)</Title>
+<Para>
+<Literal>QProcess</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QProcess : QObject
+{
+%TypeHeaderCode
+#include <qprocess.h>
+%End
+
+public:
+ QProcess(QObject * /TransferThis/ = 0,const char * = 0);
+ QProcess(const QString &,QObject * /TransferThis/ = 0,
+ const char * = 0);
+ QProcess(const QStringList &,QObject * /TransferThis/ = 0,
+ const char * = 0);
+
+ QStringList arguments() const;
+ void clearArguments();
+ virtual void setArguments(const QStringList &);
+ virtual void addArgument(const QString &);
+ QDir workingDirectory() const;
+ virtual void setWorkingDirectory(const QDir &);
+
+ enum Communication {
+ Stdin,
+ Stdout,
+ Stderr,
+ DupStderr
+ };
+
+ void setCommunication(int);
+ int communication() const;
+
+ virtual bool start(QStringList * = 0);
+ virtual bool launch(const QString &, QStringList * = 0 );
+ virtual bool launch(const QByteArray &,QStringList * = 0 );
+
+ bool isRunning() const;
+ bool normalExit() const;
+ int exitStatus() const;
+
+ virtual QByteArray readStdout() /ReleaseGIL/;
+ virtual QByteArray readStderr() /ReleaseGIL/;
+ bool canReadLineStdout() const;
+ bool canReadLineStderr() const;
+ virtual QString readLineStdout() /ReleaseGIL/;
+ virtual QString readLineStderr() /ReleaseGIL/;
+
+%If (WS_X11 || WS_MACX || WS_QWS)
+ typedef long PID;
+%End
+
+ PID processIdentifier();
+
+ void flushStdin();
+
+signals:
+ void readyReadStdout();
+ void readyReadStderr();
+ void processExited();
+ void wroteToStdin();
+ void launchFinished();
+
+public slots:
+ void tryTerminate() const;
+ void kill() const;
+
+ virtual void writeToStdin(const QByteArray &);
+ virtual void writeToStdin(const QString &);
+ virtual void closeStdin();
+
+protected:
+ void connectNotify(const char *);
+ void disconnectNotify(const char *);
+
+private:
+%If (Qt_3_1_0 -)
+ QProcess(const QProcess &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qprogressbar.sip b/python/pyqt/sip/qt/qprogressbar.sip
new file mode 100644
index 00000000..bcf3ad23
--- /dev/null
+++ b/python/pyqt/sip/qt/qprogressbar.sip
@@ -0,0 +1,95 @@
+// This is the SIP interface definition for QProgressBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QProgressBar</Title>
+<Para>
+<Literal>QProgressBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QProgressBar : QFrame
+{
+%TypeHeaderCode
+#include <qprogressbar.h>
+%End
+
+public:
+ QProgressBar(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ QProgressBar(int,QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ int totalSteps() const;
+ int progress() const;
+%If (Qt_3_0_0 -)
+ const QString &progressString() const;
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+%If (Qt_2_00 -)
+ QSize minimumSizeHint() const;
+
+ void setCenterIndicator(bool);
+ bool centerIndicator() const;
+
+ void setIndicatorFollowsStyle(bool);
+ bool indicatorFollowsStyle() const;
+%End
+
+%If (Qt_3_0_0 -)
+ bool percentageVisible() const;
+ void setPercentageVisible(bool);
+%End
+
+ void show();
+
+public slots:
+ void reset();
+%If (- Qt_2_00)
+ void setTotalSteps(int);
+ void setProgress(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setTotalSteps(int);
+ virtual void setProgress(int);
+%End
+%If (Qt_3_1_0 -)
+ void setProgress(int,int);
+%End
+
+protected:
+ void drawContents(QPainter *);
+ virtual bool setIndicator(QString &,int,int);
+%If (Qt_2_00 - Qt_3_0_0)
+ void drawContentsMask(QPainter *);
+%End
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+
+private:
+ QProgressBar(const QProgressBar &);
+};
diff --git a/python/pyqt/sip/qt/qprogressdialog.sip b/python/pyqt/sip/qt/qprogressdialog.sip
new file mode 100644
index 00000000..49630411
--- /dev/null
+++ b/python/pyqt/sip/qt/qprogressdialog.sip
@@ -0,0 +1,194 @@
+// This is the SIP interface definition for QProgressDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QProgressDialog</Title>
+<Para>
+<Literal>QProgressDialog</Literal> is fully implemented.
+value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_PROGRESSDIALOG)
+
+%If (Qt_3_0_0 -)
+
+class QProgressDialog : QDialog
+{
+%TypeHeaderCode
+#include <qprogressdialog.h>
+%End
+
+public:
+ QProgressDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+ QProgressDialog(const QString &,const QString &,int,
+ QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+
+ void setLabel(QLabel *);
+ void setCancelButton(QPushButton *);
+ void setBar(QProgressBar *);
+
+ bool wasCancelled() const;
+%If (Qt_3_2_0 -)
+ bool wasCanceled() const;
+%End
+
+ int totalSteps() const;
+ int progress() const;
+
+ QSize sizeHint() const;
+
+ int minimumDuration() const;
+
+ QString labelText() const;
+
+ void setAutoReset(bool);
+ bool autoReset() const;
+ void setAutoClose(bool);
+ bool autoClose() const;
+
+public slots:
+ void cancel();
+ void reset();
+ void setTotalSteps(int);
+ void setProgress(int);
+%If (Qt_3_1_0 -)
+ void setProgress(int,int);
+%End
+ void setLabelText(const QString &);
+ void setCancelButtonText(const QString &);
+
+ void setMinimumDuration(int);
+
+signals:
+ void cancelled();
+%If (Qt_3_2_0 -)
+ void canceled();
+%End
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void closeEvent(QCloseEvent *);
+ void styleChange(QStyle &);
+ void showEvent(QShowEvent *);
+
+protected slots:
+ void forceShow();
+
+private:
+ QProgressDialog(const QProgressDialog &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QProgressDialog : QSemiModal
+{
+%TypeHeaderCode
+#include <qprogressdialog.h>
+%End
+
+public:
+ QProgressDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+%If (- Qt_2_00)
+ QProgressDialog(const char *,const char *,int,QWidget * /TransferThis/ = 0,
+ const char * = 0,bool = 0,WFlags = 0);
+%End
+%If (Qt_2_00 -)
+ QProgressDialog(const QString &,const QString &,int,
+ QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+%End
+
+ void setLabel(QLabel *);
+ void setCancelButton(QPushButton *);
+ void setBar(QProgressBar *);
+
+ bool wasCancelled() const;
+
+ int totalSteps() const;
+ int progress() const;
+
+ QSize sizeHint() const;
+
+ int minimumDuration() const;
+
+%If (Qt_2_1_0 -)
+ QString labelText() const;
+
+ void setAutoReset(bool);
+ bool autoReset() const;
+ void setAutoClose(bool);
+ bool autoClose() const;
+%End
+
+public slots:
+ void cancel();
+ void reset();
+ void setTotalSteps(int);
+ void setProgress(int);
+%If (- Qt_2_00)
+ void setLabelText(const char *);
+ void setCancelButtonText(const char *);
+%End
+%If (Qt_2_00 -)
+ void setLabelText(const QString &);
+ void setCancelButtonText(const QString &);
+%End
+
+ void setMinimumDuration(int);
+
+signals:
+ void cancelled();
+
+protected:
+ void resizeEvent(QResizeEvent *);
+%If (- Qt_2_00)
+ void styleChange(GUIStyle);
+%End
+%If (Qt_2_00 -)
+ void closeEvent(QCloseEvent *);
+ void styleChange(QStyle &);
+%End
+%If (Qt_2_1_0 -)
+ void showEvent(QShowEvent *);
+%End
+
+protected slots:
+%If (Qt_2_2_0 -)
+ void forceShow();
+%End
+
+private:
+ QProgressDialog(const QProgressDialog &);
+};
+
+%End
+
+%End
diff --git a/python/pyqt/sip/qt/qptrlist.sip b/python/pyqt/sip/qt/qptrlist.sip
new file mode 100644
index 00000000..c49afad8
--- /dev/null
+++ b/python/pyqt/sip/qt/qptrlist.sip
@@ -0,0 +1,111 @@
+// This is the SIP interface definition for all types based on the QPtrList
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPtrList&lt;type&gt; (Qt v2+)</Title>
+<Para>
+Types based on the <Literal>QPtrList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+template<Type>
+%MappedType QPtrList<Type>
+{
+%TypeHeaderCode
+#include <qptrlist.h>
+%End
+
+%ConvertFromTypeCode
+ Type *dw;
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+
+ for (dw = sipCpp -> first(); dw != NULL; dw = sipCpp -> next())
+ {
+ PyObject *dwobj;
+
+ if ((dwobj = sipConvertFromInstance(dw,sipClass_Type,sipTransferObj)) == NULL || PyList_SetItem(l,i,dwobj) < 0)
+ {
+ Py_XDECREF(dwobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,0))
+ return 0;
+
+ return 1;
+ }
+
+ QPtrList<Type> *qpl = new QPtrList<Type>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ // We apply the transfer to the list itself, not the elements.
+ // Note that any temporary element will never be destroyed.
+ // There is nothing that can be done about this.
+ qpl -> append(reinterpret_cast<Type *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,0,0,0,sipIsErr)));
+
+ if (*sipIsErr)
+ {
+ delete qpl;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qpl;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qpushbutton.sip b/python/pyqt/sip/qt/qpushbutton.sip
new file mode 100644
index 00000000..93e6fa07
--- /dev/null
+++ b/python/pyqt/sip/qt/qpushbutton.sip
@@ -0,0 +1,143 @@
+// This is the SIP interface definition for QPushButton.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QPushButton</Title>
+<Para>
+<Literal>QPushButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QPushButton : QButton
+{
+%TypeHeaderCode
+#include <qpushbutton.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QPushButton(QWidget * /TransferThis/ = 0,const char * = 0);
+ QPushButton(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QPushButton(QWidget * /TransferThis/,const char * = 0);
+ QPushButton(const QString &,QWidget * /TransferThis/,const char * = 0);
+%End
+%If (Qt_2_1_0 -)
+ QPushButton(const QIconSet &,const QString &,QWidget * /TransferThis/,const char * = 0);
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+ void move(int,int);
+ void move(const QPoint &);
+ void resize(int,int);
+ void resize(const QSize &);
+%If (- Qt_2_00)
+ void setGeometry(int,int,int,int);
+
+ void setGeometry(const QRect &);
+
+ void setToggleButton(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setGeometry(int,int,int,int);
+
+ virtual void setGeometry(const QRect &);
+
+ virtual void setToggleButton(bool);
+%End
+%If (Qt_3_0_0 -)
+ void setGeometry(int,int,int,int);
+
+ void setGeometry(const QRect &);
+
+ void setToggleButton(bool);
+%End
+
+ bool autoDefault() const;
+%If (- Qt_2_00)
+ void setAutoDefault(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setAutoDefault(bool);
+%End
+ bool isDefault() const;
+%If (- Qt_2_00)
+ void setDefault(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setDefault(bool);
+%End
+
+%If (- Qt_2_00)
+ void setIsMenuButton(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setIsMenuButton(bool);
+%End
+%If (- Qt_3_0_0)
+ bool isMenuButton() const;
+%End
+
+%If (Qt_2_1_0 -)
+ void setPopup(QPopupMenu *);
+ QPopupMenu *popup() const;
+
+ void setIconSet(const QIconSet &);
+ QIconSet *iconSet() const;
+%End
+
+%If (Qt_2_2_0 -)
+ void setFlat(bool);
+ bool isFlat() const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setOn(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setOn(bool);
+%End
+%If (- Qt_3_0_0)
+ void toggle();
+%End
+
+protected:
+ void drawButton(QPainter *);
+ void drawButtonLabel(QPainter *);
+ void focusInEvent(QFocusEvent *);
+%If (Qt_2_00 -)
+ void focusOutEvent(QFocusEvent *);
+ void resizeEvent(QResizeEvent *);
+ void updateMask();
+%End
+
+private:
+ QPushButton(const QPushButton &);
+};
diff --git a/python/pyqt/sip/qt/qradiobutton.sip b/python/pyqt/sip/qt/qradiobutton.sip
new file mode 100644
index 00000000..77c00db1
--- /dev/null
+++ b/python/pyqt/sip/qt/qradiobutton.sip
@@ -0,0 +1,84 @@
+// This is the SIP interface definition for QRadioButton.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QRadioButton</Title>
+<Para>
+<Literal>QRadioButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QRadioButton : QButton
+{
+%TypeHeaderCode
+#include <qradiobutton.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QRadioButton(QWidget * /TransferThis/ = 0,const char * = 0);
+ QRadioButton(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QRadioButton(QWidget * /TransferThis/,const char * = 0);
+ QRadioButton(const QString &,QWidget * /TransferThis/,const char * = 0);
+%End
+
+ bool isChecked() const;
+
+ QSize sizeHint() const;
+
+%If (- Qt_2_00)
+ void setChecked(bool);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setChecked(bool);
+ QSizePolicy sizePolicy() const;
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ virtual void setChecked(bool);
+%End
+
+protected:
+ bool hitButton(const QPoint &) const;
+ void drawButton(QPainter *);
+ void drawButtonLabel(QPainter *);
+%If (- Qt_2_00)
+ void mouseReleaseEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+%End
+%If (Qt_2_00 -)
+ void updateMask();
+
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ void focusInEvent(QFocusEvent *);
+%End
+
+private:
+ QRadioButton(const QRadioButton &);
+};
diff --git a/python/pyqt/sip/qt/qrangecontrol.sip b/python/pyqt/sip/qt/qrangecontrol.sip
new file mode 100644
index 00000000..2c1c3af6
--- /dev/null
+++ b/python/pyqt/sip/qt/qrangecontrol.sip
@@ -0,0 +1,79 @@
+// This is the SIP interface definition for QRangeControl.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QRangeControl</Title>
+<Para>
+<Literal>QRangeControl</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QRangeControl
+{
+%TypeHeaderCode
+#include <qrangecontrol.h>
+%End
+
+public:
+ QRangeControl();
+ QRangeControl(int,int,int,int,int);
+
+ int value() const;
+ void setValue(int);
+ void addPage();
+ void subtractPage();
+ void addLine();
+ void subtractLine();
+
+ int minValue() const;
+ int maxValue() const;
+ void setRange(int,int);
+%If (Qt_3_0_0 -)
+ void setMinValue(int);
+ void setMaxValue(int);
+%End
+
+ int lineStep() const;
+ int pageStep() const;
+ void setSteps(int,int);
+
+%If (Qt_2_00 -)
+ int bound(int) const;
+%End
+
+protected:
+%If (Qt_2_00 -)
+ int positionFromValue(int,int) const;
+ int valueFromPosition(int,int) const;
+%End
+ void directSetValue(int);
+ int prevValue() const;
+
+ virtual void valueChange();
+ virtual void rangeChange();
+ virtual void stepChange();
+
+private:
+ QRangeControl(const QRangeControl &);
+};
diff --git a/python/pyqt/sip/qt/qrect.sip b/python/pyqt/sip/qt/qrect.sip
new file mode 100644
index 00000000..e658baa1
--- /dev/null
+++ b/python/pyqt/sip/qt/qrect.sip
@@ -0,0 +1,209 @@
+// This is the SIP interface definition for QRect.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QRect</Title>
+<Para>
+The Python
+<Literal>&amp;</Literal>, <Literal>&amp;=</Literal>,
+<Literal>|</Literal>, <Literal>|=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>in</Literal> and
+<Literal>__nonzero__</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>coords</Function></FuncDef>
+ <ParamDef>int *<Parameter>x1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y1</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>x2</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y2</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple containing the four values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>rect</Function></FuncDef>
+ <ParamDef>int *<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>y</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>w</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>h</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple containing the four values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rBottom</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rLeft</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rRight</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rTop</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented. (Qt v2+)
+</Para>
+</Sect2>
+%End
+
+
+class QRect
+{
+%TypeHeaderCode
+#include <qrect.h>
+%End
+
+public:
+ QRect();
+ QRect(const QPoint &,const QPoint &);
+ QRect(const QPoint &,const QSize &);
+ QRect(int,int,int,int);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ QRect normalize() const;
+
+ int left() const;
+ int top() const;
+ int right() const;
+ int bottom() const;
+
+%If (Qt_2_00 -)
+// QCOORD &rLeft();
+// QCOORD &rTop();
+// QCOORD &rRight();
+// QCOORD &rBottom();
+%End
+
+ int x() const;
+ int y() const;
+ void setLeft(int);
+ void setTop(int);
+ void setRight(int);
+ void setBottom(int);
+ void setX(int);
+ void setY(int);
+
+%If (Qt_3_1_0 -)
+ void setTopLeft(const QPoint &);
+ void setBottomRight(const QPoint &);
+ void setTopRight(const QPoint &);
+ void setBottomLeft(const QPoint &);
+%End
+
+ QPoint topLeft() const;
+ QPoint bottomRight() const;
+ QPoint topRight() const;
+ QPoint bottomLeft() const;
+ QPoint center() const;
+
+ void rect(int *,int *,int *,int *) const;
+ void coords(int *,int *,int *,int *) const;
+
+%If (Qt_3_1_0 -)
+ void moveLeft(int);
+ void moveTop(int);
+ void moveRight(int);
+ void moveBottom(int);
+%End
+ void moveTopLeft(const QPoint &);
+ void moveBottomLeft(const QPoint &);
+ void moveTopRight(const QPoint &);
+ void moveBottomRight(const QPoint &);
+ void moveCenter(const QPoint &);
+ void moveBy(int,int);
+
+ void setRect(int,int,int,int);
+ void setCoords(int,int,int,int);
+%If (Qt_3_0_0 -)
+ void addCoords(int,int,int,int);
+%End
+
+ QSize size() const;
+ int width() const;
+ int height() const;
+ void setWidth(int);
+ void setHeight(int);
+ void setSize(const QSize &);
+
+ QRect operator|(const QRect &) const;
+ QRect operator&(const QRect &) const;
+ QRect &operator|=(const QRect &);
+ QRect &operator&=(const QRect &);
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = sipCpp -> isValid();
+%End
+
+ bool contains(const QPoint &,bool = 0) const;
+
+ int __contains__(const QPoint &) const;
+%MethodCode
+ sipRes = sipCpp -> contains(*a0);
+%End
+
+%If (Qt_3_1_0 -)
+ bool contains(int,int) const;
+ bool contains(int,int,bool) const;
+%End
+%If (Qt_2_2_0 - Qt_3_1_0)
+ bool contains(int,int,bool = 0) const;
+%End
+ bool contains(const QRect &,bool = 0) const;
+
+ int __contains__(const QRect &) const;
+%MethodCode
+ sipRes = sipCpp -> contains(*a0);
+%End
+
+ QRect unite(const QRect &) const;
+ QRect intersect(const QRect &) const;
+ bool intersects(const QRect &) const;
+
+ // Qt defines the remaining operators as global, rather than part of
+ // the class, but SIP doesn't support global operators.
+ bool operator==(const QRect &) const;
+ bool operator!=(const QRect &) const;
+};
diff --git a/python/pyqt/sip/qt/qregexp.sip b/python/pyqt/sip/qt/qregexp.sip
new file mode 100644
index 00000000..3d1dc403
--- /dev/null
+++ b/python/pyqt/sip/qt/qregexp.sip
@@ -0,0 +1,139 @@
+// This is the SIP interface definition for QRegExp.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QRegExp</Title>
+<Para>
+The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
+supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>match</Function></FuncDef>
+ <ParamDef>const char *<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>index</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>len</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes <Literal>str</Literal> and <Literal>index</Literal> parameters and
+returns a tuple of the <Literal>int</Literal> result and the
+<Literal>len</Literal> value. (Qt v1.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>match</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>str</Parameter></ParamDef>
+ <ParamDef>int <Parameter>index</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>len</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes <Literal>str</Literal> and <Literal>index</Literal> parameters and
+returns a tuple of the <Literal>int</Literal> result and the
+<Literal>len</Literal> value. (Qt v2+)
+</Para>
+</Sect2>
+%End
+
+
+class QRegExp
+{
+%TypeHeaderCode
+#include <qregexp.h>
+%End
+
+public:
+%If (Qt_3_1_0 -)
+ enum CaretMode {
+ CaretAtZero,
+ CaretAtOffset,
+ CaretWontMatch
+ };
+%End
+
+ QRegExp();
+%If (- Qt_2_00)
+ QRegExp(const char *,bool = 1,bool = 0);
+%End
+%If (Qt_2_00 -)
+ QRegExp(const QString &,bool = 1,bool = 0);
+%End
+ QRegExp(const QRegExp &);
+
+ bool operator==(const QRegExp &) const;
+ bool operator!=(const QRegExp &) const;
+
+ bool isEmpty() const;
+ bool isValid() const;
+%If (- Qt_2_00)
+ const char *pattern() const;
+%End
+%If (Qt_2_00 -)
+ QString pattern() const;
+%End
+%If (Qt_2_2_0 -)
+ void setPattern(const QString &);
+%End
+ bool caseSensitive() const;
+ void setCaseSensitive(bool);
+ bool wildcard() const;
+ void setWildcard(bool);
+%If (Qt_3_0_0 -)
+ bool minimal() const;
+ void setMinimal(bool);
+
+ bool exactMatch(const QString &) const;
+%End
+
+%If (- Qt_2_00)
+ int match(const char *,int = 0,int * = 0) const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ int match(const QString &,int = 0,int * = 0) const;
+%End
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+ int find(const QString &,int);
+%End
+
+%If (Qt_3_0_0 -)
+ int search(const QString &,int = 0) const;
+%If (Qt_3_1_0 -)
+ int search(const QString &,int,CaretMode) const;
+%End
+ int searchRev(const QString &,int = -1) const;
+%If (Qt_3_1_0 -)
+ int searchRev(const QString &,int,CaretMode) const;
+%End
+ int matchedLength() const;
+%If (Qt_3_1_0 -)
+ int numCaptures() const;
+%End
+ QStringList capturedTexts();
+ QString cap(int = 0);
+ int pos(int = 0);
+%End
+%If (Qt_3_1_0 -)
+ QString errorString();
+
+ static QString escape(const QString &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qregion.sip b/python/pyqt/sip/qt/qregion.sip
new file mode 100644
index 00000000..07f166bf
--- /dev/null
+++ b/python/pyqt/sip/qt/qregion.sip
@@ -0,0 +1,126 @@
+// This is the SIP interface definition for QRegion.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QRegion</Title>
+<Para>
+The Python
+<Literal>|</Literal>, <Literal>|=</Literal>,
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>&amp;</Literal>, <Literal>&amp;=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>,
+<Literal>^</Literal>, <Literal>^=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>in</Literal> and
+<Literal>__nonzero__</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QArray&lt;QRect&gt; <Function>rects</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setRects</Function></FuncDef>
+ <ParamDef>QRect *<Parameter>rects</Parameter></ParamDef>
+ <ParamDef>int <Parameter>num</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2.2+)
+</Para>
+</Sect2>
+%End
+
+
+class QRegion
+{
+%TypeHeaderCode
+#include <qregion.h>
+%End
+
+public:
+ enum RegionType
+ {
+ Rectangle,
+ Ellipse
+ };
+
+ QRegion();
+ QRegion(int,int,int,int,RegionType = Rectangle);
+ QRegion(const QRect &,RegionType = Rectangle);
+ QRegion(const QPointArray &,bool = 0);
+ QRegion(const QRegion &);
+%If (Qt_1_43 -)
+ QRegion(const QBitmap &);
+%End
+
+ bool isNull() const;
+ bool isEmpty() const;
+
+ bool contains(const QPoint &) const;
+
+ int __contains__(const QPoint &) const;
+%MethodCode
+ sipRes = sipCpp -> contains(*a0);
+%End
+
+ bool contains(const QRect &) const;
+
+ int __contains__(const QRect &) const;
+%MethodCode
+ sipRes = sipCpp -> contains(*a0);
+%End
+
+ void translate(int,int);
+
+ QRegion unite(const QRegion &) const;
+ QRegion intersect(const QRegion &) const;
+ QRegion subtract(const QRegion &) const;
+ QRegion eor(const QRegion &) const;
+
+ QRect boundingRect() const;
+// QArray<QRect> rects() const;
+%If (Qt_2_2_0 -)
+// void setRects(const QRect *,int);
+%End
+
+ const QRegion operator|(const QRegion &) const;
+ const QRegion operator+(const QRegion &) const;
+ const QRegion operator&(const QRegion &) const;
+ const QRegion operator-(const QRegion &) const;
+ const QRegion operator^(const QRegion &) const;
+ QRegion &operator|=(const QRegion &);
+ QRegion &operator+=(const QRegion &);
+ QRegion &operator&=(const QRegion &);
+ QRegion &operator-=(const QRegion &);
+ QRegion &operator^=(const QRegion &);
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = !sipCpp -> isNull();
+%End
+
+ bool operator==(const QRegion &) const;
+ bool operator!=(const QRegion &) const;
+};
diff --git a/python/pyqt/sip/qt/qscrollbar.sip b/python/pyqt/sip/qt/qscrollbar.sip
new file mode 100644
index 00000000..20b8e5d1
--- /dev/null
+++ b/python/pyqt/sip/qt/qscrollbar.sip
@@ -0,0 +1,170 @@
+// This is the SIP interface definition for QScrollBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QScrollBar</Title>
+<Para>
+<Literal>QScrollBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QScrollBar : QWidget, QRangeControl
+{
+%TypeHeaderCode
+#include <qscrollbar.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ enum Orientation {
+ Horizontal,
+ Vertical
+ };
+%End
+
+%If (- Qt_2_00)
+ QScrollBar(QWidget * /TransferThis/ = 0,const char * = 0);
+ QScrollBar(Orientation,QWidget * /TransferThis/ = 0,const char * = 0);
+ QScrollBar(int,int,int,int,int,Orientation,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QScrollBar(QWidget * /TransferThis/,const char * = 0);
+ QScrollBar(Orientation,QWidget * /TransferThis/,const char * = 0);
+ QScrollBar(int,int,int,int,int,Orientation,QWidget * /TransferThis/,
+ const char * = 0);
+%End
+
+%If (- Qt_2_00)
+ void setOrientation(Orientation);
+%End
+%If (Qt_2_00 -)
+ virtual void setOrientation(Orientation);
+%End
+ Orientation orientation() const;
+%If (- Qt_2_00)
+ void setTracking(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setTracking(bool);
+%End
+ bool tracking() const;
+ bool draggingSlider() const;
+
+%If (Qt_2_00 -)
+ virtual void setPalette(const QPalette &);
+%End
+%If (- Qt_2_00)
+ void setPalette(const QPalette &);
+%End
+%If (Qt_3_1_0 -)
+ virtual QSize sizeHint() const;
+%End
+%If (- Qt_3_1_0)
+ QSize sizeHint() const;
+%End
+%If (Qt_3_1_0 -)
+ virtual void setSizePolicy(QSizePolicy);
+%End
+%If (Qt_3_2_0 -)
+ void setSizePolicy(QSizePolicy::SizeType,QSizePolicy::SizeType,
+ bool = 0);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_2_1_0 -)
+ int minValue() const;
+ int maxValue() const;
+ void setMinValue(int);
+ void setMaxValue(int);
+ int lineStep() const;
+ int pageStep() const;
+ void setLineStep(int);
+ void setPageStep(int);
+ int value() const;
+%End
+%If (- Qt_3_0_0)
+ void setValue(int);
+%End
+
+%If (Qt_3_0_0 -)
+ int sliderStart() const;
+ QRect sliderRect() const;
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void setValue(int);
+%End
+
+signals:
+ void valueChanged(int);
+ void sliderPressed();
+ void sliderMoved(int);
+ void sliderReleased();
+ void nextLine();
+ void prevLine();
+ void nextPage();
+ void prevPage();
+
+protected:
+%If (Qt_2_00 -)
+ void wheelEvent(QWheelEvent *);
+%End
+ void keyPressEvent(QKeyEvent *);
+ void resizeEvent(QResizeEvent *);
+ void paintEvent(QPaintEvent *);
+
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+%If (Qt_3_0_0 -)
+ void contextMenuEvent(QContextMenuEvent *);
+%End
+%If (Qt_3_0_4 -)
+ void hideEvent(QHideEvent *);
+%End
+
+ void valueChange();
+ void stepChange();
+ void rangeChange();
+
+%If (- Qt_3_0_0)
+ int sliderStart() const;
+ QRect sliderRect() const;
+%End
+
+%If (- Qt_2_00)
+ void timerEvent(QTimerEvent *);
+%End
+
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+
+private:
+ QScrollBar(const QScrollBar &);
+};
diff --git a/python/pyqt/sip/qt/qscrollview.sip b/python/pyqt/sip/qt/qscrollview.sip
new file mode 100644
index 00000000..4d7161f8
--- /dev/null
+++ b/python/pyqt/sip/qt/qscrollview.sip
@@ -0,0 +1,325 @@
+// This is the SIP interface definition for QScrollView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QScrollView</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>contentsToViewport</Function></FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vx</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vy</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>vx</Literal> and <Literal>vy</Literal>
+values. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>viewportToContents</Function></FuncDef>
+ <ParamDef>int <Parameter>vx</Parameter></ParamDef>
+ <ParamDef>int <Parameter>vy</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>vx</Literal> and <Literal>vy</Literal> parameters and
+returns a tuple containing the <Literal>x</Literal> and <Literal>y</Literal>
+values. (Qt v2+)
+</Para>
+</Sect2>
+%End
+
+
+class QScrollView : QFrame
+{
+%TypeHeaderCode
+#include <qscrollview.h>
+%End
+
+public:
+ QScrollView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ enum ResizePolicy {
+ Default,
+ Manual,
+ AutoOne,
+%If (Qt_2_3_0 -)
+ AutoOneFit,
+%End
+ };
+
+ virtual void setResizePolicy(ResizePolicy);
+ ResizePolicy resizePolicy() const;
+
+%If (Qt_2_1_0 -)
+ void styleChange(QStyle &);
+%End
+ // The child was reparented when it was added, and it stays that way,
+ // so we don't transfer it back here.
+ void removeChild(QWidget *);
+%If (- Qt_2_00)
+ void addChild(QWidget * /Transfer/);
+ virtual void addChild(QWidget * /Transfer/,int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void addChild(QWidget * /Transfer/,int = 0,int = 0);
+%End
+ virtual void moveChild(QWidget *,int,int);
+ int childX(QWidget *);
+ int childY(QWidget *);
+%If (- Qt_3_0_0)
+ bool childIsVisible(QWidget *);
+ void showChild(QWidget *,bool = 1);
+%End
+
+ enum ScrollBarMode {
+ Auto,
+ AlwaysOff,
+ AlwaysOn
+ };
+
+ ScrollBarMode vScrollBarMode() const;
+ virtual void setVScrollBarMode(ScrollBarMode);
+
+ ScrollBarMode hScrollBarMode() const;
+ virtual void setHScrollBarMode(ScrollBarMode);
+
+ QWidget *cornerWidget() const;
+ virtual void setCornerWidget(QWidget * /Transfer/);
+
+%If (- Qt_2_00)
+ QScrollBar *horizontalScrollBar();
+ QScrollBar *verticalScrollBar();
+ QWidget *viewport();
+%End
+%If (Qt_2_00 -)
+ QScrollBar *horizontalScrollBar() const;
+ QScrollBar *verticalScrollBar() const;
+ QWidget *viewport() const;
+ QWidget *clipper() const;
+
+ int visibleWidth() const;
+ int visibleHeight() const;
+%End
+
+ int contentsWidth() const;
+ int contentsHeight() const;
+ int contentsX() const;
+ int contentsY() const;
+
+ void resize(int,int);
+ void resize(const QSize &);
+ void show();
+
+%If (Qt_2_00 -)
+ void updateContents(int,int,int,int);
+%End
+%If (Qt_2_1_0 -)
+ void updateContents(const QRect &);
+%End
+%If (Qt_3_0_0 -)
+ void updateContents();
+%End
+%If (Qt_2_00 -)
+ void repaintContents(int,int,int,int,bool = 1);
+%End
+%If (Qt_2_1_0 -)
+ void repaintContents(const QRect &,bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ void repaintContents(bool = 1);
+%End
+
+%If (Qt_2_00 -)
+ // Note that this wasn't actually const until Qt v3.0.0.
+ void contentsToViewport(int,int,int &,int &) const;
+
+ // Note that this wasn't actually const until Qt v3.0.0.
+ void viewportToContents(int,int,int &,int &) const;
+
+%If (- Qt_3_0_0)
+ QPoint contentsToViewport(const QPoint &);
+ QPoint viewportToContents(const QPoint &);
+%End
+%If (Qt_3_0_0 -)
+ QPoint contentsToViewport(const QPoint &) const;
+ QPoint viewportToContents(const QPoint &) const;
+%End
+ void enableClipper(bool);
+
+%If (Qt_2_2_0 -)
+ void setStaticBackground(bool);
+ bool hasStaticBackground() const;
+%End
+
+ QSize viewportSize(int,int) const;
+%If (Qt_2_1_0 -)
+ QSize sizeHint() const;
+%End
+%If (- Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+ QSize minimumSizeHint() const;
+
+ void removeChild(QObject * /TransferBack/);
+%End
+
+%If (Qt_3_1_0 -)
+ bool isHorizontalSliderPressed();
+ bool isVerticalSliderPressed();
+%End
+
+%If (Qt_DRAGANDDROP)
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setDragAutoScroll(bool);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setDragAutoScroll(bool);
+%End
+%If (Qt_2_1_0 -)
+ bool dragAutoScroll() const;
+%End
+%End
+
+signals:
+ void contentsMoving(int,int);
+%If (Qt_3_1_0 -)
+ void horizontalSliderPressed();
+ void horizontalSliderReleased();
+ void verticalSliderPressed();
+ void verticalSliderReleased();
+%End
+
+public slots:
+ virtual void resizeContents(int,int);
+ void scrollBy(int,int);
+%If (- Qt_2_00)
+ void setContentsPos(int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setContentsPos(int,int);
+%End
+ void ensureVisible(int,int);
+ void ensureVisible(int,int,int,int);
+ void center(int,int);
+ void center(int,int,float,float);
+
+ void updateScrollBars();
+%If (Qt_2_00 -)
+ void setEnabled(bool);
+%End
+
+protected:
+%If (Qt_2_00 -)
+ virtual void drawContents(QPainter *,int,int,int,int);
+%End
+ virtual void drawContentsOffset(QPainter *,int,int,int,int,int,int);
+
+%If (Qt_2_00 -)
+ virtual void contentsMousePressEvent(QMouseEvent *);
+ virtual void contentsMouseReleaseEvent(QMouseEvent *);
+ virtual void contentsMouseDoubleClickEvent(QMouseEvent *);
+ virtual void contentsMouseMoveEvent(QMouseEvent *);
+%If (Qt_DRAGANDDROP)
+ virtual void contentsDragEnterEvent(QDragEnterEvent *);
+ virtual void contentsDragMoveEvent(QDragMoveEvent *);
+ virtual void contentsDragLeaveEvent(QDragLeaveEvent *);
+ virtual void contentsDropEvent(QDropEvent *);
+%End
+ virtual void contentsWheelEvent(QWheelEvent *);
+%End
+%If (Qt_3_0_0 -)
+ virtual void contentsContextMenuEvent(QContextMenuEvent *);
+%End
+
+ virtual void viewportPaintEvent(QPaintEvent *);
+%If (Qt_2_00 -)
+ virtual void viewportResizeEvent(QResizeEvent *);
+%End
+ virtual void viewportMousePressEvent(QMouseEvent *);
+ virtual void viewportMouseReleaseEvent(QMouseEvent *);
+ virtual void viewportMouseDoubleClickEvent(QMouseEvent *);
+ virtual void viewportMouseMoveEvent(QMouseEvent *);
+%If (Qt_2_00 -)
+%If (Qt_DRAGANDDROP)
+ virtual void viewportDragEnterEvent(QDragEnterEvent *);
+ virtual void viewportDragMoveEvent(QDragMoveEvent *);
+ virtual void viewportDragLeaveEvent(QDragLeaveEvent *);
+ virtual void viewportDropEvent(QDropEvent *);
+%End
+ virtual void viewportWheelEvent(QWheelEvent *);
+%End
+%If (Qt_3_0_0 -)
+ virtual void viewportContextMenuEvent(QContextMenuEvent *);
+%End
+
+ void frameChanged();
+
+%If (- Qt_2_00)
+ void setMargins(int,int,int,int);
+%End
+%If (Qt_2_00 -)
+ virtual void setMargins(int,int,int,int);
+%End
+ int leftMargin() const;
+ int topMargin() const;
+ int rightMargin() const;
+ int bottomMargin() const;
+
+ bool focusNextPrevChild(bool);
+
+%If (Qt_2_00 -)
+ virtual void setHBarGeometry(QScrollBar &,int,int,int,int);
+ virtual void setVBarGeometry(QScrollBar &,int,int,int,int);
+%End
+
+ void resizeEvent(QResizeEvent *);
+%If (Qt_3_0_0 -)
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+%End
+%If (Qt_2_00 -)
+ void wheelEvent(QWheelEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void contextMenuEvent(QContextMenuEvent *);
+%End
+ bool eventFilter(QObject *,QEvent *);
+
+%If (Qt_3_1_0 -)
+ void setCachedSizeHint(const QSize &) const;
+ QSize cachedSizeHint() const;
+ void fontChange(const QFont &);
+%End
+
+private:
+ QScrollView(const QScrollView &);
+
+public:
+%If (Qt_3_1_0 -)
+ void disableSizeHintCaching();
+%End
+};
diff --git a/python/pyqt/sip/qt/qsemaphore.sip b/python/pyqt/sip/qt/qsemaphore.sip
new file mode 100644
index 00000000..5e1ba408
--- /dev/null
+++ b/python/pyqt/sip/qt/qsemaphore.sip
@@ -0,0 +1,112 @@
+// This is the SIP interface definition for QSemaphore.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSemaphore (Qt v2.2+)</Title>
+<Para>
+<Literal>QSemaphore</Literal> is fully implemented. The <Literal>+=</Literal>
+and <Literal>-=</Literal> operators have also been implemented, but require
+Python v2.0 or later.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_THREAD_SUPPORT)
+
+%If (Qt_3_0_0 -)
+
+class QSemaphore
+{
+%TypeHeaderCode
+#include <qsemaphore.h>
+%End
+
+public:
+ QSemaphore(int);
+
+ int available() const;
+ int total() const;
+
+ QSemaphore &operator+=(int);
+%MethodCode
+ // Some versions of Qt v3 under Windows have a bug where the +=
+ // operator doesn't work properly (but ++ does). This way we
+ // make sure that the most common value of n (ie. 1) works
+ // properly with the buggy version.
+
+ Py_BEGIN_ALLOW_THREADS
+ if (a0 == 1)
+ (*sipCpp)++;
+ else
+ (*sipCpp) += a0;
+ Py_END_ALLOW_THREADS
+%End
+
+ QSemaphore &operator-=(int);
+%MethodCode
+ // Some versions of Qt v3 under Windows have a bug where the -=
+ // operator doesn't work properly (but -- does). This way we
+ // make sure that the most common value of n (ie. 1) works
+ // properly with the buggy version.
+
+ Py_BEGIN_ALLOW_THREADS
+ if (a0 == 1)
+ (*sipCpp)--;
+ else
+ (*sipCpp) -= a0;
+ Py_END_ALLOW_THREADS
+%End
+
+ bool tryAccess(int);
+
+private:
+ QSemaphore(const QSemaphore &);
+};
+
+%End
+
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+
+class QSemaphore : Qt
+{
+%TypeHeaderCode
+#include <qthread.h>
+%End
+
+public:
+ QSemaphore(int);
+
+ int available() const;
+ int total() const;
+
+ QSemaphore &operator+=(int);
+ QSemaphore &operator-=(int);
+
+private:
+ QSemaphore(const QSemaphore &);
+};
+
+%End
+
+%End
diff --git a/python/pyqt/sip/qt/qsemimodal.sip b/python/pyqt/sip/qt/qsemimodal.sip
new file mode 100644
index 00000000..0efc1c83
--- /dev/null
+++ b/python/pyqt/sip/qt/qsemimodal.sip
@@ -0,0 +1,63 @@
+// This is the SIP interface definition for QSemiModal.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSemiModal (Qt v1, v2)</Title>
+<Para>
+<Literal>QSemiModal</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_SEMIMODAL)
+%If (- Qt_3_0_0)
+
+class QSemiModal : QWidget
+{
+%TypeHeaderCode
+#include <qsemimodal.h>
+%End
+
+public:
+ QSemiModal(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,WFlags = 0);
+
+ void show();
+ void move(int,int);
+ void move(const QPoint &);
+ void resize(int,int);
+ void resize(const QSize &);
+%If (- Qt_2_00)
+ void setGeometry(int,int,int,int);
+ void setGeometry(const QRect &);
+%End
+%If (Qt_2_00 -)
+ virtual void setGeometry(int,int,int,int);
+ virtual void setGeometry(const QRect &);
+%End
+
+private:
+ QSemiModal(const QSemiModal &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qsessionmanager.sip b/python/pyqt/sip/qt/qsessionmanager.sip
new file mode 100644
index 00000000..92ff03cf
--- /dev/null
+++ b/python/pyqt/sip/qt/qsessionmanager.sip
@@ -0,0 +1,89 @@
+// This is the SIP interface definition for QSessionManager.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSessionManager (Qt v2+)</Title>
+<Para>
+<Literal>QSessionManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QSessionManager : QObject
+{
+%TypeHeaderCode
+#include <qsessionmanager.h>
+%End
+
+public:
+ QString sessionId() const;
+%If (Qt_3_1_0 -)
+ QString sessionKey() const;
+%End
+
+ bool allowsInteraction();
+ bool allowsErrorInteraction();
+ void release();
+
+ void cancel();
+
+ enum RestartHint {
+ RestartIfRunning,
+ RestartAnyway,
+ RestartImmediately,
+ RestartNever
+ };
+
+ void setRestartHint(RestartHint);
+ RestartHint restartHint() const;
+
+ void setRestartCommand(const QStringList &);
+ QStringList restartCommand() const;
+ void setDiscardCommand(const QStringList &);
+ QStringList discardCommand() const;
+
+%If (- Qt_3_0_0)
+ void setProperty(const QString &,const QString &);
+ void setProperty(const QString &,const QStringList &);
+%End
+%If (Qt_3_0_0 -)
+ void setManagerProperty(const QString &,const QString &);
+ void setManagerProperty(const QString &,const QStringList &);
+%End
+
+ bool isPhase2() const;
+ void requestPhase2();
+
+private:
+%If (Qt_3_1_0 -)
+ QSessionManager(QApplication * /TransferThis/,QString &,QString &);
+%End
+%If (- Qt_3_1_0)
+ QSessionManager(QApplication * /TransferThis/,QString &);
+%End
+ ~QSessionManager();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsettings.sip b/python/pyqt/sip/qt/qsettings.sip
new file mode 100644
index 00000000..122593e4
--- /dev/null
+++ b/python/pyqt/sip/qt/qsettings.sip
@@ -0,0 +1,177 @@
+// This is the SIP interface definition for QSettings.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSettings (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>readBoolEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>bool</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>double <Function>readDoubleEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>double <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>double</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QString <Function>readEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>const QString &amp;<Parameter>def</Parameter> = QString::null</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QString</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QStringList <Function>readListEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QStringList</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>QStringList <Function>readListEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>const QChar &amp;<Parameter>separator</Parameter></ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>QStringList</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>int <Function>readNumEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>int <Parameter>def</Parameter> = 0</ParamDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>ok</Literal> is not passed and the returned value is a tuple of
+the <Literal>int</Literal> result and the <Literal>ok</Literal> flag.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>writeEntry</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>key</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>value</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSettings
+{
+%TypeHeaderCode
+#include <qsettings.h>
+%End
+
+public:
+%If (Qt_3_1_0 -)
+ enum Format {
+ Native,
+ Ini
+ };
+%End
+
+ enum System {
+ Unix,
+ Windows,
+ Mac
+ };
+
+%If (Qt_3_1_0 -)
+ enum Scope {
+ User,
+ Global
+ };
+%End
+
+ QSettings();
+%If (Qt_3_1_0 -)
+ QSettings(Format);
+%End
+
+// bool writeEntry(const QString &,bool);
+ bool writeEntry(const QString &,int /Constrained/);
+ bool writeEntry(const QString &,double);
+// bool writeEntry(const QString &,const char *);
+ bool writeEntry(const QString &,const QString &);
+ bool writeEntry(const QString &,const QStringList &);
+ bool writeEntry(const QString &,const QStringList &,const QChar &);
+
+ QStringList entryList(const QString &) const;
+ QStringList subkeyList(const QString &) const;
+
+ QStringList readListEntry(const QString &,bool * = 0);
+ QStringList readListEntry(const QString &,const QChar &,bool * = 0);
+ QString readEntry(const QString &,const QString & = QString::null,
+ bool * = 0);
+ int readNumEntry(const QString &,int = 0,bool * = 0);
+ double readDoubleEntry(const QString &,double = 0,bool * = 0);
+ bool readBoolEntry(const QString &,bool = 0,bool * = 0);
+
+ bool removeEntry(const QString &);
+
+ void insertSearchPath(System,const QString &);
+ void removeSearchPath(System,const QString &);
+
+%If (Qt_3_1_0 -)
+ void setPath(const QString &,const QString &,Scope = Global);
+
+ void beginGroup(const QString &);
+ void endGroup();
+ void resetGroup();
+ QString group() const;
+%End
+
+%If (Qt_3_2_0 -)
+ bool sync();
+%End
+
+private:
+ QSettings(const QSettings &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsgistyle.sip b/python/pyqt/sip/qt/qsgistyle.sip
new file mode 100644
index 00000000..c2563ea4
--- /dev/null
+++ b/python/pyqt/sip/qt/qsgistyle.sip
@@ -0,0 +1,157 @@
+// This is the SIP interface definition for QSGIStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSGIStyle (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_STYLE_SGI)
+%If (Qt_2_2_0 -)
+
+class QSGIStyle : QMotifStyle
+{
+%TypeHeaderCode
+#include <qsgistyle.h>
+%End
+
+public:
+ QSGIStyle(bool = 0);
+
+ void polish(QWidget *);
+ void unPolish(QWidget *);
+ void polish(QApplication *);
+ void unPolish(QApplication *);
+
+%If (- Qt_3_0_0)
+ void polish(QPalette &);
+
+ int defaultFrameWidth() const;
+
+ void drawPanel(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ int = 1,const QBrush * = 0);
+ void drawSeparator(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 1,int = 1,int = 0);
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawPushButton(QPushButton *,QPainter *);
+ void drawArrow(QPainter *,ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0);
+
+ QSize indicatorSize() const;
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,int,
+ bool = 0,bool = 1);
+ void drawCheckMark(QPainter *,int,int,int,int,const QColorGroup &,
+ bool,bool);
+ void drawIndicatorMask(QPainter *,int,int,int,int,int);
+
+ QSize exclusiveIndicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+ void drawExclusiveIndicatorMask(QPainter *,int,int,int,int,bool);
+
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,uint);
+
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderMask(QPainter *,int,int,int,int,Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+ void drawSliderGrooveMask(QPainter *,int,int,int,int,QCOORD,
+ Orientation);
+
+ void drawTab(QPainter *,const QTabBar *,QTab *,bool);
+ void drawTabMask(QPainter *,const QTabBar *,QTab *,bool);
+
+ int splitterWidth() const;
+ void drawSplitter(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation);
+
+ int popupMenuItemHeight(bool,QMenuItem *,const QFontMetrics &);
+ void drawPopupPanel(QPainter *,int,int,int,int,const QColorGroup &,
+ int = 2,const QBrush * = 0);
+ void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool,bool,int,int,int,int);
+ void drawMenuBarItem(QPainter *,int,int,int,int,QMenuItem *,
+ QColorGroup &,bool,bool);
+%End
+%If (Qt_3_0_0 -)
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ QSize sizeFromContents(ContentsType,const QWidget *,const QSize &,
+ const QStyleOption & = QStyleOption()) const;
+
+ QRect subRect(SubRect,const QWidget *) const;
+
+ QRect querySubControlMetrics(ComplexControl,const QWidget *,
+ SubControl,
+ const QStyleOption & = QStyleOption()) const;
+%End
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+
+private:
+ QSGIStyle(const QSGIStyle &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qsignalmapper.sip b/python/pyqt/sip/qt/qsignalmapper.sip
new file mode 100644
index 00000000..d5877239
--- /dev/null
+++ b/python/pyqt/sip/qt/qsignalmapper.sip
@@ -0,0 +1,51 @@
+// This is the SIP interface definition for QSignalMapper
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSignalMapper</Title>
+<Para>
+<Literal>QSignalMapper</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QSignalMapper : QObject
+{
+%TypeHeaderCode
+#include <qsignalmapper.h>
+%End
+
+public:
+ QSignalMapper(QObject * /TransferThis/,const char * = 0);
+
+ virtual void setMapping(const QObject *,int);
+ virtual void setMapping(const QObject *,const QString &);
+ void removeMappings(const QObject *);
+
+signals:
+ void mapped(int);
+ void mapped(const QString &);
+
+public slots:
+ void map();
+};
diff --git a/python/pyqt/sip/qt/qsimplerichtext.sip b/python/pyqt/sip/qt/qsimplerichtext.sip
new file mode 100644
index 00000000..7b189c33
--- /dev/null
+++ b/python/pyqt/sip/qt/qsimplerichtext.sip
@@ -0,0 +1,91 @@
+// This is the SIP interface definition for QSimpleRichText.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSimpleRichText (Qt v2+)</Title>
+<Para>
+<Literal>QSimpleRichText</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QSimpleRichText
+{
+%TypeHeaderCode
+#include <qsimplerichtext.h>
+%End
+
+public:
+ QSimpleRichText(const QString &,const QFont &,
+ const QString & = QString::null,
+ const QStyleSheet * = 0);
+%If (Qt_2_1_0 -)
+ QSimpleRichText(const QString &,const QFont &,const QString &,
+ const QStyleSheet *,const QMimeSourceFactory *,
+ int = -1,const QColor & = Qt::blue,bool = 1);
+%End
+
+%If (Qt_2_1_0 -)
+ void setWidth(int);
+%End
+ void setWidth(QPainter *,int);
+%If (Qt_3_0_0 -)
+ void setDefaultFont(const QFont &);
+%End
+ int width() const;
+ int widthUsed() const;
+ int height() const;
+%If (Qt_2_1_0 -)
+ void adjustSize();
+%End
+
+%If (- Qt_3_0_0)
+ void draw(QPainter *,int,int,const QRegion &,const QPalette &,
+ const QBrush * = 0) const;
+ void draw(QPainter *,int,int,const QRegion &,const QColorGroup &,
+ const QBrush * = 0) const;
+%End
+%If (Qt_3_0_0 -)
+ void draw(QPainter *,int,int,const QRect &,const QColorGroup &,
+ const QBrush * = 0) const;
+%End
+
+ QString context() const;
+%If (- Qt_3_0_0)
+ QString anchor(QPainter *,const QPoint &);
+%End
+%If (Qt_2_1_0 -)
+ QString anchorAt(const QPoint &) const;
+
+ bool inText(const QPoint &) const;
+%End
+
+private:
+%If (Qt_3_0_0 -)
+ QSimpleRichText(const QSimpleRichText &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsize.sip b/python/pyqt/sip/qt/qsize.sip
new file mode 100644
index 00000000..e85d61dc
--- /dev/null
+++ b/python/pyqt/sip/qt/qsize.sip
@@ -0,0 +1,114 @@
+// This is the SIP interface definition for QSize.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSize</Title>
+<Para>
+The Python
+<Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>-</Literal>, <Literal>-=</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>,
+<Literal>/</Literal>, <Literal>/=</Literal>,
+<Literal>==</Literal>, <Literal>!=</Literal> and <Literal>__nonzero__</Literal>
+operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rheight</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCOORD &amp;<Function>rwidth</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QSize
+{
+%TypeHeaderCode
+#include <qsize.h>
+%End
+
+public:
+%If (Qt_3_1_0 -)
+ enum ScaleMode {
+ ScaleFree,
+ ScaleMin,
+ ScaleMax
+ };
+%End
+
+ QSize();
+ QSize(int,int);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+
+ int width() const;
+ int height() const;
+ void setWidth(int);
+ void setHeight(int);
+ void transpose();
+
+%If (Qt_3_1_0 -)
+ void scale(int,int,ScaleMode);
+ void scale(const QSize &,ScaleMode);
+%End
+
+ QSize expandedTo(const QSize &) const;
+ QSize boundedTo(const QSize &) const;
+// QCOORD &rwidth();
+// QCOORD &rheight();
+
+ QSize &operator+=(const QSize &);
+ QSize &operator-=(const QSize &);
+ QSize &operator*=(int /Constrained/);
+ QSize &operator*=(double);
+ QSize &operator/=(int /Constrained/);
+ QSize &operator/=(double);
+
+ int __nonzero__() const;
+%MethodCode
+ sipRes = sipCpp -> isValid();
+%End
+
+ // Qt defines the remaining operators as global, rather than part of
+ // the class, but SIP doesn't support global operators.
+ bool operator==(const QSize &) const;
+ bool operator!=(const QSize &) const;
+ const QSize operator+(const QSize &) const;
+ const QSize operator-(const QSize &) const;
+ const QSize operator*(int /Constrained/) const;
+ const QSize operator*(double) const;
+ const QSize operator/(int /Constrained/) const;
+ const QSize operator/(double) const;
+};
diff --git a/python/pyqt/sip/qt/qsizegrip.sip b/python/pyqt/sip/qt/qsizegrip.sip
new file mode 100644
index 00000000..af21e943
--- /dev/null
+++ b/python/pyqt/sip/qt/qsizegrip.sip
@@ -0,0 +1,60 @@
+// This is the SIP interface definition for QSizeGrip.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSizeGrip (Qt v2+)</Title>
+<Para>
+<Literal>QSizeGrip</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+%If (Qt_SIZEGRIP)
+
+class QSizeGrip : QWidget
+{
+%TypeHeaderCode
+#include <qsizegrip.h>
+%End
+
+public:
+ QSizeGrip(QWidget * /TransferThis/,const char * = 0);
+
+ QSize sizeHint() const;
+%If (- Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+
+%If (Qt_3_0_0 -)
+ bool eventFilter(QObject *,QEvent *);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qsizepolicy.sip b/python/pyqt/sip/qt/qsizepolicy.sip
new file mode 100644
index 00000000..c26b54af
--- /dev/null
+++ b/python/pyqt/sip/qt/qsizepolicy.sip
@@ -0,0 +1,103 @@
+// This is the SIP interface definition for QSizePolicy.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSizePolicy (Qt v2+)</Title>
+<Para>
+<Literal>QSizePolicy</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QSizePolicy
+{
+%TypeHeaderCode
+#include <qsizepolicy.h>
+%End
+
+public:
+ enum SizeType
+ {
+ Fixed,
+ Minimum,
+ Maximum,
+ Preferred,
+ MinimumExpanding,
+ Expanding,
+%If (Qt_3_0_0 -)
+ Ignored
+%End
+ };
+
+ enum ExpandData
+ {
+ NoDirection,
+%If (Qt_3_0_0 -)
+ Horizontally,
+ Vertically,
+%End
+%If (- Qt_3_0_0)
+ Horizontal,
+ Vertical,
+%End
+ BothDirections
+ };
+
+ QSizePolicy();
+ QSizePolicy(SizeType,SizeType,bool = 0);
+%If (Qt_3_0_0 -)
+ // Note that Qt defines the 2nd and 3rd parameters as uchar, but it's
+ // really using them as numbers, not characters.
+ QSizePolicy(SizeType,SizeType,uint,uint,bool = 0);
+%End
+
+ SizeType horData() const;
+ SizeType verData() const;
+
+ bool mayShrinkHorizontally() const;
+ bool mayShrinkVertically() const;
+ bool mayGrowHorizontally() const;
+ bool mayGrowVertically() const;
+
+ ExpandData expanding() const;
+
+ void setHorData(SizeType);
+ void setVerData(SizeType);
+
+ void setHeightForWidth(bool);
+ bool hasHeightForWidth() const;
+
+%If (Qt_3_0_0 -)
+ uint horStretch() const;
+ uint verStretch() const;
+ void setHorStretch(uint);
+ void setVerStretch(uint);
+%End
+%If (Qt_3_1_0 -)
+ void transpose();
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qslider.sip b/python/pyqt/sip/qt/qslider.sip
new file mode 100644
index 00000000..9560216c
--- /dev/null
+++ b/python/pyqt/sip/qt/qslider.sip
@@ -0,0 +1,187 @@
+// This is the SIP interface definition for QSlider.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSlider</Title>
+<Para>
+<Literal>QSlider</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QSlider : QWidget, QRangeControl
+{
+%TypeHeaderCode
+#include <qslider.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ enum Orientation {
+ Horizontal,
+ Vertical
+ };
+%End
+
+ enum TickSetting {
+ NoMarks = 0,
+ Above = 1,
+ Left = Above,
+ Below = 2,
+ Right = Below,
+ Both = 3
+ };
+
+%If (- Qt_2_00)
+ QSlider(QWidget * /TransferThis/ = 0,const char * = 0);
+ QSlider(Orientation,QWidget * /TransferThis/ = 0,const char * = 0);
+ QSlider(int,int,int,int,Orientation,QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QSlider(QWidget * /TransferThis/,const char * = 0);
+ QSlider(Orientation,QWidget * /TransferThis/,const char * = 0);
+ QSlider(int,int,int,int,Orientation,QWidget * /TransferThis/,const char * = 0);
+%End
+
+%If (- Qt_2_00)
+ void setOrientation(Orientation);
+%End
+%If (Qt_2_00 -)
+ virtual void setOrientation(Orientation);
+%End
+ Orientation orientation() const;
+%If (- Qt_2_00)
+ void setTracking(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setTracking(bool);
+%End
+ bool tracking() const;
+%If (- Qt_2_00)
+ void setPalette(const QPalette &);
+%End
+%If (Qt_2_00 -)
+ virtual void setPalette(const QPalette &);
+%End
+
+%If (Qt_3_0_0 -)
+ int sliderStart() const;
+%End
+ QRect sliderRect() const;
+ QSize sizeHint() const;
+%If (Qt_3_1_0 -)
+ void setSizePolicy(QSizePolicy);
+%End
+%If (Qt_3_2_0 -)
+ void setSizePolicy(QSizePolicy::SizeType,QSizePolicy::SizeType,
+ bool = 0);
+%End
+%If (Qt_2_00 -)
+ QSizePolicy sizePolicy() const;
+ QSize minimumSizeHint() const;
+%End
+
+ virtual void setTickmarks(TickSetting);
+ TickSetting tickmarks() const;
+
+ virtual void setTickInterval(int);
+ int tickInterval() const;
+
+%If (Qt_2_1_0 -)
+ int minValue() const;
+ int maxValue() const;
+ void setMinValue(int);
+ void setMaxValue(int);
+ int lineStep() const;
+ int pageStep() const;
+ void setLineStep(int);
+ void setPageStep(int);
+ int value() const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setValue(int);
+%End
+%If (Qt_2_00 -)
+ virtual void setValue(int);
+%End
+ void addStep();
+ void subtractStep();
+%If (Qt_3_1_0 -)
+ void addLine();
+ void subtractLine();
+%End
+
+signals:
+ void valueChanged(int);
+ void sliderPressed();
+ void sliderMoved(int);
+ void sliderReleased();
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void paintEvent(QPaintEvent *);
+
+ void keyPressEvent(QKeyEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+%If (Qt_2_00 -)
+ void wheelEvent(QWheelEvent *);
+%End
+ void focusInEvent(QFocusEvent *);
+%If (Qt_2_00 -)
+ void focusOutEvent(QFocusEvent *);
+%End
+
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+
+ void valueChange();
+ void rangeChange();
+
+%If (- Qt_3_0_0)
+ void drawWinGroove(QPainter *,QCOORD);
+ void drawTicks(QPainter *,int,int,int = 1) const;
+ virtual int thickness() const;
+%End
+
+%If (- Qt_2_00)
+ virtual void paintSlider(QPainter *,const QRect &);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ void updateMask();
+ virtual void paintSlider(QPainter *,const QColorGroup &,const QRect &);
+ void drawTicks(QPainter *,const QColorGroup &,int,int,int = 1) const;
+%End
+
+private:
+%If (Qt_2_00 -)
+ int positionFromValue(int) const;
+ int valueFromPosition(int) const;
+%End
+
+ QSlider(const QSlider &);
+};
diff --git a/python/pyqt/sip/qt/qsocketnotifier.sip b/python/pyqt/sip/qt/qsocketnotifier.sip
new file mode 100644
index 00000000..1f1527a7
--- /dev/null
+++ b/python/pyqt/sip/qt/qsocketnotifier.sip
@@ -0,0 +1,66 @@
+// This is the SIP interface definition for QSocketNotifier.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSocketNotifier</Title>
+<Para>
+<Literal>QSocketNotifier</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QSocketNotifier : QObject
+{
+%TypeHeaderCode
+#include <qsocketnotifier.h>
+%End
+
+public:
+ enum Type {
+ Read,
+ Write,
+ Exception
+ };
+
+ QSocketNotifier(int,Type,QObject * /TransferThis/ = 0,const char * = 0);
+
+ int socket() const;
+ Type type() const;
+
+ bool isEnabled() const;
+%If (- Qt_2_00)
+ void setEnabled(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setEnabled(bool);
+%End
+
+signals:
+ void activated(int);
+
+protected:
+ bool event(QEvent *);
+
+private:
+ QSocketNotifier(const QSocketNotifier &);
+};
diff --git a/python/pyqt/sip/qt/qsound.sip b/python/pyqt/sip/qt/qsound.sip
new file mode 100644
index 00000000..8cdbb1b3
--- /dev/null
+++ b/python/pyqt/sip/qt/qsound.sip
@@ -0,0 +1,69 @@
+// This is the SIP interface definition for QSound.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSound (Qt v2.2+)</Title>
+<Para>
+<Literal>QSound</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_SOUND)
+%If (Qt_2_2_0 -)
+
+class QSound : QObject
+{
+%TypeHeaderCode
+#include <qsound.h>
+%End
+
+public:
+ QSound(const QString &,QObject * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_3_0_0)
+ static bool available();
+%End
+%If (Qt_3_0_0 -)
+ static bool isAvailable();
+%End
+ static void play(const QString &);
+
+%If (Qt_3_0_0 -)
+ int loops() const;
+ int loopsRemaining() const;
+ void setLoops(int);
+ QString fileName() const;
+
+ bool isFinished() const;
+%End
+
+public slots:
+ void play();
+%If (Qt_3_0_0 -)
+ void stop();
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qspinbox.sip b/python/pyqt/sip/qt/qspinbox.sip
new file mode 100644
index 00000000..fad96216
--- /dev/null
+++ b/python/pyqt/sip/qt/qspinbox.sip
@@ -0,0 +1,268 @@
+// This is the SIP interface definition for QSpinBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSpinBox</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>mapTextToValue</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the modified
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSpinBox : QWidget, QRangeControl
+{
+%TypeHeaderCode
+#include <qspinbox.h>
+%End
+
+public:
+ QSpinBox(QWidget * /TransferThis/ = 0,const char * = 0);
+ QSpinBox(int,int,int = 1,QWidget * /TransferThis/ = 0,const char * = 0);
+
+ QString text() const;
+
+ virtual QString prefix() const;
+ virtual QString suffix() const;
+ virtual QString cleanText() const;
+
+ virtual void setSpecialValueText(const QString &);
+ QString specialValueText() const;
+
+ virtual void setWrapping(bool);
+ bool wrapping() const;
+
+ enum ButtonSymbols {
+ UpDownArrows,
+ PlusMinus
+ };
+
+ virtual void setButtonSymbols(ButtonSymbols);
+ ButtonSymbols buttonSymbols() const;
+
+ virtual void setValidator(const QValidator *);
+ const QValidator *validator() const;
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ int minValue() const;
+ int maxValue() const;
+ void setMinValue(int);
+ void setMaxValue(int);
+ int lineStep() const;
+ void setLineStep(int);
+ int value() const;
+
+ QRect upRect() const;
+ QRect downRect() const;
+
+public slots:
+ virtual void setValue(int);
+ virtual void setPrefix(const QString &);
+ virtual void setSuffix(const QString &);
+ virtual void stepUp();
+ virtual void stepDown();
+ virtual void setEnabled(bool);
+ virtual void selectAll();
+
+signals:
+ void valueChanged(int);
+ void valueChanged(const QString &);
+
+protected:
+ virtual QString mapValueToText(int);
+ virtual int mapTextToValue(bool *);
+ QString currentValueText();
+
+ virtual void updateDisplay();
+ virtual void interpretText();
+
+ QLineEdit *editor() const;
+
+ virtual void valueChange();
+ virtual void rangeChange();
+
+ bool eventFilter(QObject *,QEvent *);
+ void resizeEvent(QResizeEvent *);
+ void wheelEvent(QWheelEvent *);
+ void leaveEvent(QEvent *);
+
+ void styleChange(QStyle &);
+
+protected slots:
+ void textChanged();
+
+private:
+ QSpinBox(const QSpinBox &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QSpinBox : QFrame, QRangeControl
+{
+%TypeHeaderCode
+#include <qspinbox.h>
+%End
+
+public:
+ QSpinBox(QWidget * /TransferThis/ = 0,const char * = 0);
+ QSpinBox(int,int,int = 1,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_00)
+ const char *text() const;
+
+ virtual const char *prefix() const;
+ virtual const char *suffix() const;
+%End
+%If (Qt_2_00 -)
+ QString text() const;
+
+ virtual QString prefix() const;
+ virtual QString suffix() const;
+%End
+ virtual QString cleanText() const;
+
+%If (- Qt_2_00)
+ void setSpecialValueText(const char *);
+ const char *specialValueText() const;
+
+ void setWrapping(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setSpecialValueText(const QString &);
+ QString specialValueText() const;
+
+ virtual void setWrapping(bool);
+%End
+ bool wrapping() const;
+
+%If (Qt_2_1_0 -)
+ enum ButtonSymbols {
+ UpDownArrows,
+ PlusMinus
+ };
+%End
+
+%If (Qt_2_1_0 -)
+ void setButtonSymbols(ButtonSymbols);
+ ButtonSymbols buttonSymbols() const;
+%End
+
+%If (- Qt_2_00)
+ void setValidator(QValidator *);
+%End
+%If (Qt_2_00 -)
+ virtual void setValidator(const QValidator *);
+ const QValidator *validator() const;
+%End
+
+ QSize sizeHint() const;
+%If (Qt_2_00 -)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_2_1_0 -)
+ int minValue() const;
+ int maxValue() const;
+ void setMinValue(int);
+ void setMaxValue(int);
+ int lineStep() const;
+ void setLineStep(int);
+ int value() const;
+%End
+
+public slots:
+ virtual void setValue(int);
+%If (- Qt_2_00)
+ virtual void setPrefix(const char *);
+ virtual void setSuffix(const char *);
+%End
+%If (Qt_2_00 -)
+ virtual void setPrefix(const QString &);
+ virtual void setSuffix(const QString &);
+%End
+ virtual void stepUp();
+ virtual void stepDown();
+%If (Qt_2_00 -)
+ virtual void setEnabled(bool);
+%End
+
+signals:
+ void valueChanged(int);
+%If (- Qt_2_00)
+ void valueChanged(const char *);
+%End
+%If (Qt_2_00 -)
+ void valueChanged(const QString &);
+%End
+
+protected:
+ virtual QString mapValueToText(int);
+ virtual int mapTextToValue(bool *);
+ QString currentValueText();
+
+ virtual void updateDisplay();
+ virtual void interpretText();
+
+ QPushButton *upButton() const;
+ QPushButton *downButton() const;
+
+ QLineEdit *editor() const;
+
+ virtual void valueChange();
+ virtual void rangeChange();
+
+ bool eventFilter(QObject *,QEvent *);
+ void resizeEvent(QResizeEvent *);
+%If (- Qt_2_00)
+ void paletteChange(const QPalette &);
+ void enabledChange(bool);
+ void fontChange(const QFont &);
+ void styleChange(GUIStyle);
+%End
+%If (Qt_2_00 -)
+ void wheelEvent(QWheelEvent *);
+ void styleChange(QStyle &);
+%End
+%If (Qt_2_1_0 -)
+ void leaveEvent(QEvent *);
+%End
+
+protected slots:
+ void textChanged();
+
+private:
+ QSpinBox(const QSpinBox &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsplashscreen.sip b/python/pyqt/sip/qt/qsplashscreen.sip
new file mode 100644
index 00000000..8277f112
--- /dev/null
+++ b/python/pyqt/sip/qt/qsplashscreen.sip
@@ -0,0 +1,61 @@
+// This is the SIP interface definition for QSplashScreen.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSplashScreen (Qt v3.2.0+)</Title>
+<Para>
+<Literal>QSplashScreen</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_2_0 -)
+
+class QSplashScreen : QWidget
+{
+%TypeHeaderCode
+#include <qsplashscreen.h>
+%End
+
+public:
+ QSplashScreen(const QPixmap & = QPixmap(),WFlags = 0);
+ virtual ~QSplashScreen();
+
+ void setPixmap(const QPixmap &);
+ QPixmap *pixmap() const;
+ void finish(QWidget *);
+ void repaint();
+
+public slots:
+ void message(const QString &,int = AlignLeft,const QColor & = Qt::black);
+ void clear();
+
+signals:
+ void messageChanged(const QString &);
+
+protected:
+ virtual void drawContents(QPainter *);
+ void mousePressEvent(QMouseEvent *);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsplitter.sip b/python/pyqt/sip/qt/qsplitter.sip
new file mode 100644
index 00000000..167f8fc3
--- /dev/null
+++ b/python/pyqt/sip/qt/qsplitter.sip
@@ -0,0 +1,160 @@
+// This is the SIP interface definition for QSplitter.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSplitter</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getRange</Function></FuncDef>
+ <ParamDef>int <Parameter>id</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>min</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>max</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>id</Literal> parameter and returns the
+<Literal>min</Literal> and <Literal>max</Literal> values as a tuple. (Qt v2+)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_SPLITTER)
+
+class QSplitter : QFrame
+{
+%TypeHeaderCode
+#include <qsplitter.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ enum Orientation {
+ Horizontal,
+ Vertical
+ };
+%End
+
+ enum ResizeMode {
+ Stretch,
+ KeepSize,
+%If (Qt_2_1_0 -)
+ FollowSizeHint,
+%End
+%If (Qt_3_1_0 -)
+ Auto
+%End
+ };
+
+ QSplitter(QWidget * /TransferThis/ = 0,const char * = 0);
+ QSplitter(Orientation,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_00)
+ void setOrientation(Orientation);
+%End
+%If (Qt_2_00 -)
+ virtual void setOrientation(Orientation);
+%End
+ Orientation orientation() const;
+
+%If (Qt_3_2_0 -)
+ void setChildrenCollapsible(bool);
+ bool childrenCollapsible() const;
+
+ void setCollapsible(QWidget *,bool);
+%End
+
+%If (- Qt_2_00)
+ void setResizeMode(QWidget *,ResizeMode);
+ void setOpaqueResize(bool = 1);
+%End
+%If (Qt_2_00 -)
+ virtual void setResizeMode(QWidget *,ResizeMode);
+ virtual void setOpaqueResize(bool = 1);
+%End
+ bool opaqueResize() const;
+
+ void moveToFirst(QWidget *);
+ void moveToLast(QWidget *);
+
+ void refresh();
+%If (Qt_2_00 -)
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_2_00 -)
+ QValueList<int> sizes() const;
+ void setSizes(QValueList<int>);
+%End
+
+%If (Qt_3_2_0 -)
+ int handleWidth() const;
+ void setHandleWidth(int);
+%End
+
+%If (- Qt_2_00)
+ bool event(QEvent *);
+%End
+
+protected:
+%If (Qt_2_00 -)
+ void childEvent(QChildEvent *);
+
+ bool event(QEvent *);
+%End
+ void resizeEvent(QResizeEvent *);
+
+%If (- Qt_2_00)
+ void childInsertEvent(QChildEvent *);
+ void childRemoveEvent(QChildEvent *);
+ void layoutHintEvent(QEvent *);
+
+ void moveSplitter(QCOORD);
+%End
+%If (Qt_2_00 -)
+ int idAfter(QWidget *) const;
+
+ void moveSplitter(QCOORD,int);
+%End
+ virtual void drawSplitter(QPainter *,QCOORD,QCOORD,QCOORD,QCOORD);
+%If (Qt_2_1_0 -)
+ void styleChange(QStyle &);
+%End
+%If (- Qt_2_00)
+ int adjustPos(int);
+ void setRubberband(int);
+%End
+%If (Qt_2_00 -)
+ int adjustPos(int,int);
+ virtual void setRubberband(int);
+ void getRange(int,int *,int *);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QSplitter(const QSplitter &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qstatusbar.sip b/python/pyqt/sip/qt/qstatusbar.sip
new file mode 100644
index 00000000..4e1f7043
--- /dev/null
+++ b/python/pyqt/sip/qt/qstatusbar.sip
@@ -0,0 +1,94 @@
+// This is the SIP interface definition for QStatusBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStatusBar</Title>
+<Para>
+<Literal>QStatusBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QStatusBar : QWidget
+{
+%TypeHeaderCode
+#include <qstatusbar.h>
+%End
+
+public:
+ QStatusBar(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_1_0)
+ void addWidget(QWidget * /Transfer/,int,bool = 0);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void addWidget(QWidget * /Transfer/,int = 0,bool = 0);
+%End
+%If (Qt_3_0_0 -)
+ virtual void addWidget(QWidget * /Transfer/,int = 0,bool = 0);
+%End
+%If (- Qt_3_0_0)
+ void removeWidget(QWidget * /TransferBack/);
+%End
+%If (Qt_3_0_0 -)
+ virtual void removeWidget(QWidget * /TransferBack/);
+%End
+
+%If (Qt_2_1_0 -)
+ void setSizeGripEnabled(bool);
+ bool isSizeGripEnabled() const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void message(const char *);
+ void message(const char *,int);
+%End
+%If (Qt_2_00 -)
+ void message(const QString &);
+ void message(const QString &,int);
+%End
+ void clear();
+
+signals:
+%If (Qt_3_1_0 -)
+ void messageChanged(const QString &);
+%End
+
+protected:
+ void paintEvent(QPaintEvent *);
+%If (Qt_2_1_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+
+ void reformat();
+ void hideOrShow();
+%If (Qt_2_1_0 -)
+ bool event(QEvent *);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QStatusBar(const QStatusBar &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qstring.sip b/python/pyqt/sip/qt/qstring.sip
new file mode 100644
index 00000000..21bf0e8c
--- /dev/null
+++ b/python/pyqt/sip/qt/qstring.sip
@@ -0,0 +1,1079 @@
+// This is the SIP interface definition for QChar and QString.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QChar (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>uchar &<Function>cell</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uchar &<Function>row</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QString</Title>
+<Para>
+A Python string object (or Unicode object) can be used whenever a
+<Literal>QString</Literal> can be used. A <Literal>QString</Literal> can be
+converted to a Python string object using the Python <Literal>str()</Literal>
+function, and to a Python Unicode object using the Python
+<Literal>unicode()</Literal> function.
+</Para>
+
+<Para>
+The Python <Literal>+</Literal>, <Literal>+=</Literal>, <Literal>*</Literal>,
+<Literal>*=</Literal>, <Literal>len</Literal>, <Literal>[]</Literal>
+(for reading slices and individual characters), <Literal>in</Literal> and
+comparison operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QCharRef <Function>at</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QChar <Function>constref</Function> const</FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QChar &<Function>ref</Function></FuncDef>
+ <ParamDef>uint <Parameter>i</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QString &<Function>setUnicodeCodes</Function></FuncDef>
+ <ParamDef>const ushort *<Parameter>unicode_as_shorts</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v2.1+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QString &<Function>sprintf</Function></FuncDef>
+ <ParamDef>const char *<Parameter>format</Parameter></ParamDef>
+ <ParamDef>...</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>short <Function>toShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>short</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ushort <Function>toUShort</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ushort</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>toInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>int</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint <Function>toUInt</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>uint</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>toLong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>long</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>ulong <Function>toULong</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>ulong</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>float <Function>toFloat</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>float</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double <Function>toDouble</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>double</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QChar
+{
+%TypeHeaderCode
+#include <qstring.h>
+%End
+
+public:
+ QChar();
+ QChar(char);
+// QChar(uchar);
+ QChar(uchar,uchar);
+ QChar(const QChar &);
+// QChar(ushort);
+// QChar(short);
+// QChar(uint);
+ QChar(int);
+
+ static const QChar null;
+ static const QChar replacement;
+ static const QChar byteOrderMark;
+ static const QChar byteOrderSwapped;
+%If (Qt_2_2_0 -)
+ static const QChar nbsp;
+%End
+
+%If (- Qt_3_0_0)
+ enum Category {
+ NoCategory,
+
+ Mark_NonSpacing,
+ Mark_SpacingCombining,
+ Mark_Enclosing,
+
+ Number_DecimalDigit,
+ Number_Letter,
+ Number_Other,
+
+ Separator_Space,
+ Separator_Line,
+ Separator_Paragraph,
+
+ Other_Control,
+ Other_Format,
+ Other_Surrogate,
+ Other_PrivateUse,
+ Other_NotAssigned,
+
+ Letter_Uppercase,
+ Letter_Lowercase,
+ Letter_Titlecase,
+ Letter_Modifier,
+ Letter_Other,
+
+ Punctuation_Connector,
+ Punctuation_Dask,
+ Punctuation_Open,
+ Punctuation_Close,
+ Punctuation_InitialQuote,
+ Punctuation_FinalQuote,
+ Punctuation_Other,
+
+ Symbol_Math,
+ Symbol_Currency,
+ Symbol_Modifier,
+ Symbol_Other
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Category {
+ NoCategory,
+
+ Mark_NonSpacing,
+ Mark_SpacingCombining,
+ Mark_Enclosing,
+
+ Number_DecimalDigit,
+ Number_Letter,
+ Number_Other,
+
+ Separator_Space,
+ Separator_Line,
+ Separator_Paragraph,
+
+ Other_Control,
+ Other_Format,
+ Other_Surrogate,
+ Other_PrivateUse,
+ Other_NotAssigned,
+
+ Letter_Uppercase,
+ Letter_Lowercase,
+ Letter_Titlecase,
+ Letter_Modifier,
+ Letter_Other,
+
+ Punctuation_Connector,
+ Punctuation_Dash,
+ Punctuation_Open,
+ Punctuation_Close,
+ Punctuation_InitialQuote,
+ Punctuation_FinalQuote,
+ Punctuation_Other,
+
+ Symbol_Math,
+ Symbol_Currency,
+ Symbol_Modifier,
+ Symbol_Other
+ };
+%End
+
+%If (- Qt_3_0_0)
+ enum Direction {
+ DirL,
+ DirR,
+ DirEN,
+ DirES,
+ DirET,
+ DirAN,
+ DirCS,
+ DirB,
+ DirS,
+ DirWS,
+ DirON
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Direction {
+ DirL,
+ DirR,
+ DirEN,
+ DirES,
+ DirET,
+ DirAN,
+ DirCS,
+ DirB,
+ DirS,
+ DirWS,
+ DirON,
+ DirLRE,
+ DirLRO,
+ DirAL,
+ DirRLE,
+ DirRLO,
+ DirPDF,
+ DirNSM,
+ DirBN
+ };
+%End
+
+ enum Decomposition {
+ Single,
+ Canonical,
+ Font,
+ NoBreak,
+ Initial,
+ Medial,
+ Final,
+ Isolated,
+ Circle,
+ Super,
+ Sub,
+ Vertical,
+ Wide,
+ Narrow,
+ Small,
+ Square,
+ Compat,
+ Fraction
+ };
+
+ enum Joining {
+ OtherJoining,
+ Dual,
+ Right,
+ Center
+ };
+
+%If (Qt_3_0_0 -)
+ enum CombiningClass {
+ Combining_BelowLeftAttached,
+ Combining_BelowAttached,
+ Combining_BelowRightAttached,
+ Combining_LeftAttached,
+ Combining_RightAttached,
+ Combining_AboveLeftAttached,
+ Combining_AboveAttached,
+ Combining_AboveRightAttached,
+
+ Combining_BelowLeft,
+ Combining_Below,
+ Combining_BelowRight,
+ Combining_Left,
+ Combining_Right,
+ Combining_AboveLeft,
+ Combining_Above,
+ Combining_AboveRight,
+
+ Combining_DoubleBelow,
+ Combining_DoubleAbove,
+ Combining_IotaSubscript
+ };
+%End
+
+ int digitValue() const;
+ QChar lower() const;
+ QChar upper() const;
+
+ Category category() const;
+ Direction direction() const;
+ Joining joining() const;
+ bool mirrored() const;
+%If (Qt_2_1_0 -)
+ QChar mirroredChar() const;
+%End
+%If (- Qt_3_0_0)
+ QString decomposition() const;
+%End
+%If (Qt_3_0_0 -)
+ const QString &decomposition() const;
+%End
+ Decomposition decompositionTag() const;
+%If (Qt_3_0_0 -)
+ unsigned char combiningClass() const;
+%End
+
+ char latin1() const;
+ ushort unicode() const;
+
+ bool isNull() const;
+ bool isPrint() const;
+ bool isPunct() const;
+ bool isSpace() const;
+ bool isMark() const;
+ bool isLetter() const;
+ bool isNumber() const;
+%If (Qt_2_1_0 -)
+ bool isLetterOrNumber() const;
+%End
+ bool isDigit() const;
+%If (Qt_3_0_0 -)
+ bool isSymbol() const;
+%End
+
+// uchar& cell();
+// uchar& row();
+ uchar cell() const;
+ uchar row() const;
+%If (Qt_3_0_0 -)
+ void setCell(uchar);
+ void setRow(uchar);
+%End
+
+ static bool networkOrdered();
+
+ bool operator==(char);
+ bool operator==(QChar);
+ bool operator!=(QChar);
+ bool operator!=(char);
+ bool operator<=(char);
+ bool operator<=(QChar);
+ bool operator>=(char);
+ bool operator>=(QChar);
+ bool operator<(char);
+ bool operator<(QChar);
+ bool operator>(char);
+ bool operator>(QChar);
+};
+
+
+class QString
+{
+%TypeHeaderCode
+#include <qstring.h>
+%End
+
+public:
+ QString();
+ QString(QChar);
+ QString(const QString &);
+ QString(const QByteArray &);
+// QString(const QChar *,uint);
+// QString(const char *);
+
+%If (Qt_2_1_0 -)
+ // This is how we implement QUrl::operator QString() const.
+ QString(const QUrl &);
+%End
+
+%If (Qt_3_0_0 -)
+ // This is how we implement QKeySequence::operator QString() const.
+ QString(const QKeySequence &);
+
+ // This is how we implement QUuid::operator QString() const.
+ QString(const QUuid &);
+%End
+
+ static const QString null;
+
+ bool isNull() const;
+ bool isEmpty() const;
+ uint length() const;
+ void truncate(uint);
+%If (- Qt_3_0_0)
+ void fill(QChar,int = -1);
+%End
+%If (Qt_3_0_0 -)
+ QString &fill(QChar,int = -1);
+%End
+ QString copy() const;
+
+ QString arg(int /Constrained/,int = 0,int = 10) const;
+ QString arg(double /Constrained/,int = 0,char = 'g',int = -1) const;
+%If (Qt_3_2_0 -)
+// QString arg(Q_LLONG,int = 0,int = 10) const;
+// QString arg(Q_ULLONG,int = 0,int = 10) const;
+%End
+ QString arg(long,int = 0,int = 10) const;
+ QString arg(ulong,int = 0,int = 10) const;
+// QString arg(uint,int = 0,int = 10) const;
+// QString arg(short,int = 0,int = 10) const;
+// QString arg(ushort,int = 0,int = 10) const;
+ QString arg(char,int = 0) const;
+ QString arg(QChar,int = 0) const;
+ QString arg(const QString&,int = 0) const;
+%If (Qt_3_2_0 -)
+ QString arg(const QString &,const QString &) const;
+ QString arg(const QString &,const QString &,const QString &) const;
+ QString arg(const QString &,const QString &,const QString &,
+ const QString &) const;
+%End
+
+// QString &sprintf(const char *,...);
+
+ int find(QChar,int = 0,bool = 1) const;
+ int find(char,int = 0,bool = 1) const;
+ int find(const QString &,int = 0,bool = 1) const;
+ int find(const QRegExp &,int = 0) const;
+// int find(const char *,int = 0) const;
+ int findRev(QChar,int = -1,bool = 1) const;
+ int findRev(char,int = -1,bool = 1) const;
+ int findRev(const QString &,int = -1,bool = 1) const;
+ int findRev(const QRegExp &,int = -1) const;
+// int findRev(const char *,int = -1) const;
+ int contains(QChar,bool = 1) const;
+ int contains(char,bool = 1) const;
+// int contains(const char *,bool = 1) const;
+ int contains(const QString &,bool = 1) const;
+ int contains(const QRegExp &) const;
+
+%If (Qt_3_0_0 -)
+ enum SectionFlags {
+ SectionDefault,
+ SectionSkipEmpty,
+ SectionIncludeLeadingSep,
+ SectionIncludeTrailingSep,
+ SectionCaseInsensitiveSeps
+ };
+
+ QString section(QChar,int,int = 0xffffffff,int = SectionDefault) const;
+// QString section(char,int,int = 0xffffffff,int = SectionDefault) const;
+// QString section(const char *,int,int = 0xffffffff,
+// int = SectionDefault) const;
+ QString section(const QString &,int,int = 0xffffffff,
+ int = SectionDefault) const;
+ QString section(const QRegExp &,int,int = 0xffffffff,
+ int = SectionDefault) const;
+%End
+
+ QString left(uint) const;
+ QString right(uint) const;
+ QString mid(uint,uint = 0xffffffff) const;
+ QString leftJustify(uint,QChar = ' ',bool = 0) const;
+ QString rightJustify(uint,QChar = ' ',bool = 0) const;
+ QString lower() const;
+ QString upper() const;
+ QString stripWhiteSpace() const;
+ QString simplifyWhiteSpace() const;
+
+ QString &insert(uint,const QString &);
+%If (Qt_3_2_0 -)
+ QString &insert(uint,const QByteArray &);
+// QString &insert(uint,const char *);
+%End
+ QString &insert(uint,QChar *,uint);
+ QString &insert(uint,QChar);
+ QString &insert(uint,char);
+
+ QString &append(char);
+%If (Qt_2_2_0 -)
+ QString &append(QChar);
+%End
+ QString &append(const QString &);
+ QString &prepend(char);
+%If (Qt_2_2_0 -)
+ QString &prepend(QChar);
+%End
+ QString &prepend(const QString &);
+ QString &remove(uint,uint);
+%If (Qt_3_1_0 -)
+ QString &remove(const QString &);
+%If (Qt_3_2_0 -)
+ QString &remove(const QString &,bool);
+%End
+ QString &remove(QChar);
+ QString &remove(char);
+ QString &remove(const QRegExp &);
+%End
+ QString &replace(uint,uint,const QString &);
+ QString &replace(uint,uint,const QChar *,uint);
+%If (Qt_3_1_0 -)
+ QString &replace(uint,uint,QChar);
+ QString &replace(uint,uint,char);
+ QString &replace(QChar,const QString &);
+%If (Qt_3_2_0 -)
+ QString &replace(QChar,const QString &,bool);
+%End
+ QString &replace(char,const QString &);
+%If (Qt_3_2_0 -)
+ QString &replace(char,const QString &,bool);
+%End
+ QString &replace(const QString &,const QString &);
+%If (Qt_3_2_0 -)
+ QString &replace(const QString &,const QString &,bool);
+%End
+%End
+ QString &replace(const QRegExp &,const QString &);
+%If (Qt_3_1_0 -)
+ QString &replace(QChar,QChar);
+%End
+
+ short toShort(bool * = 0,int = 10) const;
+ ushort toUShort(bool * = 0,int = 10) const;
+ int toInt(bool * = 0,int = 10) const;
+ uint toUInt(bool * = 0,int = 10) const;
+ long toLong(bool * = 0,int = 10) const;
+ ulong toULong(bool * = 0,int = 10) const;
+%If (Qt_3_2_0 -)
+// Q_LLONG toLongLong(bool * = 0,int = 10) const;
+// Q_ULLONG toULongLong(bool * = 0,int = 10) const;
+%End
+ float toFloat(bool * = 0) const;
+ double toDouble(bool * = 0) const;
+
+ QString &setNum(int /Constrained/,int = 10);
+ QString &setNum(double /Constrained/,char = 'g',int = 6);
+// QString &setNum(short,int = 10);
+// QString &setNum(ushort,int = 10);
+// QString &setNum(uint,int = 10);
+ QString &setNum(long,int = 10);
+ QString &setNum(ulong,int = 10);
+%If (Qt_3_2_0 -)
+// QString &setNum(Q_LLONG,int = 10);
+// QString &setNum(Q_ULLONG,int = 10);
+%End
+// QString &setNum(float,char = 'g',int = 6);
+
+ static QString number(int /Constrained/,int = 10);
+ static QString number(double /Constrained/,char = 'g',int = 6);
+ static QString number(long,int = 10);
+ static QString number(ulong,int = 10);
+%If (Qt_3_2_0 -)
+// static QString number(Q_LLONG,int = 10);
+// static QString number(Q_ULLONG,int = 10);
+%End
+// static QString number(uint,int = 10);
+
+ void setExpand(uint,QChar);
+
+ QString &operator+=(const QString &);
+%If (Qt_3_3_0 -)
+ QString &operator+=(const QByteArray &);
+%End
+ QString &operator+=(QChar);
+ //QString &operator+=(char);
+
+ QString operator*(int);
+%MethodCode
+ sipRes = new QString();
+
+ while (a0-- > 0)
+ *sipRes += *sipCpp;
+%End
+
+ QString &operator*=(int);
+%MethodCode
+ QString orig(*sipCpp);
+
+ sipCpp -> truncate(0);
+
+ while (a0-- > 0)
+ *sipCpp += orig;
+%End
+
+ QChar at(uint) const;
+// QCharRef at(uint);
+// QChar constref(uint) const;
+// QChar &ref(uint);
+// const QChar *unicode() const;
+ const char *ascii() const;
+%If (Qt_3_1_0 -)
+ static QString fromAscii(const char *,int = -1);
+%End
+ const char *latin1() const;
+ static QString fromLatin1(const char *,int = -1);
+ QCString utf8() const;
+ static QString fromUtf8(const char *,int = -1);
+ QCString local8Bit() const;
+ static QString fromLocal8Bit(const char *,int = -1);
+
+%If (Qt_3_1_0 -)
+// static QString fromUcs2(const unsigned short *);
+// const unsigned short *ucs2() const;
+%End
+
+%If (Qt_2_1_0 -)
+// QString &setUnicode(const QChar *,uint);
+// QString &setUnicodeCodes(const ushort *,uint);
+%End
+%If (Qt_3_1_0 -)
+ QString &setAscii(const char *,int = -1);
+%End
+%If (Qt_2_1_0 -)
+ QString &setLatin1(const char *,int = -1);
+%End
+
+ int compare(const QString &) const;
+ static int compare(const QString &,const QString &);
+
+%If (Qt_3_0_0 -)
+ int localeAwareCompare(const QString &) const;
+ static int localeAwareCompare(const QString &,const QString &);
+%End
+
+ void compose();
+%If (- Qt_3_0_0)
+ QChar::Direction basicDirection();
+ QString visual(int = 0,int = -1);
+%End
+%If (Qt_2_2_0 -)
+ bool startsWith(const QString &) const;
+%End
+%If (Qt_3_2_0 -)
+ bool startsWith(const QString &,bool) const;
+%End
+%If (Qt_3_0_0 -)
+ bool endsWith(const QString &) const;
+%End
+%If (Qt_3_2_0 -)
+ bool endsWith(const QString &,bool) const;
+%End
+
+%If (Qt_3_0_0 -)
+ void setLength(uint);
+%End
+
+%If (Qt_3_2_0 -)
+ uint capacity() const;
+ void reserve(uint);
+ void squeeze();
+%End
+
+%If (Qt_3_0_0 -)
+ bool simpleText() const;
+ bool isRightToLeft() const;
+%End
+
+ bool operator==(const QString &) const;
+ bool operator!=(const QString &) const;
+ bool operator<(const QString &) const;
+ bool operator<=(const QString &) const;
+ bool operator>(const QString &) const;
+ bool operator>=(const QString &) const;
+
+ // Force the numeric interpretation so that str + QString gets handled
+ // as we want.
+ const QString operator+(const QString &) /Numeric/;
+
+ QString operator[](int) const;
+%MethodCode
+ int len;
+
+ len = sipCpp -> length();
+
+ if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ sipRes = new QString(sipCpp -> at(a0));
+%End
+
+ QString operator[](SIP_PYSLICE) const;
+%MethodCode
+#if PY_VERSION_HEX >= 0x02050000
+ Py_ssize_t len, start, stop, step, slicelength, i;
+#else
+ int len, start, stop, step, slicelength, i;
+#endif
+
+ len = sipCpp -> length();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ sipRes = new QString();
+
+ for (i = 0; i < slicelength; ++i)
+ {
+ sipRes -> append(sipCpp -> at(start));
+ start += step;
+ }
+ }
+%End
+
+ int __len__() const;
+%MethodCode
+ sipRes = sipCpp -> length();
+%End
+
+ int __contains__(const QString &) const;
+%MethodCode
+ sipRes = (sipCpp -> contains(*a0) > 0);
+%End
+
+ SIP_PYOBJECT __unicode__();
+%MethodCode
+#if PY_VERSION_HEX >= 0x01060000
+ sipRes = QStringToPyUnicode(sipCpp);
+#else
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+#endif
+%End
+
+ SIP_PYOBJECT __str__();
+%MethodCode
+#if PY_VERSION_HEX >= 0x01060000
+ sipRes = QStringToPyUnicode(sipCpp);
+#else
+ const char *s;
+
+ Py_BEGIN_ALLOW_THREADS
+ s = *sipCpp;
+ Py_END_ALLOW_THREADS
+
+ if (s == NULL)
+ s = "";
+
+ sipRes = PyString_FromString(s);
+#endif
+%End
+
+%TypeCode
+#include <qtextcodec.h>
+
+#if PY_VERSION_HEX >= 0x01060000
+// Convenience function for converting a QString to a Python Unicode object.
+static PyObject *QStringToPyUnicode(QString *qs)
+{
+ PyObject *uobj;
+
+ if ((uobj = PyUnicode_FromUnicode(NULL,qs -> length())) == NULL)
+ return NULL;
+
+ Py_UNICODE *pyu = PyUnicode_AS_UNICODE(uobj);
+
+ for (uint i = 0; i < qs -> length(); ++i)
+ *pyu++ = (qs -> at(i)).unicode();
+
+ return uobj;
+}
+#endif
+
+// Convenience function for converting a Python unicode or string object to a
+// QString on the heap.
+static QString *PyUnicodeStringToQString(PyObject *py)
+{
+#if PY_VERSION_HEX >= 0x01060000
+ if (PyUnicode_Check(py))
+ {
+ QString *qs = new QString;
+
+#if defined(Py_UNICODE_WIDE)
+ PY_UNICODE_TYPE *ucode = PyUnicode_AS_UNICODE(py);
+ int len = PyUnicode_GET_SIZE(py);
+
+ for (int i = 0; i < len; ++i)
+ qs->ref(i) = (uint)ucode[i];
+#else
+ qs -> setUnicodeCodes((ushort *)PyUnicode_AS_UNICODE(py),PyUnicode_GET_SIZE(py));
+#endif
+
+ return qs;
+ }
+#endif
+
+ if (PyString_Check(py))
+ return new QString(PyString_AS_STRING(py));
+
+ return 0;
+}
+%End
+
+%ConvertToTypeCode
+ // Allow a Python string (or a unicode string) whenever a QString is
+ // expected.
+
+ if (sipIsErr == NULL)
+ return (PyString_Check(sipPy) ||
+#if PY_VERSION_HEX >= 0x01060000
+ PyUnicode_Check(sipPy) ||
+#endif
+ sipCanConvertToInstance(sipPy,sipClass_QString,SIP_NO_CONVERTORS));
+
+ *sipCppPtr = PyUnicodeStringToQString(sipPy);
+
+ if (*sipCppPtr)
+ return sipGetState(sipTransferObj);
+
+ *sipCppPtr = reinterpret_cast<QString *>(sipConvertToInstance(sipPy,sipClass_QString,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr));
+
+ return 0;
+%End
+
+%BIGetReadBufferCode
+ if (sipSegment != 0)
+ {
+ PyErr_SetString(PyExc_SystemError, "accessing non-existent QString segment");
+ sipRes = -1;
+ }
+ else
+ {
+ *sipPtrPtr = (void *)sipCpp->ucs2();
+ sipRes = sipCpp->length() * sizeof (ushort);
+ }
+%End
+
+%BIGetSegCountCode
+ if (sipLenPtr)
+ *sipLenPtr = sipCpp->length() * sizeof (ushort);
+
+ sipRes = 1;
+%End
+
+%BIGetCharBufferCode
+ if (sipSegment != 0)
+ {
+ PyErr_SetString(PyExc_SystemError, "accessing non-existent QString segment");
+ sipRes = -1;
+ }
+ else
+ {
+ static QTextCodec *codec = 0;
+ static bool check_codec = TRUE;
+
+ // For the first time only, try and find a Qt codec that
+ // corresponds to the default Python codec. If one wasn't
+ // found then fall back to ASCII (which is actually the codec
+ // returned by QTextCodec::codecForCStrings()).
+ if (check_codec)
+ {
+ codec = QTextCodec::codecForName(PyUnicode_GetDefaultEncoding());
+ check_codec = FALSE;
+ }
+
+ if (codec)
+ {
+ // A Python string is the most convenient method to
+ // save the encoded version on the heap.
+ PyObject *encobj = ((sipWrapper *)sipSelf)->user;
+ QCString enc;
+
+ Py_XDECREF(encobj);
+
+ enc = codec->fromUnicode(*sipCpp);
+
+ if ((encobj = PyString_FromString(enc.data())) != NULL)
+ {
+ *sipPtrPtr = (void *)PyString_AS_STRING(encobj);
+ sipRes = PyString_GET_SIZE(encobj);
+
+ ((sipWrapper *)sipSelf)->user = encobj;
+ }
+ else
+ sipRes = -1;
+ }
+ else
+ {
+ const char *asc = sipCpp->ascii();
+
+ *sipPtrPtr = (void *)asc;
+ sipRes = qstrlen(asc);
+ }
+ }
+%End
+};
+
+%End
+
+
+%If (- Qt_2_00)
+
+class QString : QByteArray
+{
+%TypeHeaderCode
+#include <qstring.h>
+%End
+
+public:
+ QString();
+ QString(int);
+ QString(const QString &);
+ QString(const char *);
+ QString(const char *,uint);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ uint length() const;
+ bool resize(uint);
+ bool truncate(uint);
+ bool fill(char,int = -1);
+ QString copy() const;
+// QString &sprintf(const char *,...);
+ int find(char,int = 0,bool = 1) const;
+ int find(const char *,int = 0,bool = 1) const;
+ int find(const QRegExp &,int = 0) const;
+ int findRev(char,int = -1,bool = 1) const;
+ int findRev(const char *,int = -1,bool = 1) const;
+ int findRev(const QRegExp &,int = -1) const;
+ int contains(char,bool = 1) const;
+ int contains(const char *,bool = 1) const;
+ int contains(const QRegExp &) const;
+ QString left(uint) const;
+ QString right(uint) const;
+ QString mid(uint,uint) const;
+ QString leftJustify(uint,char = ' ',bool = 0) const;
+ QString rightJustify(uint,char = ' ',bool = 0) const;
+ QString lower() const;
+ QString upper() const;
+ QString stripWhiteSpace() const;
+ QString simplifyWhiteSpace() const;
+ QString &insert(uint,const char *);
+ QString &insert(uint,char);
+ QString &append(const char *);
+ QString &prepend(const char *);
+ QString &remove(uint,uint);
+ QString &replace(uint,uint,const char *);
+ QString &replace(const QRegExp &,const char *);
+
+ short toShort(bool * = 0) const;
+ ushort toUShort(bool * = 0) const;
+ int toInt(bool * = 0) const;
+ uint toUInt(bool * = 0) const;
+ long toLong(bool * = 0) const;
+ ulong toULong(bool * = 0) const;
+ float toFloat(bool * = 0) const;
+ double toDouble(bool * = 0) const;
+
+ QString &setStr(const char *);
+// QString &setNum(short);
+// QString &setNum(ushort);
+ QString &setNum(int /Constrained/);
+// QString &setNum(uint);
+// QString &setNum(long);
+// QString &setNum(ulong);
+// QString &setNum(float,char = 'g',int = 6);
+ QString &setNum(double,char = 'g',int = 6);
+ bool setExpand(uint,char);
+
+ SIP_PYOBJECT __str__();
+%MethodCode
+ const char *s;
+
+ Py_BEGIN_ALLOW_THREADS
+ s = *sipCpp;
+ Py_END_ALLOW_THREADS
+
+ if (s == NULL)
+ s = "";
+
+ sipRes = PyString_FromString(s);
+%End
+
+%ConvertToTypeCode
+ // Allow a Python string whenever a QString is expected.
+
+ if (sipIsErr == NULL)
+ return (PyString_Check(sipPy) ||
+ sipCanConvertToInstance(sipPy,sipClass_QString,SIP_NO_CONVERTORS));
+
+ if (PyString_Check(sipPy))
+ {
+ *sipCppPtr = new QString(PyString_AS_STRING(sipPy));
+
+ return sipGetState(sipTransferObj);
+ }
+
+ *sipCppPtr = reinterpret_cast<QString *>(sipConvertToInstance(sipPy,sipClass_QString,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr));
+
+ return 0;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qstringlist.sip b/python/pyqt/sip/qt/qstringlist.sip
new file mode 100644
index 00000000..d95034c4
--- /dev/null
+++ b/python/pyqt/sip/qt/qstringlist.sip
@@ -0,0 +1,247 @@
+// This is the SIP interface definition for QStringList.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStringList (Qt v2+)</Title>
+<Para>
+The Python <Literal>len</Literal>, <Literal>[]</Literal> (for both reading and
+writing slices and individual elements), <Literal>del</Literal> (for deleting
+slices and individual elements), <Literal>+</Literal>, <Literal>+=</Literal>,
+<Literal>*</Literal>, <Literal>*=</Literal>, <Literal>==</Literal>,
+<Literal>!=</Literal> and <Literal>in</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Iterator <Function>append</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>x</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This does not return a value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Iterator <Function>prepend</Function></FuncDef>
+ <ParamDef>const QString &<Parameter>x</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This does not return a value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QStringList
+{
+%TypeHeaderCode
+#include <qstringlist.h>
+%End
+
+public:
+ QStringList();
+ QStringList(const QStringList &);
+ QStringList(const QString &);
+
+ void sort();
+%If (Qt_2_1_0 -)
+ static QStringList fromStrList(const QStrList &);
+ static QStringList split(const QString &,const QString &,bool = 0);
+ static QStringList split(const QChar &,const QString &,bool = 0);
+ static QStringList split(const QRegExp &,const QString &,bool = 0);
+ QString join(const QString &) const;
+ QStringList grep(const QString &,bool = 1) const;
+ QStringList grep(const QRegExp &) const;
+%End
+
+%If (Qt_3_2_0 -)
+ QStringList &gres(const QString &,const QString &,bool = 1);
+ QStringList &gres(const QRegExp &,const QString &);
+%End
+
+ // These are actually in QValueList, which isn't implemented so
+ // pretend they are here.
+
+ bool isEmpty() const;
+ void append(const QString &);
+ void prepend(const QString &);
+ void remove(const QString &);
+ const QString &first() const;
+ const QString &last() const;
+ int findIndex(const QString &) const;
+ uint contains(const QString &) const;
+ uint count() const;
+ void clear();
+
+ int __len__();
+%MethodCode
+ sipRes = sipCpp -> count();
+%End
+
+ void __setitem__(int,const QString &);
+%MethodCode
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ (*sipCpp)[a0] = *a1;
+%End
+
+ void __setitem__(SIP_PYSLICE,const QStringList &);
+%MethodCode
+#if PY_VERSION_HEX >= 0x02050000
+ Py_ssize_t len, start, stop, step, slicelength, i;
+#else
+ int len, start, stop, step, slicelength, i;
+#endif
+
+ len = sipCpp -> count();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ int vlen = a1 -> count();
+
+ if (vlen != slicelength)
+ {
+ sipBadLengthForSlice(vlen,slicelength);
+ sipIsErr = 1;
+ }
+ else
+ {
+ QStringList::ConstIterator it = a1 -> begin();
+
+ for (i = 0; i < slicelength; ++i)
+ {
+ (*sipCpp)[start] = *it;
+ start += step;
+ ++it;
+ }
+ }
+ }
+%End
+
+ void __delitem__(int);
+%MethodCode
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ sipCpp -> remove(sipCpp -> at(a0));
+%End
+
+ void __delitem__(SIP_PYSLICE);
+%MethodCode
+#if PY_VERSION_HEX >= 0x02050000
+ Py_ssize_t len, start, stop, step, slicelength, i;
+#else
+ int len, start, stop, step, slicelength, i;
+#endif
+
+ len = sipCpp -> count();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ for (i = 0; i < slicelength; ++i)
+ {
+ sipCpp -> remove(sipCpp -> at(start));
+ start += step - 1;
+ }
+%End
+
+ QString operator[](int);
+%MethodCode
+ int len;
+
+ len = sipCpp -> count();
+
+ if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0)
+ sipIsErr = 1;
+ else
+ sipRes = new QString((*sipCpp)[a0]);
+%End
+
+ QStringList operator[](SIP_PYSLICE);
+%MethodCode
+#if PY_VERSION_HEX >= 0x02050000
+ Py_ssize_t len, start, stop, step, slicelength, i;
+#else
+ int len, start, stop, step, slicelength, i;
+#endif
+
+ len = sipCpp -> count();
+
+ if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
+ sipIsErr = 1;
+ else
+ {
+ sipRes = new QStringList();
+
+ for (i = 0; i < slicelength; ++i)
+ {
+ (*sipRes) += (*sipCpp)[start];
+ start += step;
+ }
+ }
+%End
+
+ int __contains__(const QString &);
+%MethodCode
+ sipRes = (sipCpp -> findIndex(*a0) >= 0);
+%End
+
+ QStringList operator+(const QStringList &);
+ QStringList &operator+=(const QStringList &);
+
+ QStringList &operator+=(const QString &);
+
+ QStringList operator*(int);
+%MethodCode
+ sipRes = new QStringList();
+
+ while (a0-- > 0)
+ *sipRes += *sipCpp;
+%End
+
+ QStringList &operator*=(int);
+%MethodCode
+ QStringList orig(*sipCpp);
+
+ sipCpp -> clear();
+
+ while (a0-- > 0)
+ *sipCpp += orig;
+%End
+
+ bool operator==(const QStringList &);
+ bool operator!=(const QStringList &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qstrlist.sip b/python/pyqt/sip/qt/qstrlist.sip
new file mode 100644
index 00000000..189e1343
--- /dev/null
+++ b/python/pyqt/sip/qt/qstrlist.sip
@@ -0,0 +1,100 @@
+// This is the SIP interface definition for QStrList.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStrList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QStrList</Literal> is the
+return type of a function or the type of an argument, a Python list of strings
+is used instead.
+</Para>
+</Sect2>
+%End
+
+
+%MappedType QStrList
+{
+%TypeHeaderCode
+#include <qstrlist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of strings.
+
+ char *s;
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+
+ for (s = sipCpp -> first(); s != NULL; s = sipCpp -> next())
+ {
+ PyObject *ps;
+
+ if ((ps = PyString_FromString(s)) == NULL || PyList_SetItem(l,i,ps) < 0)
+ {
+ Py_XDECREF(ps);
+ Py_DECREF(l);
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of strings to a QStrList on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QStrList *qsl = new QStrList;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ char *s;
+
+ if ((s = PyString_AsString(PyList_GET_ITEM(sipPy,i))) == NULL)
+ {
+ *sipIsErr = 1;
+ delete qsl;
+
+ return 0;
+ }
+
+ qsl -> append(s);
+ }
+
+ *sipCppPtr = qsl;
+
+ return sipGetState(sipTransferObj);
+%End
+};
diff --git a/python/pyqt/sip/qt/qstyle.sip b/python/pyqt/sip/qt/qstyle.sip
new file mode 100644
index 00000000..23e116c0
--- /dev/null
+++ b/python/pyqt/sip/qt/qstyle.sip
@@ -0,0 +1,862 @@
+// This is the SIP interface definition for QStyle and QStyleOption.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &amp;<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QScrollBar *<Parameter>b</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Thus takes only the <Literal>b</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+
+<Sect2><Title>QStyleOption (Qt v3+)</Title>
+<Para>
+<Literal>QStyleOption</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QStyleOption
+{
+%TypeHeaderCode
+#include <qstyle.h>
+%End
+
+public:
+ enum StyleOptionDefault {
+ Default
+ };
+
+ QStyleOption(StyleOptionDefault = Default);
+
+%If (Qt_3_2_0 -)
+ QStyleOption(int);
+%End
+ QStyleOption(int,int);
+ QStyleOption(int,int,int,int);
+ QStyleOption(QMenuItem *);
+ QStyleOption(QMenuItem *,int);
+ QStyleOption(QMenuItem *,int,int);
+ QStyleOption(const QColor &);
+ QStyleOption(QTab *);
+ QStyleOption(QListViewItem *);
+%If (Qt_3_1_0 -)
+ QStyleOption(QCheckListItem *);
+%End
+ QStyleOption(Qt::ArrowType);
+%If (Qt_3_1_0 -)
+ QStyleOption(const QRect &);
+ QStyleOption(QWidget *);
+%End
+
+ bool isDefault() const;
+
+%If (Qt_3_3_0 -)
+ int day() const;
+%End
+
+ int lineWidth() const;
+ int midLineWidth() const;
+ int frameShape() const;
+ int frameShadow() const;
+
+%If (Qt_3_2_0 -)
+ int headerSection() const;
+%End
+ QMenuItem* menuItem() const;
+ int maxIconWidth() const;
+ int tabWidth() const;
+
+ const QColor& color() const;
+
+ QTab *tab() const;
+
+%If (Qt_3_1_0 -)
+ QCheckListItem *checkListItem() const;
+%End
+ QListViewItem *listViewItem() const;
+
+ Qt::ArrowType arrowType() const;
+%If (Qt_3_1_0 -)
+ QRect rect() const;
+ QWidget *widget() const;
+%End
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+// Not yet defined in Qt v3Beta5.
+class QStyleHintReturn;
+%End
+
+
+%If (Qt_2_00 -)
+
+class QStyle : QObject
+{
+%TypeHeaderCode
+#include <qstyle.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ QStyle();
+%End
+
+%If (- Qt_3_0_0)
+ GUIStyle guiStyle() const;
+%End
+
+ virtual void polish(QWidget *);
+ virtual void unPolish(QWidget *);
+
+ virtual void polish(QApplication *);
+ virtual void unPolish(QApplication *);
+
+ virtual void polish(QPalette &);
+
+%If (Qt_3_0_0 -)
+ virtual void polishPopupMenu(QPopupMenu *) = 0;
+%End
+
+%If (- Qt_3_0_0)
+ virtual QRect itemRect(QPainter *,int,int,int,int,int,bool,
+ const QPixmap *,const QString &,int = -1);
+
+ virtual void drawItem(QPainter *,int,int,int,int,int,
+ const QColorGroup &,bool,const QPixmap *,
+ const QString &,int = -1,const QColor * = 0);
+%End
+%If (Qt_3_0_0 -)
+ virtual QRect itemRect(QPainter *,const QRect &,int,bool,
+ const QPixmap *,const QString &,int = -1) const;
+
+ virtual void drawItem(QPainter *,const QRect &,int,const QColorGroup &,
+ bool,const QPixmap *,const QString &,int = -1,
+ const QColor * = 0) const;
+%End
+
+%If (- Qt_3_0_0)
+ virtual void drawSeparator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool = 1,int = 1,
+ int = 0);
+ virtual void drawRect(QPainter *,int,int,int,int,const QColor &,
+ int = 1,const QBrush * = 0);
+ virtual void drawRectStrong(QPainter *,int,int,int,int,
+ const QColorGroup &,bool = 0,int = 1,
+ int = 0,const QBrush * = 0);
+ virtual void drawButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0) = 0;
+ virtual QRect buttonRect(int,int,int,int);
+ virtual void drawButtonMask(QPainter *,int,int,int,int);
+ virtual void drawBevelButton(QPainter *,int,int,int,int,
+ const QColorGroup &,bool = 0,
+ const QBrush * = 0) = 0;
+%If (Qt_2_1_0 -)
+ QRect bevelButtonRect(int,int,int,int);
+%End
+ virtual void drawToolButton(QPainter *,int,int,int,int,
+ const QColorGroup &,bool = 0,
+ const QBrush * = 0);
+%If (Qt_2_1_0 -)
+ void drawToolButton(QToolButton *,QPainter *);
+ QRect toolButtonRect(int,int,int,int);
+%End
+ virtual void drawPanel(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,int = 1,const QBrush * = 0);
+ virtual void drawPopupPanel(QPainter *,int,int,int,int,
+ const QColorGroup &,int = 2,
+ const QBrush * = 0);
+ virtual void drawArrow(QPainter *,Qt::ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0) = 0;
+ virtual QSize exclusiveIndicatorSize() const = 0;
+ virtual void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,
+ bool = 1) = 0;
+ virtual void drawExclusiveIndicatorMask(QPainter *,int,int,int,int,
+ bool);
+ virtual QSize indicatorSize() const = 0;
+ virtual void drawIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,int,bool = 0,
+ bool = 1) = 0;
+ virtual void drawIndicatorMask(QPainter *,int,int,int,int,int);
+ virtual void drawFocusRect(QPainter *,const QRect &,const QColorGroup &,
+ const QColor * = 0,bool = 0) = 0;
+ virtual void drawComboButton(QPainter *,int,int,int,int,
+ const QColorGroup &,bool = 0,bool = 0,
+ bool = 1,const QBrush * = 0) = 0;
+ virtual QRect comboButtonRect(int,int,int,int) = 0;
+ virtual QRect comboButtonFocusRect(int,int,int,int) = 0;
+ virtual void drawComboButtonMask(QPainter *,int,int,int,int) = 0;
+ virtual void drawPushButton(QPushButton *,QPainter *) = 0;
+ virtual void drawPushButtonLabel(QPushButton *,QPainter *) = 0;
+
+%If (Qt_2_1_0 -)
+ QRect pushButtonContentsRect(QPushButton *);
+ int menuButtonIndicatorWidth(int);
+%End
+
+ virtual void getButtonShift(int &,int &) = 0;
+ virtual int defaultFrameWidth() const = 0;
+ virtual void tabbarMetrics(const QTabBar *,int &,int &,int &) = 0;
+ virtual void drawTab(QPainter *,const QTabBar *,QTab *,bool) = 0;
+ virtual void drawTabMask(QPainter *,const QTabBar* ,QTab* ,bool) = 0;
+
+ enum ScrollControl
+ {
+ AddLine = 0x1,
+ SubLine = 0x2,
+ AddPage = 0x4,
+ SubPage = 0x8,
+ First = 0x10,
+ Last = 0x20,
+ Slider = 0x40,
+ NoScroll = 0x80
+ };
+
+ virtual void scrollBarMetrics(const QScrollBar *,int &,int &,int &,
+ int &) = 0;
+ virtual void drawScrollBarControls(QPainter *,const QScrollBar *,int,
+ uint,uint) = 0;
+ virtual ScrollControl scrollBarPointOver(const QScrollBar *,int,
+ const QPoint &) = 0;
+ virtual int sliderLength() const = 0;
+ virtual void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool) = 0;
+ virtual void drawSliderMask(QPainter *,int,int,int,int,Orientation,
+ bool,bool) = 0;
+ virtual void drawSliderGroove(QPainter *,int,int,int,int,
+ const QColorGroup &,QCOORD,
+ Orientation) = 0;
+ virtual void drawSliderGrooveMask(QPainter *,int,int,int,int,QCOORD,
+ Orientation) = 0;
+ virtual int maximumSliderDragDistance() const = 0;
+ virtual int splitterWidth() const = 0;
+ virtual void drawSplitter(QPainter *,int,int,int,int,
+ const QColorGroup &,Orientation) = 0;
+ virtual void drawCheckMark(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool) = 0;
+ virtual void polishPopupMenu(QPopupMenu *) = 0;
+ virtual int extraPopupMenuItemWidth(bool,int,QMenuItem *,
+ const QFontMetrics &) = 0;
+ virtual int popupSubmenuIndicatorWidth(const QFontMetrics &) = 0;
+ virtual int popupMenuItemHeight(bool,QMenuItem *,
+ const QFontMetrics &) = 0;
+ virtual void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool, bool,int,int,int,
+ int) = 0;
+%If (Qt_2_2_0 -)
+ virtual void drawMenuBarItem(QPainter *,int,int,int,int,QMenuItem *,
+ QColorGroup &,bool,bool);
+%End
+%If (Qt_2_1_0 -)
+ QSize scrollBarExtent();
+ int buttonDefaultIndicatorWidth() const;
+%If (Qt_2_2_0 -)
+ int buttonMargin() const;
+ int toolBarHandleExtent() const;
+ int sliderThickness() const;
+%End
+ int toolBarHandleExtend() const;
+ void drawToolBarHandle(QPainter *,const QRect &,Qt::Orientation,bool,
+ const QColorGroup &,bool = 0);
+%End
+
+%End
+
+%If (Qt_3_0_0 -)
+ enum PrimitiveElement {
+ PE_ButtonCommand,
+ PE_ButtonDefault,
+ PE_ButtonBevel,
+ PE_ButtonTool,
+ PE_ButtonDropDown,
+
+ PE_FocusRect,
+
+ PE_ArrowUp,
+ PE_ArrowDown,
+ PE_ArrowRight,
+ PE_ArrowLeft,
+
+ PE_SpinWidgetUp,
+ PE_SpinWidgetDown,
+ PE_SpinWidgetPlus,
+ PE_SpinWidgetMinus,
+
+ PE_Indicator,
+ PE_IndicatorMask,
+ PE_ExclusiveIndicator,
+ PE_ExclusiveIndicatorMask,
+
+ PE_DockWindowHandle,
+ PE_DockWindowSeparator,
+ PE_DockWindowResizeHandle,
+
+ PE_Splitter,
+
+ PE_Panel,
+ PE_PanelPopup,
+ PE_PanelMenuBar,
+ PE_PanelDockWindow,
+
+ PE_TabBarBase,
+
+ PE_HeaderSection,
+ PE_HeaderArrow,
+ PE_StatusBarSection,
+
+ PE_GroupBoxFrame,
+
+ PE_Separator,
+
+ PE_SizeGrip,
+
+ PE_CheckMark,
+
+ PE_ScrollBarAddLine,
+ PE_ScrollBarSubLine,
+ PE_ScrollBarAddPage,
+ PE_ScrollBarSubPage,
+ PE_ScrollBarSlider,
+ PE_ScrollBarFirst,
+ PE_ScrollBarLast,
+
+ PE_ProgressBarChunk,
+
+%If (Qt_3_0_1 -)
+ PE_PanelLineEdit,
+ PE_PanelTabWidget,
+
+ PE_WindowFrame,
+%End
+%If (Qt_3_1_0 -)
+ PE_CheckListController,
+ PE_CheckListIndicator,
+ PE_CheckListExclusiveIndicator,
+
+ PE_PanelGroupBox,
+%End
+%If (Qt_3_0_4 - Qt_3_0_5)
+ PE_PopupMenuScroller,
+%End
+%If (Qt_3_3_0 -)
+ PE_RubberBand,
+%End
+
+ PE_CustomBase
+ };
+
+ enum StyleFlags {
+ Style_Default,
+ Style_Enabled,
+ Style_Raised,
+ Style_Sunken,
+ Style_Off,
+ Style_NoChange,
+ Style_On,
+ Style_Down,
+ Style_Horizontal,
+ Style_HasFocus,
+ Style_Top,
+ Style_Bottom,
+ Style_FocusAtBorder,
+ Style_AutoRaise,
+ Style_MouseOver,
+ Style_Up,
+ Style_Selected,
+ Style_Active,
+ Style_ButtonDefault
+ };
+
+ typedef uint SFlags;
+
+ virtual void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ enum ControlElement {
+ CE_PushButton,
+ CE_PushButtonLabel,
+
+ CE_CheckBox,
+ CE_CheckBoxLabel,
+
+ CE_RadioButton,
+ CE_RadioButtonLabel,
+
+ CE_TabBarTab,
+ CE_TabBarLabel,
+
+ CE_ProgressBarGroove,
+ CE_ProgressBarContents,
+ CE_ProgressBarLabel,
+
+ CE_PopupMenuItem,
+ CE_MenuBarItem,
+
+ CE_ToolButtonLabel,
+%If (Qt_3_1_0 -)
+ CE_MenuBarEmptyArea,
+%End
+%If (Qt_3_0_5 -)
+ CE_PopupMenuScroller,
+%End
+%If (Qt_3_1_0 -)
+ CE_DockWindowEmptyArea,
+%End
+%If (Qt_3_2_0 -)
+ CE_PopupMenuVerticalExtra,
+ CE_PopupMenuHorizontalExtra,
+
+ CE_ToolBoxTab,
+ CE_HeaderLabel,
+%End
+
+ CE_CustomBase
+ };
+
+ virtual void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const = 0;
+ virtual void drawControlMask(ControlElement,QPainter *,const QWidget *,
+ const QRect &,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ enum SubRect {
+ SR_PushButtonContents,
+ SR_PushButtonFocusRect,
+
+ SR_CheckBoxIndicator,
+ SR_CheckBoxContents,
+ SR_CheckBoxFocusRect,
+
+ SR_RadioButtonIndicator,
+ SR_RadioButtonContents,
+ SR_RadioButtonFocusRect,
+
+ SR_ComboBoxFocusRect,
+
+ SR_SliderFocusRect,
+
+ SR_DockWindowHandleRect,
+
+ SR_ProgressBarGroove,
+ SR_ProgressBarContents,
+ SR_ProgressBarLabel,
+
+ SR_ToolButtonContents,
+
+%If (Qt_3_2_0 -)
+ SR_DialogButtonAccept,
+ SR_DialogButtonReject,
+ SR_DialogButtonApply,
+ SR_DialogButtonHelp,
+ SR_DialogButtonAll,
+ SR_DialogButtonAbort,
+ SR_DialogButtonIgnore,
+ SR_DialogButtonRetry,
+ SR_DialogButtonCustom,
+
+ SR_ToolBoxTabContents,
+%End
+
+ SR_CustomBase
+ };
+
+ virtual QRect subRect(SubRect,const QWidget *) const = 0;
+
+ enum ComplexControl{
+ CC_SpinWidget,
+ CC_ComboBox,
+ CC_ScrollBar,
+ CC_Slider,
+ CC_ToolButton,
+ CC_TitleBar,
+ CC_ListView,
+
+ CC_CustomBase
+ };
+
+ enum SubControl {
+ SC_None,
+
+ SC_ScrollBarAddLine,
+ SC_ScrollBarSubLine,
+ SC_ScrollBarAddPage,
+ SC_ScrollBarSubPage,
+ SC_ScrollBarFirst,
+ SC_ScrollBarLast,
+ SC_ScrollBarSlider,
+ SC_ScrollBarGroove,
+
+ SC_SpinWidgetUp,
+ SC_SpinWidgetDown,
+ SC_SpinWidgetFrame,
+ SC_SpinWidgetEditField,
+ SC_SpinWidgetButtonField,
+
+ SC_ComboBoxFrame,
+ SC_ComboBoxEditField,
+ SC_ComboBoxArrow,
+%If (Qt_3_1_0 -)
+ SC_ComboBoxListBoxPopup,
+%End
+
+ SC_SliderGroove,
+ SC_SliderHandle,
+ SC_SliderTickmarks,
+
+ SC_ToolButton,
+ SC_ToolButtonMenu,
+
+ SC_TitleBarLabel,
+ SC_TitleBarSysMenu,
+ SC_TitleBarMinButton,
+ SC_TitleBarMaxButton,
+ SC_TitleBarCloseButton,
+ SC_TitleBarNormalButton,
+ SC_TitleBarShadeButton,
+ SC_TitleBarUnshadeButton,
+
+ SC_ListView,
+ SC_ListViewBranch,
+ SC_ListViewExpand,
+
+ SC_All
+ };
+
+ typedef uint SCFlags;
+
+ virtual void drawComplexControl(ComplexControl,QPainter *,
+ const QWidget *,const QRect &,
+ const QColorGroup &,
+ SFlags = Style_Default,
+ SCFlags = SC_All,SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const = 0;
+ virtual void drawComplexControlMask(ComplexControl,QPainter *,
+ const QWidget *,const QRect &,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ virtual QRect querySubControlMetrics(ComplexControl,
+ const QWidget *,SubControl,
+ const QStyleOption & = QStyleOption()) const = 0;
+ virtual SubControl querySubControl(ComplexControl,const QWidget *,
+ const QPoint &,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ enum PixelMetric {
+ PM_ButtonMargin,
+ PM_ButtonDefaultIndicator,
+ PM_MenuButtonIndicator,
+ PM_ButtonShiftHorizontal,
+ PM_ButtonShiftVertical,
+
+ PM_DefaultFrameWidth,
+ PM_SpinBoxFrameWidth,
+
+ PM_MaximumDragDistance,
+
+ PM_ScrollBarExtent,
+ PM_ScrollBarSliderMin,
+
+ PM_SliderThickness,
+ PM_SliderControlThickness,
+ PM_SliderLength,
+ PM_SliderTickmarkOffset,
+ PM_SliderSpaceAvailable,
+
+ PM_DockWindowSeparatorExtent,
+ PM_DockWindowHandleExtent,
+ PM_DockWindowFrameWidth,
+
+ PM_MenuBarFrameWidth,
+
+ PM_TabBarTabOverlap,
+ PM_TabBarTabHSpace,
+ PM_TabBarTabVSpace,
+ PM_TabBarBaseHeight,
+ PM_TabBarBaseOverlap,
+
+ PM_ProgressBarChunkWidth,
+
+ PM_SplitterWidth,
+ PM_TitleBarHeight,
+
+ PM_IndicatorWidth,
+ PM_IndicatorHeight,
+ PM_ExclusiveIndicatorWidth,
+ PM_ExclusiveIndicatorHeight,
+%If (Qt_3_0_4 -)
+ PM_PopupMenuScrollerHeight,
+%End
+%If (Qt_3_1_0 -)
+ PM_CheckListButtonSize,
+%End
+%If (Qt_3_2_0 -)
+ PM_CheckListControllerSize,
+ PM_PopupMenuFrameHorizontalExtra,
+ PM_PopupMenuFrameVerticalExtra,
+
+ PM_DialogButtonsSeparator,
+ PM_DialogButtonsButtonWidth,
+ PM_DialogButtonsButtonHeight,
+
+ PM_MDIFrameWidth,
+ PM_MDIMinimizedWidth,
+ PM_HeaderMargin,
+ PM_HeaderMarkSize,
+ PM_HeaderGripMargin,
+ PM_TabBarTabShiftHorizontal,
+ PM_TabBarTabShiftVertical,
+%End
+%If (Qt_3_3_0 -)
+ PM_TabBarScrollButtonWidth,
+
+ PM_MenuBarItemSpacing,
+ PM_ToolBarItemSpacing,
+%End
+
+ PM_CustomBase
+ };
+
+ virtual int pixelMetric(PixelMetric,const QWidget * = 0) const = 0;
+
+ enum ContentsType {
+ CT_PushButton,
+ CT_CheckBox,
+ CT_RadioButton,
+ CT_ToolButton,
+ CT_ComboBox,
+ CT_Splitter,
+ CT_DockWindow,
+ CT_ProgressBar,
+ CT_PopupMenuItem,
+%If (Qt_3_1_0 -)
+ CT_TabBarTab,
+ CT_Slider,
+ CT_Header,
+ CT_LineEdit,
+ CT_MenuBar,
+ CT_SpinBox,
+%End
+%If (Qt_3_2_0 -)
+ CT_SizeGrip,
+ CT_TabWidget,
+ CT_DialogButtons,
+%End
+
+ CT_CustomBase
+ };
+
+ virtual QSize sizeFromContents(ContentsType,const QWidget *,
+ const QSize &,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ enum StyleHint {
+ SH_EtchDisabledText,
+
+ SH_GUIStyle,
+
+ SH_ScrollBar_BackgroundMode,
+ SH_ScrollBar_MiddleClickAbsolutePosition,
+ SH_ScrollBar_ScrollWhenPointerLeavesControl,
+
+ SH_TabBar_SelectMouseType,
+
+ SH_TabBar_Alignment,
+
+ SH_Header_ArrowAlignment,
+
+ SH_Slider_SnapToValue,
+
+ SH_Slider_SloppyKeyEvents,
+
+ SH_ProgressDialog_CenterCancelButton,
+
+ SH_ProgressDialog_TextLabelAlignment,
+
+ SH_PrintDialog_RightAlignButtons,
+
+ SH_MainWindow_SpaceBelowMenuBar,
+
+ SH_FontDialog_SelectAssociatedText,
+
+ SH_PopupMenu_AllowActiveAndDisabled,
+
+ SH_PopupMenu_SpaceActivatesItem,
+
+ SH_PopupMenu_SubMenuPopupDelay,
+
+ SH_ScrollView_FrameOnlyAroundContents,
+
+ SH_MenuBar_AltKeyNavigation,
+
+ SH_ComboBox_ListMouseTracking,
+
+ SH_PopupMenu_MouseTracking,
+
+ SH_MenuBar_MouseTracking,
+
+ SH_ItemView_ChangeHighlightOnFocus,
+
+ SH_Widget_ShareActivation,
+
+ SH_Workspace_FillSpaceOnMaximize,
+
+ SH_ComboBox_Popup,
+
+%If (Qt_3_0_1 -)
+ SH_TitleBar_NoBorder,
+
+ SH_ScrollBar_StopMouseOverSlider,
+%End
+
+%If (Qt_3_0_2 -)
+ SH_BlinkCursorWhenTextSelected,
+
+ SH_RichText_FullWidthSelection,
+%End
+
+%If (Qt_3_0_4 -)
+ SH_PopupMenu_Scrollable,
+%End
+
+%If (Qt_3_1_0 -)
+ SH_GroupBox_TextLabelVerticalAlignment,
+
+ SH_GroupBox_TextLabelColor,
+
+ SH_PopupMenu_SloppySubMenus,
+%End
+
+%If (Qt_3_2_0 -)
+ SH_Table_GridLineColor,
+
+ SH_LineEdit_PasswordCharacter,
+
+ SH_DialogButtons_DefaultButton,
+
+ SH_ToolBox_SelectedPageTitleBold,
+
+ SH_TabBar_PreferNoArrows,
+
+ SH_ScrollBar_LeftClickAbsolutePosition,
+
+ SH_ListViewExpand_SelectMouseType,
+%End
+
+%If (Qt_3_3_0 -)
+ SH_UnderlineAccelerator,
+
+ SH_ToolButton_Uses3D,
+%End
+
+ SH_CustomBase
+ };
+
+ virtual int styleHint(StyleHint,const QWidget * = 0,
+ const QStyleOption & = QStyleOption(),
+ QStyleHintReturn * = 0) const = 0;
+
+ enum StylePixmap {
+ SP_TitleBarMinButton,
+ SP_TitleBarMaxButton,
+ SP_TitleBarCloseButton,
+ SP_TitleBarNormalButton,
+ SP_TitleBarShadeButton,
+ SP_TitleBarUnshadeButton,
+ SP_DockWindowCloseButton,
+ SP_MessageBoxInformation,
+ SP_MessageBoxWarning,
+ SP_MessageBoxCritical,
+%If (Qt_3_2_0 -)
+ SP_MessageBoxQuestion,
+%End
+
+ SP_CustomBase
+ };
+
+ virtual QPixmap stylePixmap(StylePixmap,const QWidget * = 0,
+ const QStyleOption & = QStyleOption()) const = 0;
+
+ static QRect visualRect(const QRect &,const QWidget *);
+
+ static QRect visualRect(const QRect &,const QRect &);
+%End
+
+protected:
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setScrollBarExtent(int,int = -1);
+ void setButtonDefaultIndicatorWidth(int);
+%End
+
+private:
+%If (- Qt_3_0_0)
+ QStyle();
+ QStyle(GUIStyle);
+%End
+%If (Qt_2_1_0 -)
+ QStyle(const QStyle &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qstylefactory.sip b/python/pyqt/sip/qt/qstylefactory.sip
new file mode 100644
index 00000000..9249c625
--- /dev/null
+++ b/python/pyqt/sip/qt/qstylefactory.sip
@@ -0,0 +1,45 @@
+// This is the SIP interface definition for QStyleFactory.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStyleFactory (Qt v3+)</Title>
+<Para>
+<Literal>QStyleFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QStyleFactory
+{
+%TypeHeaderCode
+#include <qstylefactory.h>
+%End
+
+public:
+ static QStringList keys();
+ static QStyle *create(const QString &) /Factory/;
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qstylesheet.sip b/python/pyqt/sip/qt/qstylesheet.sip
new file mode 100644
index 00000000..c248e568
--- /dev/null
+++ b/python/pyqt/sip/qt/qstylesheet.sip
@@ -0,0 +1,239 @@
+// This is the SIP interface definition for QStyleSheet and QStyleSheetItem.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QStyleSheet (Qt v2+)</Title>
+<Para>
+<Literal>QStyleSheet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QStyleSheetItem (Qt v2+)</Title>
+<Para>
+<Literal>QStyleSheetItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QStyleSheetItem : Qt
+{
+%TypeHeaderCode
+#include <qstylesheet.h>
+%End
+
+public:
+ QStyleSheetItem(QStyleSheet * /TransferThis/,const QString &);
+
+ QString name() const;
+
+ QStyleSheet *styleSheet();
+// const QStyleSheet *styleSheet() const;
+
+ enum AdditionalStyleValues {
+ Undefined
+ };
+
+ enum DisplayMode {
+ DisplayBlock,
+ DisplayInline,
+ DisplayListItem,
+ DisplayNone
+ };
+
+ DisplayMode displayMode() const;
+ void setDisplayMode(DisplayMode);
+
+ int alignment() const;
+ void setAlignment(int);
+
+%If (Qt_3_0_0 -)
+ enum VerticalAlignment {
+ VAlignBaseline,
+ VAlignSub,
+ VAlignSuper
+ };
+
+ VerticalAlignment verticalAlignment() const;
+ void setVerticalAlignment(VerticalAlignment);
+%End
+
+ int fontWeight() const;
+ void setFontWeight(int);
+
+ int logicalFontSize() const;
+ void setLogicalFontSize(int);
+
+ int logicalFontSizeStep() const;
+ void setLogicalFontSizeStep(int);
+
+ int fontSize() const;
+ void setFontSize(int);
+
+ QString fontFamily() const;
+ void setFontFamily(const QString &);
+
+ int numberOfColumns() const;
+ void setNumberOfColumns(int);
+
+ QColor color() const;
+ void setColor(const QColor &);
+
+ bool fontItalic() const;
+ void setFontItalic(bool);
+ bool definesFontItalic() const;
+
+ bool fontUnderline() const;
+ void setFontUnderline(bool);
+ bool definesFontUnderline() const;
+
+%If (Qt_3_0_5 -)
+ bool fontStrikeOut() const;
+ void setFontStrikeOut(bool);
+ bool definesFontStrikeOut() const;
+%End
+
+ bool isAnchor() const;
+ void setAnchor(bool);
+
+%If (- Qt_2_1_0)
+ enum WhiteSpaceMode {
+ WhiteSpaceNormal,
+ WhiteSpacePre
+ };
+%End
+%If (Qt_2_1_0 -)
+ enum WhiteSpaceMode {
+ WhiteSpaceNormal,
+ WhiteSpacePre,
+ WhiteSpaceNoWrap
+ };
+%End
+
+ WhiteSpaceMode whiteSpaceMode() const;
+ void setWhiteSpaceMode(WhiteSpaceMode);
+
+%If (- Qt_3_0_0)
+ enum Margin {
+ MarginLeft,
+ MarginRight,
+ MarginTop,
+ MarginBottom,
+ MarginAll,
+ MarginVertical,
+ MarginHorizontal
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum Margin {
+ MarginLeft,
+ MarginRight,
+ MarginTop,
+ MarginBottom,
+ MarginFirstLine,
+ MarginAll,
+ MarginVertical,
+ MarginHorizontal
+ };
+%End
+
+ int margin(Margin) const;
+ void setMargin(Margin,int);
+
+ enum ListStyle {
+ ListDisc,
+ ListCircle,
+ ListSquare,
+ ListDecimal,
+ ListLowerAlpha,
+ ListUpperAlpha
+ };
+
+ ListStyle listStyle() const;
+ void setListStyle(ListStyle);
+
+ QString contexts() const;
+ void setContexts(const QString &);
+ bool allowedInContext(const QStyleSheetItem *) const;
+
+ bool selfNesting() const;
+ void setSelfNesting(bool);
+
+%If (Qt_3_0_0 -)
+ void setLineSpacing(int);
+ int lineSpacing() const;
+%End
+};
+
+
+class QStyleSheet : QObject
+{
+%TypeHeaderCode
+#include <qstylesheet.h>
+%End
+
+public:
+ QStyleSheet(QObject * /TransferThis/ = 0,const char * = 0);
+
+ static QStyleSheet *defaultSheet();
+ static void setDefaultSheet(QStyleSheet *);
+
+ QStyleSheetItem *item(const QString &);
+// const QStyleSheetItem *item(const QString &) const;
+
+ void insert(QStyleSheetItem *);
+
+%If (- Qt_3_0_0)
+// virtual QTextNode *tag(const QString &,const QMap<QString,QString> &,
+// const QString &,const QMimeSourceFactory &,
+// bool = 0) const;
+%End
+%If (Qt_3_0_0 -)
+// virtual QTextCustomItem *tag(const QString &,
+// const QMap<QString,QString> &,
+// const QString &,
+// const QMimeSourceFactory &,bool,
+// QTextDocument *) const;
+%End
+
+%If (Qt_3_0_0 -)
+ static QString escape(const QString &);
+ static QString convertFromPlainText(const QString &,
+ QStyleSheetItem::WhiteSpaceMode = QStyleSheetItem::WhiteSpacePre);
+%End
+%If (- Qt_3_0_0)
+ static QString convertFromPlainText(const QString &);
+%End
+ static bool mightBeRichText(const QString &);
+
+ virtual void scaleFont(QFont &,int) const;
+ virtual void error(const QString &) const;
+
+private:
+%If (Qt_3_1_0 -)
+ QStyleSheet(const QStyleSheet &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qsyntaxhighlighter.sip b/python/pyqt/sip/qt/qsyntaxhighlighter.sip
new file mode 100644
index 00000000..13d24e8d
--- /dev/null
+++ b/python/pyqt/sip/qt/qsyntaxhighlighter.sip
@@ -0,0 +1,57 @@
+// This is the SIP interface definition for QSyntaxHighlighter.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSyntaxHighlighter (Qt v3.1+)</Title>
+<Para>
+<Literal>QSyntaxHighlighter</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_1_0 -)
+
+class QSyntaxHighlighter : Qt
+{
+%TypeHeaderCode
+#include <qsyntaxhighlighter.h>
+%End
+
+public:
+ QSyntaxHighlighter(QTextEdit * /TransferThis/);
+
+ virtual int highlightParagraph(const QString &,int) = 0;
+
+ void setFormat(int,int,const QFont &,const QColor &);
+ void setFormat(int,int,const QColor &);
+ void setFormat(int,int,const QFont &);
+ QTextEdit *textEdit() const;
+
+ void rehighlight();
+
+%If (Qt_3_2_0 -)
+ int currentParagraph() const;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtabbar.sip b/python/pyqt/sip/qt/qtabbar.sip
new file mode 100644
index 00000000..dede1bd0
--- /dev/null
+++ b/python/pyqt/sip/qt/qtabbar.sip
@@ -0,0 +1,264 @@
+// This is the SIP interface definition for QTab and QTabBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTab</Title>
+<Para>
+<Literal>QTab</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTabBar</Title>
+<FuncSynopsis>
+ <FuncDef>QList&lt;QTab&gt; <Function>tabList</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a list of <Literal>QTab</Literal> instances.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QTab : Qt
+{
+%TypeHeaderCode
+#include <qtabbar.h>
+%End
+
+public:
+ QTab();
+ QTab(const QString &);
+ QTab(const QIconSet &,const QString & = QString::null);
+ virtual ~QTab();
+
+ void setText(const QString &);
+ QString text() const;
+ void setIconSet(const QIconSet &);
+ QIconSet *iconSet() const;
+ void setRect(const QRect &);
+ QRect rect() const;
+ void setEnabled(bool);
+ bool isEnabled() const;
+ void setIdentifier(int);
+ int identifier() const;
+};
+
+%End
+
+%If (- Qt_3_0_0)
+
+class QTab
+{
+%TypeHeaderCode
+#include <qtabbar.h>
+%End
+
+public:
+ QTab();
+%If (Qt_2_1_0 -)
+ QTab(const QString &);
+ QTab(const QIconSet &,const QString & = QString::null);
+%End
+ virtual ~QTab();
+
+ QString label;
+ QRect r;
+ bool enabled;
+ int id;
+ QIconSet *iconset;
+};
+
+%End
+
+
+class QTabBar : QWidget
+{
+%TypeHeaderCode
+#include <qtabbar.h>
+%End
+
+public:
+ QTabBar(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ enum Shape {
+ RoundedAbove,
+ RoundedBelow,
+ TriangularAbove,
+ TriangularBelow
+ };
+
+ Shape shape() const;
+%If (- Qt_2_00)
+ void setShape(Shape);
+%End
+%If (Qt_2_00 -)
+ virtual void setShape(Shape);
+%End
+
+ void show();
+
+ virtual int addTab(QTab * /Transfer/);
+%If (Qt_2_00 -)
+ virtual int insertTab(QTab * /Transfer/,int = -1);
+ virtual void removeTab(QTab *);
+%End
+
+%If (- Qt_2_00)
+ void setTabEnabled(int,bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setTabEnabled(int,bool);
+%End
+ bool isTabEnabled(int) const;
+
+ QSize sizeHint() const;
+%If (Qt_2_2_0 -)
+ QSize minimumSizeHint() const;
+%End
+%If (Qt_2_00 -)
+ QSizePolicy sizePolicy() const;
+%End
+
+ int currentTab() const;
+ int keyboardFocusTab() const;
+
+%If (- Qt_3_0_0)
+ QTab *tab(int);
+%End
+%If (Qt_3_0_0 -)
+ QTab *tab(int) const;
+ QTab *tabAt(int) const;
+ int indexOf(int) const;
+%End
+%If (Qt_2_2_0 -)
+ int count() const;
+%End
+
+%If (Qt_2_00 -)
+ virtual void layoutTabs();
+%End
+%If (Qt_3_0_0 -)
+ virtual QTab *selectTab(const QPoint &) const;
+
+ void removeToolTip(int);
+ void setToolTip(int,const QString &);
+ QString toolTip(int) const;
+%End
+
+public slots:
+%If (- Qt_2_00)
+ void setCurrentTab(int);
+ void setCurrentTab(QTab *);
+%End
+%If (Qt_2_00 -)
+ virtual void setCurrentTab(int);
+ virtual void setCurrentTab(QTab *);
+%End
+
+signals:
+ void selected(int);
+%If (Qt_3_2_0 -)
+ void layoutChanged();
+%End
+
+protected:
+ virtual void paint(QPainter *,QTab *,bool) const;
+%If (Qt_2_00 -)
+ virtual void paintLabel(QPainter *,const QRect &,QTab *,bool) const;
+%End
+
+%If (- Qt_3_0_0)
+ virtual QTab *selectTab(const QPoint &) const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ void updateMask();
+%End
+
+%If (Qt_2_1_0 -)
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+
+ void resizeEvent(QResizeEvent *);
+%End
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+%If (Qt_3_0_0 -)
+ void mouseMoveEvent(QMouseEvent *);
+%End
+ void mouseReleaseEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_1_0 -)
+ void styleChange(QStyle &);
+%End
+%If (Qt_3_0_0 -)
+ void fontChange(const QFont &);
+%End
+
+%If (Qt_3_1_0 -)
+ bool event(QEvent *);
+%End
+
+ SIP_PYLIST tabList() [QList<QTab> *()];
+%MethodCode
+ if ((sipRes = PyList_New(0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ QList<QTab> *tl;
+ QTab *tab;
+
+ Py_BEGIN_ALLOW_THREADS
+ tl = sipCpp -> sipProtect_tabList();
+ Py_END_ALLOW_THREADS
+
+ // Convert the list.
+ for (QListIterator<QTab> it(*tl); (tab = it.current()) != NULL; ++it)
+ {
+ PyObject *inst = sipBuildResult(&sipIsErr,"C",tab,sipClass_QTab,NULL);
+
+ if (sipIsErr)
+ break;
+
+ int rc = PyList_Append(sipRes,inst);
+
+ Py_DECREF(inst);
+
+ if (rc < 0)
+ {
+ sipIsErr = 1;
+ break;
+ }
+ }
+
+ if (sipIsErr)
+ Py_DECREF(sipRes);
+ }
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QTabBar(const QTabBar &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qtabdialog.sip b/python/pyqt/sip/qt/qtabdialog.sip
new file mode 100644
index 00000000..115cf9d7
--- /dev/null
+++ b/python/pyqt/sip/qt/qtabdialog.sip
@@ -0,0 +1,167 @@
+// This is the SIP interface definition for QTabDialog.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTabDialog</Title>
+<Para>
+<Literal>QTabDialog</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_TABDIALOG)
+
+class QTabDialog : QDialog
+{
+%TypeHeaderCode
+#include <qtabdialog.h>
+%End
+
+public:
+ QTabDialog(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+
+ void show();
+ void setFont(const QFont &);
+
+%If (- Qt_2_00)
+ void addTab(QWidget *,const char *);
+%End
+%If (Qt_2_00 -)
+ void addTab(QWidget *,const QString &);
+ void addTab(QWidget *,const QIconSet &,const QString &);
+%End
+ void addTab(QWidget *,QTab *);
+
+%If (Qt_2_00 -)
+ void insertTab(QWidget *,const QString &,int = -1);
+ void insertTab(QWidget *,const QIconSet &,const QString &,int = -1);
+ void insertTab(QWidget *,QTab *,int = -1);
+
+ void changeTab(QWidget *,const QString &);
+ void changeTab(QWidget *,const QIconSet &,const QString &);
+%End
+
+%If (Qt_2_00 -)
+ bool isTabEnabled(QWidget *) const;
+ void setTabEnabled(QWidget *,bool);
+%End
+%If (- Qt_3_0_0)
+ bool isTabEnabled(const char *) const;
+ void setTabEnabled(const char *,bool);
+%End
+
+ void showPage(QWidget *);
+%If (Qt_2_00 -)
+ void removePage(QWidget *);
+ QString tabLabel(QWidget *);
+%End
+%If (- Qt_2_00)
+ const char *tabLabel(QWidget *);
+%End
+
+%If (Qt_2_00 -)
+ QWidget *currentPage() const;
+%End
+
+%If (- Qt_2_00)
+ void setDefaultButton(const char * = "Defaults");
+%End
+%If (Qt_2_00 -)
+ void setDefaultButton(const QString &);
+ void setDefaultButton();
+%End
+ bool hasDefaultButton() const;
+
+%If (Qt_2_00 -)
+ void setHelpButton(const QString &);
+ void setHelpButton();
+ bool hasHelpButton() const;
+%End
+
+%If (- Qt_2_00)
+ void setCancelButton(const char * = "Cancel");
+%End
+%If (Qt_2_00 -)
+ void setCancelButton(const QString &);
+ void setCancelButton();
+%End
+ bool hasCancelButton() const;
+
+%If (- Qt_2_00)
+ void setApplyButton(const char * = "Apply");
+%End
+%If (Qt_2_00 -)
+ void setApplyButton(const QString &);
+ void setApplyButton();
+%End
+ bool hasApplyButton() const;
+
+%If (- Qt_2_00)
+ void setOkButton(const char * = "OK");
+%End
+%If (Qt_2_00 -)
+ void setOkButton(const QString &);
+ void setOkButton();
+%End
+ bool hasOkButton() const;
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+%If (- Qt_2_00)
+ void styleChange(GUIStyle);
+%End
+%If (Qt_2_00 -)
+ void styleChange(QStyle &);
+%End
+ void setTabBar(QTabBar *);
+ QTabBar *tabBar() const;
+
+signals:
+ void aboutToShow();
+
+ void applyButtonPressed();
+ void cancelButtonPressed();
+ void defaultButtonPressed();
+%If (Qt_2_00 -)
+ void helpButtonPressed();
+%End
+
+%If (Qt_2_2_0 -)
+ void currentChanged(QWidget *);
+%End
+%If (- Qt_2_00)
+ void selected(const char *);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ void selected(const QString &);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QTabDialog(const QTabDialog &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtableview.sip b/python/pyqt/sip/qt/qtableview.sip
new file mode 100644
index 00000000..a2159be7
--- /dev/null
+++ b/python/pyqt/sip/qt/qtableview.sip
@@ -0,0 +1,185 @@
+// This is the SIP interface definition for QTableView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTableView (Qt 1.x, Qt 2.x)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>colXPos</Function></FuncDef>
+ <ParamDef>int <Parameter>col</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>xPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>col</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result and <Literal>xPos</Literal>.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>rowYPos</Function></FuncDef>
+ <ParamDef>int <Parameter>row</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>yPos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>row</Literal> parameter and returns a tuple containing
+the <Literal>bool</Literal> result and <Literal>yPos</Literal>.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_TABLEVIEW)
+%If (- Qt_3_0_0)
+
+%ModuleHeaderCode
+#include <qtableview.h>
+%End
+
+const uint Tbl_vScrollBar;
+const uint Tbl_hScrollBar;
+const uint Tbl_autoVScrollBar;
+const uint Tbl_autoHScrollBar;
+const uint Tbl_autoScrollBars;
+
+const uint Tbl_clipCellPainting;
+const uint Tbl_cutCellsV;
+const uint Tbl_cutCellsH;
+const uint Tbl_cutCells;
+
+const uint Tbl_scrollLastHCell;
+const uint Tbl_scrollLastVCell;
+const uint Tbl_scrollLastCell;
+
+const uint Tbl_smoothHScrolling;
+const uint Tbl_smoothVScrolling;
+const uint Tbl_smoothScrolling;
+
+const uint Tbl_snapToHGrid;
+const uint Tbl_snapToVGrid;
+const uint Tbl_snapToGrid;
+
+
+class QTableView : QFrame
+{
+%TypeHeaderCode
+#include <qtableview.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ void setBackgroundColor(const QColor &);
+ void setPalette(const QPalette &);
+%End
+%If (Qt_2_00 -)
+ virtual void setBackgroundColor(const QColor &);
+ virtual void setPalette(const QPalette &);
+%End
+ void show();
+ void repaint(bool = 1);
+ void repaint(int,int,int,int,bool = 1);
+ void repaint(const QRect &,bool = 1);
+
+protected:
+ QTableView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ ~QTableView();
+
+ int numRows() const;
+ int numCols() const;
+ int topCell() const;
+ int leftCell() const;
+ int xOffset() const;
+ int yOffset() const;
+ virtual int cellWidth(int);
+ virtual int cellHeight(int);
+ int cellWidth() const;
+ int cellHeight() const;
+ virtual int totalWidth();
+ virtual int totalHeight();
+ uint tableFlags() const;
+ bool testTableFlags(uint) const;
+ void clearTableFlags(uint = ~0);
+ bool autoUpdate() const;
+ void updateCell(int,int,bool = 1);
+ QRect cellUpdateRect() const;
+ QRect viewRect() const;
+ int lastRowVisible() const;
+ int lastColVisible() const;
+ bool rowIsVisible(int) const;
+ bool colIsVisible(int) const;
+ const QScrollBar *verticalScrollBar() const;
+ const QScrollBar *horizontalScrollBar() const;
+ virtual void paintCell(QPainter *,int,int) = 0;
+ virtual void setupPainter(QPainter *);
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+ int findRow(int) const;
+ int findCol(int) const;
+ bool rowYPos(int,int *) const;
+ bool colXPos(int,int *) const;
+ int maxXOffset();
+ int maxYOffset();
+ int maxColOffset();
+ int maxRowOffset();
+ int minViewX() const;
+ int minViewY() const;
+ int maxViewX() const;
+ int maxViewY() const;
+ int viewWidth() const;
+ int viewHeight() const;
+ void scroll(int,int);
+ void updateScrollBars();
+ void updateTableSize();
+
+%If (- Qt_2_00)
+ void setNumRows(int);
+ void setNumCols(int);
+ void setTopCell(int);
+ void setLeftCell(int);
+ void setTopLeftCell(int,int);
+ void setXOffset(int);
+ void setYOffset(int);
+ void setOffset(int,int,bool = 1);
+ void setCellWidth(int);
+ void setCellHeight(int);
+ void setTableFlags(uint);
+ void setAutoUpdate(bool);
+%End
+
+%If (Qt_2_00 -)
+ virtual void setNumRows(int);
+ virtual void setNumCols(int);
+ virtual void setTopCell(int);
+ virtual void setLeftCell(int);
+ virtual void setTopLeftCell(int,int);
+ virtual void setXOffset(int);
+ virtual void setYOffset(int);
+ virtual void setOffset(int,int,bool = 1);
+ virtual void setCellWidth(int);
+ virtual void setCellHeight(int);
+ virtual void setTableFlags(uint);
+ virtual void setAutoUpdate(bool);
+%End
+
+private:
+ QTableView(const QTableView &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qtabwidget.sip b/python/pyqt/sip/qt/qtabwidget.sip
new file mode 100644
index 00000000..2f78472e
--- /dev/null
+++ b/python/pyqt/sip/qt/qtabwidget.sip
@@ -0,0 +1,177 @@
+// This is the SIP interface definition for QTabWidget.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTabWidget (Qt v2+)</Title>
+<Para>
+<Literal>QTabWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QTabWidget : QWidget
+{
+%TypeHeaderCode
+#include <qtabwidget.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ QTabWidget(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ QTabWidget(QWidget * /TransferThis/,const char *,WFlags);
+%End
+%If (- Qt_3_0_0)
+ QTabWidget(QWidget * /TransferThis/ = 0,const char * = 0);
+%End
+
+ // The QWidget is passed to QWidgetStack::addWidget().
+%If (- Qt_3_0_0)
+ void addTab(QWidget * /Transfer/,const QString &);
+ void addTab(QWidget * /Transfer/,const QIconSet &,const QString &);
+ void addTab(QWidget * /Transfer/,QTab *);
+
+ void insertTab(QWidget * /Transfer/,const QString &,int = -1);
+ void insertTab(QWidget * /Transfer/,const QIconSet &,const QString &,
+ int = -1);
+ void insertTab(QWidget * /Transfer/,QTab *,int = -1);
+%End
+%If (Qt_3_0_0 -)
+ virtual void addTab(QWidget * /Transfer/,const QString &);
+ virtual void addTab(QWidget * /Transfer/,const QIconSet &,
+ const QString &);
+ virtual void addTab(QWidget * /Transfer/,QTab *);
+
+ virtual void insertTab(QWidget * /Transfer/,const QString &,int = -1);
+ virtual void insertTab(QWidget * /Transfer/,const QIconSet &,
+ const QString &,int = -1);
+ virtual void insertTab(QWidget * /Transfer/,QTab *,int = -1);
+%End
+
+ void changeTab(QWidget *,const QString &);
+ void changeTab(QWidget *,const QIconSet &,const QString &);
+
+ bool isTabEnabled(QWidget *) const;
+ void setTabEnabled(QWidget *,bool);
+
+%If (Qt_3_2_0 -)
+ void setCornerWidget(QWidget *,Qt::Corner = Qt::TopRight);
+ QWidget *cornerWidget(Qt::Corner = Qt::TopRight) const;
+%End
+
+%If (- Qt_3_0_0)
+ void showPage(QWidget *);
+ void removePage(QWidget *);
+
+ QString tabLabel(QWidget *);
+%End
+%If (Qt_3_0_0 -)
+ QString tabLabel(QWidget *) const;
+ void setTabLabel(QWidget *,const QString &);
+
+ QIconSet tabIconSet(QWidget *) const;
+ void setTabIconSet(QWidget *,const QIconSet &);
+
+ void removeTabToolTip(QWidget *);
+ void setTabToolTip(QWidget *,const QString &);
+ QString tabToolTip(QWidget *) const;
+%End
+
+ QWidget *currentPage() const;
+%If (Qt_3_0_0 -)
+ QWidget *page(int) const;
+ QString label(int) const;
+%End
+%If (Qt_2_2_0 -)
+ int currentPageIndex() const;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ void setCurrentPage(int);
+%End
+%If (Qt_3_0_0 -)
+ int indexOf(QWidget *) const;
+%End
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ enum TabPosition {
+ Top,
+ Bottom
+ };
+
+ TabPosition tabPosition() const;
+ void setTabPosition(TabPosition);
+
+%If (Qt_2_2_0 -)
+ enum TabShape {
+ Rounded,
+ Triangular
+ };
+
+ TabShape tabShape() const;
+ void setTabShape(TabShape);
+%End
+
+ int margin() const;
+ void setMargin(int);
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_3_0_0 -)
+ int count() const;
+%End
+
+public slots:
+%If (Qt_3_0_0 -)
+ void setCurrentPage(int);
+ virtual void showPage(QWidget *);
+ virtual void removePage(QWidget *);
+%End
+
+protected:
+ void showEvent(QShowEvent *);
+ void resizeEvent(QResizeEvent *);
+ void setTabBar(QTabBar *);
+ QTabBar *tabBar() const;
+ void styleChange(QStyle &);
+ void updateMask();
+ bool eventFilter(QObject *,QEvent *);
+
+signals:
+%If (Qt_2_2_0 -)
+ void currentChanged(QWidget *);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QTabWidget(const QTabWidget &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtextbrowser.sip b/python/pyqt/sip/qt/qtextbrowser.sip
new file mode 100644
index 00000000..d7f45703
--- /dev/null
+++ b/python/pyqt/sip/qt/qtextbrowser.sip
@@ -0,0 +1,114 @@
+// This is the SIP interface definition for QTextBrowser.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTextBrowser (Qt v2+)</Title>
+<Para>
+<Literal>QTextBrowser</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QTextBrowser : QTextEdit
+{
+%TypeHeaderCode
+#include <qtextbrowser.h>
+%End
+
+public:
+ QTextBrowser(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ QString source() const;
+
+public slots:
+ virtual void setSource(const QString &);
+ virtual void backward();
+ virtual void forward();
+ virtual void home();
+ virtual void reload();
+ void setText(const QString &);
+ virtual void setText(const QString &,const QString &);
+
+signals:
+ void backwardAvailable(bool);
+ void forwardAvailable(bool);
+%If (Qt_3_1_0 -)
+ void sourceChanged(const QString &);
+%End
+ void highlighted(const QString &);
+ void linkClicked(const QString &);
+%If (Qt_3_1_0 -)
+ void anchorClicked(const QString &,const QString &);
+%End
+
+protected:
+ void keyPressEvent(QKeyEvent *);
+
+private:
+ QTextBrowser(const QTextBrowser &);
+};
+
+%End
+
+%If (Qt_2_00 - Qt_3_0_0)
+
+class QTextBrowser : QTextView
+{
+%TypeHeaderCode
+#include <qtextbrowser.h>
+%End
+
+public:
+ QTextBrowser(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ virtual void setSource(const QString &);
+ QString source() const;
+ void setText(const QString &,const QString & = QString::null);
+ void scrollToAnchor(const QString &);
+
+public slots:
+ virtual void backward();
+ virtual void forward();
+ virtual void home();
+
+signals:
+ void backwardAvailable(bool);
+ void forwardAvailable(bool);
+ void highlighted(const QString &);
+ void textChanged();
+
+protected:
+ void viewportMousePressEvent(QMouseEvent *);
+ void viewportMouseReleaseEvent(QMouseEvent *);
+ void viewportMouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+
+private:
+%If (Qt_2_1_0 -)
+ QTextBrowser(const QTextBrowser &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtextcodec.sip b/python/pyqt/sip/qt/qtextcodec.sip
new file mode 100644
index 00000000..626e12bf
--- /dev/null
+++ b/python/pyqt/sip/qt/qtextcodec.sip
@@ -0,0 +1,146 @@
+// This is the SIP interface definition for QTextCodec, QTextDecoder and
+// QTextEncoder.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTextCodec (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QCString <Function>fromUnicode</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>uc</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>lenInOut</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>QCString</Literal> result and the
+updated <Literal>lenInOut</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextDecoder (Qt v2+)</Title>
+<Para>
+<Literal>QTextDecoder</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextEncoder (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QCString <Function>fromUnicode</Function> = 0</FuncDef>
+ <ParamDef>const QString &amp;<Parameter>uc</Parameter></ParamDef>
+ <ParamDef>int &amp;<Parameter>lenInOut</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>QCString</Literal> result and the
+updated <Literal>lenInOut</Literal>.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QTextEncoder
+{
+%TypeHeaderCode
+#include <qtextcodec.h>
+%End
+
+public:
+ virtual QCString fromUnicode(const QString &,int & /In,Out/) = 0;
+};
+
+
+class QTextDecoder
+{
+%TypeHeaderCode
+#include <qtextcodec.h>
+%End
+
+public:
+ virtual QString toUnicode(const char *,int) = 0;
+};
+
+
+class QTextCodec
+{
+%TypeHeaderCode
+#include <qtextcodec.h>
+%End
+
+public:
+%If (Qt_CODECS)
+ static QTextCodec *loadCharmap(QIODevice *);
+ static QTextCodec *loadCharmapFile(QString);
+%End
+ static QTextCodec *codecForMib(int);
+ static QTextCodec *codecForName(const char *,int = 0);
+ static QTextCodec *codecForContent(const char *,int);
+ static QTextCodec *codecForIndex(int);
+ static QTextCodec *codecForLocale();
+%If (Qt_3_0_0 -)
+ static void setCodecForLocale(QTextCodec *);
+%End
+
+%If (Qt_3_1_0 -)
+ static QTextCodec *codecForTr();
+ static void setCodecForTr(QTextCodec *);
+ static QTextCodec *codecForCStrings();
+ static void setCodecForCStrings(QTextCodec *);
+%End
+
+ static void deleteAllCodecs();
+
+ static const char *locale();
+
+ virtual const char *name() const = 0;
+%If (Qt_3_0_0 -)
+ virtual const char *mimeName() const;
+%End
+ virtual int mibEnum() const = 0;
+
+ virtual QTextDecoder *makeDecoder() const /Factory/;
+ virtual QTextEncoder *makeEncoder() const /Factory/;
+
+ virtual QString toUnicode(const char *,int) const;
+ virtual QCString fromUnicode(const QString &,int & /In,Out/) const;
+ QCString fromUnicode(const QString &) const;
+ QString toUnicode(const QByteArray &,int) const;
+ QString toUnicode(const QByteArray &) const;
+%If (Qt_3_0_0 -)
+ QString toUnicode(const QCString &,int) const;
+ QString toUnicode(const QCString &) const;
+%End
+ QString toUnicode(const char *) const;
+ virtual bool canEncode(QChar) const;
+ virtual bool canEncode(const QString &) const;
+
+ virtual int heuristicContentMatch(const char *,int) const = 0;
+ virtual int heuristicNameMatch(const char *) const;
+
+%If (Qt_3_0_0 -)
+ virtual QByteArray fromUnicode(const QString &,int,int) const;
+ virtual unsigned short characterFromUnicode(const QString &,int) const;
+%End
+
+protected:
+ QTextCodec();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtextedit.sip b/python/pyqt/sip/qt/qtextedit.sip
new file mode 100644
index 00000000..3576bf31
--- /dev/null
+++ b/python/pyqt/sip/qt/qtextedit.sip
@@ -0,0 +1,437 @@
+// This is the SIP interface definition for QTextEdit.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTextEdit (Qt v3+)</Title>
+<FuncSynopsis>
+<FuncDef>int <Function>charAt</Function></FuncDef>
+ <ParamDef>const QPoint &amp;<Parameter>pos</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>para</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>pos</Literal> parameter and returns a tuple of the
+value returned via the <Literal>para</Literal> pointer and the int result.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delChar</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>virtual bool <Function>find</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>expr</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>cs</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>wo</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>forward</Parameter> = TRUE</ParamDef>
+ <ParamDef>int *<Parameter>para</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+If the <Literal>para</Literal> and <Literal>index</Literal> parameters are
+omitted then the bool result is returned. If both are supplied (as integers)
+then a tuple of the bool result and the modified values of
+<Literal>para</Literal> and <Literal>index</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>void <Function>getCursorPosition</Function></FuncDef>
+ <ParamDef>int *<Parameter>para</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned via the
+<Literal>para</Literal> and <Literal>index</Literal> pointers.
+</Para>
+
+<FuncSynopsis>
+<FuncDef>void <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>paraFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>paraTo</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexTo</Parameter></ParamDef>
+ <ParamDef>int <Parameter>selNum</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>selNum</Literal> parameter and returns a tuple of
+the <Literal>paraFrom</Literal>, <Literal>indexFrom</Literal>,
+<Literal>paraTo</Literal> and <Literal>indexTo</Literal> values.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+// These aren't part of the public API in the Qt3 beta, so define them as
+// opaque for the moment.
+
+class QTextDocument;
+class QTextCursor;
+
+
+class QTextEdit : QScrollView
+{
+%TypeHeaderCode
+#include <qtextedit.h>
+%End
+
+public:
+ enum WordWrap {
+ NoWrap,
+ WidgetWidth,
+ FixedPixelWidth,
+ FixedColumnWidth
+ };
+
+ enum WrapPolicy {
+ AtWordBoundary,
+ Anywhere,
+ AtWhiteSpace,
+%If (Qt_3_1_0 -)
+ AtWordOrDocumentBoundary
+%End
+ };
+
+%If (Qt_3_1_0 -)
+ enum AutoFormatting {
+ AutoNone,
+ AutoBulletList,
+ AutoAll
+ };
+%End
+
+ enum KeyboardAction {
+ ActionBackspace,
+ ActionDelete,
+ ActionReturn,
+ ActionKill,
+%If (Qt_3_1_0 -)
+ ActionWordBackspace,
+ ActionWordDelete
+%End
+ };
+
+ enum CursorAction {
+ MoveBackward,
+ MoveForward,
+ MoveWordBackward,
+ MoveWordForward,
+ MoveUp,
+ MoveDown,
+ MoveLineStart,
+ MoveLineEnd,
+ MoveHome,
+ MoveEnd,
+ MovePgUp,
+ MovePgDown
+ };
+
+ enum VerticalAlignment {
+ AlignNormal,
+ AlignSuperScript,
+ AlignSubScript
+ };
+
+%If (Qt_3_1_0 -)
+ enum TextInsertionFlags {
+ RedoIndentation,
+ CheckNewLines,
+ RemoveSelected
+ };
+%End
+
+ QTextEdit(const QString &,const QString & = QString::null,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+ QTextEdit(QWidget * /TransferThis/ = 0,const char * = 0);
+
+ void setPalette(const QPalette &);
+
+ QString text() const;
+ QString text(int) const;
+ TextFormat textFormat() const;
+ QString context() const;
+ QString documentTitle() const;
+
+ void getSelection(int *,int *,int *,int *,int = 0) const;
+
+ // We implement find() as two separate methods as it's the easiest way
+ // to handle the somewhat strange Qt interface.
+ virtual bool find(const QString &,bool,bool,bool = 1);
+ virtual bool find(const QString &,bool,bool,bool,int * /In,Out/,
+ int * /In,Out/);
+
+ int paragraphs() const;
+ int lines() const;
+ int linesOfParagraph(int) const;
+ int lineOfChar(int,int);
+ int length() const;
+ QRect paragraphRect(int) const;
+ int paragraphAt(const QPoint &) const;
+
+ // Note that this is handwritten code because the generated code would
+ // return the values in the (correct but) reverse order.
+ SIP_PYTUPLE charAt(const QPoint &) const;
+%MethodCode
+ int para, index;
+
+ Py_BEGIN_ALLOW_THREADS
+ index = sipCpp -> QTextEdit::charAt(*a0,&para);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(ii)",para,index);
+%End
+
+ int paragraphLength(int) const;
+
+ QStyleSheet *styleSheet() const;
+ QMimeSourceFactory *mimeSourceFactory() const;
+
+ QBrush paper() const;
+ bool linkUnderline() const;
+
+ int heightForWidth(int) const;
+
+ bool hasSelectedText() const;
+ QString selectedText() const;
+ bool isUndoAvailable() const;
+ bool isRedoAvailable() const;
+
+ WordWrap wordWrap() const;
+ int wrapColumnOrWidth() const;
+ WrapPolicy wrapPolicy() const;
+
+ int tabStopWidth() const;
+
+ QString anchorAt(const QPoint &);
+%If (Qt_3_1_0 -)
+ QString anchorAt(const QPoint &,AnchorAttribute);
+%End
+
+ QSize sizeHint() const;
+
+ bool isReadOnly() const;
+
+ void getCursorPosition(int *,int *) const;
+
+ bool isModified() const;
+ bool italic() const;
+ bool bold() const;
+ bool underline() const;
+ QString family() const;
+ int pointSize() const;
+ QColor color() const;
+ QFont font() const;
+%If (Qt_3_1_0 -)
+ QFont currentFont() const;
+%End
+ int alignment() const;
+ int undoDepth() const;
+
+ // These are undocumented and marked as "don't use".
+ //virtual bool getFormat(int,int,QFont *,QColor *,VerticalAlignment *);
+ //virtual bool getParagraphFormat(int,QFont *,QColor *,
+ // VerticalAlignment *,int *,
+ // QStyleSheetItem::DisplayMode *,
+ // QStyleSheetItem::ListStyle *,
+ // int *);
+
+ bool isOverwriteMode() const;
+ QColor paragraphBackgroundColor(int) const;
+
+ bool isUndoRedoEnabled() const;
+ bool eventFilter(QObject *,QEvent *);
+%If (Qt_3_1_0 -)
+ bool tabChangesFocus() const;
+
+ // Qt defines the following as uint rather than int because it uses the
+ // AutoFormatting enum as a set of flags. Because SIP implements enums
+ // as a subclass of int they are always signed. AutoAll is defined as
+ // 0xffffffff which Python converts to -1 and then fails to convert it
+ // to an unsigned. For the moment we just lie to SIP about the type
+ // and let the compiler handle it.
+ void setAutoFormatting(int);
+ int autoFormatting() const;
+%End
+%If (Qt_3_3_0 -)
+ QSyntaxHighlighter *syntaxHighlighter() const;
+%End
+
+public slots:
+ void setEnabled(bool);
+ virtual void setMimeSourceFactory(QMimeSourceFactory *);
+ virtual void setStyleSheet(QStyleSheet *);
+ virtual void scrollToAnchor(const QString &);
+ virtual void setPaper(const QBrush &);
+ virtual void setLinkUnderline(bool);
+
+ virtual void setWordWrap(WordWrap);
+ virtual void setWrapColumnOrWidth(int);
+ virtual void setWrapPolicy(WrapPolicy);
+
+ virtual void copy();
+ virtual void append(const QString &);
+
+ void setText(const QString &);
+ virtual void setText(const QString &,const QString &);
+ virtual void setTextFormat(TextFormat);
+
+ virtual void selectAll(bool = 1);
+ virtual void setTabStopWidth(int);
+ virtual void zoomIn(int);
+ virtual void zoomIn();
+ virtual void zoomOut(int);
+ virtual void zoomOut();
+ virtual void zoomTo(int);
+
+ virtual void sync();
+ virtual void setReadOnly(bool);
+
+ virtual void undo();
+ virtual void redo();
+ virtual void cut();
+ virtual void paste();
+ virtual void pasteSubType(const QCString &);
+ virtual void clear();
+ virtual void del() /PyName=delChar/;
+ virtual void indent();
+ virtual void setItalic(bool);
+ virtual void setBold(bool);
+ virtual void setUnderline(bool);
+ virtual void setFamily(const QString &);
+ virtual void setPointSize(int);
+ virtual void setColor(const QColor &);
+ virtual void setFont(const QFont &);
+ virtual void setVerticalAlignment(VerticalAlignment);
+ virtual void setAlignment(int);
+ virtual void setParagType(QStyleSheetItem::DisplayMode,
+ QStyleSheetItem::ListStyle);
+ virtual void setCursorPosition(int,int);
+ virtual void setSelection(int,int,int,int,int = 0);
+ virtual void setSelectionAttributes(int,const QColor &,bool);
+ virtual void setModified(bool);
+ virtual void resetFormat();
+ virtual void setUndoDepth(int);
+// Marked as internal in the Qt3 beta.
+// virtual void setFormat(QTextFormat *,int);
+ virtual void ensureCursorVisible();
+ virtual void placeCursor(const QPoint &,QTextCursor * = 0);
+ virtual void moveCursor(CursorAction,bool);
+ virtual void doKeyboardAction(KeyboardAction);
+ virtual void removeSelectedText(int = 0);
+ virtual void removeSelection(int = 0);
+ virtual void setCurrentFont(const QFont &);
+ virtual void setOverwriteMode(bool);
+
+ virtual void scrollToBottom();
+
+%If (Qt_3_1_0 -)
+ void insert(const QString &,uint = CheckNewLines | RemoveSelected);
+ virtual void insert(const QString &,bool,bool = 1,bool = 1);
+%End
+%If (- Qt_3_1_0)
+ virtual void insert(const QString &,bool = 0,bool = 1,bool = 1);
+%End
+ virtual void insertAt(const QString &,int,int);
+ virtual void removeParagraph(int);
+ virtual void insertParagraph(const QString &,int);
+
+ virtual void setParagraphBackgroundColor(int,const QColor &);
+ virtual void clearParagraphBackground(int);
+
+ virtual void setUndoRedoEnabled(bool);
+%If (Qt_3_1_0 -)
+ void setTabChangesFocus(bool);
+
+ void polish();
+%End
+%If (Qt_3_2_0 -)
+ void setMaxLogLines(int);
+ int maxLogLines();
+%End
+
+signals:
+ void textChanged();
+ void selectionChanged();
+ void copyAvailable(bool);
+ void undoAvailable(bool);
+ void redoAvailable(bool);
+ void currentFontChanged(const QFont &);
+ void currentColorChanged(const QColor &);
+ void currentAlignmentChanged(int);
+ void currentVerticalAlignmentChanged(VerticalAlignment);
+ void cursorPositionChanged(QTextCursor *);
+ void cursorPositionChanged(int,int);
+ void returnPressed();
+ void modificationChanged(bool);
+%If (Qt_3_1_0 -)
+ void clicked(int,int);
+ void doubleClicked(int,int);
+%End
+
+protected:
+ void repaintChanged();
+ void updateStyles();
+ void drawContents(QPainter *,int,int,int,int);
+ bool event(QEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void resizeEvent(QResizeEvent *);
+ void viewportResizeEvent(QResizeEvent *);
+ void contentsMousePressEvent(QMouseEvent *);
+ void contentsMouseMoveEvent(QMouseEvent *);
+ void contentsMouseReleaseEvent(QMouseEvent *);
+ void contentsMouseDoubleClickEvent(QMouseEvent *);
+ void contentsWheelEvent(QWheelEvent *);
+ void imStartEvent(QIMEvent *);
+ void imComposeEvent(QIMEvent *);
+ void imEndEvent(QIMEvent *);
+ void contentsDragEnterEvent(QDragEnterEvent *);
+ void contentsDragMoveEvent(QDragMoveEvent *);
+ void contentsDragLeaveEvent(QDragLeaveEvent *);
+ void contentsDropEvent(QDropEvent *);
+ void contentsContextMenuEvent(QContextMenuEvent *);
+ bool focusNextPrevChild(bool);
+ QTextDocument *document() const;
+ QTextCursor *textCursor() const;
+ void setDocument(QTextDocument *);
+ virtual QPopupMenu *createPopupMenu(const QPoint &) /Factory/;
+ virtual QPopupMenu *createPopupMenu() /Factory/;
+ void drawCursor(bool);
+
+ void windowActivationChange(bool);
+
+protected slots:
+ virtual void doChangeInterval();
+%If (Qt_3_1_0 -)
+ void sliderReleased();
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QTextEdit(const QTextEdit &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtextstream.sip b/python/pyqt/sip/qt/qtextstream.sip
new file mode 100644
index 00000000..7e8abcdd
--- /dev/null
+++ b/python/pyqt/sip/qt/qtextstream.sip
@@ -0,0 +1,231 @@
+// This is the SIP interface definition for QTextStream, QTextIStream and
+// QTextOStream.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTextStream</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &<Function>readRawBytes</Function></FuncDef>
+ <ParamDef>char *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QTextStream &<Function>writeRawBytes</Function></FuncDef>
+ <ParamDef>const char *<Parameter>buf</Parameter></ParamDef>
+ <ParamDef>uint <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextIStream (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextIStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTextOStream (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QTextOStream</Function></FuncDef>
+ <ParamDef>FILE *<Parameter>fp</Parameter></ParamDef>
+ <ParamDef>int <Parameter>mode</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QTextStream
+{
+%TypeHeaderCode
+#include <qtextstream.h>
+%End
+
+public:
+%If (Qt_2_00 - Qt_2_2_0)
+ enum Encoding {
+ Locale,
+ Latin1,
+ Unicode,
+ UnicodeNetworkOrder,
+ UnicodeReverse,
+ RawUnicode
+ };
+%End
+%If (Qt_2_2_0 -)
+ enum Encoding {
+ Locale,
+ Latin1,
+ Unicode,
+ UnicodeNetworkOrder,
+ UnicodeReverse,
+ RawUnicode,
+ UnicodeUTF8
+ };
+%End
+
+ QTextStream();
+ QTextStream(QIODevice *);
+%If (Qt_2_00 -)
+ QTextStream(QString *,int);
+%End
+ QTextStream(QByteArray,int);
+// QTextStream(FILE *,int);
+
+%If (Qt_2_00 -)
+ void setEncoding(Encoding);
+ void setCodec(QTextCodec *);
+%End
+%If (Qt_3_1_0 -)
+ QTextCodec *codec();
+%End
+
+ QIODevice *device() const;
+ void setDevice(QIODevice *);
+ void unsetDevice();
+
+%If (Qt_2_00 -)
+ bool atEnd() const;
+%End
+ bool eof() const;
+
+// QTextStream &readRawBytes(char *,uint) /ReleaseGIL/;
+// QTextStream &writeRawBytes(const char *,uint) /ReleaseGIL/;
+
+ QString readLine() /ReleaseGIL/;
+%If (Qt_2_00 -)
+ QString read() /ReleaseGIL/;
+ void skipWhiteSpace();
+%End
+
+ enum {
+ skipws,
+ left,
+ right,
+ internal,
+ bin,
+ oct,
+ dec,
+ hex,
+ showbase,
+ showpoint,
+ uppercase,
+ showpos,
+ scientific,
+ fixed
+ };
+
+ static const int basefield;
+ static const int adjustfield;
+ static const int floatfield;
+
+ int flags() const;
+ int flags(int);
+ int setf(int);
+ int setf(int,int);
+ int unsetf(int);
+
+ void reset();
+
+ int width() const;
+ int width(int);
+ int fill() const;
+ int fill(int);
+ int precision() const;
+ int precision(int);
+
+%If (Qt_3_0_0 -)
+ // These are defined in qmainwindow.h as global operators so we have
+ // to implement them here and pretend they are class operators.
+ QTextStream &operator<<(const QMainWindow &);
+ QTextStream &operator>>(QMainWindow &);
+
+ // These are defined in qdockarea.h as global operators so we have
+ // to implement them here and pretend they are class operators.
+ QTextStream &operator<<(const QDockArea &);
+ QTextStream &operator>>(QDockArea &);
+%End
+
+private:
+ QTextStream(const QTextStream &);
+};
+
+
+%If (Qt_2_00 -)
+
+class QTextIStream : QTextStream
+{
+%TypeHeaderCode
+#include <qtextstream.h>
+%End
+
+public:
+ QTextIStream(QString *);
+ QTextIStream(QByteArray);
+// QTextIStream(FILE *);
+
+private:
+%If (Qt_3_1_0 -)
+ QTextIStream(const QTextIStream &);
+%End
+};
+
+
+class QTextOStream : QTextStream
+{
+%TypeHeaderCode
+#include <qtextstream.h>
+%End
+
+public:
+ QTextOStream(QString *);
+ QTextOStream(QByteArray);
+// QTextOStream(FILE *);
+
+private:
+%If (Qt_3_1_0 -)
+ QTextOStream(const QTextOStream &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtextview.sip b/python/pyqt/sip/qt/qtextview.sip
new file mode 100644
index 00000000..d79a34ad
--- /dev/null
+++ b/python/pyqt/sip/qt/qtextview.sip
@@ -0,0 +1,128 @@
+// This is the SIP interface definition for QTextView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTextView (Qt v2+)</Title>
+<Para>
+<Literal>QTextView</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QTextView : QTextEdit
+{
+%TypeHeaderCode
+#include <qtextview.h>
+%End
+
+public:
+ QTextView(QWidget * /TransferThis/ = 0,const char * = 0);
+ QTextView(const QString &,const QString & = QString::null,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+
+private:
+%If (Qt_3_1_0 -)
+ QTextView(const QTextView &);
+%End
+};
+
+%End
+
+
+%If (Qt_2_00 - Qt_3_0_0)
+
+class QTextView : QScrollView
+{
+%TypeHeaderCode
+#include <qtextview.h>
+%End
+
+public:
+ QTextView(QWidget * /TransferThis/ = 0,const char * = 0);
+ QTextView(const QString &,const QString & = QString::null,
+ QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (- Qt_2_1_0)
+ virtual void setText(const QString &,const QString & = QString::null);
+%End
+%If (Qt_2_1_0 -)
+ virtual void setText(const QString &,const QString &);
+ void setText(const QString &);
+%End
+ virtual QString text() const;
+ virtual QString context() const;
+ Qt::TextFormat textFormat() const;
+ void setTextFormat(Qt::TextFormat);
+ QStyleSheet *styleSheet() const;
+ void setStyleSheet(QStyleSheet *);
+ void setPaper(const QBrush &);
+ const QBrush &paper();
+ void setPaperColorGroup(const QColorGroup &);
+ const QColorGroup &paperColorGroup() const;
+ void setLinkColor(const QColor &);
+ const QColor &linkColor() const;
+ void setLinkUnderline(bool);
+ bool linkUnderline() const;
+ void setMimeSourceFactory(QMimeSourceFactory *);
+ QMimeSourceFactory *mimeSourceFactory() const;
+ QString documentTitle() const;
+ int heightForWidth(int) const;
+%If (Qt_2_1_0 -)
+ void append(const QString &);
+ bool hasSelectedText() const;
+ QString selectedText() const;
+%End
+
+public slots:
+%If (Qt_2_1_0 -)
+%If (Qt_CLIPBOARD)
+ void copy();
+%End
+ void selectAll();
+%End
+
+protected:
+ void drawContentsOffset(QPainter *,int,int,int,int,int,int);
+ void resizeEvent(QResizeEvent *);
+ void viewportResizeEvent(QResizeEvent *);
+ void viewportMousePressEvent(QMouseEvent *);
+ void viewportMouseReleaseEvent(QMouseEvent *);
+ void viewportMouseMoveEvent(QMouseEvent *);
+ void keyPressEvent(QKeyEvent *);
+%If (Qt_2_1_0 -)
+ void showEvent(QShowEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+%End
+// QRichText &richText() const;
+ void paletteChange(const QPalette &);
+
+private:
+%If (Qt_2_1_0 -)
+ QTextView(const QTextView &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qthread.sip b/python/pyqt/sip/qt/qthread.sip
new file mode 100644
index 00000000..29966c6b
--- /dev/null
+++ b/python/pyqt/sip/qt/qthread.sip
@@ -0,0 +1,98 @@
+// This is the SIP interface definition for QThread.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QThread (Qt v2.2+)</Title>
+<Para>
+<Literal>QThread</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_THREAD_SUPPORT)
+%If (Qt_2_2_0 -)
+
+class QThread : Qt /CreatesThread/
+{
+%TypeHeaderCode
+#include <qthread.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ static HANDLE currentThread();
+%End
+%If (Qt_3_0_0 -)
+ static Qt::HANDLE currentThread();
+%End
+ static void postEvent(QObject *,QEvent * /Transfer/) /ReleaseGIL/;
+%If (Qt_3_0_0 -)
+ static void initialize();
+ static void cleanup();
+%End
+
+ static void exit() /ReleaseGIL/;
+
+%If (Qt_3_1_0 -)
+ QThread(unsigned int);
+%End
+ QThread();
+
+ bool wait(unsigned long = ULONG_MAX) /ReleaseGIL/;
+
+%If (Qt_3_2_0 -)
+ enum Priority {
+ IdlePriority,
+ LowestPriority,
+ LowPriority,
+ NormalPriority,
+ HighPriority,
+ HighestPriority,
+ TimeCriticalPriority,
+ InheritPriority
+ };
+
+ void start(Priority) /ReleaseGIL/;
+%End
+ void start() /ReleaseGIL/;
+
+%If (Qt_3_1_0 -)
+ void terminate();
+%End
+
+ bool finished() const;
+ bool running() const;
+
+protected:
+ virtual void run() = 0 /NewThread/;
+
+ static void sleep(unsigned long) /ReleaseGIL/;
+ static void msleep(unsigned long) /ReleaseGIL/;
+ static void usleep(unsigned long) /ReleaseGIL/;
+
+private:
+ QThread(const QThread &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qtimer.sip b/python/pyqt/sip/qt/qtimer.sip
new file mode 100644
index 00000000..62d20b25
--- /dev/null
+++ b/python/pyqt/sip/qt/qtimer.sip
@@ -0,0 +1,59 @@
+// This is the SIP interface definition for QTimer.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTimer</Title>
+<Para>
+<Literal>QTimer</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QTimer : QObject
+{
+%TypeHeaderCode
+#include <qtimer.h>
+%End
+
+public:
+ QTimer(QObject * /TransferThis/ = 0,char * = 0);
+
+ bool isActive() const;
+ int start(int,bool = 0);
+ void changeInterval(int);
+ void stop();
+ static void singleShot(int,SIP_RXOBJ_CON,SIP_SLOT_CON());
+
+%If (Qt_3_1_0 -)
+ int timerId() const;
+%End
+
+signals:
+ void timeout();
+
+protected:
+ bool event(QEvent *);
+
+private:
+ QTimer(const QTimer &);
+};
diff --git a/python/pyqt/sip/qt/qtmod.sip b/python/pyqt/sip/qt/qtmod.sip
new file mode 100644
index 00000000..913ff8b6
--- /dev/null
+++ b/python/pyqt/sip/qt/qtmod.sip
@@ -0,0 +1,282 @@
+// This is the SIP interface definition for the qt module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qt 2
+
+%Include versions.sip
+%Include copying.sip
+
+
+unsigned PYQT_VERSION;
+const char *PYQT_VERSION_STR;
+
+%ModuleCode
+static unsigned PYQT_VERSION = 0x031102;
+static const char *PYQT_VERSION_STR = "3.17.2";
+%End
+
+
+// Hook into the VendorID package if it is enabled.
+%Feature VendorID
+
+%If (VendorID)
+
+%ModuleCode
+#include <vendorid.h>
+%End
+
+%PreInitialisationCode
+ if (!vendorid_check())
+ {
+ PyErr_SetString(PyExc_RuntimeError, "PyQt cannot be used with this Python interpreter");
+ return;
+ }
+%End
+
+%End
+
+
+// Include the interface definitions for each class.
+
+// These contain enum and type definitions that need to be defined before they
+// are used so they do not seem to be classes.
+
+%Include qglobal.sip
+%Include qnamespace.sip
+%Include qwindowdefs.sip
+%Include qpen.sip
+
+%Include qpaintdevice.sip
+
+%Include qpixmap.sip
+%Include qbitmap.sip
+
+%Include qsize.sip
+%Include qsizepolicy.sip
+
+%Include qaccel.sip
+%Include qaction.sip
+%Include qapplication.sip
+%Include qarray.sip
+%Include qassistantclient.sip
+%Include qbrush.sip
+%Include qbutton.sip
+%Include qbuttongroup.sip
+%Include qbytearray.sip
+%Include qcdestyle.sip
+%Include qcheckbox.sip
+%Include qclipboard.sip
+%Include qcolor.sip
+%Include qcolordialog.sip
+%Include qcolorgroup.sip
+%Include qcombobox.sip
+%Include qcommonstyle.sip
+%Include qcstring.sip
+%Include qcursor.sip
+%Include qdatastream.sip
+%Include qdatetime.sip
+%Include qdatetimeedit.sip
+%Include qdesktopwidget.sip
+%Include qdial.sip
+%Include qdialog.sip
+%Include qdir.sip
+%Include qdockarea.sip
+%Include qdockwindow.sip
+%Include qdragobject.sip
+%Include qdrawutil.sip
+%Include qdropsite.sip
+%Include qerrormessage.sip
+%Include qevent.sip
+%Include qeventloop.sip
+%Include qfile.sip
+%Include qfiledialog.sip
+%Include qfileinfo.sip
+%Include qfont.sip
+%Include qfontdatabase.sip
+%Include qfontdialog.sip
+%Include qfontinfo.sip
+%Include qfontmetrics.sip
+%Include qframe.sip
+%Include qgmanager.sip
+%Include qgrid.sip
+%Include qgridview.sip
+%Include qgroupbox.sip
+%Include qhbox.sip
+%Include qhbuttongroup.sip
+%Include qheader.sip
+%Include qhgroupbox.sip
+%Include qiconset.sip
+%Include qiconview.sip
+%Include qimage.sip
+%Include qinputdialog.sip
+%Include qinterlacestyle.sip
+%Include qiodevice.sip
+%Include qkeycode.sip
+%Include qkeysequence.sip
+%Include qlabel.sip
+%Include qlayout.sip
+%Include qlcdnumber.sip
+%Include qlibrary.sip
+%Include qlineedit.sip
+%Include qlist.sip
+%Include qlistbox.sip
+%Include qlistview.sip
+%Include qlocale.sip
+%Include qmainwindow.sip
+%Include qmemarray.sip
+%Include qmenubar.sip
+%Include qmenudata.sip
+%Include qmessagebox.sip
+%Include qmetaobject.sip
+%Include qmime.sip
+%Include qmotifplusstyle.sip
+%Include qmotifstyle.sip
+%Include qmovie.sip
+%Include qmutex.sip
+%Include qmultilinedit.sip
+%Include qnetworkprotocol.sip
+%Include qobject.sip
+%Include qobjectcleanuphandler.sip
+%Include qobjectlist.sip
+%Include qpaintdevicemetrics.sip
+%Include qpainter.sip
+%Include qpair.sip
+%Include qpalette.sip
+%Include qpicture.sip
+%Include qpixmapcache.sip
+%Include qplatinumstyle.sip
+%Include qpoint.sip
+%Include qpointarray.sip
+%Include qpopupmenu.sip
+%Include qprintdialog.sip
+%Include qprinter.sip
+%Include qprocess.sip
+%Include qprogressbar.sip
+%Include qprogressdialog.sip
+%Include qptrlist.sip
+%Include qpushbutton.sip
+%Include qradiobutton.sip
+%Include qrangecontrol.sip
+%Include qrect.sip
+%Include qregexp.sip
+%Include qregion.sip
+%Include qscrollbar.sip
+%Include qscrollview.sip
+%Include qsemaphore.sip
+%Include qsemimodal.sip
+%Include qsessionmanager.sip
+%Include qsettings.sip
+%Include qsgistyle.sip
+%Include qsignalmapper.sip
+%Include qsimplerichtext.sip
+%Include qsizegrip.sip
+%Include qslider.sip
+%Include qsocketnotifier.sip
+%Include qsound.sip
+%Include qspinbox.sip
+%Include qsplashscreen.sip
+%Include qsplitter.sip
+%Include qstatusbar.sip
+%Include qstring.sip
+%Include qstringlist.sip
+%Include qstrlist.sip
+%Include qstyle.sip
+%Include qstylefactory.sip
+%Include qstylesheet.sip
+%Include qsyntaxhighlighter.sip
+%Include qtabbar.sip
+%Include qtabdialog.sip
+%Include qtableview.sip
+%Include qtabwidget.sip
+%Include qtextbrowser.sip
+%Include qtextcodec.sip
+%Include qtextedit.sip
+%Include qtextstream.sip
+%Include qtextview.sip
+%Include qthread.sip
+%Include qtimer.sip
+%Include qtoolbar.sip
+%Include qtoolbox.sip
+%Include qtoolbutton.sip
+%Include qtooltip.sip
+%Include qtranslator.sip
+%Include qurl.sip
+%Include qurlinfo.sip
+%Include qurloperator.sip
+%Include quuid.sip
+%Include qvalidator.sip
+%Include qvaluelist.sip
+%Include qvariant.sip
+%Include qvbox.sip
+%Include qvbuttongroup.sip
+%Include qvgroupbox.sip
+%Include qwaitcondition.sip
+%Include qwhatsthis.sip
+%Include qwidget.sip
+%Include qwidgetlist.sip
+%Include qwidgetstack.sip
+%Include qwindow.sip
+%Include qwindowsstyle.sip
+%Include qwindowsxpstyle.sip
+%Include qwizard.sip
+%Include qwmatrix.sip
+%Include qworkspace.sip
+
+
+// The build file templates.
+
+%Makefile qt.pro.in
+# The project file for the qt module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QASSISTANTCLIENT_LIB@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qt/qtoolbar.sip b/python/pyqt/sip/qt/qtoolbar.sip
new file mode 100644
index 00000000..7143ba0f
--- /dev/null
+++ b/python/pyqt/sip/qt/qtoolbar.sip
@@ -0,0 +1,160 @@
+// This is the SIP interface definition for QToolBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QToolBar</Title>
+<Para>
+<Literal>QToolBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QToolBar : QDockWindow
+{
+%TypeHeaderCode
+#include <qtoolbar.h>
+%End
+
+public:
+ QToolBar(const QString &,QMainWindow * /TransferThis/,Dock = DockTop,
+ bool = 0,const char * = 0);
+ QToolBar(const QString &,QMainWindow *,QWidget * /TransferThis/,
+ bool = 0,const char * = 0,WFlags = 0);
+ QToolBar(QMainWindow * /TransferThis/ = 0,const char * = 0);
+
+ void addSeparator();
+
+ void show();
+ void hide();
+
+ QMainWindow *mainWindow() const;
+
+ virtual void setStretchableWidget(QWidget *);
+
+ bool event(QEvent *);
+
+ virtual void setLabel(const QString &);
+ QString label() const;
+
+ virtual void clear();
+
+ QSize minimumSize() const;
+ QSize minimumSizeHint() const;
+
+ void setOrientation(Orientation);
+ void setMinimumSize(int,int);
+
+protected:
+ void resizeEvent(QResizeEvent *);
+ void styleChange(QStyle &);
+
+private:
+ QToolBar(const QToolBar &);
+};
+
+%End
+
+
+%If (- Qt_3_0_0)
+
+class QToolBar : QWidget
+{
+%TypeHeaderCode
+#include <qtoolbar.h>
+%End
+
+public:
+%If (- Qt_2_00)
+ QToolBar(const char *,QMainWindow * /TransferThis/,
+ QMainWindow::ToolBarDock = QMainWindow::Top,
+ bool = 0,const char * = 0);
+ QToolBar(const char *,QMainWindow *,QWidget * /TransferThis/,bool = 0,
+ const char * = 0,WFlags = 0);
+%End
+%If (Qt_2_00 -)
+ QToolBar(const QString &,QMainWindow * /TransferThis/,
+ QMainWindow::ToolBarDock = QMainWindow::Top,bool = 0,
+ const char * = 0);
+ QToolBar(const QString &,QMainWindow *,QWidget * /TransferThis/,bool = 0,
+ const char * = 0,WFlags = 0);
+%End
+ QToolBar(QMainWindow * /TransferThis/ = 0,const char * = 0);
+
+ void addSeparator();
+
+%If (- Qt_2_00)
+ enum Orientation
+ {
+ Horizontal,
+ Vertical
+ };
+%End
+
+ virtual void setOrientation(Orientation);
+ Orientation orientation() const;
+ void show();
+ QMainWindow *mainWindow();
+ bool event(QEvent *);
+%If (- Qt_2_00)
+ void setStretchableWidget(QWidget *);
+%End
+%If (Qt_2_00 -)
+ virtual void setStretchableWidget(QWidget *);
+ bool eventFilter(QObject *,QEvent *);
+ virtual void setLabel(const QString &);
+ QString label() const;
+%End
+%If (Qt_2_1_0 -)
+ void hide();
+ void setHorizontalStretchable(bool);
+ void setVerticalStretchable(bool);
+ bool isHorizontalStretchable() const;
+ bool isVerticalStretchable() const;
+ void clear();
+ QSize minimumSize() const;
+ QSize minimumSizeHint() const;
+%End
+
+protected:
+ void paintEvent(QPaintEvent *);
+%If (Qt_2_1_0 -)
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_2_3_0 -)
+ void styleChange(QStyle &);
+%End
+
+signals:
+%If (Qt_2_1_0 -)
+ void orientationChanged(Orientation);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QToolBar(const QToolBar &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtoolbox.sip b/python/pyqt/sip/qt/qtoolbox.sip
new file mode 100644
index 00000000..804d7dd2
--- /dev/null
+++ b/python/pyqt/sip/qt/qtoolbox.sip
@@ -0,0 +1,88 @@
+// This is the SIP interface definition for QToolBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QToolBox (Qt v3.2.0+)</Title>
+<Para>
+<Literal>QToolBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_2_0 -)
+
+class QToolBox : QFrame
+{
+%TypeHeaderCode
+#include <qtoolbox.h>
+%End
+
+public:
+ QToolBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ ~QToolBox();
+
+ int addItem(QWidget * /Transfer/,const QString &);
+ int addItem(QWidget * /Transfer/,const QIconSet &,const QString &);
+ int insertItem(int,QWidget * /Transfer/,const QString &);
+ int insertItem(int,QWidget * /Transfer/,const QIconSet &,
+ const QString &);
+
+ // On return the QWidget will have the QToolBox as it's parent, so we
+ // don't transfer ownership back.
+ int removeItem(QWidget *);
+
+ void setItemEnabled(int,bool);
+ bool isItemEnabled(int) const;
+
+ void setItemLabel(int,const QString &);
+ QString itemLabel(int) const;
+
+ void setItemIconSet(int,const QIconSet &);
+ QIconSet itemIconSet(int) const;
+
+ void setItemToolTip(int,const QString &);
+ QString itemToolTip(int) const;
+
+ QWidget *currentItem() const;
+ void setCurrentItem(QWidget *);
+
+ int currentIndex() const;
+ QWidget *item(int) const;
+ int indexOf(QWidget *) const;
+ int count() const;
+
+public slots:
+ void setCurrentIndex(int);
+
+signals:
+ void currentChanged(int);
+
+protected:
+ virtual void itemInserted(int);
+ virtual void itemRemoved(int);
+ void showEvent(QShowEvent *);
+ void frameChanged();
+ void styleChange(QStyle &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtoolbutton.sip b/python/pyqt/sip/qt/qtoolbutton.sip
new file mode 100644
index 00000000..7de2e90b
--- /dev/null
+++ b/python/pyqt/sip/qt/qtoolbutton.sip
@@ -0,0 +1,199 @@
+// This is the SIP interface definition for QToolButton.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QToolButton</Title>
+<Para>
+<Literal>QToolButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QToolButton : QButton
+{
+%TypeHeaderCode
+#include <qtoolbutton.h>
+%End
+
+public:
+%If (Qt_3_1_0 -)
+ enum TextPosition {
+%If (Qt_3_2_0 -)
+ BesideIcon,
+ BelowIcon,
+%End
+ Right, // Obsolete
+ Under // Obsolete
+ };
+%End
+
+%If (- Qt_2_00)
+ QToolButton(QWidget * /TransferThis/ = 0,const char * = 0);
+ QToolButton(const QPixmap &,const char *,const char *,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(),QToolBar * /TransferThis/,const char * = 0);
+ QToolButton(QIconSet,const char *,const char *,SIP_RXOBJ_CON,
+ SIP_SLOT_CON(),QToolBar * /TransferThis/,const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QToolButton(QWidget * /TransferThis/,const char * = 0);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QToolButton(const QPixmap &,const QString &,const QString &,
+ SIP_RXOBJ_CON,SIP_SLOT_CON(),QToolBar * /TransferThis/,
+ const char * = 0);
+%End
+%If (Qt_2_00 -)
+ QToolButton(const QIconSet &,const QString &,const QString &,
+ SIP_RXOBJ_CON,SIP_SLOT_CON(),QToolBar * /TransferThis/,
+ const char * = 0);
+%End
+%If (Qt_2_1_0 -)
+ QToolButton(ArrowType,QWidget * /TransferThis/,const char * = 0);
+%End
+
+ QSize sizeHint() const;
+%If (Qt_3_0_0 -)
+ QSize minimumSizeHint() const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setOnIconSet(const QIconSet &);
+ void setOffIconSet(const QIconSet &);
+%End
+%If (- Qt_2_00)
+ void setIconSet(const QIconSet &);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setIconSet(const QIconSet &,bool = 0);
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ QIconSet onIconSet() const;
+ QIconSet offIconSet() const;
+%End
+%If (- Qt_2_00)
+ QIconSet iconSet() const;
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ QIconSet iconSet(bool = 0) const;
+%End
+%If (Qt_3_0_0 -)
+ virtual void setIconSet(const QIconSet &);
+ QIconSet iconSet() const;
+%End
+
+ bool usesBigPixmap() const;
+ bool usesTextLabel() const;
+%If (- Qt_2_00)
+ const char *textLabel() const;
+%End
+%If (Qt_2_00 -)
+ QString textLabel() const;
+%End
+
+%If (Qt_2_1_0 -)
+ void setPopup(QPopupMenu *);
+ QPopupMenu* popup() const;
+
+ void setPopupDelay(int);
+ int popupDelay() const;
+%End
+
+%If (Qt_3_0_0 -)
+ void openPopup();
+%End
+
+%If (Qt_2_1_0 -)
+ void setAutoRaise(bool);
+ bool autoRaise() const;
+%End
+%If (Qt_3_1_0 -)
+ TextPosition textPosition() const;
+%End
+
+%If (Qt_3_2_0 -)
+ void setText(const QString &);
+%End
+
+public slots:
+ virtual void setUsesBigPixmap(bool);
+ virtual void setUsesTextLabel(bool);
+%If (- Qt_2_00)
+ virtual void setTextLabel(const char *,bool = 1);
+%End
+%If (Qt_2_00 - Qt_3_0_0)
+ virtual void setTextLabel(const QString &,bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setTextLabel(const QString &,bool);
+%End
+
+%If (- Qt_2_00)
+ void setToggleButton(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setToggleButton(bool);
+%End
+
+%If (- Qt_2_00)
+ void setOn(bool);
+%End
+%If (Qt_2_00 -)
+ virtual void setOn(bool);
+%End
+ void toggle();
+%If (Qt_3_0_0 -)
+ // This was actually introduced in Qt v2.1.0 but gives signature
+ // conflict until Qt v3.0.0.
+ void setTextLabel(const QString &);
+%End
+%If (Qt_3_1_0 -)
+ void setTextPosition(TextPosition);
+%End
+
+protected:
+%If (Qt_3_0_0 -)
+ void mousePressEvent(QMouseEvent *);
+%End
+ void drawButton(QPainter *);
+ void drawButtonLabel(QPainter *);
+
+ void enterEvent(QEvent *);
+ void leaveEvent(QEvent *);
+%If (Qt_2_1_0 -)
+ void moveEvent(QMoveEvent *);
+%End
+
+ bool uses3D() const;
+
+%If (Qt_3_0_0 -)
+ bool eventFilter(QObject *,QEvent *);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QToolButton(const QToolButton &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qtooltip.sip b/python/pyqt/sip/qt/qtooltip.sip
new file mode 100644
index 00000000..5dacad7e
--- /dev/null
+++ b/python/pyqt/sip/qt/qtooltip.sip
@@ -0,0 +1,169 @@
+// This is the SIP interface definition for QToolTip and QToolTipGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QToolTip</Title>
+<Para>
+<Literal>QToolTip</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QToolTipGroup</Title>
+<Para>
+<Literal>QToolTipGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QToolTipGroup : QObject
+{
+%TypeHeaderCode
+#include <qtooltip.h>
+%End
+
+public:
+ QToolTipGroup(QObject * /TransferThis/,const char * = 0);
+
+%If (Qt_2_00 -)
+ bool delay() const;
+%End
+%If (Qt_2_1_0 -)
+ bool enabled() const;
+%End
+
+public slots:
+%If (Qt_2_00 -)
+ void setDelay(bool);
+%End
+%If (Qt_2_1_0 -)
+ void setEnabled(bool);
+%End
+
+signals:
+%If (- Qt_2_00)
+ void showTip(const char *);
+%End
+%If (Qt_2_00 -)
+ void showTip(const QString &);
+%End
+ void removeTip();
+
+private:
+ QToolTipGroup(const QToolTipGroup &);
+};
+
+
+%If (- Qt_2_00)
+
+class QToolTip
+{
+%TypeHeaderCode
+#include <qtooltip.h>
+%End
+
+public:
+ QToolTip(QWidget *,QToolTipGroup * = 0);
+
+ static void add(QWidget *,const char *);
+ static void add(QWidget *,const char *,QToolTipGroup *,const char *);
+ static void remove(QWidget *);
+ static void add(QWidget *,const QRect &,const char *);
+ static void add(QWidget *,const QRect &,const char *,QToolTipGroup *,const char *);
+ static void remove(QWidget *,const QRect &);
+ static QFont font();
+ static void setFont(const QFont &);
+ static QPalette palette();
+ static void setPalette(const QPalette &);
+ QWidget *parentWidget() const;
+ QToolTipGroup *group() const;
+
+protected:
+ virtual void maybeTip(const QPoint &) = 0;
+ void tip(const QRect &,const char *);
+ void tip(const QRect &,const char *,const char *);
+ void clear();
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QToolTip : Qt
+{
+%TypeHeaderCode
+#include <qtooltip.h>
+%End
+
+public:
+ QToolTip(QWidget *,QToolTipGroup * = 0);
+
+ static void add(QWidget *,const QString &);
+ static void add(QWidget *,const QString &,QToolTipGroup *,
+ const QString &);
+ static void remove(QWidget *);
+
+ static void add(QWidget *,const QRect &,const QString &);
+ static void add(QWidget *,const QRect &,const QString &,
+ QToolTipGroup *,const QString &);
+ static void remove(QWidget *,const QRect &);
+
+%If (Qt_3_0_0 -)
+ static QString textFor(QWidget *,const QPoint & = QPoint());
+%End
+
+%If (Qt_2_1_0 -)
+ static void hide();
+%End
+
+ static QFont font();
+ static void setFont(const QFont &);
+ static QPalette palette();
+ static void setPalette(const QPalette &);
+
+%If (Qt_3_0_0 -)
+ static void setGloballyEnabled(bool);
+ static bool isGloballyEnabled();
+%End
+%If (Qt_2_1_0 - Qt_3_0_0)
+ static void setEnabled(bool);
+ static bool enabled();
+%End
+%If (Qt_3_1_0 -)
+ static void setWakeUpDelay(int);
+%End
+
+ QWidget *parentWidget() const;
+ QToolTipGroup *group() const;
+
+protected:
+ virtual void maybeTip(const QPoint &) = 0;
+ void tip(const QRect &,const QString &);
+ void tip(const QRect &,const QString &,const QString &);
+%If (Qt_3_1_0 -)
+ void tip(const QRect &,const QString &,const QRect &);
+ void tip(const QRect &,const QString &,const QString &,const QRect &);
+%End
+ void clear();
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qtranslator.sip b/python/pyqt/sip/qt/qtranslator.sip
new file mode 100644
index 00000000..08200ad6
--- /dev/null
+++ b/python/pyqt/sip/qt/qtranslator.sip
@@ -0,0 +1,177 @@
+// This is the SIP interface definition for QTranslator and QTranslatorMessage.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTranslator (Qt v2+)</Title>
+<Para>
+<Literal>QTranslator</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTranslatorMessage (Qt v2.2+)</Title>
+<Para>
+<Literal>QTranslatorMessage</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+class QTranslatorMessage
+{
+%TypeHeaderCode
+#include <qtranslator.h>
+%End
+
+public:
+ QTranslatorMessage();
+ QTranslatorMessage(const char *,const char *,const char *,
+ const QString & = QString::null);
+ QTranslatorMessage(QDataStream &);
+ QTranslatorMessage(const QTranslatorMessage &);
+
+ uint hash() const;
+ const char *context() const;
+ const char *sourceText() const;
+ const char *comment() const;
+
+ void setTranslation(const QString &);
+ QString translation() const;
+
+ enum Prefix {
+ NoPrefix,
+ Hash,
+ HashContext,
+ HashContextSourceText,
+ HashContextSourceTextComment
+ };
+
+%If (- Qt_3_0_0)
+ void write(QDataStream &,bool,
+ Prefix = HashContextSourceTextComment) const /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ void write(QDataStream &,bool = 0,
+ Prefix = HashContextSourceTextComment) const /ReleaseGIL/;
+%End
+
+ Prefix commonPrefix(const QTranslatorMessage &) const;
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+class QTranslator : QObject
+{
+%TypeHeaderCode
+#include <qtranslator.h>
+%End
+
+public:
+%If (Qt_3_2_0 -)
+ QTranslator(QObject * /TransferThis/ = 0,const char * = 0);
+%End
+%If (- Qt_3_2_0)
+ QTranslator(QObject * /TransferThis/,const char * = 0);
+%End
+
+%If (Qt_2_2_0 -)
+ QString find(const char *,const char *,const char *) const;
+%End
+%If (- Qt_3_0_0)
+ virtual QString find(const char *,const char *) const;
+%End
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+ QTranslatorMessage findMessage(const char *,const char *,
+ const char *) const;
+%End
+%If (Qt_3_0_0 - Qt_3_2_0)
+ virtual QTranslatorMessage findMessage(const char *,const char *,
+ const char *) const;
+%End
+%If (Qt_3_2_0 -)
+ virtual QTranslatorMessage findMessage(const char *,const char *,
+ const char * = 0) const;
+%End
+
+ bool load(const QString &,const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null);
+%If (Qt_3_1_0 -)
+ bool load(const uchar *,int);
+%End
+
+ void clear();
+
+ enum SaveMode {
+ Everything,
+ Stripped
+ };
+
+ bool save(const QString &,SaveMode = Everything);
+
+%If (Qt_2_2_0 -)
+ void insert(const QTranslatorMessage &);
+%End
+%If (- Qt_3_0_0)
+ void insert(const char *,const char *,const QString &);
+%End
+%If (Qt_2_2_0 -)
+ void remove(const QTranslatorMessage &);
+%End
+%If (- Qt_3_0_0)
+ void remove(const char *,const char *);
+%End
+%If (- Qt_3_0_0)
+ bool contains(const char *,const char *) const;
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ bool contains(const char *,const char *,const char *) const;
+%End
+%If (Qt_3_0_0 -)
+ bool contains(const char *,const char *,const char * = 0) const;
+%End
+
+%If (- Qt_3_0_0)
+ void squeeze();
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ void squeeze(SaveMode);
+%End
+%If (Qt_3_0_0 -)
+ void squeeze(SaveMode = Everything);
+%End
+ void unsqueeze();
+
+%If (Qt_2_2_0 -)
+ QValueList<QTranslatorMessage> messages() const;
+%End
+
+private:
+ QTranslator(const QTranslator &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qurl.sip b/python/pyqt/sip/qt/qurl.sip
new file mode 100644
index 00000000..7cbe394d
--- /dev/null
+++ b/python/pyqt/sip/qt/qurl.sip
@@ -0,0 +1,114 @@
+// This is the SIP interface definition for QUrl.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QUrl (Qt v2.1+)</Title>
+<Para>
+<Literal>QUrl</Literal> is fully implemented, including the
+<Literal>QString()</Literal>, <Literal>==</Literal> and <Literal>!=</Literal>
+operators.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 -)
+
+class QUrl
+{
+%TypeHeaderCode
+#include <qurl.h>
+%End
+
+public:
+ QUrl();
+ QUrl(const QString &);
+ QUrl(const QUrl &);
+ QUrl(const QUrl &,const QString &,bool = 0);
+
+ QString protocol() const;
+ virtual void setProtocol(const QString &);
+
+ QString user() const;
+ virtual void setUser(const QString &);
+ bool hasUser() const;
+
+ QString password() const;
+ virtual void setPassword(const QString &);
+ bool hasPassword() const;
+
+ QString host() const;
+ virtual void setHost(const QString &);
+ bool hasHost() const;
+
+ int port() const;
+ virtual void setPort(int);
+%If (Qt_3_0_0 -)
+ bool hasPort() const;
+%End
+
+ QString path(bool = 1) const;
+ virtual void setPath(const QString &);
+ bool hasPath() const;
+
+ virtual void setEncodedPathAndQuery(const QString &);
+ QString encodedPathAndQuery();
+
+ virtual void setQuery(const QString &);
+ QString query() const;
+
+ QString ref() const;
+ virtual void setRef(const QString &);
+ bool hasRef() const;
+
+ bool isValid() const;
+ bool isLocalFile() const;
+
+ virtual void addPath(const QString &);
+ virtual void setFileName(const QString &);
+
+ QString fileName() const;
+ QString dirPath() const;
+
+ bool operator==(const QUrl &) const;
+ bool operator==(const QString &) const;
+
+ // Qt doesn't implement these, but Python doesn't support C++'s
+ // default handling of != when == is implemented.
+ bool operator!=(const QUrl &) const;
+ bool operator!=(const QString &) const;
+
+ static void decode(QString &);
+ static void encode(QString &);
+
+ virtual QString toString(bool = 0,bool = 0) const;
+
+ virtual bool cdUp();
+
+ static bool isRelativeUrl(const QString &);
+
+protected:
+ virtual void reset();
+ virtual bool parse(const QString &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qurlinfo.sip b/python/pyqt/sip/qt/qurlinfo.sip
new file mode 100644
index 00000000..7f2d5d3b
--- /dev/null
+++ b/python/pyqt/sip/qt/qurlinfo.sip
@@ -0,0 +1,96 @@
+// This is the SIP interface definition for QUrlInfo.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QUrlInfo (Qt v2.1+)</Title>
+<Para>
+<Literal>QUrlInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL)
+%If (Qt_2_1_0 -)
+
+class QUrlInfo
+{
+%TypeHeaderCode
+#include <qurlinfo.h>
+%End
+
+public:
+%If (Qt_3_2_0 -)
+ enum PermissionSpec {
+ ReadOwner, WriteOwner, ExeOwner,
+ ReadGroup, WriteGroup, ExeGroup,
+ ReadOther, WriteOther, ExeOther
+ };
+%End
+
+ QUrlInfo();
+ QUrlInfo(const QUrlOperator &,const QString &);
+ QUrlInfo(const QUrlInfo &);
+ QUrlInfo(const QString &,int,const QString &,const QString &,uint,
+ const QDateTime &,const QDateTime &,bool,bool,bool,bool,bool,
+ bool);
+ QUrlInfo(const QUrl &,int,const QString &,const QString &,uint,
+ const QDateTime &,const QDateTime &,bool,bool,bool,bool,bool,
+ bool);
+
+ virtual void setName(const QString &);
+ virtual void setDir(bool);
+ virtual void setFile(bool);
+ virtual void setSymLink(bool);
+ virtual void setOwner(const QString &);
+ virtual void setGroup(const QString &);
+ virtual void setSize(uint);
+ virtual void setWritable(bool);
+ virtual void setReadable(bool);
+ virtual void setPermissions(int);
+ virtual void setLastModified(const QDateTime &);
+
+%If (Qt_3_0_0 -)
+ bool isValid() const;
+%End
+
+ QString name() const;
+ int permissions() const;
+ QString owner() const;
+ QString group() const;
+ uint size() const;
+ QDateTime lastModified() const;
+ QDateTime lastRead() const;
+ bool isDir() const;
+ bool isFile() const;
+ bool isSymLink() const;
+ bool isWritable() const;
+ bool isReadable() const;
+ bool isExecutable() const;
+
+ static bool greaterThan(const QUrlInfo &,const QUrlInfo &,int);
+ static bool lessThan(const QUrlInfo &,const QUrlInfo &,int);
+ static bool equal(const QUrlInfo &,const QUrlInfo &,int);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qurloperator.sip b/python/pyqt/sip/qt/qurloperator.sip
new file mode 100644
index 00000000..b776516f
--- /dev/null
+++ b/python/pyqt/sip/qt/qurloperator.sip
@@ -0,0 +1,115 @@
+// This is the SIP interface definition for QUrlOperator.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QUrlOperator (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>isDir</Function></FuncDef>
+ <ParamDef>bool *<Parameter>ok</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This returns a tuple of the <Literal>bool</Literal> result and the
+<Literal>ok</Literal> value.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL)
+%If (Qt_2_1_0 -)
+
+class QUrlOperator : QObject, QUrl
+{
+%TypeHeaderCode
+#include <qurloperator.h>
+%End
+
+public:
+ QUrlOperator();
+ QUrlOperator(const QString &);
+ QUrlOperator(const QUrlOperator &);
+ QUrlOperator(const QUrlOperator &,const QString &,bool = 0);
+
+ virtual void setPath(const QString &);
+ virtual bool cdUp();
+
+ virtual const QNetworkOperation *listChildren();
+ virtual const QNetworkOperation *mkdir(const QString &);
+ virtual const QNetworkOperation *remove(const QString &);
+ virtual const QNetworkOperation *rename(const QString &,
+ const QString &);
+ virtual const QNetworkOperation *get(const QString & = QString::null);
+ virtual const QNetworkOperation *put(const QByteArray &,
+ const QString & = QString::null);
+%If (- Qt_3_0_0)
+ virtual QList<QNetworkOperation> copy(const QString &,const QString &,
+ bool = 0);
+%End
+%If (Qt_3_0_0 -)
+ virtual QPtrList<QNetworkOperation> copy(const QString &,
+ const QString &,bool = 0,
+ bool = 1);
+%End
+ virtual void copy(const QStringList &,const QString &,bool = 0);
+ virtual bool isDir(bool * = 0);
+
+ virtual void setNameFilter(const QString &);
+ QString nameFilter() const;
+
+ virtual QUrlInfo info(const QString &) const;
+
+ virtual void stop();
+
+signals:
+ void newChildren(const QValueList<QUrlInfo> &,QNetworkOperation *);
+ void finished(QNetworkOperation *);
+ void start(QNetworkOperation *);
+ void createdDirectory(const QUrlInfo &,QNetworkOperation *);
+ void removed(QNetworkOperation *);
+ void itemChanged(QNetworkOperation *);
+ void data(const QByteArray &,QNetworkOperation *);
+ void dataTransferProgress(int,int,QNetworkOperation *);
+%If (- Qt_3_0_0)
+ void startedNextCopy(const QList<QNetworkOperation> &);
+%End
+%If (Qt_3_0_0 -)
+ void startedNextCopy(const QPtrList<QNetworkOperation> &);
+%End
+ void connectionStateChanged(int,const QString &);
+
+protected:
+%If (- Qt_3_0_0)
+ virtual void reset();
+ virtual bool parse(const QString &);
+%End
+%If (Qt_3_0_0 -)
+ void reset();
+ bool parse(const QString &);
+%End
+ virtual bool checkValid();
+ virtual void clearEntries();
+ void getNetworkProtocol();
+ void deleteNetworkProtocol();
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/quuid.sip b/python/pyqt/sip/qt/quuid.sip
new file mode 100644
index 00000000..5836dfb8
--- /dev/null
+++ b/python/pyqt/sip/qt/quuid.sip
@@ -0,0 +1,87 @@
+// This is the SIP interface definition for QUuid.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QUuid (Qt v3.0+)</Title>
+<Para>
+<Literal>QUuid</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QUuid
+{
+%TypeHeaderCode
+#include <quuid.h>
+%End
+
+public:
+%If (Qt_3_3_0 -)
+ enum Variant
+ {
+ VarUnknown,
+ NCS,
+ DCE,
+ Microsoft,
+ Reserved
+ };
+
+ enum Version
+ {
+ VerUnknown,
+ Time,
+ EmbeddedPOSIX,
+ Name,
+ Random
+ };
+%End
+
+ QUuid();
+%If (Qt_3_0_1 -)
+ QUuid(uint,ushort,ushort,uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar);
+%End
+%If (- Qt_3_0_1)
+ QUuid(ulong,ushort,ushort,uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar);
+%End
+ QUuid(const QUuid &);
+ QUuid(const QString &);
+
+ QString toString() const;
+ bool isNull() const;
+
+ bool operator==(const QUuid &) const;
+ bool operator!=(const QUuid &) const;
+
+%If (Qt_3_3_0 -)
+ bool operator<(const QUuid &) const;
+ bool operator>(const QUuid &) const;
+
+ static QUuid createUuid();
+ QUuid::Variant variant() const;
+ QUuid::Version version() const;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvalidator.sip b/python/pyqt/sip/qt/qvalidator.sip
new file mode 100644
index 00000000..d3329dbd
--- /dev/null
+++ b/python/pyqt/sip/qt/qvalidator.sip
@@ -0,0 +1,227 @@
+// This is the SIP interface definition for QValidator, QDoubleValidator,
+// QIntValidator and QRegExpValidator.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QValidator</Title>
+<FuncSynopsis>
+ <FuncDef>virtual State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDoubleValidator</Title>
+<FuncSynopsis>
+ <FuncDef>State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QIntValidator</Title>
+<FuncSynopsis>
+ <FuncDef>State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+
+<Sect2><Title>QRegExpValidator (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual State <Function>validate</Function></FuncDef>
+ <ParamDef>QString& <Parameter>input</Parameter></ParamDef>
+ <ParamDef>int& <Parameter>pos</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The returned value is a tuple of the <Literal>State</Literal> result and the
+updated <Literal>pos</Literal>.
+</Para>
+</Sect2>
+%End
+
+
+class QValidator : QObject
+{
+%TypeHeaderCode
+#include <qvalidator.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QValidator(QWidget * /TransferThis/,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ QValidator(QObject * /TransferThis/,const char * = 0);
+%End
+
+%If (- Qt_2_1_0)
+ enum State
+ {
+ Invalid,
+ Valid,
+ Acceptable
+ };
+%End
+%If (Qt_2_1_0 -)
+ enum State
+ {
+ Invalid,
+ Intermediate,
+ Valid = Intermediate,
+ Acceptable
+ };
+%End
+
+%If (Qt_2_00 -)
+ virtual State validate(QString &,int & /In,Out/) const = 0;
+ virtual void fixup(QString &) const;
+%End
+%If (- Qt_2_00)
+ virtual State validate(QString &,int & /In,Out/) = 0;
+ virtual void fixup(QString &);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QValidator(const QValidator &);
+%End
+};
+
+
+class QIntValidator : QValidator
+{
+%TypeHeaderCode
+#include <qvalidator.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ QIntValidator(QObject * /TransferThis/,const char * = 0);
+ QIntValidator(int,int,QObject * /TransferThis/,const char * = 0);
+%End
+%If (- Qt_3_0_0)
+ QIntValidator(QWidget * /TransferThis/,const char * = 0);
+ QIntValidator(int,int,QWidget * /TransferThis/,const char * = 0);
+%End
+
+%If (Qt_2_00 -)
+ QValidator::State validate(QString &,int & /In,Out/) const;
+%End
+%If (- Qt_2_00)
+ QValidator::State validate(QString &,int & /In,Out/);
+%End
+
+%If (Qt_2_1_0 -)
+ void setBottom(int);
+ void setTop(int);
+%End
+ virtual void setRange(int,int);
+
+ int bottom() const;
+ int top() const;
+
+private:
+%If (Qt_2_1_0 -)
+ QIntValidator(const QIntValidator &);
+%End
+};
+
+
+class QDoubleValidator : QValidator
+{
+%TypeHeaderCode
+#include <qvalidator.h>
+%End
+
+public:
+%If (Qt_3_0_0 -)
+ QDoubleValidator(QObject * /TransferThis/,const char * = 0);
+ QDoubleValidator(double,double,int,QObject * /TransferThis/,
+ const char * = 0);
+%End
+%If (- Qt_3_0_0)
+ QDoubleValidator(QWidget * /TransferThis/,const char * = 0);
+ QDoubleValidator(double,double,int,QWidget * /TransferThis/,
+ const char * = 0);
+%End
+
+%If (Qt_2_00 -)
+ QValidator::State validate(QString &,int & /In,Out/) const;
+%End
+%If (- Qt_2_00)
+ QValidator::State validate(QString &,int & /In,Out/);
+%End
+
+ virtual void setRange(double,double,int = 0);
+%If (Qt_2_1_0 -)
+ void setBottom(double);
+ void setTop(double);
+ void setDecimals(int);
+%End
+
+ double bottom() const;
+ double top() const;
+ int decimals() const;
+
+private:
+%If (Qt_2_1_0 -)
+ QDoubleValidator(const QDoubleValidator &);
+%End
+};
+
+
+%If (Qt_3_0_0 -)
+
+class QRegExpValidator : QValidator
+{
+%TypeHeaderCode
+#include <qvalidator.h>
+%End
+
+public:
+ QRegExpValidator(QObject * /TransferThis/,const char * = 0);
+ QRegExpValidator(const QRegExp &,QObject * /TransferThis/,
+ const char * = 0);
+
+ virtual QValidator::State validate(QString &,int & /In,Out/) const;
+
+ void setRegExp(const QRegExp &);
+ const QRegExp &regExp() const;
+
+private:
+ QRegExpValidator(const QRegExpValidator &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvaluelist.sip b/python/pyqt/sip/qt/qvaluelist.sip
new file mode 100644
index 00000000..732740da
--- /dev/null
+++ b/python/pyqt/sip/qt/qvaluelist.sip
@@ -0,0 +1,181 @@
+// This is the SIP interface definition for all types based on the QValueList
+// template.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QValueList&lt;type&gt; (Qt v2+)</Title>
+<Para>
+Types based on the <Literal>QValueList</Literal> template are automatically
+converted to and from Python lists of the type.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 -)
+
+template<Type>
+%MappedType QValueList<Type>
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+ QValueListConstIterator<Type> it;
+
+ for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *tmobj;
+
+ if ((tmobj = sipConvertFromNewInstance(new Type(*it),sipClass_Type,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0)
+ {
+ Py_XDECREF(tmobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+ }
+
+ QValueList<Type> *qvl = new QValueList<Type>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int iserr = 0, state;
+
+ // We apply the transfer to the list itself, not the elements.
+ Type *itm = reinterpret_cast<Type *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_Type,0,SIP_NOT_NONE,&state,&iserr));
+
+ if (iserr)
+ {
+ sipReleaseInstance(itm,sipClass_Type,state);
+
+ *sipIsErr = 1;
+ delete qvl;
+
+ return 0;
+ }
+
+ qvl -> append(*itm);
+
+ sipReleaseInstance(itm,sipClass_Type,state);
+ }
+
+ *sipCppPtr = qvl;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
+
+
+%If (Qt_2_00 -)
+
+%MappedType QValueList<int>
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of integers.
+
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ for (uint i = 0; i < sipCpp -> count(); ++i)
+ if (PyList_SetItem(l,i,PyInt_FromLong((long)(*sipCpp)[i])) < 0)
+ {
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of integers to a QValueList<int> on the heap.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ QValueList<int> *qvl = new QValueList<int>;
+
+ PyErr_Clear();
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ qvl -> append((int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i)));
+
+ if (PyErr_Occurred() != NULL)
+ {
+ delete qvl;
+ *sipIsErr = 1;
+
+ return 0;
+ }
+ }
+
+ *sipCppPtr = qvl;
+
+ return 1;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvariant.sip b/python/pyqt/sip/qt/qvariant.sip
new file mode 100644
index 00000000..c942c3ef
--- /dev/null
+++ b/python/pyqt/sip/qt/qvariant.sip
@@ -0,0 +1,420 @@
+// This is the SIP interface definition for QVariant.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QVariant (Qt v2.1+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const char *<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QBitArray &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QValueList&lt;QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QVariant</Function></FuncDef>
+ <ParamDef>const QMap&lt;QString,QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QBitArray &amp;<Function>asBitArray</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool &amp;<Function>asBool</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>double &amp;<Function>asDouble</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int &amp;<Function>asInt</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueList&lt;QVariant&gt; &amp;<Function>asList</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMap&lt;QString,QVariant&gt; &amp;<Function>asMap</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>uint &amp;<Function>asUInt</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapFind</Function> const</FuncDef>
+ <ParamDef>const QString &<Parameter>key</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListBegin</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListEnd</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QBitArray <Function>toBitArray</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QValueList&lt;QVariant&gt;<Function>toList</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>const QMap&lt;QString,QVariant&gt;<Function>toMap</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 -)
+
+class QVariant
+{
+%TypeHeaderCode
+#include <qvariant.h>
+%End
+
+public:
+ enum Type {
+ Invalid,
+ Map,
+ List,
+ String,
+ StringList,
+ Font,
+ Pixmap,
+ Brush,
+ Rect,
+ Size,
+ Color,
+ Palette,
+ ColorGroup,
+ IconSet,
+ Point,
+ Image,
+ Int,
+ UInt,
+ Bool,
+ Double,
+ CString,
+ PointArray,
+ Region,
+ Bitmap,
+ Cursor,
+%If (Qt_2_2_0 -)
+ SizePolicy,
+%End
+%If (Qt_3_0_0 -)
+ Date,
+ Time,
+ DateTime,
+ ByteArray,
+ BitArray,
+ KeySequence,
+%End
+%If (Qt_3_1_0 -)
+ Pen,
+%End
+%If (Qt_3_2_0 -)
+ LongLong,
+ ULongLong,
+%End
+ };
+
+ QVariant();
+ QVariant(const QVariant &);
+ QVariant(QDataStream &);
+
+ QVariant(const QString &);
+ QVariant(const QCString &);
+// QVariant(const char *);
+ QVariant(const QStringList &);
+ QVariant(const QFont &);
+ QVariant(const QPixmap &);
+ QVariant(const QImage &);
+ QVariant(const QBrush &);
+ QVariant(const QPoint &);
+ QVariant(const QRect &);
+ QVariant(const QSize &);
+ QVariant(const QColor &);
+ QVariant(const QPalette &);
+ QVariant(const QColorGroup &);
+ QVariant(const QIconSet &);
+ QVariant(const QPointArray &);
+ QVariant(const QRegion &);
+ QVariant(const QBitmap &);
+ QVariant(const QCursor &);
+%If (Qt_3_0_0 -)
+ QVariant(const QDate &);
+ QVariant(const QTime &);
+ QVariant(const QDateTime &);
+ QVariant(const QByteArray &);
+// QVariant(const QBitArray &);
+%End
+// QVariant(const QValueList<QVariant> &);
+// QVariant(const QMap<QString,QVariant> &);
+ QVariant(int /Constrained/);
+// QVariant(uint);
+%If (Qt_3_2_0 -)
+// QVariant(Q_LLONG);
+// QVariant(Q_ULLONG);
+%End
+ QVariant(bool,int);
+ QVariant(double);
+%If (Qt_2_2_0 -)
+ QVariant(QSizePolicy);
+%End
+%If (Qt_3_0_0 -)
+ // This must appear after the QString, int and double ctors because
+ // each of those can be converted automatically to a QKeySequence and
+ // we want those to take precedence.
+ QVariant(const QKeySequence &);
+%End
+%If (Qt_3_1_0 -)
+ QVariant(const QPen &);
+%End
+
+ Type type() const;
+ const char* typeName() const;
+
+ bool canCast(Type) const;
+%If (Qt_3_0_0 -)
+ bool cast(Type);
+%End
+
+ bool isValid() const;
+%If (Qt_3_1_0 -)
+ bool isNull() const;
+%End
+
+ void clear();
+
+ const QString toString() const;
+ const QCString toCString() const;
+ const QStringList toStringList() const;
+ const QFont toFont() const;
+ const QPixmap toPixmap() const;
+ const QImage toImage() const;
+ const QBrush toBrush() const;
+ const QPoint toPoint() const;
+ const QRect toRect() const;
+ const QSize toSize() const;
+ const QColor toColor() const;
+ const QPalette toPalette() const;
+ const QColorGroup toColorGroup() const;
+ const QIconSet toIconSet() const;
+ const QPointArray toPointArray() const;
+ const QBitmap toBitmap() const;
+ const QRegion toRegion() const;
+ const QCursor toCursor() const;
+%If (Qt_3_0_0 -)
+ const QDate toDate() const;
+ const QTime toTime() const;
+ const QDateTime toDateTime() const;
+ const QByteArray toByteArray() const;
+// const QBitArray toBitArray() const;
+ const QKeySequence toKeySequence() const;
+%End
+%If (Qt_3_1_0 -)
+ const QPen toPen() const;
+%End
+ int toInt() const;
+ uint toUInt() const;
+%If (Qt_3_2_0 -)
+// Q_LLONG toLongLong(bool * = 0) const;
+// Q_ULLONG toULongLong( bool * = 0) const;
+%End
+ bool toBool() const;
+ double toDouble() const;
+// const QValueList<QVariant> toList() const;
+// const QMap<QString,QVariant> toMap() const;
+%If (Qt_2_2_0 -)
+ QSizePolicy toSizePolicy() const;
+%End
+
+// QValueListConstIterator<QVariant> listBegin() const;
+// QValueListConstIterator<QVariant> listEnd() const;
+// QValueListConstIterator<QString> stringListBegin() const;
+// QValueListConstIterator<QString> stringListEnd() const;
+// QMapConstIterator<QString,QVariant> mapBegin() const;
+// QMapConstIterator<QString,QVariant> mapEnd() const;
+// QMapConstIterator<QString,QVariant> mapFind(const QString &) const;
+
+ QString & asString();
+ QCString & asCString();
+ QStringList & asStringList();
+ QFont & asFont();
+ QPixmap & asPixmap();
+ QImage & asImage();
+ QBrush & asBrush();
+ QPoint & asPoint();
+ QRect & asRect();
+ QSize & asSize();
+ QColor & asColor();
+ QPalette & asPalette();
+ QColorGroup & asColorGroup();
+ QIconSet & asIconSet();
+ QPointArray & asPointArray();
+ QBitmap & asBitmap();
+ QRegion & asRegion();
+ QCursor & asCursor();
+%If (Qt_3_0_0 -)
+ QDate & asDate();
+ QTime & asTime();
+ QDateTime & asDateTime();
+ QByteArray & asByteArray();
+// QBitArray & asBitArray();
+ QKeySequence & asKeySequence();
+%End
+%If (Qt_3_1_0 -)
+ QPen & asPen();
+%End
+// int & asInt();
+// uint & asUInt();
+%If (Qt_3_2_0 -)
+// Q_LLONG & asLongLong();
+// Q_ULLONG & asULongLong();
+%End
+// bool & asBool();
+// double & asDouble();
+// QValueList<QVariant> & asList();
+// QMap<QString,QVariant> & asMap();
+%If (Qt_2_2_0 -)
+ QSizePolicy & asSizePolicy();
+%End
+
+ void load(QDataStream &);
+ void save(QDataStream &) const;
+
+ static const char *typeToName(Type);
+ static Type nameToType(const char *);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvbox.sip b/python/pyqt/sip/qt/qvbox.sip
new file mode 100644
index 00000000..9f0e8113
--- /dev/null
+++ b/python/pyqt/sip/qt/qvbox.sip
@@ -0,0 +1,55 @@
+// This is the SIP interface definition for QVBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QVBox (Qt v2+)</Title>
+<Para>
+<Literal>QVBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QVBox : QHBox
+{
+%TypeHeaderCode
+#include <qvbox.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QVBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0,
+ bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ QVBox(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QVBox(const QVBox &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvbuttongroup.sip b/python/pyqt/sip/qt/qvbuttongroup.sip
new file mode 100644
index 00000000..9561ed54
--- /dev/null
+++ b/python/pyqt/sip/qt/qvbuttongroup.sip
@@ -0,0 +1,48 @@
+// This is the SIP interface definition for QVButtonGroup.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QVButtonGroup (Qt v2+)</Title>
+<Para>
+<Literal>QVButtonGroup</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QVButtonGroup : QButtonGroup
+{
+%TypeHeaderCode
+#include <qvbuttongroup.h>
+%End
+
+public:
+ QVButtonGroup(QWidget * /TransferThis/ = 0,const char * = 0);
+ QVButtonGroup(const QString &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+private:
+ QVButtonGroup(const QVButtonGroup &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qvgroupbox.sip b/python/pyqt/sip/qt/qvgroupbox.sip
new file mode 100644
index 00000000..06b355e0
--- /dev/null
+++ b/python/pyqt/sip/qt/qvgroupbox.sip
@@ -0,0 +1,48 @@
+// This is the SIP interface definition for QVGroupBox.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QVGroupBox (Qt v2+)</Title>
+<Para>
+<Literal>QVGroupBox</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+class QVGroupBox : QGroupBox
+{
+%TypeHeaderCode
+#include <qvgroupbox.h>
+%End
+
+public:
+ QVGroupBox(QWidget * /TransferThis/ = 0,const char * = 0);
+ QVGroupBox(const QString &,QWidget * /TransferThis/ = 0,const char * = 0);
+
+private:
+ QVGroupBox(const QVGroupBox &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qwaitcondition.sip b/python/pyqt/sip/qt/qwaitcondition.sip
new file mode 100644
index 00000000..5d8d66f2
--- /dev/null
+++ b/python/pyqt/sip/qt/qwaitcondition.sip
@@ -0,0 +1,81 @@
+// This is the SIP interface definition for QWaitCondition.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWaitCondition (Qt v2.2+)</Title>
+<Para>
+<Literal>QWaitCondition</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_THREAD_SUPPORT)
+
+%If (Qt_3_0_0 -)
+
+class QWaitCondition
+{
+%TypeHeaderCode
+#include <qwaitcondition.h>
+%End
+
+public:
+ QWaitCondition();
+
+ bool wait(unsigned long = ULONG_MAX) /ReleaseGIL/;
+ bool wait(QMutex *,unsigned long = ULONG_MAX) /ReleaseGIL/;
+
+ void wakeOne();
+ void wakeAll();
+
+private:
+ QWaitCondition(const QWaitCondition &);
+};
+
+%End
+
+
+%If (Qt_2_2_0 - Qt_3_0_0)
+
+class QWaitCondition : Qt
+{
+%TypeHeaderCode
+#include <qthread.h>
+%End
+
+public:
+ QWaitCondition();
+
+ bool wait(unsigned long = ULONG_MAX) /ReleaseGIL/;
+ bool wait(QMutex *,unsigned long = ULONG_MAX) /ReleaseGIL/;
+
+ void wakeOne();
+ void wakeAll();
+
+private:
+ QWaitCondition(const QWaitCondition &);
+};
+
+%End
+
+%End
diff --git a/python/pyqt/sip/qt/qwhatsthis.sip b/python/pyqt/sip/qt/qwhatsthis.sip
new file mode 100644
index 00000000..b7454497
--- /dev/null
+++ b/python/pyqt/sip/qt/qwhatsthis.sip
@@ -0,0 +1,97 @@
+// This is the SIP interface definition for QWhatsThis.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWhatsThis</Title>
+<Para>
+<Literal>QWhatsThis</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QWhatsThis
+{
+%TypeHeaderCode
+#include <qwhatsthis.h>
+%End
+
+public:
+ static void add(QWidget *,const char *,bool = 1);
+ static void add(QWidget *,const QPixmap &,const char *,const char *,bool = 1);
+ static void remove(QWidget *);
+ static const char *textFor(QWidget *);
+ static QToolButton *whatsThisButton(QWidget *);
+};
+
+%End
+
+%If (Qt_2_00 -)
+
+class QWhatsThis : Qt
+{
+%TypeHeaderCode
+#include <qwhatsthis.h>
+%End
+
+public:
+ QWhatsThis(QWidget *);
+
+ virtual QString text(const QPoint &);
+%If (Qt_3_0_0 -)
+ virtual bool clicked(const QString &);
+%End
+
+%If (Qt_3_1_0 -)
+ static void setFont(const QFont &);
+%End
+
+ static void add(QWidget *,const QString &);
+ static void remove(QWidget *);
+%If (- Qt_3_0_0)
+ static QString textFor(QWidget *,const QPoint & = QPoint());
+%End
+%If (Qt_3_0_0 -)
+ static QString textFor(QWidget *,const QPoint & = QPoint(),bool = 0);
+%End
+
+ static QToolButton *whatsThisButton(QWidget *);
+
+ static void enterWhatsThisMode();
+ static bool inWhatsThisMode();
+%If (- Qt_3_0_0)
+ static void leaveWhatsThisMode(const QString & = QString::null,
+ const QPoint & = QCursor::pos());
+%End
+%If (Qt_3_0_0 -)
+ static void leaveWhatsThisMode(const QString & = QString::null,
+ const QPoint & = QCursor::pos(),
+ QWidget * = 0);
+
+ static void display(const QString &,const QPoint & = QCursor::pos(),
+ QWidget * = 0);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qwidget.sip b/python/pyqt/sip/qt/qwidget.sip
new file mode 100644
index 00000000..f515277d
--- /dev/null
+++ b/python/pyqt/sip/qt/qwidget.sip
@@ -0,0 +1,654 @@
+// This is the SIP interface definition for QWidget.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWidget</Title>
+<FuncSynopsis>
+ <FuncDef>QWExtra *<Function>extraData</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QFocusData *<Function>focusData</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>lower</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>lowerW</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>raise</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>raiseW</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+class QWidget : QObject, QPaintDevice
+{
+%TypeHeaderCode
+#include <qwidget.h>
+%End
+
+public:
+ QWidget(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ WId winId() const;
+ bool isTopLevel() const;
+%If (Qt_3_0_0 -)
+ bool isDialog() const;
+%End
+ bool isPopup() const;
+ bool isDesktop() const;
+ bool isModal() const;
+ bool isEnabled() const;
+ bool isEnabledTo(QWidget *) const;
+ bool isEnabledToTLW() const;
+ const QRect &geometry() const;
+ int x() const;
+ int y() const;
+ QPoint pos() const;
+ QSize size() const;
+ int width() const;
+ int height() const;
+ QRect rect() const;
+ QRect childrenRect() const;
+ QSize minimumSize() const;
+ QSize maximumSize() const;
+ void setMinimumSize(const QSize &);
+ void setMaximumSize(const QSize &);
+ void setMinimumWidth(int);
+ void setMinimumHeight(int);
+ void setMaximumWidth(int);
+ void setMaximumHeight(int);
+ QSize sizeIncrement() const;
+ void setSizeIncrement(const QSize &);
+ void setFixedSize(const QSize &);
+ void setFixedSize(int,int);
+ void setFixedWidth(int);
+ void setFixedHeight(int);
+ QPoint mapToGlobal(const QPoint &) const;
+ QPoint mapFromGlobal(const QPoint &) const;
+ QPoint mapToParent(const QPoint &) const;
+ QPoint mapFromParent(const QPoint &) const;
+%If (Qt_2_2_0 -)
+ QPoint mapTo(QWidget *,const QPoint &) const;
+ QPoint mapFrom(QWidget *,const QPoint &) const;
+%End
+
+ QWidget *topLevelWidget() const;
+
+ BackgroundMode backgroundMode() const;
+%If (- Qt_3_0_0)
+ const QColor &backgroundColor() const;
+ virtual void setBackgroundColor(const QColor &);
+ const QPixmap *backgroundPixmap();
+ virtual void setBackgroundPixmap(const QPixmap &);
+%End
+
+ const QColor &foregroundColor() const;
+
+%If (Qt_3_0_0 -)
+ const QColor &eraseColor() const;
+ virtual void setEraseColor(const QColor &);
+
+ const QPixmap *erasePixmap() const;
+ virtual void setErasePixmap(const QPixmap &);
+%End
+
+ const QColorGroup &colorGroup() const;
+ const QPalette &palette() const;
+%If (Qt_2_2_0 -)
+ bool ownPalette() const;
+%End
+ virtual void setPalette(const QPalette &);
+%If (Qt_2_1_0 -)
+ void unsetPalette();
+%End
+
+%If (Qt_3_0_0 -)
+ const QColor &paletteForegroundColor() const;
+ void setPaletteForegroundColor(const QColor &);
+
+ const QColor &paletteBackgroundColor() const;
+ virtual void setPaletteBackgroundColor(const QColor &);
+
+ const QPixmap *paletteBackgroundPixmap() const;
+ virtual void setPaletteBackgroundPixmap(const QPixmap &);
+
+ const QBrush &backgroundBrush() const;
+%End
+
+%If (Qt_2_2_0 -)
+ bool ownFont() const;
+%End
+ virtual void setFont(const QFont &);
+ QFontMetrics fontMetrics() const;
+ QFontInfo fontInfo() const;
+
+%If (- Qt_3_0_0)
+ enum PropagationMode
+ {
+ NoChildren,
+ AllChildren,
+ SameFont,
+ SamePalette = SameFont
+ };
+
+ PropagationMode fontPropagation() const;
+ PropagationMode palettePropagation() const;
+%End
+
+ const QCursor &cursor() const;
+%If (Qt_2_2_0 -)
+ bool ownCursor() const;
+%End
+ virtual void setCursor(const QCursor &);
+ const QPixmap *icon() const;
+ bool hasMouseTracking() const;
+%If (Qt_3_0_0 -)
+ bool hasMouse() const;
+%End
+
+ void clearMask();
+ bool isActiveWindow() const;
+ bool isFocusEnabled() const;
+ FocusPolicy focusPolicy() const;
+ bool hasFocus() const;
+ static void setTabOrder(QWidget *,QWidget *);
+ QWidget *focusProxy() const;
+
+%If (Qt_3_2_0 -)
+ void setInputMethodEnabled(bool);
+ bool isInputMethodEnabled() const;
+%End
+
+ void grabMouse();
+ void grabMouse(const QCursor &);
+ void releaseMouse();
+ void grabKeyboard();
+ void releaseKeyboard();
+ static QWidget *mouseGrabber();
+ static QWidget *keyboardGrabber();
+ bool isUpdatesEnabled() const;
+ bool isVisible() const;
+ bool isVisibleTo(QWidget *) const;
+ bool isVisibleToTLW() const;
+ virtual QSize sizeHint() const;
+%If (- Qt_3_1_0)
+ virtual void adjustSize();
+%End
+ void erase();
+ void erase(int,int,int,int);
+ void erase(const QRect &);
+ void scroll(int,int);
+ QWidget *focusWidget() const;
+ bool acceptDrops() const;
+%If (- Qt_3_0_0)
+ QWidget *parentWidget() const;
+ bool testWFlags(WFlags) const;
+%End
+%If (Qt_3_0_0 -)
+ QWidget *parentWidget(bool = 0) const;
+ WState testWState(WState) const;
+ WFlags testWFlags(WFlags) const;
+%End
+ static QWidget *find(WId);
+
+%If (Qt_3_0_0 -)
+ QWidget *childAt(int,int,bool = 0) const;
+ QWidget *childAt(const QPoint &,bool = 0) const;
+%End
+
+%If (Qt_3_3_0 -)
+ void setWindowOpacity(double);
+ double windowOpacity() const;
+%End
+
+%If (- Qt_2_00)
+ GUIStyle style() const;
+ virtual void setStyle(GUIStyle);
+ const QRect &frameGeometry() const;
+ void setMinimumSize(int,int);
+ void setMaximumSize(int,int);
+ void setSizeIncrement(int,int);
+
+ enum BackgroundMode
+ {
+ FixedColor,
+ FixedPixmap,
+ NoBackground,
+ PaletteForeground,
+ PaletteBackground,
+ PaletteLight,
+ PaletteMidlight,
+ PaletteDark,
+ PaletteMid,
+ PaletteText,
+ PaletteBase
+ };
+
+ void setBackgroundMode(BackgroundMode);
+ const QFont &font() const;
+ void setFontPropagation(PropagationMode);
+ void setPalettePropagation(PropagationMode);
+ const char *caption() const;
+ const char *iconText() const;
+ void setMask(QBitmap);
+ void setMask(const QRegion &);
+
+ enum FocusPolicy
+ {
+ NoFocus = 0,
+ TabFocus = 1,
+ ClickFocus = 2,
+ StrongFocus = 3
+ };
+
+ void setActiveWindow();
+ void setFocusPolicy(FocusPolicy);
+ void setFocus();
+ void clearFocus();
+ void setFocusProxy(QWidget *);
+ virtual bool close(bool = 0);
+ void recreate(QWidget *,WFlags,const QPoint &,bool = 0);
+ void drawText(int,int,const char *);
+ void drawText(const QPoint &,const char *);
+ void setAcceptDrops(bool);
+%End
+
+%If (Qt_2_00 -)
+ void setName(const char *);
+ QStyle &style() const;
+ void setStyle(QStyle *);
+%If (Qt_3_0_0 -)
+ QStyle *setStyle(const QString &);
+%End
+ QRect frameGeometry() const;
+ QSize frameSize() const;
+ QRegion childrenRegion() const;
+ int minimumWidth() const;
+ int minimumHeight() const;
+ int maximumWidth() const;
+ int maximumHeight() const;
+ virtual void setMinimumSize(int,int);
+ virtual void setMaximumSize(int,int);
+ virtual void setSizeIncrement(int,int);
+ QSize baseSize() const;
+ void setBaseSize(const QSize &);
+ void setBaseSize(int,int);
+
+%If (- Qt_2_2_0)
+ enum BackgroundMode
+ {
+ FixedColor,
+ FixedPixmap,
+ NoBackground,
+ PaletteForeground,
+ PaletteButton,
+ PaletteLight,
+ PaletteMidlight,
+ PaletteDark,
+ PaletteMid,
+ PaletteText,
+ PaletteBrightText,
+ PaletteBase,
+ PaletteBackground,
+ PaletteShadow,
+ PaletteHighlight,
+ PaletteHighlightedText
+ };
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ enum BackgroundMode
+ {
+ FixedColor,
+ FixedPixmap,
+ NoBackground,
+ PaletteForeground,
+ PaletteButton,
+ PaletteLight,
+ PaletteMidlight,
+ PaletteDark,
+ PaletteMid,
+ PaletteText,
+ PaletteBrightText,
+ PaletteBase,
+ PaletteBackground,
+ PaletteShadow,
+ PaletteHighlight,
+ PaletteHighlightedText,
+ PaletteButtonText,
+ X11ParentRelative
+ };
+%End
+
+ virtual void setBackgroundMode(BackgroundMode);
+%If (Qt_3_0_0 -)
+ void setBackgroundMode(BackgroundMode,BackgroundMode);
+%End
+ QFont font() const;
+%If (- Qt_3_0_0)
+ void setPalette(const QPalette &,bool);
+ void setFont(const QFont &,bool);
+ virtual void setFontPropagation(PropagationMode);
+ virtual void setPalettePropagation(PropagationMode);
+%End
+ virtual void unsetCursor();
+ QString caption() const;
+ QString iconText() const;
+ virtual void setMask(const QBitmap &);
+ virtual void setMask(const QRegion &);
+
+ enum FocusPolicy
+ {
+ NoFocus = 0,
+ TabFocus = 1,
+ ClickFocus = 2,
+ StrongFocus = 3,
+ WheelFocus = 7
+ };
+
+ virtual void setActiveWindow();
+ virtual void setFocusPolicy(FocusPolicy);
+ virtual void setFocusProxy(QWidget *);
+ virtual bool close(bool);
+ // Obsolete.
+ QRect visibleRect() const;
+ bool isMinimized() const;
+ virtual QSize minimumSizeHint() const;
+ virtual QSizePolicy sizePolicy() const;
+%If (Qt_2_2_0 -)
+ bool isHidden() const;
+ bool isMaximized() const;
+%End
+%If (Qt_3_1_0 -)
+ bool isShown() const;
+ bool isFullScreen() const;
+%End
+
+%If (Qt_3_3_0 -)
+ uint windowState() const;
+ void setWindowState(uint);
+%End
+
+%If (Qt_3_0_0 -)
+ virtual void setSizePolicy(QSizePolicy);
+%End
+%If (Qt_3_1_0 -)
+ void setSizePolicy(QSizePolicy::SizeType,QSizePolicy::SizeType,
+ bool = 0);
+%End
+%If (Qt_2_2_0 - Qt_3_0_0)
+ void setSizePolicy(QSizePolicy);
+%End
+ virtual int heightForWidth(int) const;
+
+%If (Qt_3_2_0 -)
+ QRegion clipRegion() const;
+%End
+
+ QLayout *layout() const;
+ void updateGeometry();
+
+ virtual void reparent(QWidget * /GetWrapper/,WFlags,const QPoint &,
+ bool = 0);
+%MethodCode
+ if (sipCpp -> parent() != a0)
+ if (a0)
+ sipTransferTo(sipSelf,a0Wrapper);
+ else
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipSelfWasArg ? sipCpp->QWidget::reparent(a0, a1, *a2, a3) : sipCpp->reparent(a0, a1, *a2, a3);
+ Py_END_ALLOW_THREADS
+%End
+
+%If (Qt_2_1_0 -)
+ void reparent(QWidget * /GetWrapper/,const QPoint &,bool = 0);
+%MethodCode
+ if (sipCpp -> parent() != a0)
+ if (a0)
+ sipTransferTo(sipSelf,a0Wrapper);
+ else
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp->reparent(a0, *a1, a2);
+ Py_END_ALLOW_THREADS
+%End
+%End
+
+ void erase(const QRegion &);
+ void scroll(int,int,const QRect &);
+ void drawText(int,int,const QString &);
+ void drawText(const QPoint &,const QString &);
+ virtual void setAcceptDrops(bool);
+ virtual void setAutoMask(bool);
+ bool autoMask() const;
+ virtual bool customWhatsThis() const;
+%If (- Qt_3_0_0)
+ bool testWState(uint) const;
+%End
+%End
+
+%If (Qt_2_1_0 -)
+ QRect microFocusHint() const;
+ void unsetFont();
+%End
+
+%If (Qt_2_1_0 -)
+ enum BackgroundOrigin {
+ WidgetOrigin,
+ ParentOrigin,
+%If (Qt_3_0_0 -)
+ WindowOrigin,
+%End
+%If (Qt_3_1_0 -)
+ AncestorOrigin,
+%End
+ };
+%End
+
+%If (Qt_2_1_0 - Qt_3_0_0)
+ void setBackgroundOrigin(BackgroundOrigin);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setBackgroundOrigin(BackgroundOrigin);
+%End
+%If (Qt_2_1_0 -)
+ BackgroundOrigin backgroundOrigin() const;
+%End
+
+%If (Qt_3_1_0 -)
+ QPoint backgroundOffset() const;
+%End
+
+public slots:
+%If (Qt_3_1_0 -)
+ virtual void adjustSize();
+%End
+ virtual void setEnabled(bool);
+%If (Qt_2_2_0 -)
+ void setDisabled(bool);
+%End
+ void update();
+ void update(int,int,int,int);
+ void update(const QRect &);
+ void repaint(int,int,int,int,bool = 1);
+ void repaint(const QRect &,bool = 1);
+ virtual void show();
+ virtual void hide();
+%If (Qt_3_1_0 -)
+ void setShown(bool);
+ void setHidden(bool);
+%End
+ void raise() /PyName=raiseW/;
+ void lower() /PyName=lowerW/;
+ virtual void move(int,int);
+ void move(const QPoint &);
+ virtual void resize(int,int);
+ void resize(const QSize &);
+ virtual void setGeometry(int,int,int,int);
+
+%If (- Qt_2_00)
+ void setCaption(const char *);
+ void setIcon(const QPixmap &);
+ void setIconText(const char *);
+ void setMouseTracking(bool);
+ void setUpdatesEnabled(bool);
+ void repaint(bool = 1);
+ void iconify();
+ void setGeometry(const QRect &);
+%End
+
+%If (Qt_2_00 -)
+ virtual void setCaption(const QString &);
+ virtual void setIcon(const QPixmap &);
+ virtual void setIconText(const QString &);
+ virtual void setMouseTracking(bool);
+ virtual void setFocus();
+ void clearFocus();
+ virtual void setUpdatesEnabled(bool);
+ void repaint();
+ void repaint(bool);
+ void repaint(const QRegion &,bool = 1);
+ virtual void showMinimized();
+ virtual void showMaximized();
+ virtual void showNormal();
+ virtual void polish();
+ bool close();
+ virtual void setGeometry(const QRect &);
+%End
+
+%If (Qt_2_1_0 -)
+ void showFullScreen();
+ void constPolish() const;
+%End
+
+protected:
+ bool event(QEvent *);
+ virtual void mousePressEvent(QMouseEvent *);
+ virtual void mouseReleaseEvent(QMouseEvent *);
+ virtual void mouseDoubleClickEvent(QMouseEvent *);
+ virtual void mouseMoveEvent(QMouseEvent *);
+ virtual void keyPressEvent(QKeyEvent *);
+ virtual void keyReleaseEvent(QKeyEvent *);
+ virtual void focusInEvent(QFocusEvent *);
+ virtual void focusOutEvent(QFocusEvent *);
+ virtual void enterEvent(QEvent *);
+ virtual void leaveEvent(QEvent *);
+ virtual void paintEvent(QPaintEvent *);
+ virtual void moveEvent(QMoveEvent *);
+ virtual void resizeEvent(QResizeEvent *);
+ virtual void closeEvent(QCloseEvent *);
+%If (Qt_3_0_0 -)
+ virtual void contextMenuEvent(QContextMenuEvent *);
+ virtual void imStartEvent(QIMEvent *);
+ virtual void imComposeEvent(QIMEvent *);
+ virtual void imEndEvent(QIMEvent *);
+ virtual void tabletEvent(QTabletEvent *);
+%End
+ virtual void enabledChange(bool);
+%If (- Qt_3_0_0)
+ virtual void backgroundColorChange(const QColor &);
+ virtual void backgroundPixmapChange(const QPixmap &);
+%End
+ virtual void paletteChange(const QPalette &);
+ virtual void fontChange(const QFont &);
+%If (Qt_3_0_0 -)
+ virtual void windowActivationChange(bool);
+ void resetInputContext();
+%End
+ WFlags getWFlags() const;
+ void clearWFlags(WFlags);
+ virtual bool focusNextPrevChild(bool);
+// QWExtra *extraData();
+// QFocusData *focusData();
+
+%If (- Qt_2_00)
+ virtual void styleChange(GUIStyle);
+ void create(WId);
+ void create(WId,bool,bool);
+ void destroy(bool,bool);
+ void setWFlags(WFlags);
+ void setFRect(const QRect &);
+ void setCRect(const QRect &);
+ void setSizeGrip(bool);
+%End
+
+%If (Qt_2_00 -)
+ virtual void wheelEvent(QWheelEvent *);
+%If (Qt_DRAGANDDROP)
+ virtual void dragEnterEvent(QDragEnterEvent *);
+ virtual void dragMoveEvent(QDragMoveEvent *);
+ virtual void dragLeaveEvent(QDragLeaveEvent *);
+ virtual void dropEvent(QDropEvent *);
+%End
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+%If (- Qt_3_0_0)
+ virtual void customEvent(QCustomEvent *);
+%End
+
+
+ virtual void updateMask();
+
+ virtual void styleChange(QStyle &);
+ int metric(int) const;
+ virtual void create(WId = 0,bool = 1,bool = 1);
+ virtual void destroy(bool = 1,bool = 1);
+ uint getWState() const;
+ virtual void setWState(uint);
+ void clearWState(uint);
+ virtual void setWFlags(WFlags);
+%If (- Qt_3_0_0)
+ virtual void setFRect(const QRect &);
+ virtual void setCRect(const QRect &);
+%End
+ virtual void setKeyCompression(bool);
+%If (- Qt_3_0_0)
+ virtual void setMicroFocusHint(int,int,int,int,bool = 1);
+%End
+%If (Qt_3_0_0 -)
+ virtual void setMicroFocusHint(int,int,int,int,bool = 1,QFont * = 0);
+%End
+%End
+
+private:
+ QWidget(const QWidget &);
+};
diff --git a/python/pyqt/sip/qt/qwidgetlist.sip b/python/pyqt/sip/qt/qwidgetlist.sip
new file mode 100644
index 00000000..7fc67421
--- /dev/null
+++ b/python/pyqt/sip/qt/qwidgetlist.sip
@@ -0,0 +1,108 @@
+// This is the SIP interface definition for QWidgetList.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWidgetList</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QWidgetList</Literal> is the
+return type of a function or the type of an argument, a Python list of
+instances is used instead.
+</Para>
+</Sect2>
+%End
+
+
+%MappedType QWidgetList
+{
+%TypeHeaderCode
+#include <qwidgetlist.h>
+#include "sipqtQWidget.h"
+%End
+
+%ConvertFromTypeCode
+ // Convert the list.
+
+ PyObject *pl;
+ QWidget *obj;
+
+ if ((pl = PyList_New(0)) == NULL)
+ return NULL;
+
+ for (QWidgetListIt it(*sipCpp); (obj = it.current()) != NULL; ++it)
+ {
+ PyObject *inst;
+
+ if ((inst = sipConvertFromInstance(obj,sipClass_QWidget,sipTransferObj)) == NULL || PyList_Append(pl,inst) < 0)
+ {
+ Py_XDECREF(inst);
+ Py_DECREF(pl);
+
+ return NULL;
+ }
+
+ Py_DECREF(inst);
+ }
+
+ return pl;
+%End
+
+%ConvertToTypeCode
+ // Convert a Python list of QWidget instances to a QWidgetList on the
+ // heap.
+
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QWidget,0))
+ return 0;
+
+ return 1;
+ }
+
+ QWidgetList *qwl = new QWidgetList;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ QWidget *qw;
+
+ // We apply the transfer to the list itself, not the elements.
+ // Note that any temporary element will never be destroyed.
+ // There is nothing that can be done about this.
+ qw = reinterpret_cast<QWidget *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QWidget,0,0,0,sipIsErr));
+
+ if (*sipIsErr)
+ {
+ delete qwl;
+ return 0;
+ }
+
+ qwl -> append(qw);
+ }
+
+ *sipCppPtr = qwl;
+
+ return sipGetState(sipTransferObj);
+%End
+};
diff --git a/python/pyqt/sip/qt/qwidgetstack.sip b/python/pyqt/sip/qt/qwidgetstack.sip
new file mode 100644
index 00000000..daf6694a
--- /dev/null
+++ b/python/pyqt/sip/qt/qwidgetstack.sip
@@ -0,0 +1,98 @@
+// This is the SIP interface definition for QWidgetStack.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWidgetStack</Title>
+<Para>
+<Literal>QWidgetStack</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+class QWidgetStack : QFrame
+{
+%TypeHeaderCode
+#include <qwidgetstack.h>
+%End
+
+public:
+ QWidgetStack(QWidget * /TransferThis/ = 0,const char * = 0);
+%If (Qt_3_1_0 -)
+ QWidgetStack(QWidget * /TransferThis/,const char *,WFlags);
+%End
+
+ // The QWidget has it's parent changed to be `this' so it will be
+ // deleted automatically when `this' is deleted. It stays this way
+ // even if removeWidget() is called, so it isn't transferred back.
+%If (- Qt_3_0_0)
+ void addWidget(QWidget * /Transfer/,int);
+%End
+%If (Qt_3_0_0 -)
+ int addWidget(QWidget * /Transfer/,int = -1);
+%End
+ void removeWidget(QWidget *);
+
+%If (Qt_2_00 -)
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+%End
+ void show();
+
+ QWidget *widget(int) const;
+ int id(QWidget *) const;
+
+ QWidget *visibleWidget() const;
+
+%If (Qt_2_00 -)
+ void setFrameRect(const QRect &);
+%End
+
+%If (- Qt_2_00)
+ bool event(QEvent *);
+%End
+
+signals:
+ void aboutToShow(int);
+ void aboutToShow(QWidget *);
+
+public slots:
+ void raiseWidget(int);
+ void raiseWidget(QWidget *);
+
+protected:
+ void frameChanged();
+%If (- Qt_2_00)
+ void setChildGeometries();
+%End
+%If (Qt_2_00 -)
+ void resizeEvent(QResizeEvent *);
+
+ virtual void setChildGeometries();
+ void childEvent(QChildEvent *);
+%End
+
+private:
+%If (Qt_2_1_0 -)
+ QWidgetStack(const QWidgetStack &);
+%End
+};
diff --git a/python/pyqt/sip/qt/qwindow.sip b/python/pyqt/sip/qt/qwindow.sip
new file mode 100644
index 00000000..4305c426
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindow.sip
@@ -0,0 +1,47 @@
+// This is the SIP interface definition for QWindow.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWindow</Title>
+<Para>
+<Literal>QWindow</Literal> is fully implemented (Qt v1.x).
+</Para>
+</Sect2>
+%End
+
+
+%If (- Qt_2_00)
+
+class QWindow : QWidget
+{
+%TypeHeaderCode
+#include <qwindow.h>
+%End
+
+public:
+ QWindow(QWidget * = 0,const char * = 0,WFlags = 0);
+
+private:
+ QWindow(const QWindow &);
+};
+
+%End
diff --git a/python/pyqt/sip/qt/qwindowdefs.sip b/python/pyqt/sip/qt/qwindowdefs.sip
new file mode 100644
index 00000000..4638d710
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindowdefs.sip
@@ -0,0 +1,180 @@
+// This is the SIP interface definition for a variety of constant definitions.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>Qt Constants</Title>
+<Para>
+All constant values defined by Qt have equivalent constants defined to Python.
+</Para>
+</Sect2>
+%End
+
+
+%ModuleHeaderCode
+#include <qwindowdefs.h>
+%End
+
+
+%OptionalInclude qwindowdefs_mac.sip
+%OptionalInclude qwindowdefs_qws.sip
+%OptionalInclude qwindowdefs_win.sip
+%OptionalInclude qwindowdefs_x11.sip
+
+
+%If (- Qt_2_00)
+typedef short QCOORD;
+
+const int QCOORD_MIN;
+const int QCOORD_MAX;
+%End
+
+%If (Qt_2_00 -)
+typedef Q_INT32 QCOORD;
+
+const QCOORD QCOORD_MIN;
+const QCOORD QCOORD_MAX;
+%End
+
+
+typedef unsigned QRgb;
+
+%If (- Qt_3_0_0)
+char *qAppName();
+%End
+%If (Qt_3_0_0 -)
+const char *qAppName();
+%End
+
+
+%If (- Qt_2_00)
+
+enum GUIStyle {
+ MacStyle,
+ WindowsStyle,
+ Win3Style,
+ PMStyle,
+ MotifStyle
+};
+
+
+// Widget state flags.
+
+typedef uint WFlags;
+
+const uint WState_Created;
+const uint WState_Disabled;
+const uint WState_Visible;
+const uint WState_DoHide;
+const uint WState_ClickToFocus;
+const uint WState_TrackMouse;
+const uint WState_BlockUpdates;
+const uint WState_PaintEvent;
+
+// Widget type flags.
+
+const uint WType_TopLevel;
+const uint WType_Modal;
+const uint WType_Popup;
+const uint WType_Desktop;
+
+// Window style flags.
+
+const uint WStyle_Customize;
+const uint WStyle_NormalBorder;
+const uint WStyle_DialogBorder;
+const uint WStyle_NoBorder;
+const uint WStyle_Title;
+const uint WStyle_SysMenu;
+const uint WStyle_Minimize;
+const uint WStyle_Maximize;
+const uint WStyle_MinMax;
+const uint WStyle_Tool;
+const uint WStyle_Mask;
+
+// Miscellaneous widget flags.
+
+const uint WCursorSet;
+const uint WDestructiveClose;
+const uint WPaintDesktop;
+const uint WPaintUnclipped;
+const uint WPaintClever;
+const uint WConfigPending;
+const uint WResizeNoErase;
+const uint WRecreated;
+const uint WExportFontMetrics;
+const uint WExportFontInfo;
+const uint WFocusSet;
+const uint WState_TabToFocus;
+
+
+enum RasterOp {
+ CopyROP,
+ OrROP,
+ XorROP,
+ EraseROP,
+ NotCopyROP,
+ NotOrROP,
+ NotXorROP,
+ NotEraseROP,
+ NotROP
+};
+
+
+// Text alignment flags.
+
+const int AlignLeft;
+const int AlignRight;
+const int AlignHCenter;
+const int AlignTop;
+const int AlignBottom;
+const int AlignVCenter;
+const int AlignCenter;
+
+// Miscellaneous text flags.
+
+const int SingleLine;
+const int DontClip;
+const int ExpandTabs;
+const int ShowPrefix;
+const int WordBreak;
+const int GrayText;
+
+// Image conversion flags.
+
+const int ColorMode_Mask;
+const int AutoColor;
+const int ColorOnly;
+const int MonoOnly;
+const int AlphaDither_Mask;
+const int ThresholdAlphaDither;
+const int OrderedAlphaDither;
+const int DiffuseAlphaDither;
+const int Dither_Mask;
+const int DiffuseDither;
+const int OrderedDither;
+const int ThresholdDither;
+const int DitherMode_Mask;
+const int AutoDither;
+const int PreferDither;
+const int AvoidDither;
+
+%End
diff --git a/python/pyqt/sip/qt/qwindowdefs_qws.sip b/python/pyqt/sip/qt/qwindowdefs_qws.sip
new file mode 100644
index 00000000..53f4b773
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindowdefs_qws.sip
@@ -0,0 +1,29 @@
+// This is the SIP interface definition for a variety of constant definitions
+// for Qt/Embedded.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If (WS_QWS)
+
+typedef unsigned WId;
+typedef void *HANDLE;
+
+%End
diff --git a/python/pyqt/sip/qt/qwindowdefs_x11.sip b/python/pyqt/sip/qt/qwindowdefs_x11.sip
new file mode 100644
index 00000000..4ddfcd42
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindowdefs_x11.sip
@@ -0,0 +1,48 @@
+// This is the SIP interface definition for a variety of constant definitions
+// for X11.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If (WS_X11)
+
+%If (- Qt_3_0_0)
+typedef unsigned HANDLE;
+typedef unsigned WId;
+%End
+
+%If (Qt_3_0_0 -)
+typedef unsigned long WId;
+%End
+
+typedef void Display;
+
+Display *qt_xdisplay();
+int qt_xscreen();
+WId qt_xrootwin();
+%If (Qt_3_1_0 -)
+WId qt_xrootwin(int);
+%End
+
+%If (Qt_3_3_0 -)
+const char *qAppClass();
+%End
+
+%End
diff --git a/python/pyqt/sip/qt/qwindowsstyle.sip b/python/pyqt/sip/qt/qwindowsstyle.sip
new file mode 100644
index 00000000..34be4260
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindowsstyle.sip
@@ -0,0 +1,192 @@
+// This is the SIP interface definition for QWindowsStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWindowsStyle (Qt v2+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getButtonShift</Function></FuncDef>
+ <ParamDef>int &<Parameter>x</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>y</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>x</Literal> and
+<Literal>y</Literal> values. (Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>scrollBarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>sb</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMin</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderMax</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>sliderLength</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>buttonDim</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>sb</Literal> parameter and returns a tuple of the
+<Literal>sliderMin</Literal>, <Literal>sliderMax</Literal>,
+<Literal>sliderLength</Literal> and <Literal>buttonDim</Literal> values.
+(Qt v2)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>tabbarMetrics</Function></FuncDef>
+ <ParamDef>const QTabBar *<Parameter>t</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>hframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>vframe</Parameter></ParamDef>
+ <ParamDef>int &<Parameter>overlap</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes only the <Literal>t</Literal> parameter and returns a tuple of the
+<Literal>hframe</Literal>, <Literal>vframe</Literal> and
+<Literal>overlap</Literal> values. (Qt v2)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_STYLE_WINDOWS)
+%If (Qt_2_00 -)
+
+class QWindowsStyle : QCommonStyle
+{
+%TypeHeaderCode
+#include <qwindowsstyle.h>
+%End
+
+public:
+ QWindowsStyle();
+
+%If (Qt_3_3_0 -)
+ void polish(QApplication *);
+ void unPolish(QApplication *);
+
+ void polish(QWidget *);
+ void unPolish(QWidget *);
+
+ void polish(QPalette &);
+%End
+
+%If (- Qt_3_0_0)
+ void drawButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawBevelButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,const QBrush * = 0);
+ void drawFocusRect(QPainter *,const QRect &,const QColorGroup &,
+ const QColor * = 0,bool = 0);
+ void drawPushButton(QPushButton *,QPainter *);
+
+ void getButtonShift(int &,int &);
+
+ void drawPanel(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,int = 1,const QBrush * = 0);
+ void drawPopupPanel(QPainter *,int,int,int,int,const QColorGroup &,
+ int = 2,const QBrush * = 0);
+ void drawArrow(QPainter *,ArrowType,bool,int,int,int,int,
+ const QColorGroup &,bool,const QBrush * = 0);
+ QSize indicatorSize() const;
+ void drawIndicator(QPainter *,int,int,int,int,const QColorGroup &,
+ int,bool = 0,bool = 1);
+ QSize exclusiveIndicatorSize() const;
+ void drawExclusiveIndicator(QPainter *,int,int,int,int,
+ const QColorGroup &,bool,bool = 0,bool = 1);
+ void drawExclusiveIndicatorMask(QPainter *,int,int,int,int,bool);
+ void drawComboButton(QPainter *,int,int,int,int,const QColorGroup &,
+ bool = 0,bool = 0,bool = 1,const QBrush * = 0);
+ QRect comboButtonRect(int,int,int,int);
+ QRect comboButtonFocusRect(int,int,int,int);
+
+ void tabbarMetrics(const QTabBar *,int &,int &,int &);
+
+ void drawTab(QPainter *,const QTabBar *,QTab *,bool);
+ void drawTabMask(QPainter *,const QTabBar *,QTab *,bool);
+
+ void scrollBarMetrics(const QScrollBar *,int &,int &,int &,int &);
+
+ void drawScrollBarControls(QPainter *,const QScrollBar *,int,uint,uint);
+ int sliderLength() const;
+ void drawSlider(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation,bool,bool);
+ void drawSliderMask(QPainter *,int,int,int,int,Orientation,bool,bool);
+ void drawSliderGroove(QPainter *,int,int,int,int,const QColorGroup &,
+ QCOORD,Orientation);
+ int maximumSliderDragDistance() const;
+ int splitterWidth() const;
+ void drawSplitter(QPainter *,int,int,int,int,const QColorGroup &,
+ Orientation);
+ void drawCheckMark(QPainter *,int,int,int,int,const QColorGroup &,bool,
+ bool);
+ void polishPopupMenu(QPopupMenu *);
+ int extraPopupMenuItemWidth(bool,int,QMenuItem *,const QFontMetrics &);
+ int popupMenuItemHeight(bool,QMenuItem *,const QFontMetrics &);
+ void drawPopupMenuItem(QPainter *,bool,int,int,QMenuItem *,
+ const QPalette &,bool,bool,int,int,int,int);
+%End
+%If (Qt_3_0_0 -)
+ virtual void polishPopupMenu(QPopupMenu *);
+
+ void drawPrimitive(PrimitiveElement,QPainter *,const QRect &,
+ const QColorGroup &,SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawControl(ControlElement,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,
+ const QStyleOption & = QStyleOption()) const;
+
+ void drawComplexControl(ComplexControl,QPainter *,const QWidget *,
+ const QRect &,const QColorGroup &,
+ SFlags = Style_Default,SCFlags = SC_All,
+ SCFlags = SC_None,
+ const QStyleOption & = QStyleOption()) const;
+
+ int pixelMetric(PixelMetric,const QWidget * = 0) const;
+
+ QSize sizeFromContents(ContentsType,const QWidget *,const QSize &,
+ const QStyleOption & = QStyleOption()) const;
+
+ int styleHint(StyleHint,const QWidget *,
+ const QStyleOption & = QStyleOption(),
+ QStyleHintReturn * = 0) const;
+
+ QPixmap stylePixmap(StylePixmap,const QWidget * = 0,
+ const QStyleOption & = QStyleOption()) const;
+%End
+
+%If (Qt_3_1_0 -)
+ QRect subRect(SubRect,const QWidget *) const;
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ void drawWinShades(QPainter *,int,int,int,int,const QColor &,
+ const QColor &,const QColor &,const QColor &,
+ const QBrush *);
+%End
+
+private:
+%If (Qt_3_0_0 -)
+ QWindowsStyle(const QWindowsStyle &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qwindowsxpstyle.sip b/python/pyqt/sip/qt/qwindowsxpstyle.sip
new file mode 100644
index 00000000..394bfad0
--- /dev/null
+++ b/python/pyqt/sip/qt/qwindowsxpstyle.sip
@@ -0,0 +1,31 @@
+// This is the SIP interface definition for QWindowsXPStyle.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWindowsXPStyle (Qt v3.0.1+, Windows)</Title>
+<Para>
+<Literal>QWindowsXPStyle</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
diff --git a/python/pyqt/sip/qt/qwizard.sip b/python/pyqt/sip/qt/qwizard.sip
new file mode 100644
index 00000000..c062f65c
--- /dev/null
+++ b/python/pyqt/sip/qt/qwizard.sip
@@ -0,0 +1,122 @@
+// This is the SIP interface definition for QWizard.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWizard (Qt v2+)</Title>
+<Para>
+<Literal>QWizard</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_WIZARD)
+%If (Qt_2_00 -)
+
+class QWizard : QDialog
+{
+%TypeHeaderCode
+#include <qwizard.h>
+%End
+
+public:
+ QWizard(QWidget * /TransferThis/ = 0,const char * = 0,bool = 0,
+ WFlags = 0);
+
+ void show();
+
+ void setFont(const QFont &);
+
+ // The QWidget is passed to QWidgetStack::addWidget().
+ virtual void addPage(QWidget * /Transfer/, const QString &);
+%If (Qt_3_0_0 -)
+ // The QWidget is passed to QWidgetStack::addWidget().
+ virtual void insertPage(QWidget * /Transfer/, const QString &,int);
+%End
+ virtual void removePage(QWidget *);
+
+ QString title(QWidget *) const;
+%If (Qt_2_2_0 -)
+ void setTitle(QWidget *,const QString &);
+%End
+%If (Qt_3_0_0 -)
+ QFont titleFont() const;
+ void setTitleFont(const QFont &);
+%End
+
+ virtual void showPage(QWidget *);
+
+ QWidget *currentPage() const;
+
+%If (Qt_2_1_0 -)
+ QWidget *page(int) const;
+ int pageCount() const;
+%End
+%If (Qt_3_0_0 -)
+ int indexOf(QWidget *) const;
+%End
+
+ virtual bool appropriate(QWidget *) const;
+ virtual void setAppropriate(QWidget *,bool);
+
+ QPushButton *backButton() const;
+ QPushButton *nextButton() const;
+ QPushButton *finishButton() const;
+ QPushButton *cancelButton() const;
+ QPushButton *helpButton() const;
+
+ bool eventFilter(QObject *,QEvent *);
+
+public slots:
+ virtual void setBackEnabled(QWidget *,bool);
+ virtual void setNextEnabled(QWidget *,bool);
+ virtual void setFinishEnabled(QWidget *,bool);
+
+ virtual void setHelpEnabled(QWidget *,bool);
+
+%If (- Qt_3_0_0)
+ virtual void setFinish(QWidget *,bool);
+%End
+
+protected slots:
+ virtual void back();
+ virtual void next();
+ virtual void help();
+
+signals:
+ void helpClicked();
+%If (Qt_2_2_0 -)
+ void selected(const QString &);
+%End
+
+protected:
+ virtual void layOutButtonRow(QHBoxLayout *);
+ virtual void layOutTitleRow(QHBoxLayout *,const QString &);
+
+private:
+%If (Qt_2_1_0 -)
+ QWizard(const QWizard &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/qwmatrix.sip b/python/pyqt/sip/qt/qwmatrix.sip
new file mode 100644
index 00000000..1bb8cdc4
--- /dev/null
+++ b/python/pyqt/sip/qt/qwmatrix.sip
@@ -0,0 +1,178 @@
+// This is the SIP interface definition for QWMatrix.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWMatrix</Title>
+<Para>
+The Python <Literal>==</Literal>, <Literal>!=</Literal> and
+<Literal>*=</Literal> operators are supported.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>QWMatrix <Function>invert</Function> const</FuncDef>
+ <ParamDef>bool *<Parameter>invertible</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the <Literal>QWMatrix</Literal>
+result and the <Literal>invertible</Literal> value.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>int <Parameter>x</Parameter></ParamDef>
+ <ParamDef>int <Parameter>y</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>float <Parameter>x</Parameter></ParamDef>
+ <ParamDef>float <Parameter>y</Parameter></ParamDef>
+ <ParamDef>float *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>float *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values. (Qt v1.x)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>map</Function> const</FuncDef>
+ <ParamDef>double <Parameter>x</Parameter></ParamDef>
+ <ParamDef>double <Parameter>y</Parameter></ParamDef>
+ <ParamDef>double *<Parameter>tx</Parameter></ParamDef>
+ <ParamDef>double *<Parameter>ty</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
+returns a tuple containing the <Literal>tx</Literal> and <Literal>ty</Literal>
+values. (Qt v2+)
+</Para>
+</Sect2>
+%End
+
+
+class QWMatrix
+{
+%TypeHeaderCode
+#include <qwmatrix.h>
+%End
+
+public:
+ QWMatrix();
+%If (- Qt_2_00)
+ QWMatrix(float,float,float,float,float,float);
+%End
+%If (Qt_2_00 -)
+ QWMatrix(double,double,double,double,double,double);
+%End
+
+ void map(int /Constrained/,int /Constrained/,int *,int *) const;
+
+%If (Qt_3_0_0 -)
+ QRect mapRect(const QRect &) const;
+%End
+
+ QPoint map(const QPoint &) const;
+ QRect map(const QRect &); const
+ QPointArray map(const QPointArray &) const;
+%If (Qt_3_1_0 -)
+ QRegion map(const QRegion &) const;
+ QRegion mapToRegion(const QRect &) const;
+ QPointArray mapToPolygon(const QRect &) const;
+%End
+
+ void reset();
+%If (Qt_3_0_0 -)
+ bool isIdentity() const;
+
+ bool isInvertible() const;
+%End
+%If (Qt_3_1_0 -)
+ double det() const;
+%End
+
+ QWMatrix invert(bool * = 0) const;
+
+ bool operator==(const QWMatrix &) const;
+ bool operator!=(const QWMatrix &) const;
+ QWMatrix &operator*=(const QWMatrix &);
+
+%If (Qt_3_0_0 -)
+ // These aren't documented but are used in Qt examples.
+ QPoint operator*(const QPoint &) const;
+ QRegion operator*(const QRect &) const;
+ QRegion operator*(const QRegion &) const;
+ QPointArray operator*(const QPointArray &) const;
+%End
+
+%If (Qt_3_1_0 -)
+ enum TransformationMode {
+ Points,
+ Areas
+ };
+
+ static void setTransformationMode(TransformationMode);
+ static TransformationMode transformationMode();
+%End
+
+%If (- Qt_2_00)
+ void setMatrix(float,float,float,float,float,float);
+ float m11();
+ float m12();
+ float m21();
+ float m22();
+ float dx();
+ float dy();
+
+ void map(float,float,float *,float *) const;
+
+ QWMatrix &translate(float,float);
+ QWMatrix &scale(float,float);
+ QWMatrix &shear(float,float);
+ QWMatrix &rotate(float);
+%End
+
+%If (Qt_2_00 -)
+ void setMatrix(double,double,double,double,double,double);
+ double m11();
+ double m12();
+ double m21();
+ double m22();
+ double dx();
+ double dy();
+
+ void map(double,double,double *,double *) const;
+
+ QWMatrix &translate(double,double);
+ QWMatrix &scale(double,double);
+ QWMatrix &shear(double,double);
+ QWMatrix &rotate(double);
+%End
+};
diff --git a/python/pyqt/sip/qt/qworkspace.sip b/python/pyqt/sip/qt/qworkspace.sip
new file mode 100644
index 00000000..bbc9dfc9
--- /dev/null
+++ b/python/pyqt/sip/qt/qworkspace.sip
@@ -0,0 +1,101 @@
+// This is the SIP interface definition for QWorkspace.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWorkspace (Qt v2.1+)</Title>
+<Para>
+<Literal>QWorkspace</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_1_0 -)
+%If (Qt_WORKSPACE)
+
+class QWorkspace : QWidget
+{
+%TypeHeaderCode
+#include <qworkspace.h>
+%End
+
+public:
+ QWorkspace(QWidget * /TransferThis/ = 0,const char * = 0);
+
+%If (Qt_3_2_0 -)
+ enum WindowOrder {
+ CreationOrder,
+ StackingOrder
+ };
+%End
+
+ QWidget *activeWindow() const;
+ QWidgetList windowList() const;
+%If (Qt_3_2_0 -)
+ QWidgetList windowList(WindowOrder) const;
+%End
+
+%If (- Qt_3_0_0)
+ QSizePolicy sizePolicy() const;
+%End
+ QSize sizeHint() const;
+
+%If (Qt_3_0_0 -)
+ bool scrollBarsEnabled() const;
+ void setScrollBarsEnabled(bool);
+
+ void setPaletteBackgroundColor(const QColor &);
+ void setPaletteBackgroundPixmap(const QPixmap &);
+%End
+
+signals:
+ void windowActivated(QWidget *);
+
+public slots:
+ void cascade();
+ void tile();
+%If (Qt_3_2_0 -)
+ void closeActiveWindow();
+ void closeAllWindows();
+ void activateNextWindow();
+ void activatePrevWindow();
+%End
+
+protected:
+%If (Qt_3_0_0 -)
+ void styleChange(QStyle &);
+%End
+ void childEvent(QChildEvent *);
+ void resizeEvent(QResizeEvent *);
+ bool eventFilter(QObject *,QEvent *);
+ void showEvent(QShowEvent *);
+%If (Qt_3_0_0 -)
+ void hideEvent(QHideEvent *);
+ void wheelEvent(QWheelEvent *);
+%End
+
+private:
+ QWorkspace(const QWorkspace &);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qt/versions.sip b/python/pyqt/sip/qt/versions.sip
new file mode 100644
index 00000000..c662a854
--- /dev/null
+++ b/python/pyqt/sip/qt/versions.sip
@@ -0,0 +1,88 @@
+// This defines the different versions of Qt that PyQt knows about.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// Specify the releases over time - not all of them, just those that introduce
+// something new.
+%Timeline {Qt_1_43
+ Qt_2_00 Qt_2_1_0 Qt_2_2_0 Qt_2_3_0 Qt_2_3_1
+ Qt_3_0_0 Qt_3_0_1 Qt_3_0_2 Qt_3_0_4 Qt_3_0_5 Qt_3_0_6
+ Qt_3_1_0 Qt_3_1_1 Qt_3_1_2
+ Qt_3_2_0
+ Qt_3_3_0 Qt_3_3_5 Qt_3_3_6}
+
+
+// Specify the platforms.
+%Platforms {WS_X11 WS_WIN WS_QWS WS_MACX}
+
+
+// Specify the features.
+%Feature Qt_THREAD_SUPPORT
+
+%Feature Qt_ACTION
+%Feature Qt_ASSISTANTCLIENT
+%Feature Qt_CLIPBOARD
+%Feature Qt_CODECS
+%Feature Qt_COLORDIALOG
+%Feature Qt_DATASTREAM
+%Feature Qt_DIAL
+%Feature Qt_DNS
+%Feature Qt_DOM
+%Feature Qt_DRAGANDDROP
+%Feature Qt_ICONVIEW
+%Feature Qt_IMAGE_TEXT
+%Feature Qt_INPUTDIALOG
+%Feature Qt_FILEDIALOG
+%Feature Qt_FONTDATABASE
+%Feature Qt_FONTDIALOG
+%Feature Qt_MESSAGEBOX
+%Feature Qt_MIMECLIPBOARD
+%Feature Qt_NETWORKPROTOCOL
+%Feature Qt_NETWORKPROTOCOL_FTP
+%Feature Qt_NETWORKPROTOCOL_HTTP
+%Feature Qt_PICTURE
+%Feature Qt_PRINTDIALOG
+%Feature Qt_PRINTER
+%Feature Qt_PROGRESSDIALOG
+%Feature Qt_PROPERTIES
+%Feature Qt_SEMIMODAL
+%Feature Qt_SIZEGRIP
+%Feature Qt_SOUND
+%Feature Qt_SPLITTER
+%Feature Qt_STYLE_CDE
+%Feature Qt_STYLE_INTERLACE
+%Feature Qt_STYLE_MOTIF
+%Feature Qt_STYLE_MOTIFPLUS
+%Feature Qt_STYLE_PLATINUM
+%Feature Qt_STYLE_SGI
+%Feature Qt_STYLE_WINDOWS
+%Feature Qt_STYLE_WINDOWSXP
+%Feature Qt_TABDIALOG
+%Feature Qt_TABLE
+%Feature Qt_TABLEVIEW
+%Feature Qt_TRANSFORMATIONS
+%Feature Qt_TRANSLATION
+%Feature Qt_WIZARD
+%Feature Qt_WORKSPACE
+
+// On Windows64 Q_LONG is defined as __int64 (which SIP doesn't handle) so
+// this feature is disabled.
+%Feature Qt_Q_LONG_IS_long
diff --git a/python/pyqt/sip/qtaxcontainer/copying.sip b/python/pyqt/sip/qtaxcontainer/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtaxcontainer/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtaxcontainer/qaxbase.sip b/python/pyqt/sip/qtaxcontainer/qaxbase.sip
new file mode 100644
index 00000000..fde55e24
--- /dev/null
+++ b/python/pyqt/sip/qtaxcontainer/qaxbase.sip
@@ -0,0 +1,86 @@
+// This is the SIP interface definition for QAxBase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAxBase (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxObject</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>long <Function>queryInterface</Function></FuncDef>
+ <ParamDef>const QUuid &amp;<Parameter>uuid</Parameter></ParamDef>
+ <ParamDef>void **<Parameter>iface</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>PropertyBag <Function>propertyBag</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setPropertyBag</Function></FuncDef>
+ <ParamDef>const PropertyBag &amp;<Parameter>bag</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>unsigned long <Function>registerWeakActiveObject</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>guid</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a utility method provided by PyQt to make it easier to use
+Mark Hammond's <Literal>win32com</Literal> module to manipulate objects
+created by the <Literal>qtaxcontainer</Literal> module.
+</Para>
+<Para>
+The <Literal>RegisterActiveObject()</Literal> COM function is called to
+register the <Literal>QAxBase</Literal> instance as a weak object with the
+<Literal>guid</Literal> GUID. The revoke handle is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>static void <Function>revokeActiveObject</Function></FuncDef>
+ <ParamDef>unsigned long <Parameter>rhandle</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This is a wrapper around the <Literal>RevokeActiveObject()</Literal> COM
+function and is called to revoke the object registered using
+<Literal>registerWeakActiveObject()</Literal>. <Literal>rhandle</Literal> is
+the revoke handle returned by <Literal>registerWeakActiveObject()</Literal>.
+</Para>
+</Sect2>
+%End
+
+
diff --git a/python/pyqt/sip/qtaxcontainer/qaxobject.sip b/python/pyqt/sip/qtaxcontainer/qaxobject.sip
new file mode 100644
index 00000000..0c0b0f88
--- /dev/null
+++ b/python/pyqt/sip/qtaxcontainer/qaxobject.sip
@@ -0,0 +1,37 @@
+// This is the SIP interface definition for QAxObject.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAxObject (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxObject</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter></ParamDef>
+ <ParamDef>QObject *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
diff --git a/python/pyqt/sip/qtaxcontainer/qaxwidget.sip b/python/pyqt/sip/qtaxcontainer/qaxwidget.sip
new file mode 100644
index 00000000..dbcc7299
--- /dev/null
+++ b/python/pyqt/sip/qtaxcontainer/qaxwidget.sip
@@ -0,0 +1,37 @@
+// This is the SIP interface definition for QAxWidget.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QAxWidget (Windows, Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QAxWidget</Function></FuncDef>
+ <ParamDef>IUnknown *<Parameter>iface</Parameter></ParamDef>
+ <ParamDef>QWidget *<Parameter>parent</Parameter> = 0</ParamDef>
+ <ParamDef>const char *<Parameter>name</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+%End
+
+
diff --git a/python/pyqt/sip/qtaxcontainer/qtaxcontainermod.sip b/python/pyqt/sip/qtaxcontainer/qtaxcontainermod.sip
new file mode 100644
index 00000000..33864f1e
--- /dev/null
+++ b/python/pyqt/sip/qtaxcontainer/qtaxcontainermod.sip
@@ -0,0 +1,32 @@
+// This is the SIP interface definition for the qtaxcontainer module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtaxcontainer 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qaxbase.sip
+%Include qaxobject.sip
+%Include qaxwidget.sip
diff --git a/python/pyqt/sip/qtcanvas/copying.sip b/python/pyqt/sip/qtcanvas/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtcanvas/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtcanvas/qcanvas.sip b/python/pyqt/sip/qtcanvas/qcanvas.sip
new file mode 100644
index 00000000..fdd78053
--- /dev/null
+++ b/python/pyqt/sip/qtcanvas/qcanvas.sip
@@ -0,0 +1,856 @@
+// This is the SIP interface definition for QCanvas, QCanvasEllipse,
+// QCanvasItem, QCanvasItemList, QCanvasLine, QCanvasPixmap,
+// QCanvasPixmapArray, QCanvasPolygon, QCanvasPolygonalItem, QCanvasRectangle,
+// QCanvasSpline, QCanvasSprite, QCanvasText and QCanvasView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QCanvas (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvas</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasEllipse (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasEllipse</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasItemList (Qt v2.2+)</Title>
+<Para>
+This class isn't implemented. Whenever a <Literal>QCanvasItemList</Literal> is
+the return type of a function or the type of an argument, a Python list of
+<Literal>QCanvasItem</Literal> instances is used instead.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasLine (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasLine</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPixmap (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPixmap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPixmapArray (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QPixmapArray</Function></FuncDef>
+ <ParamDef>QList&lt;QPixmap&gt; <Parameter>pixmaps</Parameter></ParamDef>
+ <ParamDef>QList&lt;QPoint&gt; <Parameter>hotspots</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>pixmaps</Literal> argument is a Python list of QPixmap instances,
+and the <Literal>hotspots</Literal> argument is a Python list of QPoint
+instances. (Qt v2.2.0 - Qt v2.3.1)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QPixmapArray</Function></FuncDef>
+ <ParamDef>QValueList&lt;QPixmap&gt; <Parameter>pixmaps</Parameter></ParamDef>
+ <ParamDef>QPointArray <Parameter>hotspots</Parameter> = QPointArray()</ParamDef>
+</FuncSynopsis>
+<Para>
+The <Literal>pixmaps</Literal> argument is a Python list of QPixmap instances.
+(Qt v3+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPolygon (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPolygon</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasPolygonalItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasPolygonalItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasRectangle (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasRectangle</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasSpline (Qt v3.0+)</Title>
+<Para>
+<Literal>QCanvasSpline</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasSprite (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasSprite</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasText (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasText</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCanvasView (Qt v2.2+)</Title>
+<Para>
+<Literal>QCanvasView</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+%MappedType QCanvasItemList
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+#include "sipqtcanvasQCanvasItem.h"
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of QCanvasItem instances.
+
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+
+ for (QCanvasItemList::Iterator it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *ci;
+
+ if ((ci = sipConvertFromInstance(*it,sipClass_QCanvasItem,sipTransferObj)) == NULL || PyList_SetItem(l,i,ci) < 0)
+ {
+ Py_XDECREF(ci);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // At the moment this will never be called, so provide a null
+ // implementation.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ PyErr_Format(PyExc_TypeError,"Converting to QCanvasItemList not yet implemented");
+
+ *sipIsErr = 1;
+
+ return 0;
+%End
+};
+
+
+class QCanvasItem : Qt
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasItem(QCanvas * /TransferThis/);
+
+%ConvertToSubClassCode
+ Py_BEGIN_ALLOW_THREADS
+
+ // Use the numeric type values for compatibility with Qt v2.
+ switch (sipCpp -> rtti())
+ {
+ case 1:
+ sipClass = sipClass_QCanvasSprite;
+ break;
+
+ case 2:
+ sipClass = sipClass_QCanvasPolygonalItem;
+ break;
+
+ case 3:
+ sipClass = sipClass_QCanvasText;
+ break;
+
+ case 4:
+ sipClass = sipClass_QCanvasPolygon;
+ break;
+
+ case 5:
+ sipClass = sipClass_QCanvasRectangle;
+ break;
+
+ case 6:
+ sipClass = sipClass_QCanvasEllipse;
+ break;
+
+ case 7:
+ sipClass = sipClass_QCanvasLine;
+ break;
+
+#if QT_VERSION >= 0x030000
+ case 8:
+ sipClass = sipClass_QCanvasSpline;
+ break;
+#endif
+
+ default:
+ sipClass = 0;
+ }
+
+ Py_END_ALLOW_THREADS
+%End
+
+ double x() const;
+ double y() const;
+ double z() const;
+
+ virtual void moveBy(double,double);
+ void move(double,double);
+ void setX(double);
+ void setY(double);
+ void setZ(double);
+
+ bool animated() const;
+ virtual void setAnimated(bool);
+ virtual void setVelocity(double,double);
+ void setXVelocity(double);
+ void setYVelocity(double);
+ double xVelocity() const;
+ double yVelocity() const;
+ virtual void advance(int);
+
+ virtual bool collidesWith(const QCanvasItem *) const = 0;
+
+ QCanvasItemList collisions(bool) const;
+
+ virtual void setCanvas(QCanvas * /GetWrapper/);
+%MethodCode
+ if (sipCpp -> canvas() != a0)
+ if (a0)
+ sipTransferTo(sipSelf,a0Wrapper);
+ else
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipSelfWasArg ? sipCpp->QCanvasItem::setCanvas(a0) : sipCpp->setCanvas(a0);
+ Py_END_ALLOW_THREADS
+%End
+
+ virtual void draw(QPainter &) = 0;
+
+ void show();
+ void hide();
+
+ virtual void setVisible(bool);
+%If (- Qt_3_0_0)
+ bool visible() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isVisible() const;
+%End
+ virtual void setSelected(bool);
+%If (- Qt_3_0_0)
+ bool selected() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isSelected() const;
+%End
+ virtual void setEnabled(bool);
+%If (- Qt_3_0_0)
+ bool enabled() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isEnabled() const;
+%End
+ virtual void setActive(bool);
+%If (- Qt_3_0_0)
+ bool active() const;
+%End
+%If (Qt_3_0_0 -)
+ bool isActive() const;
+%End
+
+%If (Qt_3_0_0 -)
+ enum RttiValues {
+ Rtti_Item,
+ Rtti_Sprite,
+ Rtti_PolygonalItem,
+ Rtti_Text,
+ Rtti_Polygon,
+ Rtti_Rectangle,
+ Rtti_Ellipse,
+ Rtti_Line,
+ Rtti_Spline
+ };
+%End
+
+ virtual int rtti() const;
+
+ virtual QRect boundingRect() const = 0;
+ virtual QRect boundingRectAdvanced() const;
+
+ QCanvas *canvas() const;
+
+protected:
+%If (Qt_3_0_0 -)
+ void update();
+%End
+
+private:
+ virtual bool collidesWith(const QCanvasSprite *,
+ const QCanvasPolygonalItem *,
+ const QCanvasRectangle *,
+ const QCanvasEllipse *,
+ const QCanvasText *) const = 0;
+};
+
+
+class QCanvas : QObject
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvas(QObject * /TransferThis/ = 0,const char * = 0);
+ QCanvas(int,int);
+ QCanvas(QPixmap,int,int,int,int);
+
+%ConvertToSubClassCode
+ static struct class_graph {
+ char *name;
+ sipWrapperType **type;
+ int yes, no;
+ } graph[] = {
+ {sipName_QCanvasView, &sipClass_QCanvasView, -1, 1},
+ {sipName_QCanvas, &sipClass_QCanvas, -1, -1},
+ };
+
+ int i = 0;
+
+ sipClass = NULL;
+
+ do
+ {
+ struct class_graph *cg = &graph[i];
+
+ if (cg->name != NULL && sipCpp->inherits(cg->name))
+ {
+ sipClass = *cg->type;
+ i = cg->yes;
+ }
+ else
+ i = cg->no;
+ }
+ while (i >= 0);
+%End
+
+ virtual void setTiles(QPixmap,int,int,int,int);
+ virtual void setBackgroundPixmap(const QPixmap &);
+ QPixmap backgroundPixmap() const;
+
+ virtual void setBackgroundColor(const QColor &);
+ QColor backgroundColor() const;
+
+ virtual void setTile(int,int,int);
+ int tile(int,int) const;
+
+ int tilesHorizontally() const;
+ int tilesVertically() const;
+
+ int tileWidth() const;
+ int tileHeight() const;
+
+ virtual void resize(int,int);
+ int width() const;
+ int height() const;
+ QSize size() const;
+%If (Qt_3_0_0 -)
+ QRect rect() const;
+%End
+ bool onCanvas(int,int) const;
+ bool onCanvas(const QPoint &) const;
+ bool validChunk(int,int) const;
+ bool validChunk(const QPoint &) const;
+
+ int chunkSize() const;
+ virtual void retune(int,int = 100);
+
+ // These next three are marked as internal in the Qt v2.x
+ // documentation.
+// bool sameChunk() const;
+// virtual void setChangedChunk(int,int);
+// virtual void setChangedChunkContaining(int,int);
+ virtual void setAllChanged();
+ virtual void setChanged(const QRect &);
+%If (Qt_3_0_0 -)
+ virtual void setUnchanged(const QRect &);
+%End
+
+ QCanvasItemList allItems();
+ QCanvasItemList collisions(const QPoint &) const;
+ QCanvasItemList collisions(const QRect &) const;
+ QCanvasItemList collisions(const QPointArray &,const QCanvasItem *,
+ bool) const;
+
+%If (Qt_3_0_0 -)
+ void drawArea(const QRect &,QPainter *,bool = 0);
+%End
+
+ virtual void setAdvancePeriod(int);
+ virtual void setUpdatePeriod(int);
+
+ virtual void setDoubleBuffering(bool);
+
+signals:
+ void resized();
+
+public slots:
+ virtual void advance();
+ virtual void update();
+
+protected:
+ virtual void drawBackground(QPainter &,const QRect &);
+ virtual void drawForeground(QPainter &,const QRect &);
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvas(const QCanvas &);
+%End
+};
+
+
+class QCanvasView : QScrollView
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QCanvasView(QCanvas * = 0,QWidget * /TransferThis/ = 0,
+ const char * = 0,WFlags = 0);
+%End
+%If (Qt_3_0_0 -)
+ QCanvasView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+ QCanvasView(QCanvas *,QWidget * /TransferThis/ = 0,const char * = 0,
+ WFlags = 0);
+%End
+
+ QCanvas* canvas() const;
+ void setCanvas(QCanvas *);
+
+%If (Qt_3_0_0 -)
+ const QWMatrix &worldMatrix() const;
+ const QWMatrix &inverseWorldMatrix() const;
+ bool setWorldMatrix(const QWMatrix &);
+%End
+
+protected:
+ void drawContents(QPainter *,int,int,int,int);
+ QSize sizeHint() const;
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvasView(const QCanvasView &);
+%End
+};
+
+
+class QCanvasPixmap : QPixmap
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasPixmap(const QString &);
+ QCanvasPixmap(const QImage &);
+%If (- Qt_3_0_0)
+ QCanvasPixmap(const QPixmap &,QPoint);
+%End
+%If (Qt_3_0_0 -)
+ QCanvasPixmap(const QPixmap &,const QPoint &);
+%End
+
+ int offsetX() const;
+ int offsetY() const;
+ void setOffset(int,int);
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvasPixmap(const QCanvasPixmap &);
+%End
+};
+
+
+class QCanvasPixmapArray
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasPixmapArray();
+ QCanvasPixmapArray(const QString &,int = 0);
+%If (- Qt_3_0_0)
+ QCanvasPixmapArray(QPtrList<QPixmap>,QPtrList<QPoint>);
+%End
+%If (Qt_3_0_0 -)
+ QCanvasPixmapArray(QValueList<QPixmap>,QPointArray = QPointArray());
+%End
+
+ bool readPixmaps(const QString &,int = 0) /ReleaseGIL/;
+ bool readCollisionMasks(const QString &) /ReleaseGIL/;
+
+%If (Qt_3_0_0 -)
+ bool isValid() const;
+%End
+
+ QCanvasPixmap *image(int) const;
+ void setImage(int,QCanvasPixmap * /Transfer/);
+ uint count() const;
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvasPixmapArray(const QCanvasPixmapArray &);
+%End
+};
+
+
+class QCanvasSprite : QCanvasItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasSprite(QCanvasPixmapArray *,QCanvas * /TransferThis/);
+
+ void setSequence(QCanvasPixmapArray *);
+
+ void move(double,double);
+ virtual void move(double,double,int);
+ void setFrame(int);
+
+%If (Qt_3_0_0 -)
+ enum FrameAnimationType {
+ Cycle,
+ Oscillate
+ };
+
+ virtual void setFrameAnimation(FrameAnimationType = Cycle,int = 1,
+ int = 0);
+%End
+ int frame() const;
+ int frameCount() const;
+
+%If (- Qt_3_0_0)
+ virtual int rtti() const;
+%End
+%If (Qt_3_0_0 -)
+ int rtti() const;
+%End
+
+ bool collidesWith(const QCanvasItem *) const;
+
+ QRect boundingRect() const;
+
+%If (Qt_3_0_0 -)
+ int width() const;
+ int height() const;
+
+ int leftEdge() const;
+ int topEdge() const;
+ int rightEdge() const;
+ int bottomEdge() const;
+
+ int leftEdge(int) const;
+ int topEdge(int) const;
+ int rightEdge(int) const;
+ int bottomEdge(int) const;
+ QCanvasPixmap *image() const;
+ virtual QCanvasPixmap *imageAdvanced() const;
+ QCanvasPixmap *image(int) const;
+ // This is really virtual, but we want to use the super-class's virtual
+ // handler. Having to do this is really a SIP bug.
+ void advance(int);
+
+ void draw(QPainter &);
+%End
+
+protected:
+%If (- Qt_3_0_0)
+ void draw(QPainter &);
+ int width() const;
+ int height() const;
+ int absX() const;
+ int absY() const;
+ int absX2() const;
+ int absY2() const;
+ int absX(int) const;
+ int absY(int) const;
+ int absX2(int) const;
+ int absY2(int) const;
+ QCanvasPixmap *image() const;
+ virtual QCanvasPixmap *imageAdvanced() const;
+ QCanvasPixmap *image(int) const;
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvasSprite(const QCanvasSprite &);
+%End
+};
+
+
+class QCanvasPolygonalItem : QCanvasItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasPolygonalItem(QCanvas * /TransferThis/);
+
+ bool collidesWith(const QCanvasItem *) const;
+
+ virtual void setPen(QPen);
+ virtual void setBrush(QBrush);
+
+ QPen pen() const;
+ QBrush brush() const;
+
+ virtual QPointArray areaPoints() const = 0;
+ virtual QPointArray areaPointsAdvanced() const;
+ QRect boundingRect() const;
+
+ int rtti() const;
+
+protected:
+ void draw(QPainter &);
+ virtual void drawShape(QPainter &) = 0;
+
+ bool winding() const;
+ void setWinding(bool);
+
+%If (Qt_3_1_0 -)
+ void invalidate();
+ bool isValid() const;
+%End
+};
+
+
+class QCanvasRectangle : QCanvasPolygonalItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasRectangle(QCanvas * /TransferThis/);
+ QCanvasRectangle(const QRect &,QCanvas * /TransferThis/);
+ QCanvasRectangle(int,int,int,int,QCanvas * /TransferThis/);
+
+ int width() const;
+ int height() const;
+ void setSize(int,int);
+ QSize size() const;
+ QPointArray areaPoints() const;
+ QRect rect() const;
+
+ bool collidesWith(const QCanvasItem *) const;
+
+ int rtti() const;
+
+protected:
+ void drawShape(QPainter &);
+ QPointArray chunks() const;
+};
+
+
+class QCanvasPolygon : QCanvasPolygonalItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasPolygon(QCanvas * /TransferThis/);
+
+ void setPoints(QPointArray);
+ QPointArray points() const;
+ void moveBy(double,double);
+
+ QPointArray areaPoints() const;
+
+ int rtti() const;
+
+protected:
+ void drawShape(QPainter &);
+};
+
+
+%If (Qt_3_0_0 -)
+
+class QCanvasSpline : QCanvasPolygon
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasSpline(QCanvas * /TransferThis/);
+
+ void setControlPoints(QPointArray,bool = 1);
+ QPointArray controlPoints() const;
+ bool closed() const;
+
+ int rtti() const;
+};
+
+%End
+
+
+class QCanvasLine : QCanvasPolygonalItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasLine(QCanvas * /TransferThis/);
+
+ void setPoints(int,int,int,int);
+
+ QPoint startPoint() const;
+ QPoint endPoint() const;
+
+ int rtti() const;
+
+ void setPen(QPen);
+%If (Qt_3_3_0 -)
+ void moveBy(double,double);
+%End
+
+protected:
+ void drawShape(QPainter &);
+ QPointArray areaPoints() const;
+};
+
+
+class QCanvasEllipse : QCanvasPolygonalItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasEllipse(QCanvas * /TransferThis/);
+ QCanvasEllipse(int,int,QCanvas * /TransferThis/);
+ QCanvasEllipse(int,int,int,int,QCanvas * /TransferThis/);
+
+ int width() const;
+ int height() const;
+ void setSize(int,int);
+ void setAngles(int,int);
+ int angleStart() const;
+ int angleLength() const;
+ QPointArray areaPoints() const;
+
+ bool collidesWith(const QCanvasItem *) const;
+
+ int rtti() const;
+
+protected:
+ void drawShape(QPainter &);
+};
+
+
+class QCanvasText : QCanvasItem
+{
+%TypeHeaderCode
+#include <qcanvas.h>
+%End
+
+public:
+ QCanvasText(QCanvas * /TransferThis/);
+ QCanvasText(const QString &,QCanvas * /TransferThis/);
+ QCanvasText(const QString &,QFont,QCanvas * /TransferThis/);
+
+ void setText(const QString &);
+ void setFont(const QFont &);
+ void setColor(const QColor &);
+ QString text() const;
+ QFont font() const;
+ QColor color() const;
+
+ void moveBy(double,double);
+
+ int textFlags() const;
+ void setTextFlags(int);
+
+ QRect boundingRect() const;
+
+ bool collidesWith(const QCanvasItem *) const;
+
+%If (- Qt_3_0_0)
+ virtual int rtti() const;
+%End
+%If (Qt_3_0_0 -)
+ int rtti() const;
+%End
+
+protected:
+ virtual void draw(QPainter &);
+
+private:
+%If (Qt_3_1_0 -)
+ QCanvasText(const QCanvasText &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtcanvas/qtcanvasmod.sip b/python/pyqt/sip/qtcanvas/qtcanvasmod.sip
new file mode 100644
index 00000000..1ef22ae5
--- /dev/null
+++ b/python/pyqt/sip/qtcanvas/qtcanvasmod.sip
@@ -0,0 +1,70 @@
+// This is the SIP interface definition for the qtcanvas module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtcanvas 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qcanvas.sip
+
+
+// The build file template.
+
+%Makefile qtcanvas.pro.in
+# The project file for the qtcanvas module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtext/copying.sip b/python/pyqt/sip/qtext/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtext/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtext/qextscintilla.sip b/python/pyqt/sip/qtext/qextscintilla.sip
new file mode 100644
index 00000000..c03dc56b
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintilla.sip
@@ -0,0 +1,411 @@
+// This is the SIP interface definition for QextScintilla.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintilla : QextScintillaBase
+{
+%TypeHeaderCode
+#include <qextscintilla.h>
+%End
+
+public:
+ enum {
+ AiMaintain,
+ AiOpening,
+ AiClosing
+ };
+
+ enum AutoCompletionSource {
+ AcsDocument,
+ AcsAPIs,
+%If (QScintilla_1_7 -)
+ AcsAll,
+%End
+ };
+
+ enum BraceMatch {
+ NoBraceMatch,
+ StrictBraceMatch,
+ SloppyBraceMatch
+ };
+
+%If (QScintilla_1_4 -)
+ enum EdgeMode {
+ EdgeNone,
+ EdgeLine,
+ EdgeBackground
+ };
+%End
+
+ enum EolMode {
+ EolWindows,
+ EolUnix,
+ EolMac
+ };
+
+ enum FoldStyle {
+ NoFoldStyle,
+ PlainFoldStyle,
+ CircledFoldStyle,
+ BoxedFoldStyle,
+ CircledTreeFoldStyle,
+ BoxedTreeFoldStyle
+ };
+
+ enum MarkerSymbol {
+ Circle,
+ Rectangle,
+ RightTriangle,
+ SmallRectangle,
+ RightArrow,
+ Invisible,
+ DownTriangle,
+ Minus,
+ Plus,
+ VerticalLine,
+ BottomLeftCorner,
+ LeftSideSplitter,
+ BoxedPlus,
+ BoxedPlusConnected,
+ BoxedMinus,
+ BoxedMinusConnected,
+ RoundedBottomLeftCorner,
+ LeftSideRoundedSplitter,
+ CircledPlus,
+ CircledPlusConnected,
+ CircledMinus,
+ CircledMinusConnected,
+ Background,
+ ThreeDots,
+ ThreeRightArrows
+ };
+
+ enum WhitespaceVisibility {
+ WsInvisible,
+ WsVisible,
+ WsVisibleAfterIndent
+ };
+
+ enum WrapMode {
+ WrapNone,
+ WrapWord,
+%If (QScintilla_1_7 -)
+ WrapCharacter,
+%End
+ };
+
+%If (QScintilla_1_7 -)
+ enum WrapVisualFlag {
+ WrapFlagNone,
+ WrapFlagByText,
+ WrapFlagByBorder,
+ };
+%End
+
+ QextScintilla(QWidget * /TransferThis/ = 0,const char * = 0,
+ WFlags = 0);
+
+ bool autoCompletionCaseSensitivity();
+%If (QScintilla_1_7 -)
+ bool autoCompletionFillupsEnabled();
+%End
+ bool autoCompletionReplaceWord();
+ bool autoCompletionShowSingle();
+ AutoCompletionSource autoCompletionSource() const;
+ int autoCompletionThreshold() const;
+ bool autoIndent() const;
+ bool backspaceUnindents();
+ void beginUndoAction();
+ BraceMatch braceMatching() const;
+ int callTipsVisible() const;
+%If (QScintilla_1_7 -)
+ void cancelList();
+%End
+ void clearRegisteredImages();
+ void convertEols(EolMode);
+%If (QScintilla_1_3 -)
+ QextScintillaDocument document();
+%End
+ void endUndoAction();
+
+%If (QScintilla_1_4 -)
+ QColor edgeColor();
+ int edgeColumn();
+ EdgeMode edgeMode();
+%End
+
+ EolMode eolMode();
+ bool eolVisibility();
+
+%If (QScintilla_1_7 -)
+ QColor color() const;
+ QColor paper() const;
+%End
+
+%If (QScintilla_1_6 -)
+ virtual bool findFirst(const QString &,bool,bool,bool,bool,bool = 1,
+ int = -1,int = -1,bool = 1);
+%End
+%If (- QScintilla_1_6)
+ virtual bool findFirst(const QString &,bool,bool,bool,bool,bool = 1,
+ int = -1,int = -1);
+%End
+ virtual bool findNext();
+
+%If (QScintilla_1_7 -)
+ int firstVisibleLine();
+%End
+
+ FoldStyle folding() const;
+
+ void getCursorPosition(int *,int *);
+ void getSelection(int *,int *,int *,int *);
+ bool hasSelectedText();
+
+ int indentation(int);
+ bool indentationGuides();
+ bool indentationsUseTabs();
+ int indentationWidth();
+
+%If (QScintilla_1_7 -)
+ bool isCallTipActive();
+ bool isListActive();
+%End
+ bool isModified();
+ bool isReadOnly();
+ bool isRedoAvailable();
+ bool isUndoAvailable();
+ bool isUtf8();
+ int lineAt(const QPoint &);
+ int lineLength(int);
+ int lines();
+ int length();
+%If (QScintilla_1_7 -)
+ QextScintillaLexer *lexer() const;
+%End
+
+ bool marginLineNumbers(int);
+ int marginMarkerMask(int);
+ bool marginSensitivity(int);
+ int marginWidth(int);
+
+ int markerDefine(MarkerSymbol,int = -1);
+ int markerDefine(char,int = -1);
+ int markerDefine(const QPixmap *,int = -1);
+ int markerAdd(int,int);
+ unsigned markersAtLine(int);
+ void markerDelete(int,int = -1);
+ void markerDeleteAll(int = -1);
+ void markerDeleteHandle(int);
+ int markerLine(int);
+ int markerFindNext(int,unsigned);
+ int markerFindPrevious(int,unsigned);
+%If (QScintilla_1_3 -)
+ virtual void recolor(int = 0,int = -1);
+%End
+ void registerImage(int,const QPixmap *);
+ virtual void replace(const QString &);
+ void resetFoldMarginColors();
+ void setFoldMarginColors(const QColor &,const QColor &);
+
+ void setAutoCompletionAPIs(QextScintillaAPIs * = 0);
+ void setAutoCompletionFillups(const char *);
+%If (QScintilla_1_7 -)
+ void setAutoCompletionFillupsEnabled(bool);
+ void setAutoCompletionStartCharacters(const char *);
+%End
+
+ void setCallTipsAPIs(QextScintillaAPIs * = 0);
+ void setCallTipsBackgroundColor(const QColor &);
+ void setCallTipsForegroundColor(const QColor &);
+ void setCallTipsHighlightColor(const QColor &);
+ void setCallTipsVisible(int);
+
+%If (QScintilla_1_3 -)
+ void setDocument(const QextScintillaDocument &);
+%End
+
+%If (QScintilla_1_4 -)
+ void setEdgeColor(const QColor &);
+ void setEdgeColumn(int);
+ void setEdgeMode(EdgeMode);
+%End
+
+%If (QScintilla_1_7 -)
+ virtual void setFont(const QFont &);
+%End
+
+ void setMarkerBackgroundColor(const QColor &,int = -1);
+ void setMarkerForegroundColor(const QColor &,int = -1);
+
+ void setMatchedBraceBackgroundColor(const QColor &);
+ void setMatchedBraceForegroundColor(const QColor &);
+ void setUnmatchedBraceBackgroundColor(const QColor &);
+ void setUnmatchedBraceForegroundColor(const QColor &);
+
+%If (QScintilla_1_7 -)
+ void setWrapVisualFlags(WrapVisualFlag,
+ WrapVisualFlag = QextScintilla::WrapFlagNone, int = 0);
+%End
+
+ QString selectedText();
+%If (QScintilla_1_7 -)
+ void showUserList(int, const QStringList &);
+%End
+ QextScintillaCommandSet *standardCommands() const;
+ bool tabIndents();
+ int tabWidth();
+ QString text();
+ QString text(int);
+%If (QScintilla_1_7 -)
+ int textHeight(int);
+%End
+ WhitespaceVisibility whitespaceVisibility();
+%If (QScintilla_1_4 -)
+ WrapMode wrapMode();
+%End
+
+public slots:
+ virtual void append(const QString &);
+%If (QScintilla_1_7 -)
+ virtual void autoCompleteFromAll();
+%End
+ virtual void autoCompleteFromAPIs();
+ virtual void autoCompleteFromDocument();
+ virtual void callTip();
+ virtual void clear();
+ virtual void copy();
+ virtual void cut();
+
+ virtual void ensureCursorVisible();
+ virtual void ensureLineVisible(int);
+%If (QScintilla_1_7 -)
+ virtual void foldAll(bool = 0);
+%End
+%If (- QScintilla_1_7)
+ virtual void foldAll();
+%End
+ virtual void foldLine(int);
+ virtual void indent(int);
+%If (QScintilla_1_4 -)
+ virtual void insert(const QString &);
+%End
+ virtual void insertAt(const QString &,int,int);
+ virtual void moveToMatchingBrace();
+ virtual void paste();
+ virtual void redo();
+ virtual void removeSelectedText();
+%If (QScintilla_1_4 -)
+ virtual void resetSelectionBackgroundColor();
+ virtual void resetSelectionForegroundColor();
+%End
+ virtual void selectAll(bool = 1);
+ virtual void selectToMatchingBrace();
+
+ virtual void setAutoCompletionCaseSensitivity(bool);
+ virtual void setAutoCompletionReplaceWord(bool);
+ virtual void setAutoCompletionShowSingle(bool);
+ virtual void setAutoCompletionSource(AutoCompletionSource);
+ virtual void setAutoCompletionThreshold(int);
+ virtual void setAutoIndent(bool);
+ virtual void setBraceMatching(BraceMatch);
+ virtual void setBackspaceUnindents(bool);
+%If (QScintilla_1_3 -)
+ virtual void setCaretForegroundColor(const QColor &);
+ virtual void setCaretLineBackgroundColor(const QColor &);
+ virtual void setCaretLineVisible(bool);
+ virtual void setCaretWidth(int);
+%End
+%If (QScintilla_1_7 -)
+ virtual void setColor(const QColor &);
+%End
+ virtual void setCursorPosition(int,int);
+ virtual void setEolMode(EolMode);
+ virtual void setEolVisibility(bool);
+ virtual void setFolding(FoldStyle);
+
+ virtual void setIndentation(int,int);
+ virtual void setIndentationGuides(bool);
+ virtual void setIndentationGuidesBackgroundColor(const QColor &);
+ virtual void setIndentationGuidesForegroundColor(const QColor &);
+ virtual void setIndentationsUseTabs(bool);
+ virtual void setIndentationWidth(int);
+
+ virtual void setLexer(QextScintillaLexer * = 0);
+
+ virtual void setMarginsBackgroundColor(const QColor &);
+ virtual void setMarginsFont(const QFont &);
+ virtual void setMarginsForegroundColor(const QColor &);
+
+ virtual void setMarginLineNumbers(int,bool);
+ virtual void setMarginMarkerMask(int,int);
+ virtual void setMarginSensitivity(int,bool);
+ virtual void setMarginWidth(int,int);
+ virtual void setMarginWidth(int,const QString &);
+
+ virtual void setModified(bool);
+%If (QScintilla_1_7 -)
+ virtual void setPaper(const QColor &);
+%End
+ virtual void setReadOnly(bool);
+ virtual void setSelection(int,int,int,int);
+%If (QScintilla_1_3 -)
+ virtual void setSelectionBackgroundColor(const QColor &);
+ virtual void setSelectionForegroundColor(const QColor &);
+%End
+ virtual void setTabIndents(bool);
+ virtual void setTabWidth(int);
+ virtual void setText(const QString &);
+ virtual void setUtf8(bool);
+ virtual void setWhitespaceVisibility(WhitespaceVisibility);
+%If (QScintilla_1_4 -)
+ virtual void setWrapMode(WrapMode);
+%End
+
+ virtual void undo();
+ virtual void unindent(int);
+
+ virtual void zoomIn(int);
+ virtual void zoomIn();
+ virtual void zoomOut(int);
+ virtual void zoomOut();
+ virtual void zoomTo(int);
+
+signals:
+ void cursorPositionChanged(int,int);
+ void copyAvailable(bool);
+ void marginClicked(int,int,Qt::ButtonState);
+ void modificationAttempted();
+ void modificationChanged(bool);
+ void selectionChanged();
+ void textChanged();
+%If (QScintilla_1_7 -)
+ void userListActivated(int, const QString &);
+%End
+
+private:
+ QextScintilla(const QextScintilla &);
+
+};
diff --git a/python/pyqt/sip/qtext/qextscintillaapis.sip b/python/pyqt/sip/qtext/qextscintillaapis.sip
new file mode 100644
index 00000000..ad388fbc
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillaapis.sip
@@ -0,0 +1,42 @@
+// This is the SIP interface definition for QextScintillaAPIs.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaAPIs
+{
+%TypeHeaderCode
+#include <qextscintillaapis.h>
+%End
+
+public:
+ QextScintillaAPIs();
+
+ void add(const QString &);
+ bool load(const QString &);
+ void clear();
+
+private:
+ QextScintillaAPIs(const QextScintillaAPIs &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillabase.sip b/python/pyqt/sip/qtext/qextscintillabase.sip
new file mode 100644
index 00000000..e14ccf67
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillabase.sip
@@ -0,0 +1,1024 @@
+// This is the SIP interface definition for QextScintillaBase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaBase : QWidget
+{
+%TypeHeaderCode
+#include <qextscintillabase.h>
+%End
+
+public:
+ enum {
+ SCI_START,
+ SCI_OPTIONAL_START,
+ SCI_LEXER_START,
+ SCI_ADDTEXT,
+ SCI_ADDSTYLEDTEXT,
+ SCI_INSERTTEXT,
+ SCI_CLEARALL,
+ SCI_CLEARDOCUMENTSTYLE,
+ SCI_GETLENGTH,
+ SCI_GETCHARAT,
+ SCI_GETCURRENTPOS,
+ SCI_GETANCHOR,
+ SCI_GETSTYLEAT,
+ SCI_REDO,
+ SCI_SETUNDOCOLLECTION,
+ SCI_SELECTALL,
+ SCI_SETSAVEPOINT,
+ SCI_GETSTYLEDTEXT,
+ SCI_CANREDO,
+ SCI_MARKERLINEFROMHANDLE,
+ SCI_MARKERDELETEHANDLE,
+ SCI_GETUNDOCOLLECTION,
+ SCI_GETVIEWWS,
+ SCI_SETVIEWWS,
+ SCI_POSITIONFROMPOINT,
+ SCI_POSITIONFROMPOINTCLOSE,
+ SCI_GOTOLINE,
+ SCI_GOTOPOS,
+ SCI_SETANCHOR,
+ SCI_GETCURLINE,
+ SCI_GETENDSTYLED,
+ SCI_CONVERTEOLS,
+ SCI_GETEOLMODE,
+ SCI_SETEOLMODE,
+ SCI_STARTSTYLING,
+ SCI_SETSTYLING,
+ SCI_GETBUFFEREDDRAW,
+ SCI_SETBUFFEREDDRAW,
+ SCI_SETTABWIDTH,
+ SCI_GETTABWIDTH,
+ SCI_SETCODEPAGE,
+ SCI_SETUSEPALETTE,
+ SCI_MARKERDEFINE,
+ SCI_MARKERSETFORE,
+ SCI_MARKERSETBACK,
+ SCI_MARKERADD,
+ SCI_MARKERDELETE,
+ SCI_MARKERDELETEALL,
+ SCI_MARKERGET,
+ SCI_MARKERNEXT,
+ SCI_MARKERPREVIOUS,
+ SCI_MARKERDEFINEPIXMAP,
+ SCI_SETMARGINTYPEN,
+ SCI_GETMARGINTYPEN,
+ SCI_SETMARGINWIDTHN,
+ SCI_GETMARGINWIDTHN,
+ SCI_SETMARGINMASKN,
+ SCI_GETMARGINMASKN,
+ SCI_SETMARGINSENSITIVEN,
+ SCI_GETMARGINSENSITIVEN,
+ SCI_STYLECLEARALL,
+ SCI_STYLESETFORE,
+ SCI_STYLESETBACK,
+ SCI_STYLESETBOLD,
+ SCI_STYLESETITALIC,
+ SCI_STYLESETSIZE,
+ SCI_STYLESETFONT,
+ SCI_STYLESETEOLFILLED,
+ SCI_STYLERESETDEFAULT,
+ SCI_STYLESETUNDERLINE,
+ SCI_STYLESETCASE,
+ SCI_STYLESETCHARACTERSET,
+ SCI_SETSELFORE,
+ SCI_SETSELBACK,
+ SCI_SETCARETFORE,
+ SCI_ASSIGNCMDKEY,
+ SCI_CLEARCMDKEY,
+ SCI_CLEARALLCMDKEYS,
+ SCI_SETSTYLINGEX,
+ SCI_STYLESETVISIBLE,
+ SCI_GETCARETPERIOD,
+ SCI_SETCARETPERIOD,
+ SCI_SETWORDCHARS,
+ SCI_BEGINUNDOACTION,
+ SCI_ENDUNDOACTION,
+ SCI_INDICSETSTYLE,
+ SCI_INDICGETSTYLE,
+ SCI_INDICSETFORE,
+ SCI_INDICGETFORE,
+ SCI_SETWHITESPACEFORE,
+ SCI_SETWHITESPACEBACK,
+ SCI_SETSTYLEBITS,
+ SCI_GETSTYLEBITS,
+ SCI_SETLINESTATE,
+ SCI_GETLINESTATE,
+ SCI_GETMAXLINESTATE,
+ SCI_GETCARETLINEVISIBLE,
+ SCI_SETCARETLINEVISIBLE,
+ SCI_GETCARETLINEBACK,
+ SCI_SETCARETLINEBACK,
+ SCI_STYLESETCHANGEABLE,
+ SCI_AUTOCSHOW,
+ SCI_AUTOCCANCEL,
+ SCI_AUTOCACTIVE,
+ SCI_AUTOCPOSSTART,
+ SCI_AUTOCCOMPLETE,
+ SCI_AUTOCSTOPS,
+ SCI_AUTOCSETSEPARATOR,
+ SCI_AUTOCGETSEPARATOR,
+ SCI_AUTOCSELECT,
+ SCI_AUTOCSETCANCELATSTART,
+ SCI_AUTOCGETCANCELATSTART,
+ SCI_AUTOCSETFILLUPS,
+ SCI_AUTOCSETCHOOSESINGLE,
+ SCI_AUTOCGETCHOOSESINGLE,
+ SCI_AUTOCSETIGNORECASE,
+ SCI_AUTOCGETIGNORECASE,
+ SCI_USERLISTSHOW,
+ SCI_AUTOCSETAUTOHIDE,
+ SCI_AUTOCGETAUTOHIDE,
+ SCI_AUTOCSETDROPRESTOFWORD,
+ SCI_AUTOCGETDROPRESTOFWORD,
+ SCI_SETINDENT,
+ SCI_GETINDENT,
+ SCI_SETUSETABS,
+ SCI_GETUSETABS,
+ SCI_SETLINEINDENTATION,
+ SCI_GETLINEINDENTATION,
+ SCI_GETLINEINDENTPOSITION,
+ SCI_GETCOLUMN,
+ SCI_SETHSCROLLBAR,
+ SCI_GETHSCROLLBAR,
+ SCI_SETINDENTATIONGUIDES,
+ SCI_GETINDENTATIONGUIDES,
+ SCI_SETHIGHLIGHTGUIDE,
+ SCI_GETHIGHLIGHTGUIDE,
+ SCI_GETLINEENDPOSITION,
+ SCI_GETCODEPAGE,
+ SCI_GETCARETFORE,
+ SCI_GETUSEPALETTE,
+ SCI_GETREADONLY,
+ SCI_SETCURRENTPOS,
+ SCI_SETSELECTIONSTART,
+ SCI_GETSELECTIONSTART,
+ SCI_SETSELECTIONEND,
+ SCI_GETSELECTIONEND,
+ SCI_SETPRINTMAGNIFICATION,
+ SCI_GETPRINTMAGNIFICATION,
+ SCI_SETPRINTCOLOURMODE,
+ SCI_GETPRINTCOLOURMODE,
+ SCI_FINDTEXT,
+ SCI_FORMATRANGE,
+ SCI_GETFIRSTVISIBLELINE,
+ SCI_GETLINE,
+ SCI_GETLINECOUNT,
+ SCI_SETMARGINLEFT,
+ SCI_GETMARGINLEFT,
+ SCI_SETMARGINRIGHT,
+ SCI_GETMARGINRIGHT,
+ SCI_GETMODIFY,
+ SCI_SETSEL,
+ SCI_GETSELTEXT,
+ SCI_GETTEXTRANGE,
+ SCI_HIDESELECTION,
+ SCI_POINTXFROMPOSITION,
+ SCI_POINTYFROMPOSITION,
+ SCI_LINEFROMPOSITION,
+ SCI_POSITIONFROMLINE,
+ SCI_LINESCROLL,
+ SCI_SCROLLCARET,
+ SCI_REPLACESEL,
+ SCI_SETREADONLY,
+ SCI_NULL,
+ SCI_CANPASTE,
+ SCI_CANUNDO,
+ SCI_EMPTYUNDOBUFFER,
+ SCI_UNDO,
+ SCI_CUT,
+ SCI_COPY,
+ SCI_PASTE,
+ SCI_CLEAR,
+ SCI_SETTEXT,
+ SCI_GETTEXT,
+ SCI_GETTEXTLENGTH,
+ SCI_GETDIRECTFUNCTION,
+ SCI_GETDIRECTPOINTER,
+ SCI_SETOVERTYPE,
+ SCI_GETOVERTYPE,
+ SCI_SETCARETWIDTH,
+ SCI_GETCARETWIDTH,
+ SCI_SETTARGETSTART,
+ SCI_GETTARGETSTART,
+ SCI_SETTARGETEND,
+ SCI_GETTARGETEND,
+ SCI_REPLACETARGET,
+ SCI_REPLACETARGETRE,
+ SCI_SEARCHINTARGET,
+ SCI_SETSEARCHFLAGS,
+ SCI_GETSEARCHFLAGS,
+ SCI_CALLTIPSHOW,
+ SCI_CALLTIPCANCEL,
+ SCI_CALLTIPACTIVE,
+ SCI_CALLTIPPOSSTART,
+ SCI_CALLTIPSETHLT,
+ SCI_CALLTIPSETBACK,
+ SCI_CALLTIPSETFORE,
+ SCI_CALLTIPSETFOREHLT,
+%If (QScintilla_1_6 -)
+ SCI_AUTOCSETMAXWIDTH,
+ SCI_AUTOCGETMAXWIDTH,
+ SCI_AUTOCSETMAXHEIGHT,
+ SCI_AUTOCGETMAXHEIGHT,
+%End
+%If (QScintilla_1_7 -)
+ SCI_CALLTIPUSESTYLE,
+%End
+ SCI_VISIBLEFROMDOCLINE,
+ SCI_DOCLINEFROMVISIBLE,
+ SCI_SETFOLDLEVEL,
+ SCI_GETFOLDLEVEL,
+ SCI_GETLASTCHILD,
+ SCI_GETFOLDPARENT,
+ SCI_SHOWLINES,
+ SCI_HIDELINES,
+ SCI_GETLINEVISIBLE,
+ SCI_SETFOLDEXPANDED,
+ SCI_GETFOLDEXPANDED,
+ SCI_TOGGLEFOLD,
+ SCI_ENSUREVISIBLE,
+ SCI_SETFOLDFLAGS,
+ SCI_ENSUREVISIBLEENFORCEPOLICY,
+%If (QScintilla_1_6 -)
+ SCI_WRAPCOUNT,
+%End
+ SCI_SETTABINDENTS,
+ SCI_GETTABINDENTS,
+ SCI_SETBACKSPACEUNINDENTS,
+ SCI_GETBACKSPACEUNINDENTS,
+ SCI_SETMOUSEDWELLTIME,
+ SCI_GETMOUSEDWELLTIME,
+ SCI_WORDSTARTPOSITION,
+ SCI_WORDENDPOSITION,
+ SCI_SETWRAPMODE,
+ SCI_GETWRAPMODE,
+ SCI_SETLAYOUTCACHE,
+ SCI_GETLAYOUTCACHE,
+ SCI_SETSCROLLWIDTH,
+ SCI_GETSCROLLWIDTH,
+ SCI_TEXTWIDTH,
+ SCI_SETENDATLASTLINE,
+ SCI_GETENDATLASTLINE,
+ SCI_TEXTHEIGHT,
+ SCI_SETVSCROLLBAR,
+ SCI_GETVSCROLLBAR,
+ SCI_APPENDTEXT,
+ SCI_GETTWOPHASEDRAW,
+ SCI_SETTWOPHASEDRAW,
+ SCI_AUTOCGETTYPESEPARATOR,
+ SCI_AUTOCSETTYPESEPARATOR,
+ SCI_TARGETFROMSELECTION,
+ SCI_LINESJOIN,
+ SCI_LINESSPLIT,
+ SCI_SETFOLDMARGINCOLOUR,
+ SCI_SETFOLDMARGINHICOLOUR,
+ SCI_LINEDOWN,
+ SCI_LINEDOWNEXTEND,
+ SCI_LINEUP,
+ SCI_LINEUPEXTEND,
+ SCI_CHARLEFT,
+ SCI_CHARLEFTEXTEND,
+ SCI_CHARRIGHT,
+ SCI_CHARRIGHTEXTEND,
+ SCI_WORDLEFT,
+ SCI_WORDLEFTEXTEND,
+ SCI_WORDRIGHT,
+ SCI_WORDRIGHTEXTEND,
+ SCI_HOME,
+ SCI_HOMEEXTEND,
+ SCI_LINEEND,
+ SCI_LINEENDEXTEND,
+ SCI_DOCUMENTSTART,
+ SCI_DOCUMENTSTARTEXTEND,
+ SCI_DOCUMENTEND,
+ SCI_DOCUMENTENDEXTEND,
+ SCI_PAGEUP,
+ SCI_PAGEUPEXTEND,
+ SCI_PAGEDOWN,
+ SCI_PAGEDOWNEXTEND,
+ SCI_EDITTOGGLEOVERTYPE,
+ SCI_CANCEL,
+ SCI_DELETEBACK,
+ SCI_TAB,
+ SCI_BACKTAB,
+ SCI_NEWLINE,
+ SCI_FORMFEED,
+ SCI_VCHOME,
+ SCI_VCHOMEEXTEND,
+ SCI_ZOOMIN,
+ SCI_ZOOMOUT,
+ SCI_DELWORDLEFT,
+ SCI_DELWORDRIGHT,
+ SCI_LINECUT,
+ SCI_LINEDELETE,
+ SCI_LINETRANSPOSE,
+ SCI_LOWERCASE,
+ SCI_UPPERCASE,
+ SCI_LINESCROLLDOWN,
+ SCI_LINESCROLLUP,
+ SCI_DELETEBACKNOTLINE,
+ SCI_HOMEDISPLAY,
+ SCI_HOMEDISPLAYEXTEND,
+ SCI_LINEENDDISPLAY,
+ SCI_LINEENDDISPLAYEXTEND,
+ SCI_MOVECARETINSIDEVIEW,
+ SCI_LINELENGTH,
+ SCI_BRACEHIGHLIGHT,
+ SCI_BRACEBADLIGHT,
+ SCI_BRACEMATCH,
+ SCI_GETVIEWEOL,
+ SCI_SETVIEWEOL,
+ SCI_GETDOCPOINTER,
+ SCI_SETDOCPOINTER,
+ SCI_SETMODEVENTMASK,
+ SCI_GETEDGECOLUMN,
+ SCI_SETEDGECOLUMN,
+ SCI_GETEDGEMODE,
+ SCI_SETEDGEMODE,
+ SCI_GETEDGECOLOUR,
+ SCI_SETEDGECOLOUR,
+ SCI_SEARCHANCHOR,
+ SCI_SEARCHNEXT,
+ SCI_SEARCHPREV,
+ SCI_LINESONSCREEN,
+ SCI_USEPOPUP,
+ SCI_SELECTIONISRECTANGLE,
+ SCI_SETZOOM,
+ SCI_GETZOOM,
+ SCI_CREATEDOCUMENT,
+ SCI_ADDREFDOCUMENT,
+ SCI_RELEASEDOCUMENT,
+ SCI_GETMODEVENTMASK,
+ SCI_SETFOCUS,
+ SCI_GETFOCUS,
+ SCI_SETSTATUS,
+ SCI_GETSTATUS,
+ SCI_SETMOUSEDOWNCAPTURES,
+ SCI_GETMOUSEDOWNCAPTURES,
+ SCI_SETCURSOR,
+ SCI_GETCURSOR,
+ SCI_SETCONTROLCHARSYMBOL,
+ SCI_GETCONTROLCHARSYMBOL,
+ SCI_WORDPARTLEFT,
+ SCI_WORDPARTLEFTEXTEND,
+ SCI_WORDPARTRIGHT,
+ SCI_WORDPARTRIGHTEXTEND,
+ SCI_SETVISIBLEPOLICY,
+ SCI_DELLINELEFT,
+ SCI_DELLINERIGHT,
+ SCI_SETXOFFSET,
+ SCI_GETXOFFSET,
+ SCI_CHOOSECARETX,
+ SCI_GRABFOCUS,
+ SCI_SETXCARETPOLICY,
+ SCI_SETYCARETPOLICY,
+ SCI_LINEDUPLICATE,
+ SCI_REGISTERIMAGE,
+ SCI_SETPRINTWRAPMODE,
+ SCI_GETPRINTWRAPMODE,
+ SCI_CLEARREGISTEREDIMAGES,
+ SCI_STYLESETHOTSPOT,
+ SCI_SETHOTSPOTACTIVEFORE,
+ SCI_SETHOTSPOTACTIVEBACK,
+ SCI_SETHOTSPOTACTIVEUNDERLINE,
+ SCI_PARADOWN,
+ SCI_PARADOWNEXTEND,
+ SCI_PARAUP,
+ SCI_PARAUPEXTEND,
+%If (QScintilla_1_1 -)
+ SCI_POSITIONBEFORE,
+ SCI_POSITIONAFTER,
+ SCI_COPYRANGE,
+ SCI_COPYTEXT,
+%End
+%If (QScintilla_1_3 -)
+ SCI_SETSELECTIONMODE,
+ SCI_GETSELECTIONMODE,
+ SCI_GETLINESELSTARTPOSITION,
+ SCI_GETLINESELENDPOSITION,
+ SCI_LINEDOWNRECTEXTEND,
+ SCI_LINEUPRECTEXTEND,
+ SCI_CHARLEFTRECTEXTEND,
+ SCI_CHARRIGHTRECTEXTEND,
+ SCI_HOMERECTEXTEND,
+ SCI_VCHOMERECTEXTEND,
+ SCI_LINEENDRECTEXTEND,
+ SCI_PAGEUPRECTEXTEND,
+ SCI_PAGEDOWNRECTEXTEND,
+ SCI_STUTTEREDPAGEUP,
+ SCI_STUTTEREDPAGEUPEXTEND,
+ SCI_STUTTEREDPAGEDOWN,
+ SCI_STUTTEREDPAGEDOWNEXTEND,
+ SCI_WORDLEFTEND,
+ SCI_WORDLEFTENDEXTEND,
+ SCI_WORDRIGHTEND,
+ SCI_WORDRIGHTENDEXTEND,
+ SCI_SETWHITESPACECHARS,
+ SCI_SETCHARSDEFAULT,
+ SCI_AUTOCGETCURRENT,
+ SCI_ALLOCATE,
+%End
+ SCI_HOMEWRAP,
+ SCI_HOMEWRAPEXTEND,
+ SCI_LINEENDWRAP,
+ SCI_LINEENDWRAPEXTEND,
+ SCI_VCHOMEWRAP,
+ SCI_VCHOMEWRAPEXTEND,
+%If (QScintilla_1_1 -)
+ SCI_LINECOPY,
+%End
+%If (QScintilla_1_6 -)
+ SCI_FINDCOLUMN,
+ SCI_GETCARETSTICKY,
+ SCI_SETCARETSTICKY,
+ SCI_TOGGLECARETSTICKY,
+%End
+%If (QScintilla_1_3 -)
+ SCI_SETWRAPVISUALFLAGS,
+ SCI_GETWRAPVISUALFLAGS,
+ SCI_SETWRAPVISUALFLAGSLOCATION,
+ SCI_GETWRAPVISUALFLAGSLOCATION,
+ SCI_SETWRAPSTARTINDENT,
+ SCI_GETWRAPSTARTINDENT,
+%End
+%If (QScintilla_1_7 -)
+ SCI_MARKERADDSET,
+ SCI_SETPASTECONVERTENDINGS
+ SCI_GETPASTECONVERTENDINGS
+ SCI_SELECTIONDUPLICATE
+ SCI_SETCARETLINEBACKALPHA
+ SCI_GETCARETLINEBACKALPHA
+ SCI_MARKERSETALPHA,
+ SCI_GETSELALPHA,
+ SCI_SETSELALPHA,
+%End
+ SCI_STARTRECORD,
+ SCI_STOPRECORD,
+ SCI_SETLEXER,
+ SCI_GETLEXER,
+ SCI_COLOURISE,
+ SCI_SETPROPERTY,
+ SCI_SETKEYWORDS,
+ SCI_SETLEXERLANGUAGE,
+%If (QScintilla_1_6 -)
+ SCI_LOADLEXERLIBRARY,
+ SCI_GETPROPERTY,
+ SCI_GETPROPERTYEXPANDED,
+ SCI_GETPROPERTYINT,
+%End
+%If (QScintilla_1_7 -)
+ SCI_GETSTYLEBITSNEEDED,
+%End
+ };
+
+%If (QScintilla_1_7 -)
+ enum
+ {
+ SC_ALPHA_TRANSPARENT,
+ SC_ALPHA_OPAQUE,
+ SC_ALPHA_NOALPHA,
+ };
+%End
+
+%If (QScintilla_1_3 -)
+ enum
+ {
+ SC_WRAPVISUALFLAG_NONE,
+ SC_WRAPVISUALFLAG_END,
+ SC_WRAPVISUALFLAG_START
+ };
+
+ enum
+ {
+ SC_WRAPVISUALFLAGLOC_DEFAULT,
+ SC_WRAPVISUALFLAGLOC_END_BY_TEXT,
+ SC_WRAPVISUALFLAGLOC_START_BY_TEXT
+ };
+
+ enum {
+ SC_SEL_STREAM,
+ SC_SEL_RECTANGLE,
+ SC_SEL_LINES
+ };
+%End
+
+ enum {
+ SCWS_INVISIBLE,
+ SCWS_VISIBLEALWAYS,
+ SCWS_VISIBLEAFTERINDENT
+ };
+
+ enum {
+ SC_EOL_CRLF,
+ SC_EOL_CR,
+ SC_EOL_LF
+ };
+
+ enum {
+ SC_CP_DBCS,
+ SC_CP_UTF8
+ };
+
+ enum {
+ SC_MARK_CIRCLE,
+ SC_MARK_ROUNDRECT,
+ SC_MARK_ARROW,
+ SC_MARK_SMALLRECT,
+ SC_MARK_SHORTARROW,
+ SC_MARK_EMPTY,
+ SC_MARK_ARROWDOWN,
+ SC_MARK_MINUS,
+ SC_MARK_PLUS,
+ SC_MARK_VLINE,
+ SC_MARK_LCORNER,
+ SC_MARK_TCORNER,
+ SC_MARK_BOXPLUS,
+ SC_MARK_BOXPLUSCONNECTED,
+ SC_MARK_BOXMINUS,
+ SC_MARK_BOXMINUSCONNECTED,
+ SC_MARK_LCORNERCURVE,
+ SC_MARK_TCORNERCURVE,
+ SC_MARK_CIRCLEPLUS,
+ SC_MARK_CIRCLEPLUSCONNECTED,
+ SC_MARK_CIRCLEMINUS,
+ SC_MARK_CIRCLEMINUSCONNECTED,
+ SC_MARK_BACKGROUND,
+ SC_MARK_DOTDOTDOT,
+ SC_MARK_ARROWS,
+ SC_MARK_PIXMAP,
+%If (QScintilla_1_6 -)
+ SC_MARK_FULLRECT,
+%End
+ SC_MARK_CHARACTER
+ };
+
+ enum {
+ SC_MARKNUM_FOLDEREND,
+ SC_MARKNUM_FOLDEROPENMID,
+ SC_MARKNUM_FOLDERMIDTAIL,
+ SC_MARKNUM_FOLDERTAIL,
+ SC_MARKNUM_FOLDERSUB,
+ SC_MARKNUM_FOLDER,
+ SC_MARKNUM_FOLDEROPEN,
+ SC_MASK_FOLDERS
+ };
+
+ enum {
+ SC_MARGIN_SYMBOL,
+ SC_MARGIN_NUMBER,
+%If (QScintilla_1_7 -)
+ SC_MARGIN_BACK,
+ SC_MARGIN_FORE,
+%End
+ };
+
+ enum {
+ STYLE_DEFAULT,
+ STYLE_LINENUMBER,
+ STYLE_BRACELIGHT,
+ STYLE_BRACEBAD,
+ STYLE_CONTROLCHAR,
+ STYLE_INDENTGUIDE,
+%If (QScintilla_1_7 -)
+ STYLE_CALLTIP,
+%End
+ STYLE_LASTPREDEFINED,
+%If (QScintilla_1_3 -)
+ STYLE_MAX
+%End
+ };
+
+ enum {
+ SC_CHARSET_ANSI,
+ SC_CHARSET_DEFAULT,
+ SC_CHARSET_BALTIC,
+ SC_CHARSET_CHINESEBIG5,
+ SC_CHARSET_EASTEUROPE,
+ SC_CHARSET_GB2312,
+ SC_CHARSET_GREEK,
+ SC_CHARSET_HANGUL,
+ SC_CHARSET_MAC,
+ SC_CHARSET_OEM,
+ SC_CHARSET_RUSSIAN,
+ SC_CHARSET_SHIFTJIS,
+ SC_CHARSET_SYMBOL,
+ SC_CHARSET_TURKISH,
+ SC_CHARSET_JOHAB,
+ SC_CHARSET_HEBREW,
+ SC_CHARSET_ARABIC,
+ SC_CHARSET_VIETNAMESE,
+ SC_CHARSET_THAI,
+%If (QScintilla_1_6 -)
+ SC_CHARSET_8859_15,
+%End
+ };
+
+ enum {
+ SC_CASE_MIXED,
+ SC_CASE_UPPER,
+ SC_CASE_LOWER
+ };
+
+ enum {
+ INDIC_MAX,
+ INDIC_PLAIN,
+ INDIC_SQUIGGLE,
+ INDIC_TT,
+ INDIC_DIAGONAL,
+ INDIC_STRIKE,
+%If (QScintilla_1_2 -)
+ INDIC_HIDDEN,
+%End
+%If (QScintilla_1_3 -)
+ INDIC_BOX,
+%End
+%If (QScintilla_1_7 -)
+ INDIC_ROUNDBOX,
+%End
+ INDIC0_MASK,
+ INDIC1_MASK,
+ INDIC2_MASK,
+ INDICS_MASK
+ };
+
+ enum {
+ SC_PRINT_NORMAL,
+ SC_PRINT_INVERTLIGHT,
+ SC_PRINT_BLACKONWHITE,
+ SC_PRINT_COLOURONWHITE,
+ SC_PRINT_COLOURONWHITEDEFAULTBG
+ };
+
+ enum {
+ SCFIND_WHOLEWORD,
+ SCFIND_MATCHCASE,
+ SCFIND_WORDSTART,
+ SCFIND_REGEXP,
+ SCFIND_POSIX
+ };
+
+ enum {
+ SC_FOLDLEVELBASE,
+ SC_FOLDLEVELWHITEFLAG,
+ SC_FOLDLEVELHEADERFLAG,
+ SC_FOLDLEVELBOXHEADERFLAG,
+ SC_FOLDLEVELBOXFOOTERFLAG,
+ SC_FOLDLEVELCONTRACTED,
+ SC_FOLDLEVELUNINDENT,
+ SC_FOLDLEVELNUMBERMASK
+ };
+
+ enum
+ {
+ SC_FOLDFLAG_BOX,
+ SC_FOLDFLAG_LINEBEFORE_EXPANDED,
+ SC_FOLDFLAG_LINEBEFORE_CONTRACTED,
+ SC_FOLDFLAG_LINEAFTER_EXPANDED,
+ SC_FOLDFLAG_LINEAFTER_CONTRACTED,
+ SC_FOLDFLAG_LEVELNUMBERS
+ };
+
+ enum {
+ SC_TIME_FOREVER
+ };
+
+ enum {
+ SC_WRAP_NONE,
+ SC_WRAP_WORD,
+%If (QScintilla_1_6 -)
+ SC_WRAP_CHAR,
+%End
+ };
+
+ enum {
+ SC_CACHE_NONE,
+ SC_CACHE_CARET,
+ SC_CACHE_PAGE,
+ SC_CACHE_DOCUMENT
+ };
+
+ enum {
+ EDGE_NONE,
+ EDGE_LINE,
+ EDGE_BACKGROUND
+ };
+
+ enum {
+ SC_CURSORNORMAL,
+ SC_CURSORWAIT
+ };
+
+ enum {
+ VISIBLE_SLOP,
+ VISIBLE_STRICT
+ };
+
+ enum {
+ CARET_SLOP,
+ CARET_STRICT,
+ CARET_JUMPS,
+ CARET_EVEN
+ };
+
+ enum {
+ SC_MOD_INSERTTEXT,
+ SC_MOD_DELETETEXT,
+ SC_MOD_CHANGESTYLE,
+ SC_MOD_CHANGEFOLD,
+ SC_PERFORMED_USER,
+ SC_PERFORMED_UNDO,
+ SC_PERFORMED_REDO,
+%If (QScintilla_1_6 -)
+ SC_MULTISTEPUNDOREDO,
+%End
+ SC_LASTSTEPINUNDOREDO,
+ SC_MOD_CHANGEMARKER,
+ SC_MOD_BEFOREINSERT,
+ SC_MOD_BEFOREDELETE,
+%If (QScintilla_1_6 -)
+ SC_MULTILINEUNDOREDO,
+%End
+ SC_MODEVENTMASKALL
+ };
+
+ enum {
+ SCK_DOWN,
+ SCK_UP,
+ SCK_LEFT,
+ SCK_RIGHT,
+ SCK_HOME,
+ SCK_END,
+ SCK_PRIOR,
+ SCK_NEXT,
+ SCK_DELETE,
+ SCK_INSERT,
+ SCK_ESCAPE,
+ SCK_BACK,
+ SCK_TAB,
+ SCK_RETURN,
+ SCK_ADD,
+ SCK_SUBTRACT,
+ SCK_DIVIDE
+ };
+
+ enum {
+%If (QScintilla_1_7 -)
+ SCMOD_NORM,
+%End
+ SCMOD_SHIFT,
+ SCMOD_CTRL,
+ SCMOD_ALT
+ };
+
+ enum {
+ SCLEX_CONTAINER,
+ SCLEX_NULL,
+ SCLEX_PYTHON,
+ SCLEX_CPP,
+ SCLEX_HTML,
+ SCLEX_XML,
+ SCLEX_PERL,
+ SCLEX_SQL,
+ SCLEX_VB,
+ SCLEX_PROPERTIES,
+ SCLEX_ERRORLIST,
+ SCLEX_MAKEFILE,
+ SCLEX_BATCH,
+ SCLEX_LATEX,
+ SCLEX_LUA,
+ SCLEX_DIFF,
+ SCLEX_CONF,
+ SCLEX_PASCAL,
+ SCLEX_AVE,
+ SCLEX_ADA,
+ SCLEX_LISP,
+ SCLEX_RUBY,
+ SCLEX_EIFFEL,
+ SCLEX_EIFFELKW,
+ SCLEX_TCL,
+ SCLEX_NNCRONTAB,
+ SCLEX_BULLANT,
+ SCLEX_VBSCRIPT,
+ SCLEX_ASP,
+ SCLEX_PHP,
+ SCLEX_BAAN,
+ SCLEX_MATLAB,
+%If (QScintilla_1_2 -)
+ SCLEX_SCRIPTOL,
+%End
+ SCLEX_ASM,
+ SCLEX_CPPNOCASE,
+ SCLEX_FORTRAN,
+ SCLEX_F77,
+ SCLEX_CSS,
+ SCLEX_POV,
+%If (QScintilla_1_1 -)
+ SCLEX_LOUT,
+ SCLEX_ESCRIPT,
+%End
+%If (QScintilla_1_2 -)
+ SCLEX_PS,
+ SCLEX_NSIS,
+ SCLEX_MMIXAL,
+%End
+%If (QScintilla_1_3 -)
+ SCLEX_CLW,
+ SCLEX_CLWNOCASE,
+ SCLEX_LOT,
+ SCLEX_YAML,
+ SCLEX_TEX,
+ SCLEX_METAPOST,
+ SCLEX_POWERBASIC,
+ SCLEX_FORTH,
+ SCLEX_ERLANG,
+ SCLEX_OCTAVE,
+ SCLEX_MSSQL,
+ SCLEX_VERILOG,
+ SCLEX_KIX,
+ SCLEX_GUI4CLI,
+ SCLEX_SPECMAN,
+ SCLEX_AU3,
+ SCLEX_APDL,
+ SCLEX_BASH,
+%End
+%If (QScintilla_1_5 -)
+ SCLEX_ASN1,
+ SCLEX_VHDL,
+%End
+%If (QScintilla_1_6 -)
+ SCLEX_CAML,
+ SCLEX_BLITZBASIC,
+ SCLEX_PUREBASIC,
+ SCLEX_HASKELL,
+ SCLEX_PHPSCRIPT,
+ SCLEX_TADS3,
+ SCLEX_REBOL,
+ SCLEX_SMALLTALK,
+ SCLEX_FLAGSHIP,
+ SCLEX_CSOUND,
+%End
+%If (QScintilla_1_7 -)
+ SCLEX_FREEBASIC,
+ SCLEX_INNOSETUP,
+ SCLEX_OPAL,
+ SCLEX_SPICE,
+%End
+ };
+
+ QextScintillaBase(QWidget * /TransferThis/,const char *,
+ WFlags = 0);
+
+%ConvertToSubClassCode
+ static struct class_graph {
+ char *name;
+ sipWrapperType **type;
+ int yes, no;
+ } graph[] = {
+ {sipName_QextScintillaLexer, &sipClass_QextScintillaLexer, 3, 1},
+ {sipName_QextScintillaBase, &sipClass_QextScintillaBase, 15, 2},
+ {sipName_QextScintillaMacro, &sipClass_QextScintillaMacro, -1, -1},
+#if QSCINTILLA_VERSION >= 0x010300
+ {sipName_QextScintillaLexerPerl, &sipClass_QextScintillaLexerPerl, -1, 4},
+#else
+ {NULL, NULL, -1, 4},
+#endif
+#if QSCINTILLA_VERSION >= 0x010100
+ {sipName_QextScintillaLexerHTML, &sipClass_QextScintillaLexerHTML, -1, 5},
+#else
+ {NULL, NULL, -1, 5},
+#endif
+#if QSCINTILLA_VERSION >= 0x010500
+ {sipName_QextScintillaLexerRuby, &sipClass_QextScintillaLexerRuby, -1, 6},
+#else
+ {NULL, NULL, -1, 6},
+#endif
+ {sipName_QextScintillaLexerCPP, &sipClass_QextScintillaLexerCPP, 11, 7},
+ {sipName_QextScintillaLexerPython, &sipClass_QextScintillaLexerPython, -1, 8},
+#if QSCINTILLA_VERSION >= 0x010100
+ {sipName_QextScintillaLexerSQL, &sipClass_QextScintillaLexerSQL, -1, 9},
+#else
+ {NULL, NULL, -1, 9},
+#endif
+#if QSCINTILLA_VERSION >= 0x010400
+ {sipName_QextScintillaLexerBash, &sipClass_QextScintillaLexerBash, -1, 10},
+#else
+ {NULL, NULL, -1, 10},
+#endif
+#if QSCINTILLA_VERSION >= 0x010500
+ {sipName_QextScintillaLexerLua, &sipClass_QextScintillaLexerLua, -1, -1},
+#else
+ {NULL, NULL, -1, -1},
+#endif
+ {sipName_QextScintillaLexerIDL, &sipClass_QextScintillaLexerIDL, -1, 12},
+ {sipName_QextScintillaLexerJavaScript, &sipClass_QextScintillaLexerJavaScript, -1, 13},
+ {sipName_QextScintillaLexerCSharp, &sipClass_QextScintillaLexerCSharp, -1, 14},
+ {sipName_QextScintillaLexerJava, &sipClass_QextScintillaLexerJava, -1, -1},
+ {sipName_QextScintilla, &sipClass_QextScintilla, -1, -1},
+ };
+
+ int i = 0;
+
+ sipClass = NULL;
+
+ do
+ {
+ struct class_graph *cg = &graph[i];
+
+ if (cg->name != NULL && sipCpp->inherits(cg->name))
+ {
+ sipClass = *cg->type;
+ i = cg->yes;
+ }
+ else
+ i = cg->no;
+ }
+ while (i >= 0);
+%End
+
+%If (QScintilla_1_3 -)
+ QextScintillaBase *pool();
+%End
+
+ long SendScintilla(unsigned int,unsigned long = 0,long = 0);
+ long SendScintilla(unsigned int,unsigned long,const char *);
+ long SendScintilla(unsigned int,const char *);
+ long SendScintilla(unsigned int,const char *,const char *);
+ long SendScintilla(unsigned int,long);
+ //long SendScintilla(unsigned int,int);
+ long SendScintilla(unsigned int,long,long,char *);
+ long SendScintilla(unsigned int,unsigned long,const QColor &);
+ long SendScintilla(unsigned int,const QColor &);
+ long SendScintilla(unsigned int,unsigned long,QPainter *,const QRect &,
+ long,long);
+ long SendScintilla(unsigned int,unsigned long,const QPixmap *);
+
+ virtual QSize sizeHint() const;
+%If (QScintilla_1_5 -)
+ QWidget *viewport() const;
+%End
+
+signals:
+ void QSCN_SELCHANGED(bool);
+
+ void SCEN_CHANGE();
+
+%If (QScintilla_1_6 -)
+ void SCN_AUTOCSELECTION(const char *,int);
+%End
+ void SCN_CHARADDED(int);
+ void SCN_CALLTIPCLICK(int);
+ void SCN_DOUBLECLICK();
+ void SCN_DWELLEND(int,int,int);
+ void SCN_DWELLSTART(int,int,int);
+ void SCN_HOTSPOTCLICK(int,int);
+ void SCN_HOTSPOTDOUBLECLICK(int,int);
+ void SCN_MACRORECORD(unsigned int,unsigned long,long);
+ void SCN_MARGINCLICK(int,int,int);
+ void SCN_MODIFIED(int,int,const char *,int,int,int,int,int);
+ void SCN_MODIFYATTEMPTRO();
+ void SCN_NEEDSHOWN(int,int);
+ void SCN_PAINTED();
+ void SCN_SAVEPOINTLEFT();
+ void SCN_SAVEPOINTREACHED();
+ void SCN_STYLENEEDED(int);
+ void SCN_UPDATEUI();
+ void SCN_USERLISTSELECTION(const char *,int);
+ void SCN_ZOOM();
+
+protected:
+ bool eventFilter(QObject *,QEvent *);
+ virtual void keyPressEvent(QKeyEvent *);
+ virtual void focusInEvent(QFocusEvent *);
+ virtual void focusOutEvent(QFocusEvent *);
+ virtual bool focusNextPrevChild(bool);
+%If (QScintilla_1_5 -)
+ virtual void startDrag();
+%End
+
+private:
+ QextScintillaBase(const QextScintillaBase &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillacommand.sip b/python/pyqt/sip/qtext/qextscintillacommand.sip
new file mode 100644
index 00000000..148fdd67
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillacommand.sip
@@ -0,0 +1,44 @@
+// This is the SIP interface definition for QextScintillaCommand.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaCommand
+{
+%TypeHeaderCode
+#include <qextscintillacommand.h>
+%End
+
+public:
+ void setKey(int);
+ void setAlternateKey(int);
+ int key() const;
+ int alternateKey() const;
+ static bool validKey(int);
+ QString description() const;
+
+private:
+ QextScintillaCommand(QextScintilla *,int,int,const char *);
+ QextScintillaCommand(const QextScintillaCommand &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillacommandset.sip b/python/pyqt/sip/qtext/qextscintillacommandset.sip
new file mode 100644
index 00000000..ae1be22c
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillacommandset.sip
@@ -0,0 +1,52 @@
+// This is the SIP interface definition for the QextScintillaCommandSet.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaCommandSet
+{
+%TypeHeaderCode
+#include <qextscintillacommandset.h>
+%End
+
+public:
+ bool readSettings(QSettings &,const char * = "/Scintilla");
+ bool writeSettings(QSettings &,const char * = "/Scintilla");
+
+%If (QScintilla_1_4 -)
+ QPtrList<QextScintillaCommand> &commands();
+%End
+%If (- QScintilla_1_4)
+ const QPtrList<QextScintillaCommand> &commands() const;
+%End
+
+%If (QScintilla_1_4 -)
+ void clearKeys();
+ void clearAlternateKeys();
+%End
+
+private:
+ QextScintillaCommandSet(QextScintilla *);
+ QextScintillaCommandSet(const QextScintillaCommandSet &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintilladocument.sip b/python/pyqt/sip/qtext/qextscintilladocument.sip
new file mode 100644
index 00000000..91081147
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintilladocument.sip
@@ -0,0 +1,42 @@
+// This is the SIP interface definition for QextScintillaDocument.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_3 -)
+
+class QextScintillaDocument
+{
+%TypeHeaderCode
+#include <qextscintilladocument.h>
+%End
+
+public:
+ QextScintillaDocument();
+ virtual ~QextScintillaDocument();
+
+ QextScintillaDocument(const QextScintillaDocument &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexer.sip b/python/pyqt/sip/qtext/qextscintillalexer.sip
new file mode 100644
index 00000000..ed10f463
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexer.sip
@@ -0,0 +1,80 @@
+// This is the SIP interface definition for QextScintillaLexer.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexer : QObject
+{
+%TypeHeaderCode
+#include <qextscintillalexer.h>
+%End
+
+public:
+ QextScintillaLexer(QObject * /TransferThis/ = 0,const char * = 0);
+
+ virtual const char *language() const = 0;
+ virtual const char *lexer() const = 0;
+ int autoIndentStyle();
+ virtual QColor color(int) const;
+ virtual bool eolFill(int) const;
+ virtual QFont font(int) const;
+ virtual const char *keywords(int) const;
+ virtual QString description(int) const = 0;
+ virtual QColor paper(int) const;
+ virtual QFont defaultFont() const;
+%If (QScintilla_1_7 -)
+ virtual QColor defaultColor() const;
+ virtual QColor defaultPaper() const;
+%End
+ virtual void refreshProperties();
+ bool readSettings(QSettings &,const char * = "/Scintilla");
+ bool writeSettings(QSettings &,const char * = "/Scintilla") const;
+
+public slots:
+ virtual void setAutoIndentStyle(int);
+ virtual void setColor(const QColor &,int = -1);
+ virtual void setDefaultFont(const QFont &);
+%If (QScintilla_1_7 -)
+ virtual void setDefaultColor(const QColor &);
+ virtual void setDefaultPaper(const QColor &);
+%End
+ virtual void setEolFill(bool,int = -1);
+ virtual void setFont(const QFont &,int = -1);
+ virtual void setPaper(const QColor &,int = -1);
+
+signals:
+ void colorChanged(const QColor &,int);
+ void eolFillChanged(bool,int);
+ void fontChanged(const QFont &,int);
+ void paperChanged(const QColor &,int);
+ void propertyChanged(const char *,const char *);
+
+protected:
+ virtual bool readProperties(QSettings &,const QString &);
+ virtual bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexer(const QextScintillaLexer &);
+
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexerbash.sip b/python/pyqt/sip/qtext/qextscintillalexerbash.sip
new file mode 100644
index 00000000..3a4099dc
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerbash.sip
@@ -0,0 +1,80 @@
+// This is the SIP interface definition for QextScintillaLexerBash.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_4 -)
+
+class QextScintillaLexerBash : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerbash.h>
+%End
+
+public:
+ enum {
+ Default,
+ Error,
+ Comment,
+ Number,
+ Keyword,
+ DoubleQuotedString,
+ SingleQuotedString,
+ Operator,
+ Identifier,
+ Scalar,
+ ParameterExpansion,
+ Backticks,
+ HereDocumentDelimiter,
+ SingleQuotedHereDocument
+ };
+
+ QextScintillaLexerBash(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldComments() const;
+ bool foldCompact() const;
+
+public slots:
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerBash(const QextScintillaLexerBash &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerbatch.sip b/python/pyqt/sip/qtext/qextscintillalexerbatch.sip
new file mode 100644
index 00000000..f29f326a
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerbatch.sip
@@ -0,0 +1,62 @@
+// This is the SIP interface definition for QextScintillaLexerBatch.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerBatch : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerbatch.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ Keyword,
+ Label,
+ HideCommandChar,
+ ExternalCommand,
+ Variable,
+ Operator
+ };
+
+ QextScintillaLexerBatch(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+private:
+ QextScintillaLexerBatch(const QextScintillaLexerBatch &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexercpp.sip b/python/pyqt/sip/qtext/qextscintillalexercpp.sip
new file mode 100644
index 00000000..dab8cf28
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexercpp.sip
@@ -0,0 +1,98 @@
+// This is the SIP interface definition for QextScintillaLexerCPP.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerCPP : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexercpp.h>
+%End
+
+public:
+ enum {
+%If (QScintilla_1_1 -)
+ Default,
+%End
+ WhiteSpace,
+ Comment,
+ CommentLine,
+ CommentDoc,
+ Number,
+ Keyword,
+ DoubleQuotedString,
+ SingleQuotedString,
+ UUID,
+ PreProcessor,
+ Operator,
+ Identifier,
+ UnclosedString,
+ VerbatimString,
+ Regex,
+ CommentLineDoc,
+ KeywordSet2,
+ CommentDocKeyword,
+ CommentDocKeywordError,
+%If (QScintilla_1_1 -)
+ GlobalClass,
+%End
+ };
+
+ QextScintillaLexerCPP(QObject * /TransferThis/ = 0,const char * = 0,
+ bool = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+%If (QScintilla_1_1 -)
+ bool foldAtElse() const;
+%End
+ bool foldComments() const;
+ bool foldCompact() const;
+ bool foldPreprocessor() const;
+ bool stylePreprocessor() const;
+
+public slots:
+%If (QScintilla_1_1 -)
+ virtual void setFoldAtElse(bool);
+%End
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+ virtual void setFoldPreprocessor(bool);
+ virtual void setStylePreprocessor(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerCPP(const QextScintillaLexerCPP &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexercsharp.sip b/python/pyqt/sip/qtext/qextscintillalexercsharp.sip
new file mode 100644
index 00000000..94442480
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexercsharp.sip
@@ -0,0 +1,47 @@
+// This is the SIP interface definition for QextScintillaLexerCSharp.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerCSharp : QextScintillaLexerCPP
+{
+%TypeHeaderCode
+#include <qextscintillalexercsharp.h>
+%End
+
+public:
+ QextScintillaLexerCSharp(QObject * /TransferThis/ = 0,
+ const char * = 0);
+
+ const char *language() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+private:
+ QextScintillaLexerCSharp(const QextScintillaLexerCSharp &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexercss.sip b/python/pyqt/sip/qtext/qextscintillalexercss.sip
new file mode 100644
index 00000000..eb02a09c
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexercss.sip
@@ -0,0 +1,81 @@
+// This is the SIP interface definition for QextScintillaLexerCSS.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerCSS : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexercss.h>
+%End
+
+public:
+ enum {
+ Default,
+ Tag,
+ ClassSelector,
+ PseudoClass,
+ UnknownPseudoClass,
+ Operator,
+ CSS1Property,
+ UnknownProperty,
+ Value,
+ Comment,
+ IDSelector,
+ Important,
+ AtRule,
+ DoubleQuotedString,
+ SingleQuotedString,
+ CSS2Property,
+ Attribute
+ };
+
+ QextScintillaLexerCSS(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+
+ void refreshProperties();
+ bool foldComments() const;
+ bool foldCompact() const;
+
+public slots:
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerCSS(const QextScintillaLexerCSS &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerdiff.sip b/python/pyqt/sip/qtext/qextscintillalexerdiff.sip
new file mode 100644
index 00000000..adfcb779
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerdiff.sip
@@ -0,0 +1,57 @@
+// This is the SIP interface definition for QextScintillaLexerDiff.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerDiff : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerdiff.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ Command,
+ Header,
+ Position,
+ LineRemoved,
+ LineAdded
+ };
+
+ QextScintillaLexerDiff(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ QString description(int) const;
+
+private:
+ QextScintillaLexerDiff(const QextScintillaLexerDiff &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerhtml.sip b/python/pyqt/sip/qtext/qextscintillalexerhtml.sip
new file mode 100644
index 00000000..6b591622
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerhtml.sip
@@ -0,0 +1,178 @@
+// This is the SIP interface definition for QextScintillaLexerHTML.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_1 -)
+
+class QextScintillaLexerHTML : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerhtml.h>
+%End
+
+public:
+ enum {
+ Default,
+ Tag,
+ UnknownTag,
+ Attribute,
+ UnknownAttribute,
+ HTMLNumber,
+ HTMLDoubleQuotedString,
+ HTMLSingleQuotedString,
+ OtherInTag,
+ HTMLComment,
+ Entity,
+ XMLTagEnd,
+ XMLStart,
+ XMLEnd,
+ Script,
+ ASPAtStart,
+ ASPStart,
+ CDATA,
+ PHPStart,
+ HTMLValue,
+ ASPXCComment,
+ SGMLDefault,
+ SGMLCommand,
+ SGMLParameter,
+ SGMLDoubleQuotedString,
+ SGMLSingleQuotedString,
+ SGMLError,
+ SGMLSpecial,
+ SGMLEntity,
+ SGMLComment,
+ SGMLParameterComment,
+ SGMLBlockDefault,
+ JavaScriptStart,
+ JavaScriptDefault,
+ JavaScriptComment,
+ JavaScriptCommentLine,
+ JavaScriptCommentDoc,
+ JavaScriptNumber,
+ JavaScriptWord,
+ JavaScriptKeyword,
+ JavaScriptDoubleQuotedString,
+ JavaScriptSingleQuotedString,
+ JavaScriptSymbol,
+ JavaScriptUnclosedString,
+ JavaScriptRegex,
+ ASPJavaScriptStart,
+ ASPJavaScriptDefault,
+ ASPJavaScriptComment,
+ ASPJavaScriptCommentLine,
+ ASPJavaScriptCommentDoc,
+ ASPJavaScriptNumber,
+ ASPJavaScriptWord,
+ ASPJavaScriptKeyword,
+ ASPJavaScriptDoubleQuotedString,
+ ASPJavaScriptSingleQuotedString,
+ ASPJavaScriptSymbol,
+ ASPJavaScriptUnclosedString,
+ ASPJavaScriptRegex,
+ VBScriptStart,
+ VBScriptDefault,
+ VBScriptComment,
+ VBScriptNumber,
+ VBScriptKeyword,
+ VBScriptString,
+ VBScriptIdentifier,
+ VBScriptUnclosedString,
+ ASPVBScriptStart,
+ ASPVBScriptDefault,
+ ASPVBScriptComment,
+ ASPVBScriptNumber,
+ ASPVBScriptKeyword,
+ ASPVBScriptString,
+ ASPVBScriptIdentifier,
+ ASPVBScriptUnclosedString,
+ PythonStart,
+ PythonDefault,
+ PythonComment,
+ PythonNumber,
+ PythonDoubleQuotedString,
+ PythonSingleQuotedString,
+ PythonKeyword,
+ PythonTripleSingleQuotedString,
+ PythonTripleDoubleQuotedString,
+ PythonClassName,
+ PythonFunctionMethodName,
+ PythonOperator,
+ PythonIdentifier,
+ ASPPythonStart,
+ ASPPythonDefault,
+ ASPPythonComment,
+ ASPPythonNumber,
+ ASPPythonDoubleQuotedString,
+ ASPPythonSingleQuotedString,
+ ASPPythonKeyword,
+ ASPPythonTripleSingleQuotedString,
+ ASPPythonTripleDoubleQuotedString,
+ ASPPythonClassName,
+ ASPPythonFunctionMethodName,
+ ASPPythonOperator,
+ ASPPythonIdentifier,
+ PHPDefault,
+ PHPDoubleQuotedString,
+ PHPSingleQuotedString,
+ PHPKeyword,
+ PHPNumber,
+ PHPVariable,
+ PHPComment,
+ PHPCommentLine,
+ PHPDoubleQuotedVariable,
+ PHPOperator
+ };
+
+ QextScintillaLexerHTML(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldCompact() const;
+ bool foldPreprocessor() const;
+ bool caseSensitiveTags() const;
+
+public slots:
+ virtual void setFoldCompact(bool);
+ virtual void setFoldPreprocessor(bool);
+ virtual void setCaseSensitiveTags(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerHTML(const QextScintillaLexerHTML &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexeridl.sip b/python/pyqt/sip/qtext/qextscintillalexeridl.sip
new file mode 100644
index 00000000..cf1fe5a7
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexeridl.sip
@@ -0,0 +1,43 @@
+// This is the SIP interface definition for QextScintillaLexerIDL.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerIDL : QextScintillaLexerCPP
+{
+%TypeHeaderCode
+#include <qextscintillalexeridl.h>
+%End
+
+public:
+ QextScintillaLexerIDL(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ QColor color(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+
+private:
+ QextScintillaLexerIDL(const QextScintillaLexerIDL &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexerjava.sip b/python/pyqt/sip/qtext/qextscintillalexerjava.sip
new file mode 100644
index 00000000..8db6bd42
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerjava.sip
@@ -0,0 +1,41 @@
+// This is the SIP interface definition for QextScintillaLexerJava.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerJava : QextScintillaLexerCPP
+{
+%TypeHeaderCode
+#include <qextscintillalexerjava.h>
+%End
+
+public:
+ QextScintillaLexerJava(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *keywords(int) const;
+
+private:
+ QextScintillaLexerJava(const QextScintillaLexerJava &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexerjavascript.sip b/python/pyqt/sip/qtext/qextscintillalexerjavascript.sip
new file mode 100644
index 00000000..4b3c9a10
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerjavascript.sip
@@ -0,0 +1,47 @@
+// This is the SIP interface definition for QextScintillaLexerJavaScript.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerJavaScript : QextScintillaLexerCPP
+{
+%TypeHeaderCode
+#include <qextscintillalexerjavascript.h>
+%End
+
+public:
+ QextScintillaLexerJavaScript(QObject * /TransferThis/ = 0,
+ const char * = 0);
+
+ const char *language() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+private:
+ QextScintillaLexerJavaScript(const QextScintillaLexerJavaScript &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexerlua.sip b/python/pyqt/sip/qtext/qextscintillalexerlua.sip
new file mode 100644
index 00000000..fe05ea17
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerlua.sip
@@ -0,0 +1,79 @@
+// This is the SIP interface definition for QextScintillaLexerLua.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_5 -)
+
+class QextScintillaLexerLua : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerlua.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ LineComment,
+ Number,
+ Keyword,
+ String,
+ Character,
+ LiteralString,
+ Preprocessor,
+ Operator,
+ Identifier,
+ UnclosedString,
+ BasicFunctions,
+ StringTableMathsFunctions,
+ CoroutinesIOSystemFacilities
+ };
+
+ QextScintillaLexerLua(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldCompact() const;
+
+public slots:
+ virtual void setFoldCompact(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerLua(const QextScintillaLexerLua &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexermakefile.sip b/python/pyqt/sip/qtext/qextscintillalexermakefile.sip
new file mode 100644
index 00000000..83c15b14
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexermakefile.sip
@@ -0,0 +1,60 @@
+// This is the SIP interface definition for QextScintillaLexerMakefile.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerMakefile : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexermakefile.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ Preprocessor,
+ Variable,
+ Operator,
+ Target,
+ Error
+ };
+
+ QextScintillaLexerMakefile(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+private:
+ QextScintillaLexerMakefile(const QextScintillaLexerMakefile &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerperl.sip b/python/pyqt/sip/qtext/qextscintillalexerperl.sip
new file mode 100644
index 00000000..a8db0a11
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerperl.sip
@@ -0,0 +1,96 @@
+// This is the SIP interface definition for QextScintillaLexerPerl.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_3 -)
+
+class QextScintillaLexerPerl : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerperl.h>
+%End
+
+public:
+ enum {
+ Default,
+ Error,
+ Comment,
+ POD,
+ Number,
+ Keyword,
+ DoubleQuotedString,
+ SingleQuotedString,
+ Operator,
+ Identifier,
+ Scalar,
+ Array,
+ Hash,
+ SymbolTable,
+ Regex,
+ Substitution,
+ Backticks,
+ DataSection,
+ HereDocumentDelimiter,
+ SingleQuotedHereDocument,
+ DoubleQuotedHereDocument,
+ BacktickHereDocument,
+ QuotedStringQ,
+ QuotedStringQQ,
+ QuotedStringQX,
+ QuotedStringQR,
+ QuotedStringQW,
+%If (QScintilla_1_6 -)
+ PODVerbatim,
+%End
+ };
+
+ QextScintillaLexerPerl(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldComments() const;
+ bool foldCompact() const;
+
+public slots:
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerPerl(const QextScintillaLexerPerl &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerpov.sip b/python/pyqt/sip/qtext/qextscintillalexerpov.sip
new file mode 100644
index 00000000..862e48e8
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerpov.sip
@@ -0,0 +1,85 @@
+// This is the SIP interface definition for QextScintillaLexerPOV.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerPOV : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerpov.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ CommentLine,
+ Number,
+ Operator,
+ Identifier,
+ String,
+ UnclosedString,
+ Directive,
+ BadDirective,
+ ObjectsCSGAppearance,
+ TypesModifiersItems,
+ PredefinedIdentifiers,
+ PredefinedFunctions,
+ KeywordSet6,
+ KeywordSet7,
+ KeywordSet8
+ };
+
+ QextScintillaLexerPOV(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldComments() const;
+ bool foldCompact() const;
+ bool foldDirectives() const;
+
+public slots:
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+ virtual void setFoldDirectives(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerPOV(const QextScintillaLexerPOV &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerproperties.sip b/python/pyqt/sip/qtext/qextscintillalexerproperties.sip
new file mode 100644
index 00000000..45c52e5f
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerproperties.sip
@@ -0,0 +1,68 @@
+// This is the SIP interface definition for QextScintillaLexerProperties.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerProperties : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerproperties.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+ Section,
+ Assignment,
+ DefaultValue
+ };
+
+ QextScintillaLexerProperties(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldCompact() const;
+
+public slots:
+ virtual void setFoldCompact(bool);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerProperties(const QextScintillaLexerProperties &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexerpython.sip b/python/pyqt/sip/qtext/qextscintillalexerpython.sip
new file mode 100644
index 00000000..3a2bca5b
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerpython.sip
@@ -0,0 +1,94 @@
+// This is the SIP interface definition for QextScintillaLexerPython.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaLexerPython : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerpython.h>
+%End
+
+public:
+ enum {
+%If (QScintilla_1_1 -)
+ Default,
+%End
+ WhiteSpace,
+ Comment,
+ Number,
+ DoubleQuotedString,
+ SingleQuotedString,
+ Keyword,
+ TripleSingleQuotedString,
+ TripleDoubleQuotedString,
+ ClassName,
+ FunctionMethodName,
+ Operator,
+ Identifier,
+ CommentBlock,
+ UnclosedString,
+%If (QScintilla_1_7 -)
+ HighlightedIdentifier,
+ Decorator,
+%End
+ };
+
+ enum IndentationWarning {
+ NoWarning,
+ Inconsistent,
+ TabsAfterSpaces,
+ Spaces,
+ Tabs
+ };
+
+ QextScintillaLexerPython(QObject * /TransferThis/ = 0,
+ const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+ void refreshProperties();
+
+ bool foldComments() const;
+ bool foldQuotes() const;
+ IndentationWarning indentationWarning() const;
+
+public slots:
+ virtual void setFoldComments(bool);
+ virtual void setFoldQuotes(bool);
+ virtual void setIndentationWarning(IndentationWarning);
+
+protected:
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+
+private:
+ QextScintillaLexerPython(const QextScintillaLexerPython &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillalexerruby.sip b/python/pyqt/sip/qtext/qextscintillalexerruby.sip
new file mode 100644
index 00000000..77beba07
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexerruby.sip
@@ -0,0 +1,128 @@
+// This is the SIP interface definition for QextScintillaLexerRuby.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_5 -)
+
+class QextScintillaLexerRuby : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexerruby.h>
+%End
+
+public:
+%If (QScintilla_1_7 -)
+ enum {
+ Default,
+ Comment,
+ POD,
+ Number,
+ Keyword,
+ DoubleQuotedString,
+ SingleQuotedString,
+ ClassName,
+ FunctionMethodName,
+ Operator,
+ Identifier,
+ Regex,
+ Global,
+ Symbol,
+ ModuleName,
+ InstanceVariable,
+ ClassVariable,
+ Backticks,
+ DataSection,
+ HereDocumentDelimiter,
+ HereDocument,
+ PercentStringq,
+ PercentStringQ,
+ PercentStringx,
+ PercentStringr,
+ PercentStringw,
+ DemotedKeyword,
+ Stdin,
+ Stdout,
+ Stderr
+ };
+%End
+%If (- QScintilla_1_7)
+ enum {
+ Default,
+ WhiteSpace,
+ Comment,
+ Number,
+ DoubleQuotedString,
+ SingleQuotedString,
+ Keyword,
+ TripleDoubleQuotedString,
+ ClassName,
+ FunctionMethodName,
+ Operator,
+ Identifier,
+ CommentBlock,
+ UnclosedString
+ };
+
+ enum IndentationWarning {
+ NoWarning,
+ Inconsistent,
+ TabsAfterSpaces,
+ Spaces,
+ Tabs
+ };
+%End
+
+ QextScintillaLexerRuby(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ bool eolFill(int) const;
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+ QColor paper(int) const;
+%If (- QScintilla_1_7)
+ void refreshProperties();
+
+ IndentationWarning indentationWarning() const;
+%End
+
+public slots:
+%If (- QScintilla_1_7)
+ virtual void setIndentationWarning(IndentationWarning);
+%End
+
+protected:
+%If (- QScintilla_1_7)
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+%End
+
+private:
+ QextScintillaLexerRuby(const QextScintillaLexerRuby &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexersql.sip b/python/pyqt/sip/qtext/qextscintillalexersql.sip
new file mode 100644
index 00000000..85a5e191
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexersql.sip
@@ -0,0 +1,105 @@
+// This is the SIP interface definition for QextScintillaLexerSQL.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_1 -)
+
+class QextScintillaLexerSQL : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexersql.h>
+%End
+
+public:
+ enum {
+ Default,
+ Comment,
+%If (QScintilla_1_6 -)
+ CommentLine,
+ CommentDoc,
+%End
+ LineComment, // Obsolete.
+ Number,
+ Keyword,
+%If (QScintilla_1_6 -)
+ DoubleQuotedString,
+%End
+ SingleQuotedString,
+%If (QScintilla_1_6 -)
+ PlusKeyword,
+ PlusPrompt,
+%End
+ Operator,
+ Identifier,
+%If (QScintilla_1_6 -)
+ PlusComment,
+ CommentLineHash,
+ CommentDocKeyword,
+ CommentDocKeywordError,
+ KeywordSet5,
+ KeywordSet6,
+ KeywordSet7,
+ KeywordSet8,
+%End
+ };
+
+ QextScintillaLexerSQL(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+%If (QScintilla_1_6 -)
+ bool eolFill(int) const;
+%End
+ QFont font(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+%If (QScintilla_1_6 -)
+ QColor paper(int) const;
+
+ void refreshProperties();
+ bool foldComments() const;
+ bool foldCompact() const;
+ bool backslashEscapes() const;
+%End
+
+public slots:
+%If (QScintilla_1_6 -)
+ virtual void setFoldComments(bool);
+ virtual void setFoldCompact(bool);
+ virtual void setBackslashEscapes(bool);
+%End
+
+protected:
+%If (QScintilla_1_6 -)
+ bool readProperties(QSettings &,const QString &);
+ bool writeProperties(QSettings &,const QString &) const;
+%End
+
+private:
+ QextScintillaLexerSQL(const QextScintillaLexerSQL &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillalexertex.sip b/python/pyqt/sip/qtext/qextscintillalexertex.sip
new file mode 100644
index 00000000..668fcd02
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillalexertex.sip
@@ -0,0 +1,57 @@
+// This is the SIP interface definition for QextScintillaLexerTeX.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (QScintilla_1_6 -)
+
+class QextScintillaLexerTeX : QextScintillaLexer
+{
+%TypeHeaderCode
+#include <qextscintillalexertex.h>
+%End
+
+public:
+ enum {
+ Default,
+ Special,
+ Group,
+ Symbol,
+ Command,
+ Text
+ };
+
+ QextScintillaLexerTeX(QObject * /TransferThis/ = 0,const char * = 0);
+
+ const char *language() const;
+ const char *lexer() const;
+ QColor color(int) const;
+ const char *keywords(int) const;
+ QString description(int) const;
+
+private:
+ QextScintillaLexerTeX(const QextScintillaLexerTeX &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtext/qextscintillamacro.sip b/python/pyqt/sip/qtext/qextscintillamacro.sip
new file mode 100644
index 00000000..45615af0
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillamacro.sip
@@ -0,0 +1,49 @@
+// This is the SIP interface definition for QextScintillaMacro.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaMacro : QObject
+{
+%TypeHeaderCode
+#include <qextscintillamacro.h>
+%End
+
+public:
+ QextScintillaMacro(QextScintilla * /TransferThis/,const char * = 0);
+ QextScintillaMacro(const QCString &,QextScintilla * /TransferThis/,
+ const char * = 0);
+
+ void clear();
+ bool load(const QCString &);
+ QCString save() const;
+
+public slots:
+ virtual void play();
+ virtual void startRecording();
+ virtual void endRecording();
+
+private:
+ QextScintillaMacro(const QextScintillaMacro &);
+};
diff --git a/python/pyqt/sip/qtext/qextscintillaprinter.sip b/python/pyqt/sip/qtext/qextscintillaprinter.sip
new file mode 100644
index 00000000..dce068b6
--- /dev/null
+++ b/python/pyqt/sip/qtext/qextscintillaprinter.sip
@@ -0,0 +1,45 @@
+// This is the SIP interface definition for QextScintillaPrinter.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+class QextScintillaPrinter : QPrinter
+{
+%TypeHeaderCode
+#include <qextscintillaprinter.h>
+%End
+
+public:
+ QextScintillaPrinter(QPrinter::PrinterMode = QPrinter::ScreenResolution);
+
+ virtual void formatPage(QPainter &,bool,QRect &,int);
+ virtual int printRange(QextScintillaBase *,int = -1,int = -1);
+ int magnification() const;
+ virtual void setMagnification(int);
+ QextScintilla::WrapMode wrapMode() const;
+ virtual void setWrapMode(QextScintilla::WrapMode);
+
+private:
+ QextScintillaPrinter(const QextScintillaPrinter &);
+};
diff --git a/python/pyqt/sip/qtext/qtextmod.sip b/python/pyqt/sip/qtext/qtextmod.sip
new file mode 100644
index 00000000..06024a64
--- /dev/null
+++ b/python/pyqt/sip/qtext/qtextmod.sip
@@ -0,0 +1,107 @@
+// This is the SIP interface definition for the qtext module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtext 4
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+// The QScintilla versions.
+%Timeline {QScintilla_1_1 QScintilla_1_2 QScintilla_1_3 QScintilla_1_4
+ QScintilla_1_5 QScintilla_1_6 QScintilla_1_7}
+
+
+const unsigned QSCINTILLA_VERSION;
+const char *QSCINTILLA_VERSION_STR;
+const char *QSCINTILLA_BUILD;
+
+
+%Include qextscintillaapis.sip
+%Include qextscintillabase.sip
+%Include qextscintilla.sip
+%Include qextscintillacommand.sip
+%Include qextscintillacommandset.sip
+%Include qextscintilladocument.sip
+%Include qextscintillalexer.sip
+%Include qextscintillalexerbash.sip
+%Include qextscintillalexerbatch.sip
+%Include qextscintillalexercpp.sip
+%Include qextscintillalexercsharp.sip
+%Include qextscintillalexercss.sip
+%Include qextscintillalexerdiff.sip
+%Include qextscintillalexerhtml.sip
+%Include qextscintillalexeridl.sip
+%Include qextscintillalexerjava.sip
+%Include qextscintillalexerjavascript.sip
+%Include qextscintillalexerlua.sip
+%Include qextscintillalexermakefile.sip
+%Include qextscintillalexerperl.sip
+%Include qextscintillalexerpov.sip
+%Include qextscintillalexerproperties.sip
+%Include qextscintillalexerpython.sip
+%Include qextscintillalexerruby.sip
+%Include qextscintillalexersql.sip
+%Include qextscintillalexertex.sip
+%Include qextscintillamacro.sip
+%Include qextscintillaprinter.sip
+
+
+// The build file template.
+
+%Makefile qtext.pro.in
+# The project file for the qtext module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@ @PYQT_QSCINTILLA_INC@
+DEFINES = @BLX_DEFINES@ QEXTSCINTILLA_DLL
+LIBS += @PYQT_QT_MODULE@ @PYQT_QSCINTILLA_LIB@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtgl/copying.sip b/python/pyqt/sip/qtgl/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtgl/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtgl/qgl.sip b/python/pyqt/sip/qtgl/qgl.sip
new file mode 100644
index 00000000..e08b6a95
--- /dev/null
+++ b/python/pyqt/sip/qtgl/qgl.sip
@@ -0,0 +1,298 @@
+// This is the SIP interface definition for QGL, QGLContext, QGLFormat and
+// QGLWidget.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGL</Title>
+<Para>
+<Literal>QGL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLContext</Title>
+<Para>
+<Literal>QGLContext</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLFormat</Title>
+<Para>
+<Literal>QGLFormat</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QGLWidget</Title>
+<Para>
+<Literal>QGLWidget</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_00 -)
+
+const int QGL_VERSION;
+const char *QGL_VERSION_STR;
+
+const char *qGLVersion();
+
+
+class QGL
+{
+%TypeHeaderCode
+#include <qgl.h>
+%End
+
+public:
+ enum FormatOption {
+ DoubleBuffer,
+ DepthBuffer,
+ Rgba,
+ AlphaChannel,
+ AccumBuffer,
+ StencilBuffer,
+ StereoBuffers,
+ DirectRendering,
+ HasOverlay,
+ SingleBuffer,
+ NoDepthBuffer,
+ ColorIndex,
+ NoAlphaChannel,
+ NoAccumBuffer,
+ NoStencilBuffer,
+ NoStereoBuffers,
+ IndirectRendering,
+ NoOverlay
+ };
+};
+
+
+class QGLFormat : QGL
+{
+%TypeHeaderCode
+#include <qgl.h>
+%End
+
+public:
+ QGLFormat();
+ QGLFormat(int,int = 0);
+
+ bool doubleBuffer() const;
+ void setDoubleBuffer(bool);
+ bool depth() const;
+ void setDepth(bool);
+ bool rgba() const;
+ void setRgba(bool);
+ bool alpha() const;
+ void setAlpha(bool);
+ bool accum() const;
+ void setAccum(bool);
+ bool stencil() const;
+ void setStencil(bool);
+ bool stereo() const;
+ void setStereo(bool);
+ bool directRendering() const;
+ void setDirectRendering(bool);
+ bool hasOverlay() const;
+ void setOverlay(bool);
+
+ int plane() const;
+ void setPlane(int);
+
+ void setOption(FormatOption);
+ bool testOption(FormatOption) const;
+
+ static QGLFormat defaultFormat();
+ static void setDefaultFormat(const QGLFormat &);
+
+ static QGLFormat defaultOverlayFormat();
+ static void setDefaultOverlayFormat(const QGLFormat &);
+
+ static bool hasOpenGL();
+ static bool hasOpenGLOverlays();
+};
+
+
+class QGLContext : QGL
+{
+%TypeHeaderCode
+#include <qgl.h>
+%End
+
+public:
+ QGLContext(const QGLFormat &,QPaintDevice *);
+%If (Qt_3_2_0 -)
+ QGLContext(const QGLFormat &);
+%End
+
+ virtual bool create(const QGLContext * = 0);
+ bool isValid() const;
+ bool isSharing() const;
+ virtual void reset();
+
+ QGLFormat format() const;
+%If (Qt_3_0_0 -)
+ QGLFormat requestedFormat() const;
+%End
+ virtual void setFormat(const QGLFormat &);
+
+ virtual void makeCurrent();
+ virtual void swapBuffers() const;
+
+ QPaintDevice *device() const;
+
+ QColor overlayTransparentColor() const;
+
+ static const QGLContext *currentContext();
+
+protected:
+ virtual bool chooseContext(const QGLContext * = 0);
+ virtual void doneCurrent();
+
+%If (WS_X11)
+ virtual void *tryVisual(const QGLFormat &,int = 1);
+ virtual void *chooseVisual();
+%End
+
+ bool deviceIsPixmap() const;
+ bool windowCreated() const;
+ void setWindowCreated(bool);
+ bool initialized() const;
+ void setInitialized(bool);
+%If (Qt_3_1_0 -)
+ void generateFontDisplayLists(const QFont &,int);
+%End
+
+ uint colorIndex(const QColor &) const;
+%If (Qt_3_2_0 -)
+ void setValid(bool);
+ void setDevice(QPaintDevice *);
+%End
+
+private:
+ QGLContext();
+ QGLContext(const QGLContext &);
+};
+
+
+class QGLWidget : QWidget, QGL
+{
+%TypeHeaderCode
+#include <qgl.h>
+%End
+
+public:
+ QGLWidget(QWidget * /TransferThis/ = 0,const char * = 0,
+ const QGLWidget * = 0,WFlags = 0);
+%If (Qt_3_2_0 -)
+ QGLWidget(QGLContext * /Transfer/,QWidget * /TransferThis/ = 0,const char * = 0,
+ const QGLWidget * = 0,WFlags = 0);
+%End
+ QGLWidget(const QGLFormat &,QWidget * /TransferThis/ = 0,
+ const char * = 0,const QGLWidget * = 0,WFlags = 0);
+
+%ConvertToSubClassCode
+ sipClass = (sipCpp->inherits(sipName_QGLWidget) ? sipClass_QGLWidget : NULL);
+%End
+
+ void qglColor(const QColor &) const;
+ void qglClearColor(const QColor &) const;
+
+ bool isValid() const;
+ bool isSharing() const;
+ virtual void makeCurrent();
+%If (Qt_3_2_0 -)
+ void doneCurrent();
+%End
+
+ bool doubleBuffer() const;
+ virtual void swapBuffers();
+
+ QGLFormat format() const;
+
+ const QGLContext *context() const;
+
+ virtual QPixmap renderPixmap(int = 0,int = 0,bool = 0);
+%If (Qt_3_0_0 -)
+ virtual QImage grabFrameBuffer(bool = 0);
+%End
+
+ virtual void makeOverlayCurrent();
+ const QGLContext *overlayContext() const;
+
+ static QImage convertToGLFormat(const QImage &);
+
+ void setMouseTracking(bool);
+
+%If (Qt_3_0_0 -)
+ virtual void reparent(QWidget * /GetWrapper/,WFlags,const QPoint &,
+ bool = 0);
+%MethodCode
+ if (sipCpp -> parent() != a0)
+ if (a0)
+ sipTransferTo(sipSelf,a0Wrapper);
+ else
+ sipTransferBack(sipSelf);
+
+ Py_BEGIN_ALLOW_THREADS
+ sipSelfWasArg ? sipCpp->QGLWidget::reparent(a0, a1, *a2, a3) : sipCpp->reparent(a0, a1, *a2, a3);
+ Py_END_ALLOW_THREADS
+%End
+
+ const QGLColormap &colormap() const;
+ void setColormap(const QGLColormap &);
+%End
+
+%If (Qt_3_1_0 -)
+ void renderText(int,int,const QString &,const QFont & = QFont(),
+ int = 2000);
+ void renderText(double,double,double,const QString &,
+ const QFont & = QFont(),int = 2000);
+%End
+
+public slots:
+ virtual void updateGL();
+ virtual void updateOverlayGL();
+
+protected:
+ virtual void initializeGL();
+ virtual void resizeGL(int,int);
+ virtual void paintGL();
+
+ virtual void initializeOverlayGL();
+ virtual void resizeOverlayGL(int,int);
+ virtual void paintOverlayGL();
+
+ void setAutoBufferSwap(bool);
+ bool autoBufferSwap() const;
+
+ void paintEvent(QPaintEvent *);
+ void resizeEvent(QResizeEvent *);
+
+ virtual void glInit();
+ virtual void glDraw();
+
+private:
+ QGLWidget(const QGLWidget &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtgl/qglcolormap.sip b/python/pyqt/sip/qtgl/qglcolormap.sip
new file mode 100644
index 00000000..512897e8
--- /dev/null
+++ b/python/pyqt/sip/qtgl/qglcolormap.sip
@@ -0,0 +1,63 @@
+// This is the SIP interface definition for QGLColormap.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QGLColormap (Qt v3.0+)</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>setEntries</Function></FuncDef>
+ <ParamDef>int <Parameter>count</Parameter></ParamDef>
+ <ParamDef>const QRgb *<Parameter>colors</Parameter></ParamDef>
+ <ParamDef>int <Parameter>base</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QGLColormap
+{
+%TypeHeaderCode
+#include <qglcolormap.h>
+%End
+
+public:
+ QGLColormap();
+ QGLColormap(const QGLColormap &);
+
+ bool isEmpty() const;
+ int size() const;
+ void detach();
+
+// void setEntries(int,const QRgb *,int = 0);
+ void setEntry(int,QRgb);
+ void setEntry(int,const QColor &);
+ QRgb entryRgb(int) const;
+ QColor entryColor(int) const;
+ int find(QRgb) const;
+ int findNearest(QRgb) const;
+};
+
+%End
diff --git a/python/pyqt/sip/qtgl/qtglmod.sip b/python/pyqt/sip/qtgl/qtglmod.sip
new file mode 100644
index 00000000..2d6a0181
--- /dev/null
+++ b/python/pyqt/sip/qtgl/qtglmod.sip
@@ -0,0 +1,71 @@
+// This is the SIP interface definition for the qtgl module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtgl 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qgl.sip
+%Include qglcolormap.sip
+
+
+// The build file template.
+
+%Makefile qtgl.pro.in
+# The project file for the qtgl module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ opengl @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtnetwork/copying.sip b/python/pyqt/sip/qtnetwork/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtnetwork/qdns.sip b/python/pyqt/sip/qtnetwork/qdns.sip
new file mode 100644
index 00000000..b91bb9fc
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qdns.sip
@@ -0,0 +1,274 @@
+// This is the SIP interface definition for QDns.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDns (Qt v2.2+)</Title>
+<Para>
+<Literal>QDns</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_DNS)
+%If (Qt_2_2_0 -)
+
+class QDns : QObject
+{
+%TypeHeaderCode
+#include <qdns.h>
+%End
+
+public:
+ enum RecordType {
+ None,
+ A,
+ Aaaa,
+ Mx,
+ Srv,
+ Cname,
+ Ptr,
+ Txt
+ };
+
+ QDns();
+ QDns(const QString &,RecordType = A);
+ QDns(const QHostAddress &,RecordType = A);
+
+ virtual void setLabel(const QString &);
+ virtual void setLabel(const QHostAddress &);
+ QString label() const;
+
+ virtual void setRecordType(RecordType = A);
+ RecordType recordType() const;
+
+ bool isWorking() const;
+
+ QValueList<QHostAddress> addresses() const;
+
+ class MailServer
+ {
+ public:
+ MailServer(const QString & = QString::null,Q_UINT16 = 0);
+
+ QString name;
+ Q_UINT16 priority;
+ };
+
+ QValueList<QDns::MailServer> mailServers() const;
+
+ class Server
+ {
+ public:
+ Server(const QString & = QString::null,Q_UINT16 = 0,
+ Q_UINT16 = 0,Q_UINT16 = 0);
+
+ QString name;
+ Q_UINT16 priority;
+ Q_UINT16 weight;
+ Q_UINT16 port;
+ };
+
+ QValueList<QDns::Server> servers() const;
+
+ QStringList hostNames() const;
+
+ QStringList texts() const;
+
+ QString canonicalName() const;
+
+ QStringList qualifiedNames() const;
+
+signals:
+ void resultsReady();
+};
+
+
+%MappedType QValueList<QHostAddress>
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of QHostAddress instances.
+
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+ QValueListConstIterator<QHostAddress> it;
+
+ for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *tmobj;
+
+ if ((tmobj = sipConvertFromNewInstance(new QHostAddress(*it),sipClass_QHostAddress,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0)
+ {
+ Py_XDECREF(tmobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // At the moment this will never be called, so provide a null
+ // implementation.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ PyErr_Format(PyExc_TypeError,"Converting to QValueList<QHostAddress> not yet implemented");
+
+ *sipIsErr = 1;
+
+ return 0;
+%End
+};
+
+
+%MappedType QValueList<QDns::MailServer>
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of QDns::MailServer instances.
+
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+ QValueListConstIterator<QDns::MailServer> it;
+
+ for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *tmobj;
+
+ if ((tmobj = sipConvertFromNewInstance(new QDns::MailServer(*it),sipClass_QDns_MailServer,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0)
+ {
+ Py_XDECREF(tmobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // At the moment this will never be called, so provide a null
+ // implementation.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ PyErr_Format(PyExc_TypeError,"Converting to QValueList<QDns::MailServer> not yet implemented");
+
+ *sipIsErr = 1;
+
+ return 0;
+%End
+};
+
+
+%MappedType QValueList<QDns::Server>
+{
+%TypeHeaderCode
+#include <qvaluelist.h>
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of QDns::Server instances.
+
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+ QValueListConstIterator<QDns::Server> it;
+
+ for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *tmobj;
+
+ if ((tmobj = sipConvertFromNewInstance(new QDns::Server(*it),sipClass_QDns_Server,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0)
+ {
+ Py_XDECREF(tmobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ // At the moment this will never be called, so provide a null
+ // implementation.
+
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+ PyErr_Format(PyExc_TypeError,"Converting to QValueList<QDns::Server> not yet implemented");
+
+ *sipIsErr = 1;
+
+ return 0;
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qtnetwork/qftp.sip b/python/pyqt/sip/qtnetwork/qftp.sip
new file mode 100644
index 00000000..f79ecc12
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qftp.sip
@@ -0,0 +1,183 @@
+// This is the SIP interface definition for QFtp.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QFtp (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL_FTP)
+%If (Qt_2_2_0 -)
+
+class QFtp : QNetworkProtocol
+{
+%TypeHeaderCode
+#include <qftp.h>
+%End
+
+public:
+ QFtp();
+%If (Qt_3_1_0 -)
+ QFtp(QObject * /TransferThis/,const char * = 0);
+%End
+ virtual ~QFtp();
+
+%If (Qt_3_0_0 -)
+ int supportedOperations() const;
+%End
+%If (- Qt_3_0_0)
+ virtual int supportedOperations() const;
+%End
+
+%If (Qt_3_1_0 -)
+ enum State {
+ Unconnected,
+ HostLookup,
+ Connecting,
+ Connected,
+ LoggedIn,
+ Closing
+ };
+
+ enum Error {
+ NoError,
+ UnknownError,
+ HostNotFound,
+ ConnectionRefused,
+ NotConnected
+ };
+
+ enum Command {
+ None,
+ ConnectToHost,
+ Login,
+ Close,
+ List,
+ Cd,
+ Get,
+ Put,
+ Remove,
+ Mkdir,
+ Rmdir,
+ Rename,
+ RawCommand
+ };
+
+ int connectToHost(const QString &,Q_UINT16 = 21) /ReleaseGIL/;
+ int login(const QString & = QString::null,
+ const QString & = QString::null) /ReleaseGIL/;
+ int close() /ReleaseGIL/;
+ int list(const QString & = QString::null) /ReleaseGIL/;
+ int cd(const QString &) /ReleaseGIL/;
+ int get(const QString &,QIODevice * = 0) /ReleaseGIL/;
+ int put(const QByteArray &,const QString &) /ReleaseGIL/;
+ int put(QIODevice *,const QString &) /ReleaseGIL/;
+ int remove(const QString &) /ReleaseGIL/;
+ int mkdir(const QString &) /ReleaseGIL/;
+ int rmdir(const QString &) /ReleaseGIL/;
+ int rename(const QString &,const QString &) /ReleaseGIL/;
+
+ int rawCommand(const QString &) /ReleaseGIL/;
+
+ unsigned long bytesAvailable() const;
+
+ SIP_PYOBJECT readBlock(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> QFtp::readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+ QByteArray readAll() /ReleaseGIL/;
+
+ int currentId() const;
+ QIODevice* currentDevice() const;
+ Command currentCommand() const;
+ bool hasPendingCommands() const;
+ void clearPendingCommands();
+
+ State state() const;
+
+ Error error() const;
+ QString errorString() const;
+%End
+
+public slots:
+%If (Qt_3_1_0 -)
+ void abort();
+%End
+
+signals:
+%If (Qt_3_1_0 -)
+ void stateChanged(int);
+ void listInfo(const QUrlInfo &);
+ void readyRead();
+ void dataTransferProgress(int,int);
+ void rawCommandReply(int,const QString &);
+
+ void commandStarted(int);
+ void commandFinished(int,bool);
+ void done(bool);
+%End
+
+protected:
+ void parseDir(const QString &,QUrlInfo &);
+ virtual void operationListChildren(QNetworkOperation *);
+ virtual void operationMkDir(QNetworkOperation *);
+ virtual void operationRemove(QNetworkOperation *);
+ virtual void operationRename(QNetworkOperation *);
+ virtual void operationGet(QNetworkOperation *);
+ virtual void operationPut(QNetworkOperation *);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qtnetwork/qhostaddress.sip b/python/pyqt/sip/qtnetwork/qhostaddress.sip
new file mode 100644
index 00000000..e2379e2c
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qhostaddress.sip
@@ -0,0 +1,99 @@
+// This is the SIP interface definition for QHostAddress.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHostAddress (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QHostAddress</Function></FuncDef>
+ <ParamDef>Q_UINT8 *<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef><Function>QHostAddress</Function></FuncDef>
+ <ParamDef>const Q_IPV6ADDR &amp;<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>setAddress</Function></FuncDef>
+ <ParamDef>Q_UINT8 *<Parameter>ip6Addr</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_IPV6ADDR <Function>toIPv6Address</Function> const</FuncDef>
+ <ParamDef><Parameter></Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+class QHostAddress
+{
+%TypeHeaderCode
+#include <qhostaddress.h>
+%End
+
+public:
+ QHostAddress();
+ QHostAddress(Q_UINT32);
+// QHostAddress(Q_UINT8 *);
+%If (Qt_3_3_0 -)
+ //QHostAddress(const Q_IPV6ADDR &);
+ // This isn't mentioned in the documentation.
+ //QHostAddress(const QString &);
+%End
+ QHostAddress(const QHostAddress &);
+
+ void setAddress(Q_UINT32);
+// void setAddress(Q_UINT8 *);
+ bool setAddress(const QString &);
+ bool isIp4Addr() const;
+ Q_UINT32 ip4Addr() const;
+
+%If (Qt_3_3_0 -)
+ bool isIPv4Address() const;
+ Q_UINT32 toIPv4Address() const;
+ bool isIPv6Address() const;
+ //Q_IPV6ADDR toIPv6Address() const;
+%End
+
+ QString toString() const;
+
+%If (Qt_3_2_0 -)
+ bool isNull() const;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtnetwork/qhttp.sip b/python/pyqt/sip/qtnetwork/qhttp.sip
new file mode 100644
index 00000000..fbcc9999
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qhttp.sip
@@ -0,0 +1,279 @@
+// This is the SIP interface definition for QHttp, QHttpHeader,
+// QHttpRequestHeader and QHttpResponseHeader.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QHttp (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpRequestHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpRequestHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QHttpResponseHeader (Qt v3.1+)</Title>
+<Para>
+<Literal>QHttpResponseHeader</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL_HTTP)
+%If (Qt_3_1_0 -)
+
+class QHttpHeader
+{
+%TypeHeaderCode
+#include <qhttp.h>
+%End
+
+public:
+ QHttpHeader();
+ QHttpHeader(const QHttpHeader &);
+ QHttpHeader(const QString &);
+ virtual ~QHttpHeader();
+
+ QString value(const QString &) const;
+ void setValue(const QString &,const QString &);
+ void removeValue(const QString &);
+
+ QStringList keys() const;
+ bool hasKey(const QString &) const;
+
+ bool hasContentLength() const;
+ uint contentLength() const;
+ void setContentLength(int);
+
+ bool hasContentType() const;
+ QString contentType() const;
+ void setContentType(const QString &);
+
+ virtual QString toString() const;
+ bool isValid() const;
+
+ virtual int majorVersion() const = 0;
+ virtual int minorVersion() const = 0;
+
+protected:
+ virtual bool parseLine(const QString &,int);
+ bool parse(const QString &);
+ void setValid(bool);
+};
+
+
+class QHttpResponseHeader : QHttpHeader
+{
+%TypeHeaderCode
+#include <qhttp.h>
+%End
+
+public:
+ QHttpResponseHeader();
+ QHttpResponseHeader(const QHttpResponseHeader &);
+
+ int statusCode() const;
+ QString reasonPhrase() const;
+
+ int majorVersion() const;
+ int minorVersion() const;
+
+ QString toString() const;
+
+protected:
+ bool parseLine(const QString &,int);
+};
+
+
+class QHttpRequestHeader : QHttpHeader
+{
+%TypeHeaderCode
+#include <qhttp.h>
+%End
+
+public:
+ QHttpRequestHeader();
+ QHttpRequestHeader(const QString &,const QString &,int = 1,int = 1);
+ QHttpRequestHeader(const QHttpRequestHeader &);
+ QHttpRequestHeader(const QString &);
+
+ void setRequest(const QString &,const QString &,int = 1,int = 1);
+
+ QString method() const;
+ QString path() const;
+
+ int majorVersion() const;
+ int minorVersion() const;
+
+ QString toString() const;
+
+protected:
+ bool parseLine(const QString &,int);
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QHttp : QNetworkProtocol
+{
+%TypeHeaderCode
+#include <qhttp.h>
+%End
+
+public:
+ QHttp();
+%If (Qt_3_1_0 -)
+ QHttp(QObject * /TransferThis/,const char * = 0);
+ QHttp(const QString &,Q_UINT16 = 80,QObject * /TransferThis/ = 0,
+ const char * = 0);
+ virtual ~QHttp();
+%End
+
+ int supportedOperations() const;
+
+%If (Qt_3_1_0 -)
+ enum State {
+ Unconnected,
+ HostLookup,
+ Connecting,
+ Sending,
+ Reading,
+ Connected,
+ Closing
+ };
+
+ enum Error {
+ NoError,
+ UnknownError,
+ HostNotFound,
+ ConnectionRefused,
+ UnexpectedClose,
+ InvalidResponseHeader,
+ WrongContentLength,
+ Aborted
+ };
+
+ int setHost(const QString &,Q_UINT16 = 80);
+
+ int get(const QString &,QIODevice * = 0) /ReleaseGIL/;
+ int post(const QString &,QIODevice *,QIODevice * = 0) /ReleaseGIL/;
+ int post(const QString &,const QByteArray &,
+ QIODevice * = 0) /ReleaseGIL/;
+ int head(const QString &) /ReleaseGIL/;
+ int request(const QHttpRequestHeader &,QIODevice * = 0,
+ QIODevice * = 0) /ReleaseGIL/;
+ int request(const QHttpRequestHeader &,const QByteArray &,
+ QIODevice * = 0) /ReleaseGIL/;
+
+ int closeConnection();
+
+ unsigned long bytesAvailable() const;
+
+ SIP_PYOBJECT readBlock(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> QHttp::readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+ QByteArray readAll() /ReleaseGIL/;
+
+ int currentId() const;
+ QIODevice *currentSourceDevice() const;
+ QIODevice *currentDestinationDevice() const;
+ QHttpRequestHeader currentRequest() const;
+ bool hasPendingRequests() const;
+ void clearPendingRequests();
+
+ State state() const;
+
+ Error error() const;
+ QString errorString() const;
+%End
+
+public slots:
+%If (Qt_3_1_0 -)
+ void abort();
+%End
+
+signals:
+%If (Qt_3_1_0 -)
+ void stateChanged(int);
+ void responseHeaderReceived(const QHttpResponseHeader &);
+ void readyRead(const QHttpResponseHeader &);
+ void dataSendProgress(int,int);
+ void dataReadProgress(int,int);
+
+ void requestStarted(int);
+ void requestFinished(int,bool);
+ void done(bool);
+%End
+
+protected:
+ void operationGet(QNetworkOperation *);
+ void operationPut(QNetworkOperation *);
+
+%If (Qt_3_1_0 -)
+ void timerEvent(QTimerEvent *);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qtnetwork/qlocalfs.sip b/python/pyqt/sip/qtnetwork/qlocalfs.sip
new file mode 100644
index 00000000..a8b816f1
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qlocalfs.sip
@@ -0,0 +1,56 @@
+// This is the SIP interface definition for QLocalFs.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QLocalFs (Qt v2.1+)</Title>
+<Para>
+<Literal>QLocalFs</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_NETWORKPROTOCOL)
+%If (Qt_2_1_0 -)
+
+class QLocalFs : QNetworkProtocol
+{
+%TypeHeaderCode
+#include <qlocalfs.h>
+%End
+
+public:
+ QLocalFs();
+
+ virtual int supportedOperations() const;
+
+protected:
+ virtual void operationListChildren(QNetworkOperation *);
+ virtual void operationMkDir(QNetworkOperation *);
+ virtual void operationRemove(QNetworkOperation *);
+ virtual void operationRename(QNetworkOperation *);
+ virtual void operationGet(QNetworkOperation *);
+ virtual void operationPut(QNetworkOperation *);
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qtnetwork/qnetwork.sip b/python/pyqt/sip/qtnetwork/qnetwork.sip
new file mode 100644
index 00000000..6b87d4e4
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qnetwork.sip
@@ -0,0 +1,34 @@
+// This is the SIP interface definition for qInitNetworkProtocols.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%If (Qt_NETWORKPROTOCOL)
+%If (Qt_2_2_0 -)
+
+%ModuleHeaderCode
+#include <qglobal.h>
+#include <qnetwork.h>
+%End
+
+void qInitNetworkProtocols();
+
+%End
+%End
diff --git a/python/pyqt/sip/qtnetwork/qserversocket.sip b/python/pyqt/sip/qtnetwork/qserversocket.sip
new file mode 100644
index 00000000..c130969e
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qserversocket.sip
@@ -0,0 +1,70 @@
+// This is the SIP interface definition for QServerSocket.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QServerSocket (Qt v2.2+)</Title>
+<Para>
+<Literal>QServerSocket</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+class QServerSocket : QObject
+{
+%TypeHeaderCode
+#include <qserversocket.h>
+%End
+
+public:
+%If (- Qt_3_0_0)
+ QServerSocket(Q_UINT16,int = 0,QObject * /TransferThis/ = 0,
+ const char * = 0);
+ QServerSocket(const QHostAddress &,Q_UINT16,int = 0,
+ QObject * /TransferThis/ = 0,const char * = 0);
+%End
+%If (Qt_3_0_0 -)
+ QServerSocket(Q_UINT16,int = 1,QObject * /TransferThis/ = 0,
+ const char * = 0);
+ QServerSocket(const QHostAddress &,Q_UINT16,int = 1,
+ QObject * /TransferThis/ = 0,const char * = 0);
+%End
+ QServerSocket(QObject * /TransferThis/ = 0,const char * = 0);
+
+ bool ok() const;
+
+ Q_UINT16 port() const;
+
+ int socket() const;
+ virtual void setSocket(int);
+
+ QHostAddress address() const ;
+
+ virtual void newConnection(int) = 0;
+
+protected:
+ QSocketDevice *socketDevice();
+};
+
+%End
diff --git a/python/pyqt/sip/qtnetwork/qsocket.sip b/python/pyqt/sip/qtnetwork/qsocket.sip
new file mode 100644
index 00000000..1ce9165a
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qsocket.sip
@@ -0,0 +1,348 @@
+// This is the SIP interface definition for QSocket.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSocket (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>Py_None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readLine</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>maxlen</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>maxlen</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>Py_None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+class QSocket : QObject, QIODevice
+{
+%TypeHeaderCode
+#include <qsocket.h>
+%End
+
+public:
+ enum Error {
+ ErrConnectionRefused,
+ ErrHostNotFound,
+ ErrSocketRead
+ };
+
+ QSocket(QObject * /TransferThis/ = 0,const char * = 0);
+
+ enum State {
+ Idle,
+ HostLookup,
+ Connecting,
+%If (Qt_3_0_0 -)
+ Connected,
+%End
+%If (- Qt_3_0_0)
+ Listening,
+%End
+ Closing,
+ Connection
+ };
+
+%ConvertToSubClassCode
+ static struct class_graph {
+ char *name;
+ sipWrapperType **type;
+ int yes, no;
+ } graph[] = {
+ {sipName_QServerSocket, &sipClass_QServerSocket, -1, 1},
+ {sipName_QSocket, &sipClass_QSocket, -1, 2},
+ {sipName_QFtp, &sipClass_QFtp, -1, 3},
+ {sipName_QLocalFs, &sipClass_QLocalFs, -1, 4},
+#if QT_VERSION >= 0x030000
+ {sipName_QHttp, &sipClass_QHttp, -1, 5},
+#else
+ {NULL, NULL, -1, 5},
+#endif
+ {sipName_QDns, &sipClass_QDns, -1, -1},
+ };
+
+ int i = 0;
+
+ sipClass = NULL;
+
+ do
+ {
+ struct class_graph *cg = &graph[i];
+
+ if (cg->name != NULL && sipCpp->inherits(cg->name))
+ {
+ sipClass = *cg->type;
+ i = cg->yes;
+ }
+ else
+ i = cg->no;
+ }
+ while (i >= 0);
+%End
+
+ State state() const;
+
+ int socket() const;
+ virtual void setSocket(int);
+
+%If (Qt_3_0_0 -)
+ QSocketDevice *socketDevice();
+ virtual void setSocketDevice(QSocketDevice *);
+%End
+
+%If (Qt_DNS)
+ virtual void connectToHost(const QString &,Q_UINT16) /ReleaseGIL/;
+%End
+ QString peerName() const;
+
+ bool open(int) /ReleaseGIL/;
+ void close() /ReleaseGIL/;
+ void flush() /ReleaseGIL/;
+%If (Qt_3_0_0 -)
+ Offset size() const;
+ Offset at() const;
+ bool at(Offset);
+%End
+%If (- Qt_3_0_0)
+ uint size() const;
+ int at() const;
+ bool at(int);
+%End
+ bool atEnd() const;
+
+%If (Qt_3_0_0 -)
+ Q_ULONG bytesAvailable() const;
+ Q_ULONG waitForMore(int) const /ReleaseGIL/;
+ //Q_ULONG waitForMore(int,bool *) const /ReleaseGIL/;
+ Q_ULONG bytesToWrite() const;
+%End
+%If (- Qt_3_0_0)
+ int bytesAvailable() const;
+ int waitForMore(int) const /ReleaseGIL/;
+ int bytesToWrite() const;
+%End
+%If (Qt_3_1_0 -)
+ void clearPendingData();
+%End
+
+%If (- Qt_3_0_0)
+ SIP_PYOBJECT readBlock(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QSocket::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+
+ int writeBlock(const char * /Array/,uint /ArraySize/) /ReleaseGIL/;
+
+ SIP_PYOBJECT readLine(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> readLine(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%End
+%If (Qt_3_0_0 -)
+ SIP_PYOBJECT readBlock(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QSocket::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+
+ Q_LONG writeBlock(const char * /Array/,
+ Q_ULONG /ArraySize/) /ReleaseGIL/;
+
+ SIP_PYOBJECT readLine(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipCpp -> readLine(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ sipFree((ANY *)buf);
+
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else
+ {
+ sipRes = PyString_FromStringAndSize(buf,actlen);
+
+ sipFree((ANY *)buf);
+
+ if (sipRes == NULL)
+ sipIsErr = 1;
+ }
+ }
+%End
+%End
+
+ int getch() /ReleaseGIL/;
+ int putch(int) /ReleaseGIL/;
+ int ungetch(int);
+
+ bool canReadLine() const;
+ virtual QString readLine() /ReleaseGIL/;
+
+ Q_UINT16 port() const;
+ Q_UINT16 peerPort() const;
+ QHostAddress address() const;
+ QHostAddress peerAddress() const;
+
+%If (Qt_3_2_0 -)
+ void setReadBufferSize(Q_ULONG);
+ Q_ULONG readBufferSize() const;
+%End
+
+signals:
+ void hostFound();
+ void connected();
+ void connectionClosed();
+ void delayedCloseFinished();
+ void readyRead();
+ void bytesWritten(int);
+ void error(int);
+
+protected:
+%If (- Qt_3_0_0)
+ QSocketDevice *socketDevice();
+%End
+
+private:
+ QSocket(const QSocket &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtnetwork/qsocketdevice.sip b/python/pyqt/sip/qtnetwork/qsocketdevice.sip
new file mode 100644
index 00000000..181f6fc4
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qsocketdevice.sip
@@ -0,0 +1,224 @@
+// This is the SIP interface definition for QSocketDevice.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSocketDevice (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>readBlock</Function></FuncDef>
+ <ParamDef>char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes a single <Literal>len</Literal> parameter. The
+<Literal>data</Literal> is returned if there was no error, otherwise
+<Literal>None</Literal> is returned.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>Q_LONG <Function>writeBlock</Function></FuncDef>
+ <ParamDef>const char *<Parameter>data</Parameter></ParamDef>
+ <ParamDef>Q_ULONG <Parameter>len</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed
+as a parameter.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_2_2_0 -)
+
+class QSocketDevice : QIODevice
+{
+%TypeHeaderCode
+#include <qsocketdevice.h>
+%End
+
+public:
+ enum Type {
+ Stream,
+ Datagram
+ };
+
+%If (Qt_3_3_0 -)
+ enum Protocol {
+ IPv4,
+ IPv6,
+ Unknown
+ };
+%End
+
+ QSocketDevice(Type = Stream);
+%If (Qt_3_3_0 -)
+ QSocketDevice(Type,Protocol,int);
+%End
+ QSocketDevice(int,Type);
+
+ bool isValid() const;
+ Type type() const;
+%If (Qt_3_3_0 -)
+ Protocol protocol() const;
+%End
+
+ int socket() const;
+ virtual void setSocket(int,Type);
+
+ bool open(int) /ReleaseGIL/;
+ void close();
+ void flush() /ReleaseGIL/;
+
+%If (- Qt_3_0_0)
+ uint size() const;
+ int at() const;
+ bool at(int);
+%End
+%If (Qt_3_0_0 -)
+ Offset size() const;
+ Offset at() const;
+ bool at(Offset);
+%End
+ bool atEnd() const;
+
+ bool blocking() const;
+ virtual void setBlocking(bool);
+
+ bool addressReusable() const;
+ virtual void setAddressReusable(bool);
+
+ int receiveBufferSize() const;
+ virtual void setReceiveBufferSize(uint);
+ int sendBufferSize() const;
+ virtual void setSendBufferSize(uint);
+
+ virtual bool connect(const QHostAddress &,Q_UINT16);
+
+ virtual bool bind(const QHostAddress &,Q_UINT16);
+ virtual bool listen(int);
+ virtual int accept();
+
+%If (- Qt_3_0_0)
+ int bytesAvailable() const;
+ int waitForMore(int) const /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ Q_LONG bytesAvailable() const;
+ Q_LONG waitForMore(int) const /ReleaseGIL/;
+%End
+
+%If (- Qt_3_0_0)
+ SIP_PYOBJECT readBlock(uint) /ReleaseGIL/ [int (char *,uint)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ int actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QSocketDevice::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+ int writeBlock(const char * /Array/,uint /ArraySize/) /ReleaseGIL/;
+ virtual int writeBlock(const char * /Array/,uint /ArraySize/,
+ const QHostAddress &,Q_UINT16) /ReleaseGIL/;
+%End
+%If (Qt_3_0_0 -)
+ SIP_PYOBJECT readBlock(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)];
+%MethodCode
+ char *buf;
+
+ if ((buf = (char *)sipMalloc(a0)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ Q_LONG actlen;
+
+ Py_BEGIN_ALLOW_THREADS
+ actlen = sipSelfWasArg ? sipCpp -> QSocketDevice::readBlock(buf,a0) : sipCpp -> readBlock(buf,a0);
+ Py_END_ALLOW_THREADS
+
+ if (actlen < 0)
+ {
+ Py_INCREF(Py_None);
+ sipRes = Py_None;
+ }
+ else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL)
+ sipIsErr = 1;
+
+ sipFree((ANY *)buf);
+ }
+%End
+
+
+ Q_LONG writeBlock(const char * /Array/,
+ Q_ULONG /ArraySize/) /ReleaseGIL/;
+ virtual Q_LONG writeBlock(const char * /Array/,Q_ULONG /ArraySize/,
+ const QHostAddress &,Q_UINT16) /ReleaseGIL/;
+%End
+
+ int getch();
+ int putch(int);
+ int ungetch(int);
+
+ Q_UINT16 port() const;
+ Q_UINT16 peerPort() const;
+ QHostAddress address() const;
+ QHostAddress peerAddress() const;
+
+ enum Error {
+ NoError,
+ AlreadyBound,
+ Inaccessible,
+ NoResources,
+ Bug,
+ Impossible,
+ NoFiles,
+ ConnectionRefused,
+ NetworkFailure,
+ UnknownError
+ };
+
+ Error error() const;
+
+protected:
+ void setError(Error);
+
+private:
+ QSocketDevice(const QSocketDevice &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtnetwork/qtnetworkmod.sip b/python/pyqt/sip/qtnetwork/qtnetworkmod.sip
new file mode 100644
index 00000000..ca580d73
--- /dev/null
+++ b/python/pyqt/sip/qtnetwork/qtnetworkmod.sip
@@ -0,0 +1,78 @@
+// This is the SIP interface definition for the qtnetwork module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtnetwork 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qdns.sip
+%Include qhostaddress.sip
+%Include qftp.sip
+%Include qhttp.sip
+%Include qlocalfs.sip
+%Include qnetwork.sip
+%Include qserversocket.sip
+%Include qsocket.sip
+%Include qsocketdevice.sip
+
+
+// The build file template.
+
+%Makefile qtnetwork.pro.in
+# The project file for the qtnetwork module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtpe/copying.sip b/python/pyqt/sip/qtpe/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtpe/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtpe/qpeapplication.sip b/python/pyqt/sip/qtpe/qpeapplication.sip
new file mode 100644
index 00000000..f71240e8
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeapplication.sip
@@ -0,0 +1,223 @@
+// This is the SIP interface definition for QPEApplication.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class QPEApplication : QApplication
+{
+%TypeHeaderCode
+#include <qpe/qpeapplication.h>
+#include <qwidgetlist.h>
+%End
+
+public:
+ QPEApplication(SIP_PYLIST,Type=GuiClient) [(int &,char **,Type=GuiClient)];
+%MethodCode
+ // The Python interface is a list of argument strings that is
+ // modified.
+
+ int argc;
+ char **argv;
+
+ // Convert the list.
+ if ((argv = pyArgvToC(a0,&argc)) == NULL)
+ sipIsErr = 1;
+ else
+ {
+ // Create it now the arguments are right.
+ int nargc = argc;
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipQPEApplication(nargc,argv,(QApplication::Type)a1);
+ Py_END_ALLOW_THREADS
+
+ // Now modify the original list.
+ updatePyArgv(a0,argc,argv);
+ }
+%End
+
+ ~QPEApplication();
+%MethodCode
+ // See the comments in ~QApplication() to understand what's
+ // being done here.
+
+ QWidgetList *tlw = QApplication::topLevelWidgets();
+ QWidgetListIt it(*tlw);
+ QWidget *w;
+
+ while ((w = it.current()) != 0)
+ {
+ PyObject *sw;
+
+ if ((sw = sipGetWrapper(w,sipClass_QWidget)) != NULL)
+ sipTransferTo(sw,NULL);
+
+ ++it;
+ }
+
+ delete tlw;
+%End
+
+%ConvertToSubClassCode
+ // The table of Python class objects indexed by their names. The table
+ // must be sorted by name.
+
+ static sipStringTypeClassMap map[] = {
+ {sipName_FileSelector, &sipClass_FileSelector},
+ {sipName_MenuButton, &sipClass_MenuButton},
+ {sipName_QPEApplication, &sipClass_QPEApplication},
+ {sipName_QPEMenuBar, &sipClass_QPEMenuBar},
+ {sipName_QPEToolBar, &sipClass_QPEToolBar},
+ };
+
+ sipClass = sipMapStringToClass(sipCpp -> className(),map,
+ sizeof (map)/sizeof (map[0]));
+%End
+
+ static QString qpeDir();
+ static QString documentDir();
+ void applyStyle();
+ static int defaultRotation();
+ static void setDefaultRotation(int);
+ static void grabKeyboard();
+ static void ungrabKeyboard();
+
+ enum StylusMode {
+ LeftOnly,
+ RightOnHold
+ };
+
+ static void setStylusOperation(QWidget *,StylusMode);
+ static StylusMode stylusOperation(QWidget *);
+
+ enum InputMethodHint {
+ Normal,
+ AlwaysOff,
+ AlwaysOn
+ };
+
+ enum screenSaverHint {
+ Disable,
+ DisableLightOff,
+ DisableSuspend,
+ Enable
+ };
+
+ static void setInputMethodHint(QWidget *,InputMethodHint);
+ static InputMethodHint inputMethodHint(QWidget *);
+
+ void showMainWidget(QWidget *,bool = 0);
+ void showMainDocumentWidget(QWidget *,bool = 0);
+
+ static void setKeepRunning();
+ bool keepRunning() const;
+
+ int exec() /PyName=exec_loop, ReleaseGIL,
+ PreHook=__pyQtPreEventLoopHook__,
+ PostHook=__pyQtPostEventLoopHook__/;
+
+signals:
+ void clientMoused();
+ void timeChanged();
+ void clockChanged(bool);
+ void volumeChanged(bool);
+ void appMessage(const QCString &,const QByteArray &);
+ void weekChanged(bool);
+ void dateFormatChanged(DateFormat);
+ void flush();
+ void reload();
+
+protected:
+// bool qwsEventFilter(QWSEvent *);
+// void internalSetStyle(const QString &);
+ void prepareForTermination(bool);
+ virtual void restart();
+ virtual void shutdown();
+ bool eventFilter(QObject *,QEvent *);
+ void timerEvent(QTimerEvent *);
+ bool keyboardGrabbed() const;
+ bool raiseAppropriateWindow();
+ virtual void tryQuit();
+
+
+%TypeCode
+#include <string.h>
+
+
+// Convert a Python argv list to a conventional C argc count and argv array.
+static char **pyArgvToC(PyObject *argvlist,int *argcp)
+{
+ int argc;
+ char **argv;
+
+ argc = PyList_Size(argvlist);
+
+ // Allocate space for two copies of the argument pointers, plus the
+ // terminating NULL.
+ if ((argv = (char **)sipMalloc(2 * (argc + 1) * sizeof (char *))) == NULL)
+ return NULL;
+
+ // Convert the list.
+ for (int a = 0; a < argc; ++a)
+ {
+ char *arg;
+
+ // Get the argument and allocate memory for it.
+ if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL ||
+ (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL)
+ return NULL;
+
+ // Copy the argument and save a pointer to it.
+ strcpy(argv[a],arg);
+ argv[a + argc + 1] = argv[a];
+ }
+
+ argv[argc + argc + 1] = argv[argc] = NULL;
+
+ *argcp = argc;
+
+ return argv;
+}
+
+
+// Remove arguments from the Python argv list that have been removed from the
+// C argv array.
+static void updatePyArgv(PyObject *argvlist,int argc,char **argv)
+{
+ for (int a = 0, na = 0; a < argc; ++a)
+ {
+ // See if it was removed.
+ if (argv[na] == argv[a + argc + 1])
+ ++na;
+ else
+ PyList_SetSlice(argvlist,na,na + 1,NULL);
+ }
+}
+%End
+
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpeapplnk.sip b/python/pyqt/sip/qtpe/qpeapplnk.sip
new file mode 100644
index 00000000..f817ae50
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeapplnk.sip
@@ -0,0 +1,157 @@
+// This is the SIP interface definition for AppLnk, AppLnkSet, DocLnk and
+// DocLnkSet.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class AppLnk
+{
+%TypeHeaderCode
+#include <qpe/applnk.h>
+%End
+
+public:
+ AppLnk();
+ AppLnk(const QString &);
+ AppLnk(const AppLnk &);
+
+ bool isValid() const;
+
+ static void setSmallIconSize(int);
+ static void setBigIconSize(int);
+ static int smallIconSize();
+ static int bigIconSize();
+
+ QString name() const;
+ const QPixmap& pixmap() const;
+ const QPixmap& bigPixmap() const;
+ virtual QString exec() const /PyName=exec_property/;
+ QString type() const;
+ QString rotation() const;
+ QString comment() const;
+ QString file() const;
+ QString linkFile() const;
+ QStringList mimeTypes() const;
+ QStringList mimeTypeIcons() const;
+ const QArray<int> &categories() const;
+ int id() const;
+
+ bool fileKnown() const;
+ bool linkFileKnown() const;
+
+ void execute() const /ReleaseGIL/;
+ void execute(const QStringList &) const /ReleaseGIL/;
+ void removeFiles();
+ void removeLinkFile();
+
+ void setName(const QString &);
+ void setExec(const QString &);
+ void setFile(const QString &);
+ void setLinkFile(const QString &);
+ void setComment(const QString &);
+ void setType(const QString &);
+ void setIcon(const QString &);
+ void setCategories(const QArray<int> &);
+ bool writeLink() const;
+
+ void setProperty(const QString &,const QString &);
+ QString property(const QString &) const;
+
+protected:
+ virtual void invoke(const QStringList &) const;
+ bool ensureLinkExists() const;
+// Undocumented and missing on the Zaurus.
+// void storeLink() const;
+};
+
+
+class DocLnk : AppLnk
+{
+%TypeHeaderCode
+#include <qpe/applnk.h>
+%End
+
+public:
+ DocLnk();
+ DocLnk(const DocLnk &);
+ DocLnk(const QString &);
+ DocLnk(const QString &,bool);
+
+ QString exec() const /PyName=exec_property/;
+
+protected:
+ void invoke(const QStringList &) const;
+};
+
+
+class AppLnkSet
+{
+%TypeHeaderCode
+#include <qpe/applnk.h>
+%End
+
+public:
+ AppLnkSet();
+ AppLnkSet(const QString &);
+
+ const AppLnk *find(int) const;
+ const AppLnk *findExec(const QString &) const;
+
+ QStringList types() const;
+ QString typeName(const QString &) const;
+ QPixmap typePixmap(const QString &) const;
+ QPixmap typeBigPixmap(const QString &) const;
+
+ void add(AppLnk *);
+ bool remove(AppLnk *);
+
+ const QList<AppLnk> &children() const;
+ void detachChildren();
+
+private:
+ AppLnkSet(const AppLnkSet &);
+};
+
+
+class DocLnkSet : AppLnkSet
+{
+%TypeHeaderCode
+#include <qpe/applnk.h>
+%End
+
+public:
+ DocLnkSet();
+ DocLnkSet(const QString &,const QString & = QString::null);
+
+ const QList<DocLnk> &children() const;
+
+ void appendFrom(DocLnkSet &);
+
+private:
+ DocLnkSet(const DocLnkSet &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpeconfig.sip b/python/pyqt/sip/qtpe/qpeconfig.sip
new file mode 100644
index 00000000..a8f78d77
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeconfig.sip
@@ -0,0 +1,78 @@
+// This is the SIP interface definition for Config.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class Config
+{
+%TypeHeaderCode
+#include <qpe/config.h>
+%End
+
+public:
+ typedef QMap<QString,QString> ConfigGroup;
+
+ enum Domain {
+ File,
+ User
+ };
+
+ Config(const QString &,Domain = User);
+
+ bool isValid() const;
+ bool hasKey(const QString &) const;
+
+ void setGroup(const QString &);
+// void writeEntry(const QString &,const char *);
+ void writeEntry(const QString &,const QString &);
+ void writeEntryCrypt(const QString &,const QString &);
+ void writeEntry(const QString &,int);
+// void writeEntry(const QString &,bool);
+ void writeEntry(const QString &,const QStringList &,const QChar &);
+ void removeEntry(const QString &);
+
+ QString readEntry(const QString &,
+ const QString & = QString::null) const;
+ QString readEntryCrypt(const QString &,
+ const QString & = QString::null) const;
+ QString readEntryDirect(const QString &,
+ const QString & = QString::null) const;
+ int readNumEntry(const QString &,int = -1) const;
+ bool readBoolEntry(const QString &,bool = 0) const;
+ QStringList readListEntry(const QString &,const QChar &) const;
+
+ void clearGroup();
+
+ void write(const QString & = QString::null);
+
+protected:
+// void read();
+// bool parse(const QString &);
+
+// static QString configFilename(const QString &,Domain);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpefilemanager.sip b/python/pyqt/sip/qtpe/qpefilemanager.sip
new file mode 100644
index 00000000..d917980f
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpefilemanager.sip
@@ -0,0 +1,53 @@
+// This is the SIP interface definition for FileManager.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class FileManager
+{
+%TypeHeaderCode
+#include <qpe/filemanager.h>
+%End
+
+public:
+ FileManager();
+
+ bool saveFile(const DocLnk &,const QByteArray &);
+ bool saveFile(const DocLnk &,const QString &);
+ bool loadFile(const DocLnk &,QByteArray &);
+ bool loadFile(const DocLnk &,QString &);
+ bool copyFile(const AppLnk &,const AppLnk &);
+
+ QIODevice *openFile(const DocLnk &) /ReleaseGIL/;
+ QIODevice *saveFile(const DocLnk &) /ReleaseGIL/;
+
+ bool exists(const DocLnk &);
+
+protected:
+ bool ensurePathExists(const QString &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpefileselector.sip b/python/pyqt/sip/qtpe/qpefileselector.sip
new file mode 100644
index 00000000..cfea0630
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpefileselector.sip
@@ -0,0 +1,69 @@
+// This is the SIP interface definition for FileSelector and FileSelectorItem.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class FileSelectorItem : QListViewItem
+{
+%TypeHeaderCode
+#include <qpe/fileselector.h>
+%End
+
+public:
+ FileSelectorItem(QListView * /TransferThis/,const DocLnk &);
+
+ DocLnk file() const;
+};
+
+
+class FileSelector : QVBox
+{
+%TypeHeaderCode
+#include <qpe/fileselector.h>
+%End
+
+public:
+ FileSelector(const QString &,QWidget * /TransferThis/,const char *,
+ bool = 1,bool = 1);
+
+ void setNewVisible(bool);
+ void setCloseVisible(bool);
+ void reread();
+ int fileCount();
+%If (- QtPE_1_6_0)
+ const DocLnk *selected();
+%End
+%If (QtPE_1_6_0 -)
+ DocLnk selectedDocument();
+%End
+
+signals:
+ void fileSelected(const DocLnk &);
+ void newSelected(const DocLnk &);
+ void closeMe();
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpefontdatabase.sip b/python/pyqt/sip/qtpe/qpefontdatabase.sip
new file mode 100644
index 00000000..2276b5b2
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpefontdatabase.sip
@@ -0,0 +1,67 @@
+// This is the SIP interface definition for FontDatabase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+%If (Qt_FONTDATABASE)
+
+class FontDatabase : QFontDatabase
+{
+%TypeHeaderCode
+#include <qpe/fontdatabase.h>
+%End
+
+public:
+ FontDatabase();
+
+ QStringList families() const;
+
+ static void loadRenderers();
+};
+
+%End
+
+
+%If (!Qt_FONTDATABASE)
+
+class FontDatabase
+{
+%TypeHeaderCode
+#include <qpe/fontdatabase.h>
+%End
+
+public:
+ FontDatabase();
+
+ QStringList families() const;
+ static QValueList<int> standardSizes();
+
+ static void loadRenderers();
+};
+
+%End
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpeglobal.sip b/python/pyqt/sip/qtpe/qpeglobal.sip
new file mode 100644
index 00000000..f5b44828
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeglobal.sip
@@ -0,0 +1,83 @@
+// This is the SIP interface definition for Global.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class Global
+{
+%TypeHeaderCode
+#include <qpe/global.h>
+%End
+
+public:
+ Global();
+
+ static const QDawg &fixedDawg();
+ static const QDawg &addedDawg();
+ static const QDawg &dawg(const QString &);
+
+ static void addWords(const QStringList &);
+ static void addWords(const QString &,const QStringList &);
+
+ static void createDocDir();
+
+ static void findDocuments(DocLnkSet *,const QString & = QString::null);
+
+ static QString applicationFileName(const QString &,const QString &);
+
+// struct Command {
+// const char *file;
+// QWidget *(*func)(bool);
+// bool maximized;
+// bool documentary;
+// };
+
+// static void setBuiltinCommands(Command *);
+
+%If (- QtPE_1_6_0)
+ static void invoke(const QString &);
+%End
+ static void execute(const QString &,const QString & = QString::null) /ReleaseGIL/;
+ static void setDocument(QWidget *,const QString &);
+ static bool terminateBuiltin(const QString &);
+ static void terminate(const AppLnk *);
+
+ static bool isBuiltinCommand(const QString &);
+
+ static void applyStyle();
+ static void statusMessage(const QString &);
+ static QWidget *shutdown(bool = 0);
+ static QWidget *restart(bool = 0);
+ static void hideInputMethod();
+ static void showInputMethod();
+
+ static void writeHWClock();
+
+ static QString shellQuote(const QString &);
+ static QString stringQuote(const QString &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpemenubar.sip b/python/pyqt/sip/qtpe/qpemenubar.sip
new file mode 100644
index 00000000..41648435
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpemenubar.sip
@@ -0,0 +1,42 @@
+// This is the SIP interface definition for QPEMenuBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class QPEMenuBar : QMenuBar
+{
+%TypeHeaderCode
+#include <qpe/qpemenubar.h>
+%End
+
+public:
+ QPEMenuBar(QWidget * /TransferThis/ = 0,const char * = 0);
+
+protected:
+ virtual void keyPressEvent(QKeyEvent *);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpemenubutton.sip b/python/pyqt/sip/qtpe/qpemenubutton.sip
new file mode 100644
index 00000000..ff3a729f
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpemenubutton.sip
@@ -0,0 +1,61 @@
+// This is the SIP interface definition for MenuButton.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class MenuButton : QPushButton
+{
+%TypeHeaderCode
+#include <qpe/menubutton.h>
+%End
+
+public:
+ MenuButton(QWidget * /TransferThis/,const char * = 0);
+ MenuButton(const QStringList &,QWidget * /TransferThis/,
+ const char * = 0);
+
+ void clear();
+
+ int currentItem() const;
+ QString currentText() const;
+
+ void insertItems(const QStringList &);
+ void insertItem(const QIconSet &,const QString & = QString::null);
+ void insertItem(const QString &);
+ void insertSeparator();
+
+ void setLabel(const QString &);
+
+signals:
+ void selected(int);
+ void selected(const QString &);
+
+public slots:
+ void select(int);
+ void select(const QString &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpeqcopenvelope.sip b/python/pyqt/sip/qtpe/qpeqcopenvelope.sip
new file mode 100644
index 00000000..9bbff30f
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeqcopenvelope.sip
@@ -0,0 +1,39 @@
+// This is the SIP interface definition for QCopEnvelope.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class QCopEnvelope : QDataStream
+{
+%TypeHeaderCode
+#include <qpe/qcopenvelope_qws.h>
+%End
+
+public:
+ QCopEnvelope(const QCString &,const QCString &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpeqdawg.sip b/python/pyqt/sip/qtpe/qpeqdawg.sip
new file mode 100644
index 00000000..f04d6425
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpeqdawg.sip
@@ -0,0 +1,65 @@
+// This is the SIP interface definition for QDawg.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class QDawg
+{
+%TypeHeaderCode
+#include <qpe/qdawg.h>
+%End
+
+public:
+ QDawg();
+
+ bool readFile(const QString &) /ReleaseGIL/;
+ bool read(QIODevice *) /ReleaseGIL/;
+ bool write(QIODevice *) const /ReleaseGIL/;
+ bool createFromWords(QIODevice *);
+ void createFromWords(const QStringList &);
+ QStringList allWords() const;
+
+ bool contains(const QString &) const;
+ int countWords() const;
+
+ class Node {
+ public:
+ QChar letter() const;
+ bool isWord() const;
+ bool isLast() const;
+ const QDawg::Node *next() const;
+ const QDawg::Node *jump() const;
+
+ private:
+ Node();
+ };
+
+ const QDawg::Node *root() const;
+
+ void dump() const;
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qperesource.sip b/python/pyqt/sip/qtpe/qperesource.sip
new file mode 100644
index 00000000..de094b0f
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qperesource.sip
@@ -0,0 +1,50 @@
+// This is the SIP interface definition for Resource.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class Resource
+{
+%TypeHeaderCode
+#include <qpe/resource.h>
+%End
+
+public:
+ Resource();
+
+ static QImage loadImage(const QString &);
+
+ static QPixmap loadPixmap(const QString &);
+ static QBitmap loadBitmap(const QString &);
+ static QString findPixmap(const QString &);
+
+ static QIconSet loadIconSet(const QString &);
+
+ static QString findSound(const QString &);
+ static QStringList allSounds();
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpetimestring.sip b/python/pyqt/sip/qtpe/qpetimestring.sip
new file mode 100644
index 00000000..4df6a4f7
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpetimestring.sip
@@ -0,0 +1,71 @@
+// This is the SIP interface definition for DateFormat.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class DateFormat
+{
+%TypeHeaderCode
+#include <qpe/timestring.h>
+%End
+
+public:
+ enum Order {
+ DayMonthYear,
+ MonthDayYear,
+ YearMonthDay
+ };
+
+ DateFormat(QChar = '/',Order = MonthDayYear);
+ DateFormat(QChar,Order,Order);
+ DateFormat(const DateFormat &);
+
+ enum Verbosity {
+ shortNumber,
+ longNumber,
+ padNumber,
+ shortWord,
+ longWord,
+ showWeekDay
+ };
+
+ QString toNumberString() const;
+ QString toWordString() const;
+
+ QString numberDate(const QDate &,int = 0) const;
+ QString wordDate(const QDate &,int = 0) const;
+
+%If (Qt_DATASTREAM)
+ void load(QDataStream &);
+ void save(QDataStream &) const;
+%End
+
+ QChar separator() const;
+ Order shortOrder() const;
+ Order longOrder() const;
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qpetoolbar.sip b/python/pyqt/sip/qtpe/qpetoolbar.sip
new file mode 100644
index 00000000..1d503ea9
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qpetoolbar.sip
@@ -0,0 +1,42 @@
+// This is the SIP interface definition for QPEToolBar.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+// The documentation is in the main documentation file because SIP isn't clever
+// enough to handle the resulting %Timeline complexity.
+
+
+%If (WS_QWS)
+
+class QPEToolBar : QToolBar
+{
+%TypeHeaderCode
+#include <qpe/qpetoolbar.h>
+%End
+
+public:
+ QPEToolBar(QMainWindow * /TransferThis/ = 0,const char * = 0);
+
+protected:
+ virtual void childEvent(QChildEvent *);
+};
+
+%End
diff --git a/python/pyqt/sip/qtpe/qtpemod.sip b/python/pyqt/sip/qtpe/qtpemod.sip
new file mode 100644
index 00000000..3194a03d
--- /dev/null
+++ b/python/pyqt/sip/qtpe/qtpemod.sip
@@ -0,0 +1,94 @@
+// This is the SIP interface definition for the qtpe module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtpe 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+// QPE has it's own version numbering.
+%Timeline {QtPE_1_5_0 QtPE_1_6_0}
+
+
+%ModuleHeaderCode
+#include <qpe/version.h>
+%End
+
+const char *QPE_VERSION;
+
+
+%Include qpeapplication.sip
+%Include qpeapplnk.sip
+%Include qpeconfig.sip
+%Include qpefilemanager.sip
+%Include qpefileselector.sip
+%Include qpefontdatabase.sip
+%Include qpeglobal.sip
+%Include qpemenubar.sip
+%Include qpemenubutton.sip
+%Include qpeqcopenvelope.sip
+%Include qpeqdawg.sip
+%Include qperesource.sip
+%Include qpetimestring.sip
+%Include qpetoolbar.sip
+
+
+// The build file template.
+
+%Makefile qtpe.pro.in
+# The project file for the qtpe module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@ -lqpe
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtsql/copying.sip b/python/pyqt/sip/qtsql/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtsql/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtsql/qdatabrowser.sip b/python/pyqt/sip/qtsql/qdatabrowser.sip
new file mode 100644
index 00000000..ff2e4d83
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qdatabrowser.sip
@@ -0,0 +1,150 @@
+// This is the SIP interface definition for QDataBrowser.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDataBrowser (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual void <Function>del</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delOnCursor</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDataBrowser : QWidget
+{
+%TypeHeaderCode
+#include <qdatabrowser.h>
+%End
+
+public:
+ QDataBrowser(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ enum Boundary {
+ Unknown,
+ None,
+ BeforeBeginning,
+ Beginning,
+ End,
+ AfterEnd
+ };
+
+ Boundary boundary();
+ void setBoundaryChecking(bool);
+ bool boundaryChecking() const;
+
+ void setSort(const QSqlIndex &);
+ void setSort(const QStringList &);
+ QStringList sort() const;
+ void setFilter(const QString &);
+ QString filter() const;
+
+ virtual void setSqlCursor(QSqlCursor * /GetWrapper/,bool = 0);
+%MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipSelfWasArg ? sipCpp->QDataBrowser::setSqlCursor(a0, a1) : sipCpp->setSqlCursor(a0, a1);
+ Py_END_ALLOW_THREADS
+
+ // Transfer ownership of the cursor if the autoDelete flag is
+ // set.
+ if (a0 && a1)
+ sipTransferTo(a0Wrapper,sipSelf);
+%End
+
+ QSqlCursor* sqlCursor() const;
+ virtual void setForm(QSqlForm *);
+ QSqlForm* form();
+
+ virtual void setConfirmEdits(bool);
+ virtual void setConfirmInsert(bool);
+ virtual void setConfirmUpdate(bool);
+ virtual void setConfirmDelete(bool);
+ virtual void setConfirmCancels(bool);
+ bool confirmEdits() const;
+ bool confirmInsert() const;
+ bool confirmUpdate() const;
+ bool confirmDelete() const;
+ bool confirmCancels() const;
+
+ virtual void setReadOnly(bool);
+ bool isReadOnly() const;
+ virtual void setAutoEdit(bool);
+ bool autoEdit() const;
+
+ virtual bool seek(int,bool = 0) /ReleaseGIL/;
+
+signals:
+ void firstRecordAvailable(bool);
+ void lastRecordAvailable(bool);
+ void nextRecordAvailable(bool);
+ void prevRecordAvailable(bool);
+
+ void currentChanged(const QSqlRecord *);
+ void primeInsert(QSqlRecord *);
+ void primeUpdate(QSqlRecord *);
+ void primeDelete(QSqlRecord *);
+ void beforeInsert(QSqlRecord *);
+ void beforeUpdate(QSqlRecord *);
+ void beforeDelete(QSqlRecord *);
+ void cursorChanged(QSqlCursor::Mode);
+
+public slots:
+ virtual void refresh();
+
+ virtual void insert() /ReleaseGIL/;
+ virtual void update() /ReleaseGIL/;
+ virtual void del() /PyName=delOnCursor, ReleaseGIL/;
+
+ virtual void first() /ReleaseGIL/;
+ virtual void last() /ReleaseGIL/;
+ virtual void next() /ReleaseGIL/;
+ virtual void prev() /ReleaseGIL/;
+
+ virtual void readFields();
+ virtual void writeFields();
+ virtual void clearValues();
+
+ void updateBoundary();
+
+protected:
+ virtual bool insertCurrent() /ReleaseGIL/;
+ virtual bool updateCurrent() /ReleaseGIL/;
+ virtual bool deleteCurrent() /ReleaseGIL/;
+ virtual bool currentEdited();
+
+ virtual QSql::Confirm confirmEdit(QSql::Op) /ReleaseGIL/;
+ virtual QSql::Confirm confirmCancel(QSql::Op) /ReleaseGIL/;
+
+ virtual void handleError(const QSqlError &) /ReleaseGIL/;
+
+private:
+%If (Qt_3_1_0 -)
+ QDataBrowser(const QDataBrowser &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qdatatable.sip b/python/pyqt/sip/qtsql/qdatatable.sip
new file mode 100644
index 00000000..bcb02908
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qdatatable.sip
@@ -0,0 +1,201 @@
+// This is the SIP interface definition for QDataTable.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDataTable (Qt v3+)</Title>
+<Para>
+<Literal>QDataTable</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDataTable : QTable
+{
+%TypeHeaderCode
+#include <qdatatable.h>
+%End
+
+public:
+ QDataTable(QWidget* /TransferThis/ = 0,const char * = 0);
+ QDataTable(QSqlCursor *,bool = 0,QWidget * /TransferThis/ = 0,
+ const char * = 0);
+
+ virtual void addColumn(const QString &,const QString & = QString::null,
+ int = -1,const QIconSet & = QIconSet());
+ virtual void removeColumn(uint);
+ virtual void setColumn(uint,const QString &,
+ const QString & = QString::null,int = -1,
+ const QIconSet & = QIconSet());
+
+ QString nullText() const;
+ QString trueText() const;
+ QString falseText() const;
+ DateFormat dateFormat() const;
+ bool confirmEdits() const;
+ bool confirmInsert() const;
+ bool confirmUpdate() const;
+ bool confirmDelete() const;
+ bool confirmCancels() const;
+ bool autoDelete() const;
+ bool autoEdit() const;
+ QString filter() const;
+ QStringList sort() const;
+
+ virtual void setSqlCursor(QSqlCursor * /GetWrapper/ = 0,bool = 0,bool = 0);
+%MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipSelfWasArg ? sipCpp->QDataTable::setSqlCursor(a0, a1, a2) : sipCpp->setSqlCursor(a0, a1, a2);
+ Py_END_ALLOW_THREADS
+
+ // Transfer ownership of the cursor if the autoDelete flag is
+ // set.
+ if (a0 && a2)
+ sipTransferTo(a0Wrapper,sipSelf);
+%End
+
+ QSqlCursor *sqlCursor() const;
+
+ virtual void setNullText(const QString &);
+ virtual void setTrueText(const QString &);
+ virtual void setFalseText(const QString &);
+ virtual void setDateFormat(const DateFormat);
+ virtual void setConfirmEdits(bool);
+ virtual void setConfirmInsert(bool);
+ virtual void setConfirmUpdate(bool);
+ virtual void setConfirmDelete(bool);
+ virtual void setConfirmCancels(bool);
+ virtual void setAutoDelete(bool);
+ virtual void setAutoEdit(bool);
+ virtual void setFilter(const QString &);
+ virtual void setSort(const QStringList &);
+ virtual void setSort(const QSqlIndex &);
+
+ enum Refresh {
+ RefreshData,
+ RefreshColumns,
+ RefreshAll
+ };
+
+ void refresh(Refresh);
+ void sortColumn(int,bool = 1,bool = 0);
+ QString text(int,int) const;
+ QVariant value(int,int) const;
+ QSqlRecord *currentRecord() const;
+
+ void installEditorFactory(QSqlEditorFactory * /Transfer/);
+ void installPropertyMap(QSqlPropertyMap * /Transfer/);
+
+ int numCols() const;
+ int numRows() const;
+ void setNumCols(int);
+ void setNumRows(int);
+ bool findBuffer(const QSqlIndex &,int = 0);
+
+%If (Qt_3_2_0 -)
+ void hideColumn(int);
+ void showColumn(int);
+%End
+
+signals:
+ void currentChanged(QSqlRecord *);
+ void primeInsert(QSqlRecord *);
+ void primeUpdate(QSqlRecord *);
+ void primeDelete(QSqlRecord *);
+ void beforeInsert(QSqlRecord *);
+ void beforeUpdate(QSqlRecord *);
+ void beforeDelete(QSqlRecord *);
+ void cursorChanged(QSql::Op);
+
+public slots:
+ virtual void find(const QString &,bool,bool);
+ virtual void sortAscending(int);
+ virtual void sortDescending(int);
+ virtual void refresh();
+ void setColumnWidth(int,int);
+%If (Qt_3_0_5 -)
+ void adjustColumn(int);
+ void setColumnStretchable(int,bool);
+%End
+%If (Qt_3_1_0 -)
+ void swapColumns(int,int,bool = 0);
+%End
+
+protected:
+ virtual bool insertCurrent();
+ virtual bool updateCurrent();
+ virtual bool deleteCurrent();
+
+ virtual QSql::Confirm confirmEdit(QSql::Op);
+ virtual QSql::Confirm confirmCancel(QSql::Op);
+
+ virtual void handleError(const QSqlError &);
+
+ virtual bool beginInsert();
+ virtual QWidget *beginUpdate(int,int,bool);
+
+ bool eventFilter(QObject *,QEvent *);
+%If (Qt_3_2_0 -)
+ void keyPressEvent(QKeyEvent *);
+%End
+ void resizeEvent(QResizeEvent *);
+ void contentsMousePressEvent(QMouseEvent *);
+ void contentsContextMenuEvent(QContextMenuEvent *);
+ void endEdit(int,int,bool,bool);
+
+ // We don't specify /Factory/ for this because the returned QWidget
+ // will always have a parent which will own it.
+ QWidget *createEditor(int,int,bool) const;
+
+ void activateNextCell();
+ int indexOf(uint) const;
+ void reset();
+ void setSize(QSqlCursor *);
+ void repaintCell(int,int);
+ void paintCell(QPainter *,int,int,const QRect &,bool,
+ const QColorGroup &);
+ virtual void paintField(QPainter *,const QSqlField *,const QRect &,
+ bool);
+%If (Qt_3_1_0 -)
+ void drawContents(QPainter *,int,int,int,int);
+%End
+ virtual int fieldAlignment(const QSqlField *);
+ void columnClicked(int);
+ void resizeData(int);
+
+ QTableItem *item(int,int) const;
+ void setItem(int,int,QTableItem *);
+ void clearCell(int,int);
+ void setPixmap(int,int,const QPixmap &);
+ void takeItem(QTableItem *);
+
+private:
+ QWidget *beginEdit(int,int,bool);
+
+%If (Qt_3_1_0 -)
+ QDataTable(const QDataTable &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qdataview.sip b/python/pyqt/sip/qtsql/qdataview.sip
new file mode 100644
index 00000000..e6bb36eb
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qdataview.sip
@@ -0,0 +1,60 @@
+// This is the SIP interface definition for QDataView.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDataView (Qt v3+)</Title>
+<Para>
+<Literal>QDataView</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QDataView : QWidget
+{
+%TypeHeaderCode
+#include <qdataview.h>
+%End
+
+public:
+ QDataView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);
+
+ virtual void setForm(QSqlForm *);
+ QSqlForm *form();
+ virtual void setRecord(QSqlRecord *);
+ QSqlRecord *record();
+
+public slots:
+ virtual void refresh(QSqlRecord *);
+ virtual void readFields();
+ virtual void writeFields();
+ virtual void clearValues();
+
+private:
+%If (Qt_3_1_0 -)
+ QDataView(const QDataView &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qeditorfactory.sip b/python/pyqt/sip/qtsql/qeditorfactory.sip
new file mode 100644
index 00000000..49f932b8
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qeditorfactory.sip
@@ -0,0 +1,55 @@
+// This is the SIP interface definition for QEditorFactory.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QEditorFactory (Qt v3+)</Title>
+<Para>
+<Literal>QEditorFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QEditorFactory : QObject
+{
+%TypeHeaderCode
+#include <qeditorfactory.h>
+%End
+
+public:
+ QEditorFactory(QObject * /TransferThis/ = 0,const char * = 0);
+
+ virtual QWidget *createEditor(QWidget * /TransferThis/,
+ const QVariant &) /Factory/;
+
+ static QEditorFactory *defaultFactory();
+ static void installDefaultFactory(QEditorFactory * /Transfer/);
+
+private:
+%If (Qt_3_1_0 -)
+ QEditorFactory(const QEditorFactory &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsql.sip b/python/pyqt/sip/qtsql/qsql.sip
new file mode 100644
index 00000000..f2df0753
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsql.sip
@@ -0,0 +1,80 @@
+// This is the SIP interface definition for QSql.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSql (Qt v3+)</Title>
+<Para>
+<Literal>QSql</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSql
+{
+%TypeHeaderCode
+#include <qsql.h>
+%End
+
+public:
+ QSql();
+
+ enum Op {
+ None,
+ Insert,
+ Update,
+ Delete
+ };
+
+ enum Location {
+ BeforeFirst,
+ AfterLast
+ };
+
+ enum Confirm {
+ Cancel,
+ No,
+ Yes
+ };
+
+%If (Qt_3_2_0 -)
+ enum ParameterType {
+ In,
+ Out,
+ InOut
+ };
+
+ enum TableType {
+ Tables,
+ SystemTables,
+ Views,
+ AllTables
+ };
+%End
+
+private:
+ QSql(const QSql &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlcursor.sip b/python/pyqt/sip/qtsql/qsqlcursor.sip
new file mode 100644
index 00000000..2e11c1bb
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlcursor.sip
@@ -0,0 +1,148 @@
+// This is the SIP interface definition for QSqlCursor.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlCursor (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>del</Function></FuncDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual int <Function>del</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>filter</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlCursor : QSqlRecord, QSqlQuery
+{
+%TypeHeaderCode
+#include <qsqlcursor.h>
+%End
+
+public:
+ QSqlCursor(const QString & = QString::null,bool = 1,QSqlDatabase * = 0);
+ QSqlCursor(const QSqlCursor &);
+
+ enum Mode {
+ ReadOnly,
+ Insert,
+ Update,
+ Delete,
+ Writable
+ };
+
+ QVariant value(int) const;
+ QVariant value(const QString &) const;
+%If (Qt_3_1_0 -)
+ void setValue(int,const QVariant &);
+ void setValue(const QString &,const QVariant &);
+%End
+ virtual QSqlIndex primaryIndex(bool = 1) const;
+ virtual QSqlIndex index(const QStringList &) const;
+ QSqlIndex index(const QString &) const;
+// QSqlIndex index(const char *) const;
+ virtual void setPrimaryIndex(const QSqlIndex &);
+
+ virtual void append(const QSqlFieldInfo &);
+ virtual void insert(int,const QSqlFieldInfo &);
+ void remove(int);
+ void clear();
+ void setGenerated(const QString &,bool);
+ void setGenerated(int,bool);
+
+ virtual QSqlRecord *editBuffer(bool = 0);
+ virtual QSqlRecord *primeInsert();
+ virtual QSqlRecord *primeUpdate();
+ virtual QSqlRecord *primeDelete();
+ virtual int insert(bool = 1) /ReleaseGIL/;
+ virtual int update(bool = 1) /ReleaseGIL/;
+ virtual int del(bool = 1) /PyName=delRecords, ReleaseGIL/;
+
+ virtual void setMode(int);
+ int mode() const;
+ virtual void setCalculated(const QString &,bool);
+ bool isCalculated(const QString &) const;
+ virtual void setTrimmed(const QString &,bool);
+ bool isTrimmed(const QString &) const;
+
+ bool isReadOnly() const;
+ bool canInsert() const;
+ bool canUpdate() const;
+ bool canDelete() const;
+
+ bool select() /ReleaseGIL/;
+ bool select(const QSqlIndex &) /ReleaseGIL/;
+ bool select(const QSqlIndex &,const QSqlIndex &) /ReleaseGIL/;
+ virtual bool select(const QString &,const QSqlIndex & = QSqlIndex()) /ReleaseGIL/;
+
+ virtual void setSort(const QSqlIndex &);
+ QSqlIndex sort() const;
+ virtual void setFilter(const QString &);
+ QString filter() const;
+ virtual void setName(const QString &,bool = 1);
+ QString name() const;
+ QString toString(const QString & = QString::null,
+ const QString & = ",") const;
+
+%If (Qt_3_1_0 -)
+ bool isNull(int) const;
+ bool isNull(const QString &) const;
+%End
+
+protected:
+ void afterSeek();
+ bool exec(const QString &) /PyName=execQuery, ReleaseGIL/;
+
+ virtual QVariant calculateField(const QString &);
+ virtual int update(const QString &,bool = 1);
+ virtual int del(const QString &,bool = 1) /PyName=delRecords, ReleaseGIL/;
+
+ virtual QString toString(const QString &,QSqlField *,
+ const QString &) const;
+ virtual QString toString(QSqlRecord *,const QString &,const QString &,
+ const QString &) const;
+ virtual QString toString(const QSqlIndex &,QSqlRecord *,
+ const QString &,const QString &,
+ const QString &) const;
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqldatabase.sip b/python/pyqt/sip/qtsql/qsqldatabase.sip
new file mode 100644
index 00000000..2a6c516f
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqldatabase.sip
@@ -0,0 +1,154 @@
+// This is the SIP interface definition for QSqlDatabase.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlDatabase (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>QSqlQuery <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter> = QString::null</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execStatement</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlDatabase : QObject
+{
+%TypeHeaderCode
+#include <qsqldatabase.h>
+%End
+
+public:
+%ConvertToSubClassCode
+ static struct class_graph {
+ char *name;
+ sipWrapperType **type;
+ int yes, no;
+ } graph[] = {
+ {sipName_QSqlDriver, &sipClass_QSqlDriver, -1, 1},
+ {sipName_QEditorFactory, &sipClass_QEditorFactory, 7, 2},
+ {sipName_QSqlDatabase, &sipClass_QSqlDatabase, -1, 3},
+ {sipName_QSqlForm, &sipClass_QSqlForm, -1, 4},
+ {sipName_QDataView, &sipClass_QDataView, -1, 5},
+ {sipName_QDataTable, &sipClass_QDataTable, -1, 6},
+ {sipName_QDataBrowser, &sipClass_QDataBrowser, -1, -1},
+ {sipName_QSqlEditorFactory, &sipClass_QSqlEditorFactory, -1, -1},
+ };
+
+ int i = 0;
+
+ sipClass = NULL;
+
+ do
+ {
+ struct class_graph *cg = &graph[i];
+
+ if (cg->name != NULL && sipCpp->inherits(cg->name))
+ {
+ sipClass = *cg->type;
+ i = cg->yes;
+ }
+ else
+ i = cg->no;
+ }
+ while (i >= 0);
+%End
+
+ bool open() /ReleaseGIL/;
+ bool open(const QString &,const QString &) /ReleaseGIL/;
+ void close();
+ bool isOpen() const;
+ bool isOpenError() const;
+ QStringList tables() const;
+%If (Qt_3_2_0 -)
+ QStringList tables(QSql::TableType) const;
+%End
+ QSqlIndex primaryIndex(const QString &) const;
+ QSqlRecord record(const QString &) const;
+ QSqlRecord record(const QSqlQuery &) const;
+ QSqlRecordInfo recordInfo(const QString &) const;
+ QSqlRecordInfo recordInfo(const QSqlQuery &) const;
+ QSqlQuery exec(const QString & = QString::null) const /PyName=execStatement, ReleaseGIL/;
+ QSqlError lastError() const;
+
+ bool transaction();
+ bool commit();
+ bool rollback();
+
+ virtual void setDatabaseName(const QString &);
+ virtual void setUserName(const QString &);
+ virtual void setPassword(const QString &);
+ virtual void setHostName(const QString &);
+ virtual void setPort(int);
+%If (Qt_3_2_0 -)
+ void setConnectOptions(const QString & = QString::null);
+%End
+ QString databaseName() const;
+ QString userName() const;
+ QString password() const;
+ QString hostName() const;
+ QString driverName() const;
+ int port() const;
+%If (Qt_3_2_0 -)
+ QString connectOptions() const;
+%End
+
+ QSqlDriver *driver() const;
+
+ static QSqlDatabase *addDatabase(const QString &,
+ const QString & = QString(QSqlDatabase::defaultConnection));
+%If (Qt_3_2_0 -)
+ static QSqlDatabase *addDatabase(QSqlDriver *,
+ const QString & = QString(QSqlDatabase::defaultConnection));
+%End
+ static QSqlDatabase *database(const QString & = QString(QSqlDatabase::defaultConnection),bool = 1);
+ static void removeDatabase(const QString &);
+%If (Qt_3_2_0 -)
+ static void removeDatabase(QSqlDatabase *);
+%End
+ static bool contains(const QString & = QString(QSqlDatabase::defaultConnection));
+ static QStringList drivers();
+// static void registerSqlDriver(const QString &,
+// const QSqlDriverCreatorBase *);
+%If (Qt_3_2_0 -)
+ static bool isDriverAvailable(const QString &);
+%End
+
+protected:
+ QSqlDatabase(const QString &,const QString &,
+ QObject * /TransferThis/ = 0,const char * = 0);
+%If (Qt_3_2_0 -)
+ QSqlDatabase(QSqlDriver *,QObject * /TransferThis/ = 0,
+ const char * = 0);
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QSqlDatabase(const QSqlDatabase &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqldriver.sip b/python/pyqt/sip/qtsql/qsqldriver.sip
new file mode 100644
index 00000000..3ebdaa94
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqldriver.sip
@@ -0,0 +1,93 @@
+// This is the SIP interface definition for QSqlDriver.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlDriver (Qt v3+)</Title>
+<Para>
+<Literal>QSqlDriver</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlDriver : QObject
+{
+%TypeHeaderCode
+#include <qsqldriver.h>
+%End
+
+public:
+ enum DriverFeature {
+ Transactions,
+ QuerySize,
+ BLOB,
+%If (Qt_3_1_0 -)
+ Unicode,
+ PreparedQueries,
+ NamedPlaceholders,
+ PositionalPlaceholders
+%End
+ };
+
+ QSqlDriver(QObject * /TransferThis/ = 0,const char * = 0);
+
+ bool isOpen() const;
+ bool isOpenError() const;
+
+ virtual bool beginTransaction();
+ virtual bool commitTransaction();
+ virtual bool rollbackTransaction();
+ virtual QStringList tables(const QString &) const;
+ virtual QSqlIndex primaryIndex(const QString &) const;
+ virtual QSqlRecord record(const QString &) const;
+ virtual QSqlRecord record(const QSqlQuery &) const;
+ virtual QSqlRecordInfo recordInfo(const QString &) const;
+ virtual QSqlRecordInfo recordInfo(const QSqlQuery &) const;
+ virtual QString nullText() const;
+ virtual QString formatValue(const QSqlField *,bool = 0) const;
+ QSqlError lastError() const;
+
+ virtual bool hasFeature(DriverFeature) const = 0;
+ virtual bool open(const QString &,const QString & = QString::null,
+ const QString & = QString::null,
+ const QString & = QString::null,
+ int = -1) = 0 /ReleaseGIL/;
+ virtual void close() = 0;
+ virtual QSqlQuery createQuery() const = 0;
+
+%If (Qt_3_2_0 -)
+ bool open(const QString &,const QString &,const QString &,
+ const QString &,int,const QString &) /ReleaseGIL/;
+%End
+
+protected:
+ virtual void setOpen(bool);
+ virtual void setOpenError(bool);
+ virtual void setLastError(const QSqlError &);
+
+private:
+ QSqlDriver(const QSqlDriver &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqleditorfactory.sip b/python/pyqt/sip/qtsql/qsqleditorfactory.sip
new file mode 100644
index 00000000..af93bd44
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqleditorfactory.sip
@@ -0,0 +1,57 @@
+// This is the SIP interface definition for QSqlEditorFactory.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlEditorFactory (Qt v3+)</Title>
+<Para>
+<Literal>QSqlEditorFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlEditorFactory : QEditorFactory
+{
+%TypeHeaderCode
+#include <qsqleditorfactory.h>
+%End
+
+public:
+ QSqlEditorFactory(QObject * /TransferThis/ = 0,const char * = 0);
+
+ virtual QWidget *createEditor(QWidget * /TransferThis/,
+ const QVariant &) /Factory/;
+ virtual QWidget *createEditor(QWidget * /TransferThis/,
+ const QSqlField *) /Factory/;
+
+ static QSqlEditorFactory *defaultFactory();
+ static void installDefaultFactory(QSqlEditorFactory * /Transfer/);
+
+private:
+%If (Qt_3_1_0 -)
+ QSqlEditorFactory(const QSqlEditorFactory &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlerror.sip b/python/pyqt/sip/qtsql/qsqlerror.sip
new file mode 100644
index 00000000..17f95049
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlerror.sip
@@ -0,0 +1,68 @@
+// This is the SIP interface definition for QSqlError.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlError (Qt v3+)</Title>
+<Para>
+<Literal>QSqlError</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlError
+{
+%TypeHeaderCode
+#include <qsqlerror.h>
+%End
+
+public:
+ enum Type {
+ None,
+ Connection,
+ Statement,
+ Transaction,
+ Unknown
+ };
+
+ QSqlError(const QString & = QString::null,
+ const QString & = QString::null,int = QSqlError::None,
+ int = -1);
+ QSqlError(const QSqlError &);
+
+ QString driverText() const;
+ virtual void setDriverText(const QString &);
+ QString databaseText() const;
+ virtual void setDatabaseText(const QString &);
+ int type() const;
+ virtual void setType(int);
+ int number() const;
+ virtual void setNumber(int);
+%If (Qt_3_2_0 -)
+ QString text() const;
+ void showMessage(const QString & = QString::null) const;
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlfield.sip b/python/pyqt/sip/qtsql/qsqlfield.sip
new file mode 100644
index 00000000..39dc0461
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlfield.sip
@@ -0,0 +1,95 @@
+// This is the SIP interface definition for QSqlField and QSqlFieldInfo.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlField (Qt v3+)</Title>
+<Para>
+<Literal>QSqlField</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSqlFieldInfo (Qt v3+)</Title>
+<Para>
+<Literal>QSqlFieldInfo</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlField
+{
+%TypeHeaderCode
+#include <qsqlfield.h>
+%End
+
+public:
+ QSqlField(const QString & = QString::null,
+ QVariant::Type = QVariant::Invalid );
+ QSqlField(const QSqlField &);
+
+ virtual void setValue(const QVariant &);
+ virtual QVariant value() const;
+ virtual void setName(const QString &);
+ QString name() const;
+ virtual void setNull();
+ bool isNull() const;
+ virtual void setReadOnly(bool);
+ bool isReadOnly() const;
+ void clear(bool = 1);
+ QVariant::Type type() const;
+};
+
+
+class QSqlFieldInfo
+{
+%TypeHeaderCode
+#include <qsqlfield.h>
+%End
+
+public:
+ QSqlFieldInfo(const QString & = QString::null,
+ QVariant::Type = QVariant::Invalid,int = -1,int = -1,
+ int = -1,const QVariant & = QVariant(),int = 0,bool = 1,
+ bool = 0,bool = 0);
+ QSqlFieldInfo(const QSqlFieldInfo &);
+ QSqlFieldInfo(const QSqlField &,bool = 1);
+
+ QSqlField toField() const;
+ int isRequired() const;
+ QVariant::Type type() const;
+ int length() const;
+ int precision() const;
+ QVariant defaultValue() const;
+ QString name() const;
+ int typeID() const;
+ bool isGenerated() const;
+ bool isTrim() const;
+ bool isCalculated() const;
+
+ virtual void setTrim(bool);
+ virtual void setGenerated(bool);
+ virtual void setCalculated(bool);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlform.sip b/python/pyqt/sip/qtsql/qsqlform.sip
new file mode 100644
index 00000000..84e05b79
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlform.sip
@@ -0,0 +1,74 @@
+// This is the SIP interface definition for QSqlForm.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlForm (Qt v3+)</Title>
+<Para>
+<Literal>QSqlForm</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlForm : QObject
+{
+%TypeHeaderCode
+#include <qsqlform.h>
+%End
+
+public:
+ QSqlForm(QObject * /TransferThis/ = 0,const char * = 0);
+
+ virtual void insert(QWidget *,const QString &);
+ virtual void remove(const QString &);
+ uint count() const;
+
+ QWidget *widget(uint) const;
+ QSqlField *widgetToField(QWidget *) const;
+ QWidget *fieldToWidget(QSqlField *) const;
+
+ void installPropertyMap(QSqlPropertyMap * /Transfer/);
+
+ virtual void setRecord(QSqlRecord *);
+
+public slots:
+ virtual void readField(QWidget *);
+ virtual void writeField(QWidget *);
+ virtual void readFields();
+ virtual void writeFields();
+
+ virtual void clear();
+ virtual void clearValues(bool = 0);
+
+protected:
+ virtual void insert(QWidget *,QSqlField *);
+ virtual void remove(QWidget *);
+
+private:
+%If (Qt_3_1_0 -)
+ QSqlForm(const QSqlForm &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlindex.sip b/python/pyqt/sip/qtsql/qsqlindex.sip
new file mode 100644
index 00000000..af88129e
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlindex.sip
@@ -0,0 +1,64 @@
+// This is the SIP interface definition for QSqlIndex.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlIndex (Qt v3+)</Title>
+<Para>
+<Literal>QSqlIndex</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlIndex : QSqlRecord
+{
+%TypeHeaderCode
+#include <qsqlindex.h>
+%End
+
+public:
+ QSqlIndex(const QString & = QString::null,
+ const QString & = QString::null);
+ QSqlIndex(const QSqlIndex &);
+
+ virtual void setCursorName(const QString &);
+ QString cursorName() const;
+ virtual void setName(const QString &);
+ QString name() const;
+
+ void append(const QSqlField &);
+ virtual void append(const QSqlField &,bool);
+
+ bool isDescending(int) const;
+ virtual void setDescending(int,bool);
+
+ QString toString(const QString & = QString::null,const QString & = ",",
+ bool = 1) const;
+ QStringList toStringList(const QString & = QString::null,
+ bool = 1) const;
+
+ static QSqlIndex fromStringList(const QStringList &,const QSqlCursor *);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlpropertymap.sip b/python/pyqt/sip/qtsql/qsqlpropertymap.sip
new file mode 100644
index 00000000..c2f8ae8b
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlpropertymap.sip
@@ -0,0 +1,63 @@
+// This is the SIP interface definition for QSqlPropertyMap.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlPropertyMap (Qt v3+)</Title>
+<Para>
+<Literal>QSqlPropertyMap</Literal> is fully implemented. However, because PyQt
+does not allow new properties to be defined, it is not possible to implement
+custom editor widgets in Python and add them to a property map. These will
+simply be ignored.
+</Para>
+
+<Para>
+This problem may be addressed in a future release of PyQt.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlPropertyMap
+{
+%TypeHeaderCode
+#include <qsqlpropertymap.h>
+%End
+
+public:
+ QSqlPropertyMap();
+
+ QVariant property(QWidget *);
+ virtual void setProperty(QWidget *,const QVariant &);
+
+ void insert(const QString &,const QString &);
+ void remove(const QString &);
+
+ static QSqlPropertyMap *defaultMap();
+ static void installDefaultMap(QSqlPropertyMap * /Transfer/);
+
+private:
+ QSqlPropertyMap(const QSqlPropertyMap &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlquery.sip b/python/pyqt/sip/qtsql/qsqlquery.sip
new file mode 100644
index 00000000..a7284f1b
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlquery.sip
@@ -0,0 +1,115 @@
+// This is the SIP interface definition for QSqlQuery.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlQuery (Qt v3+)</Title>
+<FuncSynopsis>
+ <FuncDef>QMap&lt;QString,QVariant&gt; <Function>boundValues</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3.2.0+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>virtual bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python. (Qt v3.1+)
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlQuery
+{
+%TypeHeaderCode
+#include <qsqlquery.h>
+%End
+
+public:
+ QSqlQuery(QSqlResult *);
+ QSqlQuery(const QString & = QString::null,QSqlDatabase * = 0);
+%If (Qt_3_2_0 -)
+ QSqlQuery(QSqlDatabase *);
+%End
+ QSqlQuery(const QSqlQuery &);
+
+ bool isValid() const;
+ bool isActive() const;
+ bool isNull(int) const;
+ int at() const;
+ QString lastQuery() const;
+ int numRowsAffected() const;
+ QSqlError lastError() const;
+ bool isSelect() const;
+ int size() const;
+ const QSqlDriver *driver() const;
+ const QSqlResult *result() const;
+%If (Qt_3_1_0 -)
+ bool isForwardOnly() const;
+ void setForwardOnly(bool);
+%End
+
+ virtual bool exec(const QString &) /PyName=execQuery, ReleaseGIL/;
+ virtual QVariant value(int) const;
+
+ virtual bool seek(int,bool = 0) /ReleaseGIL/;
+ virtual bool next() /ReleaseGIL/;
+ virtual bool prev() /ReleaseGIL/;
+ virtual bool first() /ReleaseGIL/;
+ virtual bool last() /ReleaseGIL/;
+
+%If (Qt_3_1_0 -)
+ bool exec() /PyName=execQuery, ReleaseGIL/;
+ bool prepare(const QString &);
+ void bindValue(const QString &,const QVariant &);
+ void bindValue(int,const QVariant &);
+ void addBindValue(const QVariant &);
+%End
+%If (Qt_3_2_0 -)
+ void bindValue(const QString &,const QVariant &,QSql::ParameterType);
+ void bindValue(int,const QVariant &,QSql::ParameterType);
+ void addBindValue(const QVariant &,QSql::ParameterType);
+ QVariant boundValue(const QString &) const;
+ QVariant boundValue(int) const;
+// QMap<QString,QVariant> boundValues() const;
+ QString executedQuery() const;
+%End
+
+protected:
+ virtual void beforeSeek();
+ virtual void afterSeek();
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlrecord.sip b/python/pyqt/sip/qtsql/qsqlrecord.sip
new file mode 100644
index 00000000..cf1ec0e0
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlrecord.sip
@@ -0,0 +1,178 @@
+// This is the SIP interface definition for QSqlRecord and QSqlRecordInfo.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlRecord (Qt v3+)</Title>
+<Para>
+<Literal>QSqlRecord</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QSqlRecordInfo (Qt v3+)</Title>
+<Para>
+<Literal>QSqlRecordInfo</Literal> is implemented as a Python list of
+<Literal>QSqlFieldInfo</Literal> instances.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlRecord
+{
+%TypeHeaderCode
+#include <qsqlrecord.h>
+%End
+
+public:
+ QSqlRecord();
+ QSqlRecord(const QSqlRecord &);
+
+ virtual QVariant value(int) const;
+ virtual QVariant value(const QString &) const;
+ virtual void setValue(int,const QVariant &);
+ virtual void setValue(const QString &,const QVariant &);
+ bool isGenerated(int) const;
+ bool isGenerated(const QString &) const;
+ virtual void setGenerated(const QString &,bool);
+ virtual void setGenerated(int,bool);
+ virtual void setNull(int);
+ virtual void setNull(const QString &);
+ bool isNull(int);
+ bool isNull(const QString &);
+%If (Qt_3_1_0 -)
+// bool isNull(int) const;
+// bool isNull(const QString &) const;
+%End
+
+ int position(const QString &) const;
+ QString fieldName(int) const;
+ QSqlField *field(int);
+ QSqlField *field(const QString &);
+// const QSqlField *field(int) const;
+// const QSqlField *field(const QString &) const;
+
+ virtual void append(const QSqlField &);
+ virtual void insert(int,const QSqlField &);
+ virtual void remove(int);
+
+ bool isEmpty() const;
+ bool contains(const QString &) const;
+ virtual void clear();
+ virtual void clearValues(bool = 0);
+ uint count() const;
+ virtual QString toString(const QString & = QString::null,
+ const QString & = ",") const;
+ virtual QStringList toStringList(const QString & = QString::null) const;
+};
+
+
+%MappedType QSqlRecordInfo
+{
+%TypeHeaderCode
+#include <qsqlrecord.h>
+#include "sipqtsqlQSqlFieldInfo.h"
+%End
+
+%ConvertFromTypeCode
+ // Convert to a Python list of QSqlFieldInfo instances.
+
+ int i;
+ PyObject *l;
+
+ // Create the list.
+
+ if ((l = PyList_New(sipCpp -> count())) == NULL)
+ return NULL;
+
+ // Get it.
+
+ i = 0;
+ QValueListConstIterator<QSqlFieldInfo> it;
+
+ for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it)
+ {
+ PyObject *tmobj;
+
+ if ((tmobj = sipConvertFromNewInstance(new QSqlFieldInfo(*it),sipClass_QSqlFieldInfo,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0)
+ {
+ Py_XDECREF(tmobj);
+ Py_DECREF(l);
+
+ return NULL;
+ }
+
+ ++i;
+ }
+
+ return l;
+%End
+
+
+%ConvertToTypeCode
+ // Convert a Python list of QSqlFieldInfo instances to a QSqlRecordInfo
+ // on the heap.
+
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QSqlFieldInfo,SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+ }
+
+ QSqlRecordInfo *qri = new QSqlRecordInfo;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int iserr = 0, state;
+
+ // We apply the transfer to the list itself, not the elements.
+ QSqlFieldInfo *itm = reinterpret_cast<QSqlFieldInfo *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QSqlFieldInfo,0,SIP_NOT_NONE,&state,&iserr));
+
+ if (iserr)
+ {
+ sipReleaseInstance(itm,sipClass_QSqlFieldInfo,state);
+
+ *sipIsErr = 1;
+ delete qri;
+
+ return 0;
+ }
+
+ qri -> append(*itm);
+
+ sipReleaseInstance(itm,sipClass_QSqlFieldInfo,state);
+ }
+
+ *sipCppPtr = qri;
+
+ return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlresult.sip b/python/pyqt/sip/qtsql/qsqlresult.sip
new file mode 100644
index 00000000..f4fc7f6e
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlresult.sip
@@ -0,0 +1,73 @@
+// This is the SIP interface definition for QSqlResult.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlResult (Qt v3+)</Title>
+<Para>
+<Literal>QSqlResult</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QSqlResult
+{
+%TypeHeaderCode
+#include <qsqlresult.h>
+%End
+
+protected:
+ QSqlResult(const QSqlDriver *);
+
+ int at() const;
+ QString lastQuery() const;
+ QSqlError lastError() const;
+ bool isValid() const;
+ bool isActive() const;
+ bool isSelect() const;
+ bool isForwardOnly() const;
+ const QSqlDriver *driver() const;
+ virtual void setAt(int);
+ virtual void setActive(bool);
+ virtual void setLastError(const QSqlError &);
+ virtual void setQuery(const QString &);
+ virtual void setSelect(bool);
+ virtual void setForwardOnly(bool);
+
+ virtual QVariant data(int) = 0;
+ virtual bool isNull(int) = 0;
+ virtual bool reset(const QString &) = 0;
+ virtual bool fetch(int) = 0;
+ virtual bool fetchNext();
+ virtual bool fetchPrev();
+ virtual bool fetchFirst() = 0;
+ virtual bool fetchLast() = 0;
+ virtual int size() = 0;
+ virtual int numRowsAffected() = 0;
+
+private:
+ QSqlResult(const QSqlResult &);
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qsqlselectcursor.sip b/python/pyqt/sip/qtsql/qsqlselectcursor.sip
new file mode 100644
index 00000000..289cc420
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qsqlselectcursor.sip
@@ -0,0 +1,92 @@
+// This is the SIP interface definition for QSqlSelectCursor.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QSqlSelectCursor (Qt v3.2.0+)</Title>
+<FuncSynopsis>
+ <FuncDef>int <Function>del</Function></FuncDef>
+ <ParamDef>bool <Parameter>invalidate</Parameter> = TRUE</ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>delRecords</Literal> in Python.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>exec</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>query</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed <Literal>execQuery</Literal> in Python.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_2_0 -)
+
+class QSqlSelectCursor : QSqlCursor
+{
+%TypeHeaderCode
+#include <qsqlselectcursor.h>
+%End
+
+public:
+ QSqlSelectCursor(const QString & = QString::null,QSqlDatabase * = 0);
+ QSqlSelectCursor(const QSqlSelectCursor &);
+ ~QSqlSelectCursor();
+
+ bool exec(const QString &) /PyName=execQuery, ReleaseGIL/;
+ bool select() /ReleaseGIL/;
+
+protected:
+ QSqlIndex primaryIndex(bool = 1) const;
+ QSqlIndex index(const QStringList &) const;
+ QSqlIndex index(const QString &) const;
+// QSqlIndex index(const char *) const;
+ void setPrimaryIndex(const QSqlIndex &);
+ void append(const QSqlFieldInfo &);
+ void insert(int,const QSqlFieldInfo &);
+ void remove(int);
+ void clear();
+ void setGenerated(const QString &,bool);
+ void setGenerated(int,bool);
+ QSqlRecord *editBuffer(bool = 0);
+ QSqlRecord *primeInsert();
+ QSqlRecord *primeUpdate();
+ QSqlRecord *primeDelete();
+ int insert(bool = 1) /ReleaseGIL/;
+ int update(bool = 1) /ReleaseGIL/;
+ int del(bool = 1) /PyName=delRecords, ReleaseGIL/;
+ void setMode(int);
+
+ void setSort(const QSqlIndex &);
+ QSqlIndex sort() const;
+ void setFilter(const QString &);
+ QString filter() const;
+ void setName(const QString &,bool = 1);
+ QString name() const;
+ QString toString(const QString & = QString::null,
+ const QString & = ",") const;
+ bool select(const QString &,const QSqlIndex & = QSqlIndex()) /ReleaseGIL/;
+};
+
+%End
diff --git a/python/pyqt/sip/qtsql/qtsqlmod.sip b/python/pyqt/sip/qtsql/qtsqlmod.sip
new file mode 100644
index 00000000..f780a9a3
--- /dev/null
+++ b/python/pyqt/sip/qtsql/qtsqlmod.sip
@@ -0,0 +1,88 @@
+// This is the SIP interface definition for the qtsql module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtsql 1
+
+%Import qt/qtmod.sip
+%Import qttable/qttablemod.sip
+
+%Include copying.sip
+
+
+%Include qdatabrowser.sip
+%Include qdatatable.sip
+%Include qdataview.sip
+%Include qeditorfactory.sip
+%Include qsql.sip
+%Include qsqlcursor.sip
+%Include qsqldatabase.sip
+%Include qsqldriver.sip
+%Include qsqleditorfactory.sip
+%Include qsqlerror.sip
+%Include qsqlfield.sip
+%Include qsqlform.sip
+%Include qsqlindex.sip
+%Include qsqlpropertymap.sip
+%Include qsqlquery.sip
+%Include qsqlrecord.sip
+%Include qsqlresult.sip
+%Include qsqlselectcursor.sip
+
+
+// The build file template.
+
+%Makefile qtsql.pro.in
+# The project file for the qtsql module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QTTABLE_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qttable/copying.sip b/python/pyqt/sip/qttable/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qttable/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qttable/qtable.sip b/python/pyqt/sip/qttable/qtable.sip
new file mode 100644
index 00000000..87a0be39
--- /dev/null
+++ b/python/pyqt/sip/qttable/qtable.sip
@@ -0,0 +1,532 @@
+// This is the SIP interface definition for QTable, QTableItem,
+// QCheckTableItem, QComboTableItem and QTableSelection.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QTable (Qt v2.2+)</Title>
+<Para>
+<Literal>QTable</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTableItem (Qt v2.2+)</Title>
+<Para>
+<Literal>QTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCheckTableItem (Qt v3+)</Title>
+<Para>
+<Literal>QCheckTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QComboTableItem (Qt v3+)</Title>
+<Para>
+<Literal>QComboTableItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QTableSelection (Qt v2.2+)</Title>
+<Para>
+<Literal>QTableSelection</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_TABLE)
+%If (Qt_2_2_0 -)
+
+class QTableSelection
+{
+%TypeHeaderCode
+#include <qtable.h>
+%End
+
+public:
+ QTableSelection();
+%If (Qt_3_1_0 -)
+ QTableSelection(int,int,int,int);
+%End
+
+ void init(int,int);
+ void expandTo(int,int);
+
+ int topRow() const;
+ int bottomRow() const;
+ int leftCol() const;
+ int rightCol() const;
+ int anchorRow() const;
+ int anchorCol() const;
+%If (Qt_3_2_0 -)
+ int numRows() const;
+ int numCols() const;
+%End
+
+ bool isActive() const;
+%If (Qt_3_2_0 -)
+ bool isEmpty() const;
+%End
+};
+
+
+class QTableItem : Qt
+{
+%TypeHeaderCode
+#include <qtable.h>
+%End
+
+public:
+ enum EditType {
+ Never,
+ OnTyping,
+ WhenCurrent,
+ Always
+ };
+
+ // Note that the Qt documentation is wrong. Ownership is only taken by
+ // QTable::setItem().
+%If (Qt_3_2_0 -)
+ QTableItem(QTable *,EditType);
+%End
+ QTableItem(QTable *,EditType,const QString &);
+ QTableItem(QTable *,EditType,const QString &,const QPixmap &);
+
+%ConvertToSubClassCode
+ Py_BEGIN_ALLOW_THREADS
+
+#if QT_VERSION >= 0x030000
+ int rtti = sipCpp -> rtti();
+
+ if (rtti == QCheckTableItem::RTTI)
+ sipClass = sipClass_QCheckTableItem;
+ else if (rtti == QComboTableItem::RTTI)
+ sipClass = sipClass_QComboTableItem;
+ else
+ sipClass = 0;
+#else
+ sipClass = 0;
+#endif
+
+ Py_END_ALLOW_THREADS
+%End
+
+ virtual QPixmap pixmap() const;
+ virtual QString text() const;
+ virtual void setPixmap(const QPixmap &);
+ virtual void setText(const QString &);
+ QTable *table() const;
+
+ virtual int alignment() const;
+ virtual void setWordWrap(bool);
+ bool wordWrap() const;
+
+ EditType editType() const;
+ virtual QWidget *createEditor() const /Factory/;
+ virtual void setContentFromEditor(QWidget *);
+ virtual void setReplaceable(bool);
+ bool isReplaceable() const;
+
+ virtual QString key() const;
+ virtual QSize sizeHint() const;
+
+ virtual void setSpan(int,int);
+ int rowSpan() const;
+ int colSpan() const;
+
+ virtual void setRow(int);
+ virtual void setCol(int);
+ int row() const;
+ int col() const;
+
+ virtual void paint(QPainter *,const QColorGroup &,const QRect &,bool);
+
+ void updateEditor(int,int);
+
+%If (Qt_3_0_0 -)
+ virtual void setEnabled(bool);
+ bool isEnabled() const;
+
+ virtual int rtti() const;
+%End
+
+protected:
+%If (Qt_3_2_0 - Qt_3_3_0)
+ QString content() const;
+%End
+};
+
+
+%If (Qt_3_0_0 -)
+
+class QComboTableItem : QTableItem
+{
+%TypeHeaderCode
+#include <qtable.h>
+%End
+
+public:
+ // Note that the Qt documentation is wrong. Ownership is only taken by
+ // QTable::setItem().
+ QComboTableItem(QTable *,const QStringList &,bool = 0);
+
+ virtual QWidget *createEditor() const /Factory/;
+ virtual void setContentFromEditor(QWidget *);
+ virtual void paint(QPainter *,const QColorGroup &,const QRect &,bool);
+ virtual void setCurrentItem(int);
+ virtual void setCurrentItem(const QString &);
+ int currentItem() const;
+ QString currentText() const;
+ int count() const;
+ QString text(int) const;
+ virtual void setEditable(bool);
+ bool isEditable() const;
+ virtual void setStringList(const QStringList &);
+
+ int rtti() const;
+
+%If (Qt_3_0_6 -)
+ QSize sizeHint() const;
+%End
+};
+
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QCheckTableItem : QTableItem
+{
+%TypeHeaderCode
+#include <qtable.h>
+%End
+
+public:
+ // Note that the Qt documentation is wrong. Ownership is only taken by
+ // QTable::setItem().
+ QCheckTableItem(QTable *,const QString &);
+
+%If (Qt_3_2_0 -)
+ void setText(const QString &);
+%End
+ virtual QWidget *createEditor() const /Factory/;
+ virtual void setContentFromEditor(QWidget *);
+ virtual void paint(QPainter *,const QColorGroup &,const QRect &,bool);
+ virtual void setChecked(bool);
+ bool isChecked() const;
+
+ int rtti() const;
+
+%If (Qt_3_0_6 -)
+ QSize sizeHint() const;
+%End
+};
+
+%End
+
+
+class QTable : QScrollView
+{
+%TypeHeaderCode
+#include <qtable.h>
+%End
+
+public:
+ QTable(QWidget * /TransferThis/ = 0,const char * = 0);
+ QTable(int,int,QWidget * /TransferThis/ = 0,const char * = 0);
+
+%ConvertToSubClassCode
+ sipClass = (sipCpp->inherits(sipName_QTable) ? sipClass_QTable : NULL);
+%End
+
+ QHeader *horizontalHeader() const;
+ QHeader *verticalHeader() const;
+
+%If (- Qt_3_0_0)
+ enum SelectionMode {
+ Single,
+ Multi,
+ NoSelection
+ };
+%End
+%If (Qt_3_0_0 -)
+ enum SelectionMode {
+ Single,
+ Multi,
+ SingleRow,
+ MultiRow,
+ NoSelection
+ };
+%End
+
+ virtual void setSelectionMode(SelectionMode);
+ SelectionMode selectionMode() const;
+
+ virtual void setItem(int,int,QTableItem * /Transfer/);
+ virtual void setText(int,int,const QString &);
+ virtual void setPixmap(int,int,const QPixmap &);
+ virtual QTableItem *item(int,int) const;
+ virtual QString text(int,int) const;
+ virtual QPixmap pixmap(int,int) const;
+ virtual void clearCell(int,int);
+
+ virtual QRect cellGeometry(int,int) const;
+ virtual int columnWidth(int) const;
+ virtual int rowHeight(int) const;
+ virtual int columnPos(int) const;
+ virtual int rowPos(int) const;
+ virtual int columnAt(int) const;
+ virtual int rowAt(int) const;
+
+%If (- Qt_3_0_0)
+ int numRows() const;
+ int numCols() const;
+%End
+%If (Qt_3_0_0 -)
+ virtual int numRows() const;
+ virtual int numCols() const;
+%End
+
+ void updateCell(int,int);
+
+ bool eventFilter(QObject *,QEvent *);
+
+ int currentRow() const;
+ int currentColumn() const;
+ void ensureCellVisible(int,int);
+
+ bool isSelected(int,int) const;
+ bool isRowSelected(int,bool = 0) const;
+ bool isColumnSelected(int,bool = 0) const;
+ int numSelections() const;
+ QTableSelection selection(int) const;
+ virtual int addSelection(const QTableSelection &);
+ virtual void removeSelection(const QTableSelection &);
+ virtual void removeSelection(int);
+ virtual int currentSelection() const;
+
+%If (Qt_3_1_0 -)
+ void selectCells(int,int,int,int);
+ void selectRow(int);
+ void selectColumn(int);
+%End
+
+ bool showGrid() const;
+
+ bool columnMovingEnabled() const;
+ bool rowMovingEnabled() const;
+
+ virtual void sortColumn(int,bool = 1,bool = 0);
+
+ bool sorting() const;
+
+ virtual void takeItem(QTableItem * /TransferBack/);
+
+ virtual void setCellWidget(int,int,QWidget * /Transfer/);
+ virtual QWidget *cellWidget(int,int) const;
+ virtual void clearCellWidget(int,int);
+
+%If (Qt_3_0_0 -)
+ virtual QRect cellRect(int,int) const;
+%End
+
+ virtual void paintCell(QPainter *,int,int,const QRect &,bool);
+%If (Qt_3_0_0 -)
+ virtual void paintCell(QPainter *,int,int,const QRect &,bool,
+ const QColorGroup &);
+%End
+ virtual void paintFocus(QPainter *,const QRect &);
+ QSize sizeHint() const;
+
+%If (Qt_3_0_0 -)
+ bool isReadOnly() const;
+ bool isRowReadOnly(int) const;
+ bool isColumnReadOnly(int) const;
+
+ void setEnabled(bool);
+
+ void repaintSelections();
+
+ enum FocusStyle {
+ FollowStyle,
+ SpreadSheet
+ };
+
+ virtual void setFocusStyle(FocusStyle);
+ FocusStyle focusStyle() const;
+%End
+
+%If (Qt_3_1_0 -)
+ void updateHeaderStates();
+%End
+
+public slots:
+ virtual void setNumRows(int);
+ virtual void setNumCols(int);
+ virtual void setShowGrid(bool);
+ virtual void hideRow(int);
+ virtual void hideColumn(int);
+ virtual void showRow(int);
+ virtual void showColumn(int);
+%If (Qt_3_3_0 -)
+ bool isRowHidden(int) const;
+ bool isColumnHidden(int) const;
+%End
+
+ virtual void setColumnWidth(int,int);
+ virtual void setRowHeight(int,int);
+
+ virtual void adjustColumn(int);
+ virtual void adjustRow(int);
+
+ virtual void setColumnStretchable(int,bool);
+ virtual void setRowStretchable(int,bool);
+ bool isColumnStretchable(int) const;
+ bool isRowStretchable(int) const;
+ virtual void setSorting(bool);
+%If (- Qt_3_0_0)
+ virtual void swapRows(int,int);
+ virtual void swapColumns(int,int);
+%End
+%If (Qt_3_0_0 -)
+ virtual void swapRows(int,int,bool = 0);
+ virtual void swapColumns(int,int,bool = 0);
+%End
+ virtual void swapCells(int,int,int,int);
+
+ virtual void setLeftMargin(int);
+ virtual void setTopMargin(int);
+ virtual void setCurrentCell(int,int);
+ void clearSelection(bool = 1);
+ virtual void setColumnMovingEnabled(bool);
+ virtual void setRowMovingEnabled(bool);
+
+%If (Qt_3_0_0 -)
+ virtual void setReadOnly(bool);
+ virtual void setRowReadOnly(int,bool);
+ virtual void setColumnReadOnly(int,bool);
+
+ virtual void setDragEnabled(bool);
+ bool dragEnabled() const;
+
+ virtual void insertRows(int,int = 1);
+ virtual void insertColumns(int,int = 1);
+ virtual void removeRow(int);
+ virtual void removeRows(const QMemArray<int> &);
+ virtual void removeColumn(int);
+ virtual void removeColumns(const QMemArray<int> &);
+
+ virtual void editCell(int,int,bool = 0);
+%End
+
+%If (Qt_3_1_0 -)
+ void setRowLabels(const QStringList &);
+ void setColumnLabels(const QStringList &);
+%End
+
+protected:
+%If (Qt_3_0_0 -)
+ enum EditMode {
+ NotEditing,
+ Editing,
+ Replacing
+ };
+%End
+
+ void drawContents(QPainter *,int,int,int,int);
+ void contentsMousePressEvent(QMouseEvent *);
+ void contentsMouseMoveEvent(QMouseEvent *);
+ void contentsMouseDoubleClickEvent(QMouseEvent *);
+ void contentsMouseReleaseEvent(QMouseEvent *);
+%If (Qt_3_0_0 -)
+ void contentsContextMenuEvent(QContextMenuEvent *);
+%End
+ void keyPressEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *);
+ void focusOutEvent(QFocusEvent *);
+%If (- Qt_3_0_0)
+ void resizeEvent(QResizeEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void viewportResizeEvent(QResizeEvent *);
+%End
+ void showEvent(QShowEvent *);
+%If (Qt_3_1_0 -)
+ void paintEvent(QPaintEvent *);
+%End
+%If (Qt_3_0_0 -)
+ void setEditMode(EditMode,int,int);
+ virtual void contentsDragEnterEvent(QDragEnterEvent *);
+ virtual void contentsDragMoveEvent(QDragMoveEvent *);
+ virtual void contentsDragLeaveEvent(QDragLeaveEvent *);
+ virtual void contentsDropEvent(QDropEvent *);
+ virtual QDragObject *dragObject();
+ virtual void startDrag();
+%End
+
+ virtual void paintEmptyArea(QPainter *,int,int,int,int);
+ virtual void activateNextCell();
+ virtual QWidget *createEditor(int,int,bool) const /Factory/;
+ virtual void setCellContentFromEditor(int,int);
+ virtual QWidget *beginEdit(int,int,bool);
+ virtual void endEdit(int,int,bool,bool);
+
+ virtual void resizeData(int);
+ virtual void insertWidget(int,int,QWidget *);
+ int indexOf(int,int) const;
+
+%If (Qt_3_0_0 -)
+ void windowActivationChange(bool);
+ bool isEditing() const;
+ EditMode editMode() const;
+ int currEditRow() const;
+ int currEditCol() const;
+%End
+
+protected slots:
+ virtual void columnWidthChanged(int);
+ virtual void rowHeightChanged(int);
+ virtual void columnIndexChanged(int,int,int);
+ virtual void rowIndexChanged(int,int,int);
+ virtual void columnClicked(int);
+
+signals:
+ void currentChanged(int,int);
+ void clicked(int,int,int,const QPoint &);
+ void doubleClicked(int,int,int,const QPoint &);
+ void pressed(int,int,int,const QPoint &);
+ void selectionChanged();
+ void valueChanged(int,int);
+%If (Qt_3_0_0 -)
+ void contextMenuRequested(int,int,const QPoint &);
+ void dropped(QDropEvent *);
+%End
+
+private:
+%If (Qt_3_1_0 -)
+ QTable(const QTable &);
+%End
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qttable/qttablemod.sip b/python/pyqt/sip/qttable/qttablemod.sip
new file mode 100644
index 00000000..d470d223
--- /dev/null
+++ b/python/pyqt/sip/qttable/qttablemod.sip
@@ -0,0 +1,70 @@
+// This is the SIP interface definition for the qttable module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qttable 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qtable.sip
+
+
+// The build file template.
+
+%Makefile qttable.pro.in
+# The project file for the qttable module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtui/copying.sip b/python/pyqt/sip/qtui/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtui/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtui/qtuimod.sip b/python/pyqt/sip/qtui/qtuimod.sip
new file mode 100644
index 00000000..f6616b0e
--- /dev/null
+++ b/python/pyqt/sip/qtui/qtuimod.sip
@@ -0,0 +1,71 @@
+// This is the SIP interface definition for the qtui module of PyQt. Thanks to
+// Hans-Peter Jansen for the original work.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtui 1
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qwidgetfactory.sip
+
+
+// The build file template.
+
+%Makefile qtui.pro.in
+# The project file for the qtui module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @PYQT_QUI_LIB@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/pyqt/sip/qtui/qwidgetfactory.sip b/python/pyqt/sip/qtui/qwidgetfactory.sip
new file mode 100644
index 00000000..b011658e
--- /dev/null
+++ b/python/pyqt/sip/qtui/qwidgetfactory.sip
@@ -0,0 +1,63 @@
+// This is the SIP interface definition for QWidgetFactory. Thanks to
+// Hans-Peter Jansen for the original work.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QWidgetFactory (Qt v3+)</Title>
+<Para>
+<Literal>QWidgetFactory</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_3_0_0 -)
+
+class QWidgetFactory
+{
+%TypeHeaderCode
+#include <qwidgetfactory.h>
+%End
+
+public:
+ QWidgetFactory();
+ virtual ~QWidgetFactory();
+
+ static QWidget *create(const QString &,QObject * = 0,
+ QWidget * /TransferThis/ = 0,
+ const char * = 0) /Factory/;
+ static QWidget *create(QIODevice *,QObject * = 0,
+ QWidget * /TransferThis/ = 0,
+ const char * = 0) /Factory/;
+ static void addWidgetFactory(QWidgetFactory * /Transfer/);
+ static void loadImages(const QString &);
+
+ virtual QWidget *createWidget(const QString &,QWidget * /TransferThis/,
+ const char *) const /Factory/;
+
+%If (Qt_3_1_0 -)
+ static QStringList widgets();
+ static bool supportsWidget(const QString &);
+%End
+};
+
+%End
diff --git a/python/pyqt/sip/qtxml/copying.sip b/python/pyqt/sip/qtxml/copying.sip
new file mode 100644
index 00000000..463904b2
--- /dev/null
+++ b/python/pyqt/sip/qtxml/copying.sip
@@ -0,0 +1,51 @@
+// This is the SIP file defining the PyQt license.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Copying
+Copyright (c) 2007
+ Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+
+This file is part of PyQt.
+
+This copy of PyQt is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%End
+
+
+%OptionalInclude pyqt-internal.sip
+%OptionalInclude pyqt-gpl.sip
+%OptionalInclude pyqt-commercial.sip
+%OptionalInclude pyqt-edu.sip
+%OptionalInclude pyqt-eval.sip
+%OptionalInclude pyqt-nc.sip
+%OptionalInclude pyqt-tkc.sip
diff --git a/python/pyqt/sip/qtxml/qdom.sip b/python/pyqt/sip/qtxml/qdom.sip
new file mode 100644
index 00000000..ed87b0ae
--- /dev/null
+++ b/python/pyqt/sip/qtxml/qdom.sip
@@ -0,0 +1,866 @@
+// This is the SIP interface definition for the QDom classes.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%ExportedDoc
+<Sect2><Title>QDomImplementation (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomImplementation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNode (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNode</Literal> is fully implemented, including the Python
+<Literal>==</Literal> and <Literal>!=</Literal> operators.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNodeList (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNodeList</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocument (Qt v2.2+)</Title>
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QCString &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QByteArray &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>text</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QIODevice *<Parameter>dev</Parameter></ParamDef>
+ <ParamDef>bool <Parameter>namespaceProcessing</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>dev</Literal> and
+<Literal>namespaceProcessing</Literal> parameters and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QCString &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QByteArray &amp;<Parameter>buffer</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>buffer</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QString &amp;<Parameter>text</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>text</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>const QIODevice *<Parameter>dev</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+This takes the <Literal>dev</Literal> parameter only and returns a tuple
+containing the <Literal>bool</Literal> result and the
+<Literal>errorMsg</Literal>, <Literal>errorLine</Literal> and
+<Literal>errorColumn</Literal> values. (Qt v3+)
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>bool <Function>setContent</Function></FuncDef>
+ <ParamDef>QXmlInputSource *<Parameter>source</Parameter></ParamDef>
+ <ParamDef>QXmlReader *<Parameter>reader</Parameter></ParamDef>
+ <ParamDef>QString *<Parameter>errorMsg</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorLine</Parameter> = 0</ParamDef>
+ <ParamDef>int *<Parameter>errorColumn</Parameter> = 0</ParamDef>
+</FuncSynopsis>
+<Para>
+Not yet implemented. (Qt v3.2.0+)
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocumentFragment (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomDocumentFragment</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomDocumentType (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomDocumentType</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNamedNodeMap (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNamedNodeMap</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomCharacterData (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomCharacterData</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomAttr (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomAttr</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomElement (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomElement</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomText (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomText</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomComment (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomComment</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomCDATASection (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomCDATASection</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomNotation (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomNotation</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomEntity (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomEntity</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomEntityReference (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomEntityReference</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDomProcessingInstruction (Qt v2.2+)</Title>
+<Para>
+<Literal>QDomProcessingInstruction</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%If (Qt_DOM)
+%If (Qt_2_2_0 -)
+
+class QDomImplementation
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomImplementation();
+ QDomImplementation(const QDomImplementation &);
+
+ virtual bool hasFeature(const QString &,const QString &);
+%If (Qt_3_0_0 -)
+ virtual QDomDocumentType createDocumentType(const QString &,
+ const QString &,
+ const QString &);
+ virtual QDomDocument createDocument(const QString &,const QString &,
+ const QDomDocumentType &);
+%End
+ bool isNull();
+};
+
+
+class QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ enum NodeType {
+ ElementNode,
+ AttributeNode,
+ TextNode,
+ CDATASectionNode,
+ EntityReferenceNode,
+ EntityNode,
+ ProcessingInstructionNode,
+ CommentNode,
+ DocumentNode,
+ DocumentTypeNode,
+ DocumentFragmentNode,
+ NotationNode,
+ BaseNode,
+ CharacterDataNode
+ };
+
+ QDomNode();
+ QDomNode(const QDomNode &);
+
+ bool operator==(const QDomNode &) const;
+ bool operator!=(const QDomNode &) const;
+
+ virtual QDomNode insertBefore(const QDomNode &,const QDomNode &);
+ virtual QDomNode insertAfter(const QDomNode &,const QDomNode &);
+ virtual QDomNode replaceChild(const QDomNode &,const QDomNode &);
+ virtual QDomNode removeChild(const QDomNode &);
+ virtual QDomNode appendChild(const QDomNode &);
+%If (Qt_3_0_0 -)
+ virtual bool hasChildNodes() const;
+%End
+ virtual QDomNode cloneNode(bool = 1) const;
+%If (Qt_3_0_0 -)
+ virtual void normalize();
+ virtual bool isSupported(const QString &,const QString &) const;
+%End
+
+ virtual QString nodeName() const;
+ virtual NodeType nodeType() const;
+ virtual QDomNode parentNode() const;
+ virtual QDomNodeList childNodes() const;
+ virtual QDomNode firstChild() const;
+ virtual QDomNode lastChild() const;
+ virtual QDomNode previousSibling() const;
+ virtual QDomNode nextSibling() const;
+ virtual QDomNamedNodeMap attributes() const;
+ virtual QDomDocument ownerDocument() const;
+%If (Qt_3_0_0 -)
+ virtual QString namespaceURI() const;
+ virtual QString localName() const;
+ virtual bool hasAttributes() const;
+%End
+
+ virtual QString nodeValue() const;
+ virtual void setNodeValue(const QString &);
+%If (Qt_3_0_0 -)
+ virtual QString prefix() const;
+ virtual void setPrefix(const QString &);
+%End
+
+ virtual bool isAttr() const;
+ virtual bool isCDATASection() const;
+ virtual bool isDocumentFragment() const;
+ virtual bool isDocument() const;
+ virtual bool isDocumentType() const;
+ virtual bool isElement() const;
+ virtual bool isEntityReference() const;
+ virtual bool isText() const;
+ virtual bool isEntity() const;
+ virtual bool isNotation() const;
+ virtual bool isProcessingInstruction() const;
+ virtual bool isCharacterData() const;
+ virtual bool isComment() const;
+
+ QDomNode namedItem(const QString &) const;
+
+ bool isNull() const;
+ void clear();
+
+ QDomAttr toAttr();
+ QDomCDATASection toCDATASection();
+ QDomDocumentFragment toDocumentFragment();
+ QDomDocument toDocument();
+ QDomDocumentType toDocumentType();
+ QDomElement toElement();
+ QDomEntityReference toEntityReference();
+ QDomText toText();
+ QDomEntity toEntity();
+ QDomNotation toNotation();
+ QDomProcessingInstruction toProcessingInstruction();
+ QDomCharacterData toCharacterData();
+ QDomComment toComment();
+
+ void save(QTextStream &,int) const;
+};
+
+
+class QDomNodeList
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomNodeList();
+ QDomNodeList(const QDomNodeList &);
+
+ virtual QDomNode item(int) const;
+
+ virtual uint length() const;
+ uint count() const;
+};
+
+
+class QDomDocumentType : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomDocumentType();
+ QDomDocumentType(const QDomDocumentType &);
+
+ virtual QString name() const;
+ virtual QDomNamedNodeMap entities() const;
+ virtual QDomNamedNodeMap notations() const;
+%If (Qt_3_0_0 -)
+ virtual QString publicId() const;
+ virtual QString systemId() const;
+ virtual QString internalSubset() const;
+%End
+
+ QDomNode::NodeType nodeType() const;
+ bool isDocumentType() const;
+};
+
+
+class QDomDocument : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomDocument();
+ QDomDocument(const QString &);
+%If (Qt_3_0_0 -)
+ QDomDocument(const QDomDocumentType &);
+%End
+ QDomDocument(const QDomDocument &);
+
+ QDomElement createElement(const QString &);
+ QDomDocumentFragment createDocumentFragment();
+ QDomText createTextNode(const QString &);
+ QDomComment createComment(const QString &);
+ QDomCDATASection createCDATASection(const QString &);
+ QDomProcessingInstruction createProcessingInstruction(const QString &,
+ const QString &);
+ QDomAttr createAttribute(const QString &);
+ QDomEntityReference createEntityReference(const QString &);
+ QDomNodeList elementsByTagName(const QString &) const;
+%If (Qt_3_0_0 -)
+ QDomElement elementById(const QString &);
+%End
+
+ QDomDocumentType doctype() const;
+ QDomImplementation implementation() const;
+ QDomElement documentElement() const;
+
+%If (- Qt_3_0_0)
+ bool setContent(const QCString &);
+ bool setContent(const QByteArray &);
+ bool setContent(const QString &);
+ bool setContent(QIODevice *);
+%End
+%If (Qt_3_0_0 -)
+ // Note that we need handwritten code for these because of the need to
+ // allocate storage for the error string.
+ SIP_PYTUPLE setContent(const QCString &,bool);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,a1,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(const QByteArray &,bool);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,a1,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(const QString &,bool);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,a1,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(QIODevice *,bool);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(a0,a1,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(const QCString &);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(const QByteArray &);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(const QString &);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(*a0,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+ SIP_PYTUPLE setContent(QIODevice *);
+%MethodCode
+ bool res;
+ QString *emsg = new QString();
+ int eline, ecol;
+
+ Py_BEGIN_ALLOW_THREADS
+ res = sipCpp -> QDomDocument::setContent(a0,emsg,&eline,&ecol);
+ Py_END_ALLOW_THREADS
+
+ sipRes = sipBuildResult(&sipIsErr,"(bNii)",res,emsg,sipClass_QString,eline,ecol);
+%End
+
+%End
+
+%If (Qt_3_2_0 -)
+// bool setContent(QXmlInputSource *,QXmlReader *,QString * = 0,int * = 0,
+// int * = 0);
+%End
+
+ QDomNode::NodeType nodeType() const;
+ bool isDocument() const;
+
+ QString toString() const;
+%If (Qt_3_1_0 -)
+ QString toString(int) const;
+%End
+ QCString toCString() const;
+%If (Qt_3_1_0 -)
+ QCString toCString(int) const;
+%End
+};
+
+
+class QDomNamedNodeMap
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomNamedNodeMap();
+ QDomNamedNodeMap(const QDomNamedNodeMap &);
+
+ QDomNode namedItem(const QString &) const;
+ QDomNode setNamedItem(const QDomNode &);
+ QDomNode removeNamedItem(const QString &);
+ QDomNode item(int) const;
+%If (Qt_3_0_0 -)
+ QDomNode namedItemNS(const QString &,const QString &) const;
+ QDomNode setNamedItemNS(const QDomNode &);
+ QDomNode removeNamedItemNS(const QString &,const QString &);
+%End
+
+ uint length() const;
+%If (Qt_3_0_0 -)
+ uint count() const;
+%End
+
+ bool contains(const QString &) const;
+};
+
+
+class QDomDocumentFragment : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomDocumentFragment();
+ QDomDocumentFragment(const QDomDocumentFragment &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isDocumentFragment() const;
+};
+
+
+class QDomCharacterData : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomCharacterData();
+ QDomCharacterData(const QDomCharacterData &);
+
+ virtual QString substringData(unsigned long,unsigned long);
+ virtual void appendData(const QString &);
+ virtual void insertData(unsigned long,const QString &);
+ virtual void deleteData(unsigned long,unsigned long);
+ virtual void replaceData(unsigned long,unsigned long,const QString &);
+
+ virtual uint length() const;
+
+ virtual QString data() const;
+ virtual void setData(const QString &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isCharacterData() const;
+};
+
+
+class QDomAttr : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomAttr();
+ QDomAttr(const QDomAttr&);
+
+ virtual QString name() const;
+ virtual bool specified() const;
+%If (Qt_3_0_0 -)
+ virtual QDomElement ownerElement() const;
+%End
+
+ virtual QString value() const;
+ virtual void setValue(const QString &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isAttr() const;
+};
+
+
+class QDomElement : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomElement();
+ QDomElement(const QDomElement &);
+
+ QString attribute(const QString &,
+ const QString & = QString::null) const;
+ void setAttribute(const QString &,const QString &);
+ void setAttribute(const QString &,int /Constrained/);
+// void setAttribute(const QString &,uint);
+%If (Qt_3_2_0 -)
+// void setAttribute(const QString &,long);
+// void setAttribute(const QString &,ulong);
+%End
+ void setAttribute(const QString &,double);
+ void removeAttribute(const QString &);
+ QDomAttr attributeNode(const QString &);
+ QDomAttr setAttributeNode(const QDomAttr &);
+ QDomAttr removeAttributeNode(const QDomAttr &);
+ virtual QDomNodeList elementsByTagName(const QString &) const;
+ bool hasAttribute(const QString &) const;
+%If (- Qt_3_0_0)
+ void normalize();
+%End
+
+%If (Qt_3_0_0 -)
+ QString attributeNS(const QString,const QString &,
+ const QString &) const;
+ void setAttributeNS(const QString,const QString &,const QString &);
+ void setAttributeNS(const QString,const QString &,int /Constrained/);
+// void setAttributeNS(const QString,const QString &,uint);
+%If (Qt_3_2_0 -)
+// void setAttributeNS(const QString &,const QString &,long);
+// void setAttributeNS(const QString &,const QString &,ulong);
+%End
+ void setAttributeNS(const QString,const QString &,double);
+ void removeAttributeNS(const QString &,const QString &);
+ QDomAttr attributeNodeNS(const QString &,const QString &);
+ QDomAttr setAttributeNodeNS(const QDomAttr &);
+ virtual QDomNodeList elementsByTagNameNS(const QString &,
+ const QString &) const;
+ bool hasAttributeNS(const QString &,const QString &) const;
+%End
+
+ QString tagName() const;
+ void setTagName(const QString &);
+
+ QDomNamedNodeMap attributes() const;
+ QDomNode::NodeType nodeType() const;
+ bool isElement() const;
+
+ QString text() const;
+};
+
+
+class QDomText : QDomCharacterData
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomText();
+ QDomText(const QDomText &);
+
+ QDomText splitText(int);
+
+ QDomNode::NodeType nodeType() const;
+ bool isText() const;
+};
+
+
+class QDomComment : QDomCharacterData
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomComment();
+ QDomComment(const QDomComment &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isComment() const;
+};
+
+
+class QDomCDATASection : QDomText
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomCDATASection();
+ QDomCDATASection(const QDomCDATASection&);
+
+ QDomNode::NodeType nodeType() const;
+ bool isCDATASection() const;
+};
+
+
+class QDomNotation : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomNotation();
+ QDomNotation(const QDomNotation &);
+
+ QString publicId() const;
+ QString systemId() const;
+
+ QDomNode::NodeType nodeType() const;
+ bool isNotation() const;
+};
+
+
+class QDomEntity : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomEntity();
+ QDomEntity(const QDomEntity &);
+
+ virtual QString publicId() const;
+ virtual QString systemId() const;
+ virtual QString notationName() const;
+
+ QDomNode::NodeType nodeType() const;
+ bool isEntity() const;
+};
+
+
+class QDomEntityReference : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomEntityReference();
+ QDomEntityReference(const QDomEntityReference &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isEntityReference() const;
+};
+
+
+class QDomProcessingInstruction : QDomNode
+{
+%TypeHeaderCode
+#include <qdom.h>
+%End
+
+public:
+ QDomProcessingInstruction();
+ QDomProcessingInstruction(const QDomProcessingInstruction &);
+
+ virtual QString target() const;
+
+ virtual QString data() const;
+ virtual void setData(const QString &);
+
+ QDomNode::NodeType nodeType() const;
+ bool isProcessingInstruction() const;
+};
+
+%End
+%End
diff --git a/python/pyqt/sip/qtxml/qtxmlmod.sip b/python/pyqt/sip/qtxml/qtxmlmod.sip
new file mode 100644
index 00000000..58eebf44
--- /dev/null
+++ b/python/pyqt/sip/qtxml/qtxmlmod.sip
@@ -0,0 +1,80 @@
+// This is the SIP interface definition for the qtxml module of PyQt.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module qtxml 0
+
+%Import qt/qtmod.sip
+
+%Include copying.sip
+
+
+%Include qdom.sip
+
+
+// This is only needed on Windows to make sure that the DLL containing the C++
+// code of the main qt module is loaded before we import our own C++ code which
+// has been linked against it. All other modules inherit from a class in the
+// qt module which sorts it out, but this module doesn't so we add a dummy. It
+// is ignored by SIP v4.x and later.
+%PrePythonCode
+from qt import QObject
+%End
+
+
+// The build file template.
+
+%Makefile qtxml.pro.in
+# The project file for the qtxml module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of PyQt.
+#
+# This copy of PyQt is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+TEMPLATE = lib
+TARGET = @BLX_TARGET_LIB@
+DESTDIR = @PYQT_MODDIR@
+CONFIG += @BLX_CONFIG_LIB@ @PYQT_WARN@
+INCLUDEPATH = @BLX_INCLUDEPATH@
+DEFINES = @BLX_DEFINES@
+LIBS += @PYQT_QT_MODULE@ @BLX_LIBS@
+macx:QMAKE_LFLAGS += -framework Python
+
+SOURCES = $B
+
+HEADERS = $H
+%End
diff --git a/python/sip/ChangeLog b/python/sip/ChangeLog
new file mode 100644
index 00000000..1ec4760c
--- /dev/null
+++ b/python/sip/ChangeLog
@@ -0,0 +1,3814 @@
+2007/04/10 15:27:04 phil
+Released as v4.6.
+
+
+2007/04/07 17:37:56 phil
+Changed the API file generation to generate the __init__ form of a ctor as well
+as the callable type form.
+
+
+2007/04/02 22:45:04 phil
+Updated the NEWS file.
+
+
+2007/04/02 22:44:16 phil
+Added the -n flag to configure.py to build universal binaries on MacOS/X.
+
+
+2007/04/02 19:07:30 phil
+Fixed a MinGW warning message.
+
+
+2007/04/02 16:03:32 phil
+Backed out the save and restore of the exception state in sipWrapper_dealloc()
+as it can get called when there is no current thread state (which results in a
+segfault).
+
+
+2007/04/02 15:23:53 phil
+Updated the NEWS file.
+
+
+2007/04/02 14:06:29 phil
+Fixed a bug handling sub-class convertor code with multiple inheritance.
+
+
+2007/04/02 12:10:54 phil
+Virtuals that return a wchar_t * now keep then free the previous result to
+limit the possible memory leaks.
+
+
+2007/04/01 16:28:23 phil
+Fixed a bug in the wchar_t support with const wchar_t * arguments.
+Fixed a bug in the wchar_t support with char and wchar_t being considered
+equivalent.
+
+
+2007/03/26 19:28:28 phil
+Fixed problem where lambda slots connected to QObject.destroyed() were cleared
+before the signal was emitted.
+
+
+2007/03/25 13:45:56 phil
+Completed the wchar_t support.
+
+
+2007/03/25 0:00:12 phil
+Added support for wchar_t - undocumented and certainly untested.
+
+
+2007/03/10 15:23:46 phil
+No longer generate the forward declaration of an opaque class. It shouldn't be
+necessary and means that the class could be a C structure.
+
+
+2007/03/02 22:48:39 phil
+SIP should now handle DOS format files on UNIX systems.
+
+
+2007/02/27 13:25:26 phil
+Undeprecated the -g command line option.
+Added the /HoldGIL/ annotation.
+
+
+2007/02/25 14:28:22 phil
+Fixed the previous fix related to signatures for the cases where the Python and
+C++ signatures have different numbers of arguments.
+
+
+2007/02/25 0:19:29 phil
+Included Matt Newell's fix for making sure that a sub-class convertor returns
+the most specific type available.
+
+
+2007/02/24 16:38:26 phil
+Fixed some documentation references to Py_ssize_t.
+sip now takes C++ as well as Python signatures into account when deciding what
+interface files a class need to include.
+
+
+2007/02/24 13:45:24 phil
+Leave it to the Qt support code to release the GIL when connecting signals.
+
+
+2007/02/20 18:22:48 phil
+An instance dictionary is not longer created automatically. Python will create
+it if and when it is needed.
+lambda slots are now cleaned up in the clear function rather than being left
+to the slot proxy dtor.
+
+
+2007/02/20 1:14:16 phil
+Fixed a bug in the implementation of /Transfer/ when the object was aleady
+owned by C++ but the owning object had been garbage collected.
+
+
+2007/02/18 16:00:12 phil
+Fixed a bug in the clearing of reference cycles with lambda slots. Although
+the slot is visited, it is no longer cleared - that is left to the proxy dtor.
+
+
+2007/02/16 18:47:13 phil
+Fixed a bug in the build system for QtDesigner on Windows.
+The Q_OBJECT support code now uses metaObject() rather than staticMetaObject
+because the latter is private in the ActiveQt classes.
+
+
+2007/02/10 23:20:33 phil
+Added support for /TypeFlags/.
+Added sipFindClass() and sipFindNamedEnum() to the public API.
+
+
+2007/02/06 22:20:59 phil
+More changes to the Q_OBJECT support.
+
+
+2007/02/04 17:33:33 phil
+Renamed "Qt4MetaObject" to "Qt4Q_OBJECT".
+
+
+2007/02/01 15:06:34 phil
+Changed the metaObject() hook so that it won't crash if the C++ instance has
+gone.
+
+
+2007/01/30 13:22:16 phil
+Changed the metaObject() hook again.
+
+
+2007/01/30 13:08:35 phil
+Changed the metaObject() hooks.
+
+
+2007/01/27 16:00:54 phil
+Changed the way the Qt support API is created so that new SIPs can build old
+PyQts.
+
+
+2007/01/27 15:29:54 phil
+Added the hooks to allow PyQt to build a proper meta-object when a new Python
+class is defined.
+
+
+2007/01/25 13:22:06 phil
+Fixed a build system bug that affected non-MinGW Windows compilers when
+building static modules.
+Taught the build system about the QtDesigner module.
+
+
+2007/01/23 12:41:52 phil
+Reimplemented the support for qt_metacall() so that it is a bit cleaner and
+can't be called from Python.
+
+
+2007/01/22 22:02:07 phil
+Added support for the QtMetaClass option.
+Added sipParseSignature() to the private Qt API.
+(Both of the above are needed for David Boddie's support for Python widgets in
+Qt Designer.)
+
+
+2007/01/21 16:32:45 phil
+Extended the cyclic garbage collector support for lambda slots so it works with
+SIGNALs as well as PYSIGNALs.
+Incremented the SIP API version number to 3.4.
+
+
+2007/01/21 14:55:47 phil
+Fixed garbage collection support for lambda slots (at the moment only when the
+slot is connected to a PYSIGNAL).
+
+
+2007/01/16 22:32:06 phil
+Added #undef slots to sip.h for when embedding Python 2.3 in Qt applications.
+
+
+2007/01/16 13:54:14 phil
+qRegisterMetaType() is now called for every candidate class at module
+initialisation rather than when the first instance is created from Python.
+
+
+2007/01/15 23:47:45 phil
+Allowed /TransferThis/ to be specified more than once.
+
+
+2007/01/15 13:43:51 phil
+Updated the copyright notices.
+Fixed a reentrancy problem in wrapping objects obtained from C/C++ (thanks to
+Giovanni Bajo for the fix).
+
+
+2007/01/10 16:24:13 phil
+Added support for __truediv__ and __itruediv__ by making them synonyms for
+__div__ and __idiv__.
+
+
+2007/01/07 17:33:58 phil
+Hopefully fixed a bug in the generation of the typedefs table that wasn't using
+the full name of foreign modules.
+
+
+2006/12/28 16:58:57 phil
+Fixed a bug in the sipResetCppHasRef() macro that breaks the /TransferBack/
+annotation.
+
+
+2006/12/20 17:22:28 phil
+Fixed a MacOS specific bug in create_wrapper() in the build system.
+
+
+2006/12/20 15:13:08 phil
+Applied a patch to sipdistutils.py from Giovanni Bajo to allow .sip files to be
+used in the "depends" argument to setup().
+
+
+2006/12/16 16:25:30 phil
+Fixed a bug in the build system that meant that lines in the top level mkspec
+file were being ignored after the last include.
+
+
+2006/12/09 23:44:19 phil
+Released as v4.5.2.
+
+
+2006/12/09 23:42:27 phil
+Fixed a MacOS build problem caused by another change to Qt installs.
+
+
+2006/12/09 18:33:42 phil
+Released as v4.5.1.
+
+
+2006/12/09 18:30:52 phil
+Updated the NEWS file.
+Fixed the internal build system for later versions of docutils.
+
+
+2006/12/06 18:09:27 phil
+"PyQt_PyObject" is now used instead of "PyObject *".
+lamda functions can now be used as slots.
+
+
+2006/11/26 18:19:36 phil
+Fixed an incorrect assumption that if a Python wrapper of a C++ owned object
+was being garbage collected then its Python children (ie. things it owns)
+should also be garbage collected. It may be that the parent is a "temporary"
+object (eg. the argument of a reimplementation of a virtual) but the children
+are "permanent". The case in PyQt is the parent argument of
+QAbstractItemDelegate.createEditor().
+
+
+2006/11/25 17:09:54 phil
+PEP 353 fixes from Ulli.
+
+
+2006/11/25 10:48:15 phil
+Some "char *" to "const char *" fixes from Ulli.
+
+
+2006/11/18 13:25:28 phil
+Fixed a broken pointer bug in the API file generation.
+
+
+2006/11/17 18:21:30 phil
+Fixed a misleading error message when instantiating templates.
+Fixed a bug generating global functions in API files.
+
+
+2006/11/11 23:16:12 phil
+Fixed a bug with virtual handlers when a module %Imports from two other
+(independent) modules.
+
+
+2006/11/04 22:07:32 phil
+Released as v4.5.
+
+
+2006/10/28 17:58:28 phil
+The build system now handles .prl files on MacOS.
+
+
+2006/10/27 17:15:09 phil
+Changed NoDefaultCopyCtor to NoDefaultCtors.
+Updated the NEWS file.
+
+
+2006/10/22 16:38:19 phil
+A fix for configuring QtAssistant in PyQt for Qt v4.2 on MacOS.
+Added the NoDefaultCopyCtor class annotation.
+
+
+2006/10/21 17:48:15 phil
+Fixed a Python 2.4/2.5 change that was missed.
+Added sip.setdeleted().
+
+
+2006/10/20 16:40:42 phil
+Platform portability fixes from Ulli.
+Fix for conditional includes in spec files from Ulli.
+Qt4 module include directories are now searched before the main Qt4 include
+directory.
+Handle the change in debug libraries in Qt v4.2.
+
+
+2006/10/15 18:54:40 phil
+Allow virtual signals if the NoEmitters option is set.
+
+
+2006/10/15 12:41:12 phil
+Fixed a bug where the first argument to a global comparison operator was
+mishandled if it was a pointer rather than a reference.
+
+
+2006/10/13 16:28:11 phil
+Improved the previous fix for the incorrect ctor exception.
+
+
+2006/10/08 17:04:46 phil
+Fixed bug where handwritten traverse and clear code wasn't being called for
+derived classes.
+Fixed an incorrect Python exception raised when a C++ exception is thrown by a
+ctor.
+The build system now displayed an error if a non-framework build of Python is
+used on MacOS.
+Untested fix for building a static module with MinGW.
+
+
+2006/10/07 12:21:23 phil
+Build system fixes for Qt v4.2.0 based on a patch from Matt Newell.
+
+
+2006/09/30 19:20:12 phil
+Fixes for building QtTest on Windows.
+
+
+2006/09/24 0:09:37 phil
+Taught the build system about QtTest.
+Fixed a bug in the handling of namespaces split across multiple header files.
+
+
+2006/09/23 18:40:03 phil
+Added support for hooking into the C++ dtor from Python by implementing
+__dtor__() from a patch by Jean Jacques Lecler.
+
+
+2006/09/23 17:59:58 phil
+Added sip.delete() (based on a patch from Jean Jacques Lecler) and
+sip.isdeleted().
+
+
+2006/09/23 14:29:46 phil
+Removed the -n flag to sip now I think I've decided how to change code
+completion in QScintilla.
+
+
+2006/09/22 18:17:25 phil
+Backed out the check that abstract methods are virtual - because they don't
+have to be.
+
+
+2006/09/17 13:04:05 phil
+Added support for pure virtual dtors.
+Fixed a bug where abstract operators weren't flagging the class as being
+abstract.
+
+
+2006/09/03 13:05:16 phil
+Defeated a GCC v4 warning message on generated code.
+
+
+2006/08/17 17:06:30 phil
+Minor code generation formatting tidyups.
+
+
+2006/08/17 16:04:59 phil
+Added argument type checking to sipRegisterIntTypes().
+
+
+2006/08/17 0:12:00 phil
+Added sipRegisterIntTypes() to the private Qt support API so that PyQt4 can
+implement Q_ENUMS and Q_FLAGS.
+
+
+2006/08/05 17:48:43 phil
+Added support for QAxContainer in the build system.
+
+
+2006/07/19 19:52:25 phil
+Updated the spec files from Qt v4.1.4.
+Added (completely untested) support for embedding manifests for MSVC v8.
+
+
+2006/07/16 12:38:09 phil
+More Python v2.5 changes.
+
+
+2006/07/15 22:27:26 phil
+The sip module will now build against Python v2.5. (The 64 bit changes still
+need to be done.)
+
+
+2006/07/08 19:27:08 phil
+Fixed the use of sys.lib in configure.py.
+
+
+2006/07/06 22:17:58 phil
+configure.py uses sys.lib if it is defined (for some 64 bit Linux distros).
+
+
+2006/07/04 17:15:45 phil
+Always call a dtor if there is one, even if we can't see how the instance could
+have been created.
+
+
+2006/07/01 11:20:03 phil
+Fixed default arguments and C++ scoped names in the new API file handling.
+
+
+2006/06/30 23:26:45 phil
+Added the -n command line option (possibly only temporarily).
+Changed the API generation so that it is more complete and uses Python types
+rather than C/C++ types.
+
+
+2006/06/29 22:54:54 phil
+Added sip_config_args to sipconfig.py.
+Added __hex__() to sip.voidptr.
+
+
+2006/06/19 15:57:08 phil
+More warning fixes from Ulli.
+
+
+2006/06/17 10:48:34 phil
+Changed the explicit C linkage to retain the benefit of using static.
+
+
+2006/06/13 12:00:29 phil
+Signals and slots are now const char * rather than char *.
+
+
+2006/06/10 12:33:46 phil
+Fixed the implementation of /TransferBack/ for virtuals.
+Changed all API arguments that take a format string from char * to const char *
+for Solaris.
+Used explicit C linkage for all generated function calls when generating C++.
+(May need more work in this area.)
+
+
+2006/06/06 23:08:25 phil
+Changed the XML handling of opaque classes.
+
+
+2006/06/05 23:30:09 phil
+Added support for opaque classes to the XML.
+
+
+2006/06/03 23:19:33 phil
+More XML generation changes.
+
+
+2006/05/31 21:18:34 phil
+More XML generation changes.
+
+
+2006/05/30 10:39:52 phil
+More XML generation changes.
+
+
+2006/05/28 22:29:04 phil
+More XML generation changes.
+
+
+2006/05/25 20:44:55 phil
+Fixed bug disconnecting Python signals.
+
+
+2006/05/20 21:02:30 phil
+More XML generation changes.
+
+
+2006/05/20 10:50:32 phil
+Backed out the change that treated "char" and "char *" as equivalent when
+comparing Python signatures. (The former is different to the latter if it
+appears first.)
+
+
+2006/05/18 23:28:21 phil
+More XML generation changes.
+
+
+2006/05/16 23:27:00 phil
+Tightened up on detecting clashing Python signatures involving strings and
+longs.
+Changes to the XML file generation.
+
+
+2006/05/13 23:17:28 phil
+Removed some Python API calls made after the interpreter is known to have gone.
+
+
+2006/05/13 23:10:47 phil
+Fixed a sip module bug that meant that the Python API might be called after the
+interpreter had gone.
+
+
+2006/05/13 17:18:43 phil
+Fixed code generation bug with abstract operators.
+
+
+2006/05/13 15:10:42 phil
+Added %UnitCode.
+
+
+2006/05/11 19:02:42 phil
+Added sipExportSymbol() and sipImportSymbol().
+Bumped the API version number to 3.2.
+
+
+2006/05/08 13:29:42 phil
+Removed (hopefully) two new warning messages.
+
+
+2006/05/07 19:28:35 phil
+Added support for %ExportedHeaderCode.
+
+
+2006/05/07 18:27:34 phil
+Fixed bug in handling of virtuals with different Python and C++ signatures.
+
+
+2006/05/05 13:54:51 phil
+Fixes for compiler warnings and a couple of minor bugs from Ulli.
+Deprecated %SIPNoEmitters and replaced it with %SIPOptions.
+Added the RegisterTypes option so that appropriate classes are registered with
+Qt automatically when needed - so PyQt4 doesn't need to implement
+qRegisterMetaType().
+
+
+2006/05/05 12:23:00 phil
+Fixed some compiler warnings.
+
+
+2006/05/01 14:41:18 phil
+More work on the XML generation.
+
+
+2006/04/30 19:14:19 phil
+Added the -m flag to generate the XML representation of the Pythonic API.
+
+
+2006/04/28 20:49:53 phil
+Replaced long long with PY_LONG_LONG for MSVC 6.
+
+
+2006/04/27 8:01:56 phil
+Fixed bug in handling multiple instances of the same namespace.
+The build system allows Apple's Python to be used if there is also a later
+python.org installation.
+MacOS modules are now bundles rather than dynamic libraries and can now be
+loaded by Pythons from python.org.
+Released as v4.4.3.
+
+
+2006/04/21 12:27:20 phil
+Fixed the previous const mapped type fix.
+
+
+2006/04/20 23:14:34 phil
+Fixed the GUI enabled interpreter in sipconfig.create_wrapper() for MacOS.
+Fixed static const mapped types.
+
+
+2006/04/18 23:49:07 phil
+Fixed the build system for when sys.prefix != sys.exec_prefix.
+
+
+2006/04/16 11:17:30 phil
+Added the export_all argument to the ModuleMakefile constructor of the build
+system so that exports can be handled on a per module basis. This is needed to
+get around a (not properly understood) problem with modules that wrap C++
+exceptions.
+
+
+2006/04/15 19:21:04 phil
+The build system now complains if a property is used in a spec file when no
+properties have been defined.
+Removed Qt specific properties from the solaris-cc and hurd-g++ spec files.
+Fixed the disconnecting of short-circuited signals.
+
+
+2006/04/08 19:54:38 phil
+Fixed the build system to better support frameworks on MacOS.
+
+
+2006/04/07 8:37:29 phil
+Made sure that all uses of sipMappedType * in the API are const.
+
+
+2006/04/06 10:40:18 phil
+The sipconfig module now uses qt_data_dir (if set) to find the qmake spec files.
+
+
+2006/04/05 12:27:06 phil
+Merged v4.4.1 into the trunk.
+SIP now properly detects duplicate Python signatures.
+
+
+2006/04/03 19:27:34 phil
+Released as v4.4.1.
+
+
+2006/04/03 0:08:03 phil
+Fixed a regression in the handling of __dict__.
+
+
+2006/04/01 10:34:10 phil
+Make the sip module's support for long long and unsigned long long conditional
+on HAVE_LONG_LONG so that it will build with older compilers.
+
+
+2006/03/29 10:17:22 phil
+Removed extraneous brackets in generated code.
+
+
+2006/03/28 13:35:38 phil
+Fixed some C++ code wrongly appearing in C modules.
+
+
+2006/03/25 16:58:15 phil
+Fixed a regression in the handling of namespaces.
+
+
+2006/03/24 22:24:29 phil
+Documented sipModule and sipModuleDict as being available to
+%PostInitialisationCode.
+Released as v4.4.
+
+
+2006/03/21 23:39:27 phil
+Applied patch for sipdistuils.py from Giovanni.
+Documented sipConvertFromNamedEnum().
+Wrapped types now define __reduce_ex__ and __reduce__ attributes set to None so
+that pickle knows they can't be pickled.
+
+
+2006/03/20 23:13:23 phil
+Fixed the special handling of the __dict__ attribute so that it doesn't apply
+to Python sub-classes of wrapped classes.
+
+
+2006/03/19 14:21:56 phil
+Documentation tweaks.
+Generate sipSelf for ctor %MethodCode now that it's existence is documented.
+Fixed a second place where slots with no underlying C++ instance might be
+invoked.
+
+
+2006/03/17 1:17:00 phil
+Removed __unicode__ from the documentation.
+Fixed a bug with virtual methods that returned a reference to a type that had
+%ConvertToTypeCode.
+
+
+2006/03/15 23:44:16 phil
+Removal of a now redundant error message.
+Fixed a leaking weak reference object.
+Another attempt at fixing calling slots where the underlying C++ instance has
+disappeared.
+
+
+2006/03/14 22:46:48 phil
+More const void * fixes.
+Fixed bug with building debug modules using MinGW.
+Fixed feature where too many names were being generated from imported modules.
+SIP now handles nested imports properly and doesn't require all modules to be
+explcitly imported.
+
+
+2006/03/13 11:33:28 phil
+Build system changes to support MacOS properly.
+Fixed crash when %TypeHeaderCode was used outside of a scope.
+
+
+2006/03/12 14:47:22 phil
+Fixed calls to sipConvertFromVoidPtr() with a const argument.
+
+
+2006/03/11 19:15:31 phil
+Minor changes to sipconfig.py for PyQt4's pyqtconfig.py.
+
+
+2006/03/11 15:14:31 phil
+Fixed handling of generating code for the version before the first %Timeline
+version.
+
+
+2006/03/08 9:34:46 phil
+Fixed a bug in the handling of QVariant * and PyObject * signal arguments.
+
+
+2006/03/06 18:59:26 phil
+Fixed a regression in handling of enums defined in an imported module.
+
+
+2006/03/06 12:35:05 phil
+Fixed bug in handling the typedef void hack.
+
+
+2006/03/05 17:41:44 phil
+Fixed bug with abstract classes with %ConvertToSubClassCode.
+Reimplemented namspaces split across modules so that there is a single
+namespace implemented in the original module.
+
+
+2006/03/05 12:55:13 phil
+Fixed missing #include for classes that aren't an immediate parent.
+
+
+2006/03/04 17:55:49 phil
+Fixed a regression in the wrappers around protected methods.
+
+
+2006/03/04 10:48:35 phil
+Suppressed the exception about the underlying object disappearing when calling
+a Python slot. This is because we don't automatically disconnect Python slots.
+
+
+2006/03/02 20:36:56 phil
+Added sipLong_AsUnsignedLong() to work around a bug in PyLong_AsUnsignedLong().
+
+
+2006/02/26 23:19:31 phil
+Fixed bug in handling class arguments with /Out/ specified.
+
+
+2006/02/26 17:08:35 phil
+Recognise NULL as a synonym for 0.
+Some build system changes for Cygwin.
+Fixed the deletion of temporary instances in catch clauses.
+
+
+2006/02/26 13:56:56 phil
+SIP now treats signed char as a type distinct from char.
+
+
+2006/02/26 0:41:23 phil
+Tore up the recent changes for handling cross module namespaces. A namespace
+is now defined in each module it is used. That makes things easier to
+implement and should be less confusing for the user. The API and data
+structures should now be stable.
+
+
+2006/02/25 21:08:24 phil
+Fixed bug in handling of variables introduced in the previous commit.
+
+
+2006/02/25 20:54:19 phil
+Added support for variables defined in namespaces defined in other modules.
+
+
+2006/02/25 19:59:46 phil
+Completed the support for enums in namespaces originating in other modules.
+
+
+2006/02/21 15:22:52 phil
+Added the 't' and 'u' format characters to sipParseArgs(), sipParseResult(),
+sipCallMethod() and sipBuildResult().
+unsigned and unsigned short are now implemented as Python long objects instead
+of integer objects.
+
+
+2006/02/19 16:43:02 phil
+Implemented disconnects for universal signals.
+
+
+2006/02/18 21:04:05 phil
+Implemented support for signal arguments of type PyObject *.
+Implemented support for shortcircuited Python signals (ie. just the name
+without arguments) that will only work with other shortcircuited Python signals
+and Python slots - bit don't need to do any conversions between Python and C++.
+
+
+2006/02/17 10:59:46 phil
+Fixed bug in the implementation of /TransferBack/ in virtual handlers.
+Fixed bug in methods with a void result and a single /Out/ argument that was a
+mapped type or class.
+
+
+2006/02/16 18:24:46 phil
+Fixed bug in generating code that called sipCallMethod().
+Updated the documentation where it was still referring to the legacy type
+convertors.
+
+
+2006/02/16 16:30:10 phil
+Fixed bug in generated legacy mapped type convertor names.
+
+
+2006/02/15 16:45:33 phil
+Fixed bug that could easily result in deleting non-heap instances.
+
+
+2006/02/13 20:04:02 phil
+Fixes to PythonModuleMakefile.
+
+
+2006/02/13 0:23:04 phil
+Renamed the new sipCheckConvert functions to sipForceConvert functions.
+Added the 'B', 'C' and 'D' format character to sipBuildResult() and
+sipCallMethod().
+Removed the 'L' format character from sipBuildResult() and sipCallMethod().
+Added sipConvertFromInstance(), sipConvertFromNewInstance() and
+sipConvertFromMappedType().
+
+
+2006/02/12 1:13:28 phil
+Overhauled how %ConvertToTypeCode should be written - detail below. (Still need
+to overhaul %ConvertFromTypeCode.)
+Added sipCanConvertToInstance(), sipConvertToInstance(),
+sipCheckConvertToInstance() and sipReleaseInstance().
+Added sipCanConvertToMappedType(), sipConvertToMappedType(),
+sipCheckConvertToMappedType(), sipReleaseMappedType() and sipFindMappedType().
+Changed the order of the arguments to sipConvertToCppTransfer().
+Added the 'C' and 'D' format characters to sipParseResult().
+Changed the meaning of the 'J' and 'M' format characters in sipParseArgs().
+Removed the sipConvertTo_*() functions.
+Removed sipConvertToCppTransfer().
+Took all of the None handling out of %ConvertToTypeCode.
+
+
+2006/01/28 20:11:45 phil
+Fixed the support for __hash__.
+
+
+2006/01/26 16:39:44 phil
+Added %SIPNoEmitters to stop SIP generating signal emitters for a module and
+any module that imports it.
+Changed the signal/slot support so that Python signals can be implemented with
+proxies.
+
+
+2006/01/20 22:36:17 phil
+Fixed a bug in sipTransferTo() that caused some objects to be garbage collected
+while ownership was being transferred.
+Check that abstract methods are only ever called as bound methods.
+
+
+2006/01/19 17:57:01 phil
+Updated the documentation for sipConnectRx().
+The __dict__ attribute of a wrapper type now returns a regular dictionary
+rather than a proxy (because PyDict_Next() doesn't iterate over proxies).
+
+
+2006/01/14 16:40:04 phil
+Fixed the searching of signal types.
+
+
+2006/01/11 8:45:06 phil
+The previous fix wasn't quite so trivial.
+
+
+2006/01/11 8:17:58 phil
+Added missing function prototype.
+
+
+2006/01/10 20:12:59 phil
+Fixed code generation bugs in new virtual handling code that was triggered by
+PyKDE.
+Build system changes for MinGW.
+Added support for constrained bools.
+Generate code to wrap static enum instances with inline code rather than
+through tables (as is done with class instances) for Windows.
+
+
+2006/01/09 19:42:45 phil
+Changed the signatures of sipForceConvertTo_*() and sipConvertFrom_*() back to
+their SIP 4.3 versions, deprecated them, and introduced the Transfer variants.
+
+
+2006/01/09 17:49:19 phil
+More build system changes for Windows.
+Added the platform macro to sipconfig.py.
+The default Windows platform Python 2.4 and later is now win32-msvc.net rather
+than win32-msvc.
+
+
+2006/01/08 15:59:48 phil
+Various build system changes needed by PyQt4 on Windows.
+
+
+2006/01/07 15:57:31 phil
+Updated the spec files from Qt v4.1.
+Added support for the $$() method of accessing environment variables in qmake
+spec files.
+sipdistutils.py fix from Giovanni.
+Changes to the build system for the slightly different macro names on Windows.
+
+
+2006/01/04 13:10:29 phil
+Added support for the /NoDerived/ annotation.
+
+
+2006/01/03 21:08:54 phil
+Fixed bug in handling of delayed dtors.
+
+
+2006/01/02 12:43:51 phil
+Fixed another bug with the new handling of virtual function calls (where
+re-implementations from another module weren't picked up).
+
+
+2005/12/30 14:35:11 phil
+Fixed bugs with the new handling of virtuals that caused recursions.
+
+
+2005/12/29 19:02:18 phil
+Taught the build system about the QtAssistantClient library.
+
+
+2005/12/29 15:14:14 phil
+Fixed bugs related to global operators with an enum as the first argument.
+
+
+2005/12/28 19:34:37 phil
+Added sipConvertToCppTransfer().
+Changed the signatures for the type convertor functions.
+Added the 'L' format character to sipBuildResult() and sipCallMethod().
+
+
+2005/12/27 10:53:26 phil
+Added support for the /DelayDtor/ class annotation to control the order of dtor
+calls when the interpreter exits.
+Fixed bugs with cast operators.
+
+
+2005/12/26 10:59:30 phil
+Fixed a documentation bug.
+Slightly changed the declaration of the sipProtectVirt wrappers.
+
+
+2005/12/24 17:33:39 phil
+Class methods called as class.method(self, ...) is now equivalent to
+this->class::method(...). Class methods called as self.method(...) is now
+equivalent to this->method(...).
+Introduced sipSelfWasArg and the sipProtectVirt wrappers in order to support
+the above.
+
+
+2005/12/22 19:13:05 phil
+SIP no longer complains if a slot to be disconnected isn't actually connected
+(and hopes Qt will then behave appropriately).
+
+
+2005/12/19 17:43:03 phil
+Backed out the recent change that ignored abstract specifications if the
+methods wasn't virtual.
+
+
+2005/12/19 14:52:41 phil
+Various changes to the build system to better support Qt v4.
+
+
+2005/12/18 15:24:36 phil
+Added the PythonModuleMakefile class and create_wrapper() function to the build
+system.
+
+
+2005/12/15 15:11:02 phil
+Internally renamed qtlib.cpp to qtlib.c.
+Small changes to the internal build system caused by the move to SVN.
+Removed SIP_BUILD from sip.h.
+
+
+2005/12/12 19:47:19 phil
+Ignore abstract specifications for non-virtual methods as GCC seems to do.
+
+
+2005/12/11 22:51:51 phil
+Fixed bug in the implementation of slot extenders.
+
+
+2005/12/07 18:19:48 phil
+Fixed the misleading exception raised when attempting to call a private
+re-implementation.
+
+
+2005/12/07 00:52:24 phil
+Fixed the fundamentally broken #include dependency handling.
+
+
+2005/12/05 09:57:22 phil
+The sip module now leaves to the Qt support API to determine if a signal is a
+Qt signal or a Python signal (so that PYSIGNAL can be dropped in PyQt4).
+
+
+2005/12/04 16:35:05 phil
+Fixed a bug with the expansion of class templates.
+
+
+2005/11/30 19:00:57 phil
+Made the parsing of default arguments able to handle template instantiations.
+Fixed a bug in the handling of renamed enums.
+Started the support for namespaces defined across modules.
+
+
+2005/11/29 13:06:06 phil
+Implemented the last pieces of cross-module type convertor support.
+
+
+2005/11/26 22:10:57 phil
+Fixed the internal build system for the latest release of docutils.
+Fixed a bug in the parser that caused classes to sometimes appear to be
+external when they weren't.
+
+
+2005/11/25 17:43:01 phil
+Exposed sipConvertRx() as part of the hidden Qt support API.
+Added SIP_ANYSLOT to support the hidden Qt support API.
+
+
+2005/11/24 17:23:25 phil
+Finished the modified mapped type template handling.
+Allowed SIP_SLOT and SIP_SIGNAL to have a default argument.
+
+
+2005/11/23 21:51:04 phil
+Made type expansions in template code aware of SIP generated names.
+Started to modify the handling of mapped type templates (not yet finished).
+
+
+2005/11/20 18:40:37 phil
+Further refined the Python type comparisons.
+
+
+2005/11/19 18:10:05 phil
+Fixed the parsing of ellipsis arguments.
+
+
+2005/11/18 23:23:39 phil
+Made the selection of a suitable ctor when generating error values more likely
+to find one without being explicitly told.
+
+
+2005/11/18 18:02:04 phil
+Fixed class numbering bug with external classes.
+Fixed bug with protected enums used as arguments to virtuals.
+Improved the comparison of Python signatures.
+
+
+2005/11/17 18:04:33 phil
+Completed the support for cross-module operators.
+Started the support for cross-module operator casts.
+
+
+2005/11/16 20:11:14 phil
+Added support for operator casts of basic types.
+Added support for the __long__ and __float__ Python slots.
+Started to add support for operator casts of classes.
+
+
+2005/11/16 17:16:18 phil
+Added support for cross-module number operators.
+
+
+2005/11/15 17:19:33 phil
+Fixed a long standing bug related to default arguments.
+
+
+2005/11/14 17:19:34 phil
+Changed the Qt support API to pass the Python object when creating a new
+universal slot.
+More fixes for external classes.
+
+
+2005/11/13 17:47:38 phil
+Fixed bug in handling external classes (not yet right).
+
+
+2005/11/12 10:21:24 phil
+Updated the documentation regarding module names.
+
+
+2005/11/12 10:15:09 phil
+Added support for hierachies in module names.
+
+
+2005/11/09 18:22:38 phil
+Fixed the documentation error.
+
+
+2005/11/09 17:58:26 phil
+Passing None when an argument will be dereferenced now causes a type error
+(allowing subsequent signatures to possibly succeed) rather than a conversion
+error. This means QFileDialog(None) works.
+
+
+2005/11/06 17:43:48 phil
+Added support for external class declarations.
+Template signatures can now include base types.
+The arguments to function calls that are default values can now be expressions.
+
+
+2005/11/03 22:25:39 phil
+Removed the restriction that static methods cannot be Qt slots.
+Argument names can now be given for the Qt signal/slot types.
+
+
+2005/11/02 19:16:45 phil
+Added support for SIP_PYTYPE.
+Added support for signatures with variable numbers of arguments.
+__getitem__() no longer requires %MethodCode.
+Global unary + and - operators are now handled properly.
+Fixed bug with nested templates.
+
+
+2005/11/01 22:09:07 phil
+Changed the Qt API to deal with the extra argument in connect() and
+disconnect() in Qt4 and the way in which signal arguments are passed.
+
+
+2005/10/30 18:04:19 phil
+Added the sipdistutils.py script from Giovanni Bajo.
+
+
+2005/10/30 11:23:23 phil
+Fixed bug in error reporting when doing template instantiation.
+Allow template types to be pointers (and the indirection is dropped).
+/TransferThis/ can now be used in non-factory methods.
+Removed the 't' format flag from sipParseArgs(). A pointer to sipSelf is now
+passed which is updated.
+Fixed clash of format characters in sipParseArgs().
+Fixed a couple of bugs with char * output arguments.
+
+
+2005/10/24 16:58:17 phil
+Applied fix from Giovanni Bajo to the build system where a macro was defined in
+terms of another macro *and* additional values.
+
+
+2005/10/23 16:02:18 phil
+Changed the buffer interface support so that sipSelf is always passed in.
+Changed the Qt interface to allow QObject.sender() to support Python signals.
+
+
+2005/10/23 12:44:47 phil
+Added the "user" member to the sipWrapper structure.
+Added support for Python's buffer interface.
+
+
+2005/10/16 16:07:19 phil
+Debugged the support for mapped type templates.
+
+
+2005/10/16 10:47:31 phil
+Documented the use of mapped type templates.
+Completed the implementation of mapped type templates.
+
+
+2005/10/13 21:43:57 phil
+Added parser support for mapped type templates. (Automatic instantiation not
+yet implemented.)
+
+
+2005/10/13 16:59:01 phil
+Fixed an assumption that a type created by sip.wrappertype would always be
+derived from sip.wrapper causing a segfault. (__metaclass__ might have been
+used to invalidate the assumption.)
+
+
+2005/10/12 21:10:17 phil
+Fixed legacy C++ism from the Qt support hooks.
+
+
+2005/10/11 21:12:02 phil
+Moved the export module function to the start of the API table. (Not having
+there from day one was a really, really stupid thing to do.)
+
+
+2005/10/09 17:01:39 phil
+Changed the handling of number slots to support the reverse operators.
+
+
+2005/10/06 21:41:32 phil
+Fixed bugs related to function arguments that were classes and had default
+arguments that weren't function calls.
+
+
+2005/10/06 20:24:43 phil
+Removed longs, unsigned longs etc. from the tests for types that Python can
+automatically convert. I think this needs looking at again as the current
+tests are too simple minded.
+Fixed some missing checks for constrained floats and doubles.
+
+
+2005/10/05 15:39:40 phil
+Added support for the int() cast in classes.
+Debugged the support for template classes and global operators.
+
+
+2005/10/01 11:24:21 phil
+The C/C++ long long and unsigned long long types are now supported.
+
+
+2005/09/30 23:48:16 phil
+longs are now implemented using the Python long object.
+unsigned longs are now handled separately.
+
+
+2005/09/30 18:10:18 phil
+Completed support for global operators with wrapped enums as the first
+argument.
+
+
+2005/09/29 17:56:05 phil
+Template class definitions now have to use typename.
+Started to add support for global operators that have wrapped enums as the
+first argument.
+
+
+2005/09/28 21:10:50 phil
+A couple of fixes to the template support.
+
+
+2005/09/28 16:05:16 phil
+Added support for global operators (so long as the first argument is a class
+wrapped in the same module).
+Fixed a bug that prevented global functions with the same name being defined in
+different modules.
+
+
+2005/09/28 13:50:04 phil
+Completed the support for template classes.
+
+
+2005/09/27 21:16:14 phil
+Started to add support for template classes. Not yet complete, but shouldn't
+have broken anything.
+
+
+2005/09/25 15:10:20 phil
+Function arguments can now have names (although they are ignored).
+The "explicit" keyword is parsed (but not yet used).
+
+
+2005/09/22 20:21:36 phil
+The generated sipconfig.py no longer contains any Qt version specific
+configuration data and so can be shared between Qt configurations.
+Added Configuration.build_macros(), Configuration.set_build_macros() and
+parse_build_macros() to the build system API.
+Added the macros argument to create_content() and create_config_module() in the
+build system API.
+Removed the dictname argument from create_content() in the build system API.
+Removed the -l, -q, -x and -c command line flags to configure.py.
+
+
+2005/09/19 21:14:35 phil
+Started to refactor the build system so that sipconfig.py doesn't know about
+Qt.
+
+
+2005/09/17 15:19:17 phil
+The build system now detects the open source edition of Qt v4.
+
+
+2005/09/17 13:42:19 phil
+The build system no longer passes QT_THREAD_SUPPORT to Qt v4.
+
+
+2005/09/09 22:06:20 phil
+Reverted to the v4.3 behaviour of the /Factory/ annotation in virtual methods.
+
+
+2005/09/08 20:15:09 phil
+Updated the documentation where it covers what Qt support is.
+Universal slots no longer take part in cyclic garbage collection as they are
+associated with C++ instances and not Python objects.
+
+
+2005/09/07 20:53:06 phil
+The Qt support framework is now C rather than C++.
+
+
+2005/09/06 20:32:33 phil
+Refactored the Qt support so that the sip module no longer makes any Qt calls
+and so it can support PyQt v3 and v4 without needing to be re-compiled.
+
+
+2005/09/04 20:47:42 phil
+More build system changes for Qt4.
+
+
+2005/09/04 17:57:02 phil
+Small fix so it still builds in the internal development systems.
+
+
+2005/09/04 17:49:32 phil
+Started to update the build system to deal with Qt4.
+
+
+2005/08/31 18:39:27 phil
+Fixed slot handling bug caused when a slot was defined in a C++ super-class and
+called from a wrapped sub-class.
+
+
+2005/08/30 16:32:20 phil
+Released as v4.3.
+
+
+2005/08/28 11:42:13 phil
+Clarifed the documentation regarding object ownership with the some of the
+flags to sipBuildObject().
+
+
+2005/08/28 07:50:59 phil
+Fixed bug in exception handling that caused a seg fault when generating code.
+
+
+2005/08/22 20:39:42 phil
+Backed out part of the last commit - the bit I wasn't sure about (seems I was
+right).
+
+
+2005/08/22 16:46:30 phil
+Applied some HP-UX and AIX portability fixes from Ulli.
+
+
+2005/08/21 11:54:53 phil
+Fixed bug with new ownership code related to objects with no owning object.
+(It breaks PyQt's semaphore.py example.)
+
+
+2005/08/19 16:01:47 phil
+Fixed a regression that caused the leak of universal slots.
+
+
+2005/08/17 22:32:13 phil
+Reimplemented the code that handles object ownership.
+Deprecated sipTransfer() and sip.transfer().
+Added sipTransferTo(), sipTransferBack(), sip.transferto() and
+sip.transferback().
+
+
+2005/08/16 16:35:21 phil
+Backed out the garbage collector fix yet again. I now know what the real
+problem & solution is.
+
+
+2005/08/10 16:40:47 phil
+Hopefully fixed the remaining problem with the cyclic garbage collector
+support.
+
+
+2005/07/27 17:17:29 phil
+Put back in the possible fix for weak references and cyclic garbage collection
+so that it can be selectively tested.
+
+
+2005/07/27 12:08:18 phil
+Fix for very subtle bug where an object being garbage collected was passed as
+an argument to a Python method and its referenced count increased again.
+
+
+2005/07/26 19:45:59 phil
+Fixed a bug in the handling of __dict__ for wrapped instances.
+
+
+2005/07/10 09:45:43 phil
+Added support for sipCppRet in %ConvertSubClassCode.
+
+
+2005/07/09 15:37:04 phil
+Redid some of the handwritten code handling now I properly understand what
+flex is doing.
+
+
+2005/07/09 10:25:58 phil
+Hopefully, finally, nailed the lexing of handwritten code.
+
+
+2005/07/03 15:54:41 phil
+Backed out some of the "fix" for Windows path separators.
+
+
+2005/07/03 13:56:25 phil
+Fixed segv trigged by a reference to __dict__ in an __init__ function before
+the instance dictionary has been created.
+
+
+2005/07/02 11:06:14 phil
+Fixed handling of variables based on the pseudo PyObject based types.
+Allowed all of the pseudo PyObject types to be variables (not just
+SIP_PYOBJECT).
+
+
+2005/07/01 17:06:50 phil
+Updated the NEWS file.
+Possibly fixed the problem with directory separators on Windows not being
+escaped in generated #lines. (Actually in the last commit but I forgot to
+mention it.)
+
+
+2005/07/01 16:41:12 phil
+Fixed a silly bug in the handling of sipExceptionRef.
+
+
+2005/06/30 18:04:35 phil
+Fixed a couple of bugs related to global anonymous enums.
+
+
+2005/06/30 16:56:10 phil
+Classes are properly marked as abstract if they have an abstract method visible
+in their super class hierarchy.
+
+
+2005/06/30 16:15:12 phil
+Don't generate sipExceptionRef if it isn't used.
+
+
+2005/06/30 15:53:27 phil
+Fixed a bug in the handling of slots with implied connections caused by a
+recent GC related fix.
+
+
+2005/06/29 20:44:11 phil
+Backed out the last fix for the cyclic garbage collector - it's wrong. Still
+leaves the problem with weak references.
+
+
+2005/06/29 15:00:30 phil
+Fixed segv with the new exception support when class or undefined exceptions
+where used in throw specifier.
+The build file now doesn't include non-existant C++ files for exceptions.
+
+
+2005/06/26 22:03:27 phil
+Implemented the support for %Exception.
+The parsing of handwritten code still seems to have problems in that blank
+lines seem to be ignored. This seems to be a problem with flex (the rule
+doesn't seem to be recognised for this condition). Ignore until somebody
+complains.
+
+
+2005/06/25 17:28:17 phil
+Fixed a bug with In,Out arguments that had type convertors.
+
+
+2005/06/25 15:47:51 phil
+Fixed the cyclic garbage collector support for objects owned by C++.
+
+
+2005/06/25 13:19:50 phil
+Fixed the extra linefeed appearing in handwritten code.
+
+
+2005/06/25 11:42:49 phil
+Connections from emitters not owned by Python are now maintained if the Python
+wrapper is garbage collected.
+
+
+2005/06/23 16:46:33 phil
+Allow comments on the same line after %End and (as a side effect) fix compile
+problem on Windows (thanks to Ulli Berning).
+
+
+2005/06/22 17:45:57 phil
+Hopefully fixed blank lines in handwritten code.
+
+
+2005/06/19 13:47:59 phil
+Code blocks can now contain %.
+Added parser support for the new %Exception directive. The implementation
+hasn't yet been done - but it shouldn't break anything.
+
+
+2005/06/05 08:28:05 phil
+Fixed code generation bug in the new variable handling code.
+
+
+2005/06/01 17:38:26 phil
+Updated the documentation regarding %GetCode and %SetCode for static class
+variables.
+
+
+2005/05/31 20:34:53 phil
+Added support for %GetCode and %SetCode.
+
+
+2005/05/29 10:10:24 phil
+Fixed silly bug in new -c flag to configure.py.
+
+
+2005/05/28 15:55:11 phil
+Added the -c flag to configure.py to allow the directory containing qconfig.h
+to be explicitly specified.
+Fixed a bug with assigning None to a class variable that was itself a class or
+mapped type.
+Fixed a bug when the (non-existent) cast function was being called for a C
+structure.
+
+
+2005/05/27 19:51:30 phil
+sip.voidptr can now be instansiated from Python.
+Added the ascobject() method to sip.voidptr.
+
+
+2005/05/24 16:12:54 phil
+Updated the documentation regarding the simple C example.
+
+
+2005/05/24 14:55:09 phil
+C structures can now have constructors and a destructor.
+Updated the NEWS file.
+
+
+2005/05/13 16:31:08 phil
+Fixed simple code generation bug that didn't get triggered with PyQt.
+
+
+2005/05/05 20:19:00 phil
+%TypeHeaderCode can now be used in namespaces.
+%TypeHeaderCode defined in an enclosing scope (class or namespace) now gets
+automatically included for each sub-scope.
+
+
+2005/05/04 18:32:09 phil
+Added SIP_VERSION_STR to the sip module.
+
+
+2005/04/30 09:51:27 phil
+Fixed bug with protected const method (thanks to James Emerton).
+Fixed the text of the exception raised by sipConvertFromSequenceIndex().
+
+
+2005/04/23 23:17:56 phil
+Fixed the previous fix.
+
+
+2005/04/23 18:11:37 phil
+Fixed bug with shadow classes if explicit C++ signatures were duplicates.
+
+
+2005/04/23 11:46:33 phil
+Fixed a leak where virtual handlers return a mapped type or a class with
+handwritten conversion code. (Thanks to James Emerton.)
+
+
+2005/04/23 09:20:53 phil
+Removed the caching of enum values in type dictionaries - it's the wrong thing
+to do.
+
+
+2005/04/17 10:49:17 phil
+Fixed a bug preventing a class that couldn't be instantiated explicitly
+(because of private ctors) being wrapped.
+
+
+2005/04/14 19:04:14 phil
+Further tweaked the text of the operator type exception.
+
+
+2005/04/14 18:15:54 phil
+Improved the text of the exception raised when some operators get bad argument
+types.
+
+
+2005/04/03 10:02:00 phil
+Fixed a problem with the recent fix for leaking weak reference objects.
+
+
+2005/04/02 23:22:10 phil
+Wrapped types now support Python's cyclic garbage collector.
+Added %GCTraverseCode and %GCClearCode to allow types to cooperate with the
+garbage collector.
+
+
+2005/04/02 18:54:31 phil
+Abstract C++ classes can no longer be instantiated from Python - they can only
+be sub-classed.
+The above change needed the SIP API major version bumping. The minor version
+number has been added to the main module data structure to (hopefully) reduce
+the need for this in future.
+
+
+2005/04/02 10:12:46 phil
+Replaced the new /NoConvertor/ annotation with an extended implementation of
+/Constrained/.
+
+
+2005/03/25 20:17:44 phil
+Dealloc functions are now generated whenever it might be possible to call the
+C++ dtor, even if it is not possible to create a class instance from Python.
+Fixed a bug where universal slots were never destroyed.
+
+
+2005/03/25 14:26:46 phil
+Fixed bug in sip.cast() when casting to a more specific type.
+
+
+2005/03/17 17:56:18 phil
+Updated the documentation regarding sip.transfer(), sipTransfer() and
+/TransferBack/.
+
+
+2005/03/10 17:52:22 phil
+The C++ unary '+' and '-' operators are now handled correctly.
+
+
+2005/03/10 17:34:09 phil
+Added support for __pos__ and __abs__ (which meant bumping the API to 1.1).
+
+
+2005/03/06 10:03:25 phil
+Released as v4.2.1.
+
+
+2005/03/04 17:37:36 phil
+Fixed problem with sipWrapQVariant().
+Added support for multiple %Timelines in a single module.
+
+
+2005/02/26 11:22:02 phil
+Fixed problem with relative path arguments to configure.py.
+
+
+2005/02/25 22:57:28 phil
+Backed out the changes that attempted to detect exceptions in Python
+re-implementations if virtual C++ methods. The restoration of PyErr_Print()
+means that sys.excepthook is usefull again.
+
+
+2005/02/20 08:45:42 phil
+Fixed missing cast in generated code.
+
+
+2005/02/19 15:22:53 phil
+Fixed a bug with the new enum support when returning one as a tuple element.
+Released as v4.2.
+
+
+2005/02/18 19:00:37 phil
+Backed out a supposed improvement in the handling of char * method results.
+Added SIP_VERSION to the sip module.
+
+
+2005/02/13 20:01:23 phil
+Hopefully removed a couple of compiler warnings from the sip module.
+
+
+2005/02/11 18:43:40 phil
+Updated the NEWS file.
+Released as v4.2rc2.
+
+
+2005/02/11 17:20:15 phil
+Updated the copyright notice in the documentation.
+The recent fix in the object map code was broken. It should now be fixed
+properly.
+
+
+2005/02/06 14:39:02 phil
+Thanks to Ulli Berning, by default the build system now only exports a module's
+initialisation function. Added the -a flag to configure.py to restore the old
+behaviour.
+
+
+2005/02/04 18:29:16 phil
+All modules are now stripped by default on installation.
+Fixed a bug where namespaces' generated names were wrong so that they appeared
+to go AWOL.
+
+
+2005/01/29 10:15:15 phil
+Synced build system with Qt v3.3.4.
+
+
+2005/01/22 18:35:10 phil
+Updated the NEWS file.
+Released as v4.2rc1.
+
+
+2005/01/16 13:07:00 phil
+Minor fix to the documentation.
+
+
+2005/01/16 00:12:33 phil
+Fixed bug in new signal handling introduced when __module__/__name__ handling
+was fixed.
+
+
+2005/01/14 17:35:33 phil
+Backed out the changes that relaxed the interpretation of enums.
+Updated the copyright notices.
+Fixed the __module__ and __name__ attributes for wrapped classes and enums.
+sip.cast() will now cast to both sub and super-types of an instance.
+Added support for debug builds to the internal build system.
+
+
+2005/01/09 14:03:48 phil
+Relaxed the new enum type checking so that an integer can also be used where a
+named enum is expected. The previous rigorous type checking was likely to
+break too much code.
+
+
+2004/12/31 15:29:22 phil
+Fixed problems handling signals that were emitted by a QSignal instance.
+
+
+2004/12/30 21:51:11 phil
+Fixed bug in the object map code where unused slots weren't being reclaimed
+properly.
+
+
+2004/12/30 14:18:27 phil
+Fixed invalid format characters in calls to PyErr_Format().
+
+
+2004/12/26 18:51:39 phil
+The sip module now complains about an argument with a bad type in preference to
+having too many arguments - which is a more meaningful error message in that
+context.
+
+
+2004/12/26 12:26:30 phil
+Fixed a typo in the mkcustom.py script.
+
+
+2004/12/24 17:53:37 phil
+Restored the support for moc in the build system for SIP v3.
+Deprecated the -g flag to sip.
+Fixed a code generation bug related to virtual operators.
+
+
+2004/12/23 22:43:16 phil
+Added the custom directory.
+Added the section on custom interpreters to the documentation.
+
+
+2004/12/19 19:27:35 phil
+Make %PreInitialisationCode and %PostInitialisationCode subject to version
+control.
+Removed the calls to PyErr_Print() now that we detect exceptions in Python
+re-implementations.
+Changed the building of static modules so that they are used as libraries
+(still need to document this).
+
+
+2004/12/10 18:07:24 phil
+Fixed bug where members of global enums weren't being added to the module
+dictionary.
+Fixed debug builds on Windows.
+Fixed bug where invalid C code was being generated in the module init function.
+Fixed bug where enums defined in a super-class from another module would
+segfault when referenced.
+Fixed bug that meant that the C++/Python object map would continually grow.
+
+
+2004/12/05 11:27:27 phil
+Fixed silly bug in the new typedef handling.
+
+
+2004/12/04 23:51:39 phil
+Virtual and abstract operators are now supported.
+The __call__ slot no longer requires %MethodCode.
+Python exceptions raised in virtual re-implementations of C++ methods are now
+detected when they occur.
+
+
+2004/12/03 18:59:33 phil
+The /PyName/ annotation can now be applied to classes, variables and enums.
+
+
+2004/11/28 10:57:58 phil
+Added support for %PreInitialisationCode from Ulli Berning.
+Added a check for name clashes with named enums.
+
+
+2004/11/26 18:54:04 phil
+Completed the support for named enums having distinct types.
+The new signal support now handles typedefs (untested).
+
+
+2004/11/21 10:38:30 phil
+Build system fixes and README.HP-UX from Ulli Berning.
+
+
+2004/11/19 19:05:02 phil
+Initial support for named enums having distinct types. This should work as
+before. The new types are not yet exploited.
+
+
+2004/11/13 19:07:52 phil
+Generalise the build system treatment of INCDIR and LIBDIR to INCDIR* and
+LIBDIR*.
+
+
+2004/11/13 18:59:33 phil
+Fixed a feature where a factory function with a /TransferThis/ would always
+keep a C++ pointer, never finding out it was invalid, and mistakenly recognise
+the address when it was re-used.
+
+
+2004/10/30 13:44:50 phil
+Fixed bad bugs in new slot proxy handling.
+Exposed the voidptr, wrapper and wrappertype types in the sip module.
+Updated the documentation.
+
+
+2004/10/06 22:36:38 phil
+The new signal handling now supports mapped types.
+
+
+2004/10/05 07:56:53 phil
+Revert to a C-style cast for protected enums for some older compilers.
+
+
+2004/10/02 16:23:00 phil
+Fixed some warning messages.
+SIP v4.x no longer supports Qt v2.x and earlier (use SIP v3.x).
+Unrecognised signal argument types are now converted to NotImplemented rather
+than causing connections to fail.
+Fixed the new signal handling for Qt v3.0.x.
+The new signal handling has now been tested on Windows.
+
+
+2004/10/01 16:59:42 phil
+Initial support for the new dynamic signal handling that allows previously
+unknown signals to be connected to Python callables (needed for ActiveX
+support). At the moment mapped types and enums aren't (yet) supported. Qt
+versions 1 and 2 aren't (yet) supported. Untested on Windows.
+
+
+2004/09/29 18:31:22 phil
+Fixed significant bugs in the way the metatype was working. Operators are now
+properly inherited in sub-classes of wrapped classes.
+
+
+2004/09/24 16:56:23 phil
+Released as v4.1.1.
+
+
+2004/09/23 20:46:59 phil
+Really fixed the previous problem this time. The return type is ignored, but
+the re-implementation must be in a sub-class and not a different branch of the
+class hierarchy.
+
+
+2004/09/23 19:04:52 phil
+Fixed a problem with classes with a virtual and a non-virtual with the same
+signature but different return types in the hierarchy.
+
+
+2004/09/23 17:27:51 phil
+Fixed an incompatibility accidentally introduced with v4.1.
+
+
+2004/09/21 12:21:20 phil
+Minor build system fix for tmake.
+
+
+2004/09/21 11:00:39 phil
+Improved the test for the + and * operators context again - the previous change
+seems to have got lost.
+Added the /Numeric/ annotation to give more control over the above test.
+
+
+2004/09/20 18:18:16 phil
+Fixed a problem with deleting const instances.
+Released as v4.1.
+
+
+2004/09/15 08:46:45 phil
+Fixed bug with arguments that are const simple types.
+
+
+2004/09/14 07:31:13 phil
+Updated the NEWS file.
+Released as v4.1rc1.
+
+
+2004/09/11 17:25:12 phil
+Improved the test to see if the + and * operators should mean concat and repeat
+rather than add and multiply.
+
+
+2004/09/10 22:33:28 phil
+Re-implemented some of the virtual method handling so that the return type is
+ignored when comparing signatures. Not sure it is completely correct yet, but
+PyQt seems to be fine.
+
+
+2004/08/25 19:17:59 phil
+Fixed const bug - only MSVC complains.
+
+
+2004/08/24 17:32:39 phil
+Fixed a bug in the support for protected classes.
+
+
+2004/08/23 22:25:51 phil
+Added limited support for protected classes (sufficient for immediate
+requirements).
+
+
+2004/08/22 10:16:38 phil
+Fixed a bug with access controls in nested classes.
+
+
+2004/08/21 14:12:40 phil
+Added the cast() function to the sip module.
+
+
+2004/08/19 22:31:48 phil
+Added the /Abstract/ class annotation.
+Updated the documentation.
+
+
+2004/08/17 17:56:55 phil
+Added support for typedefs that define pointers to functions.
+
+
+2004/08/17 13:58:53 phil
+A method that starts a new thread will now make sure that a single thread state
+is created - rather than forcing PyGILState_Ensure() to create a new one each
+time.
+
+
+2004/08/17 09:24:07 phil
+Fixed bug in the internal build system.
+
+
+2004/08/15 23:35:20 phil
+Updated the build system from Qt 3.3.3.
+Added README.Fink.
+
+
+2004/08/04 14:05:57 phil
+Fixed the previous fix.
+
+
+2004/08/04 12:53:29 phil
+Fixed a bug where arguments passed to sipParseArgs() may have been const.
+
+
+2004/08/03 16:23:10 phil
+The SIP_PYCALLABLE type now supports the /AllowNone/ annotation.
+Fixed a documentation bug.
+
+
+2004/08/02 15:28:30 phil
+Mostly fixed a problem where a virtual handler without code was being used in
+preference to one with code.
+More type information is supplied when calling the default constructor.
+Fixed a bug with protected enums as arguments to protected methods.
+Handle protected abstract methods properly.
+
+
+2004/08/01 18:08:36 phil
+Fixed another typo in the documentation example code for %VirtualCatcherCode.
+
+
+2004/08/01 17:55:34 phil
+Fixed a typo in the documentation example code for %VirtualCatcherCode.
+
+
+2004/08/01 08:55:03 phil
+Added support for the threaded version of Qt/Embedded to the build system.
+
+
+2004/07/27 22:00:24 phil
+Added support for MSVC.NET to the build system.
+
+
+2004/07/19 18:42:48 phil
+Fixed a bug in sipconfig.read_version() so that version strings with embedded
+spaces are handled properly.
+
+
+2004/07/16 21:50:12 phil
+Change to the internal build system as Gentoo has prefixed the names of the
+docutils binaries.
+A few trivial changes to the documentation.
+
+
+2004/07/06 08:12:25 phil
+Released as v4.0.1.
+
+
+2004/07/05 16:12:02 phil
+Fixed a bug where dtors could be calling Python functions after the interpreter
+had been finalised.
+
+
+2004/07/05 10:48:04 phil
+Backed out the previous fix for functions that used /TransferThis/ and
+/Factory/ and fixed it properly in the sip module.
+
+
+2004/07/05 09:18:44 phil
+Fixed bug for methods that used /Factory/ and /TransferThis/.
+
+
+2004/07/02 07:27:56 phil
+Fixed problem with internal build system.
+
+
+2004/07/01 12:38:43 phil
+Attempts to wrap a NULL pointer now return None rather than raise an exception.
+Minor documentation fix.
+
+
+2004/06/30 22:36:17 phil
+Fixed a bug in the build system related to libraries.
+
+
+2004/06/23 14:01:38 phil
+Released as v4.0.
+
+
+2004/06/21 22:42:42 phil
+Switched the SIP4 branch to the trunk. (SIP v3 is now on its own SIP3 branch.)
+
+
+2004/06/20 21:45:18 phil
+Completed the documentation.
+
+
+2004/06/15 18:22:26 phil
+Added more documentation. SIP pseudo-types and annotations are now complete.
+
+
+2004/06/11 17:32:42 phil
+Deprecated the 'L' and 'K' format characters to sipParseResult().
+Added more documentation. The API for handwritten code is now complete.
+
+
+2004/06/09 16:28:20 phil
+Added more documentation. The directives section is now complete.
+
+
+2004/06/07 19:44:22 phil
+Added more documentation.
+Added the transfer() function to the sip module.
+
+
+2004/06/06 17:47:39 phil
+A few changes to the new wrapinstance() and unwrapinstance() functions.
+
+
+2004/06/05 17:30:45 phil
+Added some more documentation.
+Added the wrapinstance() and unwrapinstance() functions to the sip module.
+
+
+2004/06/04 21:32:52 phil
+Added some more documentation.
+
+
+2004/05/30 19:05:14 phil
+Fixed another benign bug in the build system.
+
+
+2004/05/30 18:06:00 phil
+Fix minor bug in the build system.
+
+
+2004/05/27 22:00:37 phil
+Updated the TODO list.
+Added support for Qt v2 non-commercial to the build system.
+Tidied up unused parameters, variables etc.
+Added support for the Borland compiler to the build system.
+
+
+2004/05/22 17:41:41 phil
+Released as v4.0rc4.
+
+
+2004/05/15 22:33:35 phil
+Operators will now recognise return values that have already been wrapped.
+
+
+2004/05/14 06:26:35 phil
+Fixed a bug where the wrong virtual handlers were being used from imported
+modules.
+
+
+2004/05/10 20:10:27 phil
+Fixed bugs related to generating calls to sipBuildResult().
+
+
+2004/05/04 16:00:17 phil
+Fixed the handling of .prl files.
+
+
+2004/05/01 17:10:27 phil
+Fixed a bug with virtual methods returning a class reference.
+Fixed a bug with hasattr() of a sip.wrapper type.
+
+
+2004/04/30 21:51:10 phil
+Fixed missing const_cast in variable handlers.
+Fixed missing #includes for classes used in global functions but defined in
+other modules.
+
+
+2004/04/24 22:46:22 phil
+Suppress the const and & when on the error return path for abstract functions.
+
+
+2004/04/24 09:07:33 phil
+Sync (again) to SIP v3 build system.
+
+
+2004/04/24 08:42:38 phil
+Sync the build system with SIP v3.
+
+
+2004/04/21 19:06:09 phil
+SIP now builds using MinGW.
+
+
+2004/04/19 21:57:51 phil
+Changes to the build system to support MinGW - not yet complete.
+
+
+2004/04/18 15:45:41 phil
+Added support for the evaluation version of Qt.
+
+
+2004/04/11 11:41:09 phil
+Reverted the recent change to sub-class convertors - the original code was
+correct.
+
+
+2004/04/10 18:17:30 phil
+Fixed a bug with legacy GIL management when the -g and -e flags were given.
+
+
+2004/03/30 22:48:17 phil
+Fixed a bad bug that meant that sub-class converters weren't working properly.
+
+
+2004/03/29 17:47:56 phil
+Fixed crash when an argument was a non-const mapped type with a non-zero
+default value.
+
+
+2004/03/17 23:56:40 phil
+Fixed a bug where /ArraySize/ was broken for long (or short) types.
+
+
+2004/03/16 18:14:48 phil
+Released as v4.0rc3.
+
+
+2004/03/15 23:53:21 phil
+Added some more documentation.
+
+
+2004/03/13 10:20:34 phil
+Fixed a problem with const struct pointers and MSVC .NET.
+
+
+2004/03/12 23:15:25 phil
+Fixed bugs where opaque classes were assumed to have a default ctor.
+
+
+2004/03/10 18:30:17 phil
+Fixed incompatibility with non-standard MSVC.
+#defines are now generated for enabled features.
+
+
+2004/03/06 15:39:24 phil
+Fixed problem with slot arguments being ignored for anything other than complex classes.
+
+
+2004/03/06 01:07:38 phil
+Fixed problem with static methods with a SLOT argument.
+
+
+2004/03/05 18:25:13 phil
+Improved the support for resolving multiple non-virtual base classes by
+removing the need for the hack for PyKDE.
+
+
+2004/03/04 23:02:57 phil
+Added support for resolving multiple non-virtual base classes.
+
+
+2004/03/03 21:35:54 phil
+Fixed a build system problem when DEFINES had more than one value.
+
+
+2004/03/02 21:02:53 phil
+Fixed a bug where private copy ctors in super-classes might not be detected
+properly.
+Fixed __str__() after breaking it when trying to fix inherited operators.
+
+
+2004/03/01 23:50:14 phil
+Fixed problems with classes containing private dtors.
+
+
+2004/02/29 19:57:04 phil
+Fixed a build system problem caused by copying a file from SIP v3 to the wrong
+place.
+
+
+2004/02/29 19:51:52 phil
+Updated build spec files from Qt v3.3.1.
+Updated the internal build system to exploit distcc.
+Fixed small bug in configure.py.
+Fixed a bug where operators were not inherited by wrapped C++ sub-classes.
+
+
+2004/02/16 23:36:08 phil
+Fixed problems in the new build system with spaces in directory names.
+Updated the documentation to reflect the (small) change in the build system
+API.
+
+
+2004/02/15 22:33:16 phil
+Added some more documentation.
+Updated the build system from SIP v3.
+
+
+2004/02/11 19:25:24 phil
+Added some more documentation.
+The new build system now supplies a sensible context specific default if
+install_dir is None.
+Fixed a bug when sipSelf was used in handwritten code.
+
+
+2004/02/08 12:17:13 phil
+Backed out the last change relating to ctor argument types - it was a feature,
+not a bug.
+
+
+2004/02/07 23:58:51 phil
+Fixed bug in validating ctor argument types.
+
+
+2004/02/07 17:37:36 phil
+Added Ulli Berning's patch to the build system to read Qt's .prl files. This
+should mean that PyQt should build against a static Qt library.
+
+
+2004/02/05 23:41:04 phil
+Change to the internal build system so that sip compiles under Windows without
+a hacked version of flex.
+Static C++ class instances are now wrapped with inline code rather that through
+a table. Hopefully this works round a problem reported by Ulli Berning with
+static linking under Windows due to C++ not defining the order in which static
+instances are instantiated.
+
+
+2004/01/31 23:08:41 phil
+Virtual handlers now respect the /Factory/ and /TransferBack/ flags.
+Updated the spec files from Qt v3.3.0.
+
+
+2004/01/29 19:20:49 phil
+Windows build system changes from Ulli Berning.
+
+
+2004/01/27 23:50:29 phil
+Fixed bugs with handling class references as /Out/ arguments.
+
+
+2004/01/18 15:14:49 phil
+The build system configuration files are now part of the CVS tree rather than
+being copied in from the local machine when building.
+
+
+2004/01/18 14:24:44 phil
+Fixed a compiler warning message in the SIP module.
+Fixed a bug where #includes weren't being generated when only needed by
+operators.
+
+
+2004/01/12 22:13:14 phil
+Fixed the corrupt #line directives when joining files.
+Released as v4.0rc2.
+
+
+2004/01/11 11:58:50 phil
+Fixed bug where the header files needed by static namespace methods weren't
+being #included.
+
+
+2004/01/10 17:41:34 phil
+Fixed a bug with static methods that connect to slots.
+
+
+2004/01/05 23:19:33 phil
+Fixed a bug handling some /In/ argument types.
+Fixed a bug that prevented a namespace's methods from being generated.
+
+
+2004/01/04 18:53:08 phil
+Minor updates to the build system.
+Completed the build system documentation.
+
+
+2004/01/02 18:41:28 phil
+Minor changes to the build system.
+Added some more documentation.
+
+
+2003/12/31 16:42:50 phil
+Fixed problem with virtual methods that return references.
+
+
+2003/12/29 10:26:38 phil
+Fixed namespace related bug when typing sipCpp in ctors.
+
+
+2003/12/28 19:30:55 phil
+Change to the build system to only use -soname for SIP v3.x (so MacOS/X should
+work again).
+
+
+2003/12/28 13:30:36 phil
+Fixed problems with thread handling. The semaphore.py example now works
+properly again.
+
+
+2003/12/27 15:42:05 phil
+Build system changes based on patches from Ulrich Berning.
+
+
+2003/12/26 19:30:25 phil
+Fixed bug where the not all .h files were being #included for signal
+signatures.
+
+
+2003/12/23 08:14:37 phil
+Added support for LITERAL_WHITESPACE in build system spec files.
+Added support for macros in braces in build system spec files.
+Made sure that trailing spaces in macros don't get lost.
+
+
+2003/12/21 17:29:10 phil
+Implemented sip.voidptr.asstring().
+
+
+2003/12/21 12:57:43 phil
+We now distinguish (automatically) between add and mul when applied to numbers
+and sequences because they have slightly different APIs.
+The sequence repeat and in-place repeat slots now don't convert their integer
+argument to a Python object.
+Number slots now support new-style numbers.
+
+
+2003/12/16 20:00:33 phil
+Changed the documentation so as not to suggest using -fno-rtti as it's bad
+advice if you are using KDE.
+
+
+2003/12/14 20:53:23 phil
+Make sure we don't lie to Python by saying we support new-style numbers when we
+don't (yet).
+Number methods return Py_NotImplemented rather than raise an exception.
+Fixed a reference count bug in sipParseArgs().
+
+
+2003/12/11 22:29:33 phil
+configure.py now doesn't complain if environment variables in the spec. files
+aren't defined (ie. $QTDIR).
+Properly defined setSetBool().
+Added the help about the -e flag to configure.py.
+
+
+2003/12/11 20:03:32 phil
+Changed the new build system to use LFLAGS_SONAME instead of RPATH for modules.
+
+
+2003/12/10 18:21:10 phil
+Fixed bug in configure.py that prevented empty build macros from being
+overridden on the command line.
+
+
+2003/12/09 23:02:51 phil
+Fixed bug with operators in classes in namespaces.
+Fixed bug with sub-class convertors and namespaces.
+Fixed problems with multi-dimensional __getitem__, __setitem__ and __delitem__.
+
+
+2003/12/06 21:04:17 phil
+Released as v4.0rc1.
+
+
+2003/12/06 21:00:25 phil
+Fixed problem with new build system when Qt support is disabled.
+
+
+2003/12/06 20:21:02 phil
+Fixed a bug in building a static module with the new build system.
+
+
+2003/12/05 19:42:58 phil
+Fixed a problem with methods that had an abstract version in the super-class
+hierarchy.
+
+
+2003/12/04 19:36:13 phil
+Changed the new build system to handle Borland a bit better.
+
+
+2003/12/04 00:16:19 phil
+Fixed a bug when connecting to a Python callable that is actually a wrapped C++
+method.
+
+
+2003/12/03 19:00:41 phil
+Make sure that the instance dictionary of a type exists.
+
+
+2003/12/02 21:28:11 phil
+Fixed a bug in the modified object map code. This fixes the last outstanding
+problem with user's test cases.
+
+
+2003/12/02 18:56:03 phil
+Fixed build problem on MacOS/X where it thought multiple -framework flags were
+unnecessary duplicates.
+
+
+2003/12/02 00:02:17 phil
+Changed the naming of names so they don't change when other names are added or
+removed.
+Added the start of the documentation.
+Several tidy ups to the object map code of the sip module.
+Changed the implementation of virtual handlers as it was keeping results alive.
+sipParseArgs() no longer garbage collects the result object being parsed.
+Add $(DESTDIR) to generated Makefiles.
+
+
+2003/11/25 23:09:12 phil
+Fixed silly typo in configure.py.
+
+
+2003/11/25 18:45:30 phil
+Fixed build system bug in handling line continuations in spec files.
+
+
+2003/11/24 23:21:19 phil
+Minor code tidy up in the sip module.
+
+
+2003/11/24 21:55:20 phil
+Cleared any exception before returning Py_NotImplemented.
+
+
+2003/11/23 17:02:53 phil
+More build system changes. PyQt now builds under the commercial and educational
+versions on Windows.
+Released as v4.0pre4.
+
+
+2003/11/22 20:54:44 phil
+Windows related changes to the new build system.
+Removed some of the old licensing stuff.
+
+
+2003/11/22 10:18:02 phil
+Fixed bug with the build file when not concatenating sources.
+Make sure the proxy header file #includes qobject.h.
+Successfully builds PyQt for the Zaurus.
+
+
+2003/11/22 00:52:15 phil
+Fix code that generates warning message when building PyQt for Qt v2.
+
+
+2003/11/22 00:06:43 phil
+More changes to the new build system related to building Qt v2.
+
+
+2003/11/21 23:06:56 phil
+More changes to the new build system. Tested with Qt Professional on Linux.
+
+
+2003/11/21 07:34:16 phil
+Renamed %Build back to %Makefile and deprecated it for SIP v4.
+Added the -b flag and removed the -m flag.
+Fixed the new build system so that it will build PyQt under Linux.
+
+
+2003/11/16 21:03:12 phil
+Changed the build system to generate Makefiles (and dumped SCons). DO NOT USE
+TO TRY AND BUILD PyQt UNTIL FURTHER NOTICE.
+
+
+2003/11/15 11:20:50 phil
+More changes to the new build system.
+
+
+2003/11/13 19:42:15 phil
+More changes to the new build system.
+
+
+2003/11/13 13:12:10 phil
+New build system changes. PyQt now builds correctly on Linux.
+
+
+2003/11/12 22:24:23 phil
+Updated the new build system.
+Filenames given to %Build no longer need to have an extension.
+Added the -j flag to generate concatanated source files.
+Changed the name of the header file containing the proxy class to conform to
+SCons way of doing things.
+Fixed the handling of __call__, __cmp__, __neg__ and __invert__.
+
+
+2003/11/05 20:31:25 phil
+Changes to the new build system for PyQt.
+
+
+2003/11/04 17:50:20 phil
+Tidying up of the new build system. The sipconfig.py module has better support
+for non-SCons build scripts.
+
+
+2003/11/03 22:56:38 phil
+Removed the old build system.
+Added the $L macro to generate the list of source files as a Python list.
+
+
+2003/11/03 19:44:27 phil
+More changes to the new build system. It now seems to work Ok for SIP, but not
+yet tested under Windows.
+
+
+2003/10/30 19:18:02 phil
+Added the start of the new SCons based build system.
+
+
+2003/10/29 13:50:47 phil
+Added "x11" to the default configuration for non-Windows, non-Mac.
+Make sure active virtual handlers don't look for Python methods after the
+interpreter has gone.
+Don't create a overwrite an instance dictionary when a wrapped object's
+__init__ method is called.
+
+
+2003/10/28 11:08:25 phil
+Released as v4.0pre3.
+
+
+2003/10/27 23:24:07 phil
+Completed the support for pointers and references to base types.
+
+
+2003/10/26 22:52:29 phil
+Added support for handling functions that return values via pointers and
+references. (Virtual functions not yet handled.)
+
+
+2003/10/24 08:35:18 phil
+Added the -g flag and the /ReleaseGIL/ option to allow fine control over the
+release of the GIL.
+
+
+2003/10/23 18:28:27 phil
+Removed deprecated macros from handwritten code.
+Renamed %Makefile to %Build.
+Renamed %PostInitialisationC++Code to %PostInitialisationCode.
+Renamed %HeaderCode to %TypeHeaderCode or %ModuleHeaderCode depending on the
+context.
+Renamed %C++Code to %TypeCode or %ModuleCode depending on the context.
+Allow structs within classes.
+Added %CModule - SIP can now wrap C libraries as well as C++ libraries.
+
+
+2003/10/22 18:42:08 phil
+The object mapper now checks for super-classes and sub-classes when determining
+if an C++ pointer has already been wrapped.
+%Import, %Include and %OptionalInclude can now take a relative (UNIX style)
+pathname. The directory containing the file will also be searched for files
+that it itself includes or imports.
+
+
+2003/10/21 16:41:32 phil
+Fixed a bug in the mapping of C++ addresses to Python objects that was probably
+causing the occaisional "random" "underlying C++ object has been deleted"
+exception to be raised.
+Fixed a bug in sipconfig.py which meant that PyQt modules for MacOS were
+misnamed.
+
+
+2003/10/21 13:38:47 phil
+Added support for namespaces - SIP v4 should now be as functional as SIP v3.
+
+
+2003/10/20 18:51:21 phil
+More MacOS/X related changes.
+More Windows porting changes.
+Revert to SIP v3 behaviour that allows wrapped methods and enums to be
+overwritten in an instance.
+Removed many warning messages when compiling the sip module with -Wall.
+Generated code now compiles without warning messages.
+
+
+2003/10/19 19:46:35 phil
+Initial changes the build system to handle the Mac.
+Portability fixes for Windows.
+
+
+2003/10/19 10:21:37 phil
+Now uses the new GIL functions (see PEP 311). This means it is no longer
+necessary to manage the GIL exactly right in handwritten code and makes it more
+likely that code will work with non-SIP generated extension modules that don't
+handle the GIL properly (ie. Boost).
+
+
+2003/10/18 16:42:40 phil
+Completed support for class variables.
+
+
+2003/10/17 16:45:47 phil
+Fixed a bug with ctors that had a Qt slot in their argument list (QToolButton
+is the only example in Qt).
+Tidied up the public sip.h file a little bit.
+Fixed the handling of common strings so that there are no name clashes between
+modules. This means that modules can be builtins of the interpreter.
+Renamed %VariableCode to %AccessCode.
+Started on support for variables.
+
+
+2003/10/16 15:52:11 phil
+Added support for dir() of a wrapped type.
+Changed the API to sipEmitToSlot() so that it takes the arguments on the stack.
+Virtual catchers now use sipCallMethod().
+Released as 4.0pre1.
+
+
+2003/10/15 18:21:19 phil
+Slot handlers are now only installed for slots that have actually been defined.
+This fixes the problem with QPopupMenu. The problem with quickly moving the
+cannon in the tutorials also seems to have gone away.
+All examples now appear to work.
+All unit tests work except for QString and QStringList.
+
+
+2003/10/14 22:37:30 phil
+Added sipTrace() to the module API.
+More debugging - all tutorials mostly work (except for an odd problem when
+dragging the cannon) and some of the examples (except for a problem with
+QPopupMenu).
+
+
+2003/10/11 21:58:49 phil
+More debugging - tut7.py now works.
+
+
+2003/10/09 19:12:47 phil
+Various changes so that PyQt now compiles.
+
+
+2003/10/07 18:55:10 phil
+Fix for protected enums as arguments to protected methods.
+Removed the 'O' and 't' format characters from sipParseArgs().
+Removed sipBadVirtualResultType() from the module API.
+Added sipBadCatcherResult(), sipCallMethod() and sipParseResult() to the module
+API.
+Added support for /TransferBack/ for function results.
+Added support for %VirtualCatcherCode.
+Removed support for %VirtualCode.
+
+
+2003/10/04 14:54:16 phil
+Added SIP_VERSION and SIP_BUILD to sip.h.
+Removed the 'K' format character from sipParseArgs().
+Added the 'b' format character to sipParseArgs().
+Added support for the /GetWrapper/ option flag.
+Added support for /GetWrapper/ to the 'J' format character to sipParseArgs().
+Added sipBuildResult() and sipClassName() to the module API.
+Renamed sipTransferSelf() to sipTransfer().
+Added support for SIP_SLOT, SIP_PYCALLABLE and SIP_QOBJECT.
+
+
+2003/10/01 14:01:21 phil
+sipParseArgs() now handles a single argument as well as a tuple.
+Removed the last vestiges of %MemberCode support.
+Added support for explicit C++ signatures.
+
+
+2003/09/28 12:06:00 phil
+Fully implemented Python special methods in the sip module.
+Added the SIP_PYTUPLE type.
+
+
+2003/09/26 23:38:35 phil
+Added support for the SIP v3 slots.
+Added /AllowNone/ to arguments.
+These changes were in the previous commit but I forgot to add them to the log.
+
+
+2003/09/26 23:36:18 phil
+Added support for %MethodCode.
+Added -w flag to enable warnings.
+Added the SIP_PYLIST and SIP_PYDICT types.
+Added PreHook and PostHook support to ctors.
+
+
+2003/09/21 12:08:00 phil
+Ported all outstanding fixes from SIP v3.
+
+
+2003/09/20 21:32:08 phil
+Ported the exception support from SIP v3.
+
+
+2003/09/19 15:31:16 phil
+The build system is now a copy of the one from SIP v3.
+Fixed bugs related to sub-classing wrapped types.
+Implemented the __str__slot.
+Added the SIP_PYSLICE pseudo-type.
+Added support for empty enum definitions.
+Added SIP_VERSION_STR to sip.h
+Added support for the 'L' format character.
+Added support for virtual dtors.
+Added dupport for %VirtualCode in dtors.
+Added operator support in the parser only.
+
+
+2003/04/15 17:56:27 phil
+Name strings are no longer shared between modules.
+PyQt now imports - non-lazy methods and handwritten code still to do.
+Python v2.3 is now required.
+
+
+2003/04/14 23:39:00 phil
+All of PyQt should now compile.
+Attribute handling is working (except for variables and non-lazy methods).
+Adding static class instances fails because we are currently relying on static
+ctors.
+
+
+2003/04/13 12:37:49 phil
+PyQt now compiles (except for the qtnetwork module because it includes nested
+classes.)
+
+
+2003/04/10 18:49:45 phil
+Lots of changes moving towards implementing new-style classes. sip compiles
+but, other than that, everything is broken.
+
+
+2003/04/05 17:32:11 phil
+Fixed a bug where templates weren't being parsed properly.
+Make sure classes only appear once in a hierarchy.
+
+
+2003/04/04 10:36:49 phil
+Added the %e format charcter to sipParseArgs() to handle enums.
+Removed all remaining inter-module dependencies. PyQt now builds and loads.
+
+
+2003/04/01 20:44:04 phil
+Added support for the educational version.
+Added the -r and -t flags to build.py based on patches from Hans-Peter Jansen.
+Changed the format of symbolic names from sipName_module_name to sipName_name.
+
+
+2003/03/31 22:29:31 phil
+Many more changes to eliminate inter-module dependencies.
+
+
+2003/03/26 22:23:43 phil
+Fixed all the remaining dependencies on the old-style SIP API.
+Many other bug fixes.
+sipQt.h is no longer needed.
+
+
+2003/03/25 17:51:28 phil
+Fixes so that PyQt now compiles - but modules do not yet load because of
+remaining symbol dependencies.
+
+
+2003/03/25 12:33:33 phil
+Converted the remaining old-style API calls to the new style.
+
+
+2003/03/24 19:49:01 phil
+Moved another load of functions from the old-style API to the new-style API.
+
+
+2003/03/23 13:34:27 phil
+Forward ported the fixes for private and protected dtors.
+Forward ported the -a flag for generating Scintilla API files.
+
+
+2003/03/16 16:21:01 phil
+Forward port the latest handling of the Python version number in build.py.
+Forward port the cast fixes for PyString_FromString().
+
+
+2003/03/01 14:42:24 phil
+Forward ported all the recent changes to SIP v3.
+
+
+2003/01/25 11:09:39 phil
+The names and sub-class convertors are now part of the new API.
+The sub-class convertors are now generated in the main module code instead of
+in the class file.
+
+
+2003/01/20 08:10:53 phil
+Added SIP_MAJOR_NR.
+The values of sipClass_* are no generated for the new API.
+
+
+2003/01/17 19:40:52 phil
+Removed the external API header file.
+The Python stub file is no longer generated.
+The instance variable hierachy tables are no longer needed.
+
+
+2003/01/14 09:41:59 phil
+The module APIs now have an optional version number so that imports of
+incompatible modules can be detected.
+
+
+2003/01/12 22:17:40 phil
+Added the table of modules to import to the main module definition.
+The list of classes is now ordered so that no class appears before any of its
+super classes.
+
+
+2003/01/05 15:54:32 phil
+Make sure that sipPyThis is always initialised in case a C++ ctor calls one of
+its own methods that has been re-implemented in Python.
+
+
+2003/01/04 17:16:41 phil
+Removed %ExposedFunction and %PythonCode.
+%PrePythonCode is now a no-op.
+Removed the -p command line flag.
+SLOT(), SIGNAL() and PYSIGNAL() are no longer generated by SIP.
+Removed the SIP_EXTERN/EXPORT/IMPORT nonsense in the module.
+Added the generation of the .h file that defines a module's external API.
+
+
+2002/12/28 17:37:00 phil
+The start of development of SIP v4.
+Dropped support for Python earlier than v2.2 and Qt earlier than v3.0.
+Start of the changes needed to make the SIP module a pure Python module rather
+than a hybrid module and shared library.
+
+
+2002/12/11 13:51:00 phil
+Ensure that generated Makefiles have a later timestamp than the project file.
+Released as v3.5.
+
+
+2002/12/10 23:12:03 phil
+Build change where FORCE wasn't being handled properly now that it is version
+dependent.
+
+
+2002/12/05 18:26:47 phil
+Finalisation fixes (thanks to Kristine Sato).
+
+
+2002/12/05 17:27:33 phil
+Build system change for Qt v3.0.x and FORCE in Makefiles.
+
+
+2002/11/28 09:03:40 phil
+Fixed bug in handling of char * class variables introduced in the previous fix.
+
+
+2002/11/26 12:46:01 phil
+Make sure that flex and bison generated files have later timestamps than their
+sources.
+Removed the automatic test for -fno-exceptions and added the -f flag to the
+build system so that it can be explicitly set.
+
+
+2002/11/25 16:51:50 phil
+Fixed generated code for char and unsigned char class variables - thanks to
+Toby Sargeant.
+
+
+2002/11/14 22:31:28 phil
+Minor build changes for Windows.
+
+
+2002/11/06 23:56:10 phil
+The weak reference protection now works if the slot is a wrapped method as well
+as a user written Python method.
+The type name of the sipThis object is now "sip.wrapper" rather than being the
+name of the wrapped class.
+Deprecated the 'C' format character for sipParseArgs().
+Added the 'X' format character for sipParseArgs().
+Added /Constrained/ support for float and double types.
+
+
+2002/11/05 15:08:18 phil
+Addition of new licenses to the internal build system.
+The TODO files is now added to the distribution.
+
+
+2002/10/18 17:29:36 phil
+More build system changes to fix directory names containing spaces.
+
+
+2002/10/12 23:47:08 phil
+Added the 'x' format character to sipParseArgs() to convert sequence indices.
+Added sipConvertFromSequenceIndex().
+
+
+2002/10/11 14:12:52 phil
+Fixed the build system where the Python directory path contained spaces.
+
+
+2002/10/05 13:35:06 phil
+Changed the internal build system so that internal development versions are
+marked as such.
+The user build system now handles conflicting licenses.
+
+
+2002/09/21 17:58:53 phil
+Added the NC version to allow others to build modules that conform to the Qt
+non-commercial license.
+
+
+2002/09/18 18:48:17 phil
+Fixed a phantom exception raised when connecting a signal to a wrapped method
+(rather than using SLOT() on the method).
+
+
+2002/09/18 00:30:09 phil
+"unsigned int" is now supported.
+
+
+2002/09/10 12:38:35 phil
+Minor documentation changes.
+Released as v3.4.
+
+
+2002/09/08 21:36:16 phil
+Fixed a couple of code generation bugs related to structs.
+
+
+2002/09/08 12:20:14 phil
+The user now has to explicitly accept any non-GPL license.
+
+
+2002/09/07 20:49:31 phil
+Added support for defining structs.
+
+
+2002/09/06 17:48:08 phil
+Added the new licenses and changed the internal build process to support them.
+Changed %License so that the timestamp is now a string.
+Updated the NEWS file.
+
+
+2002/09/02 12:03:37 phil
+Added sipAddLicense() to the SIP module.
+Added the %License keyword.
+
+
+2002/08/27 19:06:05 phil
+Added the %OptionalInclude directive that does the same as %Include but doesn't
+complain if the file doesn't exist.
+Added a delay to the build system before running make to avoid potential
+timestamp problems.
+
+
+2002/08/17 00:44:57 phil
+Brought the NEWS file up to date.
+Added Fredrik Juhlin's patch to the build system to support debug builds.
+
+
+2002/08/06 18:35:53 phil
+Fixes to the build system for Python 1.5.
+
+
+2002/08/06 17:49:12 phil
+Fixed a bug where const wasn't being taken into account when comparing argument
+types.
+
+
+2002/07/14 16:09:40 phil
+Added the -e flag to the build system to allow the destination directory of the
+SIP header files to be explicitly specified.
+
+
+2002/07/12 13:03:59 phil
+Fixed a problem with detecting the Qt version in the build system.
+Released as 3.3.2.
+
+
+2002/07/11 22:53:30 phil
+More minor changes to the internal build system.
+
+
+2002/07/11 20:57:32 phil
+Internal build system changes.
+
+
+2002/07/09 22:06:42 phil
+Added support for Qt 3.0.5.
+Released as 3.3.1.
+
+
+2002/07/07 19:20:11 phil
+Windows fixes for the build system.
+Released as 3.3.
+
+
+2002/07/05 08:55:37 phil
+The build system now ignores qmake if present when building for Qt 1.x and 2.x.
+
+
+2002/07/03 17:41:37 phil
+Build system changes for Windows.
+Fixed a thread problem for Python 2.0.x and earlier. (Untested.)
+Released as 3.3rc3.
+
+
+2002/07/02 18:33:59 phil
+Fixed a probably false exception in sipTransferSelf().
+Fixed a bug in the -z flag handling.
+
+
+2002/07/02 15:00:16 phil
+Added the -x flag to specify a disabled feature.
+Removed all of the version handling as it is now all dealt with in the parser.
+Removed the -f flag and all support for the helper program as it is no longer
+needed.
+Removed %FeatureCode and %ExportedFeaturesCode.
+Added the -z flag to specify a file from which subsequent arguments are read
+from.
+
+
+2002/06/30 16:20:48 phil
+Minor changes to the build system messages.
+Removed support for the -r flag in the build system as tmake handles -fno-rtti.
+
+
+2002/06/29 18:53:49 phil
+The build system now determines the Qt version by parsing qglobal.h rather than
+compiling and running a program (which is no good when cross compiling).
+Added the 'K' format character to sipParseArgs().
+
+
+2002/06/28 22:46:20 phil
+More build.py fixes.
+Changed the build system so that project files are restored to their original
+contents.
+
+
+2002/06/28 12:41:10 phil
+Fixed a bug in the build system where the path to tmake was explicitly
+specified.
+Added the -r flag to the build system to explicitly enable -rno-rtti.
+Released as 3.3rc2.
+
+
+2002/06/23 19:45:33 phil
+Added support for the evaluation version of Qt to the build system.
+
+
+2002/06/22 14:25:14 phil
+Reverted the change that stopped abstract classes from being created (because
+it also stopped them from being sub-classed).
+Released as 3.3rc1.
+
+
+2002/06/22 00:56:29 phil
+Fixed typo in build.py.
+
+
+2002/06/22 00:49:59 phil
+Updated the TODO list.
+Fixed a bug where abstract classes weren't being detected properly.
+An exception is now raised when attempting to explicitly instanciate an
+abstract class.
+Methods are now generated for pure virtual methods.
+The default installation directory for sip under UNIX/Linux is now
+/usr/local/bin rather than where the Python executable is installed.
+Added the -i flag to build.py to allow the directory containing the Qt header
+files to be explicitly specified.
+
+
+2002/06/20 18:50:49 phil
+Changes to the build system to support Qt/Embedded.
+Changes to the build system to handle the lack of site-packages under Windows
+before Python v2.2.
+
+
+2002/06/19 07:51:59 phil
+Fixed a bug that prevented SIP being built with support for Qt v2.x.
+
+
+2002/06/17 08:35:34 phil
+Fix for the build process for when Qt support is disabled.
+
+
+2002/06/16 23:14:29 phil
+Implemented the new build system based on tmake/qmake.
+Removed all vestiges of the old build system.
+
+
+2002/06/16 15:18:37 phil
+Changed the build-common target to dist.
+Fixed the build script to cope with an apparent feature of tmake v1.8.
+
+
+2002/06/14 16:34:53 phil
+The SIP module now works with Python versions earlier than 1.6 again.
+
+
+2002/06/13 21:26:06 phil
+Fixed a bug in the generation of the proxy header file.
+
+
+2002/06/13 16:22:40 phil
+Forgot to add the new versions.c source file.
+
+
+2002/06/13 16:21:52 phil
+Slightly changed the version number format in generated code so that it looks
+better with snapshots.
+The helper program now takes an optional argument which is the output file to
+use instead of stdout.
+Changed the internal implementation of versions so that it is more flexible.
+The proxy header file is now moc-ed and linked separately.
+
+
+2002/05/25 16:45:12 phil
+Updated the (private) TODO list.
+
+
+2002/05/25 16:23:27 phil
+Further minor tweaks for the new build system.
+Set the version number to v3.2.4 - but this is actually slightly later than
+that version.
+
+
+2002/05/25 11:02:57 phil
+More work on the new build system. Untested on Windows.
+
+
+2002/05/25 09:49:43 phil
+Initial import of SIP into the Riverbank CVS repositiory.
+
+
+2002/05/21 16:09:57 phil
+Whoops - left a debug statement in.
+
+
+2002/05/21 14:38:36 phil
+Fixed a bug in sipParseArgs() using stdarg functions badly. It only seemed to
+cause a problem on some platforms (eg. Linux PPC).
+
+
+2002/05/17 19:02:28 phil
+Minor documentation changes.
+Released as v3.2.4.
+
+
+2002/05/16 15:19:42 phil
+Removed MacOS X support.
+
+
+2002/05/15 17:17:36 phil
+A final (I think) fix for the problem with maintaining the extra reference for
+instances where C++ owns the wrapped object and also when objects are
+re-wrapped while their dtor chain is being executed.
+The .spec file now works out the Python directories rather than them being
+hardcoded.
+
+
+2002/05/13 08:48:56 phil
+Fixed a bug where /TransferThis/ wasn't increasing the reference count of the
+Python instance being transferred.
+Released as v3.2.3.
+
+
+2002/05/11 17:30:22 phil
+Final documentation changes.
+Released as v3.2.2.
+
+
+2002/05/09 00:18:32 phil
+Fixed a bug where threads weren't being handled properly when calling Qt
+emitters.
+
+
+2002/05/07 21:14:57 phil
+Added information about "--without-x" to the MacOS installation notes.
+Fixed a bug in the object map code that was trying to free non-malloc'ed
+memory.
+Keep a separate flag as to whether C++ has an extra reference to the Python
+instance rather than assume is does if the C++ object is not owned by Python.
+This should fix a very obscure memory leak that happends when C++ objects get
+re-wrapped while they are being destroyed.
+
+
+2002/05/05 13:45:13 phil
+Fixed a bug where the sizes of attribute tables were wrong when optional
+features were disabled.
+Released as v3.2.1.
+
+
+2002/05/04 14:17:39 phil
+Minor tweak to fix a build problem with Windows.
+Released as v3.2.
+
+
+2002/05/03 22:34:37 phil
+Added INSTALL.MacX.
+
+
+2002/05/03 09:23:11 phil
+Fixed NULL pointer bug in sub-class conversions.
+
+
+2002/05/01 22:51:46 phil
+Fixed sip.pro to revert to generating libsip.dll rather than sip.dll.
+Replaced the use of PyCObject with the new sip.voidptr type.
+
+
+2002/04/30 07:54:59 phil
+configure will now search for Qt v3.0.4.
+
+
+2002/04/29 18:09:16 phil
+Fixed a bug where sub-class convertors were being generated for imported
+classes.
+
+
+2002/04/29 10:16:29 phil
+configure doesn't search for X11 for Qt/E.
+Fixed the bug where the class object for namespaces was being incorrectly
+exported.
+
+
+2002/04/27 14:16:25 phil
+Fixed a bug in the SIP library Makefile.am.
+Fixed the bug in the thread support that was causing the problem with the PyQt
+semaphore.py example.
+Changed the way %ConvertToSubClassCode worked so it is closer to the old
+implementation and won't break if it comes across internal classes that it
+doesn't recognise.
+
+
+2002/04/23 09:09:07 phil
+Fix to SIP_[UN]BLOCK_THREADS for when thread support is disabled.
+
+
+2002/04/22 21:31:05 phil
+Explicitly include pythread.h.
+Changed the Windows installation instructions to put things in site-packages.
+Added -module to the libtool flags.
+Added sipMapStringToClass() and sipMapIntToClass() for %ConvertToSubClassCode.
+
+
+2002/04/21 19:08:02 phil
+Added support for the pseudo-type SIP_PYOBJECT.
+Added the 'P' format character to sipParseArgs().
+
+
+2002/04/18 23:16:29 phil
+Allow '!' to be applied to platforms.
+
+
+2002/04/18 12:09:27 phil
+configure no longer fails if X11 couldn't be found (for MacOS X).
+Fixed a bug in the parsing of namespaces.
+
+
+2002/04/16 18:56:33 phil
+Fixed a problem building under Windows.
+
+
+2002/04/16 18:16:55 phil
+Minor build portability change for MacOS/X.
+
+
+2002/04/16 14:23:21 phil
+Replaced all the old thread support with explicit support for classes that can
+create new threads.
+Removed /ReleaseLock/ - the Python lock is released for any call to C++, not
+just selected ones.
+Added /CreatesThread/ and /NewThread/.
+SIP_USE_DLL is no longer needed, but SIP_MAKE_MODULE_DLL is now needed when
+compiling a SIP generated module under Windows.
+
+
+2002/03/30 00:48:46 phil
+Sub-class convertors are now called for any sub-class of the base class - even
+if they don't provide their own convertor.
+
+
+2002/03/24 22:19:28 phil
+Added support for modules registering sub-class convertors.
+
+
+2002/03/22 10:39:23 phil
+Released as v3.1.
+configure will now use qt-mt in preference to qt if it finds both.
+
+
+2002/03/20 15:57:54 phil
+configure now handles Qt v3.0.3.
+
+
+2002/03/19 00:19:10 phil
+Fixed typo in INSTALL.win32.
+Documentation changes prior to the release of v3.1.
+
+
+2002/03/17 17:36:30 phil
+Fixed bug where functions defined in a namespace weren't being generated.
+
+
+2002/03/12 19:29:19 phil
+Upgraded to autoconf-2.53 and automake-1.6.
+
+
+2002/03/09 18:17:55 phil
+Various build changes for Windows.
+The variables that hold the values parsed by sipParseArgs() are no longer
+declared as const if there is no default value.
+The %PrePythonCode is now generated before the import of a maodule's C++ code.
+
+
+2002/03/04 21:06:37 phil
+Made sure all the autoconf/automake/libtool generated files are updated.
+
+
+2002/03/04 20:57:46 phil
+SIP now compiles again.
+Fixed the bug where exceptions sometimes appeared to be raised by Python
+re-implementations of C++ virtual methods.
+
+
+2002/03/04 17:17:12 phil
+Using /TransferThis/ in a non-ctor is now detected as an error.
+
+
+2002/02/25 16:24:35 phil
+Method and enum tables are now sorted and searched with a binary search instead
+of a linear search.
+Individual values of enums are now under version control.
+
+
+2002/02/24 14:59:04 phil
+Ctors now support /ReleaseLock/.
+
+
+2002/02/24 01:30:02 phil
+configure now searches for Qt v3.0.2.
+SIP now handles protected static methods.
+Added the /NonLazy/ option.
+Added the 'n' format character to sipParseArgs() to support non-lazy methods.
+Removed the __sipDtor__ and __sipStr__ builtins.
+The __del__ method is created by the SIP module at run-time when needed.
+Removed all of the special method handling.
+
+
+2002/02/08 15:52:55 phil
+The AutoGen option now takes an optional feature name (needed for PyKDE2).
+
+
+2002/01/28 11:07:47 phil
+The sip library is now a Python module.
+
+
+2002/01/09 00:37:16 phil
+Class enums are now lazy.
+
+
+2002/01/08 20:15:47 phil
+The SIP library now uses PyObject_Del() rather than PyMem_DEL() for Python v1.6
+and later.
+Fixed a code generator bug related to nested features.
+
+
+2002/01/03 01:02:02 phil
+Fixed a bug where feature tests were being generated when thay should have been
+unconditional.
+Added the -f flag to specifically generate the helper program.
+Added %ExportedFeaturesCode.
+Added the $B and $H macros.
+The %Makefile object file extension is now optional and defaults to ".o".
+
+
+2001/12/27 12:15:44 phil
+Replaced %SecondaryVersion with %Platforms and %Feature.
+Removed %ImportWithTimeline.
+Added support for Qt/Embedded.
+Replaced %VersionCode with %FeatureCode.
+%If now supports logical ors or platforms and/or features.
+
+
+2001/12/09 11:39:57 phil
+configure now looks for Qt v3.0.1.
+
+
+2001/12/01 18:35:59 phil
+Used AC_HELP_STRING throughout configure.ac.
+
+
+2001/11/25 18:24:55 phil
+Upgraded libtool to v1.4.2.
+Fix for attribute lookup for classes with no attributes (eg. namespaces).
+
+
+2001/11/17 17:11:37 phil
+Fixed bugs in operators for "setitem" and "getslice" for sequence methods.
+
+
+2001/11/17 14:41:38 phil
+%ConvertToTypeCode must now handle None objects.
+sipConvertToCpp() now handles None objects.
+Fixes to configure.ac.
+The module name is now passed in at runtime rather than being hardcoded (thanks
+to Andreas Gerstlauer).
+Ownership is only transferred if it really has changed.
+
+
+2001/11/11 19:05:36 phil
+configure will search for Qt v2.3.2.
+Fixed the memory leak when calling Python slots (thanks to Andreas Gerstlauer).
+Another attempt at fixing the problem with generating the right Python super
+classes for PyKDE2.
+Generate an error message if handwritten code is provided for signals.
+
+
+2001/10/28 10:32:47 phil
+Backed out the change to use __sipThis rather than sipThis.
+
+
+2001/10/26 23:37:26 phil
+ALtered the lexer/parser so that C++ methods can have names starting with "__",
+which means that .sip files that define special methods must also be changed.
+The library now uses the C API for weak references for Python v2.2 and later.
+Added the %PostInitialisationC++Code directive.
+Replaced "sipThis" with "__sipThis".
+Added __sipStr__ to replace str() in __str__() methods so that unicode() on a
+QString works properly.
+
+
+2001/10/21 13:54:14 phil
+Fixed bug where all the fields of a mapped argument type weren't being
+initialised.
+Fixed bug where the sipCpp pointer has the wrong type for a protected method of
+a class in a namespace.
+
+
+2001/10/19 23:29:46 phil
+Added the 'N' format character to sipParseArgs().
+
+
+2001/10/12 22:49:23 phil
+Literal strings are no longer cached because their contents are used in the
+cache name but they might not be valid characters for an identifier.
+Fixed a bug where %ImportWithTimeLine on a module that has already been
+imported didn't inherit the time line.
+Fixed a bad bug where the "object is on the heap" flag wasn't being
+initialised.
+
+
+2001/10/07 18:48:39 phil
+Fixed generation of proxy object for modules without signals.
+Fix possible bug with handling protected enums (my version of gcc doesn't
+complain).
+
+
+2001/10/06 18:17:23 phil
+configure now handles multi-threaded Qt.
+Correct header files now generated for mapped types based on the same template
+being defined in different modules.
+
+
+2001/10/04 21:30:10 phil
+By default, a class inherits its header code from the enclosing scope.
+Mapped types based on templates now automatically include the header files for
+the types of the template parameters.
+
+
+2001/09/30 10:44:26 phil
+Bug fixing of the new sipParseArgs() code.
+
+
+2001/09/28 23:11:43 phil
+Many changes to sipParseArgs(): it now returns the number of successfully
+parsed arguments; the '-' and 'I' formatting characters are no longer
+supported; the 'm', 'p', 't', 'q', 'Q', 'y', 'Y', 'J' and 'M' formtting
+characters have been added; it now does all argument conversions.
+Static and non-static methods can now be mixed.
+Removed the %CanConvertToType directive.
+
+
+2001/09/23 19:55:51 phil
+Fixed bug in adding a scope to enum values.
+
+
+2001/09/23 14:21:53 phil
+Fixed code generation bug with const signal arguments.
+Fixed generation of calls to sipForceConvertTo_*() functions.
+Header code is now generated before used includes in interface files.
+Protected enums are now handled properly again.
+
+
+2001/09/16 18:08:19 phil
+Changed the method of preventing moc generated files being included with the
+distribution - needed by the latest automake.
+
+
+2001/09/14 15:18:05 phil
+Added the /AutoGen/ options and removed the hardcoded handling of moc generated
+methods.
+Fixed the #include of a non-existent interface file in the main module.
+Fixed a bug where a cached name was being associated with the wrong module.
+Fixed an indentation bug when generating Python code for namespaces.
+Fixed a bug where global enums after a class definition were incorrectly
+generating errors.
+
+
+2001/09/07 16:04:49 phil
+Fixed a bug where a bad number methods table was being generated.
+Upgraded to libtool-1.4.1.
+
+
+2001/09/02 16:39:48 phil
+Fixed bug where the header file for a class's super classes wheren't being
+included if the class was in an imported module.
+
+
+2001/09/01 02:37:46 phil
+The first parameter of sipConvertFrom_*() for mapped types is no longer const.
+Upgraded to autoconf-2.52 and automake-1.5.
+
+
+2001/08/10 17:52:30 phil
+Fixed missing popVersion() in gencode.c.
+
+
+2001/08/10 14:59:17 phil
+Python classes that have to be imported are done so at the start of the module,
+not immediately before they are first needed.
+
+
+2001/08/06 20:08:19 phil
+Fixed a problem registering a class that doesn't exist in a particular
+secondary version.
+
+
+2001/08/01 22:17:47 phil
+More build changes for Qt-NC.
+tr() is now properly handled for Qt v2.3.0 and earlier.
+
+
+2001/07/30 22:48:21 phil
+The contents of namespaces are now effectively public.
+Changed AMTAR to TAR.
+Generated Windows Makefiles that support Qt-NC (untested).
+
+
+2001/07/28 22:40:44 phil
+Fixed bug in sipRegisterClass()'s handling of nested scopes.
+
+
+2001/07/28 06:45:41 phil
+Changed sipRegisterClasses() to handle nested classes and namespaces.
+The sipClassDef structure now has an extra field to identify the enclosing
+scope.
+
+
+2001/07/27 22:28:19 phil
+sipConvertFrom_*() for mapped types now leaves the handling of a NULL pointer
+to the handwritten code rather than converting it to None.
+The same namespace can be defined many times, so long as they are in the same
+module.
+Fixed a problem testing for -fno-exceptions.
+Fixed problem building with Qt support disabled.
+Fixed small code generation bug for virtual handlers and nested classes.
+Fixed an extraneous const that Windows MSVC doesn't like.
+
+
+2001/07/21 15:57:20 phil
+Replaced %PrimaryVersion and %PrimaryOrder with %Timeline.
+Added %ImportWithTimeline.
+The -t switch can now be given any number of times.
+These changes now means that version control works properly across modules so
+that (for example) SIP doesn't try to generate bindings that support invalid
+combinations like Qt v1.x and KDE v2.x.
+
+
+2001/07/20 23:35:04 phil
+Completed the support for namespaces and nested classes.
+sipCallCtor() now handles namespaces.
+Added the SIP_SIGNAL pseudo-type.
+Replaced %Version and %PrimaryVersions with %PrimaryVersion, %SecondaryVersion
+and %PrimaryOrder.
+
+
+2001/07/17 07:39:58 phil
+Added the %MappedType directive - particularly for templates.
+Added support for namespaces and nested classes - not yet finished.
+Removed the Version keyword so that it can be used for class names.
+
+
+2001/07/01 14:31:35 phil
+configure now looks for Qt v2.3.1.
+
+
+2001/06/05 21:41:39 phil
+Added the relevant files to build sip.exe under Windows (not tested yet).
+The Windows Makefiles (now Borland as well as MSVC) are created automatically
+as part of the "make dist" process.
+
+
+2001/06/04 21:38:18 phil
+Some Windows portability changes.
+
+
+2001/06/02 17:00:21 phil
+C-style comments can now be used in .sip files.
+Methods automatically generated by moc (particularly tr()) are now handled
+properly.
+
+
+2001/05/30 21:20:07 phil
+Added the /Constraint/ option and support for it to sipParseArgs().
+
+
+2001/05/23 22:25:54 phil
+QObject.blockSignals() now blocks Python signals as well as Qt signals.
+
+
+2001/05/23 21:13:18 phil
+Fixed problems when default arguments are function calls.
+Added support for QObject.sender() to be able to be implemented properly.
+Fixed the problem when a slot disconnects itself.
+
+
+2001/04/29 16:23:09 phil
+Minor configuration changes.
+
+
+2001/04/22 15:22:52 phil
+Upgraded to automake v1.4d.
+
+
+2001/04/19 22:09:32 phil
+Final changes for the release of v2.4.
+
+
+2001/04/08 13:39:02 phil
+Upgraded to libtool v1.3d.
+
+
+2001/03/10 00:43:37 phil
+Fixed compile problems with Python earlier then v2.1.
+
+
+2001/03/07 20:17:47 phil
+The library now tidies itself up when Py_Finalize() is called.
+
+
+2001/03/06 09:29:05 phil
+Fixed minor code generation bugs with Python special methods.
+
+
+2001/03/05 23:16:12 phil
+Added support for Python v2.1 rich comparison operators.
+
+
+2001/03/05 16:42:18 phil
+Added support for the in-place operators introduced in Python v2.0.
+Python slots are now wrapped in weak references which means that when the
+programmer forgets to keep a slot alive it won't core dump.
+
+
+2001/03/01 19:21:58 phil
+configure now uses the Python executable to determine where Python is
+installed.
+
+
+2001/02/10 12:09:11 phil
+Fixed bug in sipCommonDtor() so that it acquires the Python lock before calling
+Python library functions.
+
+
+2001/02/04 14:37:10 phil
+Configure now checks for Qt v2.2.4 and Python v2.1.
+Released as v2.3.
+
+
+2001/01/23 23:36:51 phil
+Added the -p switch and the $m macro.
+
+
+2001/01/09 16:07:55 phil
+The library will raise an exception if a program tries to inherit from more
+than one wrapped class.
+
+
+2000/12/24 18:30:09 phil
+Fixed a bug that meant some signal proxies were not being generated properly
+(only affected QMovie).
+When a C++ instance takes ownership, it also takes a reference to the Python
+object as well.
+Updated the documentation for v2.3.
+
+
+2000/12/19 14:48:31 phil
+Added the ability to add pre- and post-call hooks. Added the sipCallHook()
+function to implement them.
+
+
+2000/12/15 11:18:00 phil
+Added a couple of missing Python exceptions.
+
+
+2000/12/13 10:41:12 phil
+Updated the configuration to look for Qt v2.2.3.
+
+
+2000/12/12 17:48:53 phil
+Changed sipParseArgs() to take an extra parameter to enable better error
+messages to be reported.
+Changed the sipNo*() functions to report the better messages.
+Changed the code generator to use the changed sipParseArgs().
+
+
+2000/11/05 20:56:28 phil
+Added the $P macro.
+Backed out the change making the wrapper class dtors virtual (causes problems
+under Windows).
+Released v2.2.
+
+
+2000/11/04 11:06:11 phil
+Made the wrapper class dtor virtual to avoid compiler warning messages.
+Fixed proxy class generation for modules that don't define any new signals.
+
+
+2000/11/02 15:03:13 phil
+Minor compile fixes (why is it always RedHat?).
+Added the %Copying directive.
+Clarified the license regarding generated code.
+
+
+2000/10/18 16:20:53 phil
+Final tidying up for the release of v2.1.
+
+
+2000/10/15 20:41:24 phil
+Finally fixed the problem with signal signatures defined with SIP_CON_SLOT.
+Updated the documentation for v2.1pre1.
+
+
+2000/10/13 19:00:17 phil
+Fixed really nasty segv with complex Python expressions where the wrapped
+object was (legitimately) outliving the class instance.
+
+
+2000/10/11 17:23:05 phil
+Slot types that are only specified by SIP_CON_SLOT (and not as a signal) are
+now handled properly.
+
+
+2000/10/11 13:34:03 phil
+Added the ability to provide handwritten code for dtors.
+Added the sipGetThisWrapper() function to the SIP library.
+
+
+2000/10/02 21:46:56 phil
+Fixed the bad code generated for Python special methods (ie. operators).
+
+
+2000/10/01 12:32:19 phil
+Slots that take fewer arguments than the number supplied by a signal will not
+cause an exception - just like Qt.
+
+
+2000/10/01 00:44:57 phil
+Fixed the signal handling bug introduced a couple of days ago while trying to
+fix another signal handling bug.
+
+
+2000/09/29 22:28:26 phil
+When a wrapped class instance is deleted it is now guaranteed that the
+underlying object will be deleted after all of the instances variables. This
+avoids some potentially very subtle bugs.
+
+
+2000/09/23 18:07:05 phil
+Connecting Python signals to Qt slots (expressed using SLOT()) now works.
+Increased the library version number to 3.0.1.
+
+
+2000/09/20 10:57:10 phil
+Tidy up after moving the CVS tree to theKompany.com CVS repository.
diff --git a/python/sip/LICENSE b/python/sip/LICENSE
new file mode 100644
index 00000000..70b9d04b
--- /dev/null
+++ b/python/sip/LICENSE
@@ -0,0 +1,45 @@
+RIVERBANK COMPUTING LIMITED LICENSE AGREEMENT FOR SIP 4.6
+
+1. This LICENSE AGREEMENT is between Riverbank Computing Limited
+("Riverbank"), and the Individual or Organization ("Licensee") accessing
+and otherwise using SIP 4.6 software in source or binary form and its
+associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, Riverbank
+hereby grants Licensee a nonexclusive, royalty-free, world-wide license
+to reproduce, analyze, test, perform and/or display publicly, prepare
+derivative works, distribute, and otherwise use SIP 4.6 alone or in
+any derivative version, provided, however, that Riverbank's License
+Agreement and Riverbank's notice of copyright, i.e., "Copyright (c) 2004
+Riverbank Computing Limited; All Rights Reserved" are retained in
+SIP 4.6 alone or in any derivative version prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates SIP 4.6 or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to SIP 4.6.
+
+4. Riverbank is making SIP 4.6 available to Licensee on an "AS IS"
+basis. RIVERBANK MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, RIVERBANK MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF SIP 4.6 WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. RIVERBANK SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF
+SIP 4.6 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING SIP 4.6,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between Riverbank
+and Licensee. This License Agreement does not grant permission to use
+Riverbank trademarks or trade name in a trademark sense to endorse or
+promote products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using SIP 4.6, Licensee
+agrees to be bound by the terms and conditions of this License Agreement.
diff --git a/python/sip/NEWS b/python/sip/NEWS
new file mode 100644
index 00000000..919527ad
--- /dev/null
+++ b/python/sip/NEWS
@@ -0,0 +1,198 @@
+v4.6 10th April 2007
+ - Added support for wchar_t.
+ - The -g command line option releases the GIL whenever a call is made to the
+ wrapped library.
+ - Added the /HoldGIL/ annotation to explicitly retain the GIL when calling a
+ particular function in the wrapped library.
+ - Added sipFindClass() and sipFindNamedEnum() to the public API.
+ - /TransferThis/ may be specified more than once.
+ - Added support for __truediv__ and __itruediv__.
+ - The SIP code generator and module may be built as universal binaries under
+ MacOS/X using the -n command line option to configure.py.
+
+v4.5.2 9th December 2006
+ - A bug fix release.
+
+v4.5.1 9th December 2006
+ - Added the SIP_SSIZE_T type to help write PEP 353 compliant handwritten
+ code.
+
+v4.5 4th November 2006
+ - Added support for Python v2.5.
+ - Added sip_config_args to sipconfig.py.
+ - sip.voidptr now implements __hex__().
+ - Added sip.delete() to call a C++ instance's destructor, or return a C
+ structure to the heap.
+ - Added sip.isdeleted() to check if a C++ instance or C structure has been
+ destroyed or returned to the heap.
+ - Added sip.setdeleted() to mark that a C++ instance or C structure has been
+ destroyed or returned to the heap.
+ - Added support for pure virtual destructors.
+ - Added the __dtor__() method to allow Python code to be called from a C++
+ destructor.
+ - Added the /NoDefaultCtors/ class annotation.
+ - The generated API files are now more complete and use Python types rather
+ than C/C++ types.
+ - Added support for embedding manifests for MSVC 2005.
+
+v4.4.5 10th June 2006
+ - A bug fix release.
+
+v4.4.4 8th June 2006
+ - Added %ExportedHeaderCode and %UnitCode.
+ - Added sipExportSymbol() and sipImportSymbol() to the public API.
+
+v4.4.3 27th April 2006
+ - A bug fix release.
+
+v4.4.2 23rd April 2006
+ - A bug fix release.
+
+v4.4.1 3rd April 2006
+ - A bug fix release.
+
+v4.4 24th March 2006
+ - The major number of the internal API has changed so it will be necessary
+ to regenerate all modules.
+ - This release introduces small incompatibilities that may affect handwritten
+ code. See the documentation for the details.
+ - Module names specified with %Module and %CModule can now include periods to
+ denote a Python package structure.
+ - Namespaces can be split across multiple Python modules.
+ - Class templates are now supported and instantiated using "typedef".
+ - Mapped type templates are now supported and instantiated automatically.
+ - Global operators are now supported.
+ - Operator casts in classes are now supported.
+ - C/C++ signed char type is now treated as a separate type to char.
+ - C/C++ long and unsigned long types are now wrapped as Python long objects
+ rather than Python integer objects.
+ - C/C++ long long and unsigned long long types are now supported.
+ - unsigned short and unsigned int are now implemented as long objects instead
+ of integer objects.
+ - Classes can now be declared using the /External/ annotation and be defined
+ in another, unspecified, module.
+ - /TransferThis/ can now be used in non-factory methods to change the
+ ownership to a different C++ instance or to change it to Python.
+ - /Constrained/ can now be used with booleans.
+ - Added support for Python's buffer interface, %BIGetCharBufferCode,
+ %BIGetReadBufferCode, %BIGetSegCountCode and %BIGetWriteBufferCode.
+ - The "user" member has been added to the sipWrapper structure and can be
+ used for any purpose by handwritten code.
+ - Function argument names are now parsed, but otherwise ignored.
+ - The "explicit" keyword is now parsed, but otherwise ignored.
+ - Added the /DelayDtor/ class annotation which given more control over the
+ order in which instances are deleted when an application terminates.
+ - Added support for the SIP_PYTYPE pseudo-type that represents a Python
+ type object.
+ - Added support for ellipsis (ie. "...") in function arguments. Any
+ remaining arguments will be gathered as a Python tuple.
+ - Add support for the /NoDerived/ annotation for Python class constructors
+ that have no C/C++ equivalent.
+ - The sipSelfWasArg boolean is now available to the %MethodCode of
+ non-abstract, virtual methods to indicate whether the class implementation
+ of the method rather than the virtual implementation should be called.
+ %MethodCode for non-abstract, virtual, protected methods must now call the
+ sipProtectVirt wrapper (rather than sipProtect).
+ - sipCanConvertToInstance(), sipConvertToInstance(),
+ sipForceConvertToInstance(), sipReleaseInstance(),
+ sipConvertFromInstance(), sipConvertFromNewInstance(),
+ sipCanConvertToMappedType(), sipConvertToMappedType(),
+ sipForceConvertToMappedType(), sipReleaseMappedType(),
+ sipConvertFromMappedType() and sipFindMappedType() have been added to the
+ SIP API.
+ - sipLong_AsUnsignedLong() has been added, primarily as a workaround for a
+ bug in Python v2.3.x and earlier.
+ - Added the 't', 'u', 'C' and 'D' format characters to sipParseResult().
+ - Added the 't', 'u', 'B', 'C' and 'D' format characters to sipBuildResult().
+ - Responsibility for interpreting and implementing the /Transfer/ and
+ /TransferBack/ annotations has been pushed down to %ConvertToTypeCode and
+ %ConvertFromTypeCode. The generated type convertors sipForceConvertTo_*()
+ and sipConvertFrom_*() have been deprecated.
+ - Added the %SIPNoEmitters directive for PyQt4.
+ - Added support for the __hash__ Python special method.
+ - The __getitem__ Python special method no longer requires %MethodCode.
+ - All of the calls to Qt have been moved out of the sip module and into PyQt.
+ The generated sipconfig.py file no longer contains any Qt specific
+ information. These changes mean that SIP can support PyQt v3 and v4 at the
+ same time.
+ - Static methods can now be defined as Qt slots.
+ - Removed SIP_BUILD from sip.h.
+ - The -c, -l, -q and -x flags to configure.py have been removed.
+ - Added the PythonModuleMakefile class to the build system for installing
+ pure Python modules.
+ - Added the create_wrapper() function to the build system for creating
+ platform dependent executable wrappers for Python scripts.
+ - Added Configuration.platform to the build system.
+
+v4.3.2 14th November 2005
+ - The sipdistutils.py script has contributed by Giovanni Bajo that enables
+ SIP extension modules to be built with distutils.
+
+v4.3.1 10th September 2005
+ - A bug fix release.
+
+v4.3 30th August 2005
+ - The major number of the internal API has changed so it will be necessary
+ to regenerate all modules.
+ - C structures can now have constructors and a destructor defined so that
+ they can be made to behave more Pythonically.
+ - %TypeHeaderCode can now be used in namespaces.
+ - Added sip.SIP_VERSION_STR.
+ - Added support for Python's cyclic garbage collector, %GCTraverseCode and
+ %GCClearCode.
+ - Deprecated sipTransfer() and sip.transfer().
+ - Added sipTransferTo, sipTransferBack(), sip.transferto() and
+ sip.transferback().
+ - Added support for sipCppRet in %ConvertSubClassCode.
+ - Added support for %GetCode and %SetCode for instance variables and
+ structure members.
+ - Added support for %Exception and %RaiseCode.
+ - Added support for __pos__ and __abs__.
+ - sip.voidptr instances can now be created from Python.
+ - The ascobject() method has been added to sip.voidptr.
+ - Added the -c flag to configure.py to explicitly specify the location of
+ the qconfig.h file.
+
+v4.2.1 6th March 2005
+ - Restored the pre-4.2 behaviour of Python exceptions raised in virtual
+ re-implementations.
+ - %Timeline can now be used more than once in a module.
+
+v4.2 19th February 2005
+ - The /PyName/ annotation can now be applied to classes, namespaces,
+ enums, enum members and variables.
+ - Added the %PreInitialisationCode directive and is subject to version
+ control. %PostInitialisationCode is now subject to version control.
+ - Named enums now have distinct types and so can be differentiated from
+ integers in function signatures.
+ - The handling of Qt signals has changed so that "foreign" signals (ie.
+ those raised by ActiveX controls) can be handled.
+ - The voidptr, wrapper and wrappertype types are now exposed in the sip
+ module.
+ - Virtual and abstract operators are now supported.
+ - The __call__ slot no longer requires %MethodCode.
+ - Any Python exceptions raised in virtual re-implementations are now
+ detected when they occur.
+ - sip.cast() can now cast downwards as well as upwards.
+ - Added sip.SIP_VERSION.
+ - The -k flag to configure.py can now be used to build modules as builtins
+ to custom interpreters.
+ - The build system now strips modules and only exports the module
+ initialisation function by default (when supported by the platform).
+
+v4.1.1 24th September 2004
+ - A bug fix release.
+
+v4.1 20th September 2004
+ - Added the cast() method to the sip module.
+ - Added limited support for protected classes.
+ - Added the /Abstract/ class annotation.
+ - Added support for typedefs that define pointers to functions.
+ - The SIP_PYCALLABLE type now supports the /AllowNone/ annotation.
+ - Added support for MSVC.NET to the build system.
+
+v4.0.1 6th July 2004
+ - A bug fix release.
+
+v4.0 23rd June 2004
+ - The release of SIP v4.
diff --git a/python/sip/README b/python/sip/README
new file mode 100644
index 00000000..debbe22b
--- /dev/null
+++ b/python/sip/README
@@ -0,0 +1,5 @@
+ SIP - Python C/C++ Bindings Generator
+
+
+The SIP documentation (including installation instructions) can be found in the
+"doc" directory.
diff --git a/python/sip/README.HP-UX b/python/sip/README.HP-UX
new file mode 100644
index 00000000..f628f31d
--- /dev/null
+++ b/python/sip/README.HP-UX
@@ -0,0 +1,32 @@
+This file describes some things to be aware of when building SIP (and PyQt)
+under HP-UX.
+
+I had success building SIP V4 and PyQt on HP-UX 11.0 with the
+HP aC++ compiler.
+
+My configuration was:
+
+HP-UX B.11.00
+HP aC++ Compiler C.03.50 (B3911DB)
+Qt-3.3.3
+Python-2.3.4
+sip-snapshot-20041113
+PyQt-commercial-snapshot-20041031
+
+Additionally, I installed the patches PHSS_29483 and PHSS_30967.
+PHSS_29483 brings the aC++ Compiler to level A.03.52.
+PHSS_30967 is a cumulative linker patch.
+
+Because HP-UX can load C++ shared libraries and C++ shared objects only, when
+the main program is a C++ program, I had to configure Python with the option
+--with-cxx=aCC
+
+I also had to change the definition of _POSIX_C_SOURCE in the configure script
+of Python from 200112L to 199506L because it conflicts with the definition
+from Qt.
+
+If you have any problems or questions on building SIP or PyQt on HP-UX, either
+send an email to ulrich.berning@desys.de or use the PyKDE mailing list.
+
+Ulrich Berning
+DESYS GmbH
diff --git a/python/sip/THANKS b/python/sip/THANKS
new file mode 100644
index 00000000..5b2614a3
--- /dev/null
+++ b/python/sip/THANKS
@@ -0,0 +1,16 @@
+Ulli Berning
+ For lots of work resolving many multi-platform build issues.
+
+Simon Cusack
+ For the Borland stuff.
+
+Wilken Boie
+ For porting the SIP code generator to Windows.
+
+Toby J Sargeant
+ For the hash table code (and finding out why it's needed).
+ For deep bug hunting and fixing.
+ For the Python interpeter lock stuff.
+
+Matthias H"olzer-Kl"upfel
+ For the original automake/autoconf magic.
diff --git a/python/sip/TODO b/python/sip/TODO
new file mode 100644
index 00000000..bf1227c1
--- /dev/null
+++ b/python/sip/TODO
@@ -0,0 +1,55 @@
+1. Make the parser aware of Python keywords so they can't be used as
+member function names.
+
+5. Allow handwritten code for static class variables (like
+KTMainWindow.memberList). The problem is intercepting references to it
+(__getattr__ and __setattr__ aren't good enough) - probably extending the
+lazy function mechanism.
+
+11. Consider changing the way default arguments that are function calls are
+handled. At the moment the function is always called and the result discarded
+if it is not needed. It should really only be called if the result is really
+needed.
+
+18. Implement the C++ feature of automatically calling simple ctors to
+transparently convert between types for function parameters. For example, a
+function takes a parameter of type QKeySequence, but is passed an int, but
+there is a QKeySequence ctor that takes a single int - so call it
+automatically. This just needs extra code generated for the CanConvertTo and
+ConvertTo functions. This will only work where the destination type is a
+class. Note that we will end up doing lots of checks in the CanConvertTo
+function and repeating them in the ConvertToFunction. It would be better if
+the CanConvertTo function could return some information (even the results of
+the conversion of simple types like ints) to be re-used by ConvertTo - but make
+sure default arguments are handled correctly. We could implement it for base
+types as well (if the source type implemented an appropriate cast operator) but
+the way of doing argument parsing would have to change completely - if
+sipParseArgs was trying to convert an argument to an int it would have to have
+a table of all types that could be converted to an int (messy and slow?).
+
+19. Consider changing sipConvertToCpp() etc. to take a PyObject* (rather
+than a sipWrapperType*) and do a check and cast internally.
+
+22. Consider adding support for methods that take keyword arguments. Do it
+by allowing a function parameter to have a name (this becomes the keyword) and
+extend sipParseArgs() to take an options dictionary and list of keywords.
+
+24. Need some way of implementing new Qt properties, or at least fiddle the
+implementation of QSqlPropertyMap to allow new customer editor widgets to be
+implemented in Python.
+
+25. Add support for specifying docstrings for generated methods.
+
+26. Fully implement QObject.disconnect().
+
+27. Look at adding QObject.Q_OBJECT() that will create the moc generated
+methods dynamically (maybe just the tr() functions).
+
+28. Consider creating a copy of a const reference when wrapping it in order
+to enforce const in Python. Or add a flag to the wrapper which says it is a
+const instance. I think the only to way to implement it is to have a "const"
+Python type - an instance of which will point to the underlying Python object.
+This will enable const_cast to be implemented.
+
+30. Add support for specifying the reverse arithmetic operators. (Or just
+document that you should use the normal ones as global operators?)
diff --git a/python/sip/configure.py b/python/sip/configure.py
new file mode 100644
index 00000000..e5c55295
--- /dev/null
+++ b/python/sip/configure.py
@@ -0,0 +1,417 @@
+# This script handles the SIP configuration and generates the Makefiles.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of SIP.
+#
+# This copy of SIP is licensed for use under the terms of the SIP License
+# Agreement. See the file LICENSE for more details.
+#
+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import sys
+import os
+import string
+import glob
+import getopt
+
+import siputils
+
+
+# Initialise the globals.
+sip_version = 0x040600
+sip_version_str = "4.6"
+py_version = sys.hexversion >> 8
+plat_py_site_dir = None
+plat_py_inc_dir = None
+plat_py_conf_inc_dir = None
+plat_py_lib_dir = None
+plat_sip_dir = None
+plat_bin_dir = None
+platform_specs = []
+default_platform = None
+
+# Command line options.
+opt_platform = None
+opt_sipbindir = None
+opt_sipmoddir = None
+opt_sipincdir = None
+opt_sipsipdir = None
+opt_static = 0
+opt_debug = 0
+opt_export_all = 0
+opt_universal = ''
+
+# The names of build macros extracted from the platform specific configuration
+# files.
+build_macro_names = [
+ "DEFINES", "CONFIG",
+ "CC",
+ "CFLAGS",
+ "CFLAGS_RELEASE", "CFLAGS_DEBUG",
+ "CFLAGS_CONSOLE", "CFLAGS_SHLIB", "CFLAGS_THREAD",
+ "CFLAGS_MT", "CFLAGS_MT_DBG", "CFLAGS_MT_DLL", "CFLAGS_MT_DLLDBG",
+ "CFLAGS_EXCEPTIONS_ON", "CFLAGS_EXCEPTIONS_OFF",
+ "CFLAGS_RTTI_ON", "CFLAGS_RTTI_OFF",
+ "CFLAGS_STL_ON", "CFLAGS_STL_OFF",
+ "CFLAGS_WARN_ON", "CFLAGS_WARN_OFF",
+ "CHK_DIR_EXISTS", "COPY",
+ "CXX",
+ "CXXFLAGS",
+ "CXXFLAGS_RELEASE", "CXXFLAGS_DEBUG",
+ "CXXFLAGS_CONSOLE", "CXXFLAGS_SHLIB", "CXXFLAGS_THREAD",
+ "CXXFLAGS_MT", "CXXFLAGS_MT_DBG", "CXXFLAGS_MT_DLL", "CXXFLAGS_MT_DLLDBG",
+ "CXXFLAGS_EXCEPTIONS_ON", "CXXFLAGS_EXCEPTIONS_OFF",
+ "CXXFLAGS_RTTI_ON", "CXXFLAGS_RTTI_OFF",
+ "CXXFLAGS_STL_ON", "CXXFLAGS_STL_OFF",
+ "CXXFLAGS_WARN_ON", "CXXFLAGS_WARN_OFF",
+ "DEL_FILE",
+ "EXTENSION_SHLIB", "EXTENSION_PLUGIN",
+ "INCDIR", "INCDIR_X11", "INCDIR_OPENGL",
+ "LIBS_CORE", "LIBS_GUI", "LIBS_NETWORK", "LIBS_OPENGL",
+ "LINK", "LINK_SHLIB", "AIX_SHLIB", "LINK_SHLIB_CMD",
+ "LFLAGS", "LFLAGS_CONSOLE", "LFLAGS_CONSOLE_DLL", "LFLAGS_DEBUG",
+ "LFLAGS_DLL",
+ "LFLAGS_PLUGIN", "LFLAGS_RELEASE", "LFLAGS_SHLIB", "LFLAGS_SONAME",
+ "LFLAGS_THREAD", "LFLAGS_WINDOWS", "LFLAGS_WINDOWS_DLL", "LFLAGS_OPENGL",
+ "LIBDIR", "LIBDIR_X11", "LIBDIR_OPENGL",
+ "LIBS", "LIBS_CONSOLE", "LIBS_OPENGL", "LIBS_OPENGL", "LIBS_RT",
+ "LIBS_RTMT", "LIBS_THREAD", "LIBS_WINDOWS", "LIBS_X11",
+ "MAKEFILE_GENERATOR",
+ "MKDIR",
+ "RPATH",
+ "AR", "RANLIB", "LIB", "STRIP"
+]
+
+
+def usage(rcode = 2):
+ """Display a usage message and exit.
+
+ rcode is the return code passed back to the calling process.
+ """
+ print "Usage:"
+ print " python configure.py [-h] [-b dir] [-d dir] [-e dir] [-k] [-n] [-p plat] [-u] [-v dir] option=value option+=value ..."
+ print "where:"
+ print " -h display this help message"
+ print " -b dir where the SIP code generator will be installed [default %s]" % opt_sipbindir
+ print " -d dir where the SIP module will be installed [default %s]" % opt_sipmoddir
+ print " -e dir where the SIP header file will be installed [default %s]" % opt_sipincdir
+ print " -k build the SIP module as a static library"
+ print " -n build the SIP code generator and module as universal binaries on MacOS/X"
+ print " -p plat the platform/compiler configuration [default %s]" % default_platform
+ print " -u build with debugging symbols"
+ print " -v dir where .sip files are normally installed [default %s]" % opt_sipsipdir
+
+ # Display the different platform/compilers.
+ print
+ print "The following platform/compiler configurations are supported:"
+ print
+
+ platform_specs.sort()
+
+ ss = ""
+ sep = ""
+ for s in platform_specs:
+ ss = ss + sep + s
+ sep = ", "
+
+ print siputils.format(ss, 2)
+
+ # Display the different build macros.
+ print
+ print "The following options may be used to adjust the compiler configuration:"
+ print
+
+ build_macro_names.sort()
+
+ ss = ""
+ sep = ""
+ for s in build_macro_names:
+ ss = ss + sep + s
+ sep = " "
+
+ print siputils.format(ss, 2)
+
+ sys.exit(rcode)
+
+
+def set_defaults():
+ """Set up the defaults for values that can be set on the command line.
+ """
+ global default_platform
+ global opt_sipbindir, opt_sipmoddir, opt_sipincdir, opt_sipsipdir
+
+ # Set the platform specific default specification.
+ platdefaults = {
+ "aix": "aix-xlc",
+ "bsd": "bsdi-g++",
+ "cygwin": "cygwin-g++",
+ "darwin": "macx-g++",
+ "dgux": "dgux-g++",
+ "freebsd": "freebsd-g++",
+ "gnu": "hurd-g++",
+ "hp-ux": "hpux-acc",
+ "irix": "irix-cc",
+ "linux": "linux-g++",
+ "lynxos": "lynxos-g++",
+ "netbsd": "netbsd-g++",
+ "openbsd": "openbsd-g++",
+ "openunix": "unixware-cc",
+ "osf1": "tru64-cxx",
+ "qnx": "qnx-g++",
+ "reliantunix": "reliant-cds",
+ "sco_sv": "sco-cc",
+ "sinix": "reliant-cds",
+ "sunos5": "solaris-cc",
+ "ultrix": "ultrix-g++",
+ "unix_sv": "unixware-g++",
+ "unixware": "unixware-cc"
+ }
+
+ default_platform = "none"
+
+ if sys.platform == "win32":
+ if py_version >= 0x020400:
+ default_platform = "win32-msvc.net"
+ else:
+ default_platform = "win32-msvc"
+ else:
+ for pd in platdefaults.keys():
+ if sys.platform[:len(pd)] == pd:
+ default_platform = platdefaults[pd]
+ break
+
+ opt_sipbindir = plat_bin_dir
+ opt_sipmoddir = plat_py_site_dir
+ opt_sipincdir = plat_py_inc_dir
+ opt_sipsipdir = plat_sip_dir
+
+
+def inform_user():
+ """Tell the user the option values that are going to be used.
+ """
+ siputils.inform("The SIP code generator will be installed in %s." % opt_sipbindir)
+ siputils.inform("The SIP module will be installed in %s." % opt_sipmoddir)
+ siputils.inform("The SIP header file will be installed in %s." % opt_sipincdir)
+ siputils.inform("The default directory to install .sip files in is %s." % opt_sipsipdir)
+ siputils.inform("The platform/compiler configuration is %s." % opt_platform)
+
+ if opt_universal:
+ siputils.inform("MacOS/X universal binaries will be created.")
+
+
+def set_platform_directories():
+ """Initialise the global variables relating to platform specific
+ directories.
+ """
+ global plat_py_site_dir, plat_py_inc_dir, plat_py_conf_inc_dir
+ global plat_bin_dir, plat_py_lib_dir, plat_sip_dir
+
+ if sys.platform == "win32":
+ plat_py_site_dir = sys.prefix + "\\Lib"
+ if py_version >= 0x020200:
+ plat_py_site_dir = plat_py_site_dir + "\\site-packages"
+
+ plat_py_inc_dir = sys.prefix + "\\include"
+ plat_py_conf_inc_dir = sys.exec_prefix + "\\include"
+ plat_py_lib_dir = sys.prefix + "\\libs"
+ plat_bin_dir = sys.exec_prefix
+ plat_sip_dir = sys.prefix + "\\sip"
+ else:
+ vers = "%d.%d" % ((py_version >> 16) & 0xff, (py_version >> 8) & 0xff)
+
+ # Some 64 bit Linux distros (Mandriva, SuSE) seem to add sys.lib as a
+ # non-standard extension presumably to allow 32 and 64 bit versions to
+ # be installed side by side. Use it if it seems to be available.
+ try:
+ lib_dir = sys.lib
+ except AttributeError:
+ lib_dir = "lib"
+
+ lib_dir = sys.prefix + "/" + lib_dir + "/python" + vers
+
+ plat_py_site_dir = lib_dir
+ if py_version >= 0x020000:
+ plat_py_site_dir = plat_py_site_dir + "/site-packages"
+
+ plat_py_inc_dir = sys.prefix + "/include/python" + vers
+ plat_py_conf_inc_dir = sys.exec_prefix + "/include/python" + vers
+ plat_py_lib_dir = lib_dir + "/config"
+ plat_bin_dir = sys.exec_prefix + "/bin"
+ plat_sip_dir = sys.prefix + "/share/sip"
+
+
+def create_config(module, template, macros):
+ """Create the SIP configuration module so that it can be imported by build
+ scripts.
+
+ module is the module file name.
+ template is the template file name.
+ macros is the dictionary of build macros.
+ """
+ siputils.inform("Creating %s..." % module)
+
+ content = {
+ "sip_config_args": sys.argv[1:],
+ "sip_version": sip_version,
+ "sip_version_str": sip_version_str,
+ "platform": opt_platform,
+ "sip_bin": os.path.join(opt_sipbindir, "sip"),
+ "sip_inc_dir": opt_sipincdir,
+ "sip_mod_dir": opt_sipmoddir,
+ "default_bin_dir": plat_bin_dir,
+ "default_mod_dir": plat_py_site_dir,
+ "default_sip_dir": opt_sipsipdir,
+ "export_all": opt_export_all,
+ "py_version": py_version,
+ "py_inc_dir": plat_py_inc_dir,
+ "py_conf_inc_dir": plat_py_conf_inc_dir,
+ "py_lib_dir": plat_py_lib_dir,
+ "universal": opt_universal
+ }
+
+ siputils.create_config_module(module, template, content, macros)
+
+
+def create_makefiles(macros):
+ """Create the Makefiles.
+
+ macros is the dictionary of platform specific build macros.
+ """
+ # Bootstrap.
+ import sipconfig
+
+ cfg = sipconfig.Configuration()
+
+ cfg.set_build_macros(macros)
+
+ sipconfig.inform("Creating top level Makefile...")
+
+ sipconfig.ParentMakefile(
+ configuration=cfg,
+ subdirs=["sipgen", "siplib"],
+ installs=(["sipconfig.py", "sipdistutils.py"], cfg.sip_mod_dir)
+ ).generate()
+
+ sipconfig.inform("Creating sip code generator Makefile...")
+
+ sipconfig.ProgramMakefile(
+ configuration=cfg,
+ build_file="sipgen.sbf",
+ dir="sipgen",
+ install_dir=os.path.dirname(cfg.sip_bin),
+ console=1,
+ warnings=0,
+ universal=opt_universal
+ ).generate()
+
+ sipconfig.inform("Creating sip module Makefile...")
+
+ makefile = sipconfig.ModuleMakefile(
+ configuration=cfg,
+ build_file="siplib.sbf",
+ dir="siplib",
+ install_dir=cfg.sip_mod_dir,
+ installs=(["sip.h"], cfg.sip_inc_dir),
+ console=1,
+ warnings=0,
+ static=opt_static,
+ debug=opt_debug,
+ universal=opt_universal
+ )
+
+ makefile.generate()
+
+
+def main(argv):
+ """Create the configuration module module.
+
+ argv is the list of command line arguments.
+ """
+ siputils.inform("This is SIP %s for Python %s on %s." % (sip_version_str, string.split(sys.version)[0], sys.platform))
+
+ if py_version < 0x020300:
+ siputils.error("This version of SIP requires Python v2.3 or later.")
+
+ # Basic initialisation.
+ set_platform_directories()
+
+ # Build up the list of valid specs.
+ for s in os.listdir("specs"):
+ platform_specs.append(s)
+
+ # Handle the command line.
+ set_defaults()
+
+ try:
+ optlist, args = getopt.getopt(argv[1:], "hab:d:e:knp:uv:")
+ except getopt.GetoptError:
+ usage()
+
+ global opt_sipbindir, opt_sipmoddir, opt_sipincdir, opt_sipsipdir
+ global opt_platform, opt_static, opt_debug, opt_export_all, opt_universal
+
+ for opt, arg in optlist:
+ if opt == "-h":
+ usage(0)
+ elif opt == "-a":
+ opt_export_all = 1
+ elif opt == "-b":
+ opt_sipbindir = os.path.abspath(arg)
+ elif opt == "-d":
+ opt_sipmoddir = os.path.abspath(arg)
+ elif opt == "-e":
+ opt_sipincdir = os.path.abspath(arg)
+ elif opt == "-k":
+ opt_static = 1
+ elif opt == "-n":
+ # This should probably be determined dynamically or passed as an
+ # argument.
+ opt_universal = '/Developer/SDKs/MacOSX10.4u.sdk'
+ elif opt == "-p":
+ if arg not in platform_specs:
+ usage()
+
+ opt_platform = arg
+ elif opt == "-u":
+ opt_debug = 1
+ elif opt == "-v":
+ opt_sipsipdir = os.path.abspath(arg)
+
+ if opt_platform is None:
+ opt_platform = default_platform
+
+ # Get the platform specific macros for building.
+ macros = siputils.parse_build_macros(os.path.join("specs", opt_platform), build_macro_names, args)
+
+ if macros is None:
+ usage()
+
+ # Tell the user what's been found.
+ inform_user()
+
+ # Install the configuration module.
+ create_config("sipconfig.py", "siputils.py", macros)
+
+ # Create the Makefiles.
+ create_makefiles(macros)
+
+
+###############################################################################
+# The script starts here.
+###############################################################################
+
+if __name__ == "__main__":
+ try:
+ main(sys.argv)
+ except SystemExit:
+ raise
+ except:
+ print \
+"""An internal error occured. Please report all the output from the program,
+including the following traceback, to support@riverbankcomputing.co.uk.
+"""
+ raise
diff --git a/python/sip/custom/custom.c b/python/sip/custom/custom.c
new file mode 100644
index 00000000..e5ec2d25
--- /dev/null
+++ b/python/sip/custom/custom.c
@@ -0,0 +1,60 @@
+/*
+ * This file is the basis of a custom Python interpreter. Use it for Linux,
+ * UNIX and Windows (console). You will also need to edit mkcustom.py.
+ */
+
+
+#include <Python.h>
+
+
+int main(int argc, char **argv)
+{
+ /*
+ * Declare the module initialisation function for each module you want
+ * to be a builtin in the custom interpreter. The name of the function
+ * will be the name of the module with "init" prepended. The modules
+ * must be built as static libraries (using the -k flag to configure.py
+ * for SIP and PyQt).
+ */
+
+ /* The sip module will be builtin. */
+ extern void initsip(void);
+
+ /*
+ * Uncomment these (and in the structure below) to include the PyQt
+ * modules as builtins.
+ */
+/* extern void initqt(void);*/
+/* extern void initqtaxcontainer(void);*/
+/* extern void initqtcanvas(void);*/
+/* extern void initqtext(void);*/
+/* extern void initqtgl(void);*/
+/* extern void initqtnetwork(void);*/
+/* extern void initqtsql(void);*/
+/* extern void initqttable(void);*/
+/* extern void initqtui(void);*/
+/* extern void initqtxml(void);*/
+
+ /*
+ * This structure specifies the names and initialisation functions of
+ * the builtin modules.
+ */
+ struct _inittab builtin_modules[] = {
+ {"sip", initsip},
+/* {"qt", initqt},*/
+/* {"qtaxcontainer", initqtaxcontainer},*/
+/* {"qtcanvas", initqtcanvas},*/
+/* {"qtext", initqtext},*/
+/* {"qtgl", initqtgl},*/
+/* {"qtnetwork", initqtnetwork},*/
+/* {"qtsql", initqtsql},*/
+/* {"qttable", initqttable},*/
+/* {"qtui", initqtui},*/
+/* {"qtxml", initqtxml},*/
+ {NULL, NULL}
+ };
+
+ PyImport_ExtendInittab(builtin_modules);
+
+ return Py_Main(argc, argv);
+}
diff --git a/python/sip/custom/customw.c b/python/sip/custom/customw.c
new file mode 100644
index 00000000..58770766
--- /dev/null
+++ b/python/sip/custom/customw.c
@@ -0,0 +1,64 @@
+/*
+ * This file is the basis of a custom Python interpreter. Use it for Windows
+ * (non-console). You will also need to edit mkcustom.py.
+ */
+
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#include <Python.h>
+
+
+int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine, int nCmdShow)
+{
+ /*
+ * Declare the module initialisation function for each module you want
+ * to be a builtin in the custom interpreter. The name of the function
+ * will be the name of the module with "init" prepended. The modules
+ * must be built as static libraries (using the -k flag to configure.py
+ * for SIP and PyQt).
+ */
+
+ /* The sip module will be builtin. */
+ extern void initsip(void);
+
+ /*
+ * Uncomment these (and in the structure below) to include the PyQt
+ * modules as builtins.
+ */
+/* extern void initqt(void);*/
+/* extern void initqtaxcontainer(void);*/
+/* extern void initqtcanvas(void);*/
+/* extern void initqtext(void);*/
+/* extern void initqtgl(void);*/
+/* extern void initqtnetwork(void);*/
+/* extern void initqtsql(void);*/
+/* extern void initqttable(void);*/
+/* extern void initqtui(void);*/
+/* extern void initqtxml(void);*/
+
+ /*
+ * This structure specifies the names and initialisation functions of
+ * the builtin modules.
+ */
+ struct _inittab builtin_modules[] = {
+ {"sip", initsip},
+/* {"qt", initqt},*/
+/* {"qtaxcontainer", initqtaxcontainer},*/
+/* {"qtcanvas", initqtcanvas},*/
+/* {"qtext", initqtext},*/
+/* {"qtgl", initqtgl},*/
+/* {"qtnetwork", initqtnetwork},*/
+/* {"qtsql", initqtsql},*/
+/* {"qttable", initqttable},*/
+/* {"qtui", initqtui},*/
+/* {"qtxml", initqtxml},*/
+ {NULL, NULL}
+ };
+
+ PyImport_ExtendInittab(builtin_modules);
+
+ return Py_Main(__argc, __argv);
+}
diff --git a/python/sip/custom/mkcustom.py b/python/sip/custom/mkcustom.py
new file mode 100644
index 00000000..0e8deabb
--- /dev/null
+++ b/python/sip/custom/mkcustom.py
@@ -0,0 +1,87 @@
+"""This Python script uses the SIP build system to create a Makefile for
+building a custom Python interpreter. The script doesn't take any command line
+flags - just edit it to suit your needs. You will also need to edit custom.c
+or customw.c.
+"""
+
+
+import sys
+import sipconfig
+
+
+# Get the SIP configuration.
+cfg = sipconfig.Configuration()
+
+
+# This is the name of the interpreter executable (excluding any platform
+# specific extension.
+InterpreterName = "custom"
+
+# Set this to True to create a non-console interpreter on Windows (ie. a custom
+# version of pythonw). Make sure you make changes to customw.c rather than
+# custom.c. It is ignored on other platforms.
+WindowsInterpreter = False
+
+# Set this to the list of the name of modules to be builtin to the custom
+# interpreter. The modules must also be added to custom.c and/or customw.c.
+Modules = ["sip"]
+#Modules = ["sip", "qt", "qtaxcontainer", "qtcanvas", "qtext", "qtgl",
+# "qtnetwork", "qtsql", "qttable", "qtui", "qtxml"]
+
+# Set this to the name of the directory containing the static modules.
+ModuleDirectory = cfg.default_mod_dir
+
+# Set this to the list of additional libraries to link with the custom
+# interpreter.
+ExtraLibraries = []
+#ExtraLibraries = ["qassistantclient"]
+
+# Set this to the list of additional directory names to search for any
+# additional libraries.
+ExtraLibraryDirectories = []
+
+# Set this to the name of the directory containing the Python library.
+PythonLibraryDirectory = cfg.py_lib_dir
+
+
+# Make platform specific modifications.
+if sys.platform == "linux2":
+ ExtraLibraries.append("util")
+
+
+# Create a dictionary describing the target and source files to be passed to
+# the SIP build system.
+build = {}
+
+if sys.platform == "win32" and WindowsInterpreter:
+ build["target"] = InterpreterName + "w"
+ build["sources"] = "customw.c"
+ console = False
+else:
+ build["target"] = InterpreterName
+ build["sources"] = "custom.c"
+ console = True
+
+# Assume Qt support is required if Qt support was enabled in the sip module.
+qt = (cfg.qt_version > 0)
+
+# Create the Makefile instance.
+mf = sipconfig.ProgramMakefile(cfg, build, python=True, console=console, qt=qt)
+
+# Modify the Makefile according to the values set above.
+mf.extra_lib_dirs.extend(ExtraLibraryDirectories)
+mf.extra_lib_dirs.append(ModuleDirectory)
+mf.extra_lib_dirs.append(PythonLibraryDirectory)
+
+mf.extra_libs.extend(Modules)
+
+if sys.platform == "win32":
+ pylib = "python%u%u"
+else:
+ pylib = "python%u.%u"
+
+mf.extra_libs.append(pylib % ((cfg.py_version >> 16), ((cfg.py_version >> 8) & 0xff)))
+mf.extra_libs.extend(ExtraLibraries)
+
+# Generate the Makefile itself.
+mf.generate()
diff --git a/python/sip/doc/default.css b/python/sip/doc/default.css
new file mode 100644
index 00000000..5e077213
--- /dev/null
+++ b/python/sip/doc/default.css
@@ -0,0 +1,229 @@
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:date: $Date$
+:version: $Revision$
+:copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+*/
+
+.first {
+ margin-top: 0 }
+
+.last {
+ margin-bottom: 0 }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+dt {
+ font-weight: bold }
+
+dd {
+ margin-bottom: 1.5em }
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.attention, div.caution, div.danger, div.error, div.hint,
+div.important, div.note, div.tip, div.warning, div.admonition {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.hint p.admonition-title, div.important p.admonition-title,
+div.note p.admonition-title, div.tip p.admonition-title,
+div.admonition p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em }
+
+div.footer, div.header {
+ font-size: smaller }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 0em 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h1.title {
+ text-align: center }
+
+h2.subtitle {
+ text-align: center }
+
+hr {
+ width: 75% }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.line-block {
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ background-color: #eeeeee }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.option-argument {
+ font-style: italic }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+table {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.citation {
+ border-left: solid thin gray ;
+ padding-left: 0.5ex }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.footnote {
+ border-left: solid thin black ;
+ padding-left: 0.5ex }
+
+td, th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+th.docinfo-name, th.field-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ font-size: 100% }
+
+/*
+tt {
+ background-color: #eeeeee }
+*/
+
+ul.auto-toc {
+ list-style-type: none }
diff --git a/python/sip/doc/sipref.html b/python/sip/doc/sipref.html
new file mode 100644
index 00000000..850fe61f
--- /dev/null
+++ b/python/sip/doc/sipref.html
@@ -0,0 +1,5281 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>SIP - A Tool for Generating Python Bindings for C and C++ Libraries</title>
+<meta name="copyright" content="Copyright (c) 2007 Riverbank Computing Limited" />
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date$
+:Revision: $Revision$
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0 }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 ! important }
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 ! important }
+
+.last, .with-subtitle {
+ margin-bottom: 0 ! important }
+
+.hidden {
+ display: none }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+blockquote.epigraph {
+ margin: 2em 5em ; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+ font-weight: bold }
+*/
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+ compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+ margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+ margin-top: 0.5em }
+*/
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em ;
+ margin-right: 2em }
+
+div.footer, div.header {
+ clear: both;
+ font-size: smaller }
+
+div.line-block {
+ display: block ;
+ margin-top: 1em ;
+ margin-bottom: 1em }
+
+div.line-block div.line-block {
+ margin-top: 0 ;
+ margin-bottom: 0 ;
+ margin-left: 1.5em }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+ margin-top: 0.4em }
+
+h1.title {
+ text-align: center }
+
+h2.subtitle {
+ text-align: center }
+
+hr.docutils {
+ width: 75% }
+
+img.align-left {
+ clear: left }
+
+img.align-right {
+ clear: right }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ background-color: #eeeeee }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80% }
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.docutils {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.footnote {
+ border-left: solid 1px black;
+ margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap ;
+ padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+ font-size: 100% }
+
+tt.docutils {
+ background-color: #eeeeee }
+
+ul.auto-toc {
+ list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="sip-a-tool-for-generating-python-bindings-for-c-and-c-libraries">
+<h1 class="title">SIP - A Tool for Generating Python Bindings for C and C++ Libraries</h1>
+<h2 class="subtitle" id="reference-guide">Reference Guide</h2>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr><th class="docinfo-name">Contact:</th>
+<td><a class="first last reference" href="mailto:info&#64;riverbankcomputing.co.uk">info&#64;riverbankcomputing.co.uk</a></td></tr>
+<tr><th class="docinfo-name">Version:</th>
+<td>4.6</td></tr>
+<tr><th class="docinfo-name">Copyright:</th>
+<td>Copyright (c) 2007 Riverbank Computing Limited</td></tr>
+</tbody>
+</table>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
+<ul class="auto-toc simple">
+<li><a class="reference" href="#introduction" id="id22" name="id22">1&nbsp;&nbsp;&nbsp;Introduction</a><ul class="auto-toc">
+<li><a class="reference" href="#license" id="id23" name="id23">1.1&nbsp;&nbsp;&nbsp;License</a></li>
+<li><a class="reference" href="#features" id="id24" name="id24">1.2&nbsp;&nbsp;&nbsp;Features</a></li>
+<li><a class="reference" href="#sip-components" id="id25" name="id25">1.3&nbsp;&nbsp;&nbsp;SIP Components</a></li>
+<li><a class="reference" href="#qt-support" id="id26" name="id26">1.4&nbsp;&nbsp;&nbsp;Qt Support</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#potential-incompatibilities-with-earlier-versions" id="id27" name="id27">2&nbsp;&nbsp;&nbsp;Potential Incompatibilities with Earlier Versions</a><ul class="auto-toc">
+<li><a class="reference" href="#sip-v4-4" id="id28" name="id28">2.1&nbsp;&nbsp;&nbsp;SIP v4.4</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#installing-sip" id="id29" name="id29">3&nbsp;&nbsp;&nbsp;Installing SIP</a><ul class="auto-toc">
+<li><a class="reference" href="#downloading-sip" id="id30" name="id30">3.1&nbsp;&nbsp;&nbsp;Downloading SIP</a></li>
+<li><a class="reference" href="#configuring-sip" id="id31" name="id31">3.2&nbsp;&nbsp;&nbsp;Configuring SIP</a><ul class="auto-toc">
+<li><a class="reference" href="#configuring-sip-using-mingw" id="id32" name="id32">3.2.1&nbsp;&nbsp;&nbsp;Configuring SIP Using MinGW</a></li>
+<li><a class="reference" href="#configuring-sip-using-the-borland-c-compiler" id="id33" name="id33">3.2.2&nbsp;&nbsp;&nbsp;Configuring SIP Using the Borland C++ Compiler</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#building-sip" id="id34" name="id34">3.3&nbsp;&nbsp;&nbsp;Building SIP</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#using-sip" id="id35" name="id35">4&nbsp;&nbsp;&nbsp;Using SIP</a><ul class="auto-toc">
+<li><a class="reference" href="#a-simple-c-example" id="id36" name="id36">4.1&nbsp;&nbsp;&nbsp;A Simple C++ Example</a></li>
+<li><a class="reference" href="#id7" id="id37" name="id37">4.2&nbsp;&nbsp;&nbsp;A Simple C Example</a></li>
+<li><a class="reference" href="#a-more-complex-c-example" id="id38" name="id38">4.3&nbsp;&nbsp;&nbsp;A More Complex C++ Example</a></li>
+<li><a class="reference" href="#ownership-of-objects" id="id39" name="id39">4.4&nbsp;&nbsp;&nbsp;Ownership of Objects</a></li>
+<li><a class="reference" href="#support-for-wide-characters" id="id40" name="id40">4.5&nbsp;&nbsp;&nbsp;Support for Wide Characters</a></li>
+<li><a class="reference" href="#the-python-global-interpreter-lock" id="id41" name="id41">4.6&nbsp;&nbsp;&nbsp;The Python Global Interpreter Lock</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#the-sip-command-line" id="id42" name="id42">5&nbsp;&nbsp;&nbsp;The SIP Command Line</a></li>
+<li><a class="reference" href="#sip-specification-files" id="id43" name="id43">6&nbsp;&nbsp;&nbsp;SIP Specification Files</a><ul class="auto-toc">
+<li><a class="reference" href="#syntax-definition" id="id44" name="id44">6.1&nbsp;&nbsp;&nbsp;Syntax Definition</a></li>
+<li><a class="reference" href="#variable-numbers-of-arguments" id="id45" name="id45">6.2&nbsp;&nbsp;&nbsp;Variable Numbers of Arguments</a></li>
+<li><a class="reference" href="#additional-sip-types" id="id46" name="id46">6.3&nbsp;&nbsp;&nbsp;Additional SIP Types</a><ul class="auto-toc">
+<li><a class="reference" href="#sip-anyslot" id="id47" name="id47">6.3.1&nbsp;&nbsp;&nbsp;SIP_ANYSLOT</a></li>
+<li><a class="reference" href="#sip-pycallable" id="id48" name="id48">6.3.2&nbsp;&nbsp;&nbsp;SIP_PYCALLABLE</a></li>
+<li><a class="reference" href="#sip-pydict" id="id49" name="id49">6.3.3&nbsp;&nbsp;&nbsp;SIP_PYDICT</a></li>
+<li><a class="reference" href="#sip-pylist" id="id50" name="id50">6.3.4&nbsp;&nbsp;&nbsp;SIP_PYLIST</a></li>
+<li><a class="reference" href="#sip-pyobject" id="id51" name="id51">6.3.5&nbsp;&nbsp;&nbsp;SIP_PYOBJECT</a></li>
+<li><a class="reference" href="#sip-pyslice" id="id52" name="id52">6.3.6&nbsp;&nbsp;&nbsp;SIP_PYSLICE</a></li>
+<li><a class="reference" href="#sip-pytuple" id="id53" name="id53">6.3.7&nbsp;&nbsp;&nbsp;SIP_PYTUPLE</a></li>
+<li><a class="reference" href="#sip-pytype" id="id54" name="id54">6.3.8&nbsp;&nbsp;&nbsp;SIP_PYTYPE</a></li>
+<li><a class="reference" href="#sip-qobject" id="id55" name="id55">6.3.9&nbsp;&nbsp;&nbsp;SIP_QOBJECT</a></li>
+<li><a class="reference" href="#sip-rxobj-con" id="id56" name="id56">6.3.10&nbsp;&nbsp;&nbsp;SIP_RXOBJ_CON</a></li>
+<li><a class="reference" href="#sip-rxobj-dis" id="id57" name="id57">6.3.11&nbsp;&nbsp;&nbsp;SIP_RXOBJ_DIS</a></li>
+<li><a class="reference" href="#sip-signal" id="id58" name="id58">6.3.12&nbsp;&nbsp;&nbsp;SIP_SIGNAL</a></li>
+<li><a class="reference" href="#sip-slot" id="id59" name="id59">6.3.13&nbsp;&nbsp;&nbsp;SIP_SLOT</a></li>
+<li><a class="reference" href="#sip-slot-con" id="id60" name="id60">6.3.14&nbsp;&nbsp;&nbsp;SIP_SLOT_CON</a></li>
+<li><a class="reference" href="#sip-slot-dis" id="id61" name="id61">6.3.15&nbsp;&nbsp;&nbsp;SIP_SLOT_DIS</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference" href="#sip-directives" id="id62" name="id62">7&nbsp;&nbsp;&nbsp;SIP Directives</a><ul class="auto-toc">
+<li><a class="reference" href="#accesscode" id="id63" name="id63">7.1&nbsp;&nbsp;&nbsp;%AccessCode</a></li>
+<li><a class="reference" href="#bigetcharbuffercode" id="id64" name="id64">7.2&nbsp;&nbsp;&nbsp;%BIGetCharBufferCode</a></li>
+<li><a class="reference" href="#bigetreadbuffercode" id="id65" name="id65">7.3&nbsp;&nbsp;&nbsp;%BIGetReadBufferCode</a></li>
+<li><a class="reference" href="#bigetsegcountcode" id="id66" name="id66">7.4&nbsp;&nbsp;&nbsp;%BIGetSegCountCode</a></li>
+<li><a class="reference" href="#bigetwritebuffercode" id="id67" name="id67">7.5&nbsp;&nbsp;&nbsp;%BIGetWriteBufferCode</a></li>
+<li><a class="reference" href="#cmodule" id="id68" name="id68">7.6&nbsp;&nbsp;&nbsp;%CModule</a></li>
+<li><a class="reference" href="#convertfromtypecode" id="id69" name="id69">7.7&nbsp;&nbsp;&nbsp;%ConvertFromTypeCode</a></li>
+<li><a class="reference" href="#converttosubclasscode" id="id70" name="id70">7.8&nbsp;&nbsp;&nbsp;%ConvertToSubClassCode</a></li>
+<li><a class="reference" href="#converttotypecode" id="id71" name="id71">7.9&nbsp;&nbsp;&nbsp;%ConvertToTypeCode</a></li>
+<li><a class="reference" href="#copying" id="id72" name="id72">7.10&nbsp;&nbsp;&nbsp;%Copying</a></li>
+<li><a class="reference" href="#doc" id="id73" name="id73">7.11&nbsp;&nbsp;&nbsp;%Doc</a></li>
+<li><a class="reference" href="#end" id="id74" name="id74">7.12&nbsp;&nbsp;&nbsp;%End</a></li>
+<li><a class="reference" href="#exception" id="id75" name="id75">7.13&nbsp;&nbsp;&nbsp;%Exception</a></li>
+<li><a class="reference" href="#exporteddoc" id="id76" name="id76">7.14&nbsp;&nbsp;&nbsp;%ExportedDoc</a></li>
+<li><a class="reference" href="#exportedheadercode" id="id77" name="id77">7.15&nbsp;&nbsp;&nbsp;%ExportedHeaderCode</a></li>
+<li><a class="reference" href="#feature" id="id78" name="id78">7.16&nbsp;&nbsp;&nbsp;%Feature</a></li>
+<li><a class="reference" href="#gcclearcode" id="id79" name="id79">7.17&nbsp;&nbsp;&nbsp;%GCClearCode</a></li>
+<li><a class="reference" href="#gctraversecode" id="id80" name="id80">7.18&nbsp;&nbsp;&nbsp;%GCTraverseCode</a></li>
+<li><a class="reference" href="#getcode" id="id81" name="id81">7.19&nbsp;&nbsp;&nbsp;%GetCode</a></li>
+<li><a class="reference" href="#if" id="id82" name="id82">7.20&nbsp;&nbsp;&nbsp;%If</a></li>
+<li><a class="reference" href="#import" id="id83" name="id83">7.21&nbsp;&nbsp;&nbsp;%Import</a></li>
+<li><a class="reference" href="#include" id="id84" name="id84">7.22&nbsp;&nbsp;&nbsp;%Include</a></li>
+<li><a class="reference" href="#id14" id="id85" name="id85">7.23&nbsp;&nbsp;&nbsp;%License</a></li>
+<li><a class="reference" href="#mappedtype" id="id86" name="id86">7.24&nbsp;&nbsp;&nbsp;%MappedType</a></li>
+<li><a class="reference" href="#methodcode" id="id87" name="id87">7.25&nbsp;&nbsp;&nbsp;%MethodCode</a></li>
+<li><a class="reference" href="#module" id="id88" name="id88">7.26&nbsp;&nbsp;&nbsp;%Module</a></li>
+<li><a class="reference" href="#modulecode" id="id89" name="id89">7.27&nbsp;&nbsp;&nbsp;%ModuleCode</a></li>
+<li><a class="reference" href="#moduleheadercode" id="id90" name="id90">7.28&nbsp;&nbsp;&nbsp;%ModuleHeaderCode</a></li>
+<li><a class="reference" href="#optionalinclude" id="id91" name="id91">7.29&nbsp;&nbsp;&nbsp;%OptionalInclude</a></li>
+<li><a class="reference" href="#platforms" id="id92" name="id92">7.30&nbsp;&nbsp;&nbsp;%Platforms</a></li>
+<li><a class="reference" href="#postinitialisationcode" id="id93" name="id93">7.31&nbsp;&nbsp;&nbsp;%PostInitialisationCode</a></li>
+<li><a class="reference" href="#preinitialisationcode" id="id94" name="id94">7.32&nbsp;&nbsp;&nbsp;%PreInitialisationCode</a></li>
+<li><a class="reference" href="#raisecode" id="id95" name="id95">7.33&nbsp;&nbsp;&nbsp;%RaiseCode</a></li>
+<li><a class="reference" href="#setcode" id="id96" name="id96">7.34&nbsp;&nbsp;&nbsp;%SetCode</a></li>
+<li><a class="reference" href="#sipoptions" id="id97" name="id97">7.35&nbsp;&nbsp;&nbsp;%SIPOptions</a></li>
+<li><a class="reference" href="#timeline" id="id98" name="id98">7.36&nbsp;&nbsp;&nbsp;%Timeline</a></li>
+<li><a class="reference" href="#typecode" id="id99" name="id99">7.37&nbsp;&nbsp;&nbsp;%TypeCode</a></li>
+<li><a class="reference" href="#typeheadercode" id="id100" name="id100">7.38&nbsp;&nbsp;&nbsp;%TypeHeaderCode</a></li>
+<li><a class="reference" href="#unitcode" id="id101" name="id101">7.39&nbsp;&nbsp;&nbsp;%UnitCode</a></li>
+<li><a class="reference" href="#virtualcatchercode" id="id102" name="id102">7.40&nbsp;&nbsp;&nbsp;%VirtualCatcherCode</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#sip-annotations" id="id103" name="id103">8&nbsp;&nbsp;&nbsp;SIP Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#argument-annotations" id="id104" name="id104">8.1&nbsp;&nbsp;&nbsp;Argument Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#allownone" id="id105" name="id105">8.1.1&nbsp;&nbsp;&nbsp;AllowNone</a></li>
+<li><a class="reference" href="#array" id="id106" name="id106">8.1.2&nbsp;&nbsp;&nbsp;Array</a></li>
+<li><a class="reference" href="#arraysize" id="id107" name="id107">8.1.3&nbsp;&nbsp;&nbsp;ArraySize</a></li>
+<li><a class="reference" href="#constrained" id="id108" name="id108">8.1.4&nbsp;&nbsp;&nbsp;Constrained</a></li>
+<li><a class="reference" href="#getwrapper" id="id109" name="id109">8.1.5&nbsp;&nbsp;&nbsp;GetWrapper</a></li>
+<li><a class="reference" href="#in" id="id110" name="id110">8.1.6&nbsp;&nbsp;&nbsp;In</a></li>
+<li><a class="reference" href="#out" id="id111" name="id111">8.1.7&nbsp;&nbsp;&nbsp;Out</a></li>
+<li><a class="reference" href="#transfer" id="id112" name="id112">8.1.8&nbsp;&nbsp;&nbsp;Transfer</a></li>
+<li><a class="reference" href="#transferback" id="id113" name="id113">8.1.9&nbsp;&nbsp;&nbsp;TransferBack</a></li>
+<li><a class="reference" href="#transferthis" id="id114" name="id114">8.1.10&nbsp;&nbsp;&nbsp;TransferThis</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#class-annotations" id="id115" name="id115">8.2&nbsp;&nbsp;&nbsp;Class Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#abstract" id="id116" name="id116">8.2.1&nbsp;&nbsp;&nbsp;Abstract</a></li>
+<li><a class="reference" href="#delaydtor" id="id117" name="id117">8.2.2&nbsp;&nbsp;&nbsp;DelayDtor</a></li>
+<li><a class="reference" href="#external" id="id118" name="id118">8.2.3&nbsp;&nbsp;&nbsp;External</a></li>
+<li><a class="reference" href="#nodefaultctors" id="id119" name="id119">8.2.4&nbsp;&nbsp;&nbsp;NoDefaultCtors</a></li>
+<li><a class="reference" href="#pyname" id="id120" name="id120">8.2.5&nbsp;&nbsp;&nbsp;PyName</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#enum-annotations" id="id121" name="id121">8.3&nbsp;&nbsp;&nbsp;Enum Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#id17" id="id122" name="id122">8.3.1&nbsp;&nbsp;&nbsp;PyName</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#exception-annotations" id="id123" name="id123">8.4&nbsp;&nbsp;&nbsp;Exception Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#id18" id="id124" name="id124">8.4.1&nbsp;&nbsp;&nbsp;PyName</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#function-annotations" id="id125" name="id125">8.5&nbsp;&nbsp;&nbsp;Function Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#autogen" id="id126" name="id126">8.5.1&nbsp;&nbsp;&nbsp;AutoGen</a></li>
+<li><a class="reference" href="#default" id="id127" name="id127">8.5.2&nbsp;&nbsp;&nbsp;Default</a></li>
+<li><a class="reference" href="#factory" id="id128" name="id128">8.5.3&nbsp;&nbsp;&nbsp;Factory</a></li>
+<li><a class="reference" href="#holdgil" id="id129" name="id129">8.5.4&nbsp;&nbsp;&nbsp;HoldGIL</a></li>
+<li><a class="reference" href="#newthread" id="id130" name="id130">8.5.5&nbsp;&nbsp;&nbsp;NewThread</a></li>
+<li><a class="reference" href="#noderived" id="id131" name="id131">8.5.6&nbsp;&nbsp;&nbsp;NoDerived</a></li>
+<li><a class="reference" href="#numeric" id="id132" name="id132">8.5.7&nbsp;&nbsp;&nbsp;Numeric</a></li>
+<li><a class="reference" href="#posthook" id="id133" name="id133">8.5.8&nbsp;&nbsp;&nbsp;PostHook</a></li>
+<li><a class="reference" href="#prehook" id="id134" name="id134">8.5.9&nbsp;&nbsp;&nbsp;PreHook</a></li>
+<li><a class="reference" href="#id19" id="id135" name="id135">8.5.10&nbsp;&nbsp;&nbsp;PyName</a></li>
+<li><a class="reference" href="#releasegil" id="id136" name="id136">8.5.11&nbsp;&nbsp;&nbsp;ReleaseGIL</a></li>
+<li><a class="reference" href="#id20" id="id137" name="id137">8.5.12&nbsp;&nbsp;&nbsp;TransferBack</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#license-annotations" id="id138" name="id138">8.6&nbsp;&nbsp;&nbsp;License Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#licensee" id="id139" name="id139">8.6.1&nbsp;&nbsp;&nbsp;Licensee</a></li>
+<li><a class="reference" href="#signature" id="id140" name="id140">8.6.2&nbsp;&nbsp;&nbsp;Signature</a></li>
+<li><a class="reference" href="#timestamp" id="id141" name="id141">8.6.3&nbsp;&nbsp;&nbsp;Timestamp</a></li>
+<li><a class="reference" href="#type" id="id142" name="id142">8.6.4&nbsp;&nbsp;&nbsp;Type</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#variable-annotations" id="id143" name="id143">8.7&nbsp;&nbsp;&nbsp;Variable Annotations</a><ul class="auto-toc">
+<li><a class="reference" href="#id21" id="id144" name="id144">8.7.1&nbsp;&nbsp;&nbsp;PyName</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference" href="#sip-api-for-handwritten-code" id="id145" name="id145">9&nbsp;&nbsp;&nbsp;SIP API for Handwritten Code</a><ul class="auto-toc">
+<li><a class="reference" href="#sip-api-major-nr" id="id146" name="id146">9.1&nbsp;&nbsp;&nbsp;SIP_API_MAJOR_NR</a></li>
+<li><a class="reference" href="#sip-api-minor-nr" id="id147" name="id147">9.2&nbsp;&nbsp;&nbsp;SIP_API_MINOR_NR</a></li>
+<li><a class="reference" href="#sip-block-threads" id="id148" name="id148">9.3&nbsp;&nbsp;&nbsp;SIP_BLOCK_THREADS</a></li>
+<li><a class="reference" href="#sip-ssize-t" id="id149" name="id149">9.4&nbsp;&nbsp;&nbsp;SIP_SSIZE_T</a></li>
+<li><a class="reference" href="#sip-unblock-threads" id="id150" name="id150">9.5&nbsp;&nbsp;&nbsp;SIP_UNBLOCK_THREADS</a></li>
+<li><a class="reference" href="#sip-version" id="id151" name="id151">9.6&nbsp;&nbsp;&nbsp;SIP_VERSION</a></li>
+<li><a class="reference" href="#sip-version-str" id="id152" name="id152">9.7&nbsp;&nbsp;&nbsp;SIP_VERSION_STR</a></li>
+<li><a class="reference" href="#sipbadcatcherresult" id="id153" name="id153">9.8&nbsp;&nbsp;&nbsp;sipBadCatcherResult()</a></li>
+<li><a class="reference" href="#sipbadlengthforslice" id="id154" name="id154">9.9&nbsp;&nbsp;&nbsp;sipBadLengthForSlice()</a></li>
+<li><a class="reference" href="#sipbuildresult" id="id155" name="id155">9.10&nbsp;&nbsp;&nbsp;sipBuildResult()</a></li>
+<li><a class="reference" href="#sipcallmethod" id="id156" name="id156">9.11&nbsp;&nbsp;&nbsp;sipCallMethod()</a></li>
+<li><a class="reference" href="#sipcanconverttoinstance" id="id157" name="id157">9.12&nbsp;&nbsp;&nbsp;sipCanConvertToInstance()</a></li>
+<li><a class="reference" href="#sipcanconverttomappedtype" id="id158" name="id158">9.13&nbsp;&nbsp;&nbsp;sipCanConvertToMappedType()</a></li>
+<li><a class="reference" href="#sipclassname" id="id159" name="id159">9.14&nbsp;&nbsp;&nbsp;sipClassName()</a></li>
+<li><a class="reference" href="#sipconnectrx" id="id160" name="id160">9.15&nbsp;&nbsp;&nbsp;sipConnectRx()</a></li>
+<li><a class="reference" href="#sipconvertfrominstance" id="id161" name="id161">9.16&nbsp;&nbsp;&nbsp;sipConvertFromInstance()</a></li>
+<li><a class="reference" href="#sipconvertfrommappedtype" id="id162" name="id162">9.17&nbsp;&nbsp;&nbsp;sipConvertFromMappedType()</a></li>
+<li><a class="reference" href="#sipconvertfromnamedenum" id="id163" name="id163">9.18&nbsp;&nbsp;&nbsp;sipConvertFromNamedEnum()</a></li>
+<li><a class="reference" href="#sipconvertfromnewinstance" id="id164" name="id164">9.19&nbsp;&nbsp;&nbsp;sipConvertFromNewInstance()</a></li>
+<li><a class="reference" href="#sipconvertfromsequenceindex" id="id165" name="id165">9.20&nbsp;&nbsp;&nbsp;sipConvertFromSequenceIndex()</a></li>
+<li><a class="reference" href="#sipconvertfromsliceobject" id="id166" name="id166">9.21&nbsp;&nbsp;&nbsp;sipConvertFromSliceObject()</a></li>
+<li><a class="reference" href="#sipconverttocpp" id="id167" name="id167">9.22&nbsp;&nbsp;&nbsp;sipConvertToCpp()</a></li>
+<li><a class="reference" href="#sipconverttoinstance" id="id168" name="id168">9.23&nbsp;&nbsp;&nbsp;sipConvertToInstance()</a></li>
+<li><a class="reference" href="#sipconverttomappedtype" id="id169" name="id169">9.24&nbsp;&nbsp;&nbsp;sipConvertToMappedType()</a></li>
+<li><a class="reference" href="#sipdisconnectrx" id="id170" name="id170">9.25&nbsp;&nbsp;&nbsp;sipDisconnectRx()</a></li>
+<li><a class="reference" href="#sipemitsignal" id="id171" name="id171">9.26&nbsp;&nbsp;&nbsp;sipEmitSignal()</a></li>
+<li><a class="reference" href="#sipexportsymbol" id="id172" name="id172">9.27&nbsp;&nbsp;&nbsp;sipExportSymbol()</a></li>
+<li><a class="reference" href="#sipfindclass" id="id173" name="id173">9.28&nbsp;&nbsp;&nbsp;sipFindClass()</a></li>
+<li><a class="reference" href="#sipfindmappedtype" id="id174" name="id174">9.29&nbsp;&nbsp;&nbsp;sipFindMappedType()</a></li>
+<li><a class="reference" href="#sipfindnamedenum" id="id175" name="id175">9.30&nbsp;&nbsp;&nbsp;sipFindNamedEnum()</a></li>
+<li><a class="reference" href="#sipforceconverttoinstance" id="id176" name="id176">9.31&nbsp;&nbsp;&nbsp;sipForceConvertToInstance()</a></li>
+<li><a class="reference" href="#sipforceconverttomappedtype" id="id177" name="id177">9.32&nbsp;&nbsp;&nbsp;sipForceConvertToMappedType()</a></li>
+<li><a class="reference" href="#sipfree" id="id178" name="id178">9.33&nbsp;&nbsp;&nbsp;sipFree()</a></li>
+<li><a class="reference" href="#sipgetsender" id="id179" name="id179">9.34&nbsp;&nbsp;&nbsp;sipGetSender()</a></li>
+<li><a class="reference" href="#sipgetwrapper" id="id180" name="id180">9.35&nbsp;&nbsp;&nbsp;sipGetWrapper()</a></li>
+<li><a class="reference" href="#sipimportsymbol" id="id181" name="id181">9.36&nbsp;&nbsp;&nbsp;sipImportSymbol()</a></li>
+<li><a class="reference" href="#sipinttypeclassmap" id="id182" name="id182">9.37&nbsp;&nbsp;&nbsp;sipIntTypeClassMap</a></li>
+<li><a class="reference" href="#sipissubclassinstance" id="id183" name="id183">9.38&nbsp;&nbsp;&nbsp;sipIsSubClassInstance()</a></li>
+<li><a class="reference" href="#siplong-asunsignedlong" id="id184" name="id184">9.39&nbsp;&nbsp;&nbsp;sipLong_AsUnsignedLong()</a></li>
+<li><a class="reference" href="#sipmalloc" id="id185" name="id185">9.40&nbsp;&nbsp;&nbsp;sipMalloc()</a></li>
+<li><a class="reference" href="#sipmapinttoclass" id="id186" name="id186">9.41&nbsp;&nbsp;&nbsp;sipMapIntToClass()</a></li>
+<li><a class="reference" href="#sipmapstringtoclass" id="id187" name="id187">9.42&nbsp;&nbsp;&nbsp;sipMapStringToClass()</a></li>
+<li><a class="reference" href="#sipparseresult" id="id188" name="id188">9.43&nbsp;&nbsp;&nbsp;sipParseResult()</a></li>
+<li><a class="reference" href="#sipreleaseinstance" id="id189" name="id189">9.44&nbsp;&nbsp;&nbsp;sipReleaseInstance()</a></li>
+<li><a class="reference" href="#sipreleasemappedtype" id="id190" name="id190">9.45&nbsp;&nbsp;&nbsp;sipReleaseMappedType()</a></li>
+<li><a class="reference" href="#sipstringtypeclassmap" id="id191" name="id191">9.46&nbsp;&nbsp;&nbsp;sipStringTypeClassMap</a></li>
+<li><a class="reference" href="#siptransfer" id="id192" name="id192">9.47&nbsp;&nbsp;&nbsp;sipTransfer()</a></li>
+<li><a class="reference" href="#siptransferback" id="id193" name="id193">9.48&nbsp;&nbsp;&nbsp;sipTransferBack()</a></li>
+<li><a class="reference" href="#siptransferto" id="id194" name="id194">9.49&nbsp;&nbsp;&nbsp;sipTransferTo()</a></li>
+<li><a class="reference" href="#sipwrapper" id="id195" name="id195">9.50&nbsp;&nbsp;&nbsp;sipWrapper</a></li>
+<li><a class="reference" href="#sipwrapper-check" id="id196" name="id196">9.51&nbsp;&nbsp;&nbsp;sipWrapper_Check()</a></li>
+<li><a class="reference" href="#sipwrappertype" id="id197" name="id197">9.52&nbsp;&nbsp;&nbsp;sipWrapperType</a></li>
+<li><a class="reference" href="#generated-type-convertors" id="id198" name="id198">9.53&nbsp;&nbsp;&nbsp;Generated Type Convertors</a></li>
+<li><a class="reference" href="#generated-type-objects" id="id199" name="id199">9.54&nbsp;&nbsp;&nbsp;Generated Type Objects</a></li>
+<li><a class="reference" href="#generated-named-enum-type-objects" id="id200" name="id200">9.55&nbsp;&nbsp;&nbsp;Generated Named Enum Type Objects</a></li>
+<li><a class="reference" href="#generated-derived-classes" id="id201" name="id201">9.56&nbsp;&nbsp;&nbsp;Generated Derived Classes</a></li>
+<li><a class="reference" href="#generated-exception-objects" id="id202" name="id202">9.57&nbsp;&nbsp;&nbsp;Generated Exception Objects</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#using-the-sip-module-in-applications" id="id203" name="id203">10&nbsp;&nbsp;&nbsp;Using the SIP Module in Applications</a></li>
+<li><a class="reference" href="#the-sip-build-system" id="id204" name="id204">11&nbsp;&nbsp;&nbsp;The SIP Build System</a><ul class="auto-toc">
+<li><a class="reference" href="#sipconfig-functions" id="id205" name="id205">11.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">sipconfig</span></tt> Functions</a></li>
+<li><a class="reference" href="#sipconfig-classes" id="id206" name="id206">11.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">sipconfig</span></tt> Classes</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#building-your-extension-with-distutils" id="id207" name="id207">12&nbsp;&nbsp;&nbsp;Building Your Extension with distutils</a></li>
+<li><a class="reference" href="#builtin-modules-and-custom-interpreters" id="id208" name="id208">13&nbsp;&nbsp;&nbsp;Builtin Modules and Custom Interpreters</a></li>
+</ul>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id22" id="introduction" name="introduction">1&nbsp;&nbsp;&nbsp;Introduction</a></h1>
+<p>This is the reference guide for SIP 4.6. SIP is a tool for
+automatically generating <a class="reference" href="http://www.python.org">Python</a> bindings for C and
+C++ libraries. SIP was originally developed in 1998 for
+<a class="reference" href="http://www.riverbankcomputing.co.uk/pyqt/">PyQt</a> - the Python bindings for
+the Qt GUI toolkit - but is suitable for generating bindings for any C or C++
+library.</p>
+<p>This version of SIP generates bindings for Python v2.3 or later.</p>
+<p>There are many other similar tools available. One of the original such tools
+is <a class="reference" href="http://www.swig.org">SWIG</a> and, in fact, SIP is so called because it
+started out as a small SWIG. Unlike SWIG, SIP is specifically designed for
+bringing together Python and C/C++ and goes to great lengths to make the
+integration as tight as possible.</p>
+<p>The homepage for SIP is <a class="reference" href="http://www.riverbankcomputing.co.uk/sip/">http://www.riverbankcomputing.co.uk/sip/</a>. Here you
+will always find the latest stable version, current development snapshots, and
+the latest version of this documentation.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id23" id="license" name="license">1.1&nbsp;&nbsp;&nbsp;License</a></h2>
+<p>SIP is licensed under the same terms as Python itself. SIP places no
+restrictions on the license you may apply to the bindings you create.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id24" id="features" name="features">1.2&nbsp;&nbsp;&nbsp;Features</a></h2>
+<p>SIP, and the bindings it produces, have the following features.</p>
+<blockquote>
+<ul class="simple">
+<li>bindings are fast to load and minimise memory consumption especially when
+only a small sub-set of a large library is being used</li>
+<li>automatic conversion between standard Python and C/C++ data types</li>
+<li>overloading of functions and methods with different argument signatures</li>
+<li>access to a C++ class's protected methods</li>
+<li>the ability to define a Python class that is a sub-class of a C++ class,
+including abstract C++ classes</li>
+<li>Python sub-classes can implement the <tt class="docutils literal"><span class="pre">__dtor__(self)</span></tt> method which
+will be called from the C++ class's virtual destructor</li>
+<li>support for ordinary C++ functions, class methods, static class methods,
+virtual class methods and abstract class methods</li>
+<li>the ability to re-implement C++ virtual and abstract methods in Python</li>
+<li>support for global and class variables</li>
+<li>support for global and class operators</li>
+<li>support for C++ namespaces</li>
+<li>support for C++ templates</li>
+<li>support for C++ exceptions and wrapping them as Python exceptions</li>
+<li>the ability to define mappings between C++ classes and similar Python
+data types that are automatically invoked</li>
+<li>the ability to automatically exploit any available run time type
+information to ensure that the class of a Python instance object matches
+the class of the corresponding C++ instance</li>
+<li>full support of the Python global interpreter lock, including the ability
+to specify that a C++ function of method may block, therefore allowing
+the lock to be released and other Python threads to run</li>
+<li>support for the concept of ownership of a C++ instance (i.e. what part of
+the code is responsible for calling the instance's destructor) and how
+the ownership may change during the execution of an application</li>
+<li>the ability to generate bindings for a C++ class library that itself is
+built on another C++ class library which also has had bindings generated
+so that the different bindings integrate and share code properly</li>
+<li>a sophisticated versioning system that allows the full lifetime of a C++
+class library, including any platform specific or optional features, to
+be described in a single set of specification files</li>
+<li>the ability to include documentation in the specification files which can
+be extracted and subsequently processed by external tools</li>
+<li>the ability to include copyright notices and licensing information in the
+specification files that is automatically included in all generated
+source code</li>
+<li>a build system, written in Python, that you can extend to configure,
+compile and install your own bindings without worrying about platform
+specific issues</li>
+<li>support for building your extensions using distutils</li>
+<li>SIP, and the bindings it produces, runs under UNIX, Linux, Windows and
+MacOS/X</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id25" id="sip-components" name="sip-components">1.3&nbsp;&nbsp;&nbsp;SIP Components</a></h2>
+<p>SIP comprises a number of different components.</p>
+<blockquote>
+<ul class="simple">
+<li>The SIP code generator (<tt class="docutils literal"><span class="pre">sip</span></tt> or <tt class="docutils literal"><span class="pre">sip.exe</span></tt>). This processes <tt class="docutils literal"><span class="pre">.sip</span></tt>
+specification files and generates C or C++ bindings. It is covered in
+detail in <a class="reference" href="#using-sip">Using SIP</a>.</li>
+<li>The SIP header file (<tt class="docutils literal"><span class="pre">sip.h</span></tt>). This contains definitions and data
+structures needed by the generated C and C++ code.</li>
+<li>The SIP module (<tt class="docutils literal"><span class="pre">sip.so</span></tt> or <tt class="docutils literal"><span class="pre">sip.pyd</span></tt>). This is a Python extension
+module that is imported automatically by SIP generated bindings and
+provides them with some common utility functions. See also <a class="reference" href="#using-the-sip-module-in-applications">Using the
+SIP Module in Applications</a>.</li>
+<li>The SIP build system (<tt class="docutils literal"><span class="pre">sipconfig.py</span></tt>). This is a pure Python module
+that is created when SIP is configured and encapsulates all the necessary
+information about your system including relevant directory names,
+compiler and linker flags, and version numbers. It also includes several
+Python classes and functions which help you write configuration scripts
+for your own bindings. It is covered in detail in <a class="reference" href="#the-sip-build-system">The SIP Build
+System</a>.</li>
+<li>The SIP distutils extension (<tt class="docutils literal"><span class="pre">sipdistutils.py</span></tt>). This is a distutils
+extension that can be used to build your extension modules using
+distutils and is an alternative to writing configuration scripts with the
+SIP build system. This can be as simple as adding your .sip files to the
+list of files needed to build the extension module. It is covered in
+detail in <a class="reference" href="#building-your-extension-with-distutils">Building Your Extension with distutils</a>.</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id26" id="qt-support" name="qt-support">1.4&nbsp;&nbsp;&nbsp;Qt Support</a></h2>
+<p>SIP has specific support for the creation of bindings based on Trolltech's Qt
+toolkit.</p>
+<p>The SIP code generator understands the signal/slot type safe callback mechanism
+that Qt uses to connect objects together. This allows applications to define
+new Python signals, and allows any Python callable object to be used as a slot.</p>
+<p>SIP itself does not require Qt to be installed.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id27" id="potential-incompatibilities-with-earlier-versions" name="potential-incompatibilities-with-earlier-versions">2&nbsp;&nbsp;&nbsp;Potential Incompatibilities with Earlier Versions</a></h1>
+<div class="section">
+<h2><a class="toc-backref" href="#id28" id="sip-v4-4" name="sip-v4-4">2.1&nbsp;&nbsp;&nbsp;SIP v4.4</a></h2>
+<blockquote>
+<ul class="simple">
+<li>The <tt class="docutils literal"><span class="pre">SIP_BUILD</span></tt> C preprocessor symbol has been removed.</li>
+<li><a class="reference" href="#sipconverttocpp">sipConvertToCpp()</a>, <a class="reference" href="#sipissubclassinstance">sipIsSubClassInstance()</a> and the old <a class="reference" href="#generated-type-convertors">Generated
+Type Convertors</a> have been deprecated. The functions
+<a class="reference" href="#sipcanconverttoinstance">sipCanConvertToInstance()</a>, <a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a>,
+<a class="reference" href="#sipforceconverttoinstance">sipForceConvertToInstance()</a>, <a class="reference" href="#sipconvertfrominstance">sipConvertFromInstance()</a>,
+<a class="reference" href="#sipconvertfromnewinstance">sipConvertFromNewInstance()</a>, <a class="reference" href="#sipcanconverttomappedtype">sipCanConvertToMappedType()</a>,
+<a class="reference" href="#sipconverttomappedtype">sipConvertToMappedType()</a>, <a class="reference" href="#sipforceconverttomappedtype">sipForceConvertToMappedType()</a> and
+<a class="reference" href="#sipconvertfrommappedtype">sipConvertFromMappedType()</a> should be used instead. Handwritten
+<a class="reference" href="#convertfromtypecode">%ConvertFromTypeCode</a> and <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> now has the
+responsibility for using these to implement the <tt class="docutils literal"><span class="pre">Transfer</span></tt> and
+<tt class="docutils literal"><span class="pre">TransferBack</span></tt> annotations.</li>
+</ul>
+</blockquote>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id29" id="installing-sip" name="installing-sip">3&nbsp;&nbsp;&nbsp;Installing SIP</a></h1>
+<div class="section">
+<h2><a class="toc-backref" href="#id30" id="downloading-sip" name="downloading-sip">3.1&nbsp;&nbsp;&nbsp;Downloading SIP</a></h2>
+<p>You can get the latest release of the SIP source code from
+<a class="reference" href="http://www.riverbankcomputing.co.uk/sip/download.php">http://www.riverbankcomputing.co.uk/sip/download.php</a>.</p>
+<p>SIP is also included with all of the major Linux distributions. However, it
+may be a version or two out of date.</p>
+<p>You may also find more up to date pre-compiled binaries on
+<a class="reference" href="http://sourceforge.net/project/showfiles.php?group_id=61057">SourceForge</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id31" id="configuring-sip" name="configuring-sip">3.2&nbsp;&nbsp;&nbsp;Configuring SIP</a></h2>
+<p>After unpacking the source package (either a <tt class="docutils literal"><span class="pre">.tar.gz</span></tt> or a <tt class="docutils literal"><span class="pre">.zip</span></tt> file
+depending on your platform) you should then check for any <tt class="docutils literal"><span class="pre">README</span></tt> files
+that relate to your platform.</p>
+<p>Next you need to configure SIP by executing the <tt class="docutils literal"><span class="pre">configure.py</span></tt> script. For
+example:</p>
+<pre class="literal-block">
+python configure.py
+</pre>
+<p>This assumes that the Python interpreter is on your path. Something like the
+following may be appropriate on Windows:</p>
+<pre class="literal-block">
+c:\python25\python configure.py
+</pre>
+<p>If you have multiple versions of Python installed then make sure you use the
+interpreter for which you wish SIP to generate bindings for.</p>
+<p>The full set of command line options is:</p>
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">-h</span></kbd></td>
+<td>Display a help message.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-a</span></kbd></td>
+<td>Export all symbols in any SIP generated module and the SIP module
+itself. This was the default behaviour of SIP prior to v4.2.
+Normally only a module's inititialisation function is exported. This
+option is deprecated as the <tt class="docutils literal"><span class="pre">ModuleMakefile</span></tt> class of <a class="reference" href="#the-sip-build-system">The SIP Build
+System</a> allows this to be specified on a per module basis.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-b <var>dir</var></span></kbd></td>
+<td>The SIP code generator will be installed in the directory <tt class="docutils literal"><span class="pre">dir</span></tt>.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-d <var>dir</var></span></kbd></td>
+<td>The SIP module will be installed in the directory <tt class="docutils literal"><span class="pre">dir</span></tt>.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-e <var>dir</var></span></kbd></td>
+<td>The SIP header file will be installed in the directory <tt class="docutils literal"><span class="pre">dir</span></tt>.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-k</span></kbd></td>
+<td>The SIP module will be built as a static library. This is useful when
+building the SIP module as a Python builtin (see
+<a class="reference" href="#builtin-modules-and-custom-interpreters">Builtin Modules and Custom Interpreters</a>).</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-n</span></kbd></td>
+<td>The SIP code generator and module will be built as universal binaries
+under MacOS/X.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-p <var>plat</var></span></kbd></td>
+<td>Explicitly specify the platform/compiler to be used by the build
+system, otherwise a platform specific default will be used. The
+<tt class="docutils literal"><span class="pre">-h</span></tt> option will display all the supported platform/compilers and
+the default.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-u</span></kbd></td>
+<td>The SIP module will be built with debugging symbols.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-v <var>dir</var></span></kbd></td>
+<td>By default <tt class="docutils literal"><span class="pre">.sip</span></tt> files will be installed in the directory <tt class="docutils literal"><span class="pre">dir</span></tt>.</td></tr>
+</tbody>
+</table>
+<p>The configure.py script takes many other options that allows the build system
+to be finely tuned. These are of the form <tt class="docutils literal"><span class="pre">name=value</span></tt> or <tt class="docutils literal"><span class="pre">name+=value</span></tt>.
+The <tt class="docutils literal"><span class="pre">-h</span></tt> option will display each supported <tt class="docutils literal"><span class="pre">name</span></tt>, although not all are
+applicable to all platforms.</p>
+<p>The <tt class="docutils literal"><span class="pre">name=value</span></tt> form means that <tt class="docutils literal"><span class="pre">value</span></tt> will replace the existing value of
+<tt class="docutils literal"><span class="pre">name</span></tt>.</p>
+<p>The <tt class="docutils literal"><span class="pre">name+=value</span></tt> form means that <tt class="docutils literal"><span class="pre">value</span></tt> will be appended to the existing
+value of <tt class="docutils literal"><span class="pre">name</span></tt>.</p>
+<p>For example, the following will disable support for C++ exceptions (and so
+reduce the size of module binaries) when used with GCC:</p>
+<pre class="literal-block">
+python configure.py CXXFLAGS+=-fno-exceptions
+</pre>
+<p>A pure Python module called <tt class="docutils literal"><span class="pre">sipconfig.py</span></tt> is generated by <tt class="docutils literal"><span class="pre">configure.py</span></tt>.
+This defines each <tt class="docutils literal"><span class="pre">name</span></tt> and its corresponding <tt class="docutils literal"><span class="pre">value</span></tt>. Looking at it will
+give you a good idea of how the build system uses the different options. It is
+covered in detail in <a class="reference" href="#the-sip-build-system">The SIP Build System</a>.</p>
+<div class="section">
+<h3><a class="toc-backref" href="#id32" id="configuring-sip-using-mingw" name="configuring-sip-using-mingw">3.2.1&nbsp;&nbsp;&nbsp;Configuring SIP Using MinGW</a></h3>
+<p>SIP, and the modules it generates, can be built with MinGW, the Windows port of
+GCC. You must use the <tt class="docutils literal"><span class="pre">-p</span></tt> command line option to specify the correct
+platform. For example:</p>
+<pre class="literal-block">
+c:\python25\python configure.py -p win32-g++
+</pre>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id33" id="configuring-sip-using-the-borland-c-compiler" name="configuring-sip-using-the-borland-c-compiler">3.2.2&nbsp;&nbsp;&nbsp;Configuring SIP Using the Borland C++ Compiler</a></h3>
+<p>SIP, and the modules it generates, can be built with the free Borland C++
+compiler. You must use the <tt class="docutils literal"><span class="pre">-p</span></tt> command line option to specify the correct
+platform. For example:</p>
+<pre class="literal-block">
+c:\python25\python configure.py -p win32-borland
+</pre>
+<p>You must also make sure you have a Borland-compatible version of the Python
+library. If you are using the standard Python distribution (built using the
+Microsoft compiler) then you must convert the format of the Python library.
+For example:</p>
+<pre class="literal-block">
+coff2omf python25.lib python25_bcpp.lib
+</pre>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id34" id="building-sip" name="building-sip">3.3&nbsp;&nbsp;&nbsp;Building SIP</a></h2>
+<p>The next step is to build SIP by running your platform's <tt class="docutils literal"><span class="pre">make</span></tt> command. For
+example:</p>
+<pre class="literal-block">
+make
+</pre>
+<p>The final step is to install SIP by running the following command:</p>
+<pre class="literal-block">
+make install
+</pre>
+<p>(Depending on your system you may require root or administrator privileges.)</p>
+<p>This will install the various SIP components.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id35" id="using-sip" name="using-sip">4&nbsp;&nbsp;&nbsp;Using SIP</a></h1>
+<p>Bindings are generated by the SIP code generator from a number of specification
+files, typically with a <tt class="docutils literal"><span class="pre">.sip</span></tt> extension. Specification files look very
+similar to C and C++ header files, but often with additional information (in
+the form of a <em>directive</em> or an <em>annotation</em>) and code so that the bindings
+generated can be finely tuned.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id36" id="a-simple-c-example" name="a-simple-c-example">4.1&nbsp;&nbsp;&nbsp;A Simple C++ Example</a></h2>
+<p>We start with a simple example. Let's say you have a (fictional) C++ library
+that implements a single class called <tt class="docutils literal"><span class="pre">Word</span></tt>. The class has one constructor
+that takes a <tt class="docutils literal"><span class="pre">\0</span></tt> terminated character string as its single argument. The
+class has one method called <tt class="docutils literal"><span class="pre">reverse()</span></tt> which takes no arguments and returns
+a <tt class="docutils literal"><span class="pre">\0</span></tt> terminated character string. The interface to the class is defined in
+a header file called <tt class="docutils literal"><span class="pre">word.h</span></tt> which might look something like this:</p>
+<pre class="literal-block">
+// Define the interface to the word library.
+
+class Word {
+ const char *the_word;
+
+public:
+ Word(const char *w);
+
+ char *reverse() const;
+};
+</pre>
+<p>The corresponding SIP specification file would then look something like this:</p>
+<pre class="literal-block">
+// Define the SIP wrapper to the word library.
+
+%Module word 0
+
+class Word {
+
+%TypeHeaderCode
+#include &lt;word.h&gt;
+%End
+
+public:
+ Word(const char *w);
+
+ char *reverse() const;
+};
+</pre>
+<p>Obviously a SIP specification file looks very much like a C++ (or C) header
+file, but SIP does not include a full C++ parser. Let's look at the
+differences between the two files.</p>
+<blockquote>
+<ul class="simple">
+<li>The <a class="reference" href="#module">%Module</a> directive has been added <a class="footnote-reference" href="#id4" id="id1" name="id1">[1]</a>. This is used to name the
+Python module that is being created and to give it a <em>generation</em> number.
+In this example these are <tt class="docutils literal"><span class="pre">word</span></tt> and <tt class="docutils literal"><span class="pre">0</span></tt> respectively. The
+generation number is effectively the version number of the module.</li>
+<li>The <a class="reference" href="#typeheadercode">%TypeHeaderCode</a> directive has been added. The text between this
+and the following <a class="reference" href="#end">%End</a> directive is included literally in the code
+that SIP generates. Normally it is used, as in this case, to
+<tt class="docutils literal"><span class="pre">#include</span></tt> the corresponding C++ (or C) header file <a class="footnote-reference" href="#id5" id="id2" name="id2">[2]</a>.</li>
+<li>The declaration of the private variable <tt class="docutils literal"><span class="pre">this_word</span></tt> has been removed.
+SIP does not support access to either private or protected instance
+variables.</li>
+</ul>
+</blockquote>
+<p>If we want to we can now generate the C++ code in the current directory by
+running the following command:</p>
+<pre class="literal-block">
+sip -c . word.sip
+</pre>
+<p>However, that still leaves us with the task of compiling the generated code and
+linking it against all the necessary libraries. It's much easier to use the
+SIP build system to do the whole thing.</p>
+<p>Using the SIP build system is simply a matter of writing a small Python script.
+In this simple example we will assume that the <tt class="docutils literal"><span class="pre">word</span></tt> library we are wrapping
+and it's header file are installed in standard system locations and will be
+found by the compiler and linker without having to specify any additional
+flags. In a more realistic example your Python script may take command line
+options, or search a set of directories to deal with different configurations
+and installations.</p>
+<p>This is the simplest script (conventionally called <tt class="docutils literal"><span class="pre">configure.py</span></tt>):</p>
+<pre class="literal-block">
+import os
+import sipconfig
+
+# The name of the SIP build file generated by SIP and used by the build
+# system.
+build_file = &quot;word.sbf&quot;
+
+# Get the SIP configuration information.
+config = sipconfig.Configuration()
+
+# Run SIP to generate the code.
+os.system(&quot; &quot;.join([config.sip_bin, &quot;-c&quot;, &quot;.&quot;, &quot;-b&quot;, build_file, &quot;word.sip&quot;]))
+
+# Create the Makefile.
+makefile = sipconfig.SIPModuleMakefile(config, build_file)
+
+# Add the library we are wrapping. The name doesn't include any platform
+# specific prefixes or extensions (e.g. the &quot;lib&quot; prefix on UNIX, or the
+# &quot;.dll&quot; extension on Windows).
+makefile.extra_libs = [&quot;word&quot;]
+
+# Generate the Makefile itself.
+makefile.generate()
+</pre>
+<p>Hopefully this script is self-documenting. The key parts are the
+<tt class="docutils literal"><span class="pre">Configuration</span></tt> and <tt class="docutils literal"><span class="pre">SIPModuleMakefile</span></tt> classes. The build system contains
+other Makefile classes, for example to build programs or to call other
+Makefiles in sub-directories.</p>
+<p>After running the script (using the Python interpreter the extension module is
+being created for) the generated C++ code and <tt class="docutils literal"><span class="pre">Makefile</span></tt> will be in the
+current directory.</p>
+<p>To compile and install the extension module, just run the following
+commands <a class="footnote-reference" href="#id6" id="id3" name="id3">[3]</a>:</p>
+<pre class="literal-block">
+make
+make install
+</pre>
+<p>That's all there is to it.</p>
+<p>See <a class="reference" href="#building-your-extension-with-distutils">Building Your Extension with distutils</a> for an example of how to build
+this example using distutils.</p>
+<table class="docutils footnote" frame="void" id="id4" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td>All SIP directives start with a <tt class="docutils literal"><span class="pre">%</span></tt> as the first non-whitespace
+character of a line.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id5" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id2" name="id5">[2]</a></td><td>SIP includes many code directives like this. They differ in where the
+supplied code is placed by SIP in the generated code.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id6" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id3" name="id6">[3]</a></td><td>On Windows you might run <tt class="docutils literal"><span class="pre">nmake</span></tt> or <tt class="docutils literal"><span class="pre">mingw32-make</span></tt> instead.</td></tr>
+</tbody>
+</table>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id37" id="id7" name="id7">4.2&nbsp;&nbsp;&nbsp;A Simple C Example</a></h2>
+<p>Let's now look at a very similar example of wrapping a fictional C library:</p>
+<pre class="literal-block">
+/* Define the interface to the word library. */
+
+struct Word {
+ const char *the_word;
+};
+
+struct Word *create_word(const char *w);
+char *reverse(struct Word *word);
+</pre>
+<p>The corresponding SIP specification file would then look something like this:</p>
+<pre class="literal-block">
+/* Define the SIP wrapper to the word library. */
+
+%CModule word 0
+
+struct Word {
+
+%TypeHeaderCode
+#include &lt;word.h&gt;
+%End
+
+ const char *the_word;
+};
+
+struct Word *create_word(const char *w) /Factory/;
+char *reverse(struct Word *word);
+</pre>
+<p>Again, let's look at the differences between the two files.</p>
+<blockquote>
+<ul class="simple">
+<li>The <a class="reference" href="#cmodule">%CModule</a> directive has been added. This has the same syntax as
+the <a class="reference" href="#module">%Module</a> directive used in the previous example but tells SIP that
+the library being wrapped is implemented in C rather than C++.</li>
+<li>The <a class="reference" href="#typeheadercode">%TypeHeaderCode</a> directive has been added.</li>
+<li>The <a class="reference" href="#factory">Factory</a> annotation has been added to the <tt class="docutils literal"><span class="pre">create_word()</span></tt> function.
+This tells SIP that a newly created structure is being returned and it is
+owned by Python.</li>
+</ul>
+</blockquote>
+<p>The <tt class="docutils literal"><span class="pre">configure.py</span></tt> build system script described in the previous example can
+be used for this example without change.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id38" id="a-more-complex-c-example" name="a-more-complex-c-example">4.3&nbsp;&nbsp;&nbsp;A More Complex C++ Example</a></h2>
+<p>In this last example we will wrap a fictional C++ library that contains a class
+that is derived from a Qt class. This will demonstrate how SIP allows a class
+hierarchy to be split across multiple Python extension modules, and will
+introduce SIP's versioning system.</p>
+<p>The library contains a single C++ class called <tt class="docutils literal"><span class="pre">Hello</span></tt> which is derived from
+Qt's <tt class="docutils literal"><span class="pre">QLabel</span></tt> class. It behaves just like <tt class="docutils literal"><span class="pre">QLabel</span></tt> except that the text
+in the label is hard coded to be <tt class="docutils literal"><span class="pre">Hello</span> <span class="pre">World</span></tt>. To make the example more
+interesting we'll also say that the library only supports Qt v3.0 and later,
+and also includes a function called <tt class="docutils literal"><span class="pre">setDefault()</span></tt> that is not implemented
+in the Windows version of the library.</p>
+<p>The <tt class="docutils literal"><span class="pre">hello.h</span></tt> header file looks something like this:</p>
+<pre class="literal-block">
+// Define the interface to the hello library.
+
+#include &lt;qlabel.h&gt;
+#include &lt;qwidget.h&gt;
+#include &lt;qstring.h&gt;
+
+class Hello : public QLabel {
+ // This is needed by the Qt Meta-Object Compiler.
+ Q_OBJECT
+
+public:
+ Hello(QWidget *parent, const char *name = 0, WFlags f = 0);
+
+private:
+ // Prevent instances from being copied.
+ Hello(const Hello &amp;);
+ Hello &amp;operator=(const Hello &amp;);
+};
+
+#if !defined(Q_OS_WIN)
+void setDefault(const QString &amp;def);
+#endif
+</pre>
+<p>The corresponding SIP specification file would then look something like this:</p>
+<pre class="literal-block">
+// Define the SIP wrapper to the hello library.
+
+%Module hello 0
+
+%Import qt/qtmod.sip
+
+%If (Qt_3_0_0 -)
+
+class Hello : QLabel {
+
+%TypeHeaderCode
+#include &lt;hello.h&gt;
+%End
+
+public:
+ Hello(QWidget *parent /TransferThis/, const char *name = 0, WFlags f = 0);
+
+private:
+ Hello(const Hello &amp;);
+};
+
+%If (!WS_WIN)
+void setDefault(const QString &amp;def);
+%End
+
+%End
+</pre>
+<p>Again we look at the differences, but we'll skip those that we've looked at in
+previous examples.</p>
+<blockquote>
+<ul class="simple">
+<li>The <a class="reference" href="#import">%Import</a> directive has been added to specify that we are extending
+the class hierarchy defined in the file <tt class="docutils literal"><span class="pre">qt/qtmod.sip</span></tt>. This file is
+part of PyQt. The build system will take care of finding the file's
+exact location.</li>
+<li>The <a class="reference" href="#if">%If</a> directive has been added to specify that
+everything <a class="footnote-reference" href="#id11" id="id8" name="id8">[4]</a> up to the matching <a class="reference" href="#end">%End</a> directive only applies to Qt
+v3.0 and later. <tt class="docutils literal"><span class="pre">Qt_3_0_0</span></tt> is a <em>tag</em> defined in <tt class="docutils literal"><span class="pre">qtmod.sip</span></tt> <a class="footnote-reference" href="#id12" id="id9" name="id9">[5]</a>
+using the <a class="reference" href="#timeline">%Timeline</a> directive. <a class="reference" href="#timeline">%Timeline</a> is used to define a tag
+for each version of a library's API you are wrapping allowing you to
+maintain all the different versions in a single SIP specification. The
+build system provides support to <tt class="docutils literal"><span class="pre">configure.py</span></tt> scripts for working out
+the correct tags to use according to which version of the library is
+actually installed.</li>
+<li>The <tt class="docutils literal"><span class="pre">public</span></tt> keyword used in defining the super-classes has been
+removed. This is not supported by SIP.</li>
+<li>The <a class="reference" href="#transferthis">TransferThis</a> annotation has been added to the first argument
+of the constructor. It specifies that if the argument is not 0 (i.e. the
+<tt class="docutils literal"><span class="pre">Hello</span></tt> instance being constructed has a parent) then ownership of the
+instance is transferred from Python to C++. It is needed because Qt
+maintains objects (i.e. instances derived from the <tt class="docutils literal"><span class="pre">QObject</span></tt> class) in
+a hierachy. When an object is destroyed all of its children are also
+automatically destroyed. It is important, therefore, that the Python
+garbage collector doesn't also try and destroy them. This is covered in
+more detail in <a class="reference" href="#ownership-of-objects">Ownership of Objects</a>. SIP provides many other
+annotations that can be applied to arguments, functions and classes.
+Multiple annotations are separated by commas. Annotations may have
+values.</li>
+<li>The <tt class="docutils literal"><span class="pre">=</span></tt> operator has been removed. This operator is not supported by
+SIP.</li>
+<li>The <a class="reference" href="#if">%If</a> directive has been added to specify that everything up to the
+matching <a class="reference" href="#end">%End</a> directive does not apply to Windows. <tt class="docutils literal"><span class="pre">WS_WIN</span></tt> is
+another tag defined by PyQt, this time using the <a class="reference" href="#platforms">%Platforms</a> directive.
+Tags defined by the <a class="reference" href="#platforms">%Platforms</a> directive are mutually exclusive, i.e.
+only one may be valid at a time <a class="footnote-reference" href="#id13" id="id10" name="id10">[6]</a>.</li>
+</ul>
+</blockquote>
+<p>One question you might have at this point is why bother to define the private
+copy constructor when it can never be called from Python? The answer is to
+prevent the automatic generation of a public copy constructor.</p>
+<p>We now look at the <tt class="docutils literal"><span class="pre">configure.py</span></tt> script. This is a little different to the
+script in the previous examples for two related reasons.</p>
+<p>Firstly, PyQt includes a pure Python module called <tt class="docutils literal"><span class="pre">pyqtconfig</span></tt> that extends
+the SIP build system for modules, like our example, that build on top of PyQt.
+It deals with the details of which version of Qt is being used (i.e. it
+determines what the correct tags are) and where it is installed. This is
+called a module's configuration module.</p>
+<p>Secondly, we generate a configuration module (called <tt class="docutils literal"><span class="pre">helloconfig</span></tt>) for our
+own <tt class="docutils literal"><span class="pre">hello</span></tt> module. There is no need to do this, but if there is a chance
+that somebody else might want to extend your C++ library then it would make
+life easier for them.</p>
+<p>Now we have two scripts. First the <tt class="docutils literal"><span class="pre">configure.py</span></tt> script:</p>
+<pre class="literal-block">
+import os
+import sipconfig
+import pyqtconfig
+
+# The name of the SIP build file generated by SIP and used by the build
+# system.
+build_file = &quot;hello.sbf&quot;
+
+# Get the PyQt configuration information.
+config = pyqtconfig.Configuration()
+
+# Get the extra SIP flags needed by the imported qt module. Note that
+# this normally only includes those flags (-x and -t) that relate to SIP's
+# versioning system.
+qt_sip_flags = config.pyqt_qt_sip_flags
+
+# Run SIP to generate the code. Note that we tell SIP where to find the qt
+# module's specification files using the -I flag.
+os.system(&quot; &quot;.join([config.sip_bin, &quot;-c&quot;, &quot;.&quot;, &quot;-b&quot;, build_file, &quot;-I&quot;, config.pyqt_sip_dir, qt_sip_flags, &quot;hello.sip&quot;]))
+
+# We are going to install the SIP specification file for this module and
+# its configuration module.
+installs = []
+
+installs.append([&quot;hello.sip&quot;, os.path.join(config.default_sip_dir, &quot;hello&quot;)])
+
+installs.append([&quot;helloconfig.py&quot;, config.default_mod_dir])
+
+# Create the Makefile. The QtModuleMakefile class provided by the
+# pyqtconfig module takes care of all the extra preprocessor, compiler and
+# linker flags needed by the Qt library.
+makefile = pyqtconfig.QtModuleMakefile(
+ configuration=config,
+ build_file=build_file,
+ installs=installs
+)
+
+# Add the library we are wrapping. The name doesn't include any platform
+# specific prefixes or extensions (e.g. the &quot;lib&quot; prefix on UNIX, or the
+# &quot;.dll&quot; extension on Windows).
+makefile.extra_libs = [&quot;hello&quot;]
+
+# Generate the Makefile itself.
+makefile.generate()
+
+# Now we create the configuration module. This is done by merging a Python
+# dictionary (whose values are normally determined dynamically) with a
+# (static) template.
+content = {
+ # Publish where the SIP specifications for this module will be
+ # installed.
+ &quot;hello_sip_dir&quot;: config.default_sip_dir,
+
+ # Publish the set of SIP flags needed by this module. As these are the
+ # same flags needed by the qt module we could leave it out, but this
+ # allows us to change the flags at a later date without breaking
+ # scripts that import the configuration module.
+ &quot;hello_sip_flags&quot;: qt_sip_flags
+}
+
+# This creates the helloconfig.py module from the helloconfig.py.in
+# template and the dictionary.
+sipconfig.create_config_module(&quot;helloconfig.py&quot;, &quot;helloconfig.py.in&quot;, content)
+</pre>
+<p>Next we have the <tt class="docutils literal"><span class="pre">helloconfig.py.in</span></tt> template script:</p>
+<pre class="literal-block">
+import pyqtconfig
+
+# These are installation specific values created when Hello was configured.
+# The following line will be replaced when this template is used to create
+# the final configuration module.
+# &#64;SIP_CONFIGURATION&#64;
+
+class Configuration(pyqtconfig.Configuration):
+ &quot;&quot;&quot;The class that represents Hello configuration values.
+ &quot;&quot;&quot;
+ def __init__(self, sub_cfg=None):
+ &quot;&quot;&quot;Initialise an instance of the class.
+
+ sub_cfg is the list of sub-class configurations. It should be None
+ when called normally.
+ &quot;&quot;&quot;
+ # This is all standard code to be copied verbatim except for the
+ # name of the module containing the super-class.
+ if sub_cfg:
+ cfg = sub_cfg
+ else:
+ cfg = []
+
+ cfg.append(_pkg_config)
+
+ pyqtconfig.Configuration.__init__(self, cfg)
+
+class HelloModuleMakefile(pyqtconfig.QtModuleMakefile):
+ &quot;&quot;&quot;The Makefile class for modules that %Import hello.
+ &quot;&quot;&quot;
+ def finalise(self):
+ &quot;&quot;&quot;Finalise the macros.
+ &quot;&quot;&quot;
+ # Make sure our C++ library is linked.
+ self.extra_libs.append(&quot;hello&quot;)
+
+ # Let the super-class do what it needs to.
+ pyqtconfig.QtModuleMakefile.finalise(self)
+</pre>
+<p>Again, we hope that the scripts are self documenting.</p>
+<table class="docutils footnote" frame="void" id="id11" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id8" name="id11">[4]</a></td><td>Some parts of a SIP specification aren't subject to version control.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id12" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id9" name="id12">[5]</a></td><td>Actually in <tt class="docutils literal"><span class="pre">versions.sip</span></tt>. PyQt uses the <a class="reference" href="#include">%Include</a> directive to
+split the SIP specification for Qt across a large number of separate
+<tt class="docutils literal"><span class="pre">.sip</span></tt> files.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id13" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id10" name="id13">[6]</a></td><td>Tags can also be defined by the <a class="reference" href="#feature">%Feature</a> directive. These tags are
+not mutually exclusive, i.e. any number may be valid at a time.</td></tr>
+</tbody>
+</table>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id39" id="ownership-of-objects" name="ownership-of-objects">4.4&nbsp;&nbsp;&nbsp;Ownership of Objects</a></h2>
+<p>When a C++ instance is wrapped a corresponding Python object is created. The
+Python object behaves as you would expect in regard to garbage collection - it
+is garbage collected when its reference count reaches zero. What then happens
+to the corresponding C++ instance? The obvious answer might be that the
+instance's destructor is called. However the library API may say that when the
+instance is passed to a particular function, the library takes ownership of the
+instance, i.e. responsibility for calling the instance's destructor is
+transferred from the SIP generated module to the library.</p>
+<p>Ownership of an instance may also be associated with another instance. The
+implication being that the owned instance will automatically be destroyed if
+the owning instance is destroyed. SIP keeps track of these relationships to
+ensure that Python's cyclic garbage collector can detect and break any
+reference cycles between the owning and owned instances. The association is
+implemented as the owning instance taking a reference to the owned instance.</p>
+<p>The <a class="reference" href="#transferthis">TransferThis</a>, <a class="reference" href="#transfer">Transfer</a> and TransferBack annotations are used to specify
+where, and it what direction, transfers of ownership happen. It is very
+important that these are specified correctly to avoid crashes (where both
+Python and C++ call the destructor) and memory leaks (where neither Python and
+C++ call the destructor).</p>
+<p>This applies equally to C structures where the structure is returned to the
+heap using the <tt class="docutils literal"><span class="pre">free()</span></tt> function.</p>
+<p>See also <a class="reference" href="#siptransferto">sipTransferTo()</a> and <a class="reference" href="#siptransferback">sipTransferBack()</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id40" id="support-for-wide-characters" name="support-for-wide-characters">4.5&nbsp;&nbsp;&nbsp;Support for Wide Characters</a></h2>
+<p>SIP v4.6 introduced support for wide characters (i.e. the <tt class="docutils literal"><span class="pre">wchar_t</span></tt> type).
+Python's C API includes support for converting between unicode objects and wide
+character strings and arrays. When converting from a unicode object to wide
+characters SIP creates the string or array on the heap (using memory allocated
+using <a class="reference" href="#sipmalloc">sipMalloc()</a>). This then raises the problem of how this memory is
+subsequently freed.</p>
+<p>The following describes how SIP handles this memory in the different situations
+where this is an issue.</p>
+<blockquote>
+<ul class="simple">
+<li>When a wide string or array is passed to a function or method then the
+memory is freed (using <a class="reference" href="#sipfree">sipFree()</a>) after than function or method
+returns.</li>
+<li>When a wide string or array is returned from a virtual method then SIP
+does not free the memory until the next time the method is called.</li>
+<li>When an assignment is made to a wide string or array instance variable
+then SIP does not first free the instance's current string or array.</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id41" id="the-python-global-interpreter-lock" name="the-python-global-interpreter-lock">4.6&nbsp;&nbsp;&nbsp;The Python Global Interpreter Lock</a></h2>
+<p>Python's Global Interpretor Lock (GIL) must be acquired before calls can be
+made to the Python API. It should also be released when a potentially
+blocking call to C/C++ library is made in order to allow other Python threads
+to be executed. In addition, some C/C++ libraries may implement their own
+locking strategies that conflict with the GIL causing application deadlocks.
+SIP provides ways of specifying when the GIL is released and acquired to
+ensure that locking problems can be avoided.</p>
+<p>SIP always ensures that the GIL is acquired before making calls to the Python
+API. By default SIP does not release the GIL when making calls to the C/C++
+library being wrapped. The <a class="reference" href="#releasegil">ReleaseGIL</a> annotation can be used to override
+this behaviour when required.</p>
+<p>If SIP is given the <tt class="docutils literal"><span class="pre">-g</span></tt> command line option then the default behaviour is
+changed and SIP releases the GIL every time is makes calls to the C/C++
+library being wrapped. The <a class="reference" href="#holdgil">HoldGIL</a> annotation can be used to override this
+behaviour when required.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id42" id="the-sip-command-line" name="the-sip-command-line">5&nbsp;&nbsp;&nbsp;The SIP Command Line</a></h1>
+<p>The syntax of the SIP command line is:</p>
+<pre class="literal-block">
+sip [options] [specification]
+</pre>
+<p><tt class="docutils literal"><span class="pre">specification</span></tt> is the name of the specification file for the module. If it
+is omitted then <tt class="docutils literal"><span class="pre">stdin</span></tt> is used.</p>
+<p>The full set of command line options is:</p>
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">-h</span></kbd></td>
+<td>Display a help message.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-V</span></kbd></td>
+<td>Display the SIP version number.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-a <var>file</var></span></kbd></td>
+<td>The name of the QScintilla API file to generate. This file contains a
+description of the module API in a form that the QScintilla editor
+component can use for auto-completion and call tips. (The file may
+also be used by the SciTE editor but must be sorted first.) By default
+the file is not generated.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-b <var>file</var></span></kbd></td>
+<td>The name of the build file to generate. This file contains the
+information about the module needed by the SIP build system to generate
+a platform and compiler specific Makefile for the module. By default
+the file is not generated.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-c <var>dir</var></span></kbd></td>
+<td>The name of the directory (which must exist) into which all of the
+generated C or C++ code is placed. By default no code is generated.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-d <var>file</var></span></kbd></td>
+<td>The name of the documentation file to generate. Documentation is
+included in specification files using the <a class="reference" href="#doc">%Doc</a> and <a class="reference" href="#exporteddoc">%ExportedDoc</a>
+directives. By default the file is not generated.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-e</span></kbd></td>
+<td>Support for C++ exceptions is enabled. This causes all calls to C++
+code to be enclosed in <tt class="docutils literal"><span class="pre">try</span></tt>/<tt class="docutils literal"><span class="pre">catch</span></tt> blocks and C++ exceptions to
+be converted to Python exceptions. By default exception support is
+disabled.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-g</span></kbd></td>
+<td>The Python GIL is released before making any calls to the C/C++ library
+being wrapped and reacquired afterwards. See <a class="reference" href="#the-python-global-interpreter-lock">The Python Global
+Interpreter Lock</a> and the <a class="reference" href="#releasegil">ReleaseGIL</a> and <a class="reference" href="#holdgil">HoldGIL</a> annotations.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-I <var>dir</var></span></kbd></td>
+<td>The directory is added to the list of directories searched when looking
+for a specification file given in an <a class="reference" href="#include">%Include</a> or <a class="reference" href="#import">%Import</a>
+directive. This option may be given any number of times.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-j <var>number</var></span></kbd></td>
+<td>The generated code is split into the given number of files. This make
+it easier to use the parallel build facility of most modern
+implementations of <tt class="docutils literal"><span class="pre">make</span></tt>. By default 1 file is generated for each C
+structure or C++ class.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-r</span></kbd></td>
+<td>Debugging statements that trace the execution of the bindings are
+automatically generated. By default the statements are not generated.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-s <var>suffix</var></span></kbd></td>
+<td>The suffix to use for generated C or C++ source files. By default
+<tt class="docutils literal"><span class="pre">.c</span></tt> is used for C and <tt class="docutils literal"><span class="pre">.cpp</span></tt> for C++.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-t <var>tag</var></span></kbd></td>
+<td>The SIP version tag (declared using a <a class="reference" href="#timeline">%Timeline</a> directive) or the
+SIP platform tag (declared using the <a class="reference" href="#platforms">%Platforms</a> directive) to
+generate code for. This option may be given any number of times so
+long as the tags do not conflict.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-w</span></kbd></td>
+<td>The display of warning messages is enabled. By default warning
+messages are disabled.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-x <var>feature</var></span></kbd></td>
+<td>The feature (declared using the <a class="reference" href="#feature">%Feature</a> directive) is disabled.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-z <var>file</var></span></kbd></td>
+<td>The name of a file containing more command line options.</td></tr>
+</tbody>
+</table>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id43" id="sip-specification-files" name="sip-specification-files">6&nbsp;&nbsp;&nbsp;SIP Specification Files</a></h1>
+<p>A SIP specification consists of some C/C++ type and function declarations and
+some directives. The declarations may contain annotations which provide SIP
+with additional information that cannot be expressed in C/C++. SIP does not
+include a full C/C++ parser.</p>
+<p>It is important to understand that a SIP specification describes the Python
+API, i.e. the API available to the Python programmer when they <tt class="docutils literal"><span class="pre">import</span></tt> the
+generated module. It does not have to accurately represent the underlying
+C/C++ library. There is nothing wrong with omitting functions that make
+little sense in a Python context, or adding functions implemented with
+handwritten code that have no C/C++ equivalent. It is even possible (and
+sometimes necessary) to specify a different super-class hierarchy for a C++
+class. All that matters is that the generated code compiles properly.</p>
+<p>In most cases the Python API matches the C/C++ API. In some cases handwritten
+code (see <a class="reference" href="#methodcode">%MethodCode</a>) is used to map from one to the other without SIP
+having to know the details itself. However, there are a few cases where SIP
+generates a thin wrapper around a C++ method or constructor (see <a class="reference" href="#generated-derived-classes">Generated
+Derived Classes</a>) and needs to know the exact C++ signature. To deal with
+these cases SIP allows two signatures to be specified. For example:</p>
+<pre class="literal-block">
+class Klass
+{
+public:
+ // The Python signature is a tuple, but the underlying C++ signature
+ // is a 2 element array.
+ Klass(SIP_PYTUPLE) [(int *)];
+%MethodCode
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, &quot;ii&quot;, &amp;iarr[0], &amp;iarr[1]))
+ {
+ // Note that we use the SIP generated derived class
+ // constructor.
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipKlass(iarr);
+ Py_END_ALLOW_THREADS
+ }
+%End
+};
+</pre>
+<div class="section">
+<h2><a class="toc-backref" href="#id44" id="syntax-definition" name="syntax-definition">6.1&nbsp;&nbsp;&nbsp;Syntax Definition</a></h2>
+<p>The following is a semi-formal description of the syntax of a specification
+file.</p>
+<pre class="literal-block">
+<em>specification</em> ::= {<em>module-statement</em>}
+
+<em>module-statement</em> ::= [<em>module-directive</em> | <em>statement</em>]
+
+<em>module-directive</em> ::= [<a class="reference" href="#cmodule">%CModule</a> | <a class="reference" href="#copying">%Copying</a> | <a class="reference" href="#doc">%Doc</a> |
+ <a class="reference" href="#exporteddoc">%ExportedDoc</a> | <a class="reference" href="#exportedheadercode">%ExportedHeaderCode</a> | <a class="reference" href="#feature">%Feature</a> |
+ <a class="reference" href="#import">%Import</a> | <a class="reference" href="#include">%Include</a> | <a class="reference" href="#id14">%License</a> | <a class="reference" href="#mappedtype">%MappedType</a> |
+ <em>mapped-type-template</em> | <a class="reference" href="#module">%Module</a> | <a class="reference" href="#modulecode">%ModuleCode</a> |
+ <a class="reference" href="#moduleheadercode">%ModuleHeaderCode</a> | <a class="reference" href="#optionalinclude">%OptionalInclude</a> | <a class="reference" href="#platforms">%Platforms</a> |
+ <a class="reference" href="#preinitialisationcode">%PreInitialisationCode</a> | <a class="reference" href="#postinitialisationcode">%PostInitialisationCode</a> |
+ <em>sip-option-list</em> | <a class="reference" href="#timeline">%Timeline</a> | <a class="reference" href="#unitcode">%UnitCode</a>]
+
+<em>sip-option-list</em> :: <a class="reference" href="#sipoptions">%SIPOptions</a> <tt class="docutils literal"><span class="pre">(</span></tt> <em>option-list</em> <tt class="docutils literal"><span class="pre">)</span></tt>
+
+<em>option-list</em> ::= <em>option</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>option-list</em>]
+
+<em>statement</em> :: [<em>class-statement</em> | <em>function</em> | <em>variable</em>]
+
+<em>class-statement</em> :: [<a class="reference" href="#if">%If</a> | <em>class</em> | <em>class-template</em> | <em>enum</em> |
+ <em>namespace</em> | <em>opaque-class</em> | <em>operator</em> | <em>struct</em> | <em>typedef</em> |
+ <em>exception</em>]
+
+<em>class</em> ::= <tt class="docutils literal"><span class="pre">class</span></tt> <em>name</em> [<tt class="docutils literal"><span class="pre">:</span></tt> <em>super-classes</em>] [<em>class-annotations</em>]
+ <tt class="docutils literal"><span class="pre">{</span></tt> {<em>class-line</em>} <tt class="docutils literal"><span class="pre">};</span></tt>
+
+<em>super-classes</em> ::= <em>name</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>super-classes</em>]
+
+<em>class-line</em> ::= [<em>class-statement</em> | <a class="reference" href="#bigetreadbuffercode">%BIGetReadBufferCode</a> |
+ <a class="reference" href="#bigetwritebuffercode">%BIGetWriteBufferCode</a> | <a class="reference" href="#bigetsegcountcode">%BIGetSegCountCode</a> |
+ <a class="reference" href="#bigetcharbuffercode">%BIGetCharBufferCode</a> | <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> |
+ <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> | <a class="reference" href="#gcclearcode">%GCClearCode</a> | <a class="reference" href="#gctraversecode">%GCTraverseCode</a> |
+ <a class="reference" href="#typecode">%TypeCode</a> | <a class="reference" href="#typeheadercode">%TypeHeaderCode</a> | <em>constructor</em> | <em>destructor</em> |
+ <em>method</em> | <em>static-method</em> | <em>virtual-method</em> | <em>special-method</em> |
+ <em>operator</em> | <em>virtual-operator</em> | <em>class-variable</em> | <tt class="docutils literal"><span class="pre">public:</span></tt> |
+ <tt class="docutils literal"><span class="pre">public</span> <span class="pre">slots:</span></tt> | <tt class="docutils literal"><span class="pre">protected:</span></tt> | <tt class="docutils literal"><span class="pre">protected</span> <span class="pre">slots:</span></tt> |
+ <tt class="docutils literal"><span class="pre">private:</span></tt> | <tt class="docutils literal"><span class="pre">private</span> <span class="pre">slots:</span></tt> | <tt class="docutils literal"><span class="pre">signals:</span></tt>]
+
+<em>constructor</em> ::= [<tt class="docutils literal"><span class="pre">explicit</span></tt>] <em>name</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+ [<em>exceptions</em>] [<em>function-annotations</em>]
+ [<em>c++-constructor-signature</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+
+<em>c++-constructor-signature</em> ::= <tt class="docutils literal"><span class="pre">[(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)]</span></tt>
+
+<em>destructor</em> ::= [<tt class="docutils literal"><span class="pre">virtual</span></tt>] <tt class="docutils literal"><span class="pre">~</span></tt> <em>name</em> <tt class="docutils literal"><span class="pre">()</span></tt> [<em>exceptions</em>] [<tt class="docutils literal"><span class="pre">=</span> <span class="pre">0</span></tt>]
+ [<em>function-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+ [<a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a>]
+
+<em>method</em> ::= <em>type</em> <em>name</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt> [<tt class="docutils literal"><span class="pre">const</span></tt>]
+ [<em>exceptions</em>] [<tt class="docutils literal"><span class="pre">=</span> <span class="pre">0</span></tt>] [<em>function-annotations</em>] [<em>c++-signature</em>]
+ <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+
+<em>c++-signature</em> ::= <tt class="docutils literal"><span class="pre">[</span></tt> <em>type</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)]</span></tt>
+
+<em>static-method</em> ::= <tt class="docutils literal"><span class="pre">static</span></tt> <em>function</em>
+
+<em>virtual-method</em> ::= <tt class="docutils literal"><span class="pre">virtual</span></tt> <em>type</em> <em>name</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+ [<tt class="docutils literal"><span class="pre">const</span></tt>] [<em>exceptions</em>] [<tt class="docutils literal"><span class="pre">=</span> <span class="pre">0</span></tt>] [<em>function-annotations</em>]
+ [<em>c++-signature</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>] [<a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a>]
+
+<em>special-method</em> ::= <em>type</em> <em>special-method-name</em>
+ <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt> [<em>function-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt>
+ [<a class="reference" href="#methodcode">%MethodCode</a>]
+
+<em>special-method-name</em> ::= [ <tt class="docutils literal"><span class="pre">__abs__</span></tt> | <tt class="docutils literal"><span class="pre">__add__</span></tt> | <tt class="docutils literal"><span class="pre">__and__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__call__</span></tt> | <tt class="docutils literal"><span class="pre">__cmp__</span></tt> | <tt class="docutils literal"><span class="pre">__contains__</span></tt> | <tt class="docutils literal"><span class="pre">__delitem__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__div__</span></tt> | <tt class="docutils literal"><span class="pre">__eq__</span></tt> | <tt class="docutils literal"><span class="pre">__float__</span></tt> | <tt class="docutils literal"><span class="pre">__ge__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__getitem__</span></tt> | <tt class="docutils literal"><span class="pre">__gt__</span></tt> | <tt class="docutils literal"><span class="pre">__hash__</span></tt> | <tt class="docutils literal"><span class="pre">__iadd__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__iand__</span></tt> | <tt class="docutils literal"><span class="pre">__idiv__</span></tt> | <tt class="docutils literal"><span class="pre">__ilshift__</span></tt> | <tt class="docutils literal"><span class="pre">__imod__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__imul__</span></tt> | <tt class="docutils literal"><span class="pre">__int__</span></tt> | <tt class="docutils literal"><span class="pre">__invert__</span></tt> | <tt class="docutils literal"><span class="pre">__ior__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__irshift__</span></tt> | <tt class="docutils literal"><span class="pre">__isub__</span></tt> | <tt class="docutils literal"><span class="pre">__ixor__</span></tt> | <tt class="docutils literal"><span class="pre">__le__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__len__</span></tt> | <tt class="docutils literal"><span class="pre">__long__</span></tt> | <tt class="docutils literal"><span class="pre">__lshift__</span></tt> | <tt class="docutils literal"><span class="pre">__lt__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__mod__</span></tt> | <tt class="docutils literal"><span class="pre">__mul__</span></tt> | <tt class="docutils literal"><span class="pre">__ne__</span></tt> | <tt class="docutils literal"><span class="pre">__neg__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__nonzero__</span></tt> | <tt class="docutils literal"><span class="pre">__or__</span></tt> | <tt class="docutils literal"><span class="pre">__pos__</span></tt> | <tt class="docutils literal"><span class="pre">__repr__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__rshift__</span></tt> | <tt class="docutils literal"><span class="pre">__setitem__</span></tt> | <tt class="docutils literal"><span class="pre">__str__</span></tt> | <tt class="docutils literal"><span class="pre">__sub__</span></tt> |
+ <tt class="docutils literal"><span class="pre">__xor__</span></tt>]
+
+<em>operator</em> ::= <em>operator-type</em>
+ <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt> [<tt class="docutils literal"><span class="pre">const</span></tt>] [<em>exceptions</em>]
+ [<em>function-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+
+<em>virtual-operator</em> ::= <tt class="docutils literal"><span class="pre">virtual</span></tt> <em>operator-type</em>
+ <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt> [<tt class="docutils literal"><span class="pre">const</span></tt>] [<em>exceptions</em>] [<tt class="docutils literal"><span class="pre">=</span> <span class="pre">0</span></tt>]
+ [<em>function-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+ [<a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a>]
+
+<em>operatator-type</em> ::= [ <em>operator-function</em> | <em>operator-cast</em> ]
+
+<em>operator-function</em> ::= <em>type</em> <tt class="docutils literal"><span class="pre">operator</span></tt> <em>operator-name</em>
+
+<em>operator-cast</em> ::= <tt class="docutils literal"><span class="pre">operator</span></tt> <em>type</em>
+
+<em>operator-name</em> ::= [<tt class="docutils literal"><span class="pre">+</span></tt> | <tt class="docutils literal"><span class="pre">-</span></tt> | <tt class="docutils literal"><span class="pre">*</span></tt> | <tt class="docutils literal"><span class="pre">/</span></tt> | <tt class="docutils literal"><span class="pre">%</span></tt> | <tt class="docutils literal"><span class="pre">&amp;</span></tt> |
+ <tt class="docutils literal"><span class="pre">|</span></tt> | <tt class="docutils literal"><span class="pre">^</span></tt> | <tt class="docutils literal"><span class="pre">&lt;&lt;</span></tt> | <tt class="docutils literal"><span class="pre">&gt;&gt;</span></tt> | <tt class="docutils literal"><span class="pre">+=</span></tt> | <tt class="docutils literal"><span class="pre">-=</span></tt> | <tt class="docutils literal"><span class="pre">*=</span></tt> |
+ <tt class="docutils literal"><span class="pre">/=</span></tt> | <tt class="docutils literal"><span class="pre">%=</span></tt> | <tt class="docutils literal"><span class="pre">&amp;=</span></tt> | <tt class="docutils literal"><span class="pre">|=</span></tt> | <tt class="docutils literal"><span class="pre">^=</span></tt> | <tt class="docutils literal"><span class="pre">&lt;&lt;=</span></tt> | <tt class="docutils literal"><span class="pre">&gt;&gt;=</span></tt> |
+ <tt class="docutils literal"><span class="pre">~</span></tt> | <tt class="docutils literal"><span class="pre">()</span></tt> | <tt class="docutils literal"><span class="pre">[]</span></tt> | <tt class="docutils literal"><span class="pre">&lt;</span></tt> | <tt class="docutils literal"><span class="pre">&lt;=</span></tt> | <tt class="docutils literal"><span class="pre">==</span></tt> | <tt class="docutils literal"><span class="pre">!=</span></tt> |
+ <tt class="docutils literal"><span class="pre">&gt;</span></tt> | <tt class="docutils literal"><span class="pre">&gt;&gt;=</span></tt>]
+
+<em>class-variable</em> ::= [<tt class="docutils literal"><span class="pre">static</span></tt>] <em>variable</em>
+
+<em>class-template</em> :: = <tt class="docutils literal"><span class="pre">template</span></tt> <tt class="docutils literal"><span class="pre">&lt;</span></tt> <em>type-list</em> <tt class="docutils literal"><span class="pre">&gt;</span></tt> <em>class</em>
+
+<em>mapped-type-template</em> :: = <tt class="docutils literal"><span class="pre">template</span></tt> <tt class="docutils literal"><span class="pre">&lt;</span></tt> <em>type-list</em> <tt class="docutils literal"><span class="pre">&gt;</span></tt>
+ <a class="reference" href="#mappedtype">%MappedType</a>
+
+<em>enum</em> ::= <tt class="docutils literal"><span class="pre">enum</span></tt> [<em>name</em>] [<em>enum-annotations</em>] <tt class="docutils literal"><span class="pre">{</span></tt> {<em>enum-line</em>} <tt class="docutils literal"><span class="pre">};</span></tt>
+
+<em>enum-line</em> ::= [<a class="reference" href="#if">%If</a> | <em>name</em> [<em>enum-annotations</em>] <tt class="docutils literal"><span class="pre">,</span></tt>
+
+<em>function</em> ::= <em>type</em> <em>name</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>argument-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt> [<em>exceptions</em>]
+ [<em>function-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#methodcode">%MethodCode</a>]
+
+<em>namespace</em> ::= <tt class="docutils literal"><span class="pre">namespace</span></tt> <em>name</em> <tt class="docutils literal"><span class="pre">{</span></tt> {<em>namespace-line</em>} <tt class="docutils literal"><span class="pre">};</span></tt>
+
+<em>namespace-line</em> ::= [<a class="reference" href="#typeheadercode">%TypeHeaderCode</a> | <em>statement</em>]
+
+<em>opaque-class</em> ::= <tt class="docutils literal"><span class="pre">class</span></tt> <em>scoped-name</em> <tt class="docutils literal"><span class="pre">;</span></tt>
+
+<em>struct</em> ::= <tt class="docutils literal"><span class="pre">struct</span></tt> <em>name</em> <tt class="docutils literal"><span class="pre">{</span></tt> {<em>class-line</em>} <tt class="docutils literal"><span class="pre">};</span></tt>
+
+<em>typedef</em> ::= <tt class="docutils literal"><span class="pre">typedef</span></tt> [<em>typed-name</em> | <em>function-pointer</em>] <tt class="docutils literal"><span class="pre">;</span></tt>
+
+<em>variable</em>::= <em>typed-name</em> [<em>variable-annotations</em>] <tt class="docutils literal"><span class="pre">;</span></tt> [<a class="reference" href="#accesscode">%AccessCode</a>]
+ [<a class="reference" href="#getcode">%GetCode</a>] [<a class="reference" href="#setcode">%SetCode</a>]
+
+<em>exception</em> ::= <a class="reference" href="#exception">%Exception</a> <em>exception-name</em> [<em>exception-base</em>] <tt class="docutils literal"><span class="pre">{</span></tt>
+ [<a class="reference" href="#typeheadercode">%TypeHeaderCode</a>] <a class="reference" href="#raisecode">%RaiseCode</a> <cite>};`</cite>
+
+<em>exception-name</em> ::= <em>scoped-name</em>
+
+<em>exception-base</em> ::= <tt class="docutils literal"><span class="pre">(</span></tt> [<em>exception-name</em> | <em>python-exception</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+
+<em>python-exception</em> ::= [<tt class="docutils literal"><span class="pre">SIP_Exception</span></tt> | <tt class="docutils literal"><span class="pre">SIP_StopIteration</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_StandardError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_ArithmeticError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_LookupError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_AssertionError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_AttributeError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_EOFError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_FloatingPointError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_EnvironmentError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_IOError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_OSError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_ImportError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_IndexError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_KeyError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_KeyboardInterrupt</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_MemoryError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_NameError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_OverflowError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_RuntimeError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_NotImplementedError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_SyntaxError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_IndentationError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_TabError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_ReferenceError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_SystemError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_SystemExit</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_TypeError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_UnboundLocalError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_UnicodeError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_UnicodeEncodeError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_UnicodeDecodeError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_UnicodeTranslateError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_ValueError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_ZeroDivisionError</span></tt> |
+ <tt class="docutils literal"><span class="pre">SIP_WindowsError</span></tt> | <tt class="docutils literal"><span class="pre">SIP_VMSError</span></tt>]
+
+<em>exceptions</em> ::= <tt class="docutils literal"><span class="pre">throw</span> <span class="pre">(</span></tt> [<em>exception-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+
+<em>exception-list</em> ::= <em>scoped-name</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>exception-list</em>]
+
+<em>argument-list</em> ::= <em>argument</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>argument-list</em>] [<tt class="docutils literal"><span class="pre">,</span></tt> <tt class="docutils literal"><span class="pre">...</span></tt>]
+
+<em>argument</em> ::= [<em>type</em> [<em>name</em>] [<em>argument-annotations</em>]
+ [<em>default-value</em>] | <a class="reference" href="#sip-anyslot">SIP_ANYSLOT</a> [<em>default-value</em>] | <a class="reference" href="#sip-qobject">SIP_QOBJECT</a> |
+ <a class="reference" href="#sip-rxobj-con">SIP_RXOBJ_CON</a> | <a class="reference" href="#sip-rxobj-dis">SIP_RXOBJ_DIS</a> | <a class="reference" href="#sip-signal">SIP_SIGNAL</a> [<em>default-value</em>] |
+ <a class="reference" href="#sip-slot">SIP_SLOT</a> [<em>default-value</em>] | <a class="reference" href="#sip-slot-con">SIP_SLOT_CON</a> | <a class="reference" href="#sip-slot-dis">SIP_SLOT_DIS</a>]
+
+<em>default-value</em> ::= <tt class="docutils literal"><span class="pre">=</span></tt> <em>expression</em>
+
+<em>expression</em> ::= [<em>value</em> | <em>value</em> <em>binary-operator</em> <em>expression</em>]
+
+<em>value</em> ::= [<em>unary-operator</em>] <em>simple-value</em>
+
+<em>simple-value</em> ::= [<em>scoped-name</em> | <em>function-call</em> | <em>real-value</em> |
+ <em>integer-value</em> | <em>boolean-value</em> | <em>string-value</em> |
+ <em>character-value</em>]
+
+<em>typed-name</em>::= <em>type</em> <em>name</em>
+
+<em>function-pointer</em>::= <em>type</em> <tt class="docutils literal"><span class="pre">(*</span></tt> <em>name</em> <tt class="docutils literal"><span class="pre">)(</span></tt> [<em>type-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+
+<em>type-list</em> ::= <em>type</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>type-list</em>]
+
+<em>function-call</em> ::= <em>scoped-name</em> <tt class="docutils literal"><span class="pre">(</span></tt> [<em>value-list</em>] <tt class="docutils literal"><span class="pre">)</span></tt>
+
+<em>value-list</em> ::= <em>value</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>value-list</em>]
+
+<em>real-value</em> ::= a floating point number
+
+<em>integer-value</em> ::= a number
+
+<em>boolean-value</em> ::= [<tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt>]
+
+<em>string-value</em> ::= <tt class="docutils literal"><span class="pre">&quot;</span></tt> {<em>character</em>} <tt class="docutils literal"><span class="pre">&quot;</span></tt>
+
+<em>character-value</em> ::= <tt class="docutils literal"><span class="pre">`</span></tt> <em>character</em> <tt class="docutils literal"><span class="pre">`</span></tt>
+
+<em>unary-operator</em> ::= [<tt class="docutils literal"><span class="pre">!</span></tt> | <tt class="docutils literal"><span class="pre">~</span></tt> | <tt class="docutils literal"><span class="pre">-</span></tt> | <tt class="docutils literal"><span class="pre">+</span></tt>]
+
+<em>binary-operator</em> ::= [<tt class="docutils literal"><span class="pre">-</span></tt> | <tt class="docutils literal"><span class="pre">+</span></tt> | <tt class="docutils literal"><span class="pre">*</span></tt> | <tt class="docutils literal"><span class="pre">/</span></tt> | <tt class="docutils literal"><span class="pre">&amp;</span></tt> | <tt class="docutils literal"><span class="pre">|</span></tt>]
+
+<em>argument-annotations</em> ::= see <a class="reference" href="#argument-annotations">Argument Annotations</a>
+
+<em>class-annotations</em> ::= see <a class="reference" href="#class-annotations">Class Annotations</a>
+
+<em>enum-annotations</em> ::= see <a class="reference" href="#enum-annotations">Enum Annotations</a>
+
+<em>function-annotations</em> ::= see <a class="reference" href="#function-annotations">Function Annotations</a>
+
+<em>variable-annotations</em> ::= see <a class="reference" href="#variable-annotations">Variable Annotations</a>
+
+<em>type</em> ::= [<tt class="docutils literal"><span class="pre">const</span></tt>] <em>base-type</em> {<tt class="docutils literal"><span class="pre">*</span></tt>} [<tt class="docutils literal"><span class="pre">&amp;</span></tt>]
+
+<em>type-list</em> ::= <em>type</em> [<tt class="docutils literal"><span class="pre">,</span></tt> <em>type-list</em>]
+
+<em>base-type</em> ::= [<em>scoped-name</em> | <em>template</em> | <tt class="docutils literal"><span class="pre">struct</span></tt> <em>scoped-name</em> |
+ <tt class="docutils literal"><span class="pre">short</span></tt> | <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt> | <tt class="docutils literal"><span class="pre">int</span></tt> | <tt class="docutils literal"><span class="pre">unsigned</span></tt> |
+ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt> | <tt class="docutils literal"><span class="pre">long</span></tt> | <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt> | <tt class="docutils literal"><span class="pre">float</span></tt> |
+ <tt class="docutils literal"><span class="pre">double</span></tt> | <tt class="docutils literal"><span class="pre">bool</span></tt> | <tt class="docutils literal"><span class="pre">char</span></tt> | <tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt> |
+ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt> | <tt class="docutils literal"><span class="pre">void</span></tt> | <tt class="docutils literal"><span class="pre">wchar_t</span></tt> | <a class="reference" href="#sip-pycallable">SIP_PYCALLABLE</a> |
+ <a class="reference" href="#sip-pydict">SIP_PYDICT</a> | <a class="reference" href="#sip-pylist">SIP_PYLIST</a> | <a class="reference" href="#sip-pyobject">SIP_PYOBJECT</a> | <a class="reference" href="#sip-pyslice">SIP_PYSLICE</a> |
+ <a class="reference" href="#sip-pytuple">SIP_PYTUPLE</a> | <a class="reference" href="#sip-pytype">SIP_PYTYPE</a>]
+
+<em>scoped-name</em> ::= <em>name</em> [<tt class="docutils literal"><span class="pre">::</span></tt> <em>scoped-name</em>]
+
+<em>template</em> ::= <em>scoped-name</em> <tt class="docutils literal"><span class="pre">&lt;</span></tt> <em>type-list</em> <tt class="docutils literal"><span class="pre">&gt;</span></tt>
+
+<em>name</em> ::= _A-Za-z {_A-Za-z0-9}
+</pre>
+<p>Here is a short list of differences between C++ and the subset supported by
+SIP that might trip you up.</p>
+<blockquote>
+<ul class="simple">
+<li>SIP does not support the use of <tt class="docutils literal"><span class="pre">[]</span></tt> in types. Use pointers instead.</li>
+<li>A global <tt class="docutils literal"><span class="pre">operator</span></tt> can only be defined if its first argument is a
+class or a named enum that has been wrapped in the same module.</li>
+<li>Variables declared outside of a class are effectively read-only.</li>
+<li>A class's list of super-classes doesn't not include any access specifier
+(e.g. <tt class="docutils literal"><span class="pre">public</span></tt>).</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id45" id="variable-numbers-of-arguments" name="variable-numbers-of-arguments">6.2&nbsp;&nbsp;&nbsp;Variable Numbers of Arguments</a></h2>
+<p>SIP supports the use of <tt class="docutils literal"><span class="pre">...</span></tt> as the last part of a function signature. Any
+remaining arguments are collected as a Python tuple.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id46" id="additional-sip-types" name="additional-sip-types">6.3&nbsp;&nbsp;&nbsp;Additional SIP Types</a></h2>
+<p>SIP supports a number of additional data types that can be used in Python
+signatures.</p>
+<div class="section">
+<h3><a class="toc-backref" href="#id47" id="sip-anyslot" name="sip-anyslot">6.3.1&nbsp;&nbsp;&nbsp;SIP_ANYSLOT</a></h3>
+<p>This is both a <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> and a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is used as the type
+of the member instead of <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> in functions that implement the
+connection or disconnection of an explicitly generated signal to a slot.
+Handwritten code must be provided to interpret the conversion correctly.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id48" id="sip-pycallable" name="sip-pycallable">6.3.2&nbsp;&nbsp;&nbsp;SIP_PYCALLABLE</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python callable object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id49" id="sip-pydict" name="sip-pydict">6.3.3&nbsp;&nbsp;&nbsp;SIP_PYDICT</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python dictionary object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id50" id="sip-pylist" name="sip-pylist">6.3.4&nbsp;&nbsp;&nbsp;SIP_PYLIST</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python list object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id51" id="sip-pyobject" name="sip-pyobject">6.3.5&nbsp;&nbsp;&nbsp;SIP_PYOBJECT</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> of any Python type.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id52" id="sip-pyslice" name="sip-pyslice">6.3.6&nbsp;&nbsp;&nbsp;SIP_PYSLICE</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python slice object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id53" id="sip-pytuple" name="sip-pytuple">6.3.7&nbsp;&nbsp;&nbsp;SIP_PYTUPLE</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python tuple object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id54" id="sip-pytype" name="sip-pytype">6.3.8&nbsp;&nbsp;&nbsp;SIP_PYTYPE</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> that is a Python type object.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id55" id="sip-qobject" name="sip-qobject">6.3.9&nbsp;&nbsp;&nbsp;SIP_QOBJECT</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">QObject</span> <span class="pre">*</span></tt> that is a C++ instance of a class derived from Qt's
+<tt class="docutils literal"><span class="pre">QObject</span></tt> class.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id56" id="sip-rxobj-con" name="sip-rxobj-con">6.3.10&nbsp;&nbsp;&nbsp;SIP_RXOBJ_CON</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">QObject</span> <span class="pre">*</span></tt> that is a C++ instance of a class derived from Qt's
+<tt class="docutils literal"><span class="pre">QObject</span></tt> class. It is used as the type of the receiver instead of <tt class="docutils literal"><span class="pre">const</span>
+<span class="pre">QObject</span> <span class="pre">*</span></tt> in functions that implement a connection to a slot.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id57" id="sip-rxobj-dis" name="sip-rxobj-dis">6.3.11&nbsp;&nbsp;&nbsp;SIP_RXOBJ_DIS</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">QObject</span> <span class="pre">*</span></tt> that is a C++ instance of a class derived from Qt's
+<tt class="docutils literal"><span class="pre">QObject</span></tt> class. It is used as the type of the receiver instead of <tt class="docutils literal"><span class="pre">const</span>
+<span class="pre">QObject</span> <span class="pre">*</span></tt> in functions that implement a disconnection from a slot.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id58" id="sip-signal" name="sip-signal">6.3.12&nbsp;&nbsp;&nbsp;SIP_SIGNAL</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> that is used as the type of the signal instead of
+<tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> in functions that implement the connection or disconnection
+of an explicitly generated signal to a slot.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id59" id="sip-slot" name="sip-slot">6.3.13&nbsp;&nbsp;&nbsp;SIP_SLOT</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> that is used as the type of the member instead of
+<tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> in functions that implement the connection or disconnection
+of an explicitly generated signal to a slot.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id60" id="sip-slot-con" name="sip-slot-con">6.3.14&nbsp;&nbsp;&nbsp;SIP_SLOT_CON</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> that is used as the type of the member instead of
+<tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> in functions that implement the connection of an internally
+generated signal to a slot. The type includes a comma separated list of types
+that is the C++ signature of of the signal.</p>
+<p>To take an example, <tt class="docutils literal"><span class="pre">QAccel::connectItem()</span></tt> connects an internally generated
+signal to a slot. The signal is emitted when the keyboard accelerator is
+activated and it has a single integer argument that is the ID of the
+accelerator. The C++ signature is:</p>
+<pre class="literal-block">
+bool connectItem(int id, const QObject *receiver, const char *member);
+</pre>
+<p>The corresponding SIP specification is:</p>
+<pre class="literal-block">
+bool connectItem(int, SIP_RXOBJ_CON, SIP_SLOT_CON(int));
+</pre>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id61" id="sip-slot-dis" name="sip-slot-dis">6.3.15&nbsp;&nbsp;&nbsp;SIP_SLOT_DIS</a></h3>
+<p>This is a <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> that is used as the type of the member instead of
+<tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> in functions that implement the disconnection of an
+internally generated signal to a slot. The type includes a comma separated
+list of types that is the C++ signature of of the signal.</p>
+</div>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id62" id="sip-directives" name="sip-directives">7&nbsp;&nbsp;&nbsp;SIP Directives</a></h1>
+<p>In this section we describe each of the directives that can be used in
+specification files. All directives begin with <tt class="docutils literal"><span class="pre">%</span></tt> as the first
+non-whitespace character in a line.</p>
+<p>Some directives have arguments or contain blocks of code or documentation. In
+the following descriptions these are shown in <em>italics</em>. Optional arguments
+are enclosed in [<em>brackets</em>].</p>
+<p>Some directives are used to specify handwritten code. Handwritten code must
+not define names that start with the prefix <tt class="docutils literal"><span class="pre">sip</span></tt>.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id63" id="accesscode" name="accesscode">7.1&nbsp;&nbsp;&nbsp;%AccessCode</a></h2>
+<pre class="literal-block">
+%AccessCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used immediately after the declaration of an instance of a
+wrapped class or structure, or a pointer to such an instance. You use it to
+provide handwritten code that overrides the default behaviour.</p>
+<p>For example:</p>
+<pre class="literal-block">
+class Klass;
+
+Klass *klassInstance;
+%AccessCode
+ // In this contrived example the C++ library we are wrapping defines
+ // klassInstance as Klass ** (which SIP doesn't support) so we
+ // explicitly dereference it.
+ if (klassInstance &amp;&amp; *klassInstance)
+ return *klassInstance;
+
+ // This will get converted to None.
+ return 0;
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id64" id="bigetcharbuffercode" name="bigetcharbuffercode">7.2&nbsp;&nbsp;&nbsp;%BIGetCharBufferCode</a></h2>
+<pre class="literal-block">
+%BIGetCharBufferCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive (along with <a class="reference" href="#bigetreadbuffercode">%BIGetReadBufferCode</a>, <a class="reference" href="#bigetsegcountcode">%BIGetSegCountCode</a> and
+<a class="reference" href="#bigetwritebuffercode">%BIGetWriteBufferCode</a>) is used to specify code that implements Python's
+buffer interface. See the section <a class="reference" href="http://www.python.org/dev/doc/devel/api/buffer-structs.html">Buffer Object Structures</a> for the
+details.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>void **sipPtrPtr</dt>
+<dd>This is the pointer used to return the address of the character buffer.</dd>
+<dt>SIP_SSIZE_T sipRes</dt>
+<dd>The handwritten code should set this to the length of the character buffer
+or -1 if there was an error.</dd>
+<dt>SIP_SSIZE_T sipSegment</dt>
+<dd>This is the number of the segment of the character buffer.</dd>
+<dt>PyObject *sipSelf</dt>
+<dd>This is the Python object that wraps the the structure or class instance,
+i.e. <tt class="docutils literal"><span class="pre">self</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id65" id="bigetreadbuffercode" name="bigetreadbuffercode">7.3&nbsp;&nbsp;&nbsp;%BIGetReadBufferCode</a></h2>
+<pre class="literal-block">
+%BIGetReadBufferCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive (along with <a class="reference" href="#bigetcharbuffercode">%BIGetCharBufferCode</a>, <a class="reference" href="#bigetsegcountcode">%BIGetSegCountCode</a> and
+<a class="reference" href="#bigetwritebuffercode">%BIGetWriteBufferCode</a>) is used to specify code that implements Python's
+buffer interface.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>void **sipPtrPtr</dt>
+<dd>This is the pointer used to return the address of the read buffer.</dd>
+<dt>SIP_SSIZE_T sipRes</dt>
+<dd>The handwritten code should set this to the length of the read buffer or
+-1 if there was an error.</dd>
+<dt>SIP_SSIZE_T sipSegment</dt>
+<dd>This is the number of the segment of the read buffer.</dd>
+<dt>PyObject *sipSelf</dt>
+<dd>This is the Python object that wraps the the structure or class instance,
+i.e. <tt class="docutils literal"><span class="pre">self</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id66" id="bigetsegcountcode" name="bigetsegcountcode">7.4&nbsp;&nbsp;&nbsp;%BIGetSegCountCode</a></h2>
+<pre class="literal-block">
+%BIGetSegCountCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive (along with <a class="reference" href="#bigetcharbuffercode">%BIGetCharBufferCode</a>, <a class="reference" href="#bigetreadbuffercode">%BIGetReadBufferCode</a> and
+<a class="reference" href="#bigetwritebuffercode">%BIGetWriteBufferCode</a>) is used to specify code that implements Python's
+buffer interface.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>SIP_SSIZE_T *sipLenPtr</dt>
+<dd>This is the pointer used to return the total length in bytes of all
+segments of the buffer.</dd>
+<dt>SIP_SSIZE_T sipRes</dt>
+<dd>The handwritten code should set this to the number of segments that make
+up the buffer.</dd>
+<dt>PyObject *sipSelf</dt>
+<dd>This is the Python object that wraps the the structure or class instance,
+i.e. <tt class="docutils literal"><span class="pre">self</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id67" id="bigetwritebuffercode" name="bigetwritebuffercode">7.5&nbsp;&nbsp;&nbsp;%BIGetWriteBufferCode</a></h2>
+<pre class="literal-block">
+%BIGetWriteBufferCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive (along with <a class="reference" href="#bigetcharbuffercode">%BIGetCharBufferCode</a>, <a class="reference" href="#bigetreadbuffercode">%BIGetReadBufferCode</a>
+and <a class="reference" href="#bigetsegcountcode">%BIGetSegCountCode</a> is used to specify code that implements Python's
+buffer interface.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>void **sipPtrPtr</dt>
+<dd>This is the pointer used to return the address of the write buffer.</dd>
+<dt>SIP_SSIZE_T sipRes</dt>
+<dd>The handwritten code should set this to the length of the write buffer or
+-1 if there was an error.</dd>
+<dt>SIP_SSIZE_T sipSegment</dt>
+<dd>This is the number of the segment of the write buffer.</dd>
+<dt>PyObject *sipSelf</dt>
+<dd>This is the Python object that wraps the the structure or class instance,
+i.e. <tt class="docutils literal"><span class="pre">self</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id68" id="cmodule" name="cmodule">7.6&nbsp;&nbsp;&nbsp;%CModule</a></h2>
+<pre class="literal-block">
+%CModule <em>name</em> [<em>version</em>]
+</pre>
+<p>This directive is used to identify that the library being wrapped is a C
+library and to define the name of the module and it's optional version number.</p>
+<p>See the <a class="reference" href="#module">%Module</a> directive for an explanation of the version number.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%CModule dbus 1
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id69" id="convertfromtypecode" name="convertfromtypecode">7.7&nbsp;&nbsp;&nbsp;%ConvertFromTypeCode</a></h2>
+<pre class="literal-block">
+%ConvertFromTypeCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used as part of the <a class="reference" href="#mappedtype">%MappedType</a> directive to specify the
+handwritten code that converts an instance of a mapped type to a Python
+object.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the instance of the mapped type to be converted. It
+will never be zero as the conversion from zero to <tt class="docutils literal"><span class="pre">Py_None</span></tt> is handled
+before the handwritten code is called.</dd>
+<dt>PyObject *sipTransferObj</dt>
+<dd>This specifies any desired ownership changes to the returned object. If it
+is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the ownership should be left unchanged. If it is
+<tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership should be transferred to Python. Otherwise
+ownership should be transferred to C/C++ and the returned object associated
+with <em>sipTransferObj</em>. The code can choose to interpret these changes in
+any way. For example, if the code is converting a C++ container of wrapped
+classes to a Python list it is likely that the ownership changes should be
+made to each element of the list.</dd>
+</dl>
+<p>The handwritten code must explicitly return a <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt>. If there was an
+error then a Python exception must be raised and <tt class="docutils literal"><span class="pre">NULL</span></tt> returned.</p>
+<p>The following example converts a <tt class="docutils literal"><span class="pre">QList&lt;QWidget</span> <span class="pre">*&gt;</span></tt> instance to a Python
+list of <tt class="docutils literal"><span class="pre">QWidget</span></tt> instances:</p>
+<pre class="literal-block">
+%ConvertFromTypeCode
+ PyObject *l;
+
+ // Create the Python list of the correct length.
+ if ((l = PyList_New(sipCpp -&gt; size())) == NULL)
+ return NULL;
+
+ // Go through each element in the C++ instance and convert it to a
+ // wrapped QWidget.
+ for (int i = 0; i &lt; sipCpp -&gt; size(); ++i)
+ {
+ QWidget *w = sipCpp -&gt; at(i);
+ PyObject *wobj;
+
+ // Get the Python wrapper for the QWidget instance, creating a new
+ // one if necessary, and handle any ownership transfer.
+ if ((wobj = sipConvertFromInstance(w, sipClass_QWidget, sipTransferObj)) == NULL)
+ {
+ // There was an error so garbage collect the Python list.
+ Py_DECREF(l);
+ return NULL;
+ }
+
+ // Add the wrapper to the list.
+ PyList_SET_ITEM(l, i, wobj);
+ }
+
+ // Return the Python list.
+ return l;
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id70" id="converttosubclasscode" name="converttosubclasscode">7.8&nbsp;&nbsp;&nbsp;%ConvertToSubClassCode</a></h2>
+<pre class="literal-block">
+%ConvertToSubClassCode
+ <em>code</em>
+%End
+</pre>
+<p>When SIP needs to wrap a C++ class instance it first checks to make sure it
+hasn't already done so. If it has then it just returns a new reference to the
+corresponding Python object. Otherwise it creates a new Python object of the
+appropriate type. In C++ a function may be defined to return an instance of a
+certain class, but can often return a sub-class instead.</p>
+<p>This directive is used to specify handwritten code that exploits any available
+real-time type information (RTTI) to see if there is a more specific Python
+type that can be used when wrapping the C++ instance. The RTTI may be
+provided by the compiler or by the C++ instance itself.</p>
+<p>The directive is included in the specification of one of the classes that the
+handwritten code handles the type conversion for. It doesn't matter which
+one, but a sensible choice would be the one at the root of that class
+hierarchy in the module.</p>
+<p>Note that if a class hierarchy extends over a number of modules then this
+directive should be used in each of those modules to handle the part of the
+hierarchy defined in that module. SIP will ensure that the different pieces
+of code are called in the right order to determine the most specific Python
+type to use.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the C++ class instance.</dd>
+<dt>void **sipCppRet</dt>
+<dd>When the sub-class is derived from more than one super-class then it is
+possible that the C++ address of the instance as the sub-class is
+different to that of the super-class. If so, then this must be set to the
+C++ address of the instance when cast (usually using <tt class="docutils literal"><span class="pre">static_cast</span></tt>)
+from the super-class to the sub-class.</dd>
+<dt>sipWrapperType *sipClass</dt>
+<dd>The handwritten code must set this to the SIP generated Python type object
+that corresponds to the class instance. (The type object for class
+<tt class="docutils literal"><span class="pre">Klass</span></tt> is <tt class="docutils literal"><span class="pre">sipClass_Klass</span></tt>.) If the RTTI of the class instance isn't
+recognised then <tt class="docutils literal"><span class="pre">sipClass</span></tt> must be set to <tt class="docutils literal"><span class="pre">NULL</span></tt>. The code doesn't
+have to recognise the exact class, only the most specific sub-class that
+it can.</dd>
+</dl>
+<p>The handwritten code must not explicitly return.</p>
+<p>The following example shows the sub-class conversion code for <tt class="docutils literal"><span class="pre">QEvent</span></tt> based
+class hierarchy in PyQt:</p>
+<pre class="literal-block">
+class QEvent
+{
+%ConvertToSubClassCode
+ // QEvent sub-classes provide a unique type ID.
+ switch (sipCpp -&gt; type())
+ {
+ case QEvent::Timer:
+ sipClass = sipClass_QTimerEvent;
+ break;
+
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ sipClass = sipClass_QKeyEvent;
+ break;
+
+ // Skip the remaining event types to keep the example short.
+
+ default:
+ // We don't recognise the type.
+ sipClass = NULL;
+ }
+%End
+
+ // The rest of the class specification.
+
+};
+</pre>
+<p>The SIP API includes the <a class="reference" href="#sipmapinttoclass">sipMapIntToClass()</a> and <a class="reference" href="#sipmapstringtoclass">sipMapStringToClass()</a>
+functions that convert integer and string based RTTI to Python type objects
+based on ordered lookup tables.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id71" id="converttotypecode" name="converttotypecode">7.9&nbsp;&nbsp;&nbsp;%ConvertToTypeCode</a></h2>
+<pre class="literal-block">
+%ConvertToTypeCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify the handwritten code that converts a Python
+object to a mapped type instance and to handle any ownership transfers. It is
+used as part of the <a class="reference" href="#mappedtype">%MappedType</a> directive and as part of a class
+specification. The code is also called to determine if the Python object is of
+the correct type prior to conversion.</p>
+<p>When used as part of a class specification it can automatically convert
+additional types of Python object. For example, PyQt uses it in the
+specification of the <tt class="docutils literal"><span class="pre">QString</span></tt> class to allow Python string objects and
+unicode objects to be used wherever <tt class="docutils literal"><span class="pre">QString</span></tt> instances are expected.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt>int *sipIsErr</dt>
+<dd>If this is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the code is being asked to check the type of the
+Python object. The check must not have any side effects. Otherwise the
+code is being asked to convert the Python object and a non-zero value
+should be returned through this pointer if an error occurred during the
+conversion.</dd>
+<dt>PyObject *sipPy</dt>
+<dd>This is the Python object to be converted.</dd>
+<dt><em>type</em> **sipCppPtr</dt>
+<dd>This is a pointer through which the address of the mapped type instance (or
+zero if appropriate) is returned. Its value is undefined if <tt class="docutils literal"><span class="pre">sipIsErr</span></tt>
+is <tt class="docutils literal"><span class="pre">NULL</span></tt>.</dd>
+<dt>PyObject *sipTransferObj</dt>
+<dd>This specifies any desired ownership changes to <em>sipPy</em>. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt>
+then the ownership should be left unchanged. If it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then
+ownership should be transferred to Python. Otherwise ownership should be
+transferred to C/C++ and <em>sipPy</em> associated with <em>sipTransferObj</em>. The
+code can choose to interpret these changes in any way.</dd>
+</dl>
+<p>The handwritten code must explicitly return an <tt class="docutils literal"><span class="pre">int</span></tt> the meaning of which
+depends on the value of <tt class="docutils literal"><span class="pre">sipIsErr</span></tt>.</p>
+<p>If <tt class="docutils literal"><span class="pre">sipIsErr</span></tt> is <tt class="docutils literal"><span class="pre">NULL</span></tt> then a non-zero value is returned if the Python
+object has a type that can be converted to the mapped type. Otherwise zero is
+returned.</p>
+<p>If <tt class="docutils literal"><span class="pre">sipIsErr</span></tt> is not <tt class="docutils literal"><span class="pre">NULL</span></tt> then a combination of the following flags is
+returned.</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">SIP_TEMPORARY</span></tt> is set to indicate that the returned instance is a
+temporary and should be released to avoid a memory leak.</li>
+<li><tt class="docutils literal"><span class="pre">SIP_DERIVED_CLASS</span></tt> is set to indicate that the type of the
+returned instance is a derived class. See <a class="reference" href="#generated-derived-classes">Generated Derived
+Classes</a>.</li>
+</ul>
+</blockquote>
+<p>The following example converts a Python list of <tt class="docutils literal"><span class="pre">QPoint</span></tt> instances to a
+<tt class="docutils literal"><span class="pre">QList&lt;QPoint&gt;</span></tt> instance:</p>
+<pre class="literal-block">
+%ConvertToTypeCode
+ // See if we are just being asked to check the type of the Python
+ // object.
+ if (!sipIsErr)
+ {
+ // Checking whether or not None has been passed instead of a list
+ // has already been done.
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ // Check the type of each element. We specify SIP_NOT_NONE to
+ // disallow None because it is a list of QPoint, not of a pointer
+ // to a QPoint, so None isn't appropriate.
+ for (int i = 0; i &lt; PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i),
+ sipClass_QPoint, SIP_NOT_NONE))
+ return 0;
+
+ // The type is valid.
+ return 1;
+ }
+
+ // Create the instance on the heap.
+ QList&lt;QPoint&gt; *ql = new QList&lt;QPoint&gt;;
+
+ for (int i = 0; i &lt; PyList_GET_SIZE(sipPy); ++i)
+ {
+ QPoint *qp;
+ int state;
+
+ // Get the address of the element's C++ instance. Note that, in
+ // this case, we don't apply any ownership changes to the list
+ // elements, only to the list itself.
+ qp = reinterpret_cast&lt;QPoint *&gt;(sipConvertToInstance(
+ PyList_GET_ITEM(sipPy, i),
+ sipClass_QPoint, 0,
+ SIP_NOT_NONE,
+ &amp;state, sipIsErr));
+
+ // Deal with any errors.
+ if (*sipIsErr)
+ {
+ sipReleaseInstance(qp, sipClass_QPoint, state);
+
+ // Tidy up.
+ delete ql;
+
+ // There is no temporary instance.
+ return 0;
+ }
+
+ ql -&gt; append(*qp);
+
+ // A copy of the QPoint was appended to the list so we no longer
+ // need it. It may be a temporary instance that should be
+ // destroyed, or a wrapped instance that should not be destroyed.
+ // sipReleaseInstance() will do the right thing.
+ sipReleaseInstance(qp, sipClass_QPoint, state);
+ }
+
+ // Return the instance.
+ *sipCppPtr = ql;
+
+ // The instance should be regarded as temporary (and be destroyed as
+ // soon as it has been used) unless it has been transferred from
+ // Python. sipGetState() is a convenience function that implements
+ // this common transfer behaviour.
+ return sipGetState(sipTransferObj);
+%End
+</pre>
+<p>When used in a class specification the handwritten code replaces the code that
+would normally be automatically generated. This means that the handwritten
+code must also handle instances of the class itself and not just the additional
+types that are being supported. This should be done by making calls to
+<a class="reference" href="#sipcanconverttoinstance">sipCanConvertToInstance()</a> to check the object type and
+<a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a> to convert the object. The <tt class="docutils literal"><span class="pre">SIP_NO_CONVERTORS</span></tt>
+flag <em>must</em> be passed to both these functions to prevent recursive calls to the
+handwritten code.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id72" id="copying" name="copying">7.10&nbsp;&nbsp;&nbsp;%Copying</a></h2>
+<pre class="literal-block">
+%Copying
+ <em>text</em>
+%End
+</pre>
+<p>This directive is used to specify some arbitrary text that will be included at
+the start of all source files generated by SIP. It is normally used to
+include copyright and licensing terms.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Copying
+Copyright (c) 2007 Riverbank Computing Limited
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id73" id="doc" name="doc">7.11&nbsp;&nbsp;&nbsp;%Doc</a></h2>
+<pre class="literal-block">
+%Doc
+ <em>text</em>
+%End
+</pre>
+<p>This directive is used to specify some arbitrary text that will be extracted
+by SIP when the <tt class="docutils literal"><span class="pre">-d</span></tt> command line option is used. The directive can be
+specified any number of times and SIP will concatenate all the separate pieces
+of text in the order that it sees them.</p>
+<p>Documentation that is specified using this directive is local to the module in
+which it appears. It is ignored by modules that <a class="reference" href="#import">%Import</a> it. Use the
+<a class="reference" href="#exporteddoc">%ExportedDoc</a> directive for documentation that should be included by all
+modules that <a class="reference" href="#import">%Import</a> this one.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Doc
+&lt;h1&gt;An Example&lt;/h1&gt;
+&lt;p&gt;
+This fragment of documentation is HTML and is local to the module in
+which it is defined.
+&lt;/p&gt;
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id74" id="end" name="end">7.12&nbsp;&nbsp;&nbsp;%End</a></h2>
+<p>This isn't a directive in itself, but is used to terminate a number of
+directives that allow a block of handwritten code or text to be specified.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id75" id="exception" name="exception">7.13&nbsp;&nbsp;&nbsp;%Exception</a></h2>
+<pre class="literal-block">
+%Exception <em>name</em> [(<em>base-exception)]
+{
+ [*header-code</em>]
+ <em>raise-code</em>
+};
+</pre>
+<p>This directive is used to define new Python exceptions, or to provide a stub
+for existing Python exceptions. It allows handwritten code to be provided
+that implements the translation between C++ exceptions and Python exceptions.
+The arguments to <tt class="docutils literal"><span class="pre">throw</span> <span class="pre">()</span></tt> specifiers must either be names of classes or the
+names of Python exceptions defined by this directive.</p>
+<p><em>name</em> is the name of the exception.</p>
+<p><em>base-exception</em> is the optional base exception. This may be either one of
+the standard Python exceptions or one defined with a previous <a class="reference" href="#exception">%Exception</a>
+directive.</p>
+<p><em>header-code</em> is the optional <a class="reference" href="#typeheadercode">%TypeHeaderCode</a> used to specify any external
+interface to the exception being defined.</p>
+<p><em>raise-code</em> is the <a class="reference" href="#raisecode">%RaiseCode</a> used to specify the handwritten code that
+converts a reference to the C++ exception to the Python exception.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Exception std::exception(SIP_Exception) /PyName=StdException/
+{
+%TypeHeaderCode
+#include &lt;exception&gt;
+%End
+%RaiseCode
+ const char *detail = sipExceptionReference.what();
+
+ SIP_BLOCK_THREADS
+ PyErr_SetString(sipException_StdException, detail);
+ SIP_UNBLOCK_THREADS
+%End
+};
+</pre>
+<p>In this example we map the standard C++ exception to a new Python exception.
+The new exception is called <tt class="docutils literal"><span class="pre">StdException</span></tt> and is derived from the standard
+Python exception <tt class="docutils literal"><span class="pre">Exception</span></tt>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id76" id="exporteddoc" name="exporteddoc">7.14&nbsp;&nbsp;&nbsp;%ExportedDoc</a></h2>
+<pre class="literal-block">
+%ExportedDoc
+ <em>text</em>
+%End
+</pre>
+<p>This directive is used to specify some arbitrary text that will be extracted
+by SIP when the <tt class="docutils literal"><span class="pre">-d</span></tt> command line option is used. The directive can be
+specified any number of times and SIP will concatenate all the separate pieces
+of text in the order that it sees them.</p>
+<p>Documentation that is specified using this directive will also be included by
+modules that <a class="reference" href="#import">%Import</a> it.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%ExportedDoc
+==========
+An Example
+==========
+
+This fragment of documentation is reStructuredText and will appear in the
+module in which it is defined and all modules that %Import it.
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id77" id="exportedheadercode" name="exportedheadercode">7.15&nbsp;&nbsp;&nbsp;%ExportedHeaderCode</a></h2>
+<pre class="literal-block">
+%ExportedHeaderCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code, typically the declarations
+of types, that is placed in a header file that is included by all generated
+code for all modules. It should not include function declarations because
+Python modules should not explicitly call functions in another Python module.</p>
+<p>See also <a class="reference" href="#modulecode">%ModuleCode</a> and <a class="reference" href="#moduleheadercode">%ModuleHeaderCode</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id78" id="feature" name="feature">7.16&nbsp;&nbsp;&nbsp;%Feature</a></h2>
+<pre class="literal-block">
+%Feature <em>name</em>
+</pre>
+<p>This directive is used to declare a feature. Features (along with
+<a class="reference" href="#platforms">%Platforms</a> and <a class="reference" href="#timeline">%Timeline</a>) are used by the <a class="reference" href="#if">%If</a> directive to control
+whether or not parts of a specification are processed or ignored.</p>
+<p>Features are mutually independent of each other - any combination of features
+may be enabled or disable. By default all features are enabled. The SIP
+<tt class="docutils literal"><span class="pre">-x</span></tt> command line option is used to disable a feature.</p>
+<p>If a feature is enabled then SIP will automatically generate a corresponding C
+preprocessor symbol for use by handwritten code. The symbol is the name of
+the feature prefixed by <tt class="docutils literal"><span class="pre">SIP_FEATURE_</span></tt>.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Feature FOO_SUPPORT
+
+%If (FOO_SUPPORT)
+void foo();
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id79" id="gcclearcode" name="gcclearcode">7.17&nbsp;&nbsp;&nbsp;%GCClearCode</a></h2>
+<pre class="literal-block">
+%GCClearCode
+ <em>code</em>
+%End
+</pre>
+<p>Python has a cyclic garbage collector which can identify and release unneeded
+objects even when their reference counts are not zero. If a wrapped C
+structure or C++ class keeps its own reference to a Python object then, if the
+garbage collector is to do its job, it needs to provide some handwritten code
+to traverse and potentially clear those embedded references.</p>
+<p>See the section <em>Supporting cyclic garbage collection</em> in <a class="reference" href="http://www.python.org/dev/doc/devel/ext/">Embedding and
+Extending the Python Interpreter</a>
+for the details.</p>
+<p>This directive is used to specify the code that clears any embedded references.
+(See <a class="reference" href="#gctraversecode">%GCTraverseCode</a> for specifying the code that traverses any embedded
+references.)</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>int sipRes</dt>
+<dd>The handwritten code should set this to the result to be returned.</dd>
+</dl>
+<p>The following simplified example is taken from PyQt. The <tt class="docutils literal"><span class="pre">QCustomEvent</span></tt>
+class allows arbitary data to be attached to the event. In PyQt this data is
+always a Python object and so should be handled by the garbage collector:</p>
+<pre class="literal-block">
+%GCClearCode
+ PyObject *obj;
+
+ // Get the object.
+ obj = reinterpret_cast&lt;PyObject *&gt;(sipCpp -&gt; data());
+
+ // Clear the pointer.
+ sipCpp -&gt; setData(0);
+
+ // Clear the reference.
+ Py_XDECREF(obj);
+
+ // Report no error.
+ sipRes = 0;
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id80" id="gctraversecode" name="gctraversecode">7.18&nbsp;&nbsp;&nbsp;%GCTraverseCode</a></h2>
+<pre class="literal-block">
+%GCTraverseCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify the code that traverses any embedded
+references for Python's cyclic garbage collector. (See <a class="reference" href="#gcclearcode">%GCClearCode</a> for a
+full explanation.)</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class.</dd>
+<dt>visitproc sipVisit</dt>
+<dd>This is the visit function provided by the garbage collector.</dd>
+<dt>void *sipArg</dt>
+<dd>This is the argument to the visit function provided by the garbage
+collector.</dd>
+<dt>int sipRes</dt>
+<dd>The handwritten code should set this to the result to be returned.</dd>
+</dl>
+<p>The following simplified example is taken from PyQt's <tt class="docutils literal"><span class="pre">QCustomEvent</span></tt> class:</p>
+<pre class="literal-block">
+%GCTraverseCode
+ PyObject *obj;
+
+ // Get the object.
+ obj = reinterpret_cast&lt;PyObject *&gt;(sipCpp -&gt; data());
+
+ // Call the visit function if there was an object.
+ if (obj)
+ sipRes = sipVisit(obj, sipArg);
+ else
+ sipRes = 0;
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id81" id="getcode" name="getcode">7.19&nbsp;&nbsp;&nbsp;%GetCode</a></h2>
+<pre class="literal-block">
+%GetCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used after the declaration of a C++ class variable or C
+structure member to specify handwritten code to convert it to a Python object.
+It is usually used to handle types that SIP cannot deal with automatically.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class. It is not made available if the
+variable being wrapped is a static class variable.</dd>
+<dt>PyObject *sipPy</dt>
+<dd>The handwritten code must set this to the Python representation of the
+class variable or structure member. If there is an error then the code
+must raise an exception and set this to <tt class="docutils literal"><span class="pre">NULL</span></tt>.</dd>
+</dl>
+<p>For example:</p>
+<pre class="literal-block">
+struct Entity
+{
+ /*
+ * In this contrived example the C library we are wrapping actually
+ * defines this as char buffer[100] which SIP cannot handle
+ * automatically.
+ */
+ char *buffer;
+%GetCode
+ sipPy = PyString_FromStringAndSize(sipCpp -&gt; buffer, 100);
+%End
+%SetCode
+ char *ptr;
+ int length;
+
+ if (PyString_AsStringAndSize(sipPy, &amp;ptr, &amp;length) == -1)
+ sipErr = 1;
+ else if (length != 100)
+ {
+ /*
+ * Raise an exception because the length isn't exactly right.
+ */
+
+ PyErr_SetString(PyExc_ValueError, &quot;an Entity.buffer must be exactly 100 bytes&quot;);
+ sipErr = 1;
+ }
+ else
+ memcpy(sipCpp -&gt; buffer, ptr, 100);
+%End
+}
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id82" id="if" name="if">7.20&nbsp;&nbsp;&nbsp;%If</a></h2>
+<pre class="literal-block">
+%If (<em>expression</em>)
+ <em>specification</em>
+%End
+</pre>
+<p>where</p>
+<pre class="literal-block">
+<em>expression</em> ::= [<em>ored-qualifiers</em> | <em>range</em>]
+
+<em>ored-qualifiers</em> ::= [<em>qualifier</em> | <em>qualifier</em> <tt class="docutils literal"><span class="pre">||</span></tt> <em>ored-qualifiers</em>]
+
+<em>qualifier</em> ::= [<tt class="docutils literal"><span class="pre">!</span></tt>] [<em>feature</em> | <em>platform</em>]
+
+<em>range</em> ::= [<em>version</em>] <tt class="docutils literal"><span class="pre">-</span></tt> [<em>version</em>]
+</pre>
+<p>This directive is used in conjunction with features (see <a class="reference" href="#feature">%Feature</a>),
+platforms (see <a class="reference" href="#platforms">%Platforms</a>) and versions (see <a class="reference" href="#timeline">%Timeline</a>) to control
+whether or not parts of a specification are processed or not.</p>
+<p>A <em>range</em> of versions means all versions starting with the lower bound up to
+but excluding the upper bound. If the lower bound is omitted then it is
+interpreted as being before the earliest version. If the upper bound is
+omitted then it is interpreted as being after the latest version.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Feature SUPPORT_FOO
+%Platforms {WIN32_PLATFORM POSIX_PLATFORM MACOS_PLATFORM}
+%Timeline {V1_0 V1_1 V2_0 V3_0}
+
+%If (!SUPPORT_FOO)
+ // Process this if the SUPPORT_FOO feature is disabled.
+%End
+
+%If (POSIX_PLATFORM || MACOS_PLATFORM)
+ // Process this if either the POSIX_PLATFORM or MACOS_PLATFORM
+ // platforms are enabled.
+%End
+
+%If (V1_0 - V2_0)
+ // Process this if either V1_0 or V1_1 is enabled.
+%End
+
+%If (V2_0 - )
+ // Process this if either V2_0 or V3_0 is enabled.
+%End
+
+%If ( - )
+ // Always process this.
+%End
+</pre>
+<p>Note that this directive is not implemented as a preprocessor. Only the
+following parts of a specification are affected by it:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">class</span></tt></li>
+<li><a class="reference" href="#convertfromtypecode">%ConvertFromTypeCode</a></li>
+<li><a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a></li>
+<li><a class="reference" href="#converttotypecode">%ConvertToTypeCode</a></li>
+<li><tt class="docutils literal"><span class="pre">enum</span></tt></li>
+<li><a class="reference" href="#exportedheadercode">%ExportedHeaderCode</a></li>
+<li>functions</li>
+<li><a class="reference" href="#gcclearcode">%GCClearCode</a></li>
+<li><a class="reference" href="#gctraversecode">%GCTraverseCode</a></li>
+<li><a class="reference" href="#if">%If</a></li>
+<li><a class="reference" href="#mappedtype">%MappedType</a></li>
+<li><a class="reference" href="#methodcode">%MethodCode</a></li>
+<li><a class="reference" href="#modulecode">%ModuleCode</a></li>
+<li><a class="reference" href="#moduleheadercode">%ModuleHeaderCode</a></li>
+<li><tt class="docutils literal"><span class="pre">namespace</span></tt></li>
+<li><a class="reference" href="#postinitialisationcode">%PostInitialisationCode</a></li>
+<li><a class="reference" href="#preinitialisationcode">%PreInitialisationCode</a></li>
+<li><tt class="docutils literal"><span class="pre">struct</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">typedef</span></tt></li>
+<li><a class="reference" href="#typecode">%TypeCode</a></li>
+<li><a class="reference" href="#typeheadercode">%TypeHeaderCode</a></li>
+<li><a class="reference" href="#unitcode">%UnitCode</a></li>
+<li>variables</li>
+<li><a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a></li>
+</ul>
+</blockquote>
+<p>Also note that the only way to specify the logical and of qualifiers is to use
+nested <a class="reference" href="#if">%If</a> directives.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id83" id="import" name="import">7.21&nbsp;&nbsp;&nbsp;%Import</a></h2>
+<pre class="literal-block">
+%Import <em>filename</em>
+</pre>
+<p>This directive is used to import the specification of another module. This is
+needed if the current module makes use of any types defined in the imported
+module, e.g. as an argument to a function, or to sub-class.</p>
+<p>If <em>filename</em> cannot be opened then SIP prepends <em>filename</em> with the name of
+the directory containing the current specification file (i.e. the one
+containing the <a class="reference" href="#import">%Import</a> directive) and tries again. If this also fails then
+SIP prepends <em>filename</em> with each of the directories, in turn, specified by
+the <tt class="docutils literal"><span class="pre">-I</span></tt> command line option.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Import qt/qtmod.sip
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id84" id="include" name="include">7.22&nbsp;&nbsp;&nbsp;%Include</a></h2>
+<pre class="literal-block">
+%Include <em>filename</em>
+</pre>
+<p>This directive is used to include contents of another file as part of the
+specification of the current module. It is the equivalent of the C
+preprocessor's <tt class="docutils literal"><span class="pre">#include</span></tt> directive and is used to structure a large module
+specification into manageable pieces.</p>
+<p><a class="reference" href="#include">%Include</a> follows the same search process as <a class="reference" href="#import">%Import</a> when trying to open
+<em>filename</em>.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Include qwidget.sip
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id85" id="id14" name="id14">7.23&nbsp;&nbsp;&nbsp;%License</a></h2>
+<pre class="literal-block">
+%License /<em>license-annotations</em>/
+</pre>
+<p>This directive is used to specify the contents of an optional license
+dictionary. The license dictionary is called <tt class="docutils literal"><span class="pre">__license__</span></tt> and is stored in
+the module dictionary. The elements of the dictionary are specified using the
+<a class="reference" href="#licensee">Licensee</a>, <a class="reference" href="#signature">Signature</a>, <a class="reference" href="#timestamp">Timestamp</a> and <a class="reference" href="#type">Type</a> annotations. Only the <a class="reference" href="#type">Type</a>
+annotation is compulsory.</p>
+<p>Note that this directive isn't an attempt to impose any licensing restrictions
+on a module. It is simply a method for easily embedding licensing information
+in a module so that it is accessible to Python scripts.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%License /Type=&quot;GPL&quot;/
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id86" id="mappedtype" name="mappedtype">7.24&nbsp;&nbsp;&nbsp;%MappedType</a></h2>
+<pre class="literal-block">
+template&lt;<em>type-list</em>&gt;
+%MappedType <em>type</em>
+{
+ [<em>header-code</em>]
+ [<em>convert-to-code</em>]
+ [<em>convert-from-code</em>]
+};
+
+%MappedType <em>type</em>
+{
+ [<em>header-code</em>]
+ [<em>convert-to-code</em>]
+ [<em>convert-from-code</em>]
+};
+</pre>
+<p>This directive is used to define an automatic mapping between a C or C++ type
+and a Python type. It can be used as part of a template, or to map a specific
+type.</p>
+<p>When used as part of a template <em>type</em> cannot itself refer to a template. Any
+occurrences of any of the type names (but not any <tt class="docutils literal"><span class="pre">*</span></tt> or <tt class="docutils literal"><span class="pre">&amp;</span></tt>) in
+<em>type-list</em> will be replaced by the actual type names used when the template is
+instantiated. Template mapped types are instantiated automatically as required
+(unlike template classes which are only instantiated using <tt class="docutils literal"><span class="pre">typedef</span></tt>).</p>
+<p>Any explicit mapped type will be used in preference to any template that maps
+the same type, ie. a template will not be automatically instantiated if there
+is an explicit mapped type.</p>
+<p><em>header-code</em> is the <a class="reference" href="#typeheadercode">%TypeHeaderCode</a> used to specify the library interface
+to the type being mapped.</p>
+<p><em>convert-to-code</em> is the <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> used to specify the handwritten
+code that converts a Python object to an instance of the mapped type.</p>
+<p><em>convert-from-code</em> is the <a class="reference" href="#convertfromtypecode">%ConvertFromTypeCode</a> used to specify the
+handwritten code that converts an instance of the mapped type to a Python
+object.</p>
+<p>For example:</p>
+<pre class="literal-block">
+template&lt;Type *&gt;
+%MappedType QList
+{
+%TypeHeaderCode
+// Include the library interface to the type being mapped.
+#include &lt;qlist.h&gt;
+%End
+
+%ConvertToTypeCode
+ // See if we are just being asked to check the type of the Python
+ // object.
+ if (sipIsErr == NULL)
+ {
+ // Check it is a list.
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ // Now check each element of the list is of the type we expect.
+ // The template is for a pointer type so we don't disallow None.
+ for (int i = 0; i &lt; PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i),
+ sipClass_Type, 0))
+ return 0;
+
+ return 1;
+ }
+
+ // Create the instance on the heap.
+ QList&lt;Type *&gt; *ql = new QList&lt;Type *&gt;;
+
+ for (int i = 0; i &lt; PyList_GET_SIZE(sipPy); ++i)
+ {
+ // Use the SIP API to convert the Python object to the
+ // corresponding C++ instance. Note that we apply any ownership
+ // transfer to the list itself, not the individual elements.
+ Type *t = reinterpret_cast&lt;Type *&gt;(sipConvertToInstance(
+ PyList_GET_ITEM(sipPy, i),
+ sipClass_Type, 0, 0, 0,
+ sipIsErr));
+
+ if (*sipIsErr)
+ {
+ // Tidy up.
+ delete ql;
+
+ // There is nothing on the heap.
+ return 0;
+ }
+
+ // Add the pointer to the C++ instance.
+ ql -&gt; append(t);
+ }
+
+ // Return the instance on the heap.
+ *sipCppPtr = ql;
+
+ // Apply the normal transfer.
+ return sipGetState(sipTransferObj);
+%End
+
+%ConvertFromTypeCode
+ PyObject *l;
+
+ // Create the Python list of the correct length.
+ if ((l = PyList_New(sipCpp -&gt; size())) == NULL)
+ return NULL;
+
+ // Go through each element in the C++ instance and convert it to the
+ // corresponding Python object.
+ for (int i = 0; i &lt; sipCpp -&gt; size(); ++i)
+ {
+ Type *t = sipCpp -&gt; at(i);
+ PyObject *tobj;
+
+ if ((tobj = sipConvertFromInstance(t, sipClass_Type, sipTransferObj)) == NULL)
+ {
+ // There was an error so garbage collect the Python list.
+ Py_DECREF(l);
+ return NULL;
+ }
+
+ PyList_SET_ITEM(l, i, tobj);
+ }
+
+ // Return the Python list.
+ return l;
+%End
+}
+</pre>
+<p>Using this we can use, for example, <tt class="docutils literal"><span class="pre">QList&lt;QObject</span> <span class="pre">*&gt;</span></tt> throughout the
+module's specification files (and in any module that imports this one). The
+generated code will automatically map this to and from a Python list of QObject
+instances when appropriate.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id87" id="methodcode" name="methodcode">7.25&nbsp;&nbsp;&nbsp;%MethodCode</a></h2>
+<pre class="literal-block">
+%MethodCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used as part of the specification of a global function, class
+method, operator, constructor or destructor to specify handwritten code that
+replaces the normally generated call to the function being wrapped. It is
+usually used to handle argument types and results that SIP cannot deal with
+automatically.</p>
+<p>The specified code is embedded in-line after the function's arguments have
+been successfully converted from Python objects to their C or C++ equivalents.
+The specified code must not include any <tt class="docutils literal"><span class="pre">return</span></tt> statements.</p>
+<p>In the context of a destructor the specified code is embedded in-line in the
+Python type's deallocation function. Unlike other contexts it supplements
+rather than replaces the normally generated code, so it must not include code
+to return the C structure or C++ class instance to the heap. The code is only
+called if ownership of the structure or class is with Python.</p>
+<p>The specified code must also handle the Python Global Interpreter Lock (GIL).
+If compatibility with SIP v3.x is required then the GIL must be released
+immediately before the C++ call and reacquired immediately afterwards as shown
+in this example fragment:</p>
+<pre class="literal-block">
+Py_BEGIN_ALLOW_THREADS
+sipCpp -&gt; foo();
+Py_END_ALLOW_THREADS
+</pre>
+<p>If compatibility with SIP v3.x is not required then this is optional but
+should be done if the C++ function might block the current thread or take a
+significant amount of time to execute. (See <a class="reference" href="#the-python-global-interpreter-lock">The Python Global Interpreter
+Lock</a> and the <a class="reference" href="#releasegil">ReleaseGIL</a> and <a class="reference" href="#holdgil">HoldGIL</a> annotations.)</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> a0</dt>
+<dd><p class="first">There is a variable for each argument of the Python signature (excluding
+any <tt class="docutils literal"><span class="pre">self</span></tt> argument) named <tt class="docutils literal"><span class="pre">a0</span></tt>, <tt class="docutils literal"><span class="pre">a1</span></tt>, etc. The <em>type</em> of the
+variable is the same as the type defined in the specification with the
+following exceptions:</p>
+<ul class="simple">
+<li>if the argument is only used to return a value (e.g. it is an <tt class="docutils literal"><span class="pre">int</span> <span class="pre">*</span></tt>
+without an <a class="reference" href="#in">In</a> annotation) then the type has one less level of
+indirection (e.g. it will be an <tt class="docutils literal"><span class="pre">int</span></tt>)</li>
+<li>if the argument is a structure or class (or a reference or a pointer to a
+structure or class) then <em>type</em> will always be a pointer to the structure
+or class.</li>
+</ul>
+<p class="last">Note that handwritten code for destructors never has any arguments.</p>
+</dd>
+<dt>PyObject *a0Wrapper</dt>
+<dd>This variable is made available only if the corresponding argument wraps a
+C structure or C++ class instance and the <a class="reference" href="#getwrapper">GetWrapper</a> annotation is
+specified. The variable is a pointer to the Python object that wraps the
+argument.</dd>
+<dt><em>type</em> *sipCpp</dt>
+<dd>If the directive is used in the context of a class constructor then this
+must be set by the handwritten code to the constructed instance. In any
+other context then this is a pointer to the C structure or C++ class
+instance. Its <em>type</em> is a pointer to the structure or class.</dd>
+<dt>int sipIsErr</dt>
+<dd><p class="first">The handwritten code should set this to a non-zero value, and raise an
+appropriate Python exception, if an error is detected.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">sipIsErr</span></tt> is not provided for destructors.</p>
+</dd>
+<dt><em>type</em> sipRes</dt>
+<dd><p class="first">The handwritten code should set this to the result to be returned. The
+<em>type</em> of the variable is the same as the type defined in the Python
+signature in the specification with the following exception:</p>
+<ul class="simple">
+<li>if the argument is a structure or class (or a reference or a pointer to a
+structure or class) then <em>type</em> will always be a pointer to the structure
+or class.</li>
+</ul>
+<p class="last"><tt class="docutils literal"><span class="pre">sipRes</span></tt> is not provided for inplace operators (e.g. <tt class="docutils literal"><span class="pre">+=</span></tt> or
+<tt class="docutils literal"><span class="pre">__imul__</span></tt>) as their results are handled automatically, nor for class
+constructors.</p>
+</dd>
+<dt>PyObject *sipSelf</dt>
+<dd>If the directive is used in the context of a class constructor or method
+then this is the Python object that wraps the the structure or class
+instance, i.e. <tt class="docutils literal"><span class="pre">self</span></tt>.</dd>
+<dt>bool sipSelfWasArg</dt>
+<dd><p class="first">This is only made available for non-abstract, virtual methods. It is set
+if <tt class="docutils literal"><span class="pre">self</span></tt> was explicitly passed as the first argument of the method
+rather than being bound to the method. In other words, the call was:</p>
+<pre class="literal-block">
+Klass.foo(self, ...)
+</pre>
+<p>rather than:</p>
+<pre class="last literal-block">
+self.foo(...)
+</pre>
+</dd>
+</dl>
+<p>The following is a complete example:</p>
+<pre class="literal-block">
+class Klass
+{
+public:
+ virtual int foo(SIP_PYTUPLE);
+%MethodCode
+ // The C++ API takes a 2 element array of integers but passing a
+ // two element tuple is more Pythonic.
+
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, &quot;ii&quot;, &amp;iarr[0], &amp;iarr[1]))
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipSelfWasArg ? sipCpp -&gt; Klass::foo(iarr)
+ : sipCpp -&gt; foo(iarr);
+ Py_END_ALLOW_THREADS
+ }
+ else
+ {
+ // PyArg_ParseTuple() will have raised the exception.
+ sipIsErr = 1;
+ }
+%End
+};
+</pre>
+<p>As the example is a virtual method <a class="footnote-reference" href="#id16" id="id15" name="id15">[7]</a>, note the use of <tt class="docutils literal"><span class="pre">sipSelfWasArg</span></tt> to
+determine exactly which implementation of <tt class="docutils literal"><span class="pre">foo()</span></tt> to call.</p>
+<p>If a method is in the <tt class="docutils literal"><span class="pre">protected</span></tt> section of a C++ class then the call
+should instead be:</p>
+<pre class="literal-block">
+sipRes = sipCpp -&gt; sipProtectVirt_foo(sipSelfWasArg, iarr);
+</pre>
+<p>If a method is in the <tt class="docutils literal"><span class="pre">protected</span></tt> section of a C++ class but is not virtual
+then the call should instead be:</p>
+<pre class="literal-block">
+sipRes = sipCpp -&gt; sipProtect_foo(iarr);
+</pre>
+<table class="docutils footnote" frame="void" id="id16" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id15" name="id16">[7]</a></td><td>See <a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a> for a description of how SIP generated code
+handles the reimplementation of C++ virtual methods in Python.</td></tr>
+</tbody>
+</table>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id88" id="module" name="module">7.26&nbsp;&nbsp;&nbsp;%Module</a></h2>
+<pre class="literal-block">
+%Module <em>name</em> [<em>version</em>]
+</pre>
+<p>This directive is used to identify that the library being wrapped is a C++
+library and to define the name of the module and it's optional version number.</p>
+<p>The name may contain periods to specify that the module is part of a Python
+package.</p>
+<p>The optional version number is useful if you (or others) might create other
+modules that build on this module, i.e. if another module might <a class="reference" href="#import">%Import</a>
+this module. Under the covers, a module exports an API that is used by modules
+that <a class="reference" href="#import">%Import</a> it and the API is given a version number. A module built on
+that module knows the version number of the API that it is expecting. If,
+when the modules are imported at run-time, the version numbers do not match
+then a Python exception is raised. The dependent module must then be re-built
+using the correct specification files for the base module.</p>
+<p>The version number should be incremented whenever a module is changed. Some
+changes don't affect the exported API, but it is good practice to change the
+version number anyway.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Module qt 5
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id89" id="modulecode" name="modulecode">7.27&nbsp;&nbsp;&nbsp;%ModuleCode</a></h2>
+<pre class="literal-block">
+%ModuleCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code, typically the
+implementations of utility functions, that can be called by other handwritten
+code in the module.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%ModuleCode
+// Print an object on stderr for debugging purposes.
+void dump_object(PyObject *o)
+{
+ PyObject_Print(o, stderr, 0);
+ fprintf(stderr, &quot;\n&quot;);
+}
+%End
+</pre>
+<p>See also <a class="reference" href="#exportedheadercode">%ExportedHeaderCode</a> and <a class="reference" href="#moduleheadercode">%ModuleHeaderCode</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id90" id="moduleheadercode" name="moduleheadercode">7.28&nbsp;&nbsp;&nbsp;%ModuleHeaderCode</a></h2>
+<pre class="literal-block">
+%ModuleHeaderCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code, typically the declarations
+of utility functions, that is placed in a header file that is included by all
+generated code for the same module.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%ModuleHeaderCode
+void dump_object(PyObject *o);
+%End
+</pre>
+<p>See also <a class="reference" href="#exportedheadercode">%ExportedHeaderCode</a> and <a class="reference" href="#modulecode">%ModuleCode</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id91" id="optionalinclude" name="optionalinclude">7.29&nbsp;&nbsp;&nbsp;%OptionalInclude</a></h2>
+<pre class="literal-block">
+%OptionalInclude <em>filename</em>
+</pre>
+<p>This directive is identical to the <a class="reference" href="#include">%Include</a> directive except that SIP
+silently continues processing if <em>filename</em> could not be opened.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%OptionalInclude license.sip
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id92" id="platforms" name="platforms">7.30&nbsp;&nbsp;&nbsp;%Platforms</a></h2>
+<pre class="literal-block">
+%Platforms {<em>name</em> <em>name</em> ...}
+</pre>
+<p>This directive is used to declare a set of platforms. Platforms (along with
+<a class="reference" href="#feature">%Feature</a> and <a class="reference" href="#timeline">%Timeline</a>) are used by the <a class="reference" href="#if">%If</a> directive to control
+whether or not parts of a specification are processed or ignored.</p>
+<p>Platforms are mutually exclusive - only one platform can be enabled at a time.
+By default all platforms are disabled. The SIP <tt class="docutils literal"><span class="pre">-t</span></tt> command line option is
+used to enable a platform.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Platforms {WIN32_PLATFORM POSIX_PLATFORM MACOS_PLATFORM}
+
+%If (WIN32_PLATFORM)
+void undocumented();
+%End
+
+%If (POSIX_PLATFORM)
+void documented();
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id93" id="postinitialisationcode" name="postinitialisationcode">7.31&nbsp;&nbsp;&nbsp;%PostInitialisationCode</a></h2>
+<pre class="literal-block">
+%PostInitialisationCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code that is embedded in-line
+at the very end of the generated module initialisation code.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt>PyObject *sipModule</dt>
+<dd>This is the module object returned by <tt class="docutils literal"><span class="pre">Py_InitModule()</span></tt>.</dd>
+<dt>PyObject *sipModuleDict</dt>
+<dd>This is the module's dictionary object returned by <tt class="docutils literal"><span class="pre">Py_ModuleGetDict()</span></tt>.</dd>
+</dl>
+<p>For example:</p>
+<pre class="literal-block">
+%PostInitialisationCode
+ // The code will be executed when the module is first imported and
+ // after all other initialisation has been completed.
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id94" id="preinitialisationcode" name="preinitialisationcode">7.32&nbsp;&nbsp;&nbsp;%PreInitialisationCode</a></h2>
+<pre class="literal-block">
+%PreInitialisationCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code that is embedded in-line
+at the very start of the generated module initialisation code.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%PreInitialisationCode
+ // The code will be executed when the module is first imported and
+ // before other initialisation has been completed.
+%End
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id95" id="raisecode" name="raisecode">7.33&nbsp;&nbsp;&nbsp;%RaiseCode</a></h2>
+<pre class="literal-block">
+%RaiseCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used as part of the definition of an exception using the
+<a class="reference" href="#exception">%Exception</a> directive to specify handwritten code that raises a Python
+exception when a C++ exception has been caught. The code is embedded in-line
+as the body of a C++ <tt class="docutils literal"><span class="pre">catch</span> <span class="pre">()</span></tt> clause.</p>
+<p>The specified code must handle the Python Global Interpreter Lock (GIL) if
+necessary. The GIL must be acquired before any calls to the Python API and
+released after the last call as shown in this example fragment:</p>
+<pre class="literal-block">
+SIP_BLOCK_THREADS
+PyErr_SetNone(PyErr_Exception);
+SIP_UNBLOCK_THREADS
+</pre>
+<p>Finally, the specified code must not include any <tt class="docutils literal"><span class="pre">return</span></tt> statements.</p>
+<p>The following variable is made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> &amp;sipExceptionRef</dt>
+<dd>This is a reference to the caught C++ exception. The <em>type</em> of the
+reference is the same as the type defined in the <tt class="docutils literal"><span class="pre">throw</span> <span class="pre">()</span></tt> specifier.</dd>
+</dl>
+<p>See the <a class="reference" href="#exception">%Exception</a> directive for an example.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id96" id="setcode" name="setcode">7.34&nbsp;&nbsp;&nbsp;%SetCode</a></h2>
+<pre class="literal-block">
+%SetCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used after the declaration of a C++ class variable or C
+structure member to specify handwritten code to convert it from a Python
+object. It is usually used to handle types that SIP cannot deal with
+automatically.</p>
+<p>The following variables are made available to the handwritten code:</p>
+<dl class="docutils">
+<dt><em>type</em> *sipCpp</dt>
+<dd>This is a pointer to the structure or class instance. Its <em>type</em> is a
+pointer to the structure or class. It is not made available if the
+variable being wrapped is a static class variable.</dd>
+<dt>int sipErr</dt>
+<dd>If the conversion failed then the handwritten code should raise a Python
+exception and set this to a non-zero value. Its initial value will be
+automatically set to zero.</dd>
+<dt>PyObject *sipPy</dt>
+<dd>This is the Python object that the handwritten code should convert.</dd>
+</dl>
+<p>See the <a class="reference" href="#getcode">%GetCode</a> directive for an example.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id97" id="sipoptions" name="sipoptions">7.35&nbsp;&nbsp;&nbsp;%SIPOptions</a></h2>
+<p>This directive sets one or more options that controls different aspects of
+SIP's behaviour. In this version all the available options are provided
+specifically to support PyQt and so are not documented.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id98" id="timeline" name="timeline">7.36&nbsp;&nbsp;&nbsp;%Timeline</a></h2>
+<pre class="literal-block">
+%Timeline {<em>name</em> <em>name</em> ...}
+</pre>
+<p>This directive is used to declare a set of versions released over a period of
+time. Versions (along with <a class="reference" href="#feature">%Feature</a> and <a class="reference" href="#platforms">%Platforms</a>) are used by the
+<a class="reference" href="#if">%If</a> directive to control whether or not parts of a specification are
+processed or ignored.</p>
+<p>Versions are mutually exclusive - only one version can be enabled at a time.
+By default all versions are disabled. The SIP <tt class="docutils literal"><span class="pre">-t</span></tt> command line option is
+used to enable a version.</p>
+<p>For example:</p>
+<pre class="literal-block">
+%Timeline {V1_0 V1_1 V2_0 V3_0}
+
+%If (V1_0 - V2_0)
+void foo();
+%End
+
+%If (V2_0 -)
+void foo(int = 0);
+%End
+</pre>
+<p><a class="reference" href="#timeline">%Timeline</a> can be used any number of times in a module to allow multiple
+libraries to be wrapped in the same module.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id99" id="typecode" name="typecode">7.37&nbsp;&nbsp;&nbsp;%TypeCode</a></h2>
+<pre class="literal-block">
+%TypeCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used as part of the specification of a C structure or a C++
+class to specify handwritten code, typically the implementations of utility
+functions, that can be called by other handwritten code in the structure or
+class.</p>
+<p>For example:</p>
+<pre class="literal-block">
+class Klass
+{
+%TypeCode
+// Print an instance on stderr for debugging purposes.
+static void dump_klass(const Klass *k)
+{
+ fprintf(stderr,&quot;Klass %s at %p\n&quot;, k -&gt; name(), k);
+}
+%End
+
+ // The rest of the class specification.
+
+};
+</pre>
+<p>Because the scope of the code is normally within the generated file that
+implements the type, any utility functions would normally be declared
+<tt class="docutils literal"><span class="pre">static</span></tt>. However a naming convention should still be adopted to prevent
+clashes of function names within a module in case the SIP <tt class="docutils literal"><span class="pre">-j</span></tt> command line
+option is used.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id100" id="typeheadercode" name="typeheadercode">7.38&nbsp;&nbsp;&nbsp;%TypeHeaderCode</a></h2>
+<pre class="literal-block">
+%TypeHeaderCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code that defines the interface
+to a C or C++ type being wrapped, either a structure, a class, or a template.
+It is used within a class definition or a <a class="reference" href="#mappedtype">%MappedType</a> directive.</p>
+<p>Normally <em>code</em> will be a pre-processor <tt class="docutils literal"><span class="pre">#include</span></tt> statement.</p>
+<p>For example:</p>
+<pre class="literal-block">
+// Wrap the Klass class.
+class Klass
+{
+%TypeHeaderCode
+#include &lt;klass.h&gt;
+%End
+
+ // The rest of the class specification.
+};
+</pre>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id101" id="unitcode" name="unitcode">7.39&nbsp;&nbsp;&nbsp;%UnitCode</a></h2>
+<pre class="literal-block">
+%UnitCode
+ <em>code</em>
+%End
+</pre>
+<p>This directive is used to specify handwritten code that it included at the very
+start of a generated compilation unit (ie. C or C++ source file). It is
+typically used to <tt class="docutils literal"><span class="pre">#include</span></tt> a C++ precompiled header file.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id102" id="virtualcatchercode" name="virtualcatchercode">7.40&nbsp;&nbsp;&nbsp;%VirtualCatcherCode</a></h2>
+<pre class="literal-block">
+%VirtualCatcherCode
+ <em>code</em>
+%End
+</pre>
+<p>For most classes there are corresponding <a class="reference" href="#generated-derived-classes">generated derived classes</a> that
+contain reimplementations of the class's virtual methods. These methods (which
+SIP calls catchers) determine if there is a corresponding Python
+reimplementation and call it if so. If there is no Python reimplementation
+then the method in the original class is called instead.</p>
+<p>This directive is used to specify handwritten code that replaces the normally
+generated call to the Python reimplementation and the handling of any returned
+results. It is usually used to handle argument types and results that SIP
+cannot deal with automatically.</p>
+<p>This directive can also be used in the context of a class destructor to
+specify handwritten code that is embedded in-line in the internal derived
+class's destructor.</p>
+<p>In the context of a method the Python Global Interpreter Lock (GIL) is
+automatically acquired before the specified code is executed and automatically
+released afterwards.</p>
+<p>In the context of a destructor the specified code must handle the GIL. The
+GIL must be acquired before any calls to the Python API and released after the
+last call as shown in this example fragment:</p>
+<pre class="literal-block">
+SIP_BLOCK_THREADS
+Py_DECREF(obj);
+SIP_UNBLOCK_THREADS
+</pre>
+<p>The following variables are made available to the handwritten code in the
+context of a method:</p>
+<dl class="docutils">
+<dt><em>type</em> a0</dt>
+<dd>There is a variable for each argument of the C++ signature named <tt class="docutils literal"><span class="pre">a0</span></tt>,
+<tt class="docutils literal"><span class="pre">a1</span></tt>, etc. The <em>type</em> of the variable is the same as the type defined in
+the specification.</dd>
+<dt>int sipIsErr</dt>
+<dd>The handwritten code should set this to a non-zero value, and raise an
+appropriate Python exception, if an error is detected.</dd>
+<dt>PyObject *sipMethod</dt>
+<dd>This object is the Python reimplementation of the virtual C++ method. It
+is normally passed to <a class="reference" href="#sipcallmethod">sipCallMethod()</a>.</dd>
+<dt><em>type</em> sipRes</dt>
+<dd>The handwritten code should set this to the result to be returned. The
+<em>type</em> of the variable is the same as the type defined in the C++ signature
+in the specification.</dd>
+</dl>
+<p>No variables are made available in the context of a destructor.</p>
+<p>For example:</p>
+<pre class="literal-block">
+class Klass
+{
+public:
+ virtual int foo(SIP_PYTUPLE) [int (int *)];
+%MethodCode
+ // The C++ API takes a 2 element array of integers but passing a
+ // two element tuple is more Pythonic.
+
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, &quot;ii&quot;, &amp;iarr[0], &amp;iarr[1]))
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -&gt; Klass::foo(iarr);
+ Py_END_ALLOW_THREADS
+ }
+ else
+ {
+ // PyArg_ParseTuple() will have raised the exception.
+ sipIsErr = 1;
+ }
+%End
+%VirtualCatcherCode
+ // Convert the 2 element array of integers to the two element
+ // tuple.
+
+ PyObject *result;
+
+ result = sipCallMethod(&amp;sipIsErr, sipMethod, &quot;ii&quot;, a0[0], a0[1]);
+
+ if (result != NULL)
+ {
+ // Convert the result to the C++ type.
+ sipParseResult(&amp;sipIsErr, sipMethod, result, &quot;i&quot;, &amp;sipRes);
+
+ Py_DECREF(result);
+ }
+%End
+};
+</pre>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id103" id="sip-annotations" name="sip-annotations">8&nbsp;&nbsp;&nbsp;SIP Annotations</a></h1>
+<p>In this section we describe each of the annotations that can be used in
+specification files.</p>
+<p>Annotations can either be argument annotations, class annotations, enum
+annotations, exception annotations, function annotations, license annotations,
+or variable annotations depending on the context in which they can be used.</p>
+<p>Annotations are placed between forward slashes (<tt class="docutils literal"><span class="pre">/</span></tt>). Multiple annotations
+are comma separated within the slashes.</p>
+<p>Annotations have a type and, possibly, a value. The type determines the
+format of the value. The name of an annotation and its value are separated by
+<tt class="docutils literal"><span class="pre">=</span></tt>.</p>
+<p>Annotations can have one of the following types:</p>
+<dl class="docutils">
+<dt>boolean</dt>
+<dd>This type of annotation has no value and is implicitly true.</dd>
+<dt>name</dt>
+<dd>The value is a name that is compatible with a C/C++ identifier. In some
+cases the value is optional.</dd>
+<dt>string</dt>
+<dd>The value is a double quoted string.</dd>
+</dl>
+<p>The following example shows argument and function annotations:</p>
+<pre class="literal-block">
+void exec(QWidget * /Transfer/) /ReleaseGIL, PyName=call_exec/;
+</pre>
+<p>Note that the current version of SIP does not complain about unknown
+annotations, or annotations used out of their correct context.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id104" id="argument-annotations" name="argument-annotations">8.1&nbsp;&nbsp;&nbsp;Argument Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id105" id="allownone" name="allownone">8.1.1&nbsp;&nbsp;&nbsp;AllowNone</a></h3>
+<p>This boolean annotation specifies that the value of the corresponding argument
+(which should be either <a class="reference" href="#sip-pycallable">SIP_PYCALLABLE</a>, <a class="reference" href="#sip-pydict">SIP_PYDICT</a>, <a class="reference" href="#sip-pylist">SIP_PYLIST</a>,
+<a class="reference" href="#sip-pyslice">SIP_PYSLICE</a>, <a class="reference" href="#sip-pytuple">SIP_PYTUPLE</a> or <a class="reference" href="#sip-pytype">SIP_PYTYPE</a>) may be <tt class="docutils literal"><span class="pre">None</span></tt>.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id106" id="array" name="array">8.1.2&nbsp;&nbsp;&nbsp;Array</a></h3>
+<p>This boolean annotation specifies that the corresponding argument (which
+should be either <tt class="docutils literal"><span class="pre">char</span> <span class="pre">*</span></tt> or <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span> <span class="pre">*</span></tt>) refers to an array
+rather than a <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string. There must be a corresponding
+argument with the <a class="reference" href="#arraysize">ArraySize</a> annotation specified. The annotation may only be
+specified once in a list of arguments.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id107" id="arraysize" name="arraysize">8.1.3&nbsp;&nbsp;&nbsp;ArraySize</a></h3>
+<p>This boolean annotation specifies that the corresponding argument (which
+should be either <tt class="docutils literal"><span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">int</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span></tt>,
+<tt class="docutils literal"><span class="pre">long</span></tt> or <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt>) refers to the size of an array. There must be
+a corresponding argument with the <a class="reference" href="#array">Array</a> annotation specified. The annotation
+may only be specified once in a list of arguments.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id108" id="constrained" name="constrained">8.1.4&nbsp;&nbsp;&nbsp;Constrained</a></h3>
+<p>Python will automatically convert between certain compatible types. For
+example, if a floating pointer number is expected and an integer supplied,
+then the integer will be converted appropriately. This can cause problems
+when wrapping C or C++ functions with similar signatures. For example:</p>
+<pre class="literal-block">
+// The wrapper for this function will also accept an integer argument
+// which Python will automatically convert to a floating point number.
+void foo(double);
+
+// The wrapper for this function will never get used.
+void foo(int);
+</pre>
+<p>This boolean annotation specifies that the corresponding argument (which
+should be either <tt class="docutils literal"><span class="pre">bool</span></tt>, <tt class="docutils literal"><span class="pre">int</span></tt>, <tt class="docutils literal"><span class="pre">float</span></tt>, <tt class="docutils literal"><span class="pre">double</span></tt> or a wrapped class)
+must match the type without any automatic conversions. In the context of a
+wrapped class the invocation of any <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> is suppressed.</p>
+<p>The following example gets around the above problem:</p>
+<pre class="literal-block">
+// The wrapper for this function will only accept floating point numbers.
+void foo(double /Constrained/);
+
+// The wrapper for this function will be used for anything that Python can
+// convert to an integer, except for floating point numbers.
+void foo(int);
+</pre>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id109" id="getwrapper" name="getwrapper">8.1.5&nbsp;&nbsp;&nbsp;GetWrapper</a></h3>
+<p>This boolean annotation is only ever used in conjunction with handwritten code
+specified with the <a class="reference" href="#methodcode">%MethodCode</a> directive. It causes an extra variable to
+be generated for the corresponding argument (which should be a wrapped C
+structure or C++ class instance) which is a pointer to the Python object that
+wraps the argument.</p>
+<p>See the <a class="reference" href="#methodcode">%MethodCode</a> directive for more detail.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id110" id="in" name="in">8.1.6&nbsp;&nbsp;&nbsp;In</a></h3>
+<p>This boolean annotation is used to specify that the corresponding argument
+(which should be a pointer type) is used to pass a value to the function.</p>
+<p>For pointers to wrapped C structures or C++ class instances, <tt class="docutils literal"><span class="pre">char</span> <span class="pre">*</span></tt> and
+<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span> <span class="pre">*</span></tt> then this annotation is assumed unless the <a class="reference" href="#out">Out</a> annotation
+is specified.</p>
+<p>For pointers to other types then this annotation must be explicitly specified
+if required. The argument will be dereferenced to obtain the actual value.</p>
+<p>Both <a class="reference" href="#in">In</a> and <a class="reference" href="#out">Out</a> may be specified for the same argument.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id111" id="out" name="out">8.1.7&nbsp;&nbsp;&nbsp;Out</a></h3>
+<p>This boolean annotation is used to specify that the corresponding argument
+(which should be a pointer type) is used by the function to return a value as
+an element of a tuple.</p>
+<p>For pointers to wrapped C structures or C++ class instances, <tt class="docutils literal"><span class="pre">char</span> <span class="pre">*</span></tt> and
+<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span> <span class="pre">*</span></tt> then this annotation must be explicitly specified if
+required.</p>
+<p>For pointers to other types then this annotation is assumed unless the <a class="reference" href="#in">In</a>
+annotation is specified.</p>
+<p>Both <a class="reference" href="#in">In</a> and <a class="reference" href="#out">Out</a> may be specified for the same argument.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id112" id="transfer" name="transfer">8.1.8&nbsp;&nbsp;&nbsp;Transfer</a></h3>
+<p>This boolean annotation is used to specify that ownership of the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is
+transferred from Python to C++. In addition, if the argument is of a class
+method, then it is associated with the class instance with regard to the
+cyclic garbage collector.</p>
+<p>See <a class="reference" href="#ownership-of-objects">Ownership of Objects</a> for more detail.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id113" id="transferback" name="transferback">8.1.9&nbsp;&nbsp;&nbsp;TransferBack</a></h3>
+<p>This boolean annotation is used to specify that ownership of the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is
+transferred back to Python from C++. In addition, any association of the
+argument with regard to the cyclic garbage collector with another instance is
+removed.</p>
+<p>Note that this can also be used as a function annotation.</p>
+<p>See <a class="reference" href="#ownership-of-objects">Ownership of Objects</a> for more detail.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id114" id="transferthis" name="transferthis">8.1.10&nbsp;&nbsp;&nbsp;TransferThis</a></h3>
+<p>This boolean annotation is only used in C++ constructors or methods. In the
+context of a constructor or factory method it specifies that ownership of the
+instance being created is transferred from Python to C++ if the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is not
+<tt class="docutils literal"><span class="pre">None</span></tt>. In addition, the newly created instance is associated with the
+argument with regard to the cyclic garbage collector.</p>
+<p>In the context of a non-factory method it specifies that ownership of <tt class="docutils literal"><span class="pre">this</span></tt>
+is transferred from Python to C++ if the corresponding argument is not
+<tt class="docutils literal"><span class="pre">None</span></tt>. If it is <tt class="docutils literal"><span class="pre">None</span></tt> then ownership is transferred to Python.</p>
+<p>The annotation may be used more that once, in which case ownership is
+transferred to last instance that is not <tt class="docutils literal"><span class="pre">None</span></tt>.</p>
+<p>See <a class="reference" href="#ownership-of-objects">Ownership of Objects</a> for more detail.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id115" id="class-annotations" name="class-annotations">8.2&nbsp;&nbsp;&nbsp;Class Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id116" id="abstract" name="abstract">8.2.1&nbsp;&nbsp;&nbsp;Abstract</a></h3>
+<p>This boolean annotation is used to specify that the class has additional pure
+virtual methods that have not been specified and so it cannot be instantiated
+or sub-classed from Python.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id117" id="delaydtor" name="delaydtor">8.2.2&nbsp;&nbsp;&nbsp;DelayDtor</a></h3>
+<p>This boolean annotation is used to specify that the class's destructor should
+not be called until the Python interpreter exits. It would normally only be
+applied to singleton classes.</p>
+<p>When the Python interpreter exits the order in which any wrapped instances are
+garbage collected is unpredictable. However, the underlying C or C++ instances
+may need to be destroyed in a certain order. If this annotation is specified
+then when the wrapped instance is garbage collected the C or C++ instance is
+not destroyed but instead added to a list of delayed instances. When the
+interpreter exits then the function <tt class="docutils literal"><span class="pre">sipDelayedDtors</span></tt> is called with the
+list of delayed instances. <tt class="docutils literal"><span class="pre">sipDelayedDtors</span></tt> can then choose to call (or
+ignore) the destructors in any desired order.</p>
+<p>The <tt class="docutils literal"><span class="pre">sipDelayedDtors</span></tt> function must be specified using the <a class="reference" href="#modulecode">%ModuleCode</a>
+directive. It's signature is as follows:</p>
+<pre class="literal-block">
+static void sipDelayedDtors(const sipDelayedDtor *dd_list);
+</pre>
+<p><tt class="docutils literal"><span class="pre">dd_list</span></tt> is the linked list of delayed instances. The following fields are
+defined.</p>
+<dl class="docutils">
+<dt>const char *dd_name</dt>
+<dd>This is the name of the class excluding any package or module name.</dd>
+<dt>void *dd_ptr</dt>
+<dd>This is the address of the C or C++ instance to be destroyed. It's exact
+type depends on the value of <tt class="docutils literal"><span class="pre">dd_isderived</span></tt>.</dd>
+<dt>int dd_isderived</dt>
+<dd>This is non-zero if the type of <tt class="docutils literal"><span class="pre">dd_ptr</span></tt> is actually the generated
+derived class. This allows the correct destructor to be called. See
+<a class="reference" href="#generated-derived-classes">Generated Derived Classes</a>.</dd>
+<dt>sipDelayedDtor *dd_next</dt>
+<dd>This is the address of the next entry in the list or zero if this is the
+last one.</dd>
+</dl>
+<p>Note that the above applies only to C and C++ instances that are owned by
+Python.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id118" id="external" name="external">8.2.3&nbsp;&nbsp;&nbsp;External</a></h3>
+<p>This boolean annotation is used to specify that the class is defined in another
+module. Declarations of external classes are private to the module in which
+they appear.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id119" id="nodefaultctors" name="nodefaultctors">8.2.4&nbsp;&nbsp;&nbsp;NoDefaultCtors</a></h3>
+<p>This boolean annotation is used to suppress the automatic generation of default
+constructors for the class.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id120" id="pyname" name="pyname">8.2.5&nbsp;&nbsp;&nbsp;PyName</a></h3>
+<p>This name annotation specifies an alternative name for the class being wrapped
+which is used when it is referred to from Python. It is required when a class
+name is the same as a Python keyword. It may also be used to avoid name
+clashes with other objects (e.g. enums, exceptions, functions) that have the
+same name in the same C++ scope.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id121" id="enum-annotations" name="enum-annotations">8.3&nbsp;&nbsp;&nbsp;Enum Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id122" id="id17" name="id17">8.3.1&nbsp;&nbsp;&nbsp;PyName</a></h3>
+<p>This name annotation specifies an alternative name for the enum or enum member
+being wrapped which is used when it is referred to from Python. It is required
+when an enum or enum member name is the same as a Python keyword. It may also
+be used to avoid name clashes with other objects (e.g. classes, exceptions,
+functions) that have the same name in the same C++ scope.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id123" id="exception-annotations" name="exception-annotations">8.4&nbsp;&nbsp;&nbsp;Exception Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id124" id="id18" name="id18">8.4.1&nbsp;&nbsp;&nbsp;PyName</a></h3>
+<p>This name annotation specifies an alternative name for the exception being
+defined which is used when it is referred to from Python. It is required when
+an exception name is the same as a Python keyword. It may also be used to
+avoid name clashes with other objects (e.g. classes, enums, functions) that
+have the same name.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id125" id="function-annotations" name="function-annotations">8.5&nbsp;&nbsp;&nbsp;Function Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id126" id="autogen" name="autogen">8.5.1&nbsp;&nbsp;&nbsp;AutoGen</a></h3>
+<p>This optional name annotation is used with class methods to specify that the
+method be automatically included in all sub-classes. The value is the name of
+a feature (specified using the <a class="reference" href="#feature">%Feature</a> directive) which must be enabled
+for the method to be generated.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id127" id="default" name="default">8.5.2&nbsp;&nbsp;&nbsp;Default</a></h3>
+<p>This boolean annotation is only used with C++ constructors. Sometimes SIP
+needs to create a class instance. By default it uses a constructor with no
+compulsory arguments if one is specified. (SIP will automatically generate a
+constructor with no arguments if no constructors are specified.) This
+annotation is used to explicitly specify which constructor to use. Zero is
+passed as the value of any arguments to the constructor.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id128" id="factory" name="factory">8.5.3&nbsp;&nbsp;&nbsp;Factory</a></h3>
+<p>This boolean annotation specifies that the value returned by the function
+(which should be a wrapped C structure or C++ class instance) is a newly
+created instance and is owned by Python.</p>
+<p>See <a class="reference" href="#ownership-of-objects">Ownership of Objects</a> for more detail.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id129" id="holdgil" name="holdgil">8.5.4&nbsp;&nbsp;&nbsp;HoldGIL</a></h3>
+<p>This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
+is not released before the call to the underlying C or C++ function. See
+<a class="reference" href="#the-python-global-interpreter-lock">The Python Global Interpreter Lock</a> and the <a class="reference" href="#releasegil">ReleaseGIL</a> annotation.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id130" id="newthread" name="newthread">8.5.5&nbsp;&nbsp;&nbsp;NewThread</a></h3>
+<p>This boolean annotation specifies that the function will create a new thread.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id131" id="noderived" name="noderived">8.5.6&nbsp;&nbsp;&nbsp;NoDerived</a></h3>
+<p>This boolean annotation is only used with C++ constructors. In many cases SIP
+generates a derived class for each class being wrapped (see <a class="reference" href="#generated-derived-classes">Generated Derived
+Classes</a>). This derived class contains constructors with the same C++
+signatures as the class being wrapped. Sometimes you may want to define a
+Python constructor that has no corresponding C++ constructor. This annotation
+is used to suppress the generation of the constructor in the derived class.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id132" id="numeric" name="numeric">8.5.7&nbsp;&nbsp;&nbsp;Numeric</a></h3>
+<p>This boolean annotation specifies that the operator should be interpreted as a
+numeric operator rather than a sequence operator. Python uses the <tt class="docutils literal"><span class="pre">+</span></tt>
+operator for adding numbers and concatanating sequences, and the <tt class="docutils literal"><span class="pre">*</span></tt> operator
+for multiplying numbers and repeating sequences. SIP tries to work out which
+is meant by looking at other operators that have been defined for the type.
+If it finds either <tt class="docutils literal"><span class="pre">-</span></tt>, <tt class="docutils literal"><span class="pre">-=</span></tt>, <tt class="docutils literal"><span class="pre">/</span></tt>, <tt class="docutils literal"><span class="pre">/=</span></tt>, <tt class="docutils literal"><span class="pre">%</span></tt> or <tt class="docutils literal"><span class="pre">%=</span></tt> defined then
+it assumes that <tt class="docutils literal"><span class="pre">+</span></tt>, <tt class="docutils literal"><span class="pre">+=</span></tt>, <tt class="docutils literal"><span class="pre">*</span></tt> and <tt class="docutils literal"><span class="pre">*=</span></tt> should be numeric operators.
+Otherwise, if it finds either <tt class="docutils literal"><span class="pre">[]</span></tt>, <tt class="docutils literal"><span class="pre">__getitem__()</span></tt>, <tt class="docutils literal"><span class="pre">__setitem__()</span></tt> or
+<tt class="docutils literal"><span class="pre">__delitem__()</span></tt> defined then it assumes that they should be sequence
+operators. This annotation is used to force SIP to treat the operator as
+numeric.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id133" id="posthook" name="posthook">8.5.8&nbsp;&nbsp;&nbsp;PostHook</a></h3>
+<p>This name annotation is used to specify the name of a Python builtin that is
+called immediately after the call to the underlying C or C++ function or any
+handwritten code. The builtin is not called if an error occurred. It is
+primarily used to integrate with debuggers.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id134" id="prehook" name="prehook">8.5.9&nbsp;&nbsp;&nbsp;PreHook</a></h3>
+<p>This name annotation is used to specify the name of a Python builtin that is
+called immediately after the function's arguments have been successfully
+parsed and before the call to the underlying C or C++ function or any
+handwritten code. It is primarily used to integrate with debuggers.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id135" id="id19" name="id19">8.5.10&nbsp;&nbsp;&nbsp;PyName</a></h3>
+<p>This name annotation specifies an alternative name for the function being
+wrapped which is used when it is referred to from Python. It is required when
+a function or method name is the same as a Python keyword. It may also be used
+to avoid name clashes with other objects (e.g. classes, enums, exceptions) that
+have the same name in the same C++ scope.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id136" id="releasegil" name="releasegil">8.5.11&nbsp;&nbsp;&nbsp;ReleaseGIL</a></h3>
+<p>This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
+is released before the call to the underlying C or C++ function and reacquired
+afterwards. It should be used for functions that might block or take a
+significant amount of time to execute. See <a class="reference" href="#the-python-global-interpreter-lock">The Python Global Interpreter
+Lock</a> and the <a class="reference" href="#holdgil">HoldGIL</a> annotation.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id137" id="id20" name="id20">8.5.12&nbsp;&nbsp;&nbsp;TransferBack</a></h3>
+<p>This boolean annotation specifies that ownership of the value returned by the
+function (which should be a wrapped C structure or C++ class instance) is
+transferred back to Python from C++. Normally returned values (unless they are
+new references to already wrapped values) are owned by C++. In addition, any
+association of the returned value with regard to the cyclic garbage collector
+with another instance is removed.</p>
+<p>Note that this can also be used as an argument annotation.</p>
+<p>See <a class="reference" href="#ownership-of-objects">Ownership of Objects</a> for more detail.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id138" id="license-annotations" name="license-annotations">8.6&nbsp;&nbsp;&nbsp;License Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id139" id="licensee" name="licensee">8.6.1&nbsp;&nbsp;&nbsp;Licensee</a></h3>
+<p>This optional string annotation specifies the license's licensee. No
+restrictions are placed on the contents of the string.</p>
+<p>See the <a class="reference" href="#id14">%License</a> directive.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id140" id="signature" name="signature">8.6.2&nbsp;&nbsp;&nbsp;Signature</a></h3>
+<p>This optional string annotation specifies the license's signature. No
+restrictions are placed on the contents of the string.</p>
+<p>See the <a class="reference" href="#id14">%License</a> directive.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id141" id="timestamp" name="timestamp">8.6.3&nbsp;&nbsp;&nbsp;Timestamp</a></h3>
+<p>This optional string annotation specifies the license's timestamp. No
+restrictions are placed on the contents of the string.</p>
+<p>See the <a class="reference" href="#id14">%License</a> directive.</p>
+</div>
+<div class="section">
+<h3><a class="toc-backref" href="#id142" id="type" name="type">8.6.4&nbsp;&nbsp;&nbsp;Type</a></h3>
+<p>This string annotation specifies the license's type. No restrictions are
+placed on the contents of the string.</p>
+<p>See the <a class="reference" href="#id14">%License</a> directive.</p>
+</div>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id143" id="variable-annotations" name="variable-annotations">8.7&nbsp;&nbsp;&nbsp;Variable Annotations</a></h2>
+<div class="section">
+<h3><a class="toc-backref" href="#id144" id="id21" name="id21">8.7.1&nbsp;&nbsp;&nbsp;PyName</a></h3>
+<p>This name annotation specifies an alternative name for the variable being
+wrapped which is used when it is referred to from Python. It is required when
+a variable name is the same as a Python keyword. It may also be used to avoid
+name clashes with other objects (e.g. classes, functions) that have the same
+name in the same C++ scope.</p>
+</div>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id145" id="sip-api-for-handwritten-code" name="sip-api-for-handwritten-code">9&nbsp;&nbsp;&nbsp;SIP API for Handwritten Code</a></h1>
+<p>In this section we describe the API that can be used by handwritten code in
+specification files.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id146" id="sip-api-major-nr" name="sip-api-major-nr">9.1&nbsp;&nbsp;&nbsp;SIP_API_MAJOR_NR</a></h2>
+<p>This is a C preprocessor symbol that defines the major number of the SIP API.
+Its value is a number. There is no direct relationship between this and the
+SIP version number.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id147" id="sip-api-minor-nr" name="sip-api-minor-nr">9.2&nbsp;&nbsp;&nbsp;SIP_API_MINOR_NR</a></h2>
+<p>This is a C preprocessor symbol that defines the minor number of the SIP API.
+Its value is a number. There is no direct relationship between this and the
+SIP version number.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id148" id="sip-block-threads" name="sip-block-threads">9.3&nbsp;&nbsp;&nbsp;SIP_BLOCK_THREADS</a></h2>
+<p>This is a C preprocessor macro that will make sure the Python Global
+Interpreter Lock (GIL) is acquired. Python API calls must only be made when
+the GIL has been acquired. There must be a corresponding
+<a class="reference" href="#sip-unblock-threads">SIP_UNBLOCK_THREADS</a> at the same lexical scope.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id149" id="sip-ssize-t" name="sip-ssize-t">9.4&nbsp;&nbsp;&nbsp;SIP_SSIZE_T</a></h2>
+<p>This is a C preprocessor macro that is defined as <tt class="docutils literal"><span class="pre">Py_ssize_t</span></tt> for Python
+v2.5 and later, and as <tt class="docutils literal"><span class="pre">int</span></tt> for earlier versions of Python. It makes it
+easier to write PEP 353 compliant handwritten code.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id150" id="sip-unblock-threads" name="sip-unblock-threads">9.5&nbsp;&nbsp;&nbsp;SIP_UNBLOCK_THREADS</a></h2>
+<p>This is a C preprocessor macro that will restore the Python Global Interpreter
+Lock (GIL) to the state it was prior to the corresponding <a class="reference" href="#sip-block-threads">SIP_BLOCK_THREADS</a>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id151" id="sip-version" name="sip-version">9.6&nbsp;&nbsp;&nbsp;SIP_VERSION</a></h2>
+<p>This is a C preprocessor symbol that defines the SIP version number
+represented as a 3 part hexadecimal number (e.g. v4.0.0 is represented as
+<tt class="docutils literal"><span class="pre">0x040000</span></tt>).</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id152" id="sip-version-str" name="sip-version-str">9.7&nbsp;&nbsp;&nbsp;SIP_VERSION_STR</a></h2>
+<p>This is a C preprocessor symbol that defines the SIP version number
+represented as a string. For development snapshots it will start with
+<tt class="docutils literal"><span class="pre">snapshot-</span></tt>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id153" id="sipbadcatcherresult" name="sipbadcatcherresult">9.8&nbsp;&nbsp;&nbsp;sipBadCatcherResult()</a></h2>
+<dl class="docutils">
+<dt>void sipBadCatcherResult(PyObject *method)</dt>
+<dd>This raises a Python exception when the result of a Python reimplementation
+of a C++ method doesn't have the expected type. It is normally called by
+handwritten code specified with the <a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a> directive.
+<em>method</em> is the Python method and would normally be the supplied
+<tt class="docutils literal"><span class="pre">sipMethod</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id154" id="sipbadlengthforslice" name="sipbadlengthforslice">9.9&nbsp;&nbsp;&nbsp;sipBadLengthForSlice()</a></h2>
+<dl class="docutils">
+<dt>void sipBadLengthForSlice(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen)</dt>
+<dd>This raises a Python exception when the length of a slice object is
+inappropriate for a sequence-like object. It is normally called by
+handwritten code specified for <tt class="docutils literal"><span class="pre">__setitem__()</span></tt> methods. <em>seqlen</em> is the
+length of the sequence. <em>slicelen</em> is the length of the slice. With
+versions of Python prior to v2.5 the arguments have type <tt class="docutils literal"><span class="pre">int</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id155" id="sipbuildresult" name="sipbuildresult">9.10&nbsp;&nbsp;&nbsp;sipBuildResult()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipBuildResult(int *iserr, const char *format, ...)</dt>
+<dd><p class="first">This creates a Python object based on a format string and associated
+values in a similar way to the Python <tt class="docutils literal"><span class="pre">Py_BuildValue()</span></tt> function. If
+there was an error then <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned and a Python exception is
+raised. If <em>iserr</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt> then the location it points to is set
+to a non-zero value. <em>format</em> is the string of format characters.</p>
+<p>If <em>format</em> begins and ends with parentheses then a tuple of objects is
+created. If <em>format</em> contains more than one format character then
+parentheses must be specified.</p>
+<p>In the following description the first letter is the format character, the
+entry in parentheses is the Python object type that the format character
+will create, and the entry in brackets are the types of the C/C++ values
+to be passed.</p>
+<dl class="last docutils">
+<dt><tt class="docutils literal"><span class="pre">a</span></tt> (string) [char *, int]</dt>
+<dd>Convert a C/C++ character array and its length to a Python string. If
+the array is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the length is ignored and the result is
+<tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">b</span></tt> (boolean) [int]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">int</span></tt> to a Python boolean.</dd>
+<dt><tt class="docutils literal"><span class="pre">c</span></tt> (string) [char]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">char</span></tt> to a Python string.</dd>
+<dt><tt class="docutils literal"><span class="pre">d</span></tt> (float) [double]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">double</span></tt> to a Python floating point number.</dd>
+<dt><tt class="docutils literal"><span class="pre">e</span></tt> (integer) [enum]</dt>
+<dd>Convert an anonymous C/C++ <tt class="docutils literal"><span class="pre">enum</span></tt> to a Python integer.</dd>
+<dt><tt class="docutils literal"><span class="pre">f</span></tt> (float) [float]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">float</span></tt> to a Python floating point number.</dd>
+<dt><tt class="docutils literal"><span class="pre">h</span></tt> (integer) [short]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">short</span></tt> to a Python integer.</dd>
+<dt><tt class="docutils literal"><span class="pre">i</span></tt> (integer) [int]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">int</span></tt> to a Python integer.</dd>
+<dt><tt class="docutils literal"><span class="pre">l</span></tt> (long) [long]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">long</span></tt> to a Python integer.</dd>
+<dt><tt class="docutils literal"><span class="pre">m</span></tt> (long) [unsigned long]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt> to a Python long.</dd>
+<dt><tt class="docutils literal"><span class="pre">n</span></tt> (long) [long long]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt> to a Python long.</dd>
+<dt><tt class="docutils literal"><span class="pre">o</span></tt> (long) [unsigned long long]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt> to a Python long.</dd>
+<dt><tt class="docutils literal"><span class="pre">s</span></tt> (string) [char *]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string to a Python string. If the
+string pointer is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the result is <tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">t</span></tt> (long) [unsigned short]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt> to a Python long.</dd>
+<dt><tt class="docutils literal"><span class="pre">u</span></tt> (long) [unsigned int]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt> to a Python long.</dd>
+<dt><tt class="docutils literal"><span class="pre">w</span></tt> (unicode) [wchar_t]</dt>
+<dd>Convert a C/C++ wide character to a Python unicode object.</dd>
+<dt><tt class="docutils literal"><span class="pre">x</span></tt> (unicode) [wchar_t *]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">L'\0'</span></tt> terminated wide character string to a Python
+unicode object. If the string pointer is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the result is
+<tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">A</span></tt> (unicode) [wchar_t *, int]</dt>
+<dd>Convert a C/C++ wide character array and its length to a Python unicode
+object. If the array is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the length is ignored and the
+result is <tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">B</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *, PyObject *]</dt>
+<dd>Convert a new C structure or a new C++ class instance to a Python class
+instance object. Ownership of the structure or instance is determined
+by the <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> and the instance has
+already been wrapped then the ownership is unchanged. If it is
+<tt class="docutils literal"><span class="pre">NULL</span></tt> or <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership will be with Python. Otherwise
+ownership will be with C/C++ and the instance associated with the
+<tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument. The Python class is influenced by any
+applicable <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code.</dd>
+<dt><tt class="docutils literal"><span class="pre">C</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *, PyObject *]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class
+instance object. If the structure or class instance has already been
+wrapped then the result is a new reference to the existing class
+instance object. Ownership of the structure or instance is determined
+by the <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> and the instance has
+already been wrapped then the ownership is unchanged. If it is
+<tt class="docutils literal"><span class="pre">NULL</span></tt> and the instance is newly wrapped then ownership will be with
+C/C++. If it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is transferred to Python
+via a call to <a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise ownership is transferred
+to C/C++ and the instance associated with the <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument
+via a call to <a class="reference" href="#siptransferto">sipTransferTo()</a>. The Python class is influenced by
+any applicable <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code.</dd>
+<dt><tt class="docutils literal"><span class="pre">D</span></tt> (object) [<em>type</em> *, const sipMappedType *, PyObject *]</dt>
+<dd>Convert a C structure or a C++ class instance wrapped as a mapped type
+to a Python object. Ownership of the structure or instance is
+determined by the <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the
+ownership is unchanged. If it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is
+transferred to Python via a call to <a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise
+ownership is transferred to C/C++ and the instance associated with the
+<tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument via a call to <a class="reference" href="#siptransferto">sipTransferTo()</a>.</dd>
+<dt><tt class="docutils literal"><span class="pre">E</span></tt> (wrapped enum) [enum, PyTypeObject *]</dt>
+<dd>Convert a named C/C++ <tt class="docutils literal"><span class="pre">enum</span></tt> to an instance of the corresponding
+Python named enum type.</dd>
+<dt><tt class="docutils literal"><span class="pre">M</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class
+instance object. If the structure or class instance has already been
+wrapped then the result is a new reference to the existing class
+instance object. If the instance has already been wrapped then the
+ownership is unchanged. If the instance is newly wrapped then
+ownership will be with C/C++. The Python class is influenced by any
+applicable <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code. This is deprecated from
+SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">N</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class
+instance object. This should not be used if the structure or class
+instance might already have been wrapped. Ownership of the structure
+or instance will be with Python. The Python class is influenced by
+any applicable <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code. This is deprecated
+from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">O</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class
+instance object. If the structure or class instance has already been
+wrapped then the result is a new reference to the existing class
+instance object. Ownership of the structure or instance will be with
+C/C++. This is deprecated from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">P</span></tt> (wrapped instance) [<em>type</em> *, sipWrapperType *]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class
+instance object. This should not be used if the structure or class
+instance might already have been wrapped. Ownership of the structure
+or instance will be with Python. This is deprecated from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">R</span></tt> (object) [PyObject *]</dt>
+<dd>The result is value passed without any conversions. The reference
+count is unaffected, i.e. a reference is taken.</dd>
+<dt><tt class="docutils literal"><span class="pre">S</span></tt> (object) [PyObject *]</dt>
+<dd>The result is value passed without any conversions. The reference
+count is incremented.</dd>
+<dt><tt class="docutils literal"><span class="pre">T</span></tt> (object) [void *, PyObject *(*)(void *cppptr)]</dt>
+<dd>Convert a C structure or a C++ class instance to a Python object using
+a convertor function. See <a class="reference" href="#generated-type-convertors">Generated Type Convertors</a>. This is
+deprecated from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">V</span></tt> (sip.voidptr) [void *]</dt>
+<dd>Convert a C/C++ <tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt> Python <tt class="docutils literal"><span class="pre">sip.voidptr</span></tt> object.</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id156" id="sipcallmethod" name="sipcallmethod">9.11&nbsp;&nbsp;&nbsp;sipCallMethod()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipCallMethod(int *iserr, PyObject *method, const char *format, ...)</dt>
+<dd><p class="first">This calls a Python method passing a tuple of arguments based on a format
+string and associated values in a similar way to the Python
+<tt class="docutils literal"><span class="pre">PyObject_CallObject()</span></tt> function. If there was an error then <tt class="docutils literal"><span class="pre">NULL</span></tt> is
+returned and a Python exception is raised. If <em>iserr</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt>
+then the location it points to is set to a non-zero value. <em>method</em> is the
+Python bound method to call. <em>format</em> is the string of format characters
+(see <a class="reference" href="#sipbuildresult">sipBuildResult()</a>).</p>
+<p class="last">This is normally called by handwritten code specified with the
+<a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a> directive with <em>method</em> being the supplied
+<tt class="docutils literal"><span class="pre">sipMethod</span></tt>.</p>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id157" id="sipcanconverttoinstance" name="sipcanconverttoinstance">9.12&nbsp;&nbsp;&nbsp;sipCanConvertToInstance()</a></h2>
+<dl class="docutils">
+<dt>int sipCanConvertToInstance(PyObject *obj, sipWrapperType *type, int flags)</dt>
+<dd><p class="first">This returns a non-zero value if a Python object can be converted to an
+instance of a C structure or C++ class. <em>obj</em> is the Python object.
+<em>type</em> is the generated type corresponding to the C/C++ type being checked.
+<em>flags</em> is any combination of the following values used to fine tune the
+check.</p>
+<blockquote class="last">
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">SIP_NOT_NONE</span></tt> causes the check to fail if <em>obj</em> is <tt class="docutils literal"><span class="pre">None</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">SIP_NO_CONVERTORS</span></tt> suppresses the use of of any
+<a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> for <em>type</em>.</li>
+</ul>
+</blockquote>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id158" id="sipcanconverttomappedtype" name="sipcanconverttomappedtype">9.13&nbsp;&nbsp;&nbsp;sipCanConvertToMappedType()</a></h2>
+<dl class="docutils">
+<dt>int sipCanConvertToMappedType(PyObject *obj, const sipMappedType *mt, int flags)</dt>
+<dd><p class="first">This returns a non-zero value if a Python object can be converted to an
+instance of a C structure or C++ class which has been implemented as a
+mapped type. <em>obj</em> is the Python object. <em>mt</em> is an opaque structure
+returned by <a class="reference" href="#sipfindmappedtype">sipFindMappedType()</a>. <em>flags</em> is any combination of the
+following values used to fine tune the check.</p>
+<blockquote class="last">
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">SIP_NOT_NONE</span></tt> causes the check to fail if <em>obj</em> is <tt class="docutils literal"><span class="pre">None</span></tt>.</li>
+</ul>
+</blockquote>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id159" id="sipclassname" name="sipclassname">9.14&nbsp;&nbsp;&nbsp;sipClassName()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipClassName(PyObject *obj)</dt>
+<dd>This returns the class name of a wrapped instance as a Python string. It
+comes with a reference.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id160" id="sipconnectrx" name="sipconnectrx">9.15&nbsp;&nbsp;&nbsp;sipConnectRx()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipConnectRx(PyObject *sender, const char *signal, PyObject *receiver, const char *slot, int type)</dt>
+<dd>This connects a signal to a signal or slot and returns <tt class="docutils literal"><span class="pre">Py_True</span></tt> if the
+signal was connected or <tt class="docutils literal"><span class="pre">Py_False</span></tt> if not. If there was some other
+error then a Python exception is raised and <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned. <em>sender</em>
+is the wrapped <tt class="docutils literal"><span class="pre">QObject</span></tt> derived instance that emits the signal.
+<em>signal</em> is the typed name of the signal. <em>receiver</em> is the wrapped
+<tt class="docutils literal"><span class="pre">QObject</span></tt> derived instance or Python callable that the signal is
+connected to. <em>slot</em> is the typed name of the slot, or <tt class="docutils literal"><span class="pre">NULL</span></tt> if
+<em>receiver</em> is a Python callable. <em>type</em> is the type of connection and is
+cast from Qt::ConnectionType. It is normally only used by PyQt to
+implement <tt class="docutils literal"><span class="pre">QObject.connect()</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id161" id="sipconvertfrominstance" name="sipconvertfrominstance">9.16&nbsp;&nbsp;&nbsp;sipConvertFromInstance()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipConvertFromInstance(void *cpp, sipWrapperType *type, PyObject *transferObj)</dt>
+<dd>Convert a C structure or a C++ class instance to a Python class instance
+object. <em>cpp</em> is the C/C++ instance. If the instance has already been
+wrapped then the result is a new reference to the existing instance object.
+<em>type</em> is the generated type corresponding to the C/C++ type.
+<em>transferObj</em> controls the ownership of the returned value. If the
+structure or class instance has already been wrapped then the result is a
+new reference to the existing class instance object. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> and
+the instance has already been wrapped then the ownership is unchanged. If
+it is <tt class="docutils literal"><span class="pre">NULL</span></tt> and the instance is newly wrapped then ownership will be
+with C/C++. If it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is transferred to Python
+via a call to <a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise ownership is transferred to
+C/C++ and the instance associated with <em>transferObj</em> via a call to
+<a class="reference" href="#siptransferto">sipTransferTo()</a>. The Python class is influenced by any applicable
+<a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id162" id="sipconvertfrommappedtype" name="sipconvertfrommappedtype">9.17&nbsp;&nbsp;&nbsp;sipConvertFromMappedType()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipConvertFromMappedType(void *cpp, const sipMappedType *mt, PyObject *transferObj)</dt>
+<dd>Convert a C structure or a C++ class instance wrapped as a mapped type to a
+Python object. <em>cpp</em> is the C/C++ instance. <em>mt</em> is the opaque structure
+returned by <a class="reference" href="#sipfindmappedtype">sipFindMappedType()</a>. <em>transferObj</em> controls any ownership
+changes to <em>obj</em>. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the ownership is unchanged. If
+it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is transferred to Python via a call to
+<a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise ownership is transferred to C/C++ and the
+instance associated with the <tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt> argument via a call to
+<a class="reference" href="#siptransferto">sipTransferTo()</a>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id163" id="sipconvertfromnamedenum" name="sipconvertfromnamedenum">9.18&nbsp;&nbsp;&nbsp;sipConvertFromNamedEnum()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipConvertFromNamedEnum(int eval, PyTypeObject *type)</dt>
+<dd>Convert a named C/C++ <tt class="docutils literal"><span class="pre">enum</span></tt> to an instance of the corresponding Python
+named enum type. <em>eval</em> is the enumerated value to convert. <em>type</em> is the
+generated Python type object (see <a class="reference" href="#generated-named-enum-type-objects">Generated Named Enum Type Objects</a>).</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id164" id="sipconvertfromnewinstance" name="sipconvertfromnewinstance">9.19&nbsp;&nbsp;&nbsp;sipConvertFromNewInstance()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipConvertFromNewInstance(void *cpp, sipWrapperType *type, PyObject *transferObj)</dt>
+<dd>Convert a new C structure or a new C++ class instance to a Python class
+instance object. <em>cpp</em> is the C/C++ instance. <em>type</em> is the generated
+type corresponding to the C/C++ type. <em>transferObj</em> controls the ownership
+of the returned value. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> or <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership
+will be with Python. Otherwise ownership will be with C/C++ and the
+instance associated with <em>transferObj</em>. The Python class is influenced by
+any applicable <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id165" id="sipconvertfromsequenceindex" name="sipconvertfromsequenceindex">9.20&nbsp;&nbsp;&nbsp;sipConvertFromSequenceIndex()</a></h2>
+<dl class="docutils">
+<dt>SIP_SSIZE_T sipConvertFromSequenceIndex(SIP_SSIZE_T idx, SIP_SSIZE_T len)</dt>
+<dd>This converts a Python sequence index (i.e. where a negative value refers
+to the offset from the end of the sequence) to a C/C++ array index. If the
+index was out of range then a negative value is returned and a Python
+exception raised. With versions of Python prior to v2.5 the result and the
+arguments have type <tt class="docutils literal"><span class="pre">int</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id166" id="sipconvertfromsliceobject" name="sipconvertfromsliceobject">9.21&nbsp;&nbsp;&nbsp;sipConvertFromSliceObject()</a></h2>
+<dl class="docutils">
+<dt>int sipConvertFromSliceObject(PyObject *slice, SIP_SSIZE_T length, SIP_SSIZE_T *start, SIP_SSIZE_T *stop, SIP_SSIZE_T *step, SIP_SSIZE_T *slicelength)</dt>
+<dd>This is a thin wrapper around the Python <tt class="docutils literal"><span class="pre">PySlice_GetIndicesEx()</span></tt>
+function provided to make it easier to write handwritten code that is
+compatible with SIP v3.x and versions of Python earlier that v2.3.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id167" id="sipconverttocpp" name="sipconverttocpp">9.22&nbsp;&nbsp;&nbsp;sipConvertToCpp()</a></h2>
+<dl class="docutils">
+<dt>void *sipConvertToCpp(PyObject *obj, sipWrapperType *type, int *iserr)</dt>
+<dd><p class="first">This function is deprecated from SIP v4.4. It is equivalent to:</p>
+<pre class="last literal-block">
+sipConvertToInstance(obj, type, NULL, SIP_NO_CONVERTORS, NULL, iserr);
+</pre>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id168" id="sipconverttoinstance" name="sipconverttoinstance">9.23&nbsp;&nbsp;&nbsp;sipConvertToInstance()</a></h2>
+<dl class="docutils">
+<dt>void *sipConvertToInstance(PyObject *obj, sipWrapperType *type, PyObject *transferObj, int flags, int *state, int *iserr)</dt>
+<dd><p class="first">This converts a Python object to an instance of a C structure or C++ class
+assuming that a previous call to <a class="reference" href="#sipcanconverttoinstance">sipCanConvertToInstance()</a> has been
+successful. <em>obj</em> is the Python object. <em>type</em> is the generated type
+corresponding to the C/C++ type returned. It may be any class in the
+object's class hierarchy. <em>transferObj</em> controls any ownership changes to
+<em>obj</em>. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt> then the ownership is unchanged. If it is
+<tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is transferred to Python via a call to
+<a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise ownership is transferred to C/C++ and
+<em>obj</em> associated with <em>transferObj</em> via a call to <a class="reference" href="#siptransferto">sipTransferTo()</a>.
+<em>flags</em> is any combination of the following values used to fine tune the
+check.</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">SIP_NOT_NONE</span></tt> causes the check to fail if <em>obj</em> is <tt class="docutils literal"><span class="pre">None</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">SIP_NO_CONVERTORS</span></tt> suppresses the use of of any
+<a class="reference" href="#converttotypecode">%ConvertToTypeCode</a> for <em>type</em>.</li>
+</ul>
+</blockquote>
+<p class="last">If <em>state</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt> then the location it points to is set to
+describe the state of the returned C/C++ instance and is the value returned
+by any <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a>. The calling code must then release the value
+at some point to prevent a memory leak by calling <a class="reference" href="#sipreleaseinstance">sipReleaseInstance()</a>.
+If there is an error then the location <em>iserr</em> points to is set to a
+non-zero value. If it was initially a non-zero value then the conversion
+isn't attempted in the first place. (This allows several calls to be made
+that share the same error flag so that it only needs to be tested once
+rather than after each call.)</p>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id169" id="sipconverttomappedtype" name="sipconverttomappedtype">9.24&nbsp;&nbsp;&nbsp;sipConvertToMappedType()</a></h2>
+<dl class="docutils">
+<dt>void *sipConvertToMappedType(PyObject *obj, const sipMappedType *mt, PyObject *transferObj, int flags, int *state, int *iserr)</dt>
+<dd><p class="first">This converts a Python object to an instance of a C structure or C++
+class that is implemented as a mapped type assuming that a previous call to
+<a class="reference" href="#sipcanconverttomappedtype">sipCanConvertToMappedType()</a> has been successful. <em>obj</em> is the Python
+object. <em>mt</em> is the opaque structure returned by <a class="reference" href="#sipfindmappedtype">sipFindMappedType()</a>.
+<em>transferObj</em> controls any ownership changes to <em>obj</em>. If it is <tt class="docutils literal"><span class="pre">NULL</span></tt>
+then the ownership is unchanged. If it is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then ownership is
+transferred to Python via a call to <a class="reference" href="#siptransferback">sipTransferBack()</a>. Otherwise
+ownership is transferred to C/C++ and <em>obj</em> associated with <em>transferObj</em>
+via a call to <a class="reference" href="#siptransferto">sipTransferTo()</a>. <em>flags</em> is any combination of the
+following values used to fine tune the check.</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">SIP_NOT_NONE</span></tt> causes the check to fail if <em>obj</em> is <tt class="docutils literal"><span class="pre">None</span></tt>.</li>
+</ul>
+</blockquote>
+<p class="last">If <em>state</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt> then the location it points to is set to
+describe the state of the returned C/C++ instance and is the value returned
+by any <a class="reference" href="#converttotypecode">%ConvertToTypeCode</a>. The calling code must then release the value
+at some point to prevent a memory leak by calling
+<a class="reference" href="#sipreleasemappedtype">sipReleaseMappedType()</a>. If there is an error then the location <em>iserr</em>
+points to is set to a non-zero value. If it was initially a non-zero value
+then the conversion isn't attempted in the first place. (This allows
+several calls to be made that share the same error flag so that it only
+needs to be tested once rather than after each call.)</p>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id170" id="sipdisconnectrx" name="sipdisconnectrx">9.25&nbsp;&nbsp;&nbsp;sipDisconnectRx()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipDisconnectRx(PyObject *sender, const char *signal, PyObject *receiver, const char *slot)</dt>
+<dd>This disconnects a signal from a signal or slot and returns <tt class="docutils literal"><span class="pre">Py_True</span></tt> if
+the signal was disconnected or <tt class="docutils literal"><span class="pre">Py_False</span></tt> if not. If there was some
+other error then a Python exception is raised and <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned.
+<em>sender</em> is the wrapped <tt class="docutils literal"><span class="pre">QObject</span></tt> derived instance that emits the signal.
+<em>signal</em> is the typed name of the signal. <em>receiver</em> is the wrapped
+<tt class="docutils literal"><span class="pre">QObject</span></tt> derived instance or Python callable that the signal is
+connected to. <em>slot</em> is the typed name of the slot, or <tt class="docutils literal"><span class="pre">NULL</span></tt> if
+<em>receiver</em> is a Python callable. It is normally only used by PyQt to
+implement <tt class="docutils literal"><span class="pre">QObject.disconnect()</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id171" id="sipemitsignal" name="sipemitsignal">9.26&nbsp;&nbsp;&nbsp;sipEmitSignal()</a></h2>
+<dl class="docutils">
+<dt>int sipEmitSignal(PyObject *txobj, const char *signal, PyObject *args)</dt>
+<dd>This emits a signal and returns zero if there was no error. If there was
+an error then a Python exception is raised and a negative value is
+returned. <em>txobj</em> is the wrapped <tt class="docutils literal"><span class="pre">QObject</span></tt> derived instance that emits
+the signal. <em>signal</em> is the typed name of the signal. <em>args</em> is a Python
+tuple of the signal arguments. It is normally only used by PyQt to
+implement <tt class="docutils literal"><span class="pre">QObject.emit()</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id172" id="sipexportsymbol" name="sipexportsymbol">9.27&nbsp;&nbsp;&nbsp;sipExportSymbol()</a></h2>
+<dl class="docutils">
+<dt>int sipExportSymbol(const char *name, void *sym)</dt>
+<dd>Python does not allow extension modules to directly access symbols in
+another extension module. This exports a symbol, referenced by a name,
+that can subsequently be imported, using <a class="reference" href="#sipimportsymbol">sipImportSymbol()</a>, by another
+module. <em>name</em> is the name of the symbol and <em>sym</em> is its value. Zero is
+returned if there was no error. A negative value is returned if <em>name</em> is
+already associated with a symbol or there was some other error.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id173" id="sipfindclass" name="sipfindclass">9.28&nbsp;&nbsp;&nbsp;sipFindClass()</a></h2>
+<dl class="docutils">
+<dt>sipWrapperType *sipFindClass(const char *type)</dt>
+<dd>This returns a pointer to the generated type corresponding to a C/C++ type.
+<em>type</em> is the C/C++ declaration of the type. <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned if the
+C/C++ type doesn't exist. The value of the pointer will not change and
+may be saved in a static cache.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id174" id="sipfindmappedtype" name="sipfindmappedtype">9.29&nbsp;&nbsp;&nbsp;sipFindMappedType()</a></h2>
+<dl class="docutils">
+<dt>const sipMappedType *sipFindMappedType(const char *type)</dt>
+<dd>This returns a pointer to an opaque structure describing a mapped type.
+<em>type</em> is the C/C++ declaration of the type. <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned if the
+mapped type doesn't exist. The value of the pointer will not change and
+may be saved in a static cache.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id175" id="sipfindnamedenum" name="sipfindnamedenum">9.30&nbsp;&nbsp;&nbsp;sipFindNamedEnum()</a></h2>
+<dl class="docutils">
+<dt>PyTypeObject *sipFindNamedEnum(const char *type)</dt>
+<dd>This returns a pointer to the generated type corresponding to a named C/C++
+enum. <em>type</em> is the C/C++ declaration of the enum. <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned
+if the named C/C++ enum doesn't exist. The value of the pointer will not
+change and may be saved in a static cache.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id176" id="sipforceconverttoinstance" name="sipforceconverttoinstance">9.31&nbsp;&nbsp;&nbsp;sipForceConvertToInstance()</a></h2>
+<dl class="docutils">
+<dt>void *sipForceConvertToInstance(PyObject *obj, sipWrapperType *type, PyObject *transferObj, int flags, int *state, int *iserr)</dt>
+<dd>This converts a Python object to an instance of a C structure or C++ class
+by calling <a class="reference" href="#sipcanconverttoinstance">sipCanConvertToInstance()</a> and, if it is successfull, calling
+<a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a>. See <a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a> for a full
+description of the arguments.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id177" id="sipforceconverttomappedtype" name="sipforceconverttomappedtype">9.32&nbsp;&nbsp;&nbsp;sipForceConvertToMappedType()</a></h2>
+<dl class="docutils">
+<dt>void *sipForceConvertToMappedType(PyObject *obj, const sipMappedType *mt, PyObject *transferObj, int flags, int *state, int *iserr)</dt>
+<dd>This converts a Python object to an instance of a C structure or C++ class
+which has been implemented as a mapped type by calling
+<a class="reference" href="#sipcanconverttomappedtype">sipCanConvertToMappedType()</a> and, if it is successfull, calling
+<a class="reference" href="#sipconverttomappedtype">sipConvertToMappedType()</a>. See <a class="reference" href="#sipconverttomappedtype">sipConvertToMappedType()</a> for a full
+description of the arguments.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id178" id="sipfree" name="sipfree">9.33&nbsp;&nbsp;&nbsp;sipFree()</a></h2>
+<dl class="docutils">
+<dt>void sipFree(void *mem)</dt>
+<dd>This returns an area of memory allocated by <a class="reference" href="#sipmalloc">sipMalloc()</a> to the heap.
+<em>mem</em> is a pointer to the area of memory.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id179" id="sipgetsender" name="sipgetsender">9.34&nbsp;&nbsp;&nbsp;sipGetSender()</a></h2>
+<dl class="docutils">
+<dt>const void *sipGetSender()</dt>
+<dd>This returns a pointer to the last <tt class="docutils literal"><span class="pre">QObject</span></tt> instance that emitted a Qt
+signal. It is normally only used by PyQt to implement
+<tt class="docutils literal"><span class="pre">QObject.sender()</span></tt>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id180" id="sipgetwrapper" name="sipgetwrapper">9.35&nbsp;&nbsp;&nbsp;sipGetWrapper()</a></h2>
+<dl class="docutils">
+<dt>PyObject *sipGetWrapper(void *cppptr, sipWrapperType *type)</dt>
+<dd>This returns a borrowed reference to the wrapped instance object for a C
+structure or C++ class instance. If the structure or class instance
+hasn't been wrapped then <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned (and no Python exception is
+raised). <em>cppptr</em> is the pointer to the structure or class instance.
+<em>type</em> is the generated type corresponding to the C/C++ type.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id181" id="sipimportsymbol" name="sipimportsymbol">9.36&nbsp;&nbsp;&nbsp;sipImportSymbol()</a></h2>
+<dl class="docutils">
+<dt>void *sipImportSymbol(const char *name)</dt>
+<dd>Python does not allow extension modules to directly access symbols in
+another extension module. This imports a symbol, referenced by a name,
+that has previously been exported, using <a class="reference" href="#sipexportsymbol">sipExportSymbol()</a>, by another
+module. <em>name</em> is the name of the symbol. The value of the symbol is
+returned if there was no error. <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned if there is no such
+symbol.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id182" id="sipinttypeclassmap" name="sipinttypeclassmap">9.37&nbsp;&nbsp;&nbsp;sipIntTypeClassMap</a></h2>
+<p>This C structure is used with <a class="reference" href="#sipmapinttoclass">sipMapIntToClass()</a> to define a mapping
+between integer based RTTI and <a class="reference" href="#generated-type-objects">generated type objects</a>. The structure
+elements are as follows.</p>
+<dl class="docutils">
+<dt>int typeInt</dt>
+<dd>The integer RTTI.</dd>
+<dt>sipWrapperType **pyType.</dt>
+<dd>A pointer to the corresponding Python type object.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id183" id="sipissubclassinstance" name="sipissubclassinstance">9.38&nbsp;&nbsp;&nbsp;sipIsSubClassInstance()</a></h2>
+<dl class="docutils">
+<dt>int sipIsSubClassInstance(PyObject *obj, sipWrapperType *type)</dt>
+<dd><p class="first">This function is deprecated from SIP v4.4. It is equivalent to:</p>
+<pre class="last literal-block">
+sipCanConvertToInstance(obj, type, SIP_NOT_NONE | SIP_NO_CONVERTORS);
+</pre>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id184" id="siplong-asunsignedlong" name="siplong-asunsignedlong">9.39&nbsp;&nbsp;&nbsp;sipLong_AsUnsignedLong()</a></h2>
+<dl class="docutils">
+<dt>unsigned long sipLong_AsUnsignedLong(PyObject *obj)</dt>
+<dd>This function is a thin wrapper around PyLong_AsUnsignedLong() that works
+around a bug in Python v2.3.x and earlier when converting integer objects.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id185" id="sipmalloc" name="sipmalloc">9.40&nbsp;&nbsp;&nbsp;sipMalloc()</a></h2>
+<dl class="docutils">
+<dt>void *sipMalloc(size_t nbytes)</dt>
+<dd>This allocates an area of memory of size <em>nytes</em> on the heap using the
+Python <tt class="docutils literal"><span class="pre">PyMem_Malloc()</span></tt> function. If there was an error then <tt class="docutils literal"><span class="pre">NULL</span></tt> is
+returned and a Python exception raised. See <a class="reference" href="#sipfree">sipFree()</a>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id186" id="sipmapinttoclass" name="sipmapinttoclass">9.41&nbsp;&nbsp;&nbsp;sipMapIntToClass()</a></h2>
+<dl class="docutils">
+<dt>sipWrapperType *sipMapIntToClass(int type, const sipIntTypeClassMap *map, int maplen)</dt>
+<dd>This is used in <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code as a convenient way of
+converting integer based RTTI to the corresponding Python type object.
+<em>type</em> is the RTTI. <em>map</em> is the table of known RTTI and the corresponding
+type objects (see <a class="reference" href="#sipinttypeclassmap">sipIntTypeClassMap</a>). The entries in the table must be
+sorted in ascending order of RTTI. <em>maplen</em> is the number of entries in
+the table. The corresponding Python type object is returned, or <tt class="docutils literal"><span class="pre">NULL</span></tt>
+if <em>type</em> wasn't in <em>map</em>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id187" id="sipmapstringtoclass" name="sipmapstringtoclass">9.42&nbsp;&nbsp;&nbsp;sipMapStringToClass()</a></h2>
+<dl class="docutils">
+<dt>sipWrapperType *sipMapStringToClass(char *type, const sipStringTypeClassMap *map, int maplen)</dt>
+<dd>This is used in <a class="reference" href="#converttosubclasscode">%ConvertToSubClassCode</a> code as a convenient way of
+converting <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string based RTTI to the corresponding
+Python type object. <em>type</em> is the RTTI. <em>map</em> is the table of known RTTI
+and the corresponding type objects (see <a class="reference" href="#sipstringtypeclassmap">sipStringTypeClassMap</a>). The
+entries in the table must be sorted in ascending order of RTTI. <em>maplen</em>
+is the number of entries in the table. The corresponding Python type
+object is returned, or <tt class="docutils literal"><span class="pre">NULL</span></tt> if <em>type</em> wasn't in <em>map</em>.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id188" id="sipparseresult" name="sipparseresult">9.43&nbsp;&nbsp;&nbsp;sipParseResult()</a></h2>
+<dl class="docutils">
+<dt>int sipParseResult(int *iserr, PyObject *method, PyObject *result, const char *format, ...)</dt>
+<dd><p class="first">This converts a Python object (usually returned by a method) to C/C++ based
+on a format string and associated values in a similar way to the Python
+<tt class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></tt> function. If there was an error then a negative
+value is returned and a Python exception is raised. If <em>iserr</em> is not
+<tt class="docutils literal"><span class="pre">NULL</span></tt> then the location it points to is set to a non-zero value.
+<em>method</em> is the Python bound method that returned the <em>result</em> object.
+<em>format</em> is the string of format characters.</p>
+<p>This is normally called by handwritten code specified with the
+<a class="reference" href="#virtualcatchercode">%VirtualCatcherCode</a> directive with <em>method</em> being the supplied
+<tt class="docutils literal"><span class="pre">sipMethod</span></tt> and <tt class="docutils literal"><span class="pre">result</span></tt> being the value returned by
+<a class="reference" href="#sipcallmethod">sipCallMethod()</a>.</p>
+<p>If <em>format</em> begins and ends with parentheses then <em>result</em> must be a Python
+tuple and the rest of <em>format</em> is applied to the tuple contents.</p>
+<p>In the following description the first letter is the format character, the
+entry in parentheses is the Python object type that the format character
+will convert, and the entry in brackets are the types of the C/C++ values
+to be passed.</p>
+<dl class="last docutils">
+<dt><tt class="docutils literal"><span class="pre">a</span></tt> (string) [char **, int *]</dt>
+<dd>Convert a Python string to a C/C++ character array and its length. If
+the Python object is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then the array and length are <tt class="docutils literal"><span class="pre">NULL</span></tt>
+and zero respectively.</dd>
+<dt><tt class="docutils literal"><span class="pre">b</span></tt> (integer) [bool *]</dt>
+<dd>Convert a Python integer to a C/C++ <tt class="docutils literal"><span class="pre">bool</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">c</span></tt> (string) [char *]</dt>
+<dd>Convert a Python string of length 1 to a C/C++ <tt class="docutils literal"><span class="pre">char</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">d</span></tt> (float) [double *]</dt>
+<dd>Convert a Python floating point number to a C/C++ <tt class="docutils literal"><span class="pre">double</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">e</span></tt> (integer) [enum *]</dt>
+<dd>Convert a Python integer to an anonymous C/C++ <tt class="docutils literal"><span class="pre">enum</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">f</span></tt> (float) [float *]</dt>
+<dd>Convert a Python floating point number to a C/C++ <tt class="docutils literal"><span class="pre">float</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">h</span></tt> (integer) [short *]</dt>
+<dd>Convert a Python integer to a C/C++ <tt class="docutils literal"><span class="pre">short</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">i</span></tt> (integer) [int *]</dt>
+<dd>Convert a Python integer to a C/C++ <tt class="docutils literal"><span class="pre">int</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">l</span></tt> (long) [long *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">long</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">m</span></tt> (long) [unsigned long *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">n</span></tt> (long) [long long *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">o</span></tt> (long) [unsigned long long *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">s</span></tt> (string) [char **]</dt>
+<dd>Convert a Python string to a C/C++ <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string. If the
+Python object is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then the string is <tt class="docutils literal"><span class="pre">NULL</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">t</span></tt> (long) [unsigned short *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">u</span></tt> (long) [unsigned int *]</dt>
+<dd>Convert a Python long to a C/C++ <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">w</span></tt> (unicode) [wchar_t *]</dt>
+<dd>Convert a Python unicode object of length 1 to a C/C++ wide character.</dd>
+<dt><tt class="docutils literal"><span class="pre">x</span></tt> (unicode) [wchar_t **]</dt>
+<dd>Convert a Python unicode object to a C/C++ <tt class="docutils literal"><span class="pre">L'\0'</span></tt> terminated wide
+character string. If the Python object is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then the string
+is <tt class="docutils literal"><span class="pre">NULL</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">A</span></tt> (unicode) [wchar_t **, int *]</dt>
+<dd>Convert a Python unicode object to a C/C++ wide character array and its
+length. If the Python object is <tt class="docutils literal"><span class="pre">Py_None</span></tt> then the array and length
+are <tt class="docutils literal"><span class="pre">NULL</span></tt> and zero respectively.</dd>
+<dt><tt class="docutils literal"><span class="pre">Cf</span></tt> (wrapped class) [sipWrapperType *, int *, void **]</dt>
+<dd><p class="first">Convert a Python object to a C structure or a C++ class instance and
+return its state as described in <a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a>. <tt class="docutils literal"><span class="pre">f</span></tt> is a
+combination of the following flags encoded as an ASCII character by
+adding <tt class="docutils literal"><span class="pre">0</span></tt> to the combined value:</p>
+<blockquote class="last">
+<p>0x01 disallows the conversion of <tt class="docutils literal"><span class="pre">Py_None</span></tt> to <tt class="docutils literal"><span class="pre">NULL</span></tt></p>
+<p>0x02 implements the <a class="reference" href="#factory">Factory</a> annotation</p>
+<dl class="docutils">
+<dt>0x04 suppresses the return of the state of the returned C/C++</dt>
+<dd>instance. Note that the <tt class="docutils literal"><span class="pre">int</span> <span class="pre">*</span></tt> used to return the state is
+not passed if this flag is specified.</dd>
+</dl>
+</blockquote>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">Df</span></tt> (mapped type) [const sipMappedType *, int *, void **]</dt>
+<dd><p class="first">Convert a Python object to a C structure or a C++ class instance
+implemented as a mapped type and return its state as described in
+<a class="reference" href="#sipconverttomappedtype">sipConvertToMappedType()</a>. <tt class="docutils literal"><span class="pre">f</span></tt> is a combination of the following
+flags encoded as an ASCII character by adding <tt class="docutils literal"><span class="pre">0</span></tt> to the combined
+value:</p>
+<blockquote class="last">
+<p>0x01 disallows the conversion of <tt class="docutils literal"><span class="pre">Py_None</span></tt> to <tt class="docutils literal"><span class="pre">NULL</span></tt></p>
+<p>0x02 implements the <a class="reference" href="#factory">Factory</a> annotation</p>
+<dl class="docutils">
+<dt>0x04 suppresses the return of the state of the returned C/C++</dt>
+<dd>instance. Note that the <tt class="docutils literal"><span class="pre">int</span> <span class="pre">*</span></tt> used to return the state is
+not passed if this flag is specified.</dd>
+</dl>
+</blockquote>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">E</span></tt> (wrapped enum) [PyTypeObject *, enum *]</dt>
+<dd>Convert a Python named enum type to the corresponding C/C++ <tt class="docutils literal"><span class="pre">enum</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">L</span></tt> (object) [<em>type</em> *(*)(PyObject *obj, int *iserr), void **]</dt>
+<dd>Convert a Python object to a C structure or a C++ class instance using
+a convertor function. See <a class="reference" href="#generated-type-convertors">Generated Type Convertors</a>. This is
+deprecated from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">M</span></tt> (object) [<em>type</em> *(*)(PyObject *obj, int *iserr), void **]</dt>
+<dd>Convert a Python object to a C structure or a C++ class instance using
+a convertor function. If the structure or class instance pointer is
+<tt class="docutils literal"><span class="pre">NULL</span></tt> then return an error. See <a class="reference" href="#generated-type-convertors">Generated Type Convertors</a>. This
+is deprecated from SIP v4.4.</dd>
+<dt><tt class="docutils literal"><span class="pre">N</span></tt> (object) [PyTypeObject *, PyObject **]</dt>
+<dd>A Python object is checked to see if it is a certain type and then
+returned without any conversions. The reference count is incremented.
+The Python object may be <tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">O</span></tt> (object) [PyObject **]</dt>
+<dd>A Python object is returned without any conversions. The reference
+count is incremented.</dd>
+<dt><tt class="docutils literal"><span class="pre">T</span></tt> (object) [PyTypeObject *, PyObject **]</dt>
+<dd>A Python object is checked to see if it is a certain type and then
+returned without any conversions. The reference count is incremented.
+The Python object may not be <tt class="docutils literal"><span class="pre">Py_None</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">V</span></tt> (sip.voidptr) [void *]</dt>
+<dd>Convert a Python <tt class="docutils literal"><span class="pre">sip.voidptr</span></tt> object to a C/C++ <tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">Z</span></tt> (object) []</dt>
+<dd>Check that a Python object is <tt class="docutils literal"><span class="pre">Py_None</span></tt>. No value is returned.</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id189" id="sipreleaseinstance" name="sipreleaseinstance">9.44&nbsp;&nbsp;&nbsp;sipReleaseInstance()</a></h2>
+<dl class="docutils">
+<dt>void sipReleaseInstance(void *cpp, sipWrapperType *type, int state)</dt>
+<dd>This destroys a wrapped C/C++ instance if it was a temporary instance. It
+is called after a call to either <a class="reference" href="#sipconverttoinstance">sipConvertToInstance()</a> or
+<a class="reference" href="#sipforceconverttoinstance">sipForceConvertToInstance()</a>. <em>cpp</em> is the wrapped C/C++ instance.
+<em>type</em> is the generated type corresponding to <em>cpp</em>. <em>state</em> describes the
+state of the instance.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id190" id="sipreleasemappedtype" name="sipreleasemappedtype">9.45&nbsp;&nbsp;&nbsp;sipReleaseMappedType()</a></h2>
+<dl class="docutils">
+<dt>void sipReleaseMappedType(void *cpp, const sipMappedType *mt, int state)</dt>
+<dd>This destroys a wrapped C/C++ mapped type if it was a temporary instance.
+It is called after a call to either <a class="reference" href="#sipconverttomappedtype">sipConvertToMappedType()</a> or
+<a class="reference" href="#sipforceconverttomappedtype">sipForceConvertToMappedType()</a>. <em>cpp</em> is the wrapped C/C++ instance.
+<em>mt</em> is the opaque structure returned by <a class="reference" href="#sipfindmappedtype">sipFindMappedType()</a>. <em>state</em>
+describes the state of the instance.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id191" id="sipstringtypeclassmap" name="sipstringtypeclassmap">9.46&nbsp;&nbsp;&nbsp;sipStringTypeClassMap</a></h2>
+<p>This C structure is used with <a class="reference" href="#sipmapstringtoclass">sipMapStringToClass()</a> to define a mapping
+between <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string based RTTI and <a class="reference" href="#generated-type-objects">generated type objects</a>.
+The structure elements are as follows.</p>
+<dl class="docutils">
+<dt>char *typeString</dt>
+<dd>The <tt class="docutils literal"><span class="pre">'\0'</span></tt> terminated string RTTI.</dd>
+<dt>sipWrapperType **pyType.</dt>
+<dd>A pointer to the corresponding Python type object.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id192" id="siptransfer" name="siptransfer">9.47&nbsp;&nbsp;&nbsp;sipTransfer()</a></h2>
+<dl class="docutils">
+<dt>void sipTransfer(PyObject *obj, int tocpp)</dt>
+<dd><p class="first">This function is deprecated from SIP v4.3. If <em>tocpp</em> is non-zero then the
+equivalent call is:</p>
+<pre class="literal-block">
+sipTransferTo(obj, obj);
+</pre>
+<p>If <em>tocpp</em> is zero then the equivalent call is:</p>
+<pre class="last literal-block">
+sipTransferBack(obj);
+</pre>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id193" id="siptransferback" name="siptransferback">9.48&nbsp;&nbsp;&nbsp;sipTransferBack()</a></h2>
+<dl class="docutils">
+<dt>void sipTransferBack(PyObject *obj)</dt>
+<dd>This transfers ownership of a Python wrapped instance to Python (see
+<a class="reference" href="#ownership-of-objects">Ownership of Objects</a>). <em>obj</em> is the wrapped instance. In addition,
+any association of the instance with regard to the cyclic garbage
+collector with another instance is removed.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id194" id="siptransferto" name="siptransferto">9.49&nbsp;&nbsp;&nbsp;sipTransferTo()</a></h2>
+<dl class="docutils">
+<dt>void sipTransferTo(PyObject *obj, PyObject *owner)</dt>
+<dd>This transfers ownership of a Python wrapped instance to C++ (see
+<a class="reference" href="#ownership-of-objects">Ownership of Objects</a>). <em>obj</em> is the wrapped instance. <em>owner</em> is an
+optional wrapped instance that <em>obj</em> becomes associated with with regard
+to the cyclic garbage collector. If <em>owner</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt> then no such
+association is made. If <em>owner</em> is the same value as <em>obj</em> then any
+reference cycles involving <em>obj</em> can never be detected or broken by the
+cyclic garbage collector. Responsibility for calling the C++ instance's
+destructor is always transfered to C++.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id195" id="sipwrapper" name="sipwrapper">9.50&nbsp;&nbsp;&nbsp;sipWrapper</a></h2>
+<p>This is a C structure that represents a Python wrapped instance. It is an
+extension of the Python <tt class="docutils literal"><span class="pre">PyObject</span></tt> structure and so may be safely cast to
+<tt class="docutils literal"><span class="pre">PyObject</span></tt>. It includes a member called <tt class="docutils literal"><span class="pre">user</span></tt> which is of type
+<tt class="docutils literal"><span class="pre">PyObject</span> <span class="pre">*</span></tt>. This can be used for any purpose by handwritten code and will
+automatically be garbage collected at the appropriate time.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id196" id="sipwrapper-check" name="sipwrapper-check">9.51&nbsp;&nbsp;&nbsp;sipWrapper_Check()</a></h2>
+<dl class="docutils">
+<dt>int sipWrapper_Check(PyObject *obj)</dt>
+<dd>This returns a non-zero value if a Python object is a wrapped instance.
+<em>obj</em> is the Python object.</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id197" id="sipwrappertype" name="sipwrappertype">9.52&nbsp;&nbsp;&nbsp;sipWrapperType</a></h2>
+<p>This is a C structure that represents a SIP generated type object. It is an
+extension of the Python <tt class="docutils literal"><span class="pre">PyTypeObject</span></tt> structure (which is itself an
+extension of the Python <tt class="docutils literal"><span class="pre">PyObject</span></tt> structure) and so may be safely cast to
+<tt class="docutils literal"><span class="pre">PyTypeObject</span></tt> (and <tt class="docutils literal"><span class="pre">PyObject</span></tt>).</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id198" id="generated-type-convertors" name="generated-type-convertors">9.53&nbsp;&nbsp;&nbsp;Generated Type Convertors</a></h2>
+<p>These functions are deprecated from SIP v4.4.</p>
+<p>SIP generates functions for all types being wrapped (including mapped types
+defined with the <a class="reference" href="#mappedtype">%MappedType</a> directive) that convert a Python object to the
+C structure or C++ class instance. The name of this convertor is the name of
+the structure or class prefixed by <tt class="docutils literal"><span class="pre">sipForceConvertTo_</span></tt>.</p>
+<dl class="docutils">
+<dt>void *sipForceConvertTo_*class*(PyObject *obj, int *iserr)</dt>
+<dd><em>obj</em> is the Python object to convert. If <em>obj</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt> or the
+location pointed to by <em>iserr</em> is non-zero then the conversion is not
+attempted and <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned. If there was an error then the
+location pointed to by <em>iserr</em> is set to a non-zero value, a Python
+exception is raised, and <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned.</dd>
+</dl>
+<p>SIP also generates functions for mapped types that convert a C structure or
+C++ class instance to a Python object. The name of this convertor is the name
+of the structure or class prefixed by <tt class="docutils literal"><span class="pre">sipConvertFrom_</span></tt>.</p>
+<dl class="docutils">
+<dt>PyObject *sipConvertFrom_*class*(void *cppptr)</dt>
+<dd><em>cppptr</em> is a pointer to the C structure or C++ class instance to convert.
+If there was an error then <tt class="docutils literal"><span class="pre">NULL</span></tt> is returned and a Python exception
+raised.</dd>
+</dl>
+<p>The convertor functions of all imported types are available to handwritten
+code.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id199" id="generated-type-objects" name="generated-type-objects">9.54&nbsp;&nbsp;&nbsp;Generated Type Objects</a></h2>
+<p>SIP generates a type object for each C structure or C++ class being wrapped.
+These are <a class="reference" href="#sipwrappertype">sipWrapperType</a> structures and are used extensively by the SIP API.</p>
+<p>These objects are named with the structure or class name prefixed by
+<tt class="docutils literal"><span class="pre">sipClass_</span></tt>. For example, the type object for class <tt class="docutils literal"><span class="pre">Klass</span></tt> is
+<tt class="docutils literal"><span class="pre">sipClass_Klass</span></tt>.</p>
+<p>The type objects of all imported classes are available to handwritten code.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id200" id="generated-named-enum-type-objects" name="generated-named-enum-type-objects">9.55&nbsp;&nbsp;&nbsp;Generated Named Enum Type Objects</a></h2>
+<p>SIP generates a type object for each named enum being wrapped. These are
+PyTypeObject structures. (Anonymous enums are wrapped as Python integers.)</p>
+<p>These objects are named with the fully qualified enum name (i.e. including any
+enclosing scope) prefixed by <tt class="docutils literal"><span class="pre">sipEnum_</span></tt>. For example, the type object for
+enum <tt class="docutils literal"><span class="pre">Enum</span></tt> defined in class <tt class="docutils literal"><span class="pre">Klass</span></tt> is <tt class="docutils literal"><span class="pre">sipEnum_Klass_Enum</span></tt>.</p>
+<p>The type objects of all imported named enums are available to handwritten code.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id201" id="generated-derived-classes" name="generated-derived-classes">9.56&nbsp;&nbsp;&nbsp;Generated Derived Classes</a></h2>
+<p>For most C++ classes being wrapped SIP generates a derived class with the same
+name prefixed by <tt class="docutils literal"><span class="pre">sip</span></tt>. For example, the derived class for class <tt class="docutils literal"><span class="pre">Klass</span></tt>
+is <tt class="docutils literal"><span class="pre">sipKlass</span></tt>.</p>
+<p>If a C++ class doesn't have any virtual or protected methods in it or any of
+it's super-class hierarchy, or does not emit any Qt signals, then a derived
+class is not generated.</p>
+<p>Most of the time handwritten code should ignore the derived classes. The only
+exception is that handwritten constructor code specified using the
+<a class="reference" href="#methodcode">%MethodCode</a> directive should call the derived class's constructor (which
+has the same C++ signature) rather then the wrapped class's constructor.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id202" id="generated-exception-objects" name="generated-exception-objects">9.57&nbsp;&nbsp;&nbsp;Generated Exception Objects</a></h2>
+<p>SIP generates a Python object for each exception defined with the <cite>%Exception_</cite>
+directive.</p>
+<p>These objects are named with the fully qualified exception name (i.e. including
+any enclosing scope) prefixed by <tt class="docutils literal"><span class="pre">sipException_</span></tt>. For example, the type
+object for enum <tt class="docutils literal"><span class="pre">Except</span></tt> defined in class <tt class="docutils literal"><span class="pre">Klass</span></tt> is
+<tt class="docutils literal"><span class="pre">sipException_Klass_Except</span></tt>.</p>
+<p>The objects of all imported exceptions are available to handwritten code.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id203" id="using-the-sip-module-in-applications" name="using-the-sip-module-in-applications">10&nbsp;&nbsp;&nbsp;Using the SIP Module in Applications</a></h1>
+<p>The main purpose of the SIP module is to provide functionality common to all
+SIP generated bindings. It is loaded automatically and most of the time you
+will completely ignore it. However, it does expose some functionality that can
+be used by applications.</p>
+<dl class="docutils">
+<dt>cast(obj, type)</dt>
+<dd>This does the Python equivalent of casting a C++ instance to one of its
+sub or super-class types. <em>obj</em> is the Python object and <em>type</em> is the
+type. A new Python object is returned that wraps the same C++ instance as
+<em>obj</em>, but has the type <em>type</em>.</dd>
+<dt>delete(obj)</dt>
+<dd>For C++ instances this calls the C++ destructor. For C structures it
+returns the structure's memory to the heap. <em>obj</em> is the Python object.</dd>
+<dt>isdeleted(obj)</dt>
+<dd>This returns True if the C++ instance or C structure has been destroyed or
+returned to the heap. <em>obj</em> is the Python object.</dd>
+<dt>setdeleted(obj)</dt>
+<dd>This marks the C++ instance or C structure as having been destroyed or
+returned to the heap so that future references to it raise an exception
+rather than cause a program crash. Normally SIP handles such things
+automatically, but there are circumstances where this isn't possible.
+<em>obj</em> is the Python object.</dd>
+<dt>settracemask(mask)</dt>
+<dd><p class="first">If the bindings have been created with SIP's <tt class="docutils literal"><span class="pre">-r</span></tt> command line option
+then the generated code will produce debugging statements that trace the
+execution of the code. (It is particularly useful when trying to
+understand the operation of a C++ library's virtual function calls.)</p>
+<p>Debugging statements are generated at the following points:</p>
+<ul class="simple">
+<li>in a C++ virtual function (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0001</span></tt>)</li>
+<li>in a C++ constructor (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0002</span></tt>)</li>
+<li>in a C++ destructor (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0004</span></tt>)</li>
+<li>in a Python type's __init__ method (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0008</span></tt>)</li>
+<li>in a Python type's __del__ method (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0010</span></tt>)</li>
+<li>in a Python type's ordinary method (<em>mask</em> is <tt class="docutils literal"><span class="pre">0x0020</span></tt>).</li>
+</ul>
+<p class="last">By default the trace mask is zero and all debugging statements are
+disabled.</p>
+</dd>
+<dt>SIP_VERSION</dt>
+<dd>This is a Python integer object that represents the SIP version number as
+a 3 part hexadecimal number (e.g. v4.0.0 is represented as <tt class="docutils literal"><span class="pre">0x040000</span></tt>).
+It was first implemented in SIP v4.2.</dd>
+<dt>SIP_VERSION_STR</dt>
+<dd>This is a Python string object that defines the SIP version number as
+represented as a string. For development snapshots it will start with
+<tt class="docutils literal"><span class="pre">snapshot-</span></tt>. It was first implemented in SIP v4.3.</dd>
+<dt>transfer(obj, direction)</dt>
+<dd><p class="first">This function is deprecated from SIP v4.3. If <em>direction</em> is non-zero then
+the equivalent call is:</p>
+<pre class="literal-block">
+sip.transferto(obj, None)
+</pre>
+<p>If <em>direction</em> is zero then the equivalent call is:</p>
+<pre class="last literal-block">
+sip.transferback(obj)
+</pre>
+</dd>
+<dt>transferback(obj)</dt>
+<dd>This function is a wrapper around <a class="reference" href="#siptransferback">sipTransferBack()</a>.</dd>
+<dt>transferto(obj, owner)</dt>
+<dd>This function is a wrapper around <a class="reference" href="#siptransferto">sipTransferTo()</a>.</dd>
+<dt>unwrapinstance(obj)</dt>
+<dd>Return the address, as a number, of the wrapped C/C++ structure or class
+instance <em>obj</em>.</dd>
+<dt>voidptr</dt>
+<dd><p class="first">This is the type object for the type SIP uses to represent a C/C++
+<tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt>. The type constructor takes a single argument that must either
+be another <tt class="docutils literal"><span class="pre">voidptr</span></tt>, <tt class="docutils literal"><span class="pre">None</span></tt>, a Python CObject, or an integer. The
+type has the following methods:</p>
+<dl class="last docutils">
+<dt>__int__()</dt>
+<dd>This returns the pointer as an integer.</dd>
+<dt>__hex__()</dt>
+<dd>This returns the pointer as a hexadecimal string.</dd>
+<dt>ascobject()</dt>
+<dd>This returns the pointer as a Python CObject.</dd>
+<dt>asstring(nbytes)</dt>
+<dd>This returns a copy of the first <em>nbytes</em> of memory at the pointer as a
+Python string.</dd>
+</dl>
+</dd>
+<dt>wrapinstance(addr, type)</dt>
+<dd>A C/C++ structure or class instance is wrapped and the Python object
+created is returned. If the instance has already been wrapped then a new
+reference to the existing object is returned. <em>addr</em> is the address of
+the instance represented as a number. <em>type</em> is the type of the object
+(e.g. <tt class="docutils literal"><span class="pre">qt.QWidget</span></tt>).</dd>
+<dt>wrapper</dt>
+<dd>This is the type object of the base type of all instances wrapped by SIP.</dd>
+<dt>wrappertype</dt>
+<dd>This is the type object of the metatype of the <tt class="docutils literal"><span class="pre">wrapper</span></tt> type.</dd>
+</dl>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id204" id="the-sip-build-system" name="the-sip-build-system">11&nbsp;&nbsp;&nbsp;The SIP Build System</a></h1>
+<p>The purpose of the build system is to make it easy for you to write
+configuration scripts in Python for your own bindings. The build system takes
+care of the details of particular combinations of platform and compiler. It
+supports over 50 different platform/compiler combinations.</p>
+<p>The build system is implemented as a pure Python module called <tt class="docutils literal"><span class="pre">sipconfig</span></tt>
+that contains a number of classes and functions. Using this module you can
+write bespoke configuration scripts (e.g. PyQt's <tt class="docutils literal"><span class="pre">configure.py</span></tt>) or use it
+with other Python based build systems (e.g.
+<a class="reference" href="http://www.python.org/sigs/distutils-sig/distutils.html">Distutils</a> and
+<a class="reference" href="http://www.scons.org">SCons</a>).</p>
+<p>An important feature of SIP is the ability to generate bindings that are built
+on top of existing bindings. For example, both
+<a class="reference" href="http://www.riverbankcomputing.co.uk/pykde/">PyKDE</a> and
+<a class="reference" href="http://pyqwt.sourceforge.net/">PyQwt</a> are built on top of PyQt but all three
+packages are maintained by different developers. To make this easier PyQt
+includes its own configuration module, <tt class="docutils literal"><span class="pre">pyqtconfig</span></tt>, that contains additional
+classes intended to be used by the configuration scripts of bindings built on
+top of PyQt. The SIP build system includes facilities that do a lot of the
+work of creating these additional configuration modules.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id205" id="sipconfig-functions" name="sipconfig-functions">11.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">sipconfig</span></tt> Functions</a></h2>
+<dl class="docutils">
+<dt>create_config_module(module, template, content, macros=None)</dt>
+<dd><p class="first">This creates a configuration module (e.g. <tt class="docutils literal"><span class="pre">pyqtconfig</span></tt>) from a template
+file and a string.</p>
+<p><tt class="docutils literal"><span class="pre">module</span></tt> is the name of the configuration module file to create.</p>
+<p><tt class="docutils literal"><span class="pre">template</span></tt> is the name of the template file.</p>
+<p><tt class="docutils literal"><span class="pre">content</span></tt> is a string which replaces every occurence of the pattern
+<tt class="docutils literal"><span class="pre">&#64;SIP_CONFIGURATION&#64;</span></tt> in the template file. The content string is
+usually created from a Python dictionary using
+<tt class="docutils literal"><span class="pre">sipconfig.create_content()</span></tt>. <tt class="docutils literal"><span class="pre">content</span></tt> may also be a dictionary, in
+which case <tt class="docutils literal"><span class="pre">sipconfig.create_content()</span></tt> is automatically called to
+convert it to a string.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">macros</span></tt> is an optional dictionary of platform specific build macros. It
+is only used if <tt class="docutils literal"><span class="pre">sipconfig.create_content()</span></tt> is called automatically to
+convert a <tt class="docutils literal"><span class="pre">content</span></tt> dictionary to a string.</p>
+</dd>
+<dt>create_content(dict, macros=None)</dt>
+<dd><p class="first">This converts a Python dictionary to a string that can be parsed by the
+Python interpreter and converted back to an equivalent dictionary. It is
+typically used to generate the content string for
+<tt class="docutils literal"><span class="pre">sipconfig.create_config_module()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">dict</span></tt> is the Python dictionary to convert.</p>
+<p><tt class="docutils literal"><span class="pre">macros</span></tt> is the optional dictionary of platform specific build macros.</p>
+<p class="last">Returns the dictionary as a string.</p>
+</dd>
+<dt>create_wrapper(script, wrapper, gui=0)</dt>
+<dd><p class="first">This creates a platform dependent executable wrapper around a Python
+script.</p>
+<p><tt class="docutils literal"><span class="pre">script</span></tt> is the full pathname of the script.</p>
+<p><tt class="docutils literal"><span class="pre">wrapper</span></tt> is the pathname of the wrapper to create.</p>
+<p><tt class="docutils literal"><span class="pre">gui</span></tt> is non-zero if a GUI enabled version of the interpreter should be
+used on platforms that require it.</p>
+<p class="last">Returns the platform specific name of the wrapper.</p>
+</dd>
+<dt>error(msg)</dt>
+<dd><p class="first">This displays an error message on <tt class="docutils literal"><span class="pre">stderr</span></tt> and calls <tt class="docutils literal"><span class="pre">sys.exit()</span></tt> with
+a value of 1.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">msg</span></tt> is the text of the message and should not include any newline
+characters.</p>
+</dd>
+<dt>format(msg, leftmargin=0, rightmargin=78)</dt>
+<dd><p class="first">This formats a message by inserting newline characters at appropriate
+places.</p>
+<p><tt class="docutils literal"><span class="pre">msg</span></tt> is the text of the message and should not include any newline
+characters.</p>
+<p><tt class="docutils literal"><span class="pre">leftmargin</span></tt> is the optional position of the left margin.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">rightmargin</span></tt> is the optional position of the right margin.</p>
+</dd>
+<dt>inform(msg)</dt>
+<dd><p class="first">This displays an information message on <tt class="docutils literal"><span class="pre">stdout</span></tt>.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">msg</span></tt> is the text of the message and should not include any newline
+characters.</p>
+</dd>
+<dt>parse_build_macros(filename, names, overrides=None, properties=None)</dt>
+<dd><p class="first">This parses a qmake compatible file of build system macros and converts it
+to a dictionary. A macro is a name/value pair. The dictionary is returned
+or None if any of the overrides was invalid.</p>
+<p><tt class="docutils literal"><span class="pre">filename</span></tt> is the name of the file to parse.</p>
+<p><tt class="docutils literal"><span class="pre">names</span></tt> is a list of the macro names to extract from the file.</p>
+<p><tt class="docutils literal"><span class="pre">overrides</span></tt> is an optional list of macro names and values that modify
+those found in the file. They are of the form <em>name=value</em> (in which case
+the value replaces the value found in the file) or <em>name+=value</em> (in which
+case the value is appended to the value found in the file).</p>
+<p class="last"><tt class="docutils literal"><span class="pre">properties</span></tt> is an optional dictionary of property name and values that
+are used to resolve any expressions of the form <tt class="docutils literal"><span class="pre">$[name]</span></tt> in the file.</p>
+</dd>
+<dt>read_version(filename, description, numdefine=None, strdefine=None)</dt>
+<dd><p class="first">This extracts version information for a package from a file, usually a C or
+C++ header file. The version information must each be specified as a
+<tt class="docutils literal"><span class="pre">#define</span></tt> of a numeric (hexadecimal or decimal) value and/or a string
+value.</p>
+<p><tt class="docutils literal"><span class="pre">filename</span></tt> is the name of the file to read.</p>
+<p><tt class="docutils literal"><span class="pre">description</span></tt> is a descriptive name of the package used in error
+messages.</p>
+<p><tt class="docutils literal"><span class="pre">numdefine</span></tt> is the optional name of the <tt class="docutils literal"><span class="pre">#define</span></tt> of the version as a
+number. If it is <tt class="docutils literal"><span class="pre">None</span></tt> then the numeric version is ignored.</p>
+<p><tt class="docutils literal"><span class="pre">strdefine</span></tt> is the optional name of the <tt class="docutils literal"><span class="pre">#define</span></tt> of the version as a
+string. If it is <tt class="docutils literal"><span class="pre">None</span></tt> then the string version is ignored.</p>
+<p class="last">Returns a tuple of the numeric and string versions. <tt class="docutils literal"><span class="pre">sipconfig.error()</span></tt>
+is called if either were required but could not be found.</p>
+</dd>
+<dt>version_to_sip_tag(version, tags, description)</dt>
+<dd><p class="first">This converts a version number to a SIP version tag. SIP uses the
+<a class="reference" href="#timeline">%Timeline</a> directive to define the chronology of the different versions
+of the C/C++ library being wrapped. Typically it is not necessary to
+define a version tag for every version of the library, but only for those
+versions that affect the library's API as SIP sees it.</p>
+<p><tt class="docutils literal"><span class="pre">version</span></tt> is the numeric version number of the C/C++ library being
+wrapped. If it is negative then the latest version is assumed. (This is
+typically useful if a snapshot is indicated by a negative version number.)</p>
+<p><tt class="docutils literal"><span class="pre">tags</span></tt> is the dictionary of SIP version tags keyed by the corresponding
+C/C++ library version number. The tag used is the one with the smallest
+key (i.e. earliest version) that is greater than <tt class="docutils literal"><span class="pre">version</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">description</span></tt> is a descriptive name of the C/C++ library used in error
+messages.</p>
+<p class="last">Returns the SIP version tag. <tt class="docutils literal"><span class="pre">sipconfig.error()</span></tt> is called if the C/C++
+library version number did not correspond to a SIP version tag.</p>
+</dd>
+<dt>version_to_string(v)</dt>
+<dd><p class="first">This converts a 3 part version number encoded as a hexadecimal value to a
+string.</p>
+<p><tt class="docutils literal"><span class="pre">v</span></tt> is the version number.</p>
+<p class="last">Returns a string.</p>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id206" id="sipconfig-classes" name="sipconfig-classes">11.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">sipconfig</span></tt> Classes</a></h2>
+<dl class="docutils">
+<dt>Configuration</dt>
+<dd><p class="first">This class encapsulates configuration values that can be accessed as
+instance objects. A sub-class may provide a dictionary of additional
+configuration values in its constructor the elements of which will have
+precedence over the super-class's values.</p>
+<p>The following configuration values are provided:</p>
+<blockquote>
+<dl class="docutils">
+<dt>default_bin_dir</dt>
+<dd>The name of the directory where executables should be installed by
+default.</dd>
+<dt>default_mod_dir</dt>
+<dd>The name of the directory where SIP generated modules should be
+installed by default.</dd>
+<dt>default_sip_dir</dt>
+<dd>The name of the base directory where the <tt class="docutils literal"><span class="pre">.sip</span></tt> files for SIP
+generated modules should be installed by default. A sub-directory
+with the same name as the module should be created and its <tt class="docutils literal"><span class="pre">.sip</span></tt>
+files should be installed in the sub-directory. The <tt class="docutils literal"><span class="pre">.sip</span></tt>
+files only need to be installed if you might want to build other
+bindings based on them.</dd>
+<dt>platform</dt>
+<dd>The name of the platform/compiler for which the build system has
+been configured for.</dd>
+<dt>py_conf_inc_dir</dt>
+<dd>The name of the directory containing the <tt class="docutils literal"><span class="pre">pyconfig.h</span></tt> header
+file.</dd>
+<dt>py_inc_dir</dt>
+<dd>The name of the directory containing the <tt class="docutils literal"><span class="pre">Python.h</span></tt> header file.</dd>
+<dt>py_lib_dir</dt>
+<dd>The name of the directory containing the Python interpreter
+library.</dd>
+<dt>py_version</dt>
+<dd>The Python version as a 3 part hexadecimal number (e.g. v2.3.3 is
+represented as <tt class="docutils literal"><span class="pre">0x020303</span></tt>).</dd>
+<dt>sip_bin</dt>
+<dd>The full pathname of the SIP executable.</dd>
+<dt>sip_config_args</dt>
+<dd>The command line passed to <tt class="docutils literal"><span class="pre">configure.py</span></tt> when SIP was
+configured.</dd>
+<dt>sip_inc_dir</dt>
+<dd>The name of the directory containing the <tt class="docutils literal"><span class="pre">sip.h</span></tt> header file.</dd>
+<dt>sip_mod_dir</dt>
+<dd>The name of the directory containing the SIP module.</dd>
+<dt>sip_version</dt>
+<dd>The SIP version as a 3 part hexadecimal number (e.g. v4.0.0 is
+represented as <tt class="docutils literal"><span class="pre">0x040000</span></tt>).</dd>
+<dt>sip_version_str</dt>
+<dd>The SIP version as a string. For development snapshots it will
+start with <tt class="docutils literal"><span class="pre">snapshot-</span></tt>.</dd>
+<dt>universal</dt>
+<dd>The name of the MacOS/X SDK used when creating universal binaries.</dd>
+</dl>
+</blockquote>
+<dl class="last docutils">
+<dt>__init__(self, sub_cfg=None)</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">sub_cfg</span></tt> is an optional list of sub-class configurations. It should
+only be used by the <tt class="docutils literal"><span class="pre">__init__()</span></tt> method of a sub-class to append its
+own dictionary of configuration values before passing the list to its
+super-class.</p>
+</dd>
+<dt>build_macros(self)</dt>
+<dd>Return the dictionary of platform specific build macros.</dd>
+<dt>set_build_macros(self, macros)</dt>
+<dd>Set the dictionary of platform specific build macros to be use when
+generating Makefiles. Normally there is no need to change the default
+macros.</dd>
+</dl>
+</dd>
+<dt>Makefile</dt>
+<dd><p class="first">This class encapsulates a Makefile. It is intended to be sub-classed to
+generate Makefiles for particular purposes. It handles all platform and
+compiler specific flags, but allows them to be adjusted to suit the
+requirements of a particular module or program. These are defined using a
+number of macros which can be accessed as instance objects.</p>
+<p>The following instance objects are provided to help in fine tuning the
+generated Makefile:</p>
+<blockquote>
+<dl class="docutils">
+<dt>chkdir</dt>
+<dd>A string that will check for the existence of a directory.</dd>
+<dt>config</dt>
+<dd>A reference to the <tt class="docutils literal"><span class="pre">configuration</span></tt> argument that was passed to
+the constructor.</dd>
+<dt>console</dt>
+<dd>A reference to the <tt class="docutils literal"><span class="pre">console</span></tt> argument that was passed to the
+constructor.</dd>
+<dt>copy</dt>
+<dd>A string that will copy a file.</dd>
+<dt>extra_cflags</dt>
+<dd>A list of additional flags passed to the C compiler.</dd>
+<dt>extra_cxxflags</dt>
+<dd>A list of additional flags passed to the C++ compiler.</dd>
+<dt>extra_defines</dt>
+<dd>A list of additional macro names passed to the C/C++ preprocessor.</dd>
+<dt>extra_include_dirs</dt>
+<dd>A list of additional include directories passed to the C/C++
+preprocessor.</dd>
+<dt>extra_lflags</dt>
+<dd>A list of additional flags passed to the linker.</dd>
+<dt>extra_lib_dirs</dt>
+<dd>A list of additional library directories passed to the linker.</dd>
+<dt>extra_libs</dt>
+<dd>A list of additional libraries passed to the linker. The names of
+the libraries must be in platform neutral form (i.e. without any
+platform specific prefixes, version numbers or extensions).</dd>
+<dt>generator</dt>
+<dd>A string that defines the platform specific style of Makefile. The
+only supported values are <tt class="docutils literal"><span class="pre">UNIX</span></tt> and something else that is not
+<tt class="docutils literal"><span class="pre">UNIX</span></tt>.</dd>
+<dt>mkdir</dt>
+<dd>A string that will create a directory.</dd>
+<dt>rm</dt>
+<dd>A string that will remove a file.</dd>
+</dl>
+</blockquote>
+<dl class="last docutils">
+<dt>__init__(self, configuration, console=0, qt=0, opengl=0, python=0, threaded=0, warnings=None, debug=0, dir=None, makefile=&quot;Makefile&quot;, installs=None, universal='')</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p><tt class="docutils literal"><span class="pre">configuration</span></tt> is the current configuration and is an instance of
+the <tt class="docutils literal"><span class="pre">Configuration</span></tt> class or a sub-class.</p>
+<p><tt class="docutils literal"><span class="pre">console</span></tt> is set if the target is a console (rather than GUI) target.
+This only affects Windows and is ignored on other platforms.</p>
+<p><tt class="docutils literal"><span class="pre">qt</span></tt> is set if the target uses Qt. For Qt v4 a list of Qt libraries
+may be specified and a simple non-zero value implies QtCore and QtGui.</p>
+<p><tt class="docutils literal"><span class="pre">opengl</span></tt> is set if the target uses OpenGL.</p>
+<p><tt class="docutils literal"><span class="pre">python</span></tt> is set if the target uses Python.h.</p>
+<p><tt class="docutils literal"><span class="pre">threaded</span></tt> is set if the target requires thread support. It is set
+automatically if the target uses Qt and Qt has thread support enabled.</p>
+<p><tt class="docutils literal"><span class="pre">warnings</span></tt> is set if compiler warning messages should be enabled.
+The default of <tt class="docutils literal"><span class="pre">None</span></tt> means that warnings are enabled for SIP v4.x
+and disabled for SIP v3.x.</p>
+<p><tt class="docutils literal"><span class="pre">debug</span></tt> is set if debugging symbols should be generated.</p>
+<p><tt class="docutils literal"><span class="pre">dir</span></tt> is the name of the directory where build files are read from
+and Makefiles are written to. The default of <tt class="docutils literal"><span class="pre">None</span></tt> means the
+current directory is used.</p>
+<p><tt class="docutils literal"><span class="pre">makefile</span></tt> is the name of the generated Makefile.</p>
+<p><tt class="docutils literal"><span class="pre">installs</span></tt> is a list of extra install targets. Each element is a two
+part list, the first of which is the source and the second is the
+destination. If the source is another list then it is a list of source
+files and the destination is a directory.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">universal</span></tt> is the name of the SDK if universal binaries are to be
+created under MacOS/X.</p>
+</dd>
+<dt>clean_build_file_objects(self, mfile, build)</dt>
+<dd><p class="first">This generates the Makefile commands that will remove any files
+generated during the build of the default target.</p>
+<p><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">build</span></tt> is the dictionary created from parsing the build file.</p>
+</dd>
+<dt>finalise(self)</dt>
+<dd>This is called just before the Makefile is generated to ensure that it
+is fully configured. It must be reimplemented by a sub-class.</dd>
+<dt>generate(self)</dt>
+<dd>This generates the Makefile.</dd>
+<dt>generate_macros_and_rules(self, mfile)</dt>
+<dd><p class="first">This is the default implementation of the Makefile macros and rules
+generation.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+</dd>
+<dt>generate_target_clean(self, mfile)</dt>
+<dd><p class="first">This is the default implementation of the Makefile clean target
+generation.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+</dd>
+<dt>generate_target_default(self, mfile)</dt>
+<dd><p class="first">This is the default implementation of the Makefile default target
+generation.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+</dd>
+<dt>generate_target_install(self, mfile)</dt>
+<dd><p class="first">This is the default implementation of the Makefile install target
+generation.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+</dd>
+<dt>install_file(self, mfile, src, dst, strip=0)</dt>
+<dd><p class="first">This generates the Makefile commands to install one or more files to a
+directory.</p>
+<p><tt class="docutils literal"><span class="pre">mfile</span></tt> is the Python file object of the Makefile.</p>
+<p><tt class="docutils literal"><span class="pre">src</span></tt> is the name of a single file to install or a list of a number
+of files to install.</p>
+<p><tt class="docutils literal"><span class="pre">dst</span></tt> is the name of the destination directory.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">strip</span></tt> is set if the files should be stripped of unneeded symbols
+after having been installed.</p>
+</dd>
+<dt>optional_list(self, name)</dt>
+<dd><p class="first">This returns an optional Makefile macro as a list.</p>
+<p><tt class="docutils literal"><span class="pre">name</span></tt> is the name of the macro.</p>
+<p class="last">Returns the macro as a list.</p>
+</dd>
+<dt>optional_string(self, name, default=&quot;&quot;)</dt>
+<dd><p class="first">This returns an optional Makefile macro as a string.</p>
+<p><tt class="docutils literal"><span class="pre">name</span></tt> is the name of the macro.</p>
+<p><tt class="docutils literal"><span class="pre">default</span></tt> is the optional default value of the macro.</p>
+<p class="last">Returns the macro as a string.</p>
+</dd>
+<dt>parse_build_file(self, filename)</dt>
+<dd><p class="first">This parses a build file (created with the <tt class="docutils literal"><span class="pre">-b</span></tt> SIP command line
+option) and converts it to a dictionary. It can also validate an
+existing dictionary created through other means.</p>
+<p><tt class="docutils literal"><span class="pre">filename</span></tt> is the name of the build file, or is a dictionary to be
+validated. A valid dictionary will contain the name of the target to
+build (excluding any platform specific extension) keyed by <tt class="docutils literal"><span class="pre">target</span></tt>;
+the names of all source files keyed by <tt class="docutils literal"><span class="pre">sources</span></tt>; and, optionally,
+the names of all header files keyed by <tt class="docutils literal"><span class="pre">headers</span></tt>.</p>
+<p class="last">Returns a dictionary corresponding to the parsed build file.</p>
+</dd>
+<dt>platform_lib(self, clib, framework=0)</dt>
+<dd><p class="first">This converts a library name to a platform specific form.</p>
+<p><tt class="docutils literal"><span class="pre">clib</span></tt> is the name of the library in cannonical form.</p>
+<p><tt class="docutils literal"><span class="pre">framework</span></tt> is set if the library is implemented as a MacOS
+framework.</p>
+<p class="last">Return the platform specific name.</p>
+</dd>
+<dt>ready(self)</dt>
+<dd>This is called to ensure that the Makefile is fully configured. It is
+normally called automatically when needed.</dd>
+<dt>required_string(self, name)</dt>
+<dd><p class="first">This returns a required Makefile macro as a string.</p>
+<p><tt class="docutils literal"><span class="pre">name</span></tt> is the name of the macro.</p>
+<p class="last">Returns the macro as a string. An exception is raised if the macro
+does not exist or has an empty value.</p>
+</dd>
+</dl>
+</dd>
+<dt>ModuleMakefile(Makefile)</dt>
+<dd><p class="first">This class encapsulates a Makefile to build a generic Python extension
+module.</p>
+<dl class="last docutils">
+<dt>__init__(self, configuration, build_file, install_dir=None, static=0, console=0, opengl=0, threaded=0, warnings=None, debug=0, dir=None, makefile=&quot;Makefile&quot;, installs=None, strip=1, export_all=0, universal='')</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p><tt class="docutils literal"><span class="pre">configuration</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">build_file</span></tt> is the name of the build file. Build files are
+generated using the <tt class="docutils literal"><span class="pre">-b</span></tt> SIP command line option.</p>
+<p><tt class="docutils literal"><span class="pre">install_dir</span></tt> is the name of the directory where the module will be
+optionally installed.</p>
+<p><tt class="docutils literal"><span class="pre">static</span></tt> is set if the module should be built as a static library
+(see <a class="reference" href="#builtin-modules-and-custom-interpreters">Builtin Modules and Custom Interpreters</a>).</p>
+<p><tt class="docutils literal"><span class="pre">console</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">qt</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">opengl</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">threaded</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">warnings</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">debug</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">dir</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">makefile</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">installs</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">strip</span></tt> is set if the module should be stripped of unneeded symbols
+after installation. It is ignored if either <tt class="docutils literal"><span class="pre">debug</span></tt> or <tt class="docutils literal"><span class="pre">static</span></tt> is
+set, or if the platform doesn't support it.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">export_all</span></tt> is set if all of the module's symbols should be exported
+rather than just the module's initialisation function. Exporting all
+symbols increases the size of the module and slows down module load
+times but may avoid problems with modules that use C++ exceptions. All
+symbols are exported if either <tt class="docutils literal"><span class="pre">debug</span></tt> or <tt class="docutils literal"><span class="pre">static</span></tt> is set, or if
+the platform doesn't support it.</p>
+</dd>
+<dt>finalise(self)</dt>
+<dd>This is a reimplementation of <tt class="docutils literal"><span class="pre">sipconfig.Makefile.finalise()</span></tt>.</dd>
+<dt>generate_macros_and_rules(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_macros_and_rules()</span></tt>.</dd>
+<dt>generate_target_clean(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_clean()</span></tt>.</dd>
+<dt>generate_target_default(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_default()</span></tt>.</dd>
+<dt>generate_target_install(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_install()</span></tt>.</dd>
+<dt>module_as_lib(self, mname)</dt>
+<dd><p class="first">This returns the name of a SIP v3.x module for when it is used as a
+library to be linked against. An exception will be raised if it is
+used with SIP v4.x modules.</p>
+<p><tt class="docutils literal"><span class="pre">mname</span></tt> is the name of the module.</p>
+<p class="last">Returns the corresponding library name.</p>
+</dd>
+</dl>
+</dd>
+<dt>ParentMakefile(Makefile)</dt>
+<dd><p class="first">This class encapsulates a Makefile that sits above a number of other
+Makefiles in sub-directories.</p>
+<dl class="last docutils">
+<dt>__init__(self, configuration, subdirs, dir=None, makefile=&quot;Makefile&quot;, installs=None)</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p><tt class="docutils literal"><span class="pre">configuration</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">subdirs</span></tt> is the sequence of sub-directories.</p>
+<p><tt class="docutils literal"><span class="pre">dir</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">makefile</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">installs</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+</dd>
+<dt>generate_macros_and_rules(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_macros_and_rules()</span></tt>.</dd>
+<dt>generate_target_clean(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_clean()</span></tt>.</dd>
+<dt>generate_target_default(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_default()</span></tt>.</dd>
+<dt>generate_target_install(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_install()</span></tt>.</dd>
+</dl>
+</dd>
+<dt>ProgramMakefile(Makefile)</dt>
+<dd><p class="first">This class encapsulates a Makefile to build an executable program.</p>
+<dl class="last docutils">
+<dt>__init__(self, configuration, build_file=None, install_dir=None, console=0, qt=0, opengl=0, python=0, threaded=0, warnings=None, debug=0, dir=None, makefile=&quot;Makefile&quot;, installs=None, universal='')</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p><tt class="docutils literal"><span class="pre">configuration</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">build_file</span></tt> is the name of the optional build file. Build files are
+generated using the <tt class="docutils literal"><span class="pre">-b</span></tt> SIP command line option.</p>
+<p><tt class="docutils literal"><span class="pre">install_dir</span></tt> is the name of the directory where the executable
+program will be optionally installed.</p>
+<p><tt class="docutils literal"><span class="pre">console</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">qt</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">opengl</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">python</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">threaded</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">warnings</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">debug</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">dir</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">makefile</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">installs</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+</dd>
+<dt>build_command(self, source)</dt>
+<dd><p class="first">This creates a single command line that will create an executable
+program from a single source file.</p>
+<p><tt class="docutils literal"><span class="pre">source</span></tt> is the name of the source file.</p>
+<p class="last">Returns a tuple of the name of the executable that will be created and
+the command line.</p>
+</dd>
+<dt>finalise(self)</dt>
+<dd>This is a reimplementation of <tt class="docutils literal"><span class="pre">sipconfig.Makefile.finalise()</span></tt>.</dd>
+<dt>generate_macros_and_rules(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_macros_and_rules()</span></tt>.</dd>
+<dt>generate_target_clean(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_clean()</span></tt>.</dd>
+<dt>generate_target_default(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_default()</span></tt>.</dd>
+<dt>generate_target_install(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_install()</span></tt>.</dd>
+</dl>
+</dd>
+<dt>PythonModuleMakefile(Makefile)</dt>
+<dd><p class="first">This class encapsulates a Makefile that installs a pure Python module.</p>
+<dl class="last docutils">
+<dt>__init__(self, configuration, dstdir, srcdir=None, dir=None, makefile=&quot;Makefile&quot;, installs=None)</dt>
+<dd><p class="first">Initialise the instance.</p>
+<p><tt class="docutils literal"><span class="pre">configuration</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">dstdir</span></tt> is the name of the directory in which the module's Python
+code will be installed.</p>
+<p><tt class="docutils literal"><span class="pre">srcdir</span></tt> is the name of the directory (relative to <tt class="docutils literal"><span class="pre">dir</span></tt>)
+containing the module's Python code. It defaults to the same
+directory.</p>
+<p><tt class="docutils literal"><span class="pre">dir</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">makefile</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+<p class="last"><tt class="docutils literal"><span class="pre">installs</span></tt> - see <tt class="docutils literal"><span class="pre">sipconfig.Makefile.__init__()</span></tt>.</p>
+</dd>
+<dt>generate_macros_and_rules(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_macros_and_rules()</span></tt>.</dd>
+<dt>generate_target_install(self, mfile)</dt>
+<dd>This is a reimplementation of
+<tt class="docutils literal"><span class="pre">sipconfig.Makefile.generate_target_install()</span></tt>.</dd>
+</dl>
+</dd>
+<dt>SIPModuleMakefile(ModuleMakefile)</dt>
+<dd><p class="first">This class encapsulates a Makefile to build a SIP generated Python
+extension module.</p>
+<dl class="last docutils">
+<dt>finalise(self)</dt>
+<dd>This is a reimplementation of <tt class="docutils literal"><span class="pre">sipconfig.Makefile.finalise()</span></tt>.</dd>
+</dl>
+</dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id207" id="building-your-extension-with-distutils" name="building-your-extension-with-distutils">12&nbsp;&nbsp;&nbsp;Building Your Extension with distutils</a></h1>
+<p>To build the example in <a class="reference" href="#a-simple-c-example">A Simple C++ Example</a> using distutils, it is
+sufficient to create a standard <tt class="docutils literal"><span class="pre">setup.py</span></tt>, listing <tt class="docutils literal"><span class="pre">word.sip</span></tt> among the
+files to build, and hook-up SIP into distutils:</p>
+<pre class="literal-block">
+from distutils.core import setup, Extension
+import sipdistutils
+
+setup(
+ name = 'word',
+ versione = '1.0',
+ ext_modules=[
+ Extension(&quot;word&quot;, [&quot;word.sip&quot;, &quot;word.cpp&quot;]),
+ ],
+
+ cmdclass = {'build_ext': sipdistutils.build_ext}
+)
+</pre>
+<p>As we can see, the above is a normal distutils setup script, with just a
+special line which is needed so that SIP can see and process <tt class="docutils literal"><span class="pre">word.sip</span></tt>.
+Then, running <tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">build</span></tt> will build our extension module.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id208" id="builtin-modules-and-custom-interpreters" name="builtin-modules-and-custom-interpreters">13&nbsp;&nbsp;&nbsp;Builtin Modules and Custom Interpreters</a></h1>
+<p>Sometimes you want to create a custom Python interpreter with some modules
+built in to the interpreter itself rather than being dynamically loaded. To
+do this the module must be created as a static library and linked with a
+custom stub and the normal Python library.</p>
+<p>To build the SIP module as a static library you must pass the <tt class="docutils literal"><span class="pre">-k</span></tt> command
+line option to <tt class="docutils literal"><span class="pre">configure.py</span></tt>. You should then build and install SIP as
+normal. (Note that, because the module is now a static library, you will not
+be able to import it.)</p>
+<p>To build a module you have created for your own library you must modify your
+own configuration script to pass a non-zero value as the <tt class="docutils literal"><span class="pre">static</span></tt> argument
+of the <tt class="docutils literal"><span class="pre">__init__()</span></tt> method of the <tt class="docutils literal"><span class="pre">ModuleMakefile</span></tt> class (or any derived
+class you have created). Normally you would make this configurable using a
+command line option in the same way that SIP's <tt class="docutils literal"><span class="pre">configure.py</span></tt> handles it.</p>
+<p>The next stage is to create a custom stub and a Makefile. The SIP distribution
+contains a directory called <tt class="docutils literal"><span class="pre">custom</span></tt> which contains example stubs and a
+Python script that will create a correct Makefile. Note that, if your copy of
+SIP was part of a standard Linux distribution, the <tt class="docutils literal"><span class="pre">custom</span></tt> directory may
+not be installed on your system.</p>
+<p>The <tt class="docutils literal"><span class="pre">custom</span></tt> directory contains the following files. They are provided as
+examples - each needs to be modified according to your particular
+requirements.</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">mkcustom.py</span></tt> is a Python script that will create a Makefile which is
+then used to build the custom interpreter. Comments in the file describe
+how it should be modified.</li>
+<li><tt class="docutils literal"><span class="pre">custom.c</span></tt> is a stub for a custom interpreter on Linux/UNIX. It
+should also be used for a custom console interpreter on Windows (i.e.
+like <tt class="docutils literal"><span class="pre">python.exe</span></tt>). Comments in the file describe how it should be
+modified.</li>
+<li><tt class="docutils literal"><span class="pre">customw.c</span></tt> is a stub for a custom GUI interpreter on Windows (i.e.
+like <tt class="docutils literal"><span class="pre">pythonw.exe</span></tt>). Comments in the file describe how it should be
+modified.</li>
+</ul>
+</blockquote>
+<p>Note that this technique does not restrict how the interpreter can be used.
+For example, it still allows users to write their own applications that can
+import your builtin modules. If you want to prevent users from doing that,
+perhaps to protect a proprietary API, then take a look at the
+<a class="reference" href="http://www.riverbankcomputing.co.uk/vendorid/">VendorID</a> package.</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/python/sip/doc/sipref.txt b/python/sip/doc/sipref.txt
new file mode 100644
index 00000000..4e14f79e
--- /dev/null
+++ b/python/sip/doc/sipref.txt
@@ -0,0 +1,5353 @@
+=====================================================================
+ SIP - A Tool for Generating Python Bindings for C and C++ Libraries
+=====================================================================
+
+-----------------
+ Reference Guide
+-----------------
+
+:Contact: info@riverbankcomputing.co.uk
+:Version: 4.6
+:Copyright: Copyright (c) 2007 Riverbank Computing Limited
+
+.. contents::
+.. section-numbering::
+
+
+Introduction
+============
+
+This is the reference guide for SIP 4.6. SIP is a tool for
+automatically generating `Python <http://www.python.org>`__ bindings for C and
+C++ libraries. SIP was originally developed in 1998 for
+`PyQt <http://www.riverbankcomputing.co.uk/pyqt/>`__ - the Python bindings for
+the Qt GUI toolkit - but is suitable for generating bindings for any C or C++
+library.
+
+This version of SIP generates bindings for Python v2.3 or later.
+
+There are many other similar tools available. One of the original such tools
+is `SWIG <http://www.swig.org>`__ and, in fact, SIP is so called because it
+started out as a small SWIG. Unlike SWIG, SIP is specifically designed for
+bringing together Python and C/C++ and goes to great lengths to make the
+integration as tight as possible.
+
+The homepage for SIP is http://www.riverbankcomputing.co.uk/sip/. Here you
+will always find the latest stable version, current development snapshots, and
+the latest version of this documentation.
+
+
+License
+-------
+
+SIP is licensed under the same terms as Python itself. SIP places no
+restrictions on the license you may apply to the bindings you create.
+
+
+Features
+--------
+
+SIP, and the bindings it produces, have the following features.
+
+ - bindings are fast to load and minimise memory consumption especially when
+ only a small sub-set of a large library is being used
+
+ - automatic conversion between standard Python and C/C++ data types
+
+ - overloading of functions and methods with different argument signatures
+
+ - access to a C++ class's protected methods
+
+ - the ability to define a Python class that is a sub-class of a C++ class,
+ including abstract C++ classes
+
+ - Python sub-classes can implement the ``__dtor__(self)`` method which
+ will be called from the C++ class's virtual destructor
+
+ - support for ordinary C++ functions, class methods, static class methods,
+ virtual class methods and abstract class methods
+
+ - the ability to re-implement C++ virtual and abstract methods in Python
+
+ - support for global and class variables
+
+ - support for global and class operators
+
+ - support for C++ namespaces
+
+ - support for C++ templates
+
+ - support for C++ exceptions and wrapping them as Python exceptions
+
+ - the ability to define mappings between C++ classes and similar Python
+ data types that are automatically invoked
+
+ - the ability to automatically exploit any available run time type
+ information to ensure that the class of a Python instance object matches
+ the class of the corresponding C++ instance
+
+ - full support of the Python global interpreter lock, including the ability
+ to specify that a C++ function of method may block, therefore allowing
+ the lock to be released and other Python threads to run
+
+ - support for the concept of ownership of a C++ instance (i.e. what part of
+ the code is responsible for calling the instance's destructor) and how
+ the ownership may change during the execution of an application
+
+ - the ability to generate bindings for a C++ class library that itself is
+ built on another C++ class library which also has had bindings generated
+ so that the different bindings integrate and share code properly
+
+ - a sophisticated versioning system that allows the full lifetime of a C++
+ class library, including any platform specific or optional features, to
+ be described in a single set of specification files
+
+ - the ability to include documentation in the specification files which can
+ be extracted and subsequently processed by external tools
+
+ - the ability to include copyright notices and licensing information in the
+ specification files that is automatically included in all generated
+ source code
+
+ - a build system, written in Python, that you can extend to configure,
+ compile and install your own bindings without worrying about platform
+ specific issues
+
+ - support for building your extensions using distutils
+
+ - SIP, and the bindings it produces, runs under UNIX, Linux, Windows and
+ MacOS/X
+
+
+SIP Components
+--------------
+
+SIP comprises a number of different components.
+
+ - The SIP code generator (``sip`` or ``sip.exe``). This processes ``.sip``
+ specification files and generates C or C++ bindings. It is covered in
+ detail in `Using SIP`_.
+
+ - The SIP header file (``sip.h``). This contains definitions and data
+ structures needed by the generated C and C++ code.
+
+ - The SIP module (``sip.so`` or ``sip.pyd``). This is a Python extension
+ module that is imported automatically by SIP generated bindings and
+ provides them with some common utility functions. See also `Using the
+ SIP Module in Applications`_.
+
+ - The SIP build system (``sipconfig.py``). This is a pure Python module
+ that is created when SIP is configured and encapsulates all the necessary
+ information about your system including relevant directory names,
+ compiler and linker flags, and version numbers. It also includes several
+ Python classes and functions which help you write configuration scripts
+ for your own bindings. It is covered in detail in `The SIP Build
+ System`_.
+
+ - The SIP distutils extension (``sipdistutils.py``). This is a distutils
+ extension that can be used to build your extension modules using
+ distutils and is an alternative to writing configuration scripts with the
+ SIP build system. This can be as simple as adding your .sip files to the
+ list of files needed to build the extension module. It is covered in
+ detail in `Building Your Extension with distutils`_.
+
+
+Qt Support
+----------
+
+SIP has specific support for the creation of bindings based on Trolltech's Qt
+toolkit.
+
+The SIP code generator understands the signal/slot type safe callback mechanism
+that Qt uses to connect objects together. This allows applications to define
+new Python signals, and allows any Python callable object to be used as a slot.
+
+SIP itself does not require Qt to be installed.
+
+
+Potential Incompatibilities with Earlier Versions
+=================================================
+
+SIP v4.4
+--------
+
+ - The ``SIP_BUILD`` C preprocessor symbol has been removed.
+
+ - `sipConvertToCpp()`_, `sipIsSubClassInstance()`_ and the old `Generated
+ Type Convertors`_ have been deprecated. The functions
+ `sipCanConvertToInstance()`_, `sipConvertToInstance()`_,
+ `sipForceConvertToInstance()`_, `sipConvertFromInstance()`_,
+ `sipConvertFromNewInstance()`_, `sipCanConvertToMappedType()`_,
+ `sipConvertToMappedType()`_, `sipForceConvertToMappedType()`_ and
+ `sipConvertFromMappedType()`_ should be used instead. Handwritten
+ `%ConvertFromTypeCode`_ and `%ConvertToTypeCode`_ now has the
+ responsibility for using these to implement the ``Transfer`` and
+ ``TransferBack`` annotations.
+
+
+Installing SIP
+==============
+
+Downloading SIP
+---------------
+
+You can get the latest release of the SIP source code from
+http://www.riverbankcomputing.co.uk/sip/download.php.
+
+SIP is also included with all of the major Linux distributions. However, it
+may be a version or two out of date.
+
+You may also find more up to date pre-compiled binaries on
+`SourceForge <http://sourceforge.net/project/showfiles.php?group_id=61057>`_.
+
+
+Configuring SIP
+---------------
+
+After unpacking the source package (either a ``.tar.gz`` or a ``.zip`` file
+depending on your platform) you should then check for any ``README`` files
+that relate to your platform.
+
+Next you need to configure SIP by executing the ``configure.py`` script. For
+example::
+
+ python configure.py
+
+This assumes that the Python interpreter is on your path. Something like the
+following may be appropriate on Windows::
+
+ c:\python25\python configure.py
+
+If you have multiple versions of Python installed then make sure you use the
+interpreter for which you wish SIP to generate bindings for.
+
+The full set of command line options is:
+
+-h Display a help message.
+-a Export all symbols in any SIP generated module and the SIP module
+ itself. This was the default behaviour of SIP prior to v4.2.
+ Normally only a module's inititialisation function is exported. This
+ option is deprecated as the ``ModuleMakefile`` class of `The SIP Build
+ System`_ allows this to be specified on a per module basis.
+-b dir The SIP code generator will be installed in the directory ``dir``.
+-d dir The SIP module will be installed in the directory ``dir``.
+-e dir The SIP header file will be installed in the directory ``dir``.
+-k The SIP module will be built as a static library. This is useful when
+ building the SIP module as a Python builtin (see
+ `Builtin Modules and Custom Interpreters`_).
+-n The SIP code generator and module will be built as universal binaries
+ under MacOS/X.
+-p plat Explicitly specify the platform/compiler to be used by the build
+ system, otherwise a platform specific default will be used. The
+ ``-h`` option will display all the supported platform/compilers and
+ the default.
+-u The SIP module will be built with debugging symbols.
+-v dir By default ``.sip`` files will be installed in the directory ``dir``.
+
+The configure.py script takes many other options that allows the build system
+to be finely tuned. These are of the form ``name=value`` or ``name+=value``.
+The ``-h`` option will display each supported ``name``, although not all are
+applicable to all platforms.
+
+The ``name=value`` form means that ``value`` will replace the existing value of
+``name``.
+
+The ``name+=value`` form means that ``value`` will be appended to the existing
+value of ``name``.
+
+For example, the following will disable support for C++ exceptions (and so
+reduce the size of module binaries) when used with GCC::
+
+ python configure.py CXXFLAGS+=-fno-exceptions
+
+A pure Python module called ``sipconfig.py`` is generated by ``configure.py``.
+This defines each ``name`` and its corresponding ``value``. Looking at it will
+give you a good idea of how the build system uses the different options. It is
+covered in detail in `The SIP Build System`_.
+
+
+Configuring SIP Using MinGW
+***************************
+
+SIP, and the modules it generates, can be built with MinGW, the Windows port of
+GCC. You must use the ``-p`` command line option to specify the correct
+platform. For example::
+
+ c:\python25\python configure.py -p win32-g++
+
+
+Configuring SIP Using the Borland C++ Compiler
+**********************************************
+
+SIP, and the modules it generates, can be built with the free Borland C++
+compiler. You must use the ``-p`` command line option to specify the correct
+platform. For example::
+
+ c:\python25\python configure.py -p win32-borland
+
+You must also make sure you have a Borland-compatible version of the Python
+library. If you are using the standard Python distribution (built using the
+Microsoft compiler) then you must convert the format of the Python library.
+For example::
+
+ coff2omf python25.lib python25_bcpp.lib
+
+
+Building SIP
+------------
+
+The next step is to build SIP by running your platform's ``make`` command. For
+example::
+
+ make
+
+The final step is to install SIP by running the following command::
+
+ make install
+
+(Depending on your system you may require root or administrator privileges.)
+
+This will install the various SIP components.
+
+
+Using SIP
+=========
+
+Bindings are generated by the SIP code generator from a number of specification
+files, typically with a ``.sip`` extension. Specification files look very
+similar to C and C++ header files, but often with additional information (in
+the form of a *directive* or an *annotation*) and code so that the bindings
+generated can be finely tuned.
+
+
+A Simple C++ Example
+--------------------
+
+We start with a simple example. Let's say you have a (fictional) C++ library
+that implements a single class called ``Word``. The class has one constructor
+that takes a ``\0`` terminated character string as its single argument. The
+class has one method called ``reverse()`` which takes no arguments and returns
+a ``\0`` terminated character string. The interface to the class is defined in
+a header file called ``word.h`` which might look something like this::
+
+ // Define the interface to the word library.
+
+ class Word {
+ const char *the_word;
+
+ public:
+ Word(const char *w);
+
+ char *reverse() const;
+ };
+
+The corresponding SIP specification file would then look something like this::
+
+ // Define the SIP wrapper to the word library.
+
+ %Module word 0
+
+ class Word {
+
+ %TypeHeaderCode
+ #include <word.h>
+ %End
+
+ public:
+ Word(const char *w);
+
+ char *reverse() const;
+ };
+
+Obviously a SIP specification file looks very much like a C++ (or C) header
+file, but SIP does not include a full C++ parser. Let's look at the
+differences between the two files.
+
+ - The `%Module`_ directive has been added [#]_. This is used to name the
+ Python module that is being created and to give it a *generation* number.
+ In this example these are ``word`` and ``0`` respectively. The
+ generation number is effectively the version number of the module.
+
+ - The `%TypeHeaderCode`_ directive has been added. The text between this
+ and the following `%End`_ directive is included literally in the code
+ that SIP generates. Normally it is used, as in this case, to
+ ``#include`` the corresponding C++ (or C) header file [#]_.
+
+ - The declaration of the private variable ``this_word`` has been removed.
+ SIP does not support access to either private or protected instance
+ variables.
+
+If we want to we can now generate the C++ code in the current directory by
+running the following command::
+
+ sip -c . word.sip
+
+However, that still leaves us with the task of compiling the generated code and
+linking it against all the necessary libraries. It's much easier to use the
+SIP build system to do the whole thing.
+
+Using the SIP build system is simply a matter of writing a small Python script.
+In this simple example we will assume that the ``word`` library we are wrapping
+and it's header file are installed in standard system locations and will be
+found by the compiler and linker without having to specify any additional
+flags. In a more realistic example your Python script may take command line
+options, or search a set of directories to deal with different configurations
+and installations.
+
+This is the simplest script (conventionally called ``configure.py``)::
+
+ import os
+ import sipconfig
+
+ # The name of the SIP build file generated by SIP and used by the build
+ # system.
+ build_file = "word.sbf"
+
+ # Get the SIP configuration information.
+ config = sipconfig.Configuration()
+
+ # Run SIP to generate the code.
+ os.system(" ".join([config.sip_bin, "-c", ".", "-b", build_file, "word.sip"]))
+
+ # Create the Makefile.
+ makefile = sipconfig.SIPModuleMakefile(config, build_file)
+
+ # Add the library we are wrapping. The name doesn't include any platform
+ # specific prefixes or extensions (e.g. the "lib" prefix on UNIX, or the
+ # ".dll" extension on Windows).
+ makefile.extra_libs = ["word"]
+
+ # Generate the Makefile itself.
+ makefile.generate()
+
+Hopefully this script is self-documenting. The key parts are the
+``Configuration`` and ``SIPModuleMakefile`` classes. The build system contains
+other Makefile classes, for example to build programs or to call other
+Makefiles in sub-directories.
+
+After running the script (using the Python interpreter the extension module is
+being created for) the generated C++ code and ``Makefile`` will be in the
+current directory.
+
+To compile and install the extension module, just run the following
+commands [#]_::
+
+ make
+ make install
+
+That's all there is to it.
+
+See `Building Your Extension with distutils`_ for an example of how to build
+this example using distutils.
+
+.. [#] All SIP directives start with a ``%`` as the first non-whitespace
+ character of a line.
+.. [#] SIP includes many code directives like this. They differ in where the
+ supplied code is placed by SIP in the generated code.
+.. [#] On Windows you might run ``nmake`` or ``mingw32-make`` instead.
+
+
+A Simple C Example
+------------------
+
+Let's now look at a very similar example of wrapping a fictional C library::
+
+ /* Define the interface to the word library. */
+
+ struct Word {
+ const char *the_word;
+ };
+
+ struct Word *create_word(const char *w);
+ char *reverse(struct Word *word);
+
+The corresponding SIP specification file would then look something like this::
+
+ /* Define the SIP wrapper to the word library. */
+
+ %CModule word 0
+
+ struct Word {
+
+ %TypeHeaderCode
+ #include <word.h>
+ %End
+
+ const char *the_word;
+ };
+
+ struct Word *create_word(const char *w) /Factory/;
+ char *reverse(struct Word *word);
+
+Again, let's look at the differences between the two files.
+
+ - The `%CModule`_ directive has been added. This has the same syntax as
+ the `%Module`_ directive used in the previous example but tells SIP that
+ the library being wrapped is implemented in C rather than C++.
+
+ - The `%TypeHeaderCode`_ directive has been added.
+
+ - The Factory_ annotation has been added to the ``create_word()`` function.
+ This tells SIP that a newly created structure is being returned and it is
+ owned by Python.
+
+The ``configure.py`` build system script described in the previous example can
+be used for this example without change.
+
+
+A More Complex C++ Example
+--------------------------
+
+In this last example we will wrap a fictional C++ library that contains a class
+that is derived from a Qt class. This will demonstrate how SIP allows a class
+hierarchy to be split across multiple Python extension modules, and will
+introduce SIP's versioning system.
+
+The library contains a single C++ class called ``Hello`` which is derived from
+Qt's ``QLabel`` class. It behaves just like ``QLabel`` except that the text
+in the label is hard coded to be ``Hello World``. To make the example more
+interesting we'll also say that the library only supports Qt v3.0 and later,
+and also includes a function called ``setDefault()`` that is not implemented
+in the Windows version of the library.
+
+The ``hello.h`` header file looks something like this::
+
+ // Define the interface to the hello library.
+
+ #include <qlabel.h>
+ #include <qwidget.h>
+ #include <qstring.h>
+
+ class Hello : public QLabel {
+ // This is needed by the Qt Meta-Object Compiler.
+ Q_OBJECT
+
+ public:
+ Hello(QWidget *parent, const char *name = 0, WFlags f = 0);
+
+ private:
+ // Prevent instances from being copied.
+ Hello(const Hello &);
+ Hello &operator=(const Hello &);
+ };
+
+ #if !defined(Q_OS_WIN)
+ void setDefault(const QString &def);
+ #endif
+
+The corresponding SIP specification file would then look something like this::
+
+ // Define the SIP wrapper to the hello library.
+
+ %Module hello 0
+
+ %Import qt/qtmod.sip
+
+ %If (Qt_3_0_0 -)
+
+ class Hello : QLabel {
+
+ %TypeHeaderCode
+ #include <hello.h>
+ %End
+
+ public:
+ Hello(QWidget *parent /TransferThis/, const char *name = 0, WFlags f = 0);
+
+ private:
+ Hello(const Hello &);
+ };
+
+ %If (!WS_WIN)
+ void setDefault(const QString &def);
+ %End
+
+ %End
+
+Again we look at the differences, but we'll skip those that we've looked at in
+previous examples.
+
+ - The `%Import`_ directive has been added to specify that we are extending
+ the class hierarchy defined in the file ``qt/qtmod.sip``. This file is
+ part of PyQt. The build system will take care of finding the file's
+ exact location.
+
+ - The `%If`_ directive has been added to specify that
+ everything [#]_ up to the matching `%End`_ directive only applies to Qt
+ v3.0 and later. ``Qt_3_0_0`` is a *tag* defined in ``qtmod.sip`` [#]_
+ using the `%Timeline`_ directive. `%Timeline`_ is used to define a tag
+ for each version of a library's API you are wrapping allowing you to
+ maintain all the different versions in a single SIP specification. The
+ build system provides support to ``configure.py`` scripts for working out
+ the correct tags to use according to which version of the library is
+ actually installed.
+
+ - The ``public`` keyword used in defining the super-classes has been
+ removed. This is not supported by SIP.
+
+ - The TransferThis_ annotation has been added to the first argument
+ of the constructor. It specifies that if the argument is not 0 (i.e. the
+ ``Hello`` instance being constructed has a parent) then ownership of the
+ instance is transferred from Python to C++. It is needed because Qt
+ maintains objects (i.e. instances derived from the ``QObject`` class) in
+ a hierachy. When an object is destroyed all of its children are also
+ automatically destroyed. It is important, therefore, that the Python
+ garbage collector doesn't also try and destroy them. This is covered in
+ more detail in `Ownership of Objects`_. SIP provides many other
+ annotations that can be applied to arguments, functions and classes.
+ Multiple annotations are separated by commas. Annotations may have
+ values.
+
+ - The ``=`` operator has been removed. This operator is not supported by
+ SIP.
+
+ - The `%If`_ directive has been added to specify that everything up to the
+ matching `%End`_ directive does not apply to Windows. ``WS_WIN`` is
+ another tag defined by PyQt, this time using the `%Platforms`_ directive.
+ Tags defined by the `%Platforms`_ directive are mutually exclusive, i.e.
+ only one may be valid at a time [#]_.
+
+One question you might have at this point is why bother to define the private
+copy constructor when it can never be called from Python? The answer is to
+prevent the automatic generation of a public copy constructor.
+
+We now look at the ``configure.py`` script. This is a little different to the
+script in the previous examples for two related reasons.
+
+Firstly, PyQt includes a pure Python module called ``pyqtconfig`` that extends
+the SIP build system for modules, like our example, that build on top of PyQt.
+It deals with the details of which version of Qt is being used (i.e. it
+determines what the correct tags are) and where it is installed. This is
+called a module's configuration module.
+
+Secondly, we generate a configuration module (called ``helloconfig``) for our
+own ``hello`` module. There is no need to do this, but if there is a chance
+that somebody else might want to extend your C++ library then it would make
+life easier for them.
+
+Now we have two scripts. First the ``configure.py`` script::
+
+ import os
+ import sipconfig
+ import pyqtconfig
+
+ # The name of the SIP build file generated by SIP and used by the build
+ # system.
+ build_file = "hello.sbf"
+
+ # Get the PyQt configuration information.
+ config = pyqtconfig.Configuration()
+
+ # Get the extra SIP flags needed by the imported qt module. Note that
+ # this normally only includes those flags (-x and -t) that relate to SIP's
+ # versioning system.
+ qt_sip_flags = config.pyqt_qt_sip_flags
+
+ # Run SIP to generate the code. Note that we tell SIP where to find the qt
+ # module's specification files using the -I flag.
+ os.system(" ".join([config.sip_bin, "-c", ".", "-b", build_file, "-I", config.pyqt_sip_dir, qt_sip_flags, "hello.sip"]))
+
+ # We are going to install the SIP specification file for this module and
+ # its configuration module.
+ installs = []
+
+ installs.append(["hello.sip", os.path.join(config.default_sip_dir, "hello")])
+
+ installs.append(["helloconfig.py", config.default_mod_dir])
+
+ # Create the Makefile. The QtModuleMakefile class provided by the
+ # pyqtconfig module takes care of all the extra preprocessor, compiler and
+ # linker flags needed by the Qt library.
+ makefile = pyqtconfig.QtModuleMakefile(
+ configuration=config,
+ build_file=build_file,
+ installs=installs
+ )
+
+ # Add the library we are wrapping. The name doesn't include any platform
+ # specific prefixes or extensions (e.g. the "lib" prefix on UNIX, or the
+ # ".dll" extension on Windows).
+ makefile.extra_libs = ["hello"]
+
+ # Generate the Makefile itself.
+ makefile.generate()
+
+ # Now we create the configuration module. This is done by merging a Python
+ # dictionary (whose values are normally determined dynamically) with a
+ # (static) template.
+ content = {
+ # Publish where the SIP specifications for this module will be
+ # installed.
+ "hello_sip_dir": config.default_sip_dir,
+
+ # Publish the set of SIP flags needed by this module. As these are the
+ # same flags needed by the qt module we could leave it out, but this
+ # allows us to change the flags at a later date without breaking
+ # scripts that import the configuration module.
+ "hello_sip_flags": qt_sip_flags
+ }
+
+ # This creates the helloconfig.py module from the helloconfig.py.in
+ # template and the dictionary.
+ sipconfig.create_config_module("helloconfig.py", "helloconfig.py.in", content)
+
+Next we have the ``helloconfig.py.in`` template script::
+
+ import pyqtconfig
+
+ # These are installation specific values created when Hello was configured.
+ # The following line will be replaced when this template is used to create
+ # the final configuration module.
+ # @SIP_CONFIGURATION@
+
+ class Configuration(pyqtconfig.Configuration):
+ """The class that represents Hello configuration values.
+ """
+ def __init__(self, sub_cfg=None):
+ """Initialise an instance of the class.
+
+ sub_cfg is the list of sub-class configurations. It should be None
+ when called normally.
+ """
+ # This is all standard code to be copied verbatim except for the
+ # name of the module containing the super-class.
+ if sub_cfg:
+ cfg = sub_cfg
+ else:
+ cfg = []
+
+ cfg.append(_pkg_config)
+
+ pyqtconfig.Configuration.__init__(self, cfg)
+
+ class HelloModuleMakefile(pyqtconfig.QtModuleMakefile):
+ """The Makefile class for modules that %Import hello.
+ """
+ def finalise(self):
+ """Finalise the macros.
+ """
+ # Make sure our C++ library is linked.
+ self.extra_libs.append("hello")
+
+ # Let the super-class do what it needs to.
+ pyqtconfig.QtModuleMakefile.finalise(self)
+
+Again, we hope that the scripts are self documenting.
+
+.. [#] Some parts of a SIP specification aren't subject to version control.
+.. [#] Actually in ``versions.sip``. PyQt uses the `%Include`_ directive to
+ split the SIP specification for Qt across a large number of separate
+ ``.sip`` files.
+.. [#] Tags can also be defined by the `%Feature`_ directive. These tags are
+ not mutually exclusive, i.e. any number may be valid at a time.
+
+
+Ownership of Objects
+--------------------
+
+When a C++ instance is wrapped a corresponding Python object is created. The
+Python object behaves as you would expect in regard to garbage collection - it
+is garbage collected when its reference count reaches zero. What then happens
+to the corresponding C++ instance? The obvious answer might be that the
+instance's destructor is called. However the library API may say that when the
+instance is passed to a particular function, the library takes ownership of the
+instance, i.e. responsibility for calling the instance's destructor is
+transferred from the SIP generated module to the library.
+
+Ownership of an instance may also be associated with another instance. The
+implication being that the owned instance will automatically be destroyed if
+the owning instance is destroyed. SIP keeps track of these relationships to
+ensure that Python's cyclic garbage collector can detect and break any
+reference cycles between the owning and owned instances. The association is
+implemented as the owning instance taking a reference to the owned instance.
+
+The TransferThis_, Transfer_ and TransferBack annotations are used to specify
+where, and it what direction, transfers of ownership happen. It is very
+important that these are specified correctly to avoid crashes (where both
+Python and C++ call the destructor) and memory leaks (where neither Python and
+C++ call the destructor).
+
+This applies equally to C structures where the structure is returned to the
+heap using the ``free()`` function.
+
+See also `sipTransferTo()`_ and `sipTransferBack()`_.
+
+
+Support for Wide Characters
+---------------------------
+
+SIP v4.6 introduced support for wide characters (i.e. the ``wchar_t`` type).
+Python's C API includes support for converting between unicode objects and wide
+character strings and arrays. When converting from a unicode object to wide
+characters SIP creates the string or array on the heap (using memory allocated
+using `sipMalloc()`_). This then raises the problem of how this memory is
+subsequently freed.
+
+The following describes how SIP handles this memory in the different situations
+where this is an issue.
+
+ - When a wide string or array is passed to a function or method then the
+ memory is freed (using `sipFree()`_) after than function or method
+ returns.
+
+ - When a wide string or array is returned from a virtual method then SIP
+ does not free the memory until the next time the method is called.
+
+ - When an assignment is made to a wide string or array instance variable
+ then SIP does not first free the instance's current string or array.
+
+
+The Python Global Interpreter Lock
+----------------------------------
+
+Python's Global Interpretor Lock (GIL) must be acquired before calls can be
+made to the Python API. It should also be released when a potentially
+blocking call to C/C++ library is made in order to allow other Python threads
+to be executed. In addition, some C/C++ libraries may implement their own
+locking strategies that conflict with the GIL causing application deadlocks.
+SIP provides ways of specifying when the GIL is released and acquired to
+ensure that locking problems can be avoided.
+
+SIP always ensures that the GIL is acquired before making calls to the Python
+API. By default SIP does not release the GIL when making calls to the C/C++
+library being wrapped. The ReleaseGIL_ annotation can be used to override
+this behaviour when required.
+
+If SIP is given the ``-g`` command line option then the default behaviour is
+changed and SIP releases the GIL every time is makes calls to the C/C++
+library being wrapped. The HoldGIL_ annotation can be used to override this
+behaviour when required.
+
+
+The SIP Command Line
+====================
+
+The syntax of the SIP command line is::
+
+ sip [options] [specification]
+
+``specification`` is the name of the specification file for the module. If it
+is omitted then ``stdin`` is used.
+
+The full set of command line options is:
+
+-h Display a help message.
+-V Display the SIP version number.
+-a file
+ The name of the QScintilla API file to generate. This file contains a
+ description of the module API in a form that the QScintilla editor
+ component can use for auto-completion and call tips. (The file may
+ also be used by the SciTE editor but must be sorted first.) By default
+ the file is not generated.
+-b file
+ The name of the build file to generate. This file contains the
+ information about the module needed by the SIP build system to generate
+ a platform and compiler specific Makefile for the module. By default
+ the file is not generated.
+-c dir The name of the directory (which must exist) into which all of the
+ generated C or C++ code is placed. By default no code is generated.
+-d file
+ The name of the documentation file to generate. Documentation is
+ included in specification files using the `%Doc`_ and `%ExportedDoc`_
+ directives. By default the file is not generated.
+-e Support for C++ exceptions is enabled. This causes all calls to C++
+ code to be enclosed in ``try``/``catch`` blocks and C++ exceptions to
+ be converted to Python exceptions. By default exception support is
+ disabled.
+-g The Python GIL is released before making any calls to the C/C++ library
+ being wrapped and reacquired afterwards. See `The Python Global
+ Interpreter Lock`_ and the ReleaseGIL_ and HoldGIL_ annotations.
+-I dir The directory is added to the list of directories searched when looking
+ for a specification file given in an `%Include`_ or `%Import`_
+ directive. This option may be given any number of times.
+-j number
+ The generated code is split into the given number of files. This make
+ it easier to use the parallel build facility of most modern
+ implementations of ``make``. By default 1 file is generated for each C
+ structure or C++ class.
+-r Debugging statements that trace the execution of the bindings are
+ automatically generated. By default the statements are not generated.
+-s suffix
+ The suffix to use for generated C or C++ source files. By default
+ ``.c`` is used for C and ``.cpp`` for C++.
+-t tag The SIP version tag (declared using a `%Timeline`_ directive) or the
+ SIP platform tag (declared using the `%Platforms`_ directive) to
+ generate code for. This option may be given any number of times so
+ long as the tags do not conflict.
+-w The display of warning messages is enabled. By default warning
+ messages are disabled.
+-x feature
+ The feature (declared using the `%Feature`_ directive) is disabled.
+-z file
+ The name of a file containing more command line options.
+
+
+SIP Specification Files
+=======================
+
+A SIP specification consists of some C/C++ type and function declarations and
+some directives. The declarations may contain annotations which provide SIP
+with additional information that cannot be expressed in C/C++. SIP does not
+include a full C/C++ parser.
+
+It is important to understand that a SIP specification describes the Python
+API, i.e. the API available to the Python programmer when they ``import`` the
+generated module. It does not have to accurately represent the underlying
+C/C++ library. There is nothing wrong with omitting functions that make
+little sense in a Python context, or adding functions implemented with
+handwritten code that have no C/C++ equivalent. It is even possible (and
+sometimes necessary) to specify a different super-class hierarchy for a C++
+class. All that matters is that the generated code compiles properly.
+
+In most cases the Python API matches the C/C++ API. In some cases handwritten
+code (see `%MethodCode`_) is used to map from one to the other without SIP
+having to know the details itself. However, there are a few cases where SIP
+generates a thin wrapper around a C++ method or constructor (see `Generated
+Derived Classes`_) and needs to know the exact C++ signature. To deal with
+these cases SIP allows two signatures to be specified. For example::
+
+ class Klass
+ {
+ public:
+ // The Python signature is a tuple, but the underlying C++ signature
+ // is a 2 element array.
+ Klass(SIP_PYTUPLE) [(int *)];
+ %MethodCode
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, "ii", &iarr[0], &iarr[1]))
+ {
+ // Note that we use the SIP generated derived class
+ // constructor.
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipKlass(iarr);
+ Py_END_ALLOW_THREADS
+ }
+ %End
+ };
+
+
+Syntax Definition
+-----------------
+
+The following is a semi-formal description of the syntax of a specification
+file.
+
+.. parsed-literal::
+
+ *specification* ::= {*module-statement*}
+
+ *module-statement* ::= [*module-directive* | *statement*]
+
+ *module-directive* ::= [`%CModule`_ | `%Copying`_ | `%Doc`_ |
+ `%ExportedDoc`_ | `%ExportedHeaderCode`_ | `%Feature`_ |
+ `%Import`_ | `%Include`_ | `%License`_ | `%MappedType`_ |
+ *mapped-type-template* | `%Module`_ | `%ModuleCode`_ |
+ `%ModuleHeaderCode`_ | `%OptionalInclude`_ | `%Platforms`_ |
+ `%PreInitialisationCode`_ | `%PostInitialisationCode`_ |
+ *sip-option-list* | `%Timeline`_ | `%UnitCode`_]
+
+ *sip-option-list* :: `%SIPOptions`_ ``(`` *option-list* ``)``
+
+ *option-list* ::= *option* [``,`` *option-list*]
+
+ *statement* :: [*class-statement* | *function* | *variable*]
+
+ *class-statement* :: [`%If`_ | *class* | *class-template* | *enum* |
+ *namespace* | *opaque-class* | *operator* | *struct* | *typedef* |
+ *exception*]
+
+ *class* ::= ``class`` *name* [``:`` *super-classes*] [*class-annotations*]
+ ``{`` {*class-line*} ``};``
+
+ *super-classes* ::= *name* [``,`` *super-classes*]
+
+ *class-line* ::= [*class-statement* | `%BIGetReadBufferCode`_ |
+ `%BIGetWriteBufferCode`_ | `%BIGetSegCountCode`_ |
+ `%BIGetCharBufferCode`_ | `%ConvertToSubClassCode`_ |
+ `%ConvertToTypeCode`_ | `%GCClearCode`_ | `%GCTraverseCode`_ |
+ `%TypeCode`_ | `%TypeHeaderCode`_ | *constructor* | *destructor* |
+ *method* | *static-method* | *virtual-method* | *special-method* |
+ *operator* | *virtual-operator* | *class-variable* | ``public:`` |
+ ``public slots:`` | ``protected:`` | ``protected slots:`` |
+ ``private:`` | ``private slots:`` | ``signals:``]
+
+ *constructor* ::= [``explicit``] *name* ``(`` [*argument-list*] ``)``
+ [*exceptions*] [*function-annotations*]
+ [*c++-constructor-signature*] ``;`` [`%MethodCode`_]
+
+ *c++-constructor-signature* ::= ``[(`` [*argument-list*] ``)]``
+
+ *destructor* ::= [``virtual``] ``~`` *name* ``()`` [*exceptions*] [``= 0``]
+ [*function-annotations*] ``;`` [`%MethodCode`_]
+ [`%VirtualCatcherCode`_]
+
+ *method* ::= *type* *name* ``(`` [*argument-list*] ``)`` [``const``]
+ [*exceptions*] [``= 0``] [*function-annotations*] [*c++-signature*]
+ ``;`` [`%MethodCode`_]
+
+ *c++-signature* ::= ``[`` *type* ``(`` [*argument-list*] ``)]``
+
+ *static-method* ::= ``static`` *function*
+
+ *virtual-method* ::= ``virtual`` *type* *name* ``(`` [*argument-list*] ``)``
+ [``const``] [*exceptions*] [``= 0``] [*function-annotations*]
+ [*c++-signature*] ``;`` [`%MethodCode`_] [`%VirtualCatcherCode`_]
+
+ *special-method* ::= *type* *special-method-name*
+ ``(`` [*argument-list*] ``)`` [*function-annotations*] ``;``
+ [`%MethodCode`_]
+
+ *special-method-name* ::= [ ``__abs__`` | ``__add__`` | ``__and__`` |
+ ``__call__`` | ``__cmp__`` | ``__contains__`` | ``__delitem__`` |
+ ``__div__`` | ``__eq__`` | ``__float__`` | ``__ge__`` |
+ ``__getitem__`` | ``__gt__`` | ``__hash__`` | ``__iadd__`` |
+ ``__iand__`` | ``__idiv__`` | ``__ilshift__`` | ``__imod__`` |
+ ``__imul__`` | ``__int__`` | ``__invert__`` | ``__ior__`` |
+ ``__irshift__`` | ``__isub__`` | ``__ixor__`` | ``__le__`` |
+ ``__len__`` | ``__long__`` | ``__lshift__`` | ``__lt__`` |
+ ``__mod__`` | ``__mul__`` | ``__ne__`` | ``__neg__`` |
+ ``__nonzero__`` | ``__or__`` | ``__pos__`` | ``__repr__`` |
+ ``__rshift__`` | ``__setitem__`` | ``__str__`` | ``__sub__`` |
+ ``__xor__``]
+
+ *operator* ::= *operator-type*
+ ``(`` [*argument-list*] ``)`` [``const``] [*exceptions*]
+ [*function-annotations*] ``;`` [`%MethodCode`_]
+
+ *virtual-operator* ::= ``virtual`` *operator-type*
+ ``(`` [*argument-list*] ``)`` [``const``] [*exceptions*] [``= 0``]
+ [*function-annotations*] ``;`` [`%MethodCode`_]
+ [`%VirtualCatcherCode`_]
+
+ *operatator-type* ::= [ *operator-function* | *operator-cast* ]
+
+ *operator-function* ::= *type* ``operator`` *operator-name*
+
+ *operator-cast* ::= ``operator`` *type*
+
+ *operator-name* ::= [``+`` | ``-`` | ``*`` | ``/`` | ``%`` | ``&`` |
+ ``|`` | ``^`` | ``<<`` | ``>>`` | ``+=`` | ``-=`` | ``*=`` |
+ ``/=`` | ``%=`` | ``&=`` | ``|=`` | ``^=`` | ``<<=`` | ``>>=`` |
+ ``~`` | ``()`` | ``[]`` | ``<`` | ``<=`` | ``==`` | ``!=`` |
+ ``>`` | ``>>=``]
+
+ *class-variable* ::= [``static``] *variable*
+
+ *class-template* :: = ``template`` ``<`` *type-list* ``>`` *class*
+
+ *mapped-type-template* :: = ``template`` ``<`` *type-list* ``>``
+ `%MappedType`_
+
+ *enum* ::= ``enum`` [*name*] [*enum-annotations*] ``{`` {*enum-line*} ``};``
+
+ *enum-line* ::= [`%If`_ | *name* [*enum-annotations*] ``,``
+
+ *function* ::= *type* *name* ``(`` [*argument-list*] ``)`` [*exceptions*]
+ [*function-annotations*] ``;`` [`%MethodCode`_]
+
+ *namespace* ::= ``namespace`` *name* ``{`` {*namespace-line*} ``};``
+
+ *namespace-line* ::= [`%TypeHeaderCode`_ | *statement*]
+
+ *opaque-class* ::= ``class`` *scoped-name* ``;``
+
+ *struct* ::= ``struct`` *name* ``{`` {*class-line*} ``};``
+
+ *typedef* ::= ``typedef`` [*typed-name* | *function-pointer*] ``;``
+
+ *variable*::= *typed-name* [*variable-annotations*] ``;`` [`%AccessCode`_]
+ [`%GetCode`_] [`%SetCode`_]
+
+ *exception* ::= `%Exception`_ *exception-name* [*exception-base*] ``{``
+ [`%TypeHeaderCode`_] `%RaiseCode`_ `};``
+
+ *exception-name* ::= *scoped-name*
+
+ *exception-base* ::= ``(`` [*exception-name* | *python-exception*] ``)``
+
+ *python-exception* ::= [``SIP_Exception`` | ``SIP_StopIteration`` |
+ ``SIP_StandardError`` | ``SIP_ArithmeticError`` |
+ ``SIP_LookupError`` | ``SIP_AssertionError`` |
+ ``SIP_AttributeError`` | ``SIP_EOFError`` |
+ ``SIP_FloatingPointError`` | ``SIP_EnvironmentError`` |
+ ``SIP_IOError`` | ``SIP_OSError`` | ``SIP_ImportError`` |
+ ``SIP_IndexError`` | ``SIP_KeyError`` | ``SIP_KeyboardInterrupt`` |
+ ``SIP_MemoryError`` | ``SIP_NameError`` | ``SIP_OverflowError`` |
+ ``SIP_RuntimeError`` | ``SIP_NotImplementedError`` |
+ ``SIP_SyntaxError`` | ``SIP_IndentationError`` | ``SIP_TabError`` |
+ ``SIP_ReferenceError`` | ``SIP_SystemError`` | ``SIP_SystemExit`` |
+ ``SIP_TypeError`` | ``SIP_UnboundLocalError`` |
+ ``SIP_UnicodeError`` | ``SIP_UnicodeEncodeError`` |
+ ``SIP_UnicodeDecodeError`` | ``SIP_UnicodeTranslateError`` |
+ ``SIP_ValueError`` | ``SIP_ZeroDivisionError`` |
+ ``SIP_WindowsError`` | ``SIP_VMSError``]
+
+ *exceptions* ::= ``throw (`` [*exception-list*] ``)``
+
+ *exception-list* ::= *scoped-name* [``,`` *exception-list*]
+
+ *argument-list* ::= *argument* [``,`` *argument-list*] [``,`` ``...``]
+
+ *argument* ::= [*type* [*name*] [*argument-annotations*]
+ [*default-value*] | SIP_ANYSLOT_ [*default-value*] | SIP_QOBJECT_ |
+ SIP_RXOBJ_CON_ | SIP_RXOBJ_DIS_ | SIP_SIGNAL_ [*default-value*] |
+ SIP_SLOT_ [*default-value*] | SIP_SLOT_CON_ | SIP_SLOT_DIS_]
+
+ *default-value* ::= ``=`` *expression*
+
+ *expression* ::= [*value* | *value* *binary-operator* *expression*]
+
+ *value* ::= [*unary-operator*] *simple-value*
+
+ *simple-value* ::= [*scoped-name* | *function-call* | *real-value* |
+ *integer-value* | *boolean-value* | *string-value* |
+ *character-value*]
+
+ *typed-name*::= *type* *name*
+
+ *function-pointer*::= *type* ``(*`` *name* ``)(`` [*type-list*] ``)``
+
+ *type-list* ::= *type* [``,`` *type-list*]
+
+ *function-call* ::= *scoped-name* ``(`` [*value-list*] ``)``
+
+ *value-list* ::= *value* [``,`` *value-list*]
+
+ *real-value* ::= a floating point number
+
+ *integer-value* ::= a number
+
+ *boolean-value* ::= [``true`` | ``false``]
+
+ *string-value* ::= ``"`` {*character*} ``"``
+
+ *character-value* ::= ````` *character* `````
+
+ *unary-operator* ::= [``!`` | ``~`` | ``-`` | ``+``]
+
+ *binary-operator* ::= [``-`` | ``+`` | ``*`` | ``/`` | ``&`` | ``|``]
+
+ *argument-annotations* ::= see `Argument Annotations`_
+
+ *class-annotations* ::= see `Class Annotations`_
+
+ *enum-annotations* ::= see `Enum Annotations`_
+
+ *function-annotations* ::= see `Function Annotations`_
+
+ *variable-annotations* ::= see `Variable Annotations`_
+
+ *type* ::= [``const``] *base-type* {``*``} [``&``]
+
+ *type-list* ::= *type* [``,`` *type-list*]
+
+ *base-type* ::= [*scoped-name* | *template* | ``struct`` *scoped-name* |
+ ``short`` | ``unsigned short`` | ``int`` | ``unsigned`` |
+ ``unsigned int`` | ``long`` | ``unsigned long`` | ``float`` |
+ ``double`` | ``bool`` | ``char`` | ``signed char`` |
+ ``unsigned char`` | ``void`` | ``wchar_t`` | SIP_PYCALLABLE_ |
+ SIP_PYDICT_ | SIP_PYLIST_ | SIP_PYOBJECT_ | SIP_PYSLICE_ |
+ SIP_PYTUPLE_ | SIP_PYTYPE_]
+
+ *scoped-name* ::= *name* [``::`` *scoped-name*]
+
+ *template* ::= *scoped-name* ``<`` *type-list* ``>``
+
+ *name* ::= _A-Za-z {_A-Za-z0-9}
+
+Here is a short list of differences between C++ and the subset supported by
+SIP that might trip you up.
+
+ - SIP does not support the use of ``[]`` in types. Use pointers instead.
+
+ - A global ``operator`` can only be defined if its first argument is a
+ class or a named enum that has been wrapped in the same module.
+
+ - Variables declared outside of a class are effectively read-only.
+
+ - A class's list of super-classes doesn't not include any access specifier
+ (e.g. ``public``).
+
+
+Variable Numbers of Arguments
+-----------------------------
+
+SIP supports the use of ``...`` as the last part of a function signature. Any
+remaining arguments are collected as a Python tuple.
+
+
+Additional SIP Types
+--------------------
+
+SIP supports a number of additional data types that can be used in Python
+signatures.
+
+
+SIP_ANYSLOT
+***********
+
+This is both a ``const char *`` and a ``PyObject *`` that is used as the type
+of the member instead of ``const char *`` in functions that implement the
+connection or disconnection of an explicitly generated signal to a slot.
+Handwritten code must be provided to interpret the conversion correctly.
+
+
+SIP_PYCALLABLE
+**************
+
+This is a ``PyObject *`` that is a Python callable object.
+
+
+SIP_PYDICT
+**********
+
+This is a ``PyObject *`` that is a Python dictionary object.
+
+
+SIP_PYLIST
+**********
+
+This is a ``PyObject *`` that is a Python list object.
+
+
+SIP_PYOBJECT
+************
+
+This is a ``PyObject *`` of any Python type.
+
+
+SIP_PYSLICE
+***********
+
+This is a ``PyObject *`` that is a Python slice object.
+
+
+SIP_PYTUPLE
+***********
+
+This is a ``PyObject *`` that is a Python tuple object.
+
+
+SIP_PYTYPE
+**********
+
+This is a ``PyObject *`` that is a Python type object.
+
+
+SIP_QOBJECT
+***********
+
+This is a ``QObject *`` that is a C++ instance of a class derived from Qt's
+``QObject`` class.
+
+
+SIP_RXOBJ_CON
+*************
+
+This is a ``QObject *`` that is a C++ instance of a class derived from Qt's
+``QObject`` class. It is used as the type of the receiver instead of ``const
+QObject *`` in functions that implement a connection to a slot.
+
+
+SIP_RXOBJ_DIS
+*************
+
+This is a ``QObject *`` that is a C++ instance of a class derived from Qt's
+``QObject`` class. It is used as the type of the receiver instead of ``const
+QObject *`` in functions that implement a disconnection from a slot.
+
+
+SIP_SIGNAL
+**********
+
+This is a ``const char *`` that is used as the type of the signal instead of
+``const char *`` in functions that implement the connection or disconnection
+of an explicitly generated signal to a slot.
+
+
+SIP_SLOT
+********
+
+This is a ``const char *`` that is used as the type of the member instead of
+``const char *`` in functions that implement the connection or disconnection
+of an explicitly generated signal to a slot.
+
+
+SIP_SLOT_CON
+************
+
+This is a ``const char *`` that is used as the type of the member instead of
+``const char *`` in functions that implement the connection of an internally
+generated signal to a slot. The type includes a comma separated list of types
+that is the C++ signature of of the signal.
+
+To take an example, ``QAccel::connectItem()`` connects an internally generated
+signal to a slot. The signal is emitted when the keyboard accelerator is
+activated and it has a single integer argument that is the ID of the
+accelerator. The C++ signature is::
+
+ bool connectItem(int id, const QObject *receiver, const char *member);
+
+The corresponding SIP specification is::
+
+ bool connectItem(int, SIP_RXOBJ_CON, SIP_SLOT_CON(int));
+
+
+SIP_SLOT_DIS
+************
+
+This is a ``const char *`` that is used as the type of the member instead of
+``const char *`` in functions that implement the disconnection of an
+internally generated signal to a slot. The type includes a comma separated
+list of types that is the C++ signature of of the signal.
+
+
+SIP Directives
+==============
+
+In this section we describe each of the directives that can be used in
+specification files. All directives begin with ``%`` as the first
+non-whitespace character in a line.
+
+Some directives have arguments or contain blocks of code or documentation. In
+the following descriptions these are shown in *italics*. Optional arguments
+are enclosed in [*brackets*].
+
+Some directives are used to specify handwritten code. Handwritten code must
+not define names that start with the prefix ``sip``.
+
+
+%AccessCode
+-----------
+
+.. parsed-literal::
+
+ %AccessCode
+ *code*
+ %End
+
+This directive is used immediately after the declaration of an instance of a
+wrapped class or structure, or a pointer to such an instance. You use it to
+provide handwritten code that overrides the default behaviour.
+
+For example::
+
+ class Klass;
+
+ Klass *klassInstance;
+ %AccessCode
+ // In this contrived example the C++ library we are wrapping defines
+ // klassInstance as Klass ** (which SIP doesn't support) so we
+ // explicitly dereference it.
+ if (klassInstance && *klassInstance)
+ return *klassInstance;
+
+ // This will get converted to None.
+ return 0;
+ %End
+
+
+%BIGetCharBufferCode
+--------------------
+
+.. parsed-literal::
+
+ %BIGetCharBufferCode
+ *code*
+ %End
+
+This directive (along with `%BIGetReadBufferCode`_, `%BIGetSegCountCode`_ and
+`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
+buffer interface. See the section `Buffer Object Structures
+<http://www.python.org/dev/doc/devel/api/buffer-structs.html>`__ for the
+details.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+void \*\*sipPtrPtr
+ This is the pointer used to return the address of the character buffer.
+
+SIP_SSIZE_T sipRes
+ The handwritten code should set this to the length of the character buffer
+ or -1 if there was an error.
+
+SIP_SSIZE_T sipSegment
+ This is the number of the segment of the character buffer.
+
+PyObject \*sipSelf
+ This is the Python object that wraps the the structure or class instance,
+ i.e. ``self``.
+
+
+%BIGetReadBufferCode
+--------------------
+
+.. parsed-literal::
+
+ %BIGetReadBufferCode
+ *code*
+ %End
+
+This directive (along with `%BIGetCharBufferCode`_, `%BIGetSegCountCode`_ and
+`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
+buffer interface.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+void \*\*sipPtrPtr
+ This is the pointer used to return the address of the read buffer.
+
+SIP_SSIZE_T sipRes
+ The handwritten code should set this to the length of the read buffer or
+ -1 if there was an error.
+
+SIP_SSIZE_T sipSegment
+ This is the number of the segment of the read buffer.
+
+PyObject \*sipSelf
+ This is the Python object that wraps the the structure or class instance,
+ i.e. ``self``.
+
+
+%BIGetSegCountCode
+------------------
+
+.. parsed-literal::
+
+ %BIGetSegCountCode
+ *code*
+ %End
+
+This directive (along with `%BIGetCharBufferCode`_, `%BIGetReadBufferCode`_ and
+`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
+buffer interface.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+SIP_SSIZE_T \*sipLenPtr
+ This is the pointer used to return the total length in bytes of all
+ segments of the buffer.
+
+SIP_SSIZE_T sipRes
+ The handwritten code should set this to the number of segments that make
+ up the buffer.
+
+PyObject \*sipSelf
+ This is the Python object that wraps the the structure or class instance,
+ i.e. ``self``.
+
+
+%BIGetWriteBufferCode
+---------------------
+
+.. parsed-literal::
+
+ %BIGetWriteBufferCode
+ *code*
+ %End
+
+This directive (along with `%BIGetCharBufferCode`_, `%BIGetReadBufferCode`_
+and `%BIGetSegCountCode`_ is used to specify code that implements Python's
+buffer interface.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+void \*\*sipPtrPtr
+ This is the pointer used to return the address of the write buffer.
+
+SIP_SSIZE_T sipRes
+ The handwritten code should set this to the length of the write buffer or
+ -1 if there was an error.
+
+SIP_SSIZE_T sipSegment
+ This is the number of the segment of the write buffer.
+
+PyObject \*sipSelf
+ This is the Python object that wraps the the structure or class instance,
+ i.e. ``self``.
+
+
+%CModule
+--------
+
+.. parsed-literal::
+
+ %CModule *name* [*version*]
+
+This directive is used to identify that the library being wrapped is a C
+library and to define the name of the module and it's optional version number.
+
+See the `%Module`_ directive for an explanation of the version number.
+
+For example::
+
+ %CModule dbus 1
+
+
+%ConvertFromTypeCode
+--------------------
+
+.. parsed-literal::
+
+ %ConvertFromTypeCode
+ *code*
+ %End
+
+This directive is used as part of the `%MappedType`_ directive to specify the
+handwritten code that converts an instance of a mapped type to a Python
+object.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the instance of the mapped type to be converted. It
+ will never be zero as the conversion from zero to ``Py_None`` is handled
+ before the handwritten code is called.
+
+PyObject \*sipTransferObj
+ This specifies any desired ownership changes to the returned object. If it
+ is ``NULL`` then the ownership should be left unchanged. If it is
+ ``Py_None`` then ownership should be transferred to Python. Otherwise
+ ownership should be transferred to C/C++ and the returned object associated
+ with *sipTransferObj*. The code can choose to interpret these changes in
+ any way. For example, if the code is converting a C++ container of wrapped
+ classes to a Python list it is likely that the ownership changes should be
+ made to each element of the list.
+
+The handwritten code must explicitly return a ``PyObject *``. If there was an
+error then a Python exception must be raised and ``NULL`` returned.
+
+The following example converts a ``QList<QWidget *>`` instance to a Python
+list of ``QWidget`` instances::
+
+ %ConvertFromTypeCode
+ PyObject *l;
+
+ // Create the Python list of the correct length.
+ if ((l = PyList_New(sipCpp -> size())) == NULL)
+ return NULL;
+
+ // Go through each element in the C++ instance and convert it to a
+ // wrapped QWidget.
+ for (int i = 0; i < sipCpp -> size(); ++i)
+ {
+ QWidget *w = sipCpp -> at(i);
+ PyObject *wobj;
+
+ // Get the Python wrapper for the QWidget instance, creating a new
+ // one if necessary, and handle any ownership transfer.
+ if ((wobj = sipConvertFromInstance(w, sipClass_QWidget, sipTransferObj)) == NULL)
+ {
+ // There was an error so garbage collect the Python list.
+ Py_DECREF(l);
+ return NULL;
+ }
+
+ // Add the wrapper to the list.
+ PyList_SET_ITEM(l, i, wobj);
+ }
+
+ // Return the Python list.
+ return l;
+ %End
+
+
+%ConvertToSubClassCode
+----------------------
+
+.. parsed-literal::
+
+ %ConvertToSubClassCode
+ *code*
+ %End
+
+When SIP needs to wrap a C++ class instance it first checks to make sure it
+hasn't already done so. If it has then it just returns a new reference to the
+corresponding Python object. Otherwise it creates a new Python object of the
+appropriate type. In C++ a function may be defined to return an instance of a
+certain class, but can often return a sub-class instead.
+
+This directive is used to specify handwritten code that exploits any available
+real-time type information (RTTI) to see if there is a more specific Python
+type that can be used when wrapping the C++ instance. The RTTI may be
+provided by the compiler or by the C++ instance itself.
+
+The directive is included in the specification of one of the classes that the
+handwritten code handles the type conversion for. It doesn't matter which
+one, but a sensible choice would be the one at the root of that class
+hierarchy in the module.
+
+Note that if a class hierarchy extends over a number of modules then this
+directive should be used in each of those modules to handle the part of the
+hierarchy defined in that module. SIP will ensure that the different pieces
+of code are called in the right order to determine the most specific Python
+type to use.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the C++ class instance.
+
+void \*\*sipCppRet
+ When the sub-class is derived from more than one super-class then it is
+ possible that the C++ address of the instance as the sub-class is
+ different to that of the super-class. If so, then this must be set to the
+ C++ address of the instance when cast (usually using ``static_cast``)
+ from the super-class to the sub-class.
+
+sipWrapperType \*sipClass
+ The handwritten code must set this to the SIP generated Python type object
+ that corresponds to the class instance. (The type object for class
+ ``Klass`` is ``sipClass_Klass``.) If the RTTI of the class instance isn't
+ recognised then ``sipClass`` must be set to ``NULL``. The code doesn't
+ have to recognise the exact class, only the most specific sub-class that
+ it can.
+
+The handwritten code must not explicitly return.
+
+The following example shows the sub-class conversion code for ``QEvent`` based
+class hierarchy in PyQt::
+
+ class QEvent
+ {
+ %ConvertToSubClassCode
+ // QEvent sub-classes provide a unique type ID.
+ switch (sipCpp -> type())
+ {
+ case QEvent::Timer:
+ sipClass = sipClass_QTimerEvent;
+ break;
+
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ sipClass = sipClass_QKeyEvent;
+ break;
+
+ // Skip the remaining event types to keep the example short.
+
+ default:
+ // We don't recognise the type.
+ sipClass = NULL;
+ }
+ %End
+
+ // The rest of the class specification.
+
+ };
+
+The SIP API includes the `sipMapIntToClass()`_ and `sipMapStringToClass()`_
+functions that convert integer and string based RTTI to Python type objects
+based on ordered lookup tables.
+
+
+%ConvertToTypeCode
+------------------
+
+.. parsed-literal::
+
+ %ConvertToTypeCode
+ *code*
+ %End
+
+This directive is used to specify the handwritten code that converts a Python
+object to a mapped type instance and to handle any ownership transfers. It is
+used as part of the `%MappedType`_ directive and as part of a class
+specification. The code is also called to determine if the Python object is of
+the correct type prior to conversion.
+
+When used as part of a class specification it can automatically convert
+additional types of Python object. For example, PyQt uses it in the
+specification of the ``QString`` class to allow Python string objects and
+unicode objects to be used wherever ``QString`` instances are expected.
+
+The following variables are made available to the handwritten code:
+
+int \*sipIsErr
+ If this is ``NULL`` then the code is being asked to check the type of the
+ Python object. The check must not have any side effects. Otherwise the
+ code is being asked to convert the Python object and a non-zero value
+ should be returned through this pointer if an error occurred during the
+ conversion.
+
+PyObject \*sipPy
+ This is the Python object to be converted.
+
+*type* \*\*sipCppPtr
+ This is a pointer through which the address of the mapped type instance (or
+ zero if appropriate) is returned. Its value is undefined if ``sipIsErr``
+ is ``NULL``.
+
+PyObject \*sipTransferObj
+ This specifies any desired ownership changes to *sipPy*. If it is ``NULL``
+ then the ownership should be left unchanged. If it is ``Py_None`` then
+ ownership should be transferred to Python. Otherwise ownership should be
+ transferred to C/C++ and *sipPy* associated with *sipTransferObj*. The
+ code can choose to interpret these changes in any way.
+
+The handwritten code must explicitly return an ``int`` the meaning of which
+depends on the value of ``sipIsErr``.
+
+If ``sipIsErr`` is ``NULL`` then a non-zero value is returned if the Python
+object has a type that can be converted to the mapped type. Otherwise zero is
+returned.
+
+If ``sipIsErr`` is not ``NULL`` then a combination of the following flags is
+returned.
+
+ - ``SIP_TEMPORARY`` is set to indicate that the returned instance is a
+ temporary and should be released to avoid a memory leak.
+
+ - ``SIP_DERIVED_CLASS`` is set to indicate that the type of the
+ returned instance is a derived class. See `Generated Derived
+ Classes`_.
+
+The following example converts a Python list of ``QPoint`` instances to a
+``QList<QPoint>`` instance::
+
+ %ConvertToTypeCode
+ // See if we are just being asked to check the type of the Python
+ // object.
+ if (!sipIsErr)
+ {
+ // Checking whether or not None has been passed instead of a list
+ // has already been done.
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ // Check the type of each element. We specify SIP_NOT_NONE to
+ // disallow None because it is a list of QPoint, not of a pointer
+ // to a QPoint, so None isn't appropriate.
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i),
+ sipClass_QPoint, SIP_NOT_NONE))
+ return 0;
+
+ // The type is valid.
+ return 1;
+ }
+
+ // Create the instance on the heap.
+ QList<QPoint> *ql = new QList<QPoint>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ QPoint *qp;
+ int state;
+
+ // Get the address of the element's C++ instance. Note that, in
+ // this case, we don't apply any ownership changes to the list
+ // elements, only to the list itself.
+ qp = reinterpret_cast<QPoint *>(sipConvertToInstance(
+ PyList_GET_ITEM(sipPy, i),
+ sipClass_QPoint, 0,
+ SIP_NOT_NONE,
+ &state, sipIsErr));
+
+ // Deal with any errors.
+ if (*sipIsErr)
+ {
+ sipReleaseInstance(qp, sipClass_QPoint, state);
+
+ // Tidy up.
+ delete ql;
+
+ // There is no temporary instance.
+ return 0;
+ }
+
+ ql -> append(*qp);
+
+ // A copy of the QPoint was appended to the list so we no longer
+ // need it. It may be a temporary instance that should be
+ // destroyed, or a wrapped instance that should not be destroyed.
+ // sipReleaseInstance() will do the right thing.
+ sipReleaseInstance(qp, sipClass_QPoint, state);
+ }
+
+ // Return the instance.
+ *sipCppPtr = ql;
+
+ // The instance should be regarded as temporary (and be destroyed as
+ // soon as it has been used) unless it has been transferred from
+ // Python. sipGetState() is a convenience function that implements
+ // this common transfer behaviour.
+ return sipGetState(sipTransferObj);
+ %End
+
+When used in a class specification the handwritten code replaces the code that
+would normally be automatically generated. This means that the handwritten
+code must also handle instances of the class itself and not just the additional
+types that are being supported. This should be done by making calls to
+`sipCanConvertToInstance()`_ to check the object type and
+`sipConvertToInstance()`_ to convert the object. The ``SIP_NO_CONVERTORS``
+flag *must* be passed to both these functions to prevent recursive calls to the
+handwritten code.
+
+
+%Copying
+--------
+
+.. parsed-literal::
+
+ %Copying
+ *text*
+ %End
+
+This directive is used to specify some arbitrary text that will be included at
+the start of all source files generated by SIP. It is normally used to
+include copyright and licensing terms.
+
+For example::
+
+ %Copying
+ Copyright (c) 2007 Riverbank Computing Limited
+ %End
+
+
+%Doc
+----
+
+.. parsed-literal::
+
+ %Doc
+ *text*
+ %End
+
+This directive is used to specify some arbitrary text that will be extracted
+by SIP when the ``-d`` command line option is used. The directive can be
+specified any number of times and SIP will concatenate all the separate pieces
+of text in the order that it sees them.
+
+Documentation that is specified using this directive is local to the module in
+which it appears. It is ignored by modules that `%Import`_ it. Use the
+`%ExportedDoc`_ directive for documentation that should be included by all
+modules that `%Import`_ this one.
+
+For example::
+
+ %Doc
+ <h1>An Example</h1>
+ <p>
+ This fragment of documentation is HTML and is local to the module in
+ which it is defined.
+ </p>
+ %End
+
+
+%End
+----
+
+This isn't a directive in itself, but is used to terminate a number of
+directives that allow a block of handwritten code or text to be specified.
+
+
+%Exception
+----------
+
+.. parsed-literal::
+
+ %Exception *name* [(*base-exception)]
+ {
+ [*header-code*]
+ *raise-code*
+ };
+
+This directive is used to define new Python exceptions, or to provide a stub
+for existing Python exceptions. It allows handwritten code to be provided
+that implements the translation between C++ exceptions and Python exceptions.
+The arguments to ``throw ()`` specifiers must either be names of classes or the
+names of Python exceptions defined by this directive.
+
+*name* is the name of the exception.
+
+*base-exception* is the optional base exception. This may be either one of
+the standard Python exceptions or one defined with a previous `%Exception`_
+directive.
+
+*header-code* is the optional `%TypeHeaderCode`_ used to specify any external
+interface to the exception being defined.
+
+*raise-code* is the `%RaiseCode`_ used to specify the handwritten code that
+converts a reference to the C++ exception to the Python exception.
+
+For example::
+
+ %Exception std::exception(SIP_Exception) /PyName=StdException/
+ {
+ %TypeHeaderCode
+ #include <exception>
+ %End
+ %RaiseCode
+ const char *detail = sipExceptionReference.what();
+
+ SIP_BLOCK_THREADS
+ PyErr_SetString(sipException_StdException, detail);
+ SIP_UNBLOCK_THREADS
+ %End
+ };
+
+In this example we map the standard C++ exception to a new Python exception.
+The new exception is called ``StdException`` and is derived from the standard
+Python exception ``Exception``.
+
+
+%ExportedDoc
+------------
+
+.. parsed-literal::
+
+ %ExportedDoc
+ *text*
+ %End
+
+This directive is used to specify some arbitrary text that will be extracted
+by SIP when the ``-d`` command line option is used. The directive can be
+specified any number of times and SIP will concatenate all the separate pieces
+of text in the order that it sees them.
+
+Documentation that is specified using this directive will also be included by
+modules that `%Import`_ it.
+
+For example::
+
+ %ExportedDoc
+ ==========
+ An Example
+ ==========
+
+ This fragment of documentation is reStructuredText and will appear in the
+ module in which it is defined and all modules that %Import it.
+ %End
+
+
+%ExportedHeaderCode
+-------------------
+
+.. parsed-literal::
+
+ %ExportedHeaderCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code, typically the declarations
+of types, that is placed in a header file that is included by all generated
+code for all modules. It should not include function declarations because
+Python modules should not explicitly call functions in another Python module.
+
+See also `%ModuleCode`_ and `%ModuleHeaderCode`_.
+
+
+%Feature
+--------
+
+.. parsed-literal::
+
+ %Feature *name*
+
+This directive is used to declare a feature. Features (along with
+`%Platforms`_ and `%Timeline`_) are used by the `%If`_ directive to control
+whether or not parts of a specification are processed or ignored.
+
+Features are mutually independent of each other - any combination of features
+may be enabled or disable. By default all features are enabled. The SIP
+``-x`` command line option is used to disable a feature.
+
+If a feature is enabled then SIP will automatically generate a corresponding C
+preprocessor symbol for use by handwritten code. The symbol is the name of
+the feature prefixed by ``SIP_FEATURE_``.
+
+For example::
+
+ %Feature FOO_SUPPORT
+
+ %If (FOO_SUPPORT)
+ void foo();
+ %End
+
+
+%GCClearCode
+------------
+
+.. parsed-literal::
+
+ %GCClearCode
+ *code*
+ %End
+
+Python has a cyclic garbage collector which can identify and release unneeded
+objects even when their reference counts are not zero. If a wrapped C
+structure or C++ class keeps its own reference to a Python object then, if the
+garbage collector is to do its job, it needs to provide some handwritten code
+to traverse and potentially clear those embedded references.
+
+See the section *Supporting cyclic garbage collection* in `Embedding and
+Extending the Python Interpreter <http://www.python.org/dev/doc/devel/ext/>`__
+for the details.
+
+This directive is used to specify the code that clears any embedded references.
+(See `%GCTraverseCode`_ for specifying the code that traverses any embedded
+references.)
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+int sipRes
+ The handwritten code should set this to the result to be returned.
+
+The following simplified example is taken from PyQt. The ``QCustomEvent``
+class allows arbitary data to be attached to the event. In PyQt this data is
+always a Python object and so should be handled by the garbage collector::
+
+ %GCClearCode
+ PyObject *obj;
+
+ // Get the object.
+ obj = reinterpret_cast<PyObject *>(sipCpp -> data());
+
+ // Clear the pointer.
+ sipCpp -> setData(0);
+
+ // Clear the reference.
+ Py_XDECREF(obj);
+
+ // Report no error.
+ sipRes = 0;
+ %End
+
+
+%GCTraverseCode
+---------------
+
+.. parsed-literal::
+
+ %GCTraverseCode
+ *code*
+ %End
+
+This directive is used to specify the code that traverses any embedded
+references for Python's cyclic garbage collector. (See `%GCClearCode`_ for a
+full explanation.)
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class.
+
+visitproc sipVisit
+ This is the visit function provided by the garbage collector.
+
+void \*sipArg
+ This is the argument to the visit function provided by the garbage
+ collector.
+
+int sipRes
+ The handwritten code should set this to the result to be returned.
+
+The following simplified example is taken from PyQt's ``QCustomEvent`` class::
+
+ %GCTraverseCode
+ PyObject *obj;
+
+ // Get the object.
+ obj = reinterpret_cast<PyObject *>(sipCpp -> data());
+
+ // Call the visit function if there was an object.
+ if (obj)
+ sipRes = sipVisit(obj, sipArg);
+ else
+ sipRes = 0;
+ %End
+
+
+%GetCode
+--------
+
+.. parsed-literal::
+
+ %GetCode
+ *code*
+ %End
+
+This directive is used after the declaration of a C++ class variable or C
+structure member to specify handwritten code to convert it to a Python object.
+It is usually used to handle types that SIP cannot deal with automatically.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class. It is not made available if the
+ variable being wrapped is a static class variable.
+
+PyObject \*sipPy
+ The handwritten code must set this to the Python representation of the
+ class variable or structure member. If there is an error then the code
+ must raise an exception and set this to ``NULL``.
+
+For example::
+
+ struct Entity
+ {
+ /*
+ * In this contrived example the C library we are wrapping actually
+ * defines this as char buffer[100] which SIP cannot handle
+ * automatically.
+ */
+ char *buffer;
+ %GetCode
+ sipPy = PyString_FromStringAndSize(sipCpp -> buffer, 100);
+ %End
+ %SetCode
+ char *ptr;
+ int length;
+
+ if (PyString_AsStringAndSize(sipPy, &ptr, &length) == -1)
+ sipErr = 1;
+ else if (length != 100)
+ {
+ /*
+ * Raise an exception because the length isn't exactly right.
+ */
+
+ PyErr_SetString(PyExc_ValueError, "an Entity.buffer must be exactly 100 bytes");
+ sipErr = 1;
+ }
+ else
+ memcpy(sipCpp -> buffer, ptr, 100);
+ %End
+ }
+
+
+%If
+---
+
+.. parsed-literal::
+
+ %If (*expression*)
+ *specification*
+ %End
+
+where
+
+.. parsed-literal::
+
+ *expression* ::= [*ored-qualifiers* | *range*]
+
+ *ored-qualifiers* ::= [*qualifier* | *qualifier* ``||`` *ored-qualifiers*]
+
+ *qualifier* ::= [``!``] [*feature* | *platform*]
+
+ *range* ::= [*version*] ``-`` [*version*]
+
+This directive is used in conjunction with features (see `%Feature`_),
+platforms (see `%Platforms`_) and versions (see `%Timeline`_) to control
+whether or not parts of a specification are processed or not.
+
+A *range* of versions means all versions starting with the lower bound up to
+but excluding the upper bound. If the lower bound is omitted then it is
+interpreted as being before the earliest version. If the upper bound is
+omitted then it is interpreted as being after the latest version.
+
+For example::
+
+ %Feature SUPPORT_FOO
+ %Platforms {WIN32_PLATFORM POSIX_PLATFORM MACOS_PLATFORM}
+ %Timeline {V1_0 V1_1 V2_0 V3_0}
+
+ %If (!SUPPORT_FOO)
+ // Process this if the SUPPORT_FOO feature is disabled.
+ %End
+
+ %If (POSIX_PLATFORM || MACOS_PLATFORM)
+ // Process this if either the POSIX_PLATFORM or MACOS_PLATFORM
+ // platforms are enabled.
+ %End
+
+ %If (V1_0 - V2_0)
+ // Process this if either V1_0 or V1_1 is enabled.
+ %End
+
+ %If (V2_0 - )
+ // Process this if either V2_0 or V3_0 is enabled.
+ %End
+
+ %If ( - )
+ // Always process this.
+ %End
+
+Note that this directive is not implemented as a preprocessor. Only the
+following parts of a specification are affected by it:
+
+ - ``class``
+ - `%ConvertFromTypeCode`_
+ - `%ConvertToSubClassCode`_
+ - `%ConvertToTypeCode`_
+ - ``enum``
+ - `%ExportedHeaderCode`_
+ - functions
+ - `%GCClearCode`_
+ - `%GCTraverseCode`_
+ - `%If`_
+ - `%MappedType`_
+ - `%MethodCode`_
+ - `%ModuleCode`_
+ - `%ModuleHeaderCode`_
+ - ``namespace``
+ - `%PostInitialisationCode`_
+ - `%PreInitialisationCode`_
+ - ``struct``
+ - ``typedef``
+ - `%TypeCode`_
+ - `%TypeHeaderCode`_
+ - `%UnitCode`_
+ - variables
+ - `%VirtualCatcherCode`_
+
+Also note that the only way to specify the logical and of qualifiers is to use
+nested `%If`_ directives.
+
+
+%Import
+-------
+
+.. parsed-literal::
+
+ %Import *filename*
+
+This directive is used to import the specification of another module. This is
+needed if the current module makes use of any types defined in the imported
+module, e.g. as an argument to a function, or to sub-class.
+
+If *filename* cannot be opened then SIP prepends *filename* with the name of
+the directory containing the current specification file (i.e. the one
+containing the `%Import`_ directive) and tries again. If this also fails then
+SIP prepends *filename* with each of the directories, in turn, specified by
+the ``-I`` command line option.
+
+For example::
+
+ %Import qt/qtmod.sip
+
+
+%Include
+--------
+
+.. parsed-literal::
+
+ %Include *filename*
+
+This directive is used to include contents of another file as part of the
+specification of the current module. It is the equivalent of the C
+preprocessor's ``#include`` directive and is used to structure a large module
+specification into manageable pieces.
+
+`%Include`_ follows the same search process as `%Import`_ when trying to open
+*filename*.
+
+For example::
+
+ %Include qwidget.sip
+
+
+%License
+--------
+
+.. parsed-literal::
+
+ %License /*license-annotations*/
+
+This directive is used to specify the contents of an optional license
+dictionary. The license dictionary is called ``__license__`` and is stored in
+the module dictionary. The elements of the dictionary are specified using the
+Licensee_, Signature_, Timestamp_ and Type_ annotations. Only the Type_
+annotation is compulsory.
+
+Note that this directive isn't an attempt to impose any licensing restrictions
+on a module. It is simply a method for easily embedding licensing information
+in a module so that it is accessible to Python scripts.
+
+For example::
+
+ %License /Type="GPL"/
+
+
+%MappedType
+-----------
+
+.. parsed-literal::
+
+ template<*type-list*>
+ %MappedType *type*
+ {
+ [*header-code*]
+ [*convert-to-code*]
+ [*convert-from-code*]
+ };
+
+ %MappedType *type*
+ {
+ [*header-code*]
+ [*convert-to-code*]
+ [*convert-from-code*]
+ };
+
+This directive is used to define an automatic mapping between a C or C++ type
+and a Python type. It can be used as part of a template, or to map a specific
+type.
+
+When used as part of a template *type* cannot itself refer to a template. Any
+occurrences of any of the type names (but not any ``*`` or ``&``) in
+*type-list* will be replaced by the actual type names used when the template is
+instantiated. Template mapped types are instantiated automatically as required
+(unlike template classes which are only instantiated using ``typedef``).
+
+Any explicit mapped type will be used in preference to any template that maps
+the same type, ie. a template will not be automatically instantiated if there
+is an explicit mapped type.
+
+*header-code* is the `%TypeHeaderCode`_ used to specify the library interface
+to the type being mapped.
+
+*convert-to-code* is the `%ConvertToTypeCode`_ used to specify the handwritten
+code that converts a Python object to an instance of the mapped type.
+
+*convert-from-code* is the `%ConvertFromTypeCode`_ used to specify the
+handwritten code that converts an instance of the mapped type to a Python
+object.
+
+For example::
+
+ template<Type *>
+ %MappedType QList
+ {
+ %TypeHeaderCode
+ // Include the library interface to the type being mapped.
+ #include <qlist.h>
+ %End
+
+ %ConvertToTypeCode
+ // See if we are just being asked to check the type of the Python
+ // object.
+ if (sipIsErr == NULL)
+ {
+ // Check it is a list.
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ // Now check each element of the list is of the type we expect.
+ // The template is for a pointer type so we don't disallow None.
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i),
+ sipClass_Type, 0))
+ return 0;
+
+ return 1;
+ }
+
+ // Create the instance on the heap.
+ QList<Type *> *ql = new QList<Type *>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ // Use the SIP API to convert the Python object to the
+ // corresponding C++ instance. Note that we apply any ownership
+ // transfer to the list itself, not the individual elements.
+ Type *t = reinterpret_cast<Type *>(sipConvertToInstance(
+ PyList_GET_ITEM(sipPy, i),
+ sipClass_Type, 0, 0, 0,
+ sipIsErr));
+
+ if (*sipIsErr)
+ {
+ // Tidy up.
+ delete ql;
+
+ // There is nothing on the heap.
+ return 0;
+ }
+
+ // Add the pointer to the C++ instance.
+ ql -> append(t);
+ }
+
+ // Return the instance on the heap.
+ *sipCppPtr = ql;
+
+ // Apply the normal transfer.
+ return sipGetState(sipTransferObj);
+ %End
+
+ %ConvertFromTypeCode
+ PyObject *l;
+
+ // Create the Python list of the correct length.
+ if ((l = PyList_New(sipCpp -> size())) == NULL)
+ return NULL;
+
+ // Go through each element in the C++ instance and convert it to the
+ // corresponding Python object.
+ for (int i = 0; i < sipCpp -> size(); ++i)
+ {
+ Type *t = sipCpp -> at(i);
+ PyObject *tobj;
+
+ if ((tobj = sipConvertFromInstance(t, sipClass_Type, sipTransferObj)) == NULL)
+ {
+ // There was an error so garbage collect the Python list.
+ Py_DECREF(l);
+ return NULL;
+ }
+
+ PyList_SET_ITEM(l, i, tobj);
+ }
+
+ // Return the Python list.
+ return l;
+ %End
+ }
+
+Using this we can use, for example, ``QList<QObject *>`` throughout the
+module's specification files (and in any module that imports this one). The
+generated code will automatically map this to and from a Python list of QObject
+instances when appropriate.
+
+
+%MethodCode
+-----------
+
+.. parsed-literal::
+
+ %MethodCode
+ *code*
+ %End
+
+This directive is used as part of the specification of a global function, class
+method, operator, constructor or destructor to specify handwritten code that
+replaces the normally generated call to the function being wrapped. It is
+usually used to handle argument types and results that SIP cannot deal with
+automatically.
+
+The specified code is embedded in-line after the function's arguments have
+been successfully converted from Python objects to their C or C++ equivalents.
+The specified code must not include any ``return`` statements.
+
+In the context of a destructor the specified code is embedded in-line in the
+Python type's deallocation function. Unlike other contexts it supplements
+rather than replaces the normally generated code, so it must not include code
+to return the C structure or C++ class instance to the heap. The code is only
+called if ownership of the structure or class is with Python.
+
+The specified code must also handle the Python Global Interpreter Lock (GIL).
+If compatibility with SIP v3.x is required then the GIL must be released
+immediately before the C++ call and reacquired immediately afterwards as shown
+in this example fragment::
+
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp -> foo();
+ Py_END_ALLOW_THREADS
+
+If compatibility with SIP v3.x is not required then this is optional but
+should be done if the C++ function might block the current thread or take a
+significant amount of time to execute. (See `The Python Global Interpreter
+Lock`_ and the ReleaseGIL_ and HoldGIL_ annotations.)
+
+The following variables are made available to the handwritten code:
+
+*type* a0
+ There is a variable for each argument of the Python signature (excluding
+ any ``self`` argument) named ``a0``, ``a1``, etc. The *type* of the
+ variable is the same as the type defined in the specification with the
+ following exceptions:
+
+ - if the argument is only used to return a value (e.g. it is an ``int *``
+ without an In_ annotation) then the type has one less level of
+ indirection (e.g. it will be an ``int``)
+ - if the argument is a structure or class (or a reference or a pointer to a
+ structure or class) then *type* will always be a pointer to the structure
+ or class.
+
+ Note that handwritten code for destructors never has any arguments.
+
+PyObject \*a0Wrapper
+ This variable is made available only if the corresponding argument wraps a
+ C structure or C++ class instance and the GetWrapper_ annotation is
+ specified. The variable is a pointer to the Python object that wraps the
+ argument.
+
+*type* \*sipCpp
+ If the directive is used in the context of a class constructor then this
+ must be set by the handwritten code to the constructed instance. In any
+ other context then this is a pointer to the C structure or C++ class
+ instance. Its *type* is a pointer to the structure or class.
+
+int sipIsErr
+ The handwritten code should set this to a non-zero value, and raise an
+ appropriate Python exception, if an error is detected.
+
+ ``sipIsErr`` is not provided for destructors.
+
+*type* sipRes
+ The handwritten code should set this to the result to be returned. The
+ *type* of the variable is the same as the type defined in the Python
+ signature in the specification with the following exception:
+
+ - if the argument is a structure or class (or a reference or a pointer to a
+ structure or class) then *type* will always be a pointer to the structure
+ or class.
+
+ ``sipRes`` is not provided for inplace operators (e.g. ``+=`` or
+ ``__imul__``) as their results are handled automatically, nor for class
+ constructors.
+
+PyObject \*sipSelf
+ If the directive is used in the context of a class constructor or method
+ then this is the Python object that wraps the the structure or class
+ instance, i.e. ``self``.
+
+bool sipSelfWasArg
+ This is only made available for non-abstract, virtual methods. It is set
+ if ``self`` was explicitly passed as the first argument of the method
+ rather than being bound to the method. In other words, the call was::
+
+ Klass.foo(self, ...)
+
+ rather than::
+
+ self.foo(...)
+
+The following is a complete example::
+
+ class Klass
+ {
+ public:
+ virtual int foo(SIP_PYTUPLE);
+ %MethodCode
+ // The C++ API takes a 2 element array of integers but passing a
+ // two element tuple is more Pythonic.
+
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, "ii", &iarr[0], &iarr[1]))
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipSelfWasArg ? sipCpp -> Klass::foo(iarr)
+ : sipCpp -> foo(iarr);
+ Py_END_ALLOW_THREADS
+ }
+ else
+ {
+ // PyArg_ParseTuple() will have raised the exception.
+ sipIsErr = 1;
+ }
+ %End
+ };
+
+As the example is a virtual method [#]_, note the use of ``sipSelfWasArg`` to
+determine exactly which implementation of ``foo()`` to call.
+
+If a method is in the ``protected`` section of a C++ class then the call
+should instead be::
+
+ sipRes = sipCpp -> sipProtectVirt_foo(sipSelfWasArg, iarr);
+
+If a method is in the ``protected`` section of a C++ class but is not virtual
+then the call should instead be::
+
+ sipRes = sipCpp -> sipProtect_foo(iarr);
+
+.. [#] See `%VirtualCatcherCode`_ for a description of how SIP generated code
+ handles the reimplementation of C++ virtual methods in Python.
+
+
+%Module
+-------
+
+.. parsed-literal::
+
+ %Module *name* [*version*]
+
+This directive is used to identify that the library being wrapped is a C++
+library and to define the name of the module and it's optional version number.
+
+The name may contain periods to specify that the module is part of a Python
+package.
+
+The optional version number is useful if you (or others) might create other
+modules that build on this module, i.e. if another module might `%Import`_
+this module. Under the covers, a module exports an API that is used by modules
+that `%Import`_ it and the API is given a version number. A module built on
+that module knows the version number of the API that it is expecting. If,
+when the modules are imported at run-time, the version numbers do not match
+then a Python exception is raised. The dependent module must then be re-built
+using the correct specification files for the base module.
+
+The version number should be incremented whenever a module is changed. Some
+changes don't affect the exported API, but it is good practice to change the
+version number anyway.
+
+For example::
+
+ %Module qt 5
+
+
+%ModuleCode
+-----------
+
+.. parsed-literal::
+
+ %ModuleCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code, typically the
+implementations of utility functions, that can be called by other handwritten
+code in the module.
+
+For example::
+
+ %ModuleCode
+ // Print an object on stderr for debugging purposes.
+ void dump_object(PyObject *o)
+ {
+ PyObject_Print(o, stderr, 0);
+ fprintf(stderr, "\n");
+ }
+ %End
+
+See also `%ExportedHeaderCode`_ and `%ModuleHeaderCode`_.
+
+
+%ModuleHeaderCode
+-----------------
+
+.. parsed-literal::
+
+ %ModuleHeaderCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code, typically the declarations
+of utility functions, that is placed in a header file that is included by all
+generated code for the same module.
+
+For example::
+
+ %ModuleHeaderCode
+ void dump_object(PyObject *o);
+ %End
+
+See also `%ExportedHeaderCode`_ and `%ModuleCode`_.
+
+
+%OptionalInclude
+----------------
+
+.. parsed-literal::
+
+ %OptionalInclude *filename*
+
+This directive is identical to the `%Include`_ directive except that SIP
+silently continues processing if *filename* could not be opened.
+
+For example::
+
+ %OptionalInclude license.sip
+
+
+%Platforms
+----------
+
+.. parsed-literal::
+
+ %Platforms {*name* *name* ...}
+
+This directive is used to declare a set of platforms. Platforms (along with
+`%Feature`_ and `%Timeline`_) are used by the `%If`_ directive to control
+whether or not parts of a specification are processed or ignored.
+
+Platforms are mutually exclusive - only one platform can be enabled at a time.
+By default all platforms are disabled. The SIP ``-t`` command line option is
+used to enable a platform.
+
+For example::
+
+ %Platforms {WIN32_PLATFORM POSIX_PLATFORM MACOS_PLATFORM}
+
+ %If (WIN32_PLATFORM)
+ void undocumented();
+ %End
+
+ %If (POSIX_PLATFORM)
+ void documented();
+ %End
+
+
+%PostInitialisationCode
+-----------------------
+
+.. parsed-literal::
+
+ %PostInitialisationCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code that is embedded in-line
+at the very end of the generated module initialisation code.
+
+The following variables are made available to the handwritten code:
+
+PyObject \*sipModule
+ This is the module object returned by ``Py_InitModule()``.
+
+PyObject \*sipModuleDict
+ This is the module's dictionary object returned by ``Py_ModuleGetDict()``.
+
+For example::
+
+ %PostInitialisationCode
+ // The code will be executed when the module is first imported and
+ // after all other initialisation has been completed.
+ %End
+
+
+%PreInitialisationCode
+----------------------
+
+.. parsed-literal::
+
+ %PreInitialisationCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code that is embedded in-line
+at the very start of the generated module initialisation code.
+
+For example::
+
+ %PreInitialisationCode
+ // The code will be executed when the module is first imported and
+ // before other initialisation has been completed.
+ %End
+
+
+%RaiseCode
+----------
+
+.. parsed-literal::
+
+ %RaiseCode
+ *code*
+ %End
+
+This directive is used as part of the definition of an exception using the
+`%Exception`_ directive to specify handwritten code that raises a Python
+exception when a C++ exception has been caught. The code is embedded in-line
+as the body of a C++ ``catch ()`` clause.
+
+The specified code must handle the Python Global Interpreter Lock (GIL) if
+necessary. The GIL must be acquired before any calls to the Python API and
+released after the last call as shown in this example fragment::
+
+ SIP_BLOCK_THREADS
+ PyErr_SetNone(PyErr_Exception);
+ SIP_UNBLOCK_THREADS
+
+Finally, the specified code must not include any ``return`` statements.
+
+The following variable is made available to the handwritten code:
+
+*type* &sipExceptionRef
+ This is a reference to the caught C++ exception. The *type* of the
+ reference is the same as the type defined in the ``throw ()`` specifier.
+
+See the `%Exception`_ directive for an example.
+
+
+%SetCode
+--------
+
+.. parsed-literal::
+
+ %SetCode
+ *code*
+ %End
+
+This directive is used after the declaration of a C++ class variable or C
+structure member to specify handwritten code to convert it from a Python
+object. It is usually used to handle types that SIP cannot deal with
+automatically.
+
+The following variables are made available to the handwritten code:
+
+*type* \*sipCpp
+ This is a pointer to the structure or class instance. Its *type* is a
+ pointer to the structure or class. It is not made available if the
+ variable being wrapped is a static class variable.
+
+int sipErr
+ If the conversion failed then the handwritten code should raise a Python
+ exception and set this to a non-zero value. Its initial value will be
+ automatically set to zero.
+
+PyObject \*sipPy
+ This is the Python object that the handwritten code should convert.
+
+See the `%GetCode`_ directive for an example.
+
+
+%SIPOptions
+-----------
+
+This directive sets one or more options that controls different aspects of
+SIP's behaviour. In this version all the available options are provided
+specifically to support PyQt and so are not documented.
+
+
+%Timeline
+---------
+
+.. parsed-literal::
+
+ %Timeline {*name* *name* ...}
+
+This directive is used to declare a set of versions released over a period of
+time. Versions (along with `%Feature`_ and `%Platforms`_) are used by the
+`%If`_ directive to control whether or not parts of a specification are
+processed or ignored.
+
+Versions are mutually exclusive - only one version can be enabled at a time.
+By default all versions are disabled. The SIP ``-t`` command line option is
+used to enable a version.
+
+For example::
+
+ %Timeline {V1_0 V1_1 V2_0 V3_0}
+
+ %If (V1_0 - V2_0)
+ void foo();
+ %End
+
+ %If (V2_0 -)
+ void foo(int = 0);
+ %End
+
+`%Timeline`_ can be used any number of times in a module to allow multiple
+libraries to be wrapped in the same module.
+
+
+%TypeCode
+---------
+
+.. parsed-literal::
+
+ %TypeCode
+ *code*
+ %End
+
+This directive is used as part of the specification of a C structure or a C++
+class to specify handwritten code, typically the implementations of utility
+functions, that can be called by other handwritten code in the structure or
+class.
+
+For example::
+
+ class Klass
+ {
+ %TypeCode
+ // Print an instance on stderr for debugging purposes.
+ static void dump_klass(const Klass *k)
+ {
+ fprintf(stderr,"Klass %s at %p\n", k -> name(), k);
+ }
+ %End
+
+ // The rest of the class specification.
+
+ };
+
+Because the scope of the code is normally within the generated file that
+implements the type, any utility functions would normally be declared
+``static``. However a naming convention should still be adopted to prevent
+clashes of function names within a module in case the SIP ``-j`` command line
+option is used.
+
+
+%TypeHeaderCode
+---------------
+
+.. parsed-literal::
+
+ %TypeHeaderCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code that defines the interface
+to a C or C++ type being wrapped, either a structure, a class, or a template.
+It is used within a class definition or a `%MappedType`_ directive.
+
+Normally *code* will be a pre-processor ``#include`` statement.
+
+For example::
+
+ // Wrap the Klass class.
+ class Klass
+ {
+ %TypeHeaderCode
+ #include <klass.h>
+ %End
+
+ // The rest of the class specification.
+ };
+
+
+%UnitCode
+---------
+
+.. parsed-literal::
+
+ %UnitCode
+ *code*
+ %End
+
+This directive is used to specify handwritten code that it included at the very
+start of a generated compilation unit (ie. C or C++ source file). It is
+typically used to ``#include`` a C++ precompiled header file.
+
+
+%VirtualCatcherCode
+-------------------
+
+.. parsed-literal::
+
+ %VirtualCatcherCode
+ *code*
+ %End
+
+For most classes there are corresponding `generated derived classes`_ that
+contain reimplementations of the class's virtual methods. These methods (which
+SIP calls catchers) determine if there is a corresponding Python
+reimplementation and call it if so. If there is no Python reimplementation
+then the method in the original class is called instead.
+
+This directive is used to specify handwritten code that replaces the normally
+generated call to the Python reimplementation and the handling of any returned
+results. It is usually used to handle argument types and results that SIP
+cannot deal with automatically.
+
+This directive can also be used in the context of a class destructor to
+specify handwritten code that is embedded in-line in the internal derived
+class's destructor.
+
+In the context of a method the Python Global Interpreter Lock (GIL) is
+automatically acquired before the specified code is executed and automatically
+released afterwards.
+
+In the context of a destructor the specified code must handle the GIL. The
+GIL must be acquired before any calls to the Python API and released after the
+last call as shown in this example fragment::
+
+ SIP_BLOCK_THREADS
+ Py_DECREF(obj);
+ SIP_UNBLOCK_THREADS
+
+The following variables are made available to the handwritten code in the
+context of a method:
+
+*type* a0
+ There is a variable for each argument of the C++ signature named ``a0``,
+ ``a1``, etc. The *type* of the variable is the same as the type defined in
+ the specification.
+
+int sipIsErr
+ The handwritten code should set this to a non-zero value, and raise an
+ appropriate Python exception, if an error is detected.
+
+PyObject \*sipMethod
+ This object is the Python reimplementation of the virtual C++ method. It
+ is normally passed to `sipCallMethod()`_.
+
+*type* sipRes
+ The handwritten code should set this to the result to be returned. The
+ *type* of the variable is the same as the type defined in the C++ signature
+ in the specification.
+
+No variables are made available in the context of a destructor.
+
+For example::
+
+ class Klass
+ {
+ public:
+ virtual int foo(SIP_PYTUPLE) [int (int *)];
+ %MethodCode
+ // The C++ API takes a 2 element array of integers but passing a
+ // two element tuple is more Pythonic.
+
+ int iarr[2];
+
+ if (PyArg_ParseTuple(a0, "ii", &iarr[0], &iarr[1]))
+ {
+ Py_BEGIN_ALLOW_THREADS
+ sipRes = sipCpp -> Klass::foo(iarr);
+ Py_END_ALLOW_THREADS
+ }
+ else
+ {
+ // PyArg_ParseTuple() will have raised the exception.
+ sipIsErr = 1;
+ }
+ %End
+ %VirtualCatcherCode
+ // Convert the 2 element array of integers to the two element
+ // tuple.
+
+ PyObject *result;
+
+ result = sipCallMethod(&sipIsErr, sipMethod, "ii", a0[0], a0[1]);
+
+ if (result != NULL)
+ {
+ // Convert the result to the C++ type.
+ sipParseResult(&sipIsErr, sipMethod, result, "i", &sipRes);
+
+ Py_DECREF(result);
+ }
+ %End
+ };
+
+
+SIP Annotations
+===============
+
+In this section we describe each of the annotations that can be used in
+specification files.
+
+Annotations can either be argument annotations, class annotations, enum
+annotations, exception annotations, function annotations, license annotations,
+or variable annotations depending on the context in which they can be used.
+
+Annotations are placed between forward slashes (``/``). Multiple annotations
+are comma separated within the slashes.
+
+Annotations have a type and, possibly, a value. The type determines the
+format of the value. The name of an annotation and its value are separated by
+``=``.
+
+Annotations can have one of the following types:
+
+boolean
+ This type of annotation has no value and is implicitly true.
+
+name
+ The value is a name that is compatible with a C/C++ identifier. In some
+ cases the value is optional.
+
+string
+ The value is a double quoted string.
+
+The following example shows argument and function annotations::
+
+ void exec(QWidget * /Transfer/) /ReleaseGIL, PyName=call_exec/;
+
+Note that the current version of SIP does not complain about unknown
+annotations, or annotations used out of their correct context.
+
+
+Argument Annotations
+--------------------
+
+AllowNone
+*********
+
+This boolean annotation specifies that the value of the corresponding argument
+(which should be either SIP_PYCALLABLE_, SIP_PYDICT_, SIP_PYLIST_,
+SIP_PYSLICE_, SIP_PYTUPLE_ or SIP_PYTYPE_) may be ``None``.
+
+
+Array
+*****
+
+This boolean annotation specifies that the corresponding argument (which
+should be either ``char *`` or ``unsigned char *``) refers to an array
+rather than a ``'\0'`` terminated string. There must be a corresponding
+argument with the ArraySize_ annotation specified. The annotation may only be
+specified once in a list of arguments.
+
+
+ArraySize
+*********
+
+This boolean annotation specifies that the corresponding argument (which
+should be either ``short``, ``unsigned short``, ``int``, ``unsigned``,
+``long`` or ``unsigned long``) refers to the size of an array. There must be
+a corresponding argument with the Array_ annotation specified. The annotation
+may only be specified once in a list of arguments.
+
+
+Constrained
+***********
+
+Python will automatically convert between certain compatible types. For
+example, if a floating pointer number is expected and an integer supplied,
+then the integer will be converted appropriately. This can cause problems
+when wrapping C or C++ functions with similar signatures. For example::
+
+ // The wrapper for this function will also accept an integer argument
+ // which Python will automatically convert to a floating point number.
+ void foo(double);
+
+ // The wrapper for this function will never get used.
+ void foo(int);
+
+This boolean annotation specifies that the corresponding argument (which
+should be either ``bool``, ``int``, ``float``, ``double`` or a wrapped class)
+must match the type without any automatic conversions. In the context of a
+wrapped class the invocation of any `%ConvertToTypeCode`_ is suppressed.
+
+The following example gets around the above problem::
+
+ // The wrapper for this function will only accept floating point numbers.
+ void foo(double /Constrained/);
+
+ // The wrapper for this function will be used for anything that Python can
+ // convert to an integer, except for floating point numbers.
+ void foo(int);
+
+
+GetWrapper
+**********
+
+This boolean annotation is only ever used in conjunction with handwritten code
+specified with the `%MethodCode`_ directive. It causes an extra variable to
+be generated for the corresponding argument (which should be a wrapped C
+structure or C++ class instance) which is a pointer to the Python object that
+wraps the argument.
+
+See the `%MethodCode`_ directive for more detail.
+
+
+In
+**
+
+This boolean annotation is used to specify that the corresponding argument
+(which should be a pointer type) is used to pass a value to the function.
+
+For pointers to wrapped C structures or C++ class instances, ``char *`` and
+``unsigned char *`` then this annotation is assumed unless the Out_ annotation
+is specified.
+
+For pointers to other types then this annotation must be explicitly specified
+if required. The argument will be dereferenced to obtain the actual value.
+
+Both In_ and Out_ may be specified for the same argument.
+
+
+Out
+***
+
+This boolean annotation is used to specify that the corresponding argument
+(which should be a pointer type) is used by the function to return a value as
+an element of a tuple.
+
+For pointers to wrapped C structures or C++ class instances, ``char *`` and
+``unsigned char *`` then this annotation must be explicitly specified if
+required.
+
+For pointers to other types then this annotation is assumed unless the In_
+annotation is specified.
+
+Both In_ and Out_ may be specified for the same argument.
+
+
+Transfer
+********
+
+This boolean annotation is used to specify that ownership of the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is
+transferred from Python to C++. In addition, if the argument is of a class
+method, then it is associated with the class instance with regard to the
+cyclic garbage collector.
+
+See `Ownership of Objects`_ for more detail.
+
+
+TransferBack
+************
+
+This boolean annotation is used to specify that ownership of the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is
+transferred back to Python from C++. In addition, any association of the
+argument with regard to the cyclic garbage collector with another instance is
+removed.
+
+Note that this can also be used as a function annotation.
+
+See `Ownership of Objects`_ for more detail.
+
+
+TransferThis
+************
+
+This boolean annotation is only used in C++ constructors or methods. In the
+context of a constructor or factory method it specifies that ownership of the
+instance being created is transferred from Python to C++ if the corresponding
+argument (which should be a wrapped C structure or C++ class instance) is not
+``None``. In addition, the newly created instance is associated with the
+argument with regard to the cyclic garbage collector.
+
+In the context of a non-factory method it specifies that ownership of ``this``
+is transferred from Python to C++ if the corresponding argument is not
+``None``. If it is ``None`` then ownership is transferred to Python.
+
+The annotation may be used more that once, in which case ownership is
+transferred to last instance that is not ``None``.
+
+See `Ownership of Objects`_ for more detail.
+
+
+Class Annotations
+-----------------
+
+Abstract
+********
+
+This boolean annotation is used to specify that the class has additional pure
+virtual methods that have not been specified and so it cannot be instantiated
+or sub-classed from Python.
+
+
+DelayDtor
+*********
+
+This boolean annotation is used to specify that the class's destructor should
+not be called until the Python interpreter exits. It would normally only be
+applied to singleton classes.
+
+When the Python interpreter exits the order in which any wrapped instances are
+garbage collected is unpredictable. However, the underlying C or C++ instances
+may need to be destroyed in a certain order. If this annotation is specified
+then when the wrapped instance is garbage collected the C or C++ instance is
+not destroyed but instead added to a list of delayed instances. When the
+interpreter exits then the function ``sipDelayedDtors`` is called with the
+list of delayed instances. ``sipDelayedDtors`` can then choose to call (or
+ignore) the destructors in any desired order.
+
+The ``sipDelayedDtors`` function must be specified using the `%ModuleCode`_
+directive. It's signature is as follows::
+
+ static void sipDelayedDtors(const sipDelayedDtor *dd_list);
+
+``dd_list`` is the linked list of delayed instances. The following fields are
+defined.
+
+const char \*dd_name
+ This is the name of the class excluding any package or module name.
+
+void \*dd_ptr
+ This is the address of the C or C++ instance to be destroyed. It's exact
+ type depends on the value of ``dd_isderived``.
+
+int dd_isderived
+ This is non-zero if the type of ``dd_ptr`` is actually the generated
+ derived class. This allows the correct destructor to be called. See
+ `Generated Derived Classes`_.
+
+sipDelayedDtor \*dd_next
+ This is the address of the next entry in the list or zero if this is the
+ last one.
+
+Note that the above applies only to C and C++ instances that are owned by
+Python.
+
+
+External
+********
+
+This boolean annotation is used to specify that the class is defined in another
+module. Declarations of external classes are private to the module in which
+they appear.
+
+
+NoDefaultCtors
+**************
+
+This boolean annotation is used to suppress the automatic generation of default
+constructors for the class.
+
+
+PyName
+******
+
+This name annotation specifies an alternative name for the class being wrapped
+which is used when it is referred to from Python. It is required when a class
+name is the same as a Python keyword. It may also be used to avoid name
+clashes with other objects (e.g. enums, exceptions, functions) that have the
+same name in the same C++ scope.
+
+
+Enum Annotations
+----------------
+
+PyName
+******
+
+This name annotation specifies an alternative name for the enum or enum member
+being wrapped which is used when it is referred to from Python. It is required
+when an enum or enum member name is the same as a Python keyword. It may also
+be used to avoid name clashes with other objects (e.g. classes, exceptions,
+functions) that have the same name in the same C++ scope.
+
+
+Exception Annotations
+---------------------
+
+PyName
+******
+
+This name annotation specifies an alternative name for the exception being
+defined which is used when it is referred to from Python. It is required when
+an exception name is the same as a Python keyword. It may also be used to
+avoid name clashes with other objects (e.g. classes, enums, functions) that
+have the same name.
+
+
+Function Annotations
+--------------------
+
+AutoGen
+*******
+
+This optional name annotation is used with class methods to specify that the
+method be automatically included in all sub-classes. The value is the name of
+a feature (specified using the `%Feature`_ directive) which must be enabled
+for the method to be generated.
+
+
+Default
+*******
+
+This boolean annotation is only used with C++ constructors. Sometimes SIP
+needs to create a class instance. By default it uses a constructor with no
+compulsory arguments if one is specified. (SIP will automatically generate a
+constructor with no arguments if no constructors are specified.) This
+annotation is used to explicitly specify which constructor to use. Zero is
+passed as the value of any arguments to the constructor.
+
+
+Factory
+*******
+
+This boolean annotation specifies that the value returned by the function
+(which should be a wrapped C structure or C++ class instance) is a newly
+created instance and is owned by Python.
+
+See `Ownership of Objects`_ for more detail.
+
+
+HoldGIL
+*******
+
+This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
+is not released before the call to the underlying C or C++ function. See
+`The Python Global Interpreter Lock`_ and the ReleaseGIL_ annotation.
+
+
+NewThread
+*********
+
+This boolean annotation specifies that the function will create a new thread.
+
+
+NoDerived
+*********
+
+This boolean annotation is only used with C++ constructors. In many cases SIP
+generates a derived class for each class being wrapped (see `Generated Derived
+Classes`_). This derived class contains constructors with the same C++
+signatures as the class being wrapped. Sometimes you may want to define a
+Python constructor that has no corresponding C++ constructor. This annotation
+is used to suppress the generation of the constructor in the derived class.
+
+
+Numeric
+*******
+
+This boolean annotation specifies that the operator should be interpreted as a
+numeric operator rather than a sequence operator. Python uses the ``+``
+operator for adding numbers and concatanating sequences, and the ``*`` operator
+for multiplying numbers and repeating sequences. SIP tries to work out which
+is meant by looking at other operators that have been defined for the type.
+If it finds either ``-``, ``-=``, ``/``, ``/=``, ``%`` or ``%=`` defined then
+it assumes that ``+``, ``+=``, ``*`` and ``*=`` should be numeric operators.
+Otherwise, if it finds either ``[]``, ``__getitem__()``, ``__setitem__()`` or
+``__delitem__()`` defined then it assumes that they should be sequence
+operators. This annotation is used to force SIP to treat the operator as
+numeric.
+
+
+PostHook
+********
+
+This name annotation is used to specify the name of a Python builtin that is
+called immediately after the call to the underlying C or C++ function or any
+handwritten code. The builtin is not called if an error occurred. It is
+primarily used to integrate with debuggers.
+
+
+PreHook
+*******
+
+This name annotation is used to specify the name of a Python builtin that is
+called immediately after the function's arguments have been successfully
+parsed and before the call to the underlying C or C++ function or any
+handwritten code. It is primarily used to integrate with debuggers.
+
+
+PyName
+******
+
+This name annotation specifies an alternative name for the function being
+wrapped which is used when it is referred to from Python. It is required when
+a function or method name is the same as a Python keyword. It may also be used
+to avoid name clashes with other objects (e.g. classes, enums, exceptions) that
+have the same name in the same C++ scope.
+
+
+ReleaseGIL
+**********
+
+This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
+is released before the call to the underlying C or C++ function and reacquired
+afterwards. It should be used for functions that might block or take a
+significant amount of time to execute. See `The Python Global Interpreter
+Lock`_ and the HoldGIL_ annotation.
+
+
+TransferBack
+************
+
+This boolean annotation specifies that ownership of the value returned by the
+function (which should be a wrapped C structure or C++ class instance) is
+transferred back to Python from C++. Normally returned values (unless they are
+new references to already wrapped values) are owned by C++. In addition, any
+association of the returned value with regard to the cyclic garbage collector
+with another instance is removed.
+
+Note that this can also be used as an argument annotation.
+
+See `Ownership of Objects`_ for more detail.
+
+
+License Annotations
+-------------------
+
+Licensee
+********
+
+This optional string annotation specifies the license's licensee. No
+restrictions are placed on the contents of the string.
+
+See the `%License`_ directive.
+
+
+Signature
+*********
+
+This optional string annotation specifies the license's signature. No
+restrictions are placed on the contents of the string.
+
+See the `%License`_ directive.
+
+
+Timestamp
+*********
+
+This optional string annotation specifies the license's timestamp. No
+restrictions are placed on the contents of the string.
+
+See the `%License`_ directive.
+
+
+Type
+****
+
+This string annotation specifies the license's type. No restrictions are
+placed on the contents of the string.
+
+See the `%License`_ directive.
+
+
+Variable Annotations
+--------------------
+
+PyName
+******
+
+This name annotation specifies an alternative name for the variable being
+wrapped which is used when it is referred to from Python. It is required when
+a variable name is the same as a Python keyword. It may also be used to avoid
+name clashes with other objects (e.g. classes, functions) that have the same
+name in the same C++ scope.
+
+
+SIP API for Handwritten Code
+============================
+
+In this section we describe the API that can be used by handwritten code in
+specification files.
+
+
+SIP_API_MAJOR_NR
+----------------
+
+This is a C preprocessor symbol that defines the major number of the SIP API.
+Its value is a number. There is no direct relationship between this and the
+SIP version number.
+
+
+SIP_API_MINOR_NR
+----------------
+
+This is a C preprocessor symbol that defines the minor number of the SIP API.
+Its value is a number. There is no direct relationship between this and the
+SIP version number.
+
+
+SIP_BLOCK_THREADS
+-----------------
+
+This is a C preprocessor macro that will make sure the Python Global
+Interpreter Lock (GIL) is acquired. Python API calls must only be made when
+the GIL has been acquired. There must be a corresponding
+`SIP_UNBLOCK_THREADS`_ at the same lexical scope.
+
+
+SIP_SSIZE_T
+-----------
+
+This is a C preprocessor macro that is defined as ``Py_ssize_t`` for Python
+v2.5 and later, and as ``int`` for earlier versions of Python. It makes it
+easier to write PEP 353 compliant handwritten code.
+
+
+SIP_UNBLOCK_THREADS
+-------------------
+
+This is a C preprocessor macro that will restore the Python Global Interpreter
+Lock (GIL) to the state it was prior to the corresponding `SIP_BLOCK_THREADS`_.
+
+
+SIP_VERSION
+-----------
+
+This is a C preprocessor symbol that defines the SIP version number
+represented as a 3 part hexadecimal number (e.g. v4.0.0 is represented as
+``0x040000``).
+
+
+SIP_VERSION_STR
+---------------
+
+This is a C preprocessor symbol that defines the SIP version number
+represented as a string. For development snapshots it will start with
+``snapshot-``.
+
+
+sipBadCatcherResult()
+---------------------
+
+void sipBadCatcherResult(PyObject \*method)
+ This raises a Python exception when the result of a Python reimplementation
+ of a C++ method doesn't have the expected type. It is normally called by
+ handwritten code specified with the `%VirtualCatcherCode`_ directive.
+ *method* is the Python method and would normally be the supplied
+ ``sipMethod``.
+
+
+sipBadLengthForSlice()
+----------------------
+
+void sipBadLengthForSlice(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen)
+ This raises a Python exception when the length of a slice object is
+ inappropriate for a sequence-like object. It is normally called by
+ handwritten code specified for ``__setitem__()`` methods. *seqlen* is the
+ length of the sequence. *slicelen* is the length of the slice. With
+ versions of Python prior to v2.5 the arguments have type ``int``.
+
+
+sipBuildResult()
+----------------
+
+PyObject \*sipBuildResult(int \*iserr, const char \*format, ...)
+ This creates a Python object based on a format string and associated
+ values in a similar way to the Python ``Py_BuildValue()`` function. If
+ there was an error then ``NULL`` is returned and a Python exception is
+ raised. If *iserr* is not ``NULL`` then the location it points to is set
+ to a non-zero value. *format* is the string of format characters.
+
+ If *format* begins and ends with parentheses then a tuple of objects is
+ created. If *format* contains more than one format character then
+ parentheses must be specified.
+
+ In the following description the first letter is the format character, the
+ entry in parentheses is the Python object type that the format character
+ will create, and the entry in brackets are the types of the C/C++ values
+ to be passed.
+
+ ``a`` (string) [char \*, int]
+ Convert a C/C++ character array and its length to a Python string. If
+ the array is ``NULL`` then the length is ignored and the result is
+ ``Py_None``.
+
+ ``b`` (boolean) [int]
+ Convert a C/C++ ``int`` to a Python boolean.
+
+ ``c`` (string) [char]
+ Convert a C/C++ ``char`` to a Python string.
+
+ ``d`` (float) [double]
+ Convert a C/C++ ``double`` to a Python floating point number.
+
+ ``e`` (integer) [enum]
+ Convert an anonymous C/C++ ``enum`` to a Python integer.
+
+ ``f`` (float) [float]
+ Convert a C/C++ ``float`` to a Python floating point number.
+
+ ``h`` (integer) [short]
+ Convert a C/C++ ``short`` to a Python integer.
+
+ ``i`` (integer) [int]
+ Convert a C/C++ ``int`` to a Python integer.
+
+ ``l`` (long) [long]
+ Convert a C/C++ ``long`` to a Python integer.
+
+ ``m`` (long) [unsigned long]
+ Convert a C/C++ ``unsigned long`` to a Python long.
+
+ ``n`` (long) [long long]
+ Convert a C/C++ ``long long`` to a Python long.
+
+ ``o`` (long) [unsigned long long]
+ Convert a C/C++ ``unsigned long long`` to a Python long.
+
+ ``s`` (string) [char \*]
+ Convert a C/C++ ``'\0'`` terminated string to a Python string. If the
+ string pointer is ``NULL`` then the result is ``Py_None``.
+
+ ``t`` (long) [unsigned short]
+ Convert a C/C++ ``unsigned short`` to a Python long.
+
+ ``u`` (long) [unsigned int]
+ Convert a C/C++ ``unsigned int`` to a Python long.
+
+ ``w`` (unicode) [wchar_t]
+ Convert a C/C++ wide character to a Python unicode object.
+
+ ``x`` (unicode) [wchar_t \*]
+ Convert a C/C++ ``L'\0'`` terminated wide character string to a Python
+ unicode object. If the string pointer is ``NULL`` then the result is
+ ``Py_None``.
+
+ ``A`` (unicode) [wchar_t \*, int]
+ Convert a C/C++ wide character array and its length to a Python unicode
+ object. If the array is ``NULL`` then the length is ignored and the
+ result is ``Py_None``.
+
+ ``B`` (wrapped instance) [*type* \*, sipWrapperType \*, PyObject \*]
+ Convert a new C structure or a new C++ class instance to a Python class
+ instance object. Ownership of the structure or instance is determined
+ by the ``PyObject *`` argument. If it is ``NULL`` and the instance has
+ already been wrapped then the ownership is unchanged. If it is
+ ``NULL`` or ``Py_None`` then ownership will be with Python. Otherwise
+ ownership will be with C/C++ and the instance associated with the
+ ``PyObject *`` argument. The Python class is influenced by any
+ applicable `%ConvertToSubClassCode`_ code.
+
+ ``C`` (wrapped instance) [*type* \*, sipWrapperType \*, PyObject \*]
+ Convert a C structure or a C++ class instance to a Python class
+ instance object. If the structure or class instance has already been
+ wrapped then the result is a new reference to the existing class
+ instance object. Ownership of the structure or instance is determined
+ by the ``PyObject *`` argument. If it is ``NULL`` and the instance has
+ already been wrapped then the ownership is unchanged. If it is
+ ``NULL`` and the instance is newly wrapped then ownership will be with
+ C/C++. If it is ``Py_None`` then ownership is transferred to Python
+ via a call to `sipTransferBack()`_. Otherwise ownership is transferred
+ to C/C++ and the instance associated with the ``PyObject *`` argument
+ via a call to `sipTransferTo()`_. The Python class is influenced by
+ any applicable `%ConvertToSubClassCode`_ code.
+
+ ``D`` (object) [*type* \*, const sipMappedType \*, PyObject \*]
+ Convert a C structure or a C++ class instance wrapped as a mapped type
+ to a Python object. Ownership of the structure or instance is
+ determined by the ``PyObject *`` argument. If it is ``NULL`` then the
+ ownership is unchanged. If it is ``Py_None`` then ownership is
+ transferred to Python via a call to `sipTransferBack()`_. Otherwise
+ ownership is transferred to C/C++ and the instance associated with the
+ ``PyObject *`` argument via a call to `sipTransferTo()`_.
+
+ ``E`` (wrapped enum) [enum, PyTypeObject \*]
+ Convert a named C/C++ ``enum`` to an instance of the corresponding
+ Python named enum type.
+
+ ``M`` (wrapped instance) [*type* \*, sipWrapperType \*]
+ Convert a C structure or a C++ class instance to a Python class
+ instance object. If the structure or class instance has already been
+ wrapped then the result is a new reference to the existing class
+ instance object. If the instance has already been wrapped then the
+ ownership is unchanged. If the instance is newly wrapped then
+ ownership will be with C/C++. The Python class is influenced by any
+ applicable `%ConvertToSubClassCode`_ code. This is deprecated from
+ SIP v4.4.
+
+ ``N`` (wrapped instance) [*type* \*, sipWrapperType \*]
+ Convert a C structure or a C++ class instance to a Python class
+ instance object. This should not be used if the structure or class
+ instance might already have been wrapped. Ownership of the structure
+ or instance will be with Python. The Python class is influenced by
+ any applicable `%ConvertToSubClassCode`_ code. This is deprecated
+ from SIP v4.4.
+
+ ``O`` (wrapped instance) [*type* \*, sipWrapperType \*]
+ Convert a C structure or a C++ class instance to a Python class
+ instance object. If the structure or class instance has already been
+ wrapped then the result is a new reference to the existing class
+ instance object. Ownership of the structure or instance will be with
+ C/C++. This is deprecated from SIP v4.4.
+
+ ``P`` (wrapped instance) [*type* \*, sipWrapperType \*]
+ Convert a C structure or a C++ class instance to a Python class
+ instance object. This should not be used if the structure or class
+ instance might already have been wrapped. Ownership of the structure
+ or instance will be with Python. This is deprecated from SIP v4.4.
+
+ ``R`` (object) [PyObject \*]
+ The result is value passed without any conversions. The reference
+ count is unaffected, i.e. a reference is taken.
+
+ ``S`` (object) [PyObject \*]
+ The result is value passed without any conversions. The reference
+ count is incremented.
+
+ ``T`` (object) [void \*, PyObject \*(\*)(void \*cppptr)]
+ Convert a C structure or a C++ class instance to a Python object using
+ a convertor function. See `Generated Type Convertors`_. This is
+ deprecated from SIP v4.4.
+
+ ``V`` (sip.voidptr) [void \*]
+ Convert a C/C++ ``void *`` Python ``sip.voidptr`` object.
+
+
+sipCallMethod()
+---------------
+
+PyObject \*sipCallMethod(int \*iserr, PyObject \*method, const char \*format, ...)
+ This calls a Python method passing a tuple of arguments based on a format
+ string and associated values in a similar way to the Python
+ ``PyObject_CallObject()`` function. If there was an error then ``NULL`` is
+ returned and a Python exception is raised. If *iserr* is not ``NULL``
+ then the location it points to is set to a non-zero value. *method* is the
+ Python bound method to call. *format* is the string of format characters
+ (see `sipBuildResult()`_).
+
+ This is normally called by handwritten code specified with the
+ `%VirtualCatcherCode`_ directive with *method* being the supplied
+ ``sipMethod``.
+
+
+sipCanConvertToInstance()
+-------------------------
+
+int sipCanConvertToInstance(PyObject \*obj, sipWrapperType \*type, int flags)
+ This returns a non-zero value if a Python object can be converted to an
+ instance of a C structure or C++ class. *obj* is the Python object.
+ *type* is the generated type corresponding to the C/C++ type being checked.
+ *flags* is any combination of the following values used to fine tune the
+ check.
+
+ - ``SIP_NOT_NONE`` causes the check to fail if *obj* is ``None``.
+
+ - ``SIP_NO_CONVERTORS`` suppresses the use of of any
+ `%ConvertToTypeCode`_ for *type*.
+
+
+sipCanConvertToMappedType()
+---------------------------
+
+int sipCanConvertToMappedType(PyObject \*obj, const sipMappedType \*mt, int flags)
+ This returns a non-zero value if a Python object can be converted to an
+ instance of a C structure or C++ class which has been implemented as a
+ mapped type. *obj* is the Python object. *mt* is an opaque structure
+ returned by `sipFindMappedType()`_. *flags* is any combination of the
+ following values used to fine tune the check.
+
+ - ``SIP_NOT_NONE`` causes the check to fail if *obj* is ``None``.
+
+
+sipClassName()
+--------------
+
+PyObject \*sipClassName(PyObject \*obj)
+ This returns the class name of a wrapped instance as a Python string. It
+ comes with a reference.
+
+
+sipConnectRx()
+--------------
+
+PyObject \*sipConnectRx(PyObject \*sender, const char \*signal, PyObject \*receiver, const char \*slot, int type)
+ This connects a signal to a signal or slot and returns ``Py_True`` if the
+ signal was connected or ``Py_False`` if not. If there was some other
+ error then a Python exception is raised and ``NULL`` is returned. *sender*
+ is the wrapped ``QObject`` derived instance that emits the signal.
+ *signal* is the typed name of the signal. *receiver* is the wrapped
+ ``QObject`` derived instance or Python callable that the signal is
+ connected to. *slot* is the typed name of the slot, or ``NULL`` if
+ *receiver* is a Python callable. *type* is the type of connection and is
+ cast from Qt::ConnectionType. It is normally only used by PyQt to
+ implement ``QObject.connect()``.
+
+
+sipConvertFromInstance()
+------------------------
+
+PyObject \*sipConvertFromInstance(void \*cpp, sipWrapperType \*type, PyObject \*transferObj)
+ Convert a C structure or a C++ class instance to a Python class instance
+ object. *cpp* is the C/C++ instance. If the instance has already been
+ wrapped then the result is a new reference to the existing instance object.
+ *type* is the generated type corresponding to the C/C++ type.
+ *transferObj* controls the ownership of the returned value. If the
+ structure or class instance has already been wrapped then the result is a
+ new reference to the existing class instance object. If it is ``NULL`` and
+ the instance has already been wrapped then the ownership is unchanged. If
+ it is ``NULL`` and the instance is newly wrapped then ownership will be
+ with C/C++. If it is ``Py_None`` then ownership is transferred to Python
+ via a call to `sipTransferBack()`_. Otherwise ownership is transferred to
+ C/C++ and the instance associated with *transferObj* via a call to
+ `sipTransferTo()`_. The Python class is influenced by any applicable
+ `%ConvertToSubClassCode`_ code.
+
+
+sipConvertFromMappedType()
+--------------------------
+
+PyObject \*sipConvertFromMappedType(void \*cpp, const sipMappedType \*mt, PyObject \*transferObj)
+ Convert a C structure or a C++ class instance wrapped as a mapped type to a
+ Python object. *cpp* is the C/C++ instance. *mt* is the opaque structure
+ returned by `sipFindMappedType()`_. *transferObj* controls any ownership
+ changes to *obj*. If it is ``NULL`` then the ownership is unchanged. If
+ it is ``Py_None`` then ownership is transferred to Python via a call to
+ `sipTransferBack()`_. Otherwise ownership is transferred to C/C++ and the
+ instance associated with the ``PyObject *`` argument via a call to
+ `sipTransferTo()`_.
+
+
+sipConvertFromNamedEnum()
+-------------------------
+
+PyObject \*sipConvertFromNamedEnum(int eval, PyTypeObject \*type)
+ Convert a named C/C++ ``enum`` to an instance of the corresponding Python
+ named enum type. *eval* is the enumerated value to convert. *type* is the
+ generated Python type object (see `Generated Named Enum Type Objects`_).
+
+
+sipConvertFromNewInstance()
+---------------------------
+
+PyObject \*sipConvertFromNewInstance(void \*cpp, sipWrapperType \*type, PyObject \*transferObj)
+ Convert a new C structure or a new C++ class instance to a Python class
+ instance object. *cpp* is the C/C++ instance. *type* is the generated
+ type corresponding to the C/C++ type. *transferObj* controls the ownership
+ of the returned value. If it is ``NULL`` or ``Py_None`` then ownership
+ will be with Python. Otherwise ownership will be with C/C++ and the
+ instance associated with *transferObj*. The Python class is influenced by
+ any applicable `%ConvertToSubClassCode`_ code.
+
+
+sipConvertFromSequenceIndex()
+-----------------------------
+
+SIP_SSIZE_T sipConvertFromSequenceIndex(SIP_SSIZE_T idx, SIP_SSIZE_T len)
+ This converts a Python sequence index (i.e. where a negative value refers
+ to the offset from the end of the sequence) to a C/C++ array index. If the
+ index was out of range then a negative value is returned and a Python
+ exception raised. With versions of Python prior to v2.5 the result and the
+ arguments have type ``int``.
+
+
+sipConvertFromSliceObject()
+---------------------------
+
+int sipConvertFromSliceObject(PyObject \*slice, SIP_SSIZE_T length, SIP_SSIZE_T \*start, SIP_SSIZE_T \*stop, SIP_SSIZE_T \*step, SIP_SSIZE_T \*slicelength)
+ This is a thin wrapper around the Python ``PySlice_GetIndicesEx()``
+ function provided to make it easier to write handwritten code that is
+ compatible with SIP v3.x and versions of Python earlier that v2.3.
+
+
+sipConvertToCpp()
+-----------------
+
+void \*sipConvertToCpp(PyObject \*obj, sipWrapperType \*type, int \*iserr)
+ This function is deprecated from SIP v4.4. It is equivalent to::
+
+ sipConvertToInstance(obj, type, NULL, SIP_NO_CONVERTORS, NULL, iserr);
+
+
+sipConvertToInstance()
+----------------------
+
+void \*sipConvertToInstance(PyObject \*obj, sipWrapperType \*type, PyObject \*transferObj, int flags, int \*state, int \*iserr)
+ This converts a Python object to an instance of a C structure or C++ class
+ assuming that a previous call to `sipCanConvertToInstance()`_ has been
+ successful. *obj* is the Python object. *type* is the generated type
+ corresponding to the C/C++ type returned. It may be any class in the
+ object's class hierarchy. *transferObj* controls any ownership changes to
+ *obj*. If it is ``NULL`` then the ownership is unchanged. If it is
+ ``Py_None`` then ownership is transferred to Python via a call to
+ `sipTransferBack()`_. Otherwise ownership is transferred to C/C++ and
+ *obj* associated with *transferObj* via a call to `sipTransferTo()`_.
+ *flags* is any combination of the following values used to fine tune the
+ check.
+
+ - ``SIP_NOT_NONE`` causes the check to fail if *obj* is ``None``.
+
+ - ``SIP_NO_CONVERTORS`` suppresses the use of of any
+ `%ConvertToTypeCode`_ for *type*.
+
+ If *state* is not ``NULL`` then the location it points to is set to
+ describe the state of the returned C/C++ instance and is the value returned
+ by any `%ConvertToTypeCode`_. The calling code must then release the value
+ at some point to prevent a memory leak by calling `sipReleaseInstance()`_.
+ If there is an error then the location *iserr* points to is set to a
+ non-zero value. If it was initially a non-zero value then the conversion
+ isn't attempted in the first place. (This allows several calls to be made
+ that share the same error flag so that it only needs to be tested once
+ rather than after each call.)
+
+
+sipConvertToMappedType()
+------------------------
+
+void \*sipConvertToMappedType(PyObject \*obj, const sipMappedType \*mt, PyObject \*transferObj, int flags, int \*state, int \*iserr)
+ This converts a Python object to an instance of a C structure or C++
+ class that is implemented as a mapped type assuming that a previous call to
+ `sipCanConvertToMappedType()`_ has been successful. *obj* is the Python
+ object. *mt* is the opaque structure returned by `sipFindMappedType()`_.
+ *transferObj* controls any ownership changes to *obj*. If it is ``NULL``
+ then the ownership is unchanged. If it is ``Py_None`` then ownership is
+ transferred to Python via a call to `sipTransferBack()`_. Otherwise
+ ownership is transferred to C/C++ and *obj* associated with *transferObj*
+ via a call to `sipTransferTo()`_. *flags* is any combination of the
+ following values used to fine tune the check.
+
+ - ``SIP_NOT_NONE`` causes the check to fail if *obj* is ``None``.
+
+ If *state* is not ``NULL`` then the location it points to is set to
+ describe the state of the returned C/C++ instance and is the value returned
+ by any `%ConvertToTypeCode`_. The calling code must then release the value
+ at some point to prevent a memory leak by calling
+ `sipReleaseMappedType()`_. If there is an error then the location *iserr*
+ points to is set to a non-zero value. If it was initially a non-zero value
+ then the conversion isn't attempted in the first place. (This allows
+ several calls to be made that share the same error flag so that it only
+ needs to be tested once rather than after each call.)
+
+
+sipDisconnectRx()
+-----------------
+
+PyObject \*sipDisconnectRx(PyObject \*sender, const char \*signal, PyObject \*receiver, const char \*slot)
+ This disconnects a signal from a signal or slot and returns ``Py_True`` if
+ the signal was disconnected or ``Py_False`` if not. If there was some
+ other error then a Python exception is raised and ``NULL`` is returned.
+ *sender* is the wrapped ``QObject`` derived instance that emits the signal.
+ *signal* is the typed name of the signal. *receiver* is the wrapped
+ ``QObject`` derived instance or Python callable that the signal is
+ connected to. *slot* is the typed name of the slot, or ``NULL`` if
+ *receiver* is a Python callable. It is normally only used by PyQt to
+ implement ``QObject.disconnect()``.
+
+
+sipEmitSignal()
+---------------
+
+int sipEmitSignal(PyObject \*txobj, const char \*signal, PyObject \*args)
+ This emits a signal and returns zero if there was no error. If there was
+ an error then a Python exception is raised and a negative value is
+ returned. *txobj* is the wrapped ``QObject`` derived instance that emits
+ the signal. *signal* is the typed name of the signal. *args* is a Python
+ tuple of the signal arguments. It is normally only used by PyQt to
+ implement ``QObject.emit()``.
+
+
+sipExportSymbol()
+-----------------
+
+int sipExportSymbol(const char \*name, void \*sym)
+ Python does not allow extension modules to directly access symbols in
+ another extension module. This exports a symbol, referenced by a name,
+ that can subsequently be imported, using `sipImportSymbol()`_, by another
+ module. *name* is the name of the symbol and *sym* is its value. Zero is
+ returned if there was no error. A negative value is returned if *name* is
+ already associated with a symbol or there was some other error.
+
+
+sipFindClass()
+--------------
+
+sipWrapperType \*sipFindClass(const char \*type)
+ This returns a pointer to the generated type corresponding to a C/C++ type.
+ *type* is the C/C++ declaration of the type. ``NULL`` is returned if the
+ C/C++ type doesn't exist. The value of the pointer will not change and
+ may be saved in a static cache.
+
+
+sipFindMappedType()
+-------------------
+
+const sipMappedType \*sipFindMappedType(const char \*type)
+ This returns a pointer to an opaque structure describing a mapped type.
+ *type* is the C/C++ declaration of the type. ``NULL`` is returned if the
+ mapped type doesn't exist. The value of the pointer will not change and
+ may be saved in a static cache.
+
+
+sipFindNamedEnum()
+------------------
+
+PyTypeObject \*sipFindNamedEnum(const char \*type)
+ This returns a pointer to the generated type corresponding to a named C/C++
+ enum. *type* is the C/C++ declaration of the enum. ``NULL`` is returned
+ if the named C/C++ enum doesn't exist. The value of the pointer will not
+ change and may be saved in a static cache.
+
+
+sipForceConvertToInstance()
+---------------------------
+
+void \*sipForceConvertToInstance(PyObject \*obj, sipWrapperType \*type, PyObject \*transferObj, int flags, int \*state, int \*iserr)
+ This converts a Python object to an instance of a C structure or C++ class
+ by calling `sipCanConvertToInstance()`_ and, if it is successfull, calling
+ `sipConvertToInstance()`_. See `sipConvertToInstance()`_ for a full
+ description of the arguments.
+
+
+sipForceConvertToMappedType()
+-----------------------------
+
+void \*sipForceConvertToMappedType(PyObject \*obj, const sipMappedType \*mt, PyObject \*transferObj, int flags, int \*state, int \*iserr)
+ This converts a Python object to an instance of a C structure or C++ class
+ which has been implemented as a mapped type by calling
+ `sipCanConvertToMappedType()`_ and, if it is successfull, calling
+ `sipConvertToMappedType()`_. See `sipConvertToMappedType()`_ for a full
+ description of the arguments.
+
+
+sipFree()
+---------
+
+void sipFree(void \*mem)
+ This returns an area of memory allocated by `sipMalloc()`_ to the heap.
+ *mem* is a pointer to the area of memory.
+
+
+sipGetSender()
+--------------
+
+const void \*sipGetSender()
+ This returns a pointer to the last ``QObject`` instance that emitted a Qt
+ signal. It is normally only used by PyQt to implement
+ ``QObject.sender()``.
+
+
+sipGetWrapper()
+---------------
+
+PyObject \*sipGetWrapper(void \*cppptr, sipWrapperType \*type)
+ This returns a borrowed reference to the wrapped instance object for a C
+ structure or C++ class instance. If the structure or class instance
+ hasn't been wrapped then ``NULL`` is returned (and no Python exception is
+ raised). *cppptr* is the pointer to the structure or class instance.
+ *type* is the generated type corresponding to the C/C++ type.
+
+
+sipImportSymbol()
+-----------------
+
+void \*sipImportSymbol(const char \*name)
+ Python does not allow extension modules to directly access symbols in
+ another extension module. This imports a symbol, referenced by a name,
+ that has previously been exported, using `sipExportSymbol()`_, by another
+ module. *name* is the name of the symbol. The value of the symbol is
+ returned if there was no error. ``NULL`` is returned if there is no such
+ symbol.
+
+
+sipIntTypeClassMap
+------------------
+
+This C structure is used with `sipMapIntToClass()`_ to define a mapping
+between integer based RTTI and `generated type objects`_. The structure
+elements are as follows.
+
+int typeInt
+ The integer RTTI.
+
+sipWrapperType \*\*pyType.
+ A pointer to the corresponding Python type object.
+
+
+sipIsSubClassInstance()
+-----------------------
+
+int sipIsSubClassInstance(PyObject \*obj, sipWrapperType \*type)
+ This function is deprecated from SIP v4.4. It is equivalent to::
+
+ sipCanConvertToInstance(obj, type, SIP_NOT_NONE | SIP_NO_CONVERTORS);
+
+
+sipLong_AsUnsignedLong()
+------------------------
+
+unsigned long sipLong_AsUnsignedLong(PyObject \*obj)
+ This function is a thin wrapper around PyLong_AsUnsignedLong() that works
+ around a bug in Python v2.3.x and earlier when converting integer objects.
+
+
+sipMalloc()
+-----------
+
+void \*sipMalloc(size_t nbytes)
+ This allocates an area of memory of size *nytes* on the heap using the
+ Python ``PyMem_Malloc()`` function. If there was an error then ``NULL`` is
+ returned and a Python exception raised. See `sipFree()`_.
+
+
+sipMapIntToClass()
+------------------
+
+sipWrapperType \*sipMapIntToClass(int type, const sipIntTypeClassMap \*map, int maplen)
+ This is used in `%ConvertToSubClassCode`_ code as a convenient way of
+ converting integer based RTTI to the corresponding Python type object.
+ *type* is the RTTI. *map* is the table of known RTTI and the corresponding
+ type objects (see sipIntTypeClassMap_). The entries in the table must be
+ sorted in ascending order of RTTI. *maplen* is the number of entries in
+ the table. The corresponding Python type object is returned, or ``NULL``
+ if *type* wasn't in *map*.
+
+
+sipMapStringToClass()
+---------------------
+
+sipWrapperType \*sipMapStringToClass(char \*type, const sipStringTypeClassMap \*map, int maplen)
+ This is used in `%ConvertToSubClassCode`_ code as a convenient way of
+ converting ``'\0'`` terminated string based RTTI to the corresponding
+ Python type object. *type* is the RTTI. *map* is the table of known RTTI
+ and the corresponding type objects (see sipStringTypeClassMap_). The
+ entries in the table must be sorted in ascending order of RTTI. *maplen*
+ is the number of entries in the table. The corresponding Python type
+ object is returned, or ``NULL`` if *type* wasn't in *map*.
+
+
+sipParseResult()
+----------------
+
+int sipParseResult(int \*iserr, PyObject \*method, PyObject \*result, const char \*format, ...)
+ This converts a Python object (usually returned by a method) to C/C++ based
+ on a format string and associated values in a similar way to the Python
+ ``PyArg_ParseTuple()`` function. If there was an error then a negative
+ value is returned and a Python exception is raised. If *iserr* is not
+ ``NULL`` then the location it points to is set to a non-zero value.
+ *method* is the Python bound method that returned the *result* object.
+ *format* is the string of format characters.
+
+ This is normally called by handwritten code specified with the
+ `%VirtualCatcherCode`_ directive with *method* being the supplied
+ ``sipMethod`` and ``result`` being the value returned by
+ `sipCallMethod()`_.
+
+ If *format* begins and ends with parentheses then *result* must be a Python
+ tuple and the rest of *format* is applied to the tuple contents.
+
+ In the following description the first letter is the format character, the
+ entry in parentheses is the Python object type that the format character
+ will convert, and the entry in brackets are the types of the C/C++ values
+ to be passed.
+
+ ``a`` (string) [char \*\*, int \*]
+ Convert a Python string to a C/C++ character array and its length. If
+ the Python object is ``Py_None`` then the array and length are ``NULL``
+ and zero respectively.
+
+ ``b`` (integer) [bool \*]
+ Convert a Python integer to a C/C++ ``bool``.
+
+ ``c`` (string) [char \*]
+ Convert a Python string of length 1 to a C/C++ ``char``.
+
+ ``d`` (float) [double \*]
+ Convert a Python floating point number to a C/C++ ``double``.
+
+ ``e`` (integer) [enum \*]
+ Convert a Python integer to an anonymous C/C++ ``enum``.
+
+ ``f`` (float) [float \*]
+ Convert a Python floating point number to a C/C++ ``float``.
+
+ ``h`` (integer) [short \*]
+ Convert a Python integer to a C/C++ ``short``.
+
+ ``i`` (integer) [int \*]
+ Convert a Python integer to a C/C++ ``int``.
+
+ ``l`` (long) [long \*]
+ Convert a Python long to a C/C++ ``long``.
+
+ ``m`` (long) [unsigned long \*]
+ Convert a Python long to a C/C++ ``unsigned long``.
+
+ ``n`` (long) [long long \*]
+ Convert a Python long to a C/C++ ``long long``.
+
+ ``o`` (long) [unsigned long long \*]
+ Convert a Python long to a C/C++ ``unsigned long long``.
+
+ ``s`` (string) [char \*\*]
+ Convert a Python string to a C/C++ ``'\0'`` terminated string. If the
+ Python object is ``Py_None`` then the string is ``NULL``.
+
+ ``t`` (long) [unsigned short \*]
+ Convert a Python long to a C/C++ ``unsigned short``.
+
+ ``u`` (long) [unsigned int \*]
+ Convert a Python long to a C/C++ ``unsigned int``.
+
+ ``w`` (unicode) [wchar_t \*]
+ Convert a Python unicode object of length 1 to a C/C++ wide character.
+
+ ``x`` (unicode) [wchar_t \*\*]
+ Convert a Python unicode object to a C/C++ ``L'\0'`` terminated wide
+ character string. If the Python object is ``Py_None`` then the string
+ is ``NULL``.
+
+ ``A`` (unicode) [wchar_t \*\*, int \*]
+ Convert a Python unicode object to a C/C++ wide character array and its
+ length. If the Python object is ``Py_None`` then the array and length
+ are ``NULL`` and zero respectively.
+
+ ``Cf`` (wrapped class) [sipWrapperType \*, int \*, void \*\*]
+ Convert a Python object to a C structure or a C++ class instance and
+ return its state as described in `sipConvertToInstance()`_. ``f`` is a
+ combination of the following flags encoded as an ASCII character by
+ adding ``0`` to the combined value:
+
+ 0x01 disallows the conversion of ``Py_None`` to ``NULL``
+
+ 0x02 implements the `Factory`_ annotation
+
+ 0x04 suppresses the return of the state of the returned C/C++
+ instance. Note that the ``int *`` used to return the state is
+ not passed if this flag is specified.
+
+ ``Df`` (mapped type) [const sipMappedType \*, int \*, void \*\*]
+ Convert a Python object to a C structure or a C++ class instance
+ implemented as a mapped type and return its state as described in
+ `sipConvertToMappedType()`_. ``f`` is a combination of the following
+ flags encoded as an ASCII character by adding ``0`` to the combined
+ value:
+
+ 0x01 disallows the conversion of ``Py_None`` to ``NULL``
+
+ 0x02 implements the `Factory`_ annotation
+
+ 0x04 suppresses the return of the state of the returned C/C++
+ instance. Note that the ``int *`` used to return the state is
+ not passed if this flag is specified.
+
+ ``E`` (wrapped enum) [PyTypeObject \*, enum \*]
+ Convert a Python named enum type to the corresponding C/C++ ``enum``.
+
+ ``L`` (object) [*type* \*(\*)(PyObject \*obj, int \*iserr), void \*\*]
+ Convert a Python object to a C structure or a C++ class instance using
+ a convertor function. See `Generated Type Convertors`_. This is
+ deprecated from SIP v4.4.
+
+ ``M`` (object) [*type* \*(\*)(PyObject \*obj, int \*iserr), void \*\*]
+ Convert a Python object to a C structure or a C++ class instance using
+ a convertor function. If the structure or class instance pointer is
+ ``NULL`` then return an error. See `Generated Type Convertors`_. This
+ is deprecated from SIP v4.4.
+
+ ``N`` (object) [PyTypeObject \*, PyObject \*\*]
+ A Python object is checked to see if it is a certain type and then
+ returned without any conversions. The reference count is incremented.
+ The Python object may be ``Py_None``.
+
+ ``O`` (object) [PyObject \*\*]
+ A Python object is returned without any conversions. The reference
+ count is incremented.
+
+ ``T`` (object) [PyTypeObject \*, PyObject \*\*]
+ A Python object is checked to see if it is a certain type and then
+ returned without any conversions. The reference count is incremented.
+ The Python object may not be ``Py_None``.
+
+ ``V`` (sip.voidptr) [void \*]
+ Convert a Python ``sip.voidptr`` object to a C/C++ ``void *``.
+
+ ``Z`` (object) []
+ Check that a Python object is ``Py_None``. No value is returned.
+
+
+sipReleaseInstance()
+--------------------
+
+void sipReleaseInstance(void \*cpp, sipWrapperType \*type, int state)
+ This destroys a wrapped C/C++ instance if it was a temporary instance. It
+ is called after a call to either `sipConvertToInstance()`_ or
+ `sipForceConvertToInstance()`_. *cpp* is the wrapped C/C++ instance.
+ *type* is the generated type corresponding to *cpp*. *state* describes the
+ state of the instance.
+
+
+sipReleaseMappedType()
+----------------------
+
+void sipReleaseMappedType(void \*cpp, const sipMappedType \*mt, int state)
+ This destroys a wrapped C/C++ mapped type if it was a temporary instance.
+ It is called after a call to either `sipConvertToMappedType()`_ or
+ `sipForceConvertToMappedType()`_. *cpp* is the wrapped C/C++ instance.
+ *mt* is the opaque structure returned by `sipFindMappedType()`_. *state*
+ describes the state of the instance.
+
+
+sipStringTypeClassMap
+---------------------
+
+This C structure is used with `sipMapStringToClass()`_ to define a mapping
+between ``'\0'`` terminated string based RTTI and `generated type objects`_.
+The structure elements are as follows.
+
+char \*typeString
+ The ``'\0'`` terminated string RTTI.
+
+sipWrapperType \*\*pyType.
+ A pointer to the corresponding Python type object.
+
+
+sipTransfer()
+-------------
+
+void sipTransfer(PyObject \*obj, int tocpp)
+ This function is deprecated from SIP v4.3. If *tocpp* is non-zero then the
+ equivalent call is::
+
+ sipTransferTo(obj, obj);
+
+ If *tocpp* is zero then the equivalent call is::
+
+ sipTransferBack(obj);
+
+
+sipTransferBack()
+-----------------
+
+void sipTransferBack(PyObject \*obj)
+ This transfers ownership of a Python wrapped instance to Python (see
+ `Ownership of Objects`_). *obj* is the wrapped instance. In addition,
+ any association of the instance with regard to the cyclic garbage
+ collector with another instance is removed.
+
+
+sipTransferTo()
+---------------
+
+void sipTransferTo(PyObject \*obj, PyObject \*owner)
+ This transfers ownership of a Python wrapped instance to C++ (see
+ `Ownership of Objects`_). *obj* is the wrapped instance. *owner* is an
+ optional wrapped instance that *obj* becomes associated with with regard
+ to the cyclic garbage collector. If *owner* is ``NULL`` then no such
+ association is made. If *owner* is the same value as *obj* then any
+ reference cycles involving *obj* can never be detected or broken by the
+ cyclic garbage collector. Responsibility for calling the C++ instance's
+ destructor is always transfered to C++.
+
+
+sipWrapper
+----------
+
+This is a C structure that represents a Python wrapped instance. It is an
+extension of the Python ``PyObject`` structure and so may be safely cast to
+``PyObject``. It includes a member called ``user`` which is of type
+``PyObject *``. This can be used for any purpose by handwritten code and will
+automatically be garbage collected at the appropriate time.
+
+
+sipWrapper_Check()
+------------------
+
+int sipWrapper_Check(PyObject \*obj)
+ This returns a non-zero value if a Python object is a wrapped instance.
+ *obj* is the Python object.
+
+
+sipWrapperType
+--------------
+
+This is a C structure that represents a SIP generated type object. It is an
+extension of the Python ``PyTypeObject`` structure (which is itself an
+extension of the Python ``PyObject`` structure) and so may be safely cast to
+``PyTypeObject`` (and ``PyObject``).
+
+
+Generated Type Convertors
+-------------------------
+
+These functions are deprecated from SIP v4.4.
+
+SIP generates functions for all types being wrapped (including mapped types
+defined with the `%MappedType`_ directive) that convert a Python object to the
+C structure or C++ class instance. The name of this convertor is the name of
+the structure or class prefixed by ``sipForceConvertTo_``.
+
+void \*sipForceConvertTo_*class*(PyObject \*obj, int \*iserr)
+ *obj* is the Python object to convert. If *obj* is ``NULL`` or the
+ location pointed to by *iserr* is non-zero then the conversion is not
+ attempted and ``NULL`` is returned. If there was an error then the
+ location pointed to by *iserr* is set to a non-zero value, a Python
+ exception is raised, and ``NULL`` is returned.
+
+SIP also generates functions for mapped types that convert a C structure or
+C++ class instance to a Python object. The name of this convertor is the name
+of the structure or class prefixed by ``sipConvertFrom_``.
+
+PyObject \*sipConvertFrom_*class*(void \*cppptr)
+ *cppptr* is a pointer to the C structure or C++ class instance to convert.
+ If there was an error then ``NULL`` is returned and a Python exception
+ raised.
+
+The convertor functions of all imported types are available to handwritten
+code.
+
+
+Generated Type Objects
+----------------------
+
+SIP generates a type object for each C structure or C++ class being wrapped.
+These are sipWrapperType_ structures and are used extensively by the SIP API.
+
+These objects are named with the structure or class name prefixed by
+``sipClass_``. For example, the type object for class ``Klass`` is
+``sipClass_Klass``.
+
+The type objects of all imported classes are available to handwritten code.
+
+
+Generated Named Enum Type Objects
+---------------------------------
+
+SIP generates a type object for each named enum being wrapped. These are
+PyTypeObject structures. (Anonymous enums are wrapped as Python integers.)
+
+These objects are named with the fully qualified enum name (i.e. including any
+enclosing scope) prefixed by ``sipEnum_``. For example, the type object for
+enum ``Enum`` defined in class ``Klass`` is ``sipEnum_Klass_Enum``.
+
+The type objects of all imported named enums are available to handwritten code.
+
+
+Generated Derived Classes
+-------------------------
+
+For most C++ classes being wrapped SIP generates a derived class with the same
+name prefixed by ``sip``. For example, the derived class for class ``Klass``
+is ``sipKlass``.
+
+If a C++ class doesn't have any virtual or protected methods in it or any of
+it's super-class hierarchy, or does not emit any Qt signals, then a derived
+class is not generated.
+
+Most of the time handwritten code should ignore the derived classes. The only
+exception is that handwritten constructor code specified using the
+`%MethodCode`_ directive should call the derived class's constructor (which
+has the same C++ signature) rather then the wrapped class's constructor.
+
+
+Generated Exception Objects
+---------------------------
+
+SIP generates a Python object for each exception defined with the `%Exception_`
+directive.
+
+These objects are named with the fully qualified exception name (i.e. including
+any enclosing scope) prefixed by ``sipException_``. For example, the type
+object for enum ``Except`` defined in class ``Klass`` is
+``sipException_Klass_Except``.
+
+The objects of all imported exceptions are available to handwritten code.
+
+
+Using the SIP Module in Applications
+====================================
+
+The main purpose of the SIP module is to provide functionality common to all
+SIP generated bindings. It is loaded automatically and most of the time you
+will completely ignore it. However, it does expose some functionality that can
+be used by applications.
+
+cast(obj, type)
+ This does the Python equivalent of casting a C++ instance to one of its
+ sub or super-class types. *obj* is the Python object and *type* is the
+ type. A new Python object is returned that wraps the same C++ instance as
+ *obj*, but has the type *type*.
+
+delete(obj)
+ For C++ instances this calls the C++ destructor. For C structures it
+ returns the structure's memory to the heap. *obj* is the Python object.
+
+isdeleted(obj)
+ This returns True if the C++ instance or C structure has been destroyed or
+ returned to the heap. *obj* is the Python object.
+
+setdeleted(obj)
+ This marks the C++ instance or C structure as having been destroyed or
+ returned to the heap so that future references to it raise an exception
+ rather than cause a program crash. Normally SIP handles such things
+ automatically, but there are circumstances where this isn't possible.
+ *obj* is the Python object.
+
+settracemask(mask)
+ If the bindings have been created with SIP's ``-r`` command line option
+ then the generated code will produce debugging statements that trace the
+ execution of the code. (It is particularly useful when trying to
+ understand the operation of a C++ library's virtual function calls.)
+
+ Debugging statements are generated at the following points:
+
+ - in a C++ virtual function (*mask* is ``0x0001``)
+ - in a C++ constructor (*mask* is ``0x0002``)
+ - in a C++ destructor (*mask* is ``0x0004``)
+ - in a Python type's __init__ method (*mask* is ``0x0008``)
+ - in a Python type's __del__ method (*mask* is ``0x0010``)
+ - in a Python type's ordinary method (*mask* is ``0x0020``).
+
+ By default the trace mask is zero and all debugging statements are
+ disabled.
+
+SIP_VERSION
+ This is a Python integer object that represents the SIP version number as
+ a 3 part hexadecimal number (e.g. v4.0.0 is represented as ``0x040000``).
+ It was first implemented in SIP v4.2.
+
+SIP_VERSION_STR
+ This is a Python string object that defines the SIP version number as
+ represented as a string. For development snapshots it will start with
+ ``snapshot-``. It was first implemented in SIP v4.3.
+
+transfer(obj, direction)
+ This function is deprecated from SIP v4.3. If *direction* is non-zero then
+ the equivalent call is::
+
+ sip.transferto(obj, None)
+
+ If *direction* is zero then the equivalent call is::
+
+ sip.transferback(obj)
+
+transferback(obj)
+ This function is a wrapper around `sipTransferBack()`_.
+
+transferto(obj, owner)
+ This function is a wrapper around `sipTransferTo()`_.
+
+unwrapinstance(obj)
+ Return the address, as a number, of the wrapped C/C++ structure or class
+ instance *obj*.
+
+voidptr
+ This is the type object for the type SIP uses to represent a C/C++
+ ``void *``. The type constructor takes a single argument that must either
+ be another ``voidptr``, ``None``, a Python CObject, or an integer. The
+ type has the following methods:
+
+ __int__()
+ This returns the pointer as an integer.
+
+ __hex__()
+ This returns the pointer as a hexadecimal string.
+
+ ascobject()
+ This returns the pointer as a Python CObject.
+
+ asstring(nbytes)
+ This returns a copy of the first *nbytes* of memory at the pointer as a
+ Python string.
+
+wrapinstance(addr, type)
+ A C/C++ structure or class instance is wrapped and the Python object
+ created is returned. If the instance has already been wrapped then a new
+ reference to the existing object is returned. *addr* is the address of
+ the instance represented as a number. *type* is the type of the object
+ (e.g. ``qt.QWidget``).
+
+wrapper
+ This is the type object of the base type of all instances wrapped by SIP.
+
+wrappertype
+ This is the type object of the metatype of the ``wrapper`` type.
+
+
+The SIP Build System
+====================
+
+The purpose of the build system is to make it easy for you to write
+configuration scripts in Python for your own bindings. The build system takes
+care of the details of particular combinations of platform and compiler. It
+supports over 50 different platform/compiler combinations.
+
+The build system is implemented as a pure Python module called ``sipconfig``
+that contains a number of classes and functions. Using this module you can
+write bespoke configuration scripts (e.g. PyQt's ``configure.py``) or use it
+with other Python based build systems (e.g.
+`Distutils <http://www.python.org/sigs/distutils-sig/distutils.html>`_ and
+`SCons <http://www.scons.org>`_).
+
+An important feature of SIP is the ability to generate bindings that are built
+on top of existing bindings. For example, both
+`PyKDE <http://www.riverbankcomputing.co.uk/pykde/>`_ and
+`PyQwt <http://pyqwt.sourceforge.net/>`_ are built on top of PyQt but all three
+packages are maintained by different developers. To make this easier PyQt
+includes its own configuration module, ``pyqtconfig``, that contains additional
+classes intended to be used by the configuration scripts of bindings built on
+top of PyQt. The SIP build system includes facilities that do a lot of the
+work of creating these additional configuration modules.
+
+
+``sipconfig`` Functions
+-----------------------
+
+create_config_module(module, template, content, macros=None)
+ This creates a configuration module (e.g. ``pyqtconfig``) from a template
+ file and a string.
+
+ ``module`` is the name of the configuration module file to create.
+
+ ``template`` is the name of the template file.
+
+ ``content`` is a string which replaces every occurence of the pattern
+ ``@SIP_CONFIGURATION@`` in the template file. The content string is
+ usually created from a Python dictionary using
+ ``sipconfig.create_content()``. ``content`` may also be a dictionary, in
+ which case ``sipconfig.create_content()`` is automatically called to
+ convert it to a string.
+
+ ``macros`` is an optional dictionary of platform specific build macros. It
+ is only used if ``sipconfig.create_content()`` is called automatically to
+ convert a ``content`` dictionary to a string.
+
+create_content(dict, macros=None)
+ This converts a Python dictionary to a string that can be parsed by the
+ Python interpreter and converted back to an equivalent dictionary. It is
+ typically used to generate the content string for
+ ``sipconfig.create_config_module()``.
+
+ ``dict`` is the Python dictionary to convert.
+
+ ``macros`` is the optional dictionary of platform specific build macros.
+
+ Returns the dictionary as a string.
+
+create_wrapper(script, wrapper, gui=0)
+ This creates a platform dependent executable wrapper around a Python
+ script.
+
+ ``script`` is the full pathname of the script.
+
+ ``wrapper`` is the pathname of the wrapper to create.
+
+ ``gui`` is non-zero if a GUI enabled version of the interpreter should be
+ used on platforms that require it.
+
+ Returns the platform specific name of the wrapper.
+
+error(msg)
+ This displays an error message on ``stderr`` and calls ``sys.exit()`` with
+ a value of 1.
+
+ ``msg`` is the text of the message and should not include any newline
+ characters.
+
+format(msg, leftmargin=0, rightmargin=78)
+ This formats a message by inserting newline characters at appropriate
+ places.
+
+ ``msg`` is the text of the message and should not include any newline
+ characters.
+
+ ``leftmargin`` is the optional position of the left margin.
+
+ ``rightmargin`` is the optional position of the right margin.
+
+inform(msg)
+ This displays an information message on ``stdout``.
+
+ ``msg`` is the text of the message and should not include any newline
+ characters.
+
+parse_build_macros(filename, names, overrides=None, properties=None)
+ This parses a qmake compatible file of build system macros and converts it
+ to a dictionary. A macro is a name/value pair. The dictionary is returned
+ or None if any of the overrides was invalid.
+
+ ``filename`` is the name of the file to parse.
+
+ ``names`` is a list of the macro names to extract from the file.
+
+ ``overrides`` is an optional list of macro names and values that modify
+ those found in the file. They are of the form *name=value* (in which case
+ the value replaces the value found in the file) or *name+=value* (in which
+ case the value is appended to the value found in the file).
+
+ ``properties`` is an optional dictionary of property name and values that
+ are used to resolve any expressions of the form ``$[name]`` in the file.
+
+read_version(filename, description, numdefine=None, strdefine=None)
+ This extracts version information for a package from a file, usually a C or
+ C++ header file. The version information must each be specified as a
+ ``#define`` of a numeric (hexadecimal or decimal) value and/or a string
+ value.
+
+ ``filename`` is the name of the file to read.
+
+ ``description`` is a descriptive name of the package used in error
+ messages.
+
+ ``numdefine`` is the optional name of the ``#define`` of the version as a
+ number. If it is ``None`` then the numeric version is ignored.
+
+ ``strdefine`` is the optional name of the ``#define`` of the version as a
+ string. If it is ``None`` then the string version is ignored.
+
+ Returns a tuple of the numeric and string versions. ``sipconfig.error()``
+ is called if either were required but could not be found.
+
+version_to_sip_tag(version, tags, description)
+ This converts a version number to a SIP version tag. SIP uses the
+ `%Timeline`_ directive to define the chronology of the different versions
+ of the C/C++ library being wrapped. Typically it is not necessary to
+ define a version tag for every version of the library, but only for those
+ versions that affect the library's API as SIP sees it.
+
+ ``version`` is the numeric version number of the C/C++ library being
+ wrapped. If it is negative then the latest version is assumed. (This is
+ typically useful if a snapshot is indicated by a negative version number.)
+
+ ``tags`` is the dictionary of SIP version tags keyed by the corresponding
+ C/C++ library version number. The tag used is the one with the smallest
+ key (i.e. earliest version) that is greater than ``version``.
+
+ ``description`` is a descriptive name of the C/C++ library used in error
+ messages.
+
+ Returns the SIP version tag. ``sipconfig.error()`` is called if the C/C++
+ library version number did not correspond to a SIP version tag.
+
+version_to_string(v)
+ This converts a 3 part version number encoded as a hexadecimal value to a
+ string.
+
+ ``v`` is the version number.
+
+ Returns a string.
+
+
+``sipconfig`` Classes
+---------------------
+
+Configuration
+ This class encapsulates configuration values that can be accessed as
+ instance objects. A sub-class may provide a dictionary of additional
+ configuration values in its constructor the elements of which will have
+ precedence over the super-class's values.
+
+ The following configuration values are provided:
+
+ default_bin_dir
+ The name of the directory where executables should be installed by
+ default.
+
+ default_mod_dir
+ The name of the directory where SIP generated modules should be
+ installed by default.
+
+ default_sip_dir
+ The name of the base directory where the ``.sip`` files for SIP
+ generated modules should be installed by default. A sub-directory
+ with the same name as the module should be created and its ``.sip``
+ files should be installed in the sub-directory. The ``.sip``
+ files only need to be installed if you might want to build other
+ bindings based on them.
+
+ platform
+ The name of the platform/compiler for which the build system has
+ been configured for.
+
+ py_conf_inc_dir
+ The name of the directory containing the ``pyconfig.h`` header
+ file.
+
+ py_inc_dir
+ The name of the directory containing the ``Python.h`` header file.
+
+ py_lib_dir
+ The name of the directory containing the Python interpreter
+ library.
+
+ py_version
+ The Python version as a 3 part hexadecimal number (e.g. v2.3.3 is
+ represented as ``0x020303``).
+
+ sip_bin
+ The full pathname of the SIP executable.
+
+ sip_config_args
+ The command line passed to ``configure.py`` when SIP was
+ configured.
+
+ sip_inc_dir
+ The name of the directory containing the ``sip.h`` header file.
+
+ sip_mod_dir
+ The name of the directory containing the SIP module.
+
+ sip_version
+ The SIP version as a 3 part hexadecimal number (e.g. v4.0.0 is
+ represented as ``0x040000``).
+
+ sip_version_str
+ The SIP version as a string. For development snapshots it will
+ start with ``snapshot-``.
+
+ universal
+ The name of the MacOS/X SDK used when creating universal binaries.
+
+ __init__(self, sub_cfg=None)
+ Initialise the instance.
+
+ ``sub_cfg`` is an optional list of sub-class configurations. It should
+ only be used by the ``__init__()`` method of a sub-class to append its
+ own dictionary of configuration values before passing the list to its
+ super-class.
+
+ build_macros(self)
+ Return the dictionary of platform specific build macros.
+
+ set_build_macros(self, macros)
+ Set the dictionary of platform specific build macros to be use when
+ generating Makefiles. Normally there is no need to change the default
+ macros.
+
+Makefile
+ This class encapsulates a Makefile. It is intended to be sub-classed to
+ generate Makefiles for particular purposes. It handles all platform and
+ compiler specific flags, but allows them to be adjusted to suit the
+ requirements of a particular module or program. These are defined using a
+ number of macros which can be accessed as instance objects.
+
+ The following instance objects are provided to help in fine tuning the
+ generated Makefile:
+
+ chkdir
+ A string that will check for the existence of a directory.
+
+ config
+ A reference to the ``configuration`` argument that was passed to
+ the constructor.
+
+ console
+ A reference to the ``console`` argument that was passed to the
+ constructor.
+
+ copy
+ A string that will copy a file.
+
+ extra_cflags
+ A list of additional flags passed to the C compiler.
+
+ extra_cxxflags
+ A list of additional flags passed to the C++ compiler.
+
+ extra_defines
+ A list of additional macro names passed to the C/C++ preprocessor.
+
+ extra_include_dirs
+ A list of additional include directories passed to the C/C++
+ preprocessor.
+
+ extra_lflags
+ A list of additional flags passed to the linker.
+
+ extra_lib_dirs
+ A list of additional library directories passed to the linker.
+
+ extra_libs
+ A list of additional libraries passed to the linker. The names of
+ the libraries must be in platform neutral form (i.e. without any
+ platform specific prefixes, version numbers or extensions).
+
+ generator
+ A string that defines the platform specific style of Makefile. The
+ only supported values are ``UNIX`` and something else that is not
+ ``UNIX``.
+
+ mkdir
+ A string that will create a directory.
+
+ rm
+ A string that will remove a file.
+
+ __init__(self, configuration, console=0, qt=0, opengl=0, python=0, threaded=0, warnings=None, debug=0, dir=None, makefile="Makefile", installs=None, universal='')
+ Initialise the instance.
+
+ ``configuration`` is the current configuration and is an instance of
+ the ``Configuration`` class or a sub-class.
+
+ ``console`` is set if the target is a console (rather than GUI) target.
+ This only affects Windows and is ignored on other platforms.
+
+ ``qt`` is set if the target uses Qt. For Qt v4 a list of Qt libraries
+ may be specified and a simple non-zero value implies QtCore and QtGui.
+
+ ``opengl`` is set if the target uses OpenGL.
+
+ ``python`` is set if the target uses Python.h.
+
+ ``threaded`` is set if the target requires thread support. It is set
+ automatically if the target uses Qt and Qt has thread support enabled.
+
+ ``warnings`` is set if compiler warning messages should be enabled.
+ The default of ``None`` means that warnings are enabled for SIP v4.x
+ and disabled for SIP v3.x.
+
+ ``debug`` is set if debugging symbols should be generated.
+
+ ``dir`` is the name of the directory where build files are read from
+ and Makefiles are written to. The default of ``None`` means the
+ current directory is used.
+
+ ``makefile`` is the name of the generated Makefile.
+
+ ``installs`` is a list of extra install targets. Each element is a two
+ part list, the first of which is the source and the second is the
+ destination. If the source is another list then it is a list of source
+ files and the destination is a directory.
+
+ ``universal`` is the name of the SDK if universal binaries are to be
+ created under MacOS/X.
+
+ clean_build_file_objects(self, mfile, build)
+ This generates the Makefile commands that will remove any files
+ generated during the build of the default target.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ ``build`` is the dictionary created from parsing the build file.
+
+ finalise(self)
+ This is called just before the Makefile is generated to ensure that it
+ is fully configured. It must be reimplemented by a sub-class.
+
+ generate(self)
+ This generates the Makefile.
+
+ generate_macros_and_rules(self, mfile)
+ This is the default implementation of the Makefile macros and rules
+ generation.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ generate_target_clean(self, mfile)
+ This is the default implementation of the Makefile clean target
+ generation.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ generate_target_default(self, mfile)
+ This is the default implementation of the Makefile default target
+ generation.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ generate_target_install(self, mfile)
+ This is the default implementation of the Makefile install target
+ generation.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ install_file(self, mfile, src, dst, strip=0)
+ This generates the Makefile commands to install one or more files to a
+ directory.
+
+ ``mfile`` is the Python file object of the Makefile.
+
+ ``src`` is the name of a single file to install or a list of a number
+ of files to install.
+
+ ``dst`` is the name of the destination directory.
+
+ ``strip`` is set if the files should be stripped of unneeded symbols
+ after having been installed.
+
+ optional_list(self, name)
+ This returns an optional Makefile macro as a list.
+
+ ``name`` is the name of the macro.
+
+ Returns the macro as a list.
+
+ optional_string(self, name, default="")
+ This returns an optional Makefile macro as a string.
+
+ ``name`` is the name of the macro.
+
+ ``default`` is the optional default value of the macro.
+
+ Returns the macro as a string.
+
+ parse_build_file(self, filename)
+ This parses a build file (created with the ``-b`` SIP command line
+ option) and converts it to a dictionary. It can also validate an
+ existing dictionary created through other means.
+
+ ``filename`` is the name of the build file, or is a dictionary to be
+ validated. A valid dictionary will contain the name of the target to
+ build (excluding any platform specific extension) keyed by ``target``;
+ the names of all source files keyed by ``sources``; and, optionally,
+ the names of all header files keyed by ``headers``.
+
+ Returns a dictionary corresponding to the parsed build file.
+
+ platform_lib(self, clib, framework=0)
+ This converts a library name to a platform specific form.
+
+ ``clib`` is the name of the library in cannonical form.
+
+ ``framework`` is set if the library is implemented as a MacOS
+ framework.
+
+ Return the platform specific name.
+
+ ready(self)
+ This is called to ensure that the Makefile is fully configured. It is
+ normally called automatically when needed.
+
+ required_string(self, name)
+ This returns a required Makefile macro as a string.
+
+ ``name`` is the name of the macro.
+
+ Returns the macro as a string. An exception is raised if the macro
+ does not exist or has an empty value.
+
+ModuleMakefile(Makefile)
+ This class encapsulates a Makefile to build a generic Python extension
+ module.
+
+ __init__(self, configuration, build_file, install_dir=None, static=0, console=0, opengl=0, threaded=0, warnings=None, debug=0, dir=None, makefile="Makefile", installs=None, strip=1, export_all=0, universal='')
+ Initialise the instance.
+
+ ``configuration`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``build_file`` is the name of the build file. Build files are
+ generated using the ``-b`` SIP command line option.
+
+ ``install_dir`` is the name of the directory where the module will be
+ optionally installed.
+
+ ``static`` is set if the module should be built as a static library
+ (see `Builtin Modules and Custom Interpreters`_).
+
+ ``console`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``qt`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``opengl`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``threaded`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``warnings`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``debug`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``dir`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``makefile`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``installs`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``strip`` is set if the module should be stripped of unneeded symbols
+ after installation. It is ignored if either ``debug`` or ``static`` is
+ set, or if the platform doesn't support it.
+
+ ``export_all`` is set if all of the module's symbols should be exported
+ rather than just the module's initialisation function. Exporting all
+ symbols increases the size of the module and slows down module load
+ times but may avoid problems with modules that use C++ exceptions. All
+ symbols are exported if either ``debug`` or ``static`` is set, or if
+ the platform doesn't support it.
+
+ finalise(self)
+ This is a reimplementation of ``sipconfig.Makefile.finalise()``.
+
+ generate_macros_and_rules(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_macros_and_rules()``.
+
+ generate_target_clean(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_clean()``.
+
+ generate_target_default(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_default()``.
+
+ generate_target_install(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_install()``.
+
+ module_as_lib(self, mname)
+ This returns the name of a SIP v3.x module for when it is used as a
+ library to be linked against. An exception will be raised if it is
+ used with SIP v4.x modules.
+
+ ``mname`` is the name of the module.
+
+ Returns the corresponding library name.
+
+ParentMakefile(Makefile)
+ This class encapsulates a Makefile that sits above a number of other
+ Makefiles in sub-directories.
+
+ __init__(self, configuration, subdirs, dir=None, makefile="Makefile", installs=None)
+ Initialise the instance.
+
+ ``configuration`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``subdirs`` is the sequence of sub-directories.
+
+ ``dir`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``makefile`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``installs`` - see ``sipconfig.Makefile.__init__()``.
+
+ generate_macros_and_rules(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_macros_and_rules()``.
+
+ generate_target_clean(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_clean()``.
+
+ generate_target_default(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_default()``.
+
+ generate_target_install(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_install()``.
+
+ProgramMakefile(Makefile)
+ This class encapsulates a Makefile to build an executable program.
+
+ __init__(self, configuration, build_file=None, install_dir=None, console=0, qt=0, opengl=0, python=0, threaded=0, warnings=None, debug=0, dir=None, makefile="Makefile", installs=None, universal='')
+ Initialise the instance.
+
+ ``configuration`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``build_file`` is the name of the optional build file. Build files are
+ generated using the ``-b`` SIP command line option.
+
+ ``install_dir`` is the name of the directory where the executable
+ program will be optionally installed.
+
+ ``console`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``qt`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``opengl`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``python`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``threaded`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``warnings`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``debug`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``dir`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``makefile`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``installs`` - see ``sipconfig.Makefile.__init__()``.
+
+ build_command(self, source)
+ This creates a single command line that will create an executable
+ program from a single source file.
+
+ ``source`` is the name of the source file.
+
+ Returns a tuple of the name of the executable that will be created and
+ the command line.
+
+ finalise(self)
+ This is a reimplementation of ``sipconfig.Makefile.finalise()``.
+
+ generate_macros_and_rules(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_macros_and_rules()``.
+
+ generate_target_clean(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_clean()``.
+
+ generate_target_default(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_default()``.
+
+ generate_target_install(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_install()``.
+
+PythonModuleMakefile(Makefile)
+ This class encapsulates a Makefile that installs a pure Python module.
+
+ __init__(self, configuration, dstdir, srcdir=None, dir=None, makefile="Makefile", installs=None)
+ Initialise the instance.
+
+ ``configuration`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``dstdir`` is the name of the directory in which the module's Python
+ code will be installed.
+
+ ``srcdir`` is the name of the directory (relative to ``dir``)
+ containing the module's Python code. It defaults to the same
+ directory.
+
+ ``dir`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``makefile`` - see ``sipconfig.Makefile.__init__()``.
+
+ ``installs`` - see ``sipconfig.Makefile.__init__()``.
+
+ generate_macros_and_rules(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_macros_and_rules()``.
+
+ generate_target_install(self, mfile)
+ This is a reimplementation of
+ ``sipconfig.Makefile.generate_target_install()``.
+
+SIPModuleMakefile(ModuleMakefile)
+ This class encapsulates a Makefile to build a SIP generated Python
+ extension module.
+
+ finalise(self)
+ This is a reimplementation of ``sipconfig.Makefile.finalise()``.
+
+
+Building Your Extension with distutils
+======================================
+
+To build the example in `A Simple C++ Example`_ using distutils, it is
+sufficient to create a standard ``setup.py``, listing ``word.sip`` among the
+files to build, and hook-up SIP into distutils::
+
+ from distutils.core import setup, Extension
+ import sipdistutils
+
+ setup(
+ name = 'word',
+ versione = '1.0',
+ ext_modules=[
+ Extension("word", ["word.sip", "word.cpp"]),
+ ],
+
+ cmdclass = {'build_ext': sipdistutils.build_ext}
+ )
+
+As we can see, the above is a normal distutils setup script, with just a
+special line which is needed so that SIP can see and process ``word.sip``.
+Then, running ``setup.py build`` will build our extension module.
+
+
+Builtin Modules and Custom Interpreters
+=======================================
+
+Sometimes you want to create a custom Python interpreter with some modules
+built in to the interpreter itself rather than being dynamically loaded. To
+do this the module must be created as a static library and linked with a
+custom stub and the normal Python library.
+
+To build the SIP module as a static library you must pass the ``-k`` command
+line option to ``configure.py``. You should then build and install SIP as
+normal. (Note that, because the module is now a static library, you will not
+be able to import it.)
+
+To build a module you have created for your own library you must modify your
+own configuration script to pass a non-zero value as the ``static`` argument
+of the ``__init__()`` method of the ``ModuleMakefile`` class (or any derived
+class you have created). Normally you would make this configurable using a
+command line option in the same way that SIP's ``configure.py`` handles it.
+
+The next stage is to create a custom stub and a Makefile. The SIP distribution
+contains a directory called ``custom`` which contains example stubs and a
+Python script that will create a correct Makefile. Note that, if your copy of
+SIP was part of a standard Linux distribution, the ``custom`` directory may
+not be installed on your system.
+
+The ``custom`` directory contains the following files. They are provided as
+examples - each needs to be modified according to your particular
+requirements.
+
+ - ``mkcustom.py`` is a Python script that will create a Makefile which is
+ then used to build the custom interpreter. Comments in the file describe
+ how it should be modified.
+
+ - ``custom.c`` is a stub for a custom interpreter on Linux/UNIX. It
+ should also be used for a custom console interpreter on Windows (i.e.
+ like ``python.exe``). Comments in the file describe how it should be
+ modified.
+
+ - ``customw.c`` is a stub for a custom GUI interpreter on Windows (i.e.
+ like ``pythonw.exe``). Comments in the file describe how it should be
+ modified.
+
+Note that this technique does not restrict how the interpreter can be used.
+For example, it still allows users to write their own applications that can
+import your builtin modules. If you want to prevent users from doing that,
+perhaps to protect a proprietary API, then take a look at the
+`VendorID <http://www.riverbankcomputing.co.uk/vendorid/>`__ package.
diff --git a/python/sip/sipdistutils.py b/python/sip/sipdistutils.py
new file mode 100644
index 00000000..1c2ab7ed
--- /dev/null
+++ b/python/sip/sipdistutils.py
@@ -0,0 +1,90 @@
+# Subclasses disutils.command.build_ext,
+# replacing it with a SIP version that compiles .sip -> .cpp
+# before calling the original build_ext command.
+# Written by Giovanni Bajo <rasky at develer dot com>
+# Based on Pyrex.Distutils, written by Graham Fawcett and Darrel Gallion.
+
+import distutils.command.build_ext
+from distutils.dep_util import newer, newer_group
+import os
+import sys
+
+def replace_suffix(path, new_suffix):
+ return os.path.splitext(path)[0] + new_suffix
+
+class build_ext (distutils.command.build_ext.build_ext):
+
+ description = "Compiler SIP descriptions, then build C/C++ extensions (compile/link to build directory)"
+
+ def _get_sip_output_list(self, sbf):
+ """
+ Parse the sbf file specified to extract the name of the generated source
+ files. Make them absolute assuming they reside in the temp directory.
+ """
+ for L in file(sbf):
+ key, value = L.split("=", 1)
+ if key.strip() == "sources":
+ out = []
+ for o in value.split():
+ out.append(os.path.join(self.build_temp, o))
+ return out
+
+ raise RuntimeError, "cannot parse SIP-generated '%s'" % sbf
+
+ def _find_sip(self):
+ import sipconfig
+ cfg = sipconfig.Configuration()
+ return cfg.sip_bin
+
+ def _sip_inc_dir(self):
+ import sipconfig
+ cfg = sipconfig.Configuration()
+ return cfg.sip_inc_dir
+
+ def swig_sources (self, sources, extension=None):
+ if not self.extensions:
+ return
+
+ # Add the SIP include directory to the include path
+ if extension is not None:
+ extension.include_dirs.append(self._sip_inc_dir())
+ depends = extension.depends
+ else:
+ # pre-2.4 compatibility
+ self.include_dirs.append(self._sip_inc_dir())
+ depends = [] # ?
+
+ # Filter dependencies list: we are interested only in .sip files,
+ # since the main .sip files can only depend on additional .sip
+ # files. For instance, if a .h changes, there is no need to
+ # run sip again.
+ depends = [f for f in depends if os.path.splitext(f)[1] == ".sip"]
+
+ # Create the temporary directory if it does not exist already
+ if not os.path.isdir(self.build_temp):
+ os.makedirs(self.build_temp)
+
+ # Collect the names of the source (.sip) files
+ sip_sources = []
+ sip_sources = [source for source in sources if source.endswith('.sip')]
+ other_sources = [source for source in sources if not source.endswith('.sip')]
+ generated_sources = []
+
+ sip_bin = self._find_sip()
+
+ for sip in sip_sources:
+ # Use the sbf file as dependency check
+ sipbasename = os.path.basename(sip)
+ sbf = os.path.join(self.build_temp, replace_suffix(sipbasename, ".sbf"))
+ if newer_group([sip]+depends, sbf) or self.force:
+ self._sip_compile(sip_bin, sip, sbf)
+ out = self._get_sip_output_list(sbf)
+ generated_sources.extend(out)
+
+ return generated_sources + other_sources
+
+ def _sip_compile(self, sip_bin, source, sbf):
+ self.spawn([sip_bin,
+ "-c", self.build_temp,
+ "-b", sbf,
+ source])
diff --git a/python/sip/sipgen/export.c b/python/sip/sipgen/export.c
new file mode 100644
index 00000000..a6e62523
--- /dev/null
+++ b/python/sip/sipgen/export.c
@@ -0,0 +1,998 @@
+/*
+ * The XML and API file generator module for SIP.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <stdio.h>
+
+#include "sip.h"
+
+
+#define XML_VERSION_NR 0 /* The schema version number. */
+
+
+static void apiEnums(sipSpec *pt, classDef *scope, FILE *fp);
+static void apiVars(sipSpec *pt, classDef *scope, FILE *fp);
+static int apiCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
+ FILE *fp);
+static int apiOverload(sipSpec *pt, classDef *scope, overDef *od, int sec,
+ FILE *fp);
+static int apiArgument(argDef *ad, int out, int need_comma, int sec, FILE *fp);
+static void xmlClass(sipSpec *pt, classDef *cd, FILE *fp);
+static void xmlEnums(sipSpec *pt, classDef *scope, int indent, FILE *fp);
+static void xmlVars(sipSpec *pt, classDef *scope, int indent, FILE *fp);
+static void xmlFunction(classDef *scope, memberDef *md, overDef *oloads,
+ int indent, FILE *fp);
+static int xmlCtor(classDef *scope, ctorDef *ct, int sec, int indent, FILE *fp);
+static int xmlOverload(classDef *scope, memberDef *md, overDef *od,
+ classDef *xtnds, int stat, int sec, int indent, FILE *fp);
+static void xmlCppSignature(FILE *fp, overDef *od);
+static void xmlArgument(argDef *ad, const char *dir, int res_xfer, int sec,
+ int indent, FILE *fp);
+static void xmlType(argDef *ad, int sec, FILE *fp);
+static void xmlIndent(int indent, FILE *fp);
+static const char *dirAttribute(argDef *ad);
+static void exportDefaultValue(argDef *ad, FILE *fp);
+static const char *pyType(argDef *ad, int sec, classDef **scope);
+
+
+/*
+ * Generate the API file.
+ */
+void generateAPI(sipSpec *pt, const char *apiFile)
+{
+ overDef *od;
+ classDef *cd;
+ FILE *fp;
+
+ /* Generate the file. */
+ if ((fp = fopen(apiFile, "w")) == NULL)
+ fatal("Unable to create file \"%s\"\n", apiFile);
+
+ apiEnums(pt, NULL, fp);
+ apiVars(pt, NULL, fp);
+
+ for (od = pt->overs; od != NULL; od = od->next)
+ {
+ if (od->common->module != pt->module)
+ continue;
+
+ if (od->common->slot != no_slot)
+ continue;
+
+ if (apiOverload(pt, NULL, od, FALSE, fp))
+ apiOverload(pt, NULL, od, TRUE, fp);
+ }
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ ctorDef *ct;
+
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (isExternal(cd))
+ continue;
+
+ apiEnums(pt, cd, fp);
+ apiVars(pt, cd, fp);
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ if (isPrivateCtor(ct))
+ continue;
+
+ if (apiCtor(pt, cd, ct, FALSE, fp))
+ apiCtor(pt, cd, ct, TRUE, fp);
+ }
+
+ for (od = cd->overs; od != NULL; od = od->next)
+ {
+ if (isPrivate(od))
+ continue;
+
+ if (od->common->slot != no_slot)
+ continue;
+
+ if (apiOverload(pt, cd, od, FALSE, fp))
+ apiOverload(pt, cd, od, TRUE, fp);
+ }
+ }
+
+ fclose(fp);
+}
+
+
+/*
+ * Generate an API ctor.
+ */
+static int apiCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
+ FILE *fp)
+{
+ int need_sec = FALSE, need_comma, a;
+
+ /* Do the callable type form. */
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, scope->ecd, scope->pyname);
+ fprintf(fp, "(");
+
+ need_comma = FALSE;
+
+ for (a = 0; a < ct->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &ct->pysig.args[a];
+
+ need_comma = apiArgument(ad, FALSE, need_comma, sec, fp);
+
+ if (ad->atype == rxcon_type || ad->atype == rxdis_type)
+ need_sec = TRUE;
+ }
+
+ fprintf(fp, ")\n");
+
+ /* Do the call __init__ form. */
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, scope->ecd, scope->pyname);
+ fprintf(fp, ".__init__(self");
+
+ for (a = 0; a < ct->pysig.nrArgs; ++a)
+ apiArgument(&ct->pysig.args[a], FALSE, TRUE, sec, fp);
+
+ fprintf(fp, ")\n");
+
+ return need_sec;
+}
+
+
+/*
+ * Generate the APIs for all the enums in a scope.
+ */
+static void apiEnums(sipSpec *pt, classDef *scope, FILE *fp)
+{
+ enumDef *ed;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ enumMemberDef *emd;
+
+ if (ed->module != pt->module)
+ continue;
+
+ if (ed->ecd != scope)
+ continue;
+
+ if (ed->pyname != NULL)
+ {
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, ed->ecd, ed->pyname->text);
+ fprintf(fp, "\n");
+ }
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ {
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, ed->ecd, emd->pyname->text);
+ fprintf(fp, "\n");
+ }
+ }
+}
+
+
+/*
+ * Generate the APIs for all the variables in a scope.
+ */
+static void apiVars(sipSpec *pt, classDef *scope, FILE *fp)
+{
+ varDef *vd;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->module != pt->module)
+ continue;
+
+ if (vd->ecd != scope)
+ continue;
+
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, vd->ecd, vd->pyname->text);
+ fprintf(fp, "\n");
+ }
+}
+
+
+/*
+ * Generate a single API overload.
+ */
+static int apiOverload(sipSpec *pt, classDef *scope, overDef *od, int sec,
+ FILE *fp)
+{
+ int need_sec = FALSE, need_comma = FALSE, is_res, nr_out, a;
+
+ fprintf(fp, "%s.", pt->module->name);
+ prScopedPythonName(fp, scope, od->common->pyname->text);
+ fprintf(fp, "(");
+
+ if (scope != NULL && scope->iff->type != namespace_iface && !isStatic(od))
+ {
+ fprintf(fp, "self");
+ need_comma = TRUE;
+ }
+
+ nr_out = 0;
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ if (isOutArg(ad))
+ ++nr_out;
+
+ if (!isInArg(ad))
+ continue;
+
+ need_comma = apiArgument(ad, FALSE, need_comma, sec, fp);
+
+ if (ad->atype == rxcon_type || ad->atype == rxdis_type)
+ need_sec = TRUE;
+ }
+
+ fprintf(fp, ")");
+
+ is_res = (od->pysig.result.atype != void_type || od->pysig.result.nrderefs != 0);
+
+ if (is_res || nr_out > 0)
+ {
+ fprintf(fp, " -> ");
+
+ if ((is_res && nr_out > 0) || nr_out > 1)
+ fprintf(fp, "(");
+
+ if (is_res)
+ need_comma = apiArgument(&od->pysig.result, TRUE, FALSE, sec, fp);
+ else
+ need_comma = FALSE;
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ if (!isOutArg(ad))
+ continue;
+
+ need_comma = apiArgument(ad, TRUE, need_comma, sec, fp);
+ }
+
+ if ((is_res && nr_out > 0) || nr_out > 1)
+ fprintf(fp, ")");
+ }
+
+ fprintf(fp, "\n");
+
+ return need_sec;
+}
+
+
+/*
+ * Generate the API for an argument.
+ */
+static int apiArgument(argDef *ad, int out, int need_comma, int sec, FILE *fp)
+{
+ const char *tname;
+ classDef *tscope;
+
+ if (isArraySize(ad))
+ return need_comma;
+
+ if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
+ return need_comma;
+
+ if ((tname = pyType(ad, sec, &tscope)) == NULL)
+ return need_comma;
+
+ if (need_comma)
+ fprintf(fp, ", ");
+
+ prScopedPythonName(fp, tscope, tname);
+
+ if (ad->name != NULL)
+ fprintf(fp, " %s", ad->name);
+
+ /*
+ * Handle the default value, but ignore it if it is an output only
+ * argument.
+ */
+ if (ad->defval && !out)
+ {
+ fprintf(fp, "=");
+ prcode(fp, "%M");
+ exportDefaultValue(ad, fp);
+ prcode(fp, "%M");
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Generate the XML export file.
+ */
+void generateXML(sipSpec *pt, const char *xmlFile)
+{
+ FILE *fp;
+ classDef *cd;
+ memberDef *md;
+
+ if ((fp = fopen(xmlFile, "w")) == NULL)
+ fatal("Unable to create file \"%s\"\n", xmlFile);
+
+ fprintf(fp, "<?xml version=\"1.0\"?>\n");
+ fprintf(fp, "<Module version=\"%u\" name=\"%s\">\n",
+ XML_VERSION_NR, pt->module->name);
+
+ /*
+ * Note that we don't yet handle mapped types, templates or exceptions.
+ */
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (isExternal(cd))
+ continue;
+
+ xmlClass(pt, cd, fp);
+ }
+
+ for (cd = pt->proxies; cd != NULL; cd = cd->next)
+ xmlClass(pt, cd, fp);
+
+ xmlEnums(pt, NULL, 1, fp);
+ xmlVars(pt, NULL, 1, fp);
+
+ for (md = pt->othfuncs; md != NULL; md = md->next)
+ {
+ if (md->module != pt->module)
+ continue;
+
+ xmlFunction(NULL, md, pt->overs, 1, fp);
+ }
+
+ fprintf(fp, "</Module>\n");
+
+ fclose(fp);
+}
+
+
+/*
+ * Generate the XML for a class.
+ */
+static void xmlClass(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ int indent = 1;
+ ctorDef *ct;
+ memberDef *md;
+
+ if (isOpaque(cd))
+ {
+ xmlIndent(indent, fp);
+ fprintf(fp, "<OpaqueClass name=\"", cd->pyname);
+ prScopedPythonName(fp, cd->ecd, cd->pyname);
+ fprintf(fp, "\"/>\n");
+
+ return;
+ }
+
+ xmlIndent(indent++, fp);
+ fprintf(fp, "<Class name=\"", cd->pyname);
+ prScopedPythonName(fp, cd->ecd, cd->pyname);
+ fprintf(fp, "\"");
+
+ if (cd->convtocode != NULL)
+ fprintf(fp, " convert=\"1\"");
+
+ if (cd->real != NULL)
+ fprintf(fp, " extends=\"%s\"", cd->real->iff->module->name);
+
+ if (cd->supers != NULL)
+ {
+ classList *cl;
+
+ fprintf(fp, " inherits=\"");
+
+ for (cl = cd->supers; cl != NULL; cl = cl->next)
+ {
+ if (cl != cd->supers)
+ fprintf(fp, " ");
+
+ prScopedPythonName(fp, cl->cd->ecd, cl->cd->pyname);
+ }
+
+ fprintf(fp, "\"");
+ }
+
+ fprintf(fp, ">\n");
+
+ xmlEnums(pt, cd, indent, fp);
+ xmlVars(pt, cd, indent, fp);
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ if (isPrivateCtor(ct))
+ continue;
+
+ if (xmlCtor(cd, ct, FALSE, indent, fp))
+ xmlCtor(cd, ct, TRUE, indent, fp);
+ }
+
+ for (md = cd->members; md != NULL; md = md->next)
+ xmlFunction(cd, md, cd->overs, indent, fp);
+
+ xmlIndent(--indent, fp);
+ fprintf(fp, "</Class>\n");
+}
+
+
+/*
+ * Generate the XML for all the enums in a scope.
+ */
+static void xmlEnums(sipSpec *pt, classDef *scope, int indent, FILE *fp)
+{
+ enumDef *ed;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ if (ed->module != pt->module)
+ continue;
+
+ if (ed->ecd != scope)
+ continue;
+
+ if (ed->pyname != NULL)
+ {
+ enumMemberDef *emd;
+
+ xmlIndent(indent++, fp);
+ fprintf(fp, "<Enum name=\"");
+ prScopedPythonName(fp, ed->ecd, ed->pyname->text);
+ fprintf(fp, "\">\n");
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ {
+ xmlIndent(indent, fp);
+ fprintf(fp, "<EnumMember name=\"");
+ prScopedPythonName(fp, ed->ecd, emd->pyname->text);
+ fprintf(fp, "\"/>\n");
+ }
+
+ xmlIndent(--indent, fp);
+ fprintf(fp, "</Enum>\n");
+ }
+ else
+ {
+ enumMemberDef *emd;
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ {
+ xmlIndent(indent, fp);
+ fprintf(fp, "<Member name=\"");
+ prScopedPythonName(fp, ed->ecd, emd->pyname->text);
+ fprintf(fp, "\" const=\"1\" typename=\"int\"/>\n");
+ }
+ }
+ }
+}
+
+
+/*
+ * Generate the XML for all the variables in a scope.
+ */
+static void xmlVars(sipSpec *pt, classDef *scope, int indent, FILE *fp)
+{
+ varDef *vd;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->module != pt->module)
+ continue;
+
+ if (vd->ecd != scope)
+ continue;
+
+ xmlIndent(indent, fp);
+ fprintf(fp, "<Member name=\"");
+ prScopedPythonName(fp, vd->ecd, vd->pyname->text);
+ fprintf(fp, "\"");
+
+ if (isConstArg(&vd->type) || scope == NULL)
+ fprintf(fp, " const=\"1\"");
+
+ if (isStaticVar(vd))
+ fprintf(fp, " static=\"1\"");
+
+ xmlType(&vd->type, FALSE, fp);
+ fprintf(fp, "/>\n");
+ }
+}
+
+
+/*
+ * Generate the XML for a ctor.
+ */
+static int xmlCtor(classDef *scope, ctorDef *ct, int sec, int indent, FILE *fp)
+{
+ int a, need_sec;
+
+ xmlIndent(indent++, fp);
+ fprintf(fp, "<Function name=\"");
+ prScopedPythonName(fp, scope, "__init__");
+ fprintf(fp, "\"");
+
+ /* Handle the trivial case. */
+ if (ct->pysig.nrArgs == 0)
+ {
+ fprintf(fp, "/>\n");
+ return FALSE;
+ }
+
+ fprintf(fp, ">\n");
+
+ need_sec = FALSE;
+
+ for (a = 0; a < ct->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &ct->pysig.args[a];
+
+ xmlArgument(ad, dirAttribute(ad), FALSE, sec, indent, fp);
+
+ if (ad->atype == rxcon_type || ad->atype == rxdis_type)
+ need_sec = TRUE;
+ }
+
+ xmlIndent(--indent, fp);
+ fprintf(fp, "</Function>\n");
+
+ return need_sec;
+}
+
+
+/*
+ * Generate the XML for a function.
+ */
+static void xmlFunction(classDef *scope, memberDef *md, overDef *oloads,
+ int indent, FILE *fp)
+{
+ overDef *od;
+
+ for (od = oloads; od != NULL; od = od->next)
+ {
+ int isstat;
+ classDef *xtnds;
+
+ if (od->common != md)
+ continue;
+
+ if (isPrivate(od))
+ continue;
+
+ if (isSignal(od))
+ {
+ xmlIndent(indent, fp);
+ fprintf(fp, "<Signal name=\"");
+ prScopedPythonName(fp, scope, md->pyname->text);
+ fprintf(fp, "\" sig=\"");
+ xmlCppSignature(fp, od);
+ fprintf(fp, "\"/>\n", md->pyname->text);
+
+ continue;
+ }
+
+ xtnds = NULL;
+ isstat = (scope == NULL || scope->iff->type == namespace_iface || isStatic(od));
+
+ if (scope == NULL && md->slot != no_slot && od->pysig.args[0].atype == class_type)
+ {
+ xtnds = od->pysig.args[0].u.cd;
+ isstat = FALSE;
+ }
+
+ if (xmlOverload(scope, md, od, xtnds, isstat, FALSE, indent, fp))
+ xmlOverload(scope, md, od, xtnds, isstat, TRUE, indent, fp);
+ }
+}
+
+
+/*
+ * Generate the XML for an overload.
+ */
+static int xmlOverload(classDef *scope, memberDef *md, overDef *od,
+ classDef *xtnds, int stat, int sec, int indent, FILE *fp)
+{
+ int a, need_sec, no_res;
+
+ xmlIndent(indent++, fp);
+ fprintf(fp, "<Function name=\"");
+ prScopedPythonName(fp, scope, md->pyname->text);
+ fprintf(fp, "\"");
+
+ if (isAbstract(od))
+ fprintf(fp, " abstract=\"1\"");
+
+ if (stat)
+ fprintf(fp, " static=\"1\"");
+
+ if (isSlot(od))
+ {
+ fprintf(fp, " slot=\"");
+ xmlCppSignature(fp, od);
+ fprintf(fp, "\"");
+ }
+
+ if (xtnds != NULL)
+ {
+ fprintf(fp, " extends=\"");
+ prScopedPythonName(fp, xtnds->ecd, xtnds->pyname);
+ fprintf(fp, "\"");
+ }
+
+ no_res = (od->pysig.result.atype == void_type && od->pysig.result.nrderefs == 0);
+
+ /* Handle the trivial case. */
+ if (no_res && od->pysig.nrArgs == 0)
+ {
+ fprintf(fp, "/>\n");
+ return FALSE;
+ }
+
+ fprintf(fp, ">\n");
+
+ if (!no_res)
+ xmlArgument(&od->pysig.result, "out", isResultTransferredBack(od), FALSE, indent, fp);
+
+ need_sec = FALSE;
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ /* Ignore the first argument of number slots. */
+ if (isNumberSlot(md) && a == 0 && od->pysig.nrArgs == 2)
+ continue;
+
+ xmlArgument(ad, dirAttribute(ad), FALSE, sec, indent, fp);
+
+ if (ad->atype == rxcon_type || ad->atype == rxdis_type)
+ need_sec = TRUE;
+ }
+
+ xmlIndent(--indent, fp);
+ fprintf(fp, "</Function>\n");
+
+ return need_sec;
+}
+
+
+/*
+ * Generate the XML for a C++ signature.
+ */
+static void xmlCppSignature(FILE *fp, overDef *od)
+{
+ prcode(fp, "%M");
+ prOverloadDecl(fp, od, TRUE);
+ prcode(fp, "%M");
+}
+
+
+/*
+ * Convert an arguments direction to an XML attribute value.
+ */
+static const char *dirAttribute(argDef *ad)
+{
+ if (isInArg(ad))
+ {
+ if (isOutArg(ad))
+ return "inout";
+
+ return NULL;
+ }
+
+ return "out";
+}
+
+
+/*
+ * Generate the XML for an argument.
+ */
+static void xmlArgument(argDef *ad, const char *dir, int res_xfer, int sec,
+ int indent, FILE *fp)
+{
+ if (isArraySize(ad))
+ return;
+
+ if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
+ return;
+
+ xmlIndent(indent, fp);
+ fprintf(fp, "<Argument");
+ xmlType(ad, sec, fp);
+
+ if (dir != NULL)
+ fprintf(fp, " dir=\"%s\"", dir);
+
+ if (isAllowNone(ad))
+ fprintf(fp, " allownone=\"1\"");
+
+ if (isTransferred(ad))
+ fprintf(fp, " transfer=\"to\"");
+ else if (isThisTransferred(ad))
+ fprintf(fp, " transfer=\"this\"");
+ else if (res_xfer || isTransferredBack(ad))
+ fprintf(fp, " transfer=\"back\"");
+
+ /*
+ * Handle the default value, but ignore it if it is an output only
+ * argument.
+ */
+ if (ad->defval && (dir == NULL || strcmp(dir, "out") != 0))
+ {
+ prcode(fp, " default=\"%M");
+ exportDefaultValue(ad, fp);
+ prcode(fp, "%M\"");
+ }
+
+ fprintf(fp, "/>\n");
+}
+
+
+/*
+ * Generate the XML for a type.
+ */
+static void xmlType(argDef *ad, int sec, FILE *fp)
+{
+ const char *type_type = NULL, *type_name;
+ classDef *type_scope;
+
+ fprintf(fp, " typename=\"");
+
+ switch (ad->atype)
+ {
+ case class_type:
+ type_type = (isOpaque(ad->u.cd) ? "opaque" : "class");
+ break;
+
+ case enum_type:
+ if (ad->u.ed->pyname != NULL)
+ type_type = "enum";
+ break;
+
+ case rxcon_type:
+ case rxdis_type:
+ if (!sec)
+ type_type = "class";
+ break;
+
+ case qobject_type:
+ type_type = "class";
+ break;
+
+ case slotcon_type:
+ case slotdis_type:
+ {
+ int a;
+
+ prcode(fp, "SLOT(");
+
+ for (a = 0; a < ad->u.sa->nrArgs; ++a)
+ {
+ if (a > 0)
+ prcode(fp, ", ");
+
+ prcode(fp, "%M%B%M", &ad->u.sa->args[a]);
+ }
+
+ prcode(fp, ")");
+ }
+
+ break;
+
+ case mapped_type:
+ prcode(fp, "%M%B%M", &ad->u.mtd->type);
+ type_type = "mappedtype";
+ break;
+ }
+
+ if ((type_name = pyType(ad, sec, &type_scope)) != NULL)
+ prScopedPythonName(fp, type_scope, type_name);
+
+ fprintf(fp, "\"");
+
+ if (type_type != NULL)
+ fprintf(fp, " typetype=\"%s\"", type_type);
+
+ if (ad->name != NULL)
+ fprintf(fp, " name=\"%s\"", ad->name);
+}
+
+
+/*
+ * Generate the indentation for a line.
+ */
+static void xmlIndent(int indent, FILE *fp)
+{
+ while (indent-- > 0)
+ fprintf(fp, " ");
+}
+
+
+/*
+ * Export the default value of an argument.
+ */
+static void exportDefaultValue(argDef *ad, FILE *fp)
+{
+ /* Translate some special cases. */
+ if (ad->defval->next == NULL && ad->defval->vtype == numeric_value)
+ {
+ if (ad->nrderefs > 0 && ad->defval->u.vnum == 0)
+ {
+ prcode(fp, "None");
+ return;
+ }
+
+ if (ad->atype == bool_type || ad->atype == cbool_type)
+ {
+ prcode(fp, ad->defval->u.vnum ? "True" : "False");
+ return;
+ }
+ }
+
+ generateExpression(ad->defval, fp);
+}
+
+
+/*
+ * Get the Python representation of a type.
+ */
+static const char *pyType(argDef *ad, int sec, classDef **scope)
+{
+ const char *type_name;
+
+ *scope = NULL;
+
+ switch (ad->atype)
+ {
+ case class_type:
+ type_name = ad->u.cd->pyname;
+ *scope = ad->u.cd->ecd;
+ break;
+
+ case struct_type:
+ case void_type:
+ type_name = "sip.voidptr";
+ break;
+
+ case enum_type:
+ if (ad->u.ed->pyname != NULL)
+ {
+ type_name = ad->u.ed->pyname->text;
+ *scope = ad->u.ed->ecd;
+ }
+ else
+ type_name = "int";
+ break;
+
+ case signal_type:
+ type_name = "SIGNAL()";
+ break;
+
+ case slot_type:
+ type_name = "SLOT()";
+ break;
+
+ case rxcon_type:
+ case rxdis_type:
+ if (sec)
+ type_name = "callable";
+ else
+ type_name = "QObject";
+
+ break;
+
+ case qobject_type:
+ type_name = "QObject";
+ break;
+
+ case ustring_type:
+ case string_type:
+ case sstring_type:
+ case wstring_type:
+ if (ad->nrderefs > 0)
+ type_name = "str";
+ else
+ type_name = "char";
+
+ break;
+
+ case short_type:
+ case int_type:
+ case cint_type:
+ type_name = "int";
+ break;
+
+ case ushort_type:
+ case uint_type:
+ case ulong_type:
+ case ulonglong_type:
+ type_name = "unsigned long";
+ break;
+
+ case long_type:
+ case longlong_type:
+ type_name = "long";
+ break;
+
+ case float_type:
+ case cfloat_type:
+ case double_type:
+ case cdouble_type:
+ type_name = "float";
+ break;
+
+ case bool_type:
+ case cbool_type:
+ type_name = "bool";
+ break;
+
+ case pyobject_type:
+ type_name = "object";
+ break;
+
+ case pytuple_type:
+ type_name = "tuple";
+ break;
+
+ case pylist_type:
+ type_name = "list";
+ break;
+
+ case pydict_type:
+ type_name = "dict";
+ break;
+
+ case pycallable_type:
+ type_name = "callable";
+ break;
+
+ case pyslice_type:
+ type_name = "slice";
+ break;
+
+ case pytype_type:
+ type_name = "type";
+ break;
+
+ case ellipsis_type:
+ type_name = "...";
+ break;
+
+ case anyslot_type:
+ /* Need to check if this is enough. */
+ type_name = "SLOT()";
+ break;
+
+ default:
+ type_name = NULL;
+ }
+
+ return type_name;
+}
diff --git a/python/sip/sipgen/gencode.c b/python/sip/sipgen/gencode.c
new file mode 100644
index 00000000..b23ee2b1
--- /dev/null
+++ b/python/sip/sipgen/gencode.c
@@ -0,0 +1,10820 @@
+/*
+ * The code generator module for SIP.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "sip.h"
+
+
+/*
+ * These must match the values of SIP_TYPE_FLAGS_SHIFT and SIP_TYPE_FLAGS_MASK
+ * in siplib/sip.h.
+ */
+#define TYPE_FLAGS_SHIFT 8
+#define TYPE_FLAGS_MASK 0x0f00
+
+
+/* Control what generateSingleArg() actually generates. */
+typedef enum {
+ Call,
+ Declaration,
+ Definition
+} funcArgType;
+
+
+/* An entry in the sorted array of methods. */
+typedef struct {
+ memberDef *md; /* The method. */
+ int is_static; /* Set if all overloads are static. */
+} sortedMethTab;
+
+
+static int currentLineNr; /* Current output line number. */
+static char *currentFileName; /* Current output file name. */
+static int previousLineNr; /* Previous output line number. */
+static char *previousFileName; /* Previous output file name. */
+static int exceptions; /* Set if exceptions are enabled. */
+static int tracing; /* Set if tracing is enabled. */
+static int generating_c; /* Set if generating C. */
+static int release_gil; /* Set if always releasing the GIL. */
+static const char *prcode_last = NULL; /* The last prcode format string. */
+static int prcode_xml = FALSE; /* Set if prcode is XML aware. */
+
+
+static void generateDocumentation(sipSpec *, char *);
+static void generateBuildFile(sipSpec *, char *, char *, int);
+static void generateInternalAPIHeader(sipSpec *, char *, stringList *);
+static void generateCpp(sipSpec *, char *, char *, int *);
+static void generateIfaceCpp(sipSpec *, ifaceFileDef *, char *, char *,
+ FILE *);
+static void generateMappedTypeCpp(mappedTypeDef *, FILE *);
+static void generateImportedMappedTypeHeader(mappedTypeDef *mtd, sipSpec *pt,
+ FILE *fp);
+static void generateMappedTypeHeader(mappedTypeDef *, int, FILE *);
+static void generateClassCpp(classDef *cd, sipSpec *pt, FILE *fp);
+static void generateImportedClassHeader(classDef *cd, sipSpec *pt, FILE *fp);
+static void generateClassTableEntries(sipSpec *pt, nodeDef *nd, FILE *fp);
+static void generateClassHeader(classDef *, int, sipSpec *, FILE *);
+static void generateClassFunctions(sipSpec *, classDef *, FILE *);
+static void generateShadowCode(sipSpec *, classDef *, FILE *);
+static void generateFunction(sipSpec *, memberDef *, overDef *, classDef *,
+ classDef *, FILE *);
+static void generateFunctionBody(sipSpec *, overDef *, classDef *, classDef *,
+ int deref, FILE *);
+static void generateTypeDefinition(sipSpec *pt, classDef *cd, FILE *fp);
+static void generateTypeInit(sipSpec *, classDef *, FILE *);
+static void generateCppCodeBlock(codeBlock *, FILE *);
+static void generateUsedIncludes(ifaceFileList *, int, FILE *);
+static void generateIfaceHeader(sipSpec *, ifaceFileDef *, char *);
+static void generateShadowClassDeclaration(sipSpec *, classDef *, FILE *);
+static int hasConvertToCode(argDef *ad);
+static void deleteTemps(signatureDef *sd, FILE *fp);
+static void gc_ellipsis(signatureDef *sd, FILE *fp);
+static void generateArgs(signatureDef *, funcArgType, FILE *);
+static void generateVariable(argDef *, int, FILE *);
+static void generateNamedValueType(argDef *, char *, FILE *);
+static void generateSingleArg(argDef *, int, funcArgType, FILE *);
+static void generateBaseType(argDef *, FILE *);
+static void generateNamedBaseType(argDef *, char *, FILE *);
+static void generateTupleBuilder(signatureDef *, FILE *);
+static void generateEmitters(sipSpec *pt, classDef *cd, FILE *fp);
+static void generateEmitter(sipSpec *, classDef *, visibleList *, FILE *);
+static void generateVirtualHandler(sipSpec *, virtHandlerDef *, FILE *);
+static void generateVirtHandlerErrorReturn(argDef *res, FILE *fp);
+static void generateVirtualCatcher(sipSpec *, classDef *, int, virtOverDef *,
+ FILE *);
+static void generateUnambiguousClass(classDef *cd, classDef *scope, FILE *fp);
+static void generateProtectedEnums(sipSpec *, classDef *, FILE *);
+static void generateProtectedDeclarations(classDef *, FILE *);
+static void generateProtectedDefinitions(classDef *, FILE *);
+static void generateProtectedCallArgs(overDef *od, FILE *fp);
+static void generateConstructorCall(classDef *, ctorDef *, int, FILE *);
+static void generateHandleResult(overDef *, int, char *, FILE *);
+static void generateOrdinaryFunction(sipSpec *, classDef *, memberDef *,
+ FILE *);
+static void generateSimpleFunctionCall(fcallDef *, FILE *);
+static void generateFunctionCall(classDef *cd, classDef *ocd, overDef *od,
+ int deref, FILE *fp);
+static void generateCppFunctionCall(classDef *cd, classDef *ocd, overDef *od,
+ FILE *fp);
+static void generateSlotArg(signatureDef *sd, int argnr, FILE *fp);
+static void generateBinarySlotCall(overDef *od, char *op, int deref, FILE *fp);
+static void generateNumberSlotCall(overDef *od, char *op, FILE *fp);
+static void generateVariableHandler(varDef *, FILE *);
+static int generateObjToCppConversion(argDef *, FILE *);
+static void generateVarClassConversion(varDef *, FILE *);
+static void generateVarMember(varDef *vd, FILE *fp);
+static int generateVoidPointers(sipSpec *, classDef *, FILE *);
+static int generateChars(sipSpec *, classDef *, FILE *);
+static int generateStrings(sipSpec *, classDef *, FILE *);
+static sortedMethTab *createFunctionTable(classDef *, int *);
+static sortedMethTab *createMethodTable(classDef *, int *);
+static int generateMethodTable(classDef *, FILE *);
+static void generateEnumMacros(sipSpec *pt, classDef *cd, FILE *fp);
+static int generateEnumMemberTable(sipSpec *, classDef *, FILE *);
+static int generateInts(sipSpec *, classDef *, FILE *);
+static int generateLongs(sipSpec *, classDef *, FILE *);
+static int generateUnsignedLongs(sipSpec *, classDef *, FILE *);
+static int generateLongLongs(sipSpec *, classDef *, FILE *);
+static int generateUnsignedLongLongs(sipSpec *, classDef *, FILE *);
+static int generateVariableType(sipSpec *pt, classDef *cd, argType atype,
+ const char *eng, const char *s1, const char *s2, FILE *fp);
+static int generateDoubles(sipSpec *, classDef *, FILE *);
+static int generateEnums(sipSpec *, classDef *, FILE *);
+static int generateClasses(sipSpec *, classDef *, FILE *);
+static void generateEnumsInline(sipSpec *, FILE *);
+static void generateClassesInline(sipSpec *, FILE *);
+static void generateAccessFunctions(sipSpec *, classDef *, FILE *);
+static void generateConvertToDefinitions(mappedTypeDef *, classDef *, FILE *);
+static void generateEncodedClass(sipSpec *, classDef *, int, FILE *);
+static int generateArgParser(sipSpec *, signatureDef *, classDef *, ctorDef *,
+ overDef *, int, FILE *);
+static void generateTry(throwArgs *, FILE *);
+static void generateCatch(throwArgs *ta, signatureDef *sd, FILE *fp);
+static void generateThrowSpecifier(throwArgs *, FILE *);
+static void generateSlot(sipSpec *pt, classDef *cd, enumDef *ed, memberDef *md,
+ FILE *fp);
+static void generateCastZero(argDef *ad, FILE *fp);
+static void generateCallDefaultCtor(ctorDef *ct, FILE *fp);
+static int countVirtuals(classDef *);
+static int skipOverload(overDef *, memberDef *, classDef *, classDef *, int);
+static int compareMethTab(const void *, const void *);
+static int compareEnumMembers(const void *, const void *);
+static char *getSubFormatChar(char, argDef *);
+static char *createIfaceFileName(char *, ifaceFileDef *, char *);
+static FILE *createCompilationUnit(sipSpec *pt, char *fname,
+ char *description);
+static FILE *createFile(sipSpec *, char *, char *);
+static void closeFile(FILE *);
+static void prScopedName(FILE *fp, scopedNameDef *snd, char *sep);
+static void prTypeName(FILE *, argDef *, int);
+static void prScopedClassName(FILE *, classDef *, char *);
+static int isZeroArgSlot(memberDef *md);
+static int isMultiArgSlot(memberDef *md);
+static int isIntArgSlot(memberDef *md);
+static int isInplaceNumberSlot(memberDef *md);
+static int isInplaceSequenceSlot(memberDef *md);
+static int needErrorFlag(codeBlock *cb);
+static int needNewInstance(argDef *ad);
+static int needDealloc(classDef *cd);
+static char getBuildResultFormat(argDef *ad);
+static const char *getParseResultFormat(argDef *ad, int isres, int xfervh);
+static void generateParseResultExtraArgs(argDef *ad, int isres, FILE *fp);
+static char *makePartName(char *codeDir, char *mname, int part,
+ char *srcSuffix);
+static void normaliseArgs(signatureDef *);
+static void restoreArgs(signatureDef *);
+static const char *slotName(slotType st);
+static void ints_intro(classDef *cd, FILE *fp);
+static const char *argName(const char *name, codeBlock *cb);
+static int usedInCode(codeBlock *code, const char *str);
+static void generateDefaultValue(argDef *ad, int argnr, FILE *fp);
+static void generateClassFromVoid(classDef *cd, const char *cname,
+ const char *vname, FILE *fp);
+static void generateMappedTypeFromVoid(mappedTypeDef *mtd, const char *cname,
+ const char *vname, FILE *fp);
+static int generateSubClassConvertors(sipSpec *pt, FILE *fp);
+static void generateRegisterMetaType(classDef *cd, FILE *fp);
+
+
+/*
+ * Generate the code from a specification.
+ */
+void generateCode(sipSpec *pt, char *codeDir, char *buildfile, char *docFile,
+ char *srcSuffix, int except, int trace, int releaseGIL, int parts,
+ stringList *xsl)
+{
+ exceptions = except;
+ tracing = trace;
+ release_gil = releaseGIL;
+ generating_c = pt->genc;
+
+ if (srcSuffix == NULL)
+ srcSuffix = (generating_c ? ".c" : ".cpp");
+
+ /* Generate the documentation. */
+ if (docFile != NULL)
+ generateDocumentation(pt,docFile);
+
+ /* Generate the code. */
+ if (codeDir != NULL)
+ {
+ generateCpp(pt,codeDir,srcSuffix,&parts);
+ generateInternalAPIHeader(pt,codeDir,xsl);
+ }
+
+ /* Generate the build file. */
+ if (buildfile != NULL)
+ generateBuildFile(pt,buildfile,srcSuffix,parts);
+}
+
+
+/*
+ * Generate the documentation.
+ */
+static void generateDocumentation(sipSpec *pt, char *docFile)
+{
+ FILE *fp;
+ codeBlock *cb;
+
+ fp = createFile(pt, docFile, NULL);
+
+ for (cb = pt->docs; cb != NULL; cb = cb->next)
+ fputs(cb->frag, fp);
+
+ closeFile(fp);
+}
+
+
+/*
+ * Generate the build file.
+ */
+static void generateBuildFile(sipSpec *pt, char *buildFile, char *srcSuffix,
+ int parts)
+{
+ char *mname = pt->module->name;
+ ifaceFileDef *iff;
+ FILE *fp;
+
+ fp = createFile(pt, buildFile, NULL);
+
+ prcode(fp, "target = %s\nsources = ", mname);
+
+ if (parts)
+ {
+ int p;
+
+ for (p = 0; p < parts; ++p)
+ {
+ if (p > 0)
+ prcode(fp, " ");
+
+ prcode(fp, "sip%spart%d%s", mname, p, srcSuffix);
+ }
+ }
+ else
+ {
+ prcode(fp, "sip%scmodule%s", mname, srcSuffix);
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ {
+ if (iff->module != pt->module)
+ continue;
+
+ if (iff->type == exception_iface)
+ continue;
+
+ prcode(fp, " sip%s%F%s", mname, iff->fqcname, srcSuffix);
+ }
+ }
+
+ prcode(fp, "\nheaders = sipAPI%s.h", mname);
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ {
+ char *imname;
+
+ imname = (iff->module == pt->module ? mname : iff->module->name);
+
+ prcode(fp, " sip%s%F.h", imname, iff->fqcname);
+ }
+
+ prcode(fp, "\n");
+
+ closeFile(fp);
+}
+
+
+/*
+ * Generate an expression in C++.
+ */
+void generateExpression(valueDef *vd, FILE *fp)
+{
+ while (vd != NULL)
+ {
+ if (vd->vunop != '\0')
+ prcode(fp,"%c",vd->vunop);
+
+ switch (vd->vtype)
+ {
+ case qchar_value:
+ prcode(fp,"'%c'",vd->u.vqchar);
+ break;
+
+ case string_value:
+ prcode(fp,"\"%s\"",vd->u.vstr);
+ break;
+
+ case numeric_value:
+ prcode(fp,"%l",vd->u.vnum);
+ break;
+
+ case real_value:
+ prcode(fp,"%g",vd->u.vreal);
+ break;
+
+ case scoped_value:
+ if (prcode_xml)
+ prScopedName(fp, vd->u.vscp, ".");
+ else
+ prcode(fp, "%S", vd->u.vscp);
+
+ break;
+
+ case fcall_value:
+ generateSimpleFunctionCall(vd->u.fcd,fp);
+ break;
+ }
+
+ if (vd->vbinop != '\0')
+ prcode(fp," %c ",vd->vbinop);
+
+ vd = vd->next;
+ }
+}
+
+
+/*
+ * Generate the C++ internal module API header file.
+ */
+static void generateInternalAPIHeader(sipSpec *pt,char *codeDir,stringList *xsl)
+{
+ char *hfile, *mname = pt->module->name;
+ int noIntro;
+ FILE *fp;
+ nameDef *nd;
+ moduleDef *mod;
+ moduleListDef *mld;
+
+ hfile = concat(codeDir,"/sipAPI",mname,".h",NULL);
+ fp = createFile(pt,hfile,"Internal module API header file.");
+
+ /* Include files. */
+
+ prcode(fp,
+"\n"
+"#ifndef _%sAPI_H\n"
+"#define _%sAPI_H\n"
+"\n"
+"\n"
+"#include <sip.h>\n"
+ ,mname
+ ,mname);
+
+ if (optRegisterTypes(pt))
+ prcode(fp,
+"\n"
+"#include <QMetaType>\n"
+ );
+
+ /* Define the enabled features. */
+ noIntro = TRUE;
+
+ for (mod = pt->modules; mod != NULL; mod = mod->next)
+ {
+ qualDef *qd;
+
+ for (qd = mod->qualifiers; qd != NULL; qd = qd->next)
+ if (qd->qtype == feature_qualifier && !excludedFeature(xsl,qd))
+ {
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* These are the features that are enabled. */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+"#define SIP_FEATURE_%s\n"
+ ,qd->name);
+ }
+ }
+
+ generateCppCodeBlock(pt->exphdrcode,fp);
+ generateCppCodeBlock(pt->hdrcode,fp);
+
+ /* Shortcuts that hide the messy detail of the APIs. */
+ noIntro = TRUE;
+
+ for (nd = pt->namecache; nd != NULL; nd = nd->next)
+ {
+ if (!isClassName(nd))
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/*\n"
+" * Convenient names to refer to the names of classes defined in this module.\n"
+" * These are part of the public API.\n"
+" */\n"
+"\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+"#define sipName_%s %N\n"
+ ,nd->text,nd);
+ }
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Convenient names to call the SIP API. */\n"
+"#define sipConvertFromSliceObject(o,len,start,stop,step,slen) PySlice_GetIndicesEx((PySliceObject *)(o),(len),(start),(stop),(step),(slen))\n"
+"#define sipIsSubClassInstance(o,wt) PyObject_TypeCheck((o),(PyTypeObject *)(wt))\n"
+"\n"
+"#define sipMapStringToClass sipAPI_%s->api_map_string_to_class\n"
+"#define sipMapIntToClass sipAPI_%s->api_map_int_to_class\n"
+"#define sipMalloc sipAPI_%s->api_malloc\n"
+"#define sipFree sipAPI_%s->api_free\n"
+"#define sipBuildResult sipAPI_%s->api_build_result\n"
+"#define sipCallMethod sipAPI_%s->api_call_method\n"
+"#define sipParseResult sipAPI_%s->api_parse_result\n"
+"#define sipParseArgs sipAPI_%s->api_parse_args\n"
+"#define sipParsePair sipAPI_%s->api_parse_pair\n"
+"#define sipCommonCtor sipAPI_%s->api_common_ctor\n"
+"#define sipCommonDtor sipAPI_%s->api_common_dtor\n"
+"#define sipConvertFromSequenceIndex sipAPI_%s->api_convert_from_sequence_index\n"
+"#define sipConvertFromVoidPtr sipAPI_%s->api_convert_from_void_ptr\n"
+"#define sipConvertToCpp sipAPI_%s->api_convert_to_cpp\n"
+"#define sipConvertToVoidPtr sipAPI_%s->api_convert_to_void_ptr\n"
+"#define sipNoFunction sipAPI_%s->api_no_function\n"
+"#define sipNoMethod sipAPI_%s->api_no_method\n"
+"#define sipAbstractMethod sipAPI_%s->api_abstract_method\n"
+"#define sipBadClass sipAPI_%s->api_bad_class\n"
+"#define sipBadSetType sipAPI_%s->api_bad_set_type\n"
+"#define sipBadCatcherResult sipAPI_%s->api_bad_catcher_result\n"
+"#define sipBadOperatorArg sipAPI_%s->api_bad_operator_arg\n"
+"#define sipTrace sipAPI_%s->api_trace\n"
+"#define sipTransfer sipAPI_%s->api_transfer\n"
+"#define sipTransferBack sipAPI_%s->api_transfer_back\n"
+"#define sipTransferTo sipAPI_%s->api_transfer_to\n"
+"#define sipWrapper_Check sipAPI_%s->api_wrapper_check\n"
+"#define sipGetWrapper sipAPI_%s->api_get_wrapper\n"
+"#define sipGetCppPtr sipAPI_%s->api_get_cpp_ptr\n"
+"#define sipGetComplexCppPtr sipAPI_%s->api_get_complex_cpp_ptr\n"
+"#define sipIsPyMethod sipAPI_%s->api_is_py_method\n"
+"#define sipCallHook sipAPI_%s->api_call_hook\n"
+"#define sipStartThread sipAPI_%s->api_start_thread\n"
+"#define sipEndThread sipAPI_%s->api_end_thread\n"
+"#define sipEmitSignal sipAPI_%s->api_emit_signal\n"
+"#define sipConnectRx sipAPI_%s->api_connect_rx\n"
+"#define sipDisconnectRx sipAPI_%s->api_disconnect_rx\n"
+"#define sipGetSender sipAPI_%s->api_get_sender\n"
+"#define sipRaiseUnknownException sipAPI_%s->api_raise_unknown_exception\n"
+"#define sipRaiseClassException sipAPI_%s->api_raise_class_exception\n"
+"#define sipRaiseSubClassException sipAPI_%s->api_raise_sub_class_exception\n"
+"#define sipBadLengthForSlice sipAPI_%s->api_bad_length_for_slice\n"
+"#define sipClassName sipAPI_%s->api_class_name\n"
+"#define sipAddClassInstance sipAPI_%s->api_add_class_instance\n"
+"#define sipAddMappedTypeInstance sipAPI_%s->api_add_mapped_type_instance\n"
+"#define sipAddEnumInstance sipAPI_%s->api_add_enum_instance\n"
+"#define sipConvertFromNamedEnum sipAPI_%s->api_convert_from_named_enum\n"
+"#define sipGetAddress sipAPI_%s->api_get_address\n"
+"#define sipFreeConnection sipAPI_%s->api_free_connection\n"
+"#define sipEmitToSlot sipAPI_%s->api_emit_to_slot\n"
+"#define sipSameConnection sipAPI_%s->api_same_connection\n"
+"#define sipPySlotExtend sipAPI_%s->api_pyslot_extend\n"
+"#define sipConvertRx sipAPI_%s->api_convert_rx\n"
+"#define sipAddDelayedDtor sipAPI_%s->api_add_delayed_dtor\n"
+"#define sipCanConvertToInstance sipAPI_%s->api_can_convert_to_instance\n"
+"#define sipCanConvertToMappedType sipAPI_%s->api_can_convert_to_mapped_type\n"
+"#define sipConvertToInstance sipAPI_%s->api_convert_to_instance\n"
+"#define sipConvertToMappedType sipAPI_%s->api_convert_to_mapped_type\n"
+"#define sipForceConvertToInstance sipAPI_%s->api_force_convert_to_instance\n"
+"#define sipForceConvertToMappedType sipAPI_%s->api_force_convert_to_mapped_type\n"
+"#define sipReleaseInstance sipAPI_%s->api_release_instance\n"
+"#define sipReleaseMappedType sipAPI_%s->api_release_mapped_type\n"
+"#define sipConvertFromInstance sipAPI_%s->api_convert_from_instance\n"
+"#define sipConvertFromNewInstance sipAPI_%s->api_convert_from_new_instance\n"
+"#define sipConvertFromMappedType sipAPI_%s->api_convert_from_mapped_type\n"
+"#define sipGetState sipAPI_%s->api_get_state\n"
+"#define sipFindMappedType sipAPI_%s->api_find_mapped_type\n"
+"#define sipLong_AsUnsignedLong sipAPI_%s->api_long_as_unsigned_long\n"
+"#define sipExportSymbol sipAPI_%s->api_export_symbol\n"
+"#define sipImportSymbol sipAPI_%s->api_import_symbol\n"
+"#define sipRegisterIntTypes sipAPI_%s->api_register_int_types\n"
+"#define sipParseSignature sipAPI_%s->api_parse_signature\n"
+"#define sipFindClass sipAPI_%s->api_find_class\n"
+"#define sipFindNamedEnum sipAPI_%s->api_find_named_enum\n"
+"#define sipString_AsChar sipAPI_%s->api_string_as_char\n"
+"#define sipUnicode_AsWChar sipAPI_%s->api_unicode_as_wchar\n"
+"#define sipUnicode_AsWString sipAPI_%s->api_unicode_as_wstring\n"
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname
+ ,mname);
+
+ /* The name strings. */
+ noIntro = TRUE;
+
+ for (nd = pt->namecache; nd != NULL; nd = nd->next)
+ {
+ if (!isUsedName(nd))
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* The strings used by this module. */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+"extern char %N[];\n"
+ ,nd);
+ }
+
+ /* The unscoped enum macros. */
+ generateEnumMacros(pt, NULL, fp);
+
+ prcode(fp,
+"\n"
+"\n"
+"/* The SIP API, this module's API and the APIs of any imported modules. */\n"
+"extern const sipAPIDef *sipAPI_%s;\n"
+"extern sipExportedModuleDef sipModuleAPI_%s;\n"
+ ,mname
+ ,mname,mname);
+
+ for (mld = pt->module->allimports; mld != NULL; mld = mld->next)
+ prcode(fp,
+"extern const sipExportedModuleDef *sipModuleAPI_%s_%s;\n"
+ ,mname,mld->module->name);
+
+ if (optQ_OBJECT4(pt))
+ prcode(fp,
+"\n"
+"typedef const QMetaObject *(*sip_qt_metaobject_func)(sipWrapper *,sipWrapperType *,const QMetaObject *);\n"
+"extern sip_qt_metaobject_func sip_%s_qt_metaobject;\n"
+"\n"
+"typedef int (*sip_qt_metacall_func)(sipWrapper *,sipWrapperType *,QMetaObject::Call,int,void **);\n"
+"extern sip_qt_metacall_func sip_%s_qt_metacall;\n"
+ , mname
+ , mname);
+
+ /*
+ * Note that we don't forward declare the virtual handlers. This is
+ * because we would need to #include everything needed for their
+ * argument types.
+ */
+
+ prcode(fp,
+"\n"
+"#endif\n"
+ );
+
+ closeFile(fp);
+ free(hfile);
+}
+
+
+/*
+ * Return the filename of a source code part on the heap.
+ */
+static char *makePartName(char *codeDir,char *mname,int part,char *srcSuffix)
+{
+ char buf[20];
+
+ sprintf(buf,"part%d",part);
+
+ return concat(codeDir,"/sip",mname,buf,srcSuffix,NULL);
+}
+
+
+/*
+ * Generate the C/C++ code.
+ */
+static void generateCpp(sipSpec *pt, char *codeDir, char *srcSuffix, int *parts)
+{
+ char *cppfile, *mname = pt->module->name;
+ int noIntro, nrSccs = 0, files_in_part, max_per_part, this_part;
+ int is_inst_class, is_inst_voidp, is_inst_char, is_inst_string;
+ int is_inst_int, is_inst_long, is_inst_ulong, is_inst_longlong;
+ int is_inst_ulonglong, is_inst_double, is_inst_enum, nr_enummembers;
+ int hasexternal = FALSE, slot_extenders = FALSE, ctor_extenders = FALSE;
+ FILE *fp;
+ moduleListDef *mld;
+ classDef *cd;
+ memberDef *md;
+ ifaceFileDef *iff;
+ virtHandlerDef *vhd;
+ nameDef *nd;
+ exceptionDef *xd;
+
+ /* Calculate the number of files in each part. */
+ if (*parts)
+ {
+ int nr_files = 1;
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ if (iff->module == pt->module)
+ ++nr_files;
+
+ max_per_part = (nr_files + *parts - 1) / *parts;
+ files_in_part = 1;
+ this_part = 0;
+
+ cppfile = makePartName(codeDir,mname,0,srcSuffix);
+ }
+ else
+ cppfile = concat(codeDir,"/sip",mname,"cmodule",srcSuffix,NULL);
+
+ fp = createCompilationUnit(pt, cppfile, "Module code.");
+
+ prcode(fp,
+"\n"
+"#include \"sipAPI%s.h\"\n"
+"\n"
+ ,mname);
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ if (iff->module == pt->module && iff->type != exception_iface)
+ prcode(fp,
+"#include \"sip%s%F.h\"\n"
+ ,iff->module->name,iff->fqcname);
+
+ generateUsedIncludes(pt->used, FALSE, fp);
+
+ /*
+ * If there should be a Qt support API then generate stubs values for the
+ * optional parts. These should be undefined in %ModuleCode if a C++
+ * implementation is provided.
+ */
+ if (pt->qobjclass >= 0)
+ prcode(fp,
+"\n"
+"#define sipQtIsQtSignal 0\n"
+"#define sipQtCreateUniversalSignalShortcut 0\n"
+"#define sipQtCreateUniversalSignal 0\n"
+"#define sipQtFindUniversalSignalShortcut 0\n"
+"#define sipQtFindUniversalSignal 0\n"
+"#define sipQtEmitSignalShortcut 0\n"
+"#define sipQtEmitSignal 0\n"
+ );
+
+ /* Define the names. */
+ noIntro = TRUE;
+
+ for (nd = pt->namecache; nd != NULL; nd = nd->next)
+ {
+ if (!isUsedName(nd))
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the strings used by this module. */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+"char %N[] = \"%s\";\n"
+ ,nd,nd->text);
+ }
+
+ /* Generate the C++ code blocks. */
+ generateCppCodeBlock(pt->cppcode,fp);
+
+ /* Generate any virtual handler declarations. */
+ for (vhd = pt->module->virthandlers; vhd != NULL; vhd = vhd->next)
+ if (!isDuplicateVH(vhd))
+ generateVirtualHandler(pt,vhd,fp);
+
+ /* Generate the global functions. */
+ for (md = pt->othfuncs; md != NULL; md = md->next)
+ {
+ if (md->module != pt->module)
+ continue;
+
+ if (md->slot == no_slot)
+ generateOrdinaryFunction(pt,NULL,md,fp);
+ else
+ {
+ overDef *od;
+
+ /*
+ * Make sure that there is still an overload and we
+ * haven't moved them all to classes.
+ */
+ for (od = pt->overs; od != NULL; od = od->next)
+ if (od->common == md)
+ {
+ generateSlot(pt, NULL, NULL, md, fp);
+ slot_extenders = TRUE;
+ break;
+ }
+ }
+ }
+
+ /* Generate any class specific ctor or slot extenders. */
+ for (cd = pt->proxies; cd != NULL; cd = cd->next)
+ {
+ if (cd->ctors != NULL)
+ {
+ generateTypeInit(pt, cd, fp);
+ ctor_extenders = TRUE;
+ }
+
+ for (md = cd->members; md != NULL; md = md->next)
+ {
+ generateSlot(pt, cd, NULL, md, fp);
+ slot_extenders = TRUE;
+ }
+ }
+
+ /* Generate any ctor extender table. */
+ if (ctor_extenders)
+ {
+ prcode(fp,
+"\n"
+"static sipInitExtenderDef initExtenders[] = {\n"
+ );
+
+ for (cd = pt->proxies; cd != NULL; cd = cd->next)
+ if (cd->ctors != NULL)
+ {
+ prcode(fp,
+" {init_%C, ", classFQCName(cd));
+
+ generateEncodedClass(pt, cd, 0, fp);
+
+ prcode(fp, ", NULL},\n"
+ );
+ }
+
+ prcode(fp,
+" {NULL, {0, 0, 0}, NULL}\n"
+"};\n"
+ );
+ }
+
+ /* Generate any slot extender table. */
+ if (slot_extenders)
+ {
+ prcode(fp,
+"\n"
+"static sipPySlotExtenderDef slotExtenders[] = {\n"
+ );
+
+ for (md = pt->othfuncs; md != NULL; md = md->next)
+ {
+ overDef *od;
+
+ if (md->module != pt->module)
+ continue;
+
+ if (md->slot == no_slot)
+ continue;
+
+ for (od = pt->overs; od != NULL; od = od->next)
+ if (od->common == md)
+ {
+ prcode(fp,
+" {(void *)slot_%s, %s, {0, 0, 0}},\n"
+ , md->pyname->text, slotName(md->slot));
+
+ break;
+ }
+ }
+
+ for (cd = pt->proxies; cd != NULL; cd = cd->next)
+ for (md = cd->members; md != NULL; md = md->next)
+ {
+ prcode(fp,
+" {(void *)slot_%C_%s, %s, ", classFQCName(cd), md->pyname->text, slotName(md->slot));
+
+ generateEncodedClass(pt, cd, 0, fp);
+
+ prcode(fp, "},\n"
+ );
+ }
+
+ prcode(fp,
+" {NULL, (sipPySlotType)0, {0, 0, 0}}\n"
+"};\n"
+ );
+ }
+
+ /* Generate the global access functions. */
+ generateAccessFunctions(pt,NULL,fp);
+
+ /* Generate the module data structures. */
+ if (pt->module->nrclasses > 0)
+ {
+ nrSccs = generateSubClassConvertors(pt, fp);
+
+ prcode(fp,
+"\n"
+"\n"
+"/*\n"
+" * This defines each class in this module. The values are replaced by the\n"
+" * proper Python types during the export process.\n"
+" */\n"
+"static sipWrapperType *typesTable[] = {\n"
+ );
+
+ generateClassTableEntries(pt, &pt->module->root, fp);
+
+ prcode(fp,
+"};\n"
+ );
+
+ /* Generate the external classes table if needed. */
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ if (!isExternal(cd))
+ continue;
+
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (!hasexternal)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines each external type declared in this module, */\n"
+"static sipExternalTypeDef externalTypesTable[] = {\n"
+ );
+
+ hasexternal = TRUE;
+ }
+
+ prcode(fp,
+" {%d, \"", cd->classnr);
+ prScopedName(fp, classFQCName(cd), ".");
+ prcode(fp,"\"},\n"
+ );
+ }
+
+ if (hasexternal)
+ prcode(fp,
+" {-1, NULL}\n"
+"};\n"
+ );
+ }
+
+ if (pt->module->nrmappedtypes > 0)
+ {
+ mappedTypeDef *mtd;
+ argDef type;
+
+ type.argflags = 0;
+ type.name = NULL;
+ type.nrderefs = 0;
+ type.defval = NULL;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines each mapped type in this module. */\n"
+"static sipMappedType *mappedTypesTable[] = {\n"
+ );
+
+ for (mtd = pt->mappedtypes; mtd != NULL; mtd = mtd->next)
+ {
+ if (mtd->iff->module != pt->module)
+ continue;
+
+ type.atype = mapped_type;
+ type.u.mtd = mtd;
+
+ prcode(fp,
+" &sipMappedTypeDef_%T,\n"
+ ,&type);
+ }
+
+ prcode(fp,
+" 0\n"
+"};\n"
+ );
+ }
+
+ if (pt->module->nrenums > 0)
+ {
+ enumDef *ed;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Define each named enum in this module. */\n"
+ );
+
+ /* Generate any slot tables. */
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ memberDef *slot;
+
+ if (ed->module != pt->module || ed->fqcname == NULL)
+ continue;
+
+ if (ed->slots == NULL)
+ continue;
+
+ for (slot = ed->slots; slot != NULL; slot = slot->next)
+ generateSlot(pt, NULL, ed, slot, fp);
+
+ prcode(fp,
+"\n"
+"static sipPySlotDef slots_%C[] = {\n"
+ , ed->fqcname);
+
+ for (slot = ed->slots; slot != NULL; slot = slot->next)
+ {
+ const char *stype;
+
+ if ((stype = slotName(slot->slot)) != NULL)
+ prcode(fp,
+" {(void *)slot_%C_%s, %s},\n"
+ , ed->fqcname, slot->pyname->text, stype);
+ }
+
+ prcode(fp,
+" {0, (sipPySlotType)0}\n"
+"};\n"
+"\n"
+ );
+ }
+
+ prcode(fp,
+"static sipEnumDef enumTypesTable[] = {\n"
+ );
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ char *emname;
+
+ if (ed->module != pt->module || ed->fqcname == NULL)
+ continue;
+
+ if (ed->ecd == NULL)
+ emname = mname;
+ else if (ed->ecd->real == NULL)
+ emname = ed->module->name;
+ else
+ emname = ed->ecd->real->iff->module->name;
+
+ prcode(fp,
+" {\"%s.%P\", ", emname, ed->ecd, ed->pyname->text);
+
+ if (isRenamedEnum(ed) || (ed->ecd != NULL && isRenamedClass(ed->ecd)))
+ prcode(fp, "\"%S\", ", ed->fqcname);
+ else
+ prcode(fp, "NULL, ");
+
+ if (ed->ecd == NULL)
+ prcode(fp, "-1");
+ else
+ prcode(fp, "%d", ed->ecd->classnr);
+
+ if (ed->slots != NULL)
+ prcode(fp, ", slots_%C", ed->fqcname);
+ else
+ prcode(fp, ", NULL");
+
+ prcode(fp, "},\n"
+ );
+ }
+
+ prcode(fp,
+"};\n"
+ );
+
+ nr_enummembers = generateEnumMemberTable(pt,NULL,fp);
+ }
+ else
+ nr_enummembers = 0;
+
+ if (pt->module->nrtypedefs > 0)
+ {
+ typedefDef *td;
+
+ prcode(fp,
+"\n"
+"\n"
+"/*\n"
+" * These define each typedef in this module. They are only needed in case\n"
+" * they are used as arguments to Qt signals.\n"
+" */\n"
+"\n"
+"static sipTypedefDef typedefsTable[] = {\n"
+ );
+
+ for (td = pt->typedefs; td != NULL; td = td->next)
+ {
+ char *tdmname, *sat;
+ scopedNameDef *fqname;
+
+ if (td->module != pt->module)
+ continue;
+
+ fqname = NULL;
+ tdmname = NULL;
+ sat = "unknown";
+
+ switch (td->type.atype)
+ {
+ case string_type:
+ sat = (td->type.nrderefs == 0 ? "char" : "string");
+ break;
+
+ case sstring_type:
+ sat = (td->type.nrderefs == 0 ? "schar" : "sstring");
+ break;
+
+ case ustring_type:
+ sat = (td->type.nrderefs == 0 ? "uchar" : "ustring");
+ break;
+
+ case wstring_type:
+ sat = (td->type.nrderefs == 0 ? "wchar" : "wstring");
+ break;
+
+ case short_type:
+ sat = "short";
+ break;
+
+ case ushort_type:
+ sat = "ushort";
+ break;
+
+ case cint_type:
+ case int_type:
+ sat = "int";
+ break;
+
+ case uint_type:
+ sat = "uint";
+ break;
+
+ case long_type:
+ sat = "long";
+ break;
+
+ case ulong_type:
+ sat = "ulong";
+ break;
+
+ case longlong_type:
+ sat = "longlong";
+ break;
+
+ case ulonglong_type:
+ sat = "ulonglong";
+ break;
+
+ case cfloat_type:
+ case float_type:
+ sat = "float";
+ break;
+
+ case cdouble_type:
+ case double_type:
+ sat = "double";
+ break;
+
+ case bool_type:
+ case cbool_type:
+ sat = "bool";
+ break;
+
+ case void_type:
+ if (td->type.nrderefs != 0)
+ sat = "void";
+ break;
+
+ case enum_type:
+ if ((fqname = td->type.u.ed->fqcname) != NULL)
+ {
+ sat = "enum";
+
+ if (td->type.u.ed->module != pt->module)
+ tdmname = td->type.u.ed->module->fullname;
+ }
+ break;
+
+ case class_type:
+ sat = "class";
+ fqname = classFQCName(td->type.u.cd);
+
+ if (td->type.u.cd->iff->module != pt->module)
+ tdmname = td->type.u.cd->iff->module->fullname;
+ break;
+
+ case mapped_type:
+ sat = "mtype";
+ fqname = td->type.u.mtd->iff->fqcname;
+
+ if (td->type.u.mtd->iff->module != pt->module)
+ tdmname = td->type.u.mtd->iff->module->fullname;
+ break;
+ }
+
+ prcode(fp,
+" {\"%S\", %s_sat", td->fqname, sat);
+
+ if (fqname != NULL)
+ prcode(fp, ", \"%S\"", fqname);
+ else
+ prcode(fp, ", NULL");
+
+ if (tdmname != NULL)
+ prcode(fp, ", \"%s\"", tdmname);
+ else
+ prcode(fp, ", NULL");
+
+ prcode(fp, "},\n"
+ );
+ }
+
+ prcode(fp,
+" {NULL, unknown_sat, NULL, NULL}\n"
+"};\n"
+ );
+ }
+
+ if (pt->module->nrvirthandlers > 0)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/*\n"
+" * This defines the virtual handlers that this module implements and can be\n"
+" * used by other modules.\n"
+" */\n"
+"static sipVirtHandlerFunc virtHandlersTable[] = {\n"
+ );
+
+ for (vhd = pt->module->virthandlers; vhd != NULL; vhd = vhd->next)
+ if (!isDuplicateVH(vhd))
+ prcode(fp,
+" (sipVirtHandlerFunc)sipVH_%s_%d,\n"
+ ,mname,vhd->virthandlernr);
+
+ prcode(fp,
+"};\n"
+ );
+ }
+
+ if (pt->module->allimports != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines the modules that this module needs to import. */\n"
+"static sipImportedModuleDef importsTable[] = {\n"
+ );
+
+ for (mld = pt->module->allimports; mld != NULL; mld = mld->next)
+ prcode(fp,
+" {\"%s\", %d, NULL},\n"
+ , mld->module->fullname, mld->module->version);
+
+ prcode(fp,
+" {NULL, -1, NULL}\n"
+"};\n"
+ );
+ }
+
+ if (nrSccs > 0)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines the class sub-convertors that this module defines. */\n"
+"static sipSubClassConvertorDef convertorsTable[] = {\n"
+ );
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (cd->convtosubcode == NULL)
+ continue;
+
+ prcode(fp,
+" {sipSubClass_%C, ",classFQCName(cd));
+
+ generateEncodedClass(pt,cd->subbase,0,fp);
+
+ prcode(fp,", NULL},\n");
+ }
+
+ prcode(fp,
+" {NULL, {0, 0, 0}, NULL}\n"
+"};\n"
+ );
+ }
+
+ /* Generate any license information. */
+ if (pt->module->license != NULL)
+ {
+ licenseDef *ld = pt->module->license;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the module's license. */\n"
+"static sipLicenseDef module_license = {\n"
+ );
+
+ prcode(fp,
+" \"%s\",\n"
+ ,ld->type);
+
+ if (ld->licensee != NULL)
+ prcode(fp,
+" \"%s\",\n"
+ ,ld->licensee);
+ else
+ prcode(fp,
+" NULL,\n"
+ );
+
+ if (ld->timestamp != NULL)
+ prcode(fp,
+" \"%s\",\n"
+ ,ld->timestamp);
+ else
+ prcode(fp,
+" NULL,\n"
+ );
+
+ if (ld->sig != NULL)
+ prcode(fp,
+" \"%s\"\n"
+ ,ld->sig);
+ else
+ prcode(fp,
+" NULL\n"
+ );
+
+ prcode(fp,
+"};\n"
+ );
+ }
+
+ /* Generate each instance table. */
+ is_inst_class = generateClasses(pt,NULL,fp);
+ is_inst_voidp = generateVoidPointers(pt,NULL,fp);
+ is_inst_char = generateChars(pt,NULL,fp);
+ is_inst_string = generateStrings(pt,NULL,fp);
+ is_inst_int = generateInts(pt,NULL,fp);
+ is_inst_long = generateLongs(pt,NULL,fp);
+ is_inst_ulong = generateUnsignedLongs(pt,NULL,fp);
+ is_inst_longlong = generateLongLongs(pt,NULL,fp);
+ is_inst_ulonglong = generateUnsignedLongLongs(pt,NULL,fp);
+ is_inst_double = generateDoubles(pt,NULL,fp);
+ is_inst_enum = generateEnums(pt,NULL,fp);
+
+ /* Generate any exceptions table. */
+ if (pt->module->nrexceptions > 0)
+ prcode(fp,
+"\n"
+"\n"
+"static PyObject *exceptionsTable[%d];\n"
+ ,pt->module->nrexceptions);
+
+ /* Generate any Qt support API. */
+ if (pt->qobjclass >= 0)
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines the Qt support API. */\n"
+"\n"
+"static sipQtAPI qtAPI = {\n"
+" &typesTable[%d],\n"
+" sipQtIsQtSignal,\n"
+" sipQtCreateUniversalSignalShortcut,\n"
+" sipQtCreateUniversalSignal,\n"
+" sipQtFindUniversalSignalShortcut,\n"
+" sipQtFindUniversalSignal,\n"
+" sipQtEmitSignalShortcut,\n"
+" sipQtEmitSignal,\n"
+" sipQtCreateUniversalSlot,\n"
+" sipQtDestroyUniversalSlot,\n"
+" sipQtFindSlot,\n"
+" sipQtConnect,\n"
+" sipQtDisconnect,\n"
+" sipQtSignalsBlocked,\n"
+" sipQtGetSender,\n"
+" sipQtForgetSender,\n"
+" sipQtSameSignalSlotName,\n"
+" sipQtFindConnection\n"
+"};\n"
+ ,pt->qobjclass);
+
+ prcode(fp,
+"\n"
+"\n"
+"/* This defines this module. */\n"
+"sipExportedModuleDef sipModuleAPI_%s = {\n"
+" NULL,\n"
+" SIP_API_MINOR_NR,\n"
+" \"%s\",\n"
+" NULL,\n"
+" %d,\n"
+" %s,\n"
+" %s,\n"
+" %d,\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" %d,\n"
+" NULL,\n"
+" %s,\n"
+" %d,\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" {%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s},\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" %s,\n"
+" NULL\n"
+"};\n"
+ , mname
+ , pt->module->fullname
+ , pt->module->version
+ , pt->module->allimports != NULL ? "importsTable" : "NULL"
+ , pt->qobjclass >= 0 ? "&qtAPI" : "NULL"
+ , pt->module->nrclasses
+ , pt->module->nrclasses > 0 ? "typesTable" : "NULL"
+ , hasexternal ? "externalTypesTable" : "NULL"
+ , pt->module->nrmappedtypes > 0 ? "mappedTypesTable" : "NULL"
+ , pt->module->nrenums
+ , pt->module->nrenums > 0 ? "enumTypesTable" : "NULL"
+ , nr_enummembers
+ , nr_enummembers > 0 ? "enummembers" : "NULL"
+ , pt->module->nrtypedefs > 0 ? "typedefsTable" : "NULL"
+ , pt->module->nrvirthandlers > 0 ? "virtHandlersTable" : "NULL"
+ , nrSccs > 0 ? "convertorsTable" : "NULL"
+ , is_inst_class ? "classInstances" : "NULL"
+ , is_inst_voidp ? "voidPtrInstances" : "NULL"
+ , is_inst_char ? "charInstances" : "NULL"
+ , is_inst_string ? "stringInstances" : "NULL"
+ , is_inst_int ? "intInstances" : "NULL"
+ , is_inst_long ? "longInstances" : "NULL"
+ , is_inst_ulong ? "unsignedLongInstances" : "NULL"
+ , is_inst_longlong ? "longLongInstances" : "NULL"
+ , is_inst_ulonglong ? "unsignedLongLongInstances" : "NULL"
+ , is_inst_double ? "doubleInstances" : "NULL"
+ , is_inst_enum ? "enumInstances" : "NULL"
+ , pt->module->license != NULL ? "&module_license" : "NULL"
+ , pt->module->nrexceptions > 0 ? "exceptionsTable" : "NULL"
+ , slot_extenders ? "slotExtenders" : "NULL"
+ , ctor_extenders ? "initExtenders" : "NULL"
+ , hasDelayedDtors(pt->module) ? "sipDelayedDtors" : "NULL");
+
+ /* Generate the storage for the external API pointers. */
+ prcode(fp,
+"\n"
+"\n"
+"/* The SIP API and the APIs of any imported modules. */\n"
+"const sipAPIDef *sipAPI_%s;\n"
+ ,mname);
+
+ for (mld = pt->module->allimports; mld != NULL; mld = mld->next)
+ prcode(fp,
+"const sipExportedModuleDef *sipModuleAPI_%s_%s;\n"
+ ,mname,mld->module->name);
+
+ if (optQ_OBJECT4(pt))
+ prcode(fp,
+"\n"
+"sip_qt_metaobject_func sip_%s_qt_metaobject;\n"
+"sip_qt_metacall_func sip_%s_qt_metacall;\n"
+ , mname
+ , mname);
+
+ /* Generate the Python module initialisation function. */
+ prcode(fp,
+"\n"
+"\n"
+"/* The Python module initialisation function. */\n"
+"#if defined(SIP_STATIC_MODULE)\n"
+"%svoid init%s()\n"
+"#else\n"
+"PyMODINIT_FUNC init%s()\n"
+"#endif\n"
+"{\n"
+" static PyMethodDef sip_methods[] = {\n"
+ ,(generating_c ? "" : "extern \"C\" "), mname
+ ,mname);
+
+ /* Generate the global functions. */
+
+ for (md = pt->othfuncs; md != NULL; md = md->next)
+ if (md->module == pt->module && md->slot == no_slot)
+ prcode(fp,
+" {%N, func_%s, METH_VARARGS, NULL},\n"
+ ,md->pyname,md->pyname->text);
+
+ prcode(fp,
+" {0, 0, 0, 0}\n"
+" };\n"
+"\n"
+" PyObject *sipModule, *sipModuleDict, *sip_sipmod, *sip_capiobj;\n"
+"\n"
+ );
+
+ /* Generate the pre-initialisation code. */
+ generateCppCodeBlock(pt->preinitcode,fp);
+
+ prcode(fp,
+" /* Initialise the module and get it's dictionary. */\n"
+" sipModule = Py_InitModule((char *)sipModuleAPI_%s.em_name,sip_methods);\n"
+" sipModuleDict = PyModule_GetDict(sipModule);\n"
+"\n"
+" /* Import the SIP module and get it's API. */\n"
+" sip_sipmod = PyImport_ImportModule((char *)\"sip\");\n"
+"\n"
+" if (sip_sipmod == NULL)\n"
+" return;\n"
+"\n"
+" sip_capiobj = PyDict_GetItemString(PyModule_GetDict(sip_sipmod),\"_C_API\");\n"
+"\n"
+" if (sip_capiobj == NULL || !PyCObject_Check(sip_capiobj))\n"
+" return;\n"
+"\n"
+ ,mname);
+
+ if (generating_c)
+ prcode(fp,
+" sipAPI_%s = (const sipAPIDef *)PyCObject_AsVoidPtr(sip_capiobj);\n"
+ ,mname);
+ else
+ prcode(fp,
+" sipAPI_%s = reinterpret_cast<const sipAPIDef *>(PyCObject_AsVoidPtr(sip_capiobj));\n"
+ ,mname);
+
+ prcode(fp,
+"\n"
+" /* Export the module and publish it's API. */\n"
+" if (sipAPI_%s->api_export_module(&sipModuleAPI_%s,SIP_API_MAJOR_NR,SIP_API_MINOR_NR,sipModuleDict) < 0)\n"
+" return;\n"
+ ,mname
+ ,mname);
+
+ noIntro = TRUE;
+
+ for (mld = pt->module->allimports; mld != NULL; mld = mld->next)
+ {
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /* Get the APIs of the modules that this one is dependent on. */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" sipModuleAPI_%s_%s = sipModuleAPI_%s.em_imports[%d].im_module;\n"
+ ,mname,mld->module->name,mname,mld->module->modulenr);
+ }
+
+ generateClassesInline(pt,fp);
+ generateEnumsInline(pt, fp);
+
+ /* Create any exceptions. */
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ {
+ if (xd->iff->module != pt->module)
+ continue;
+
+ if (xd->iff->type != exception_iface)
+ continue;
+
+ if (xd->exceptionnr < 0)
+ continue;
+
+ prcode(fp,
+"\n"
+" if ((exceptionsTable[%d] = PyErr_NewException((char *)\"%s.%s\",", xd->exceptionnr, xd->iff->module->name, xd->pyname);
+
+ if (xd->bibase != NULL)
+ prcode(fp, "PyExc_%s", xd->bibase);
+ else if (xd->base->iff->module == pt->module)
+ prcode(fp, "exceptionsTable[%d]", xd->base->exceptionnr);
+ else
+ prcode(fp, "sipException_%C", xd->base->iff->fqcname);
+
+ prcode(fp, ",NULL)) == NULL || PyDict_SetItemString(sipModuleDict,\"%s\",exceptionsTable[%d]) < 0)\n"
+" return;\n"
+ , xd->pyname, xd->exceptionnr);
+ }
+
+ /* Generate any Qt metatype registration calls. */
+ if (optRegisterTypes(pt))
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ if (cd->iff->module != pt->module)
+ continue;
+
+ generateRegisterMetaType(cd, fp);
+ }
+
+ /* Generate the post-initialisation code. */
+ generateCppCodeBlock(pt->postinitcode,fp);
+
+ /*
+ * This has to be done after the post-initialisation code in case this
+ * module is exporting the symbol.
+ */
+ if (optQ_OBJECT4(pt))
+ prcode(fp,
+"\n"
+" sip_%s_qt_metaobject = (sip_qt_metaobject_func)sipImportSymbol(\"qtcore_qt_metaobject\");\n"
+" sip_%s_qt_metacall = (sip_qt_metacall_func)sipImportSymbol(\"qtcore_qt_metacall\");\n"
+ , mname
+ , mname);
+
+ prcode(fp,
+"}\n"
+ );
+
+ /* Generate the interface source and header files. */
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ {
+ if (iff->module == pt->module && iff->type != exception_iface)
+ {
+ if (*parts && files_in_part++ == max_per_part)
+ {
+ /* Close the old part. */
+ closeFile(fp);
+ free(cppfile);
+
+ /* Create a new one. */
+ files_in_part = 1;
+ ++this_part;
+
+ cppfile = makePartName(codeDir,mname,this_part,srcSuffix);
+ fp = createCompilationUnit(pt, cppfile, "Module code.");
+ }
+
+ generateIfaceCpp(pt,iff,codeDir,srcSuffix,(*parts ? fp : NULL));
+ }
+
+ generateIfaceHeader(pt,iff,codeDir);
+ }
+
+ closeFile(fp);
+ free(cppfile);
+
+ /* How many parts we actually generated. */
+ if (*parts)
+ *parts = this_part + 1;
+}
+
+
+/*
+ * Generate all the sub-class convertors for a module.
+ */
+static int generateSubClassConvertors(sipSpec *pt, FILE *fp)
+{
+ int nrSccs = 0;
+ classDef *cd;
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ {
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (cd->convtosubcode == NULL)
+ continue;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Convert to a sub-class if possible. */\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static sipWrapperType *sipSubClass_%C(void **);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static sipWrapperType *sipSubClass_%C(void **sipCppRet)\n"
+"{\n"
+" %S *sipCpp = reinterpret_cast<%S *>(*sipCppRet);\n"
+" sipWrapperType *sipClass;\n"
+"\n"
+ , classFQCName(cd)
+ , classFQCName(cd->subbase), classFQCName(cd->subbase));
+
+ generateCppCodeBlock(cd->convtosubcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipClass;\n"
+"}\n"
+ );
+
+ ++nrSccs;
+ }
+
+ return nrSccs;
+}
+
+
+/*
+ * Generate an entry for a class in the classes table and all its children.
+ */
+static void generateClassTableEntries(sipSpec *pt, nodeDef *nd, FILE *fp)
+{
+ nodeDef *cnd;
+
+ /* Generate the entry if it's not the root. */
+ if (nd->cd != NULL)
+ if (isExternal(nd->cd))
+ prcode(fp,
+" 0,\n"
+ );
+ else
+ prcode(fp,
+" (sipWrapperType *)(void *)&sipType_%s_%C,\n"
+ , pt->module->name, classFQCName(nd->cd));
+
+ /* Generate all it's children. */
+ for (cnd = nd->child; cnd != NULL; cnd = cnd->next)
+ generateClassTableEntries(pt, cnd, fp);
+}
+
+
+/*
+ * Generate the structure representing an encoded class.
+ */
+static void generateEncodedClass(sipSpec *pt,classDef *cd,int last,FILE *fp)
+{
+ moduleDef *mod = cd->iff->module;
+
+ prcode(fp,"{%u, ",cd->classnr);
+
+ if (mod == pt->module)
+ prcode(fp,"255");
+ else
+ prcode(fp,"%u",mod->modulenr);
+
+ prcode(fp,", %u}",last);
+}
+
+
+/*
+ * Generate an ordinary function (ie. not a class method).
+ */
+static void generateOrdinaryFunction(sipSpec *pt,classDef *cd,memberDef *md,
+ FILE *fp)
+{
+ overDef *od;
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (cd != NULL)
+ {
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static PyObject *meth_%C_%s(PyObject *,PyObject *);}\n"
+ , classFQCName(cd), md->pyname->text);
+
+ prcode(fp,
+"static PyObject *meth_%C_%s(PyObject *,PyObject *sipArgs)\n"
+ ,classFQCName(cd),md->pyname->text);
+
+ od = cd->overs;
+ }
+ else
+ {
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static PyObject *func_%s(PyObject *,PyObject *);}\n"
+ , md->pyname->text);
+
+ prcode(fp,
+"static PyObject *func_%s(PyObject *%s,PyObject *sipArgs)\n"
+ ,md->pyname->text,(generating_c ? "sipSelf" : ""));
+
+ od = pt->overs;
+ }
+
+ prcode(fp,
+"{\n"
+" int sipArgsParsed = 0;\n"
+ );
+
+ while (od != NULL)
+ {
+ if (od->common == md)
+ generateFunctionBody(pt,od,cd,cd,TRUE,fp);
+
+ od = od->next;
+ }
+
+ prcode(fp,
+"\n"
+" /* Raise an exception if the arguments couldn't be parsed. */\n"
+" sipNoFunction(sipArgsParsed,%N);\n"
+"\n"
+" return NULL;\n"
+"}\n"
+ ,md->pyname);
+}
+
+
+/*
+ * Generate the table of enum members for a scope. Return the number of them.
+ */
+static int generateEnumMemberTable(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int i, nr_members;
+ enumDef *ed;
+ enumMemberDef **etab, **et;
+
+ /* First we count how many. */
+
+ nr_members = 0;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ enumMemberDef *emd;
+
+ if (ed->ecd != cd || ed->module != pt->module)
+ continue;
+
+ if (cd == NULL && ed->fqcname == NULL)
+ continue;
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ ++nr_members;
+ }
+
+ if (nr_members == 0)
+ return 0;
+
+ /* Create a table so they can be sorted. */
+
+ etab = sipMalloc(sizeof (enumMemberDef *) * nr_members);
+
+ et = etab;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ enumMemberDef *emd;
+
+ if (ed->ecd != cd || ed->module != pt->module)
+ continue;
+
+ if (cd == NULL && ed->fqcname == NULL)
+ continue;
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ *et++ = emd;
+ }
+
+ qsort(etab,nr_members,sizeof (enumMemberDef *),compareEnumMembers);
+
+ /* Now generate the table. */
+
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"static sipEnumMemberDef enummembers_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"/* These are the enum members of all global enums. */\n"
+"static sipEnumMemberDef enummembers[] = {\n"
+ );
+
+ for (i = 0; i < nr_members; ++i)
+ {
+ enumMemberDef *emd;
+
+ emd = etab[i];
+
+ prcode(fp,
+" {%N, ",emd->pyname);
+
+ if (cd != NULL)
+ {
+ if (isProtectedEnum(emd->ed))
+ prcode(fp,"sip");
+
+ prcode(fp,"%S::%s",classFQCName(cd),emd->cname);
+ }
+ else
+ prcode(fp,"%s"
+ ,emd->cname);
+
+ prcode(fp, ", %d},\n", emd->ed->enumnr);
+ }
+
+ prcode(fp,
+"};\n"
+ );
+
+ return nr_members;
+}
+
+
+/*
+ * The qsort helper to compare two enumMemberDef structures based on the name
+ * of the enum member.
+ */
+
+static int compareEnumMembers(const void *m1,const void *m2)
+{
+ return strcmp((*(enumMemberDef **)m1)->pyname->text,
+ (*(enumMemberDef **)m2)->pyname->text);
+}
+
+
+/*
+ * Generate the access functions for the variables.
+ */
+static void generateAccessFunctions(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ varDef *vd;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->accessfunc == NULL)
+ continue;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Access function. */\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void *access_%C();}\n"
+ , vd->fqcname);
+
+ prcode(fp,
+"static void *access_%C()\n"
+"{\n"
+ ,vd->fqcname);
+
+ generateCppCodeBlock(vd->accessfunc,fp);
+
+ prcode(fp,
+"}\n"
+ );
+ }
+}
+
+
+/*
+ * Generate the inline code to add a set of enum instances to a dictionary.
+ */
+static void generateEnumsInline(sipSpec *pt, FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->module != pt->module)
+ continue;
+
+ if (vd->type.atype != enum_type)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ /* Skip enums that don't need inline code. */
+ if (generating_c || vd->accessfunc != NULL || vd->type.nrderefs != 0)
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /* Define the enum instances that have to be added inline. */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" sipAddEnumInstance(");
+
+ if (vd->ecd == NULL)
+ prcode(fp,"sipModuleDict");
+ else
+ prcode(fp,"(PyObject *)sipClass_%C",classFQCName(vd->ecd));
+
+ prcode(fp,",%N,(int)%S,sipEnum_%C);\n"
+ , vd->pyname, vd->fqcname, vd->type.u.ed->fqcname);
+ }
+}
+
+
+/*
+ * Generate the inline code to add a set of class instances to a dictionary.
+ */
+static void generateClassesInline(sipSpec *pt,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->module != pt->module)
+ continue;
+
+ if (vd->type.atype != class_type && vd->type.atype != mapped_type)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ /* Skip classes that don't need inline code. */
+ if (generating_c || vd->accessfunc != NULL || vd->type.nrderefs != 0)
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /*\n"
+" * Define the class and mapped type instances that have to be added\n"
+" * inline.\n"
+" */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ if (vd->type.atype == class_type)
+ prcode(fp,
+" sipAddClassInstance(");
+ else
+ prcode(fp,
+" sipAddMappedTypeInstance(");
+
+ if (vd->ecd == NULL)
+ prcode(fp,"sipModuleDict");
+ else
+ prcode(fp,"(PyObject *)sipClass_%C",classFQCName(vd->ecd));
+
+ prcode(fp,",%N,",vd->pyname);
+
+ if (isConstArg(&vd->type))
+ prcode(fp,"const_cast<%b *>(&%S)",&vd->type,vd->fqcname);
+ else
+ prcode(fp,"&%S",vd->fqcname);
+
+ if (vd->type.atype == class_type)
+ prcode(fp, ",sipClass_%C);\n"
+ , classFQCName(vd->type.u.cd));
+ else
+ prcode(fp, ",sipMappedType_%T);\n"
+ , &vd->type);
+ }
+}
+
+
+/*
+ * Generate the code to add a set of class instances to a dictionary. Return
+ * TRUE if there was at least one.
+ */
+static int generateClasses(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ scopedNameDef *vcname;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (vd->type.atype != class_type)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ /*
+ * Skip ordinary C++ class instances which need to be done with
+ * inline code rather than through a static table. This is
+ * because C++ does not guarantee the order in which the table
+ * and the instance will be created. So far this has only been
+ * seen to be a problem when statically linking SIP generated
+ * modules on Windows.
+ */
+ if (!generating_c && vd->accessfunc == NULL && vd->type.nrderefs == 0)
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the class instances to be added to this type dictionary. */\n"
+"static sipClassInstanceDef classInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the class instances to be added to this module dictionary. */\n"
+"static sipClassInstanceDef classInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ vcname = classFQCName(vd->type.u.cd);
+
+ if (vd->accessfunc != NULL)
+ {
+ prcode(fp,
+" {%N, (void *)access_%C, &sipClass_%C, SIP_ACCFUNC},\n"
+ ,vd->pyname,vd->fqcname,vcname);
+ }
+ else if (vd->type.nrderefs != 0)
+ {
+ prcode(fp,
+" {%N, &%S, &sipClass_%C, SIP_INDIRECT},\n"
+ ,vd->pyname,vd->fqcname,vcname);
+ }
+ else if (isConstArg(&vd->type))
+ {
+ prcode(fp,
+" {%N, const_cast<%b *>(&%S), &sipClass_%C, 0},\n"
+ ,vd->pyname,&vd->type,vd->fqcname,vcname);
+ }
+ else
+ {
+ prcode(fp,
+" {%N, &%S, &sipClass_%C, 0},\n"
+ ,vd->pyname,vd->fqcname,vcname);
+ }
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0, 0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of void pointers to a dictionary. Return
+ * TRUE if there was at least one.
+ */
+static int generateVoidPointers(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (vd->type.atype != void_type && vd->type.atype != struct_type)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the void pointers to be added to this type dictionary. */\n"
+"static sipVoidPtrInstanceDef voidPtrInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the void pointers to be added to this module dictionary. */\n"
+"static sipVoidPtrInstanceDef voidPtrInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ if (isConstArg(&vd->type))
+ prcode(fp,
+" {%N, const_cast<%b *>(%S)},\n"
+ , vd->pyname, &vd->type, vd->fqcname);
+ else
+ prcode(fp,
+" {%N, %S},\n"
+ , vd->pyname, vd->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of characters to a dictionary. Return TRUE
+ * if there was at least one.
+ */
+static int generateChars(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ argType vtype = vd->type.atype;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (!((vtype == sstring_type || vtype == ustring_type || vtype == string_type || vtype == wstring_type) && vd->type.nrderefs == 0))
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the chars to be added to this type dictionary. */\n"
+"static sipCharInstanceDef charInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the chars to be added to this module dictionary. */\n"
+"static sipCharInstanceDef charInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %S},\n"
+ ,vd->pyname,vd->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of strings to a dictionary. Return TRUE if
+ * there is at least one.
+ */
+static int generateStrings(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ argType vtype = vd->type.atype;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (!((vtype == sstring_type || vtype == ustring_type || vtype == string_type || vtype == wstring_type) && vd->type.nrderefs != 0))
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the strings to be added to this type dictionary. */\n"
+"static sipStringInstanceDef stringInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the strings to be added to this module dictionary. */\n"
+"static sipStringInstanceDef stringInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %S},\n"
+ ,vd->pyname,vd->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of enum instances to a dictionary. Return
+ * TRUE if there was at least one.
+ */
+static int generateEnums(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (vd->type.atype != enum_type || vd->type.u.ed->fqcname == NULL)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ /* Skip enums that need inline code. */
+ if (!generating_c && vd->accessfunc == NULL && vd->type.nrderefs == 0)
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the enum instances to be added to this type dictionary. */\n"
+"static sipEnumInstanceDef enumInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the enum instances to be added to this module dictionary. */\n"
+"static sipEnumInstanceDef enumInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, (int)%S, &sipEnum_%C},\n"
+ ,vd->pyname,vd->fqcname,vd->type.u.ed->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of ints to a dictionary. Return TRUE if
+ * there was at least one.
+ */
+static int generateInts(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+ enumDef *ed;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ argType vtype = vd->type.atype;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (!(vtype == enum_type || vtype == ushort_type ||
+ vtype == short_type || vtype == uint_type ||
+ vtype == cint_type || vtype == int_type ||
+ vtype == bool_type || vtype == cbool_type))
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ /* Named enums are handled elsewhere. */
+ if (vtype == enum_type && vd->type.u.ed->fqcname != NULL)
+ continue;
+
+ if (noIntro)
+ {
+ ints_intro(cd, fp);
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %S},\n"
+ ,vd->pyname,vd->fqcname);
+ }
+
+ /* Now do global anonymous enums. */
+ if (cd == NULL)
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ enumMemberDef *em;
+
+ if (ed->ecd != cd || ed->module != pt->module)
+ continue;
+
+ if (ed->fqcname != NULL)
+ continue;
+
+ for (em = ed->members; em != NULL; em = em->next)
+ {
+ if (noIntro)
+ {
+ ints_intro(cd, fp);
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %s},\n"
+ , em->pyname, em->cname);
+ }
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the intro for a table of int instances.
+ */
+static void ints_intro(classDef *cd, FILE *fp)
+{
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the ints to be added to this type dictionary. */\n"
+"static sipIntInstanceDef intInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the ints to be added to this module dictionary. */\n"
+"static sipIntInstanceDef intInstances[] = {\n"
+ );
+}
+
+
+/*
+ * Generate the code to add a set of longs to a dictionary. Return TRUE if
+ * there was at least one.
+ */
+static int generateLongs(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ return generateVariableType(pt, cd, long_type, "long", "Long", "long", fp);
+}
+
+
+/*
+ * Generate the code to add a set of unsigned longs to a dictionary. Return
+ * TRUE if there was at least one.
+ */
+static int generateUnsignedLongs(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ return generateVariableType(pt, cd, ulong_type, "unsigned long", "UnsignedLong", "unsignedLong", fp);
+}
+
+
+/*
+ * Generate the code to add a set of long longs to a dictionary. Return TRUE
+ * if there was at least one.
+ */
+static int generateLongLongs(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ return generateVariableType(pt, cd, longlong_type, "long long", "LongLong", "longLong", fp);
+}
+
+
+/*
+ * Generate the code to add a set of unsigned long longs to a dictionary.
+ * Return TRUE if there was at least one.
+ */
+static int generateUnsignedLongLongs(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ return generateVariableType(pt, cd, ulonglong_type, "unsigned long long", "UnsignedLongLong", "unsignedLongLong", fp);
+}
+
+
+/*
+ * Generate the code to add a set of a particular type to a dictionary. Return
+ * TRUE if there was at least one.
+ */
+static int generateVariableType(sipSpec *pt, classDef *cd, argType atype, const char *eng, const char *s1, const char *s2, FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ argType vtype = vd->type.atype;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (vtype != atype)
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the %ss to be added to this type dictionary. */\n"
+"static sip%sInstanceDef %sInstances_%C[] = {\n"
+ , eng
+ , s1, s2, classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the %ss to be added to this module dictionary. */\n"
+"static sip%sInstanceDef %sInstances[] = {\n"
+ , eng
+ , s1, s2);
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %S},\n"
+ ,vd->pyname,vd->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the code to add a set of doubles to a dictionary. Return TRUE if
+ * there was at least one.
+ */
+static int generateDoubles(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro;
+ varDef *vd;
+
+ noIntro = TRUE;
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ {
+ argType vtype = vd->type.atype;
+
+ if (vd->ecd != cd || vd->module != pt->module)
+ continue;
+
+ if (!(vtype == float_type || vtype == cfloat_type || vtype == double_type || vtype == cdouble_type))
+ continue;
+
+ if (needsHandler(vd))
+ continue;
+
+ if (noIntro)
+ {
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the doubles to be added to this type dictionary. */\n"
+"static sipDoubleInstanceDef doubleInstances_%C[] = {\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+"\n"
+"\n"
+"/* Define the doubles to be added to this module dictionary. */\n"
+"static sipDoubleInstanceDef doubleInstances[] = {\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %S},\n"
+ ,vd->pyname,vd->fqcname);
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {0, 0}\n"
+"};\n"
+ );
+
+ return !noIntro;
+}
+
+
+/*
+ * Generate the C/C++ code for an interface.
+ */
+static void generateIfaceCpp(sipSpec *pt,ifaceFileDef *iff,char *codeDir,
+ char *srcSuffix,FILE *master)
+{
+ char *cppfile, *cmname = iff->module->name;
+ classDef *cd;
+ mappedTypeDef *mtd;
+ FILE *fp;
+
+ if (master == NULL)
+ {
+ cppfile = createIfaceFileName(codeDir,iff,srcSuffix);
+ fp = createCompilationUnit(pt, cppfile, "Interface wrapper code.");
+ }
+ else
+ fp = master;
+
+ prcode(fp,
+"\n"
+"#include \"sipAPI%s.h\"\n"
+"#include \"sip%s%F.h\"\n"
+ ,cmname
+ ,cmname,iff->fqcname);
+
+ generateUsedIncludes(iff->used, FALSE, fp);
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ if (cd->iff == iff)
+ {
+ if (isProtectedClass(cd))
+ prcode(fp,
+"\n"
+"#include \"sip%s%F.h\"\n"
+ ,cmname,cd->ecd->iff->fqcname);
+
+ if (!isExternal(cd))
+ generateClassCpp(cd, pt, fp);
+ }
+
+ for (mtd = pt->mappedtypes; mtd != NULL; mtd = mtd->next)
+ if (mtd->iff == iff)
+ generateMappedTypeCpp(mtd,fp);
+
+ if (master == NULL)
+ {
+ closeFile(fp);
+ free(cppfile);
+ }
+}
+
+
+/*
+ * Return a filename for an interface C++ or header file on the heap.
+ */
+static char *createIfaceFileName(char *codeDir,ifaceFileDef *iff,char *suffix)
+{
+ char *fn;
+ scopedNameDef *snd;
+
+ fn = concat(codeDir,"/sip",iff->module->name,NULL);
+
+ for (snd = iff->fqcname; snd != NULL; snd = snd->next)
+ append(&fn,snd->name);
+
+ append(&fn,suffix);
+
+ return fn;
+}
+
+
+/*
+ * Generate the C++ code for a mapped type version.
+ */
+static void generateMappedTypeCpp(mappedTypeDef *mtd,FILE *fp)
+{
+ int need_xfer;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Call the mapped type's destructor. */\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void release_%T(void *, int);}\n"
+ , &mtd->type);
+
+ prcode(fp,
+"static void release_%T(void *ptr, int%s)\n"
+"{\n"
+ , &mtd->type, (generating_c ? " status" : ""));
+
+ if (release_gil)
+ prcode(fp,
+" Py_BEGIN_ALLOW_THREADS\n"
+ );
+
+ if (generating_c)
+ prcode(fp,
+" sipFree(ptr);\n"
+ );
+ else
+ prcode(fp,
+" delete reinterpret_cast<%b *>(ptr);\n"
+ , &mtd->type);
+
+ if (release_gil)
+ prcode(fp,
+" Py_END_ALLOW_THREADS\n"
+ );
+
+ prcode(fp,
+"}\n"
+"\n"
+ );
+
+ generateConvertToDefinitions(mtd,NULL,fp);
+
+ /* Generate the from type convertor. */
+
+ need_xfer = (generating_c || usedInCode(mtd->convfromcode, "sipTransferObj"));
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static PyObject *convertFrom_%T(void *, PyObject *);}\n"
+ , &mtd->type);
+
+ prcode(fp,
+"static PyObject *convertFrom_%T(void *sipCppV,PyObject *%s)\n"
+"{\n"
+" ", &mtd->type, (need_xfer ? "sipTransferObj" : ""));
+
+ generateMappedTypeFromVoid(mtd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+"\n"
+ );
+
+ generateCppCodeBlock(mtd->convfromcode,fp);
+
+ prcode(fp,
+"}\n"
+"\n"
+"\n"
+"sipMappedType sipMappedTypeDef_%T = {\n"
+" \"%B\",\n"
+" release_%T,\n"
+" forceConvertTo_%T,\n"
+" convertTo_%T,\n"
+" convertFrom_%T\n"
+"};\n"
+ , &mtd->type
+ , &mtd->type
+ , &mtd->type
+ , &mtd->type
+ , &mtd->type
+ , &mtd->type
+ , &mtd->type);
+}
+
+
+/*
+ * Generate the C++ code for a class.
+ */
+static void generateClassCpp(classDef *cd,sipSpec *pt,FILE *fp)
+{
+ varDef *vd;
+
+ /* Generate any local class code. */
+
+ generateCppCodeBlock(cd->cppcode,fp);
+
+ generateClassFunctions(pt,cd,fp);
+
+ generateAccessFunctions(pt,cd,fp);
+
+ /* Generate the variable handlers. */
+ if (hasVarHandlers(cd))
+ {
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ if (vd->ecd == cd && needsHandler(vd))
+ generateVariableHandler(vd,fp);
+
+ /* Generate the variable table. */
+ prcode(fp,
+"\n"
+"PyMethodDef variables_%C[] = {\n"
+ ,classFQCName(cd));
+
+ for (vd = pt->vars; vd != NULL; vd = vd->next)
+ if (vd->ecd == cd && needsHandler(vd))
+ prcode(fp,
+" {%N, var_%C, %s, NULL},\n"
+ ,vd->pyname,vd->fqcname,(isStaticVar(vd) ? "METH_STATIC" : "0"));
+
+ prcode(fp,
+" {0, 0, 0, 0}\n"
+"};\n"
+ );
+ }
+
+ if (cd->iff->type != namespace_iface)
+ generateConvertToDefinitions(NULL,cd,fp);
+
+ /* The type definition structure. */
+ generateTypeDefinition(pt, cd, fp);
+}
+
+
+/*
+ * Return a sorted array of relevant functions for a namespace.
+ */
+
+static sortedMethTab *createFunctionTable(classDef *cd,int *nrp)
+{
+ int nr;
+ sortedMethTab *mtab, *mt;
+ memberDef *md;
+
+ /* First we need to count the number of applicable functions. */
+
+ nr = 0;
+
+ for (md = cd->members; md != NULL; md = md->next)
+ ++nr;
+
+ if ((*nrp = nr) == 0)
+ return NULL;
+
+ /* Create the table of methods. */
+
+ mtab = sipMalloc(sizeof (sortedMethTab) * nr);
+
+ /* Initialise the table. */
+
+ mt = mtab;
+
+ for (md = cd->members; md != NULL; md = md->next)
+ {
+ mt->md = md;
+ mt->is_static = TRUE;
+
+ ++mt;
+ }
+
+ /* Finally sort the table. */
+
+ qsort(mtab,nr,sizeof (sortedMethTab),compareMethTab);
+
+ return mtab;
+}
+
+
+/*
+ * Return a sorted array of relevant methods (either lazy or non-lazy) for a
+ * class.
+ */
+static sortedMethTab *createMethodTable(classDef *cd, int *nrp)
+{
+ int nr;
+ visibleList *vl;
+ sortedMethTab *mtab, *mt;
+
+ /*
+ * First we need to count the number of applicable methods. Only provide
+ * an entry point if there is at least one overload that is defined in this
+ * class and is a non-abstract function or slot. We allow private (even
+ * though we don't actually generate code) because we need to intercept the
+ * name before it reaches a more public version further up the class
+ * hierarchy. We add the ctor and any variable handlers as special
+ * entries.
+ */
+ nr = 0;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ if (vl->m->slot != no_slot)
+ continue;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ /*
+ * Skip protected methods if we don't have the means to
+ * handle them.
+ */
+ if (isProtected(od) && !hasShadow(cd))
+ continue;
+
+ if (skipOverload(od,vl->m,cd,vl->cd,TRUE))
+ continue;
+
+ ++nr;
+
+ break;
+ }
+ }
+
+ if ((*nrp = nr) == 0)
+ return NULL;
+
+ /* Create the table of methods. */
+
+ mtab = sipMalloc(sizeof (sortedMethTab) * nr);
+
+ /* Initialise the table. */
+
+ mt = mtab;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ int need_method, is_static;
+ overDef *od;
+
+ if (vl->m->slot != no_slot)
+ continue;
+
+ need_method = FALSE;
+ is_static = TRUE;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ /*
+ * Skip protected methods if we don't have the means to
+ * handle them.
+ */
+ if (isProtected(od) && !hasShadow(cd))
+ continue;
+
+ if (!skipOverload(od,vl->m,cd,vl->cd,TRUE))
+ {
+ need_method = TRUE;
+
+ if (!isPrivate(od) && !isStatic(od))
+ is_static = FALSE;
+ }
+ }
+
+ if (need_method)
+ {
+ mt->md = vl->m;
+ mt->is_static = is_static;
+
+ ++mt;
+ }
+ }
+
+ /* Finally sort the table. */
+
+ qsort(mtab,nr,sizeof (sortedMethTab),compareMethTab);
+
+ return mtab;
+}
+
+
+/*
+ * The qsort helper to compare two sortedMethTab structures based on the Python
+ * name of the method.
+ */
+
+static int compareMethTab(const void *m1,const void *m2)
+{
+ return strcmp(((sortedMethTab *)m1)->md->pyname->text,
+ ((sortedMethTab *)m2)->md->pyname->text);
+}
+
+
+/*
+ * Generate the sorted table of methods and return the number of entries.
+ */
+static int generateMethodTable(classDef *cd,FILE *fp)
+{
+ int nr;
+ sortedMethTab *mtab;
+
+ mtab = (cd->iff->type == namespace_iface) ?
+ createFunctionTable(cd,&nr) :
+ createMethodTable(cd,&nr);
+
+ if (mtab != NULL)
+ {
+ int i;
+
+ prcode(fp,
+"\n"
+"\n"
+"static PyMethodDef methods_%C[] = {\n"
+ ,classFQCName(cd));
+
+ for (i = 0; i < nr; ++i)
+ {
+ memberDef *md = mtab[i].md;
+
+ /*
+ * For the moment we are suppressing the generation of
+ * METH_STATIC until we understand descriptors better.
+ * It could be that they will simplify the handling of
+ * lazy attributes and allow things to be cached in the
+ * type dictionary.
+ */
+ mtab[i].is_static = FALSE;
+
+ prcode(fp,
+" {%N, meth_%C_%s, METH_VARARGS%s, NULL}%s\n"
+ ,md->pyname,classFQCName(cd),md->pyname->text,(mtab[i].is_static ? "|METH_STATIC" : ""),((i + 1) < nr) ? "," : "");
+ }
+
+ free(mtab);
+
+ prcode(fp,
+"};\n"
+ );
+ }
+
+ return nr;
+}
+
+
+/*
+ * Generate the "to type" convertor definitions.
+ */
+
+static void generateConvertToDefinitions(mappedTypeDef *mtd,classDef *cd,
+ FILE *fp)
+{
+ codeBlock *convtocode;
+ ifaceFileDef *iff;
+ argDef type;
+
+ if (cd != NULL)
+ {
+ convtocode = cd->convtocode;
+
+ iff = cd->iff;
+
+ type.atype = class_type;
+ type.u.cd = cd;
+ }
+ else
+ {
+ convtocode = mtd->convtocode;
+
+ iff = mtd->iff;
+
+ type.atype = mapped_type;
+ type.u.mtd = mtd;
+ }
+
+ type.argflags = 0;
+ type.name = NULL;
+ type.nrderefs = 0;
+ type.defval = NULL;
+
+ /* Generate the type convertors. */
+
+ if (convtocode != NULL)
+ {
+ int need_ptr, need_xfer;
+
+ /*
+ * Sometimes type convertors are just stubs that set the error
+ * flag, so check if we actually need everything so that we
+ * can avoid compiler warnings.
+ */
+ need_ptr = (generating_c || usedInCode(convtocode, "sipCppPtr"));
+ need_xfer = (generating_c || usedInCode(convtocode, "sipTransferObj"));
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static int convertTo_%T(PyObject *, void **, int *, PyObject *);}\n"
+ , &type);
+
+ prcode(fp,
+"static int convertTo_%T(PyObject *sipPy,void **%s,int *sipIsErr,PyObject *%s)\n"
+"{\n"
+ , &type, (need_ptr ? "sipCppPtrV" : ""), (need_xfer ? "sipTransferObj" : ""));
+
+ if (need_ptr)
+ if (generating_c)
+ prcode(fp,
+" %b **sipCppPtr = (%b **)sipCppPtrV;\n"
+"\n"
+ , &type, &type);
+ else
+ prcode(fp,
+" %b **sipCppPtr = reinterpret_cast<%b **>(sipCppPtrV);\n"
+"\n"
+ , &type, &type);
+
+ generateCppCodeBlock(convtocode,fp);
+
+ prcode(fp,
+"}\n"
+ );
+ }
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void *forceConvertTo_%T(PyObject *, int *);}\n"
+ , &type);
+
+ prcode(fp,
+"static void *forceConvertTo_%T(PyObject *valobj,int *iserrp)\n"
+"{\n"
+" if (*iserrp || valobj == NULL)\n"
+" return NULL;\n"
+"\n"
+ ,&type);
+
+ if (convtocode != NULL)
+ prcode(fp,
+" if (convertTo_%T(valobj,NULL,NULL,NULL))\n"
+" {\n"
+" void *val;\n"
+"\n"
+" /*\n"
+" * Note that we throw away the flag that says if the value\n"
+" * has just been created on the heap or not.\n"
+" */\n"
+" convertTo_%T(valobj,&val,iserrp,NULL);\n"
+"\n"
+" return val;\n"
+" }\n"
+ ,&type
+ ,&type);
+ else
+ prcode(fp,
+" if (valobj == Py_None || sipIsSubClassInstance(valobj,sipClass_%T))\n"
+" return sipConvertToCpp(valobj,sipClass_%T,iserrp);\n"
+ ,&type
+ ,&type);
+
+ if (cd != NULL)
+ prcode(fp,
+"\n"
+" sipBadClass(%N);\n"
+ , iff->name);
+ else
+ prcode(fp,
+"\n"
+" sipBadClass(\"%B\");\n"
+ , &mtd->type);
+
+ prcode(fp,
+"\n"
+" *iserrp = 1;\n"
+"\n"
+" return NULL;\n"
+"}\n"
+ );
+}
+
+
+/*
+ * Generate a variable handler.
+ */
+static void generateVariableHandler(varDef *vd,FILE *fp)
+{
+ argType atype = vd->type.atype;
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static PyObject *var_%C(PyObject *, PyObject *);}\n"
+ , vd->fqcname);
+
+ prcode(fp,
+"static PyObject *var_%C(PyObject *%s,PyObject *sipPy)\n"
+"{\n"
+ ,vd->fqcname,(isStaticVar(vd) ? "" : "sipSelf"));
+
+ if (atype == class_type || atype == mapped_type)
+ prcode(fp,
+" int sipIsErr = 0;\n"
+ );
+
+ if (vd->type.nrderefs == 0 && (atype == mapped_type || (atype == class_type && vd->type.u.cd->convtocode != NULL)))
+ prcode(fp,
+" int sipValState;\n"
+ );
+
+ if (vd->getcode == NULL || vd->setcode == NULL)
+ {
+ prcode(fp,
+" ");
+
+ generateNamedValueType(&vd->type, "sipVal", fp);
+
+ prcode(fp, ";\n"
+ );
+ }
+
+ if (!isStaticVar(vd))
+ {
+ if (generating_c)
+ prcode(fp,
+" %S *sipCpp = (%S *)sipGetCppPtr((sipWrapper *)sipSelf,sipClass_%C);\n"
+ ,classFQCName(vd->ecd),classFQCName(vd->ecd),classFQCName(vd->ecd));
+ else
+ prcode(fp,
+" %S *sipCpp = reinterpret_cast<%S *>(sipGetCppPtr((sipWrapper *)sipSelf,sipClass_%C));\n"
+ ,classFQCName(vd->ecd),classFQCName(vd->ecd),classFQCName(vd->ecd));
+
+ prcode(fp,
+"\n"
+" if (!sipCpp)\n"
+" return NULL;\n"
+ );
+ }
+
+ prcode(fp,
+"\n"
+" if (sipPy == NULL)\n"
+" {\n"
+ );
+
+ /* Generate the get handler part. */
+
+ if (vd->getcode != NULL)
+ {
+ generateCppCodeBlock(vd->getcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipPy;\n"
+ );
+ }
+ else
+ {
+ int pyobj = FALSE;
+
+ prcode(fp,
+" sipVal = %s", (((atype == class_type || atype == mapped_type) && vd->type.nrderefs == 0) ? "&" : ""));
+
+ generateVarMember(vd, fp);
+
+ prcode(fp, ";\n"
+"\n"
+ );
+
+ switch (atype)
+ {
+ case mapped_type:
+ prcode(fp,
+" sipPy = sipConvertFromMappedType(sipVal,sipMappedType_%T,NULL);\n"
+ ,&vd->type);
+
+ break;
+
+ case class_type:
+ generateVarClassConversion(vd,fp);
+ break;
+
+ case bool_type:
+ case cbool_type:
+ prcode(fp,
+" sipPy = PyBool_FromLong(sipVal);\n"
+ );
+
+ break;
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ if (vd->type.nrderefs == 0)
+ prcode(fp,
+" sipPy = PyString_FromStringAndSize(%s&sipVal,1);\n"
+ ,(atype != string_type) ? "(char *)" : "");
+ else
+ prcode(fp,
+" sipPy = PyString_FromString(%ssipVal);\n"
+ ,(atype != string_type) ? "(char *)" : "");
+
+ break;
+
+ case wstring_type:
+ if (vd->type.nrderefs == 0)
+ prcode(fp,
+" sipPy = PyUnicode_FromWideChar(&sipVal,1);\n"
+ );
+ else
+ prcode(fp,
+" sipPy = PyUnicode_FromWideChar(sipVal,(SIP_SSIZE_T)wcslen(sipVal));\n"
+ );
+
+ break;
+
+ case float_type:
+ case cfloat_type:
+ prcode(fp,
+" sipPy = PyFloat_FromDouble((double)sipVal);\n"
+ );
+ break;
+
+ case double_type:
+ case cdouble_type:
+ prcode(fp,
+" sipPy = PyFloat_FromDouble(sipVal);\n"
+ );
+ break;
+
+ case enum_type:
+ if (vd->type.u.ed->fqcname != NULL)
+ {
+ prcode(fp,
+" sipPy = sipConvertFromNamedEnum(sipVal,sipEnum_%C);\n"
+ ,vd->type.u.ed->fqcname);
+
+ break;
+ }
+
+ /* Drop through. */
+
+ case short_type:
+ case cint_type:
+ case int_type:
+ prcode(fp,
+" sipPy = PyInt_FromLong(sipVal);\n"
+ );
+ break;
+
+ case long_type:
+ prcode(fp,
+" sipPy = PyLong_FromLong(sipVal);\n"
+ );
+ break;
+
+ case ushort_type:
+ case uint_type:
+ case ulong_type:
+ prcode(fp,
+" sipPy = PyLong_FromUnsignedLong(sipVal);\n"
+ );
+ break;
+
+ case longlong_type:
+ prcode(fp,
+" sipPy = PyLong_FromLongLong(sipVal);\n"
+ );
+ break;
+
+ case ulonglong_type:
+ prcode(fp,
+" sipPy = PyLong_FromUnsignedLongLong(sipVal);\n"
+ );
+ break;
+
+ case struct_type:
+ prcode(fp,
+" sipPy = sipConvertFromVoidPtr(");
+
+ if (isConstArg(&vd->type))
+ prcode(fp, "const_cast<%b *>(sipVal)", &vd->type);
+ else
+ prcode(fp, "sipVal");
+
+ prcode(fp, ");\n"
+ );
+
+ break;
+
+ case void_type:
+ prcode(fp,
+" sipPy = sipConvertFromVoidPtr(");
+
+ if (isConstArg(&vd->type))
+ prcode(fp, "const_cast<void *>(sipVal)");
+ else
+ prcode(fp, "sipVal");
+
+ prcode(fp, ");\n"
+ );
+
+ break;
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ prcode(fp,
+" Py_XINCREF(sipVal);\n"
+ );
+ pyobj = TRUE;
+ break;
+ }
+
+ prcode(fp,
+"\n"
+" return %s;\n"
+ ,(pyobj ? "sipVal" : "sipPy"));
+ }
+
+ prcode(fp,
+" }\n"
+"\n"
+ );
+
+ /* Generate the set handler part. */
+
+ if (vd->setcode != NULL)
+ {
+ prcode(fp,
+" {\n"
+" int sipErr = 0;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(vd->setcode, fp);
+
+ prcode(fp,
+"\n"
+" if (sipErr)\n"
+" return NULL;\n"
+" }\n"
+ );
+ }
+ else
+ {
+ char *deref;
+ int might_be_temp;
+
+ might_be_temp = generateObjToCppConversion(&vd->type,fp);
+
+ deref = "";
+
+ if (atype == class_type || atype == mapped_type)
+ {
+ if (vd->type.nrderefs == 0)
+ deref = "*";
+
+ prcode(fp,
+"\n"
+" if (sipIsErr)\n"
+" return NULL;\n"
+"\n"
+ );
+ }
+ else
+ {
+ if ((atype == sstring_type || atype == ustring_type || atype == string_type || atype == wstring_type) && vd->type.nrderefs != 0)
+ {
+ prcode(fp,
+"\n"
+" if (sipVal == NULL)\n"
+ );
+ }
+ else
+ prcode(fp,
+"\n"
+" if (PyErr_Occurred() != NULL)\n"
+ );
+
+ prcode(fp,
+" {\n"
+" sipBadSetType(%N,%N);\n"
+" return NULL;\n"
+" }\n"
+"\n"
+ ,vd->ecd->iff->name,vd->pyname);
+ }
+
+ if (atype == pyobject_type || atype == pytuple_type ||
+ atype == pylist_type || atype == pydict_type ||
+ atype == pycallable_type || atype == pyslice_type ||
+ atype == pytype_type)
+ {
+ prcode(fp,
+" Py_XDECREF(");
+
+ generateVarMember(vd, fp);
+
+ prcode(fp, ");\n"
+" Py_INCREF(sipVal);\n"
+"\n"
+ );
+ }
+
+ prcode(fp,
+" ");
+
+ generateVarMember(vd, fp);
+
+ prcode(fp, " = %ssipVal;\n"
+ , deref);
+
+ /* Note that wchar_t * leaks here. */
+
+ if (might_be_temp)
+ prcode(fp,
+"\n"
+" sipReleaseInstance(sipVal,sipClass_%C,sipValState);\n"
+ , classFQCName(vd->type.u.cd));
+ else if (vd->type.atype == mapped_type && vd->type.nrderefs == 0)
+ prcode(fp,
+"\n"
+" sipReleaseMappedType(sipVal,sipMappedType_%T,sipValState);\n"
+ , &vd->type);
+ }
+
+ prcode(fp,
+"\n"
+" Py_INCREF(Py_None);\n"
+" return Py_None;\n"
+"}\n"
+ );
+}
+
+
+/*
+ * Generate the member variable of a class.
+ */
+static void generateVarMember(varDef *vd, FILE *fp)
+{
+ if (isStaticVar(vd))
+ prcode(fp,"%S::",classFQCName(vd->ecd));
+ else
+ prcode(fp,"sipCpp->");
+
+ prcode(fp, "%s", scopedNameTail(vd->fqcname));
+}
+
+
+/*
+ * Generate an variable class conversion fragment.
+ */
+static void generateVarClassConversion(varDef *vd,FILE *fp)
+{
+ classDef *cd = vd->type.u.cd;
+
+ prcode(fp,
+" sipPy = sipConvertFromInstance(");
+
+ if (isConstArg(&vd->type))
+ prcode(fp,"const_cast<%b *>(sipVal)",&vd->type);
+ else
+ prcode(fp,"sipVal");
+
+ prcode(fp,",sipClass_%C,NULL);\n"
+ ,classFQCName(cd));
+}
+
+
+/*
+ * Generate the declaration of a variable that is initialised from a Python
+ * object. Return TRUE if the value might be a temporary on the heap.
+ */
+static int generateObjToCppConversion(argDef *ad,FILE *fp)
+{
+ int might_be_temp = FALSE;
+ char *rhs = NULL;
+
+ prcode(fp,
+" sipVal = ");
+
+ switch (ad->atype)
+ {
+ case mapped_type:
+ {
+ const char *tail;
+
+ if (generating_c)
+ {
+ prcode(fp, "(%b *)", ad);
+ tail = "";
+ }
+ else
+ {
+ prcode(fp, "reinterpret_cast<%b *>(", ad);
+ tail = ")";
+ }
+
+ /*
+ * Note that we don't support /Transfer/ but could do.
+ */
+
+ prcode(fp, "sipForceConvertToMappedType(sipPy,sipMappedType_%T,NULL,%s,%s,&sipIsErr)", ad, (ad->nrderefs ? "0" : "SIP_NOT_NONE"), (ad->nrderefs ? "NULL" : "&sipValState"));
+
+ prcode(fp, "%s;\n"
+ , tail);
+ }
+ break;
+
+ case class_type:
+ {
+ const char *tail;
+
+ if (ad->nrderefs == 0 && ad->u.cd->convtocode != NULL)
+ might_be_temp = TRUE;
+
+ if (generating_c)
+ {
+ prcode(fp, "(%b *)", ad);
+ tail = "";
+ }
+ else
+ {
+ prcode(fp, "reinterpret_cast<%b *>(", ad);
+ tail = ")";
+ }
+
+ /*
+ * Note that we don't support /Transfer/ but could do.
+ * We could also support /Constrained/ (so long as we
+ * also supported it for all types).
+ */
+
+ prcode(fp, "sipForceConvertToInstance(sipPy,sipClass_%C,NULL,%s,%s,&sipIsErr)", classFQCName(ad->u.cd), (ad->nrderefs ? "0" : "SIP_NOT_NONE"), (might_be_temp ? "&sipValState" : "NULL"));
+
+ prcode(fp, "%s;\n"
+ , tail);
+ }
+ break;
+
+ case enum_type:
+ prcode(fp, "(%E)PyInt_AsLong(sipPy);\n"
+ , ad->u.ed);
+ break;
+
+ case sstring_type:
+ if (ad->nrderefs == 0)
+ rhs = "(signed char)sipString_AsChar(sipPy)";
+ else
+ rhs = "(signed char *)PyString_AsString(sipPy)";
+ break;
+
+ case ustring_type:
+ if (ad->nrderefs == 0)
+ rhs = "(unsigned char)sipString_AsChar(sipPy)";
+ else
+ rhs = "(unsigned char *)PyString_AsString(sipPy)";
+ break;
+
+ case string_type:
+ if (ad->nrderefs == 0)
+ rhs = "sipString_AsChar(sipPy)";
+ else
+ rhs = "PyString_AsString(sipPy)";
+ break;
+
+ case wstring_type:
+ if (ad->nrderefs == 0)
+ rhs = "sipUnicode_AsWChar(sipPy)";
+ else
+ rhs = "sipUnicode_AsWString(sipPy)";
+ break;
+
+ case float_type:
+ case cfloat_type:
+ rhs = "(float)PyFloat_AsDouble(sipPy)";
+ break;
+
+ case double_type:
+ case cdouble_type:
+ rhs = "PyFloat_AsDouble(sipPy)";
+ break;
+
+ case bool_type:
+ case cbool_type:
+ rhs = "(bool)PyInt_AsLong(sipPy)";
+ break;
+
+ case ushort_type:
+ rhs = "(unsigned short)sipLong_AsUnsignedLong(sipPy)";
+ break;
+
+ case short_type:
+ rhs = "(short)PyInt_AsLong(sipPy)";
+ break;
+
+ case uint_type:
+ rhs = "(unsigned)sipLong_AsUnsignedLong(sipPy)";
+ break;
+
+ case int_type:
+ case cint_type:
+ rhs = "(int)PyInt_AsLong(sipPy)";
+ break;
+
+ case ulong_type:
+ rhs = "sipLong_AsUnsignedLong(sipPy)";
+ break;
+
+ case long_type:
+ rhs = "PyLong_AsLong(sipPy)";
+ break;
+
+ case ulonglong_type:
+ rhs = "PyLong_AsUnsignedLongLong(sipPy)";
+ break;
+
+ case longlong_type:
+ rhs = "PyLong_AsLongLong(sipPy)";
+ break;
+
+ case struct_type:
+ prcode(fp, "(struct %S *)sipConvertToVoidPtr(sipPy);\n"
+ , ad->u.sname);
+ break;
+
+ case void_type:
+ rhs = "sipConvertToVoidPtr(sipPy)";
+ break;
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ rhs = "sipPy";
+ break;
+ }
+
+ if (rhs != NULL)
+ prcode(fp, "%s;\n"
+ , rhs);
+
+ return might_be_temp;
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that takes zero arguments.
+ */
+static int isZeroArgSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == str_slot || st == int_slot || st == long_slot ||
+ st == float_slot || st == invert_slot || st == neg_slot ||
+ st == len_slot || st == nonzero_slot || st == pos_slot ||
+ st == abs_slot || st == repr_slot || st == hash_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that takes more than one
+ * argument.
+ */
+static int isMultiArgSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == setitem_slot || st == call_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that returns void (ie. nothing
+ * other than an error indicator).
+ */
+int isVoidReturnSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == setitem_slot || st == delitem_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that returns int.
+ */
+int isIntReturnSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == len_slot || st == nonzero_slot || st == contains_slot ||
+ st == cmp_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that returns long.
+ */
+int isLongReturnSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == hash_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a slot that takes an int argument.
+ */
+static int isIntArgSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == repeat_slot || st == irepeat_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is an inplace number slot.
+ */
+static int isInplaceNumberSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == iadd_slot || st == isub_slot || st == imul_slot ||
+ st == idiv_slot || st == imod_slot ||
+ st == ior_slot || st == ixor_slot || st == iand_slot ||
+ st == ilshift_slot || st == irshift_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is an inplace sequence slot.
+ */
+static int isInplaceSequenceSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == iconcat_slot || st == irepeat_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a number slot slot.
+ */
+int isNumberSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == add_slot || st == sub_slot || st == mul_slot ||
+ st == div_slot || st == mod_slot ||
+ st == and_slot || st == or_slot || st == xor_slot ||
+ st == lshift_slot || st == rshift_slot);
+}
+
+
+/*
+ * Returns TRUE if the given method is a rich compare slot.
+ */
+int isRichCompareSlot(memberDef *md)
+{
+ slotType st = md->slot;
+
+ return (st == lt_slot || st == le_slot || st == eq_slot ||
+ st == ne_slot || st == gt_slot || st == ge_slot);
+}
+
+
+/*
+ * Generate a Python slot handler for either a class, an enum or an extender.
+ */
+static void generateSlot(sipSpec *pt, classDef *cd, enumDef *ed, memberDef *md, FILE *fp)
+{
+ char *arg_str, *prefix, *ret_type;
+ int ret_int, nr_args;
+ overDef *od, *overs;
+ scopedNameDef *fqcname;
+ nameDef *pyname;
+
+ if (ed != NULL)
+ {
+ prefix = "Enum";
+ pyname = ed->pyname;
+ fqcname = ed->fqcname;
+ overs = ed->overs;
+ }
+ else if (cd != NULL)
+ {
+ prefix = "Class";
+ pyname = cd->iff->name;
+ fqcname = classFQCName(cd);
+ overs = cd->overs;
+ }
+ else
+ {
+ prefix = NULL;
+ pyname = NULL;
+ fqcname = NULL;
+ overs = pt->overs;
+ }
+
+ if (isVoidReturnSlot(md) || isIntReturnSlot(md))
+ {
+ ret_int = TRUE;
+ ret_type = "int ";
+ }
+ else
+ {
+ ret_int = FALSE;
+
+ if (isLongReturnSlot(md))
+ ret_type = "long ";
+ else
+ ret_type = "PyObject *";
+ }
+
+ if (isIntArgSlot(md))
+ {
+ nr_args = 0;
+ arg_str = "PyObject *sipSelf,int a0";
+ }
+ else if (isMultiArgSlot(md))
+ {
+ nr_args = 2;
+ arg_str = "PyObject *sipSelf,PyObject *sipArgs";
+ }
+ else if (isZeroArgSlot(md))
+ {
+ nr_args = 0;
+ arg_str = "PyObject *sipSelf";
+ }
+ else if (isNumberSlot(md))
+ {
+ nr_args = 2;
+ arg_str = "PyObject *sipArg0,PyObject *sipArg1";
+ }
+ else
+ {
+ nr_args = 1;
+ arg_str = "PyObject *sipSelf,PyObject *sipArg";
+ }
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ {
+ prcode(fp,
+"extern \"C\" {static %sslot_", ret_type);
+
+ if (fqcname != NULL)
+ prcode(fp, "%C_", fqcname);
+
+ prcode(fp, "%s(%s);}\n"
+ , md->pyname->text, arg_str);
+ }
+
+ prcode(fp,
+"static %sslot_", ret_type);
+
+ if (fqcname != NULL)
+ prcode(fp, "%C_", fqcname);
+
+ prcode(fp, "%s(%s)\n"
+"{\n"
+ , md->pyname->text, arg_str);
+
+ if (isInplaceNumberSlot(md))
+ prcode(fp,
+" if (!PyObject_TypeCheck(sipSelf,(PyTypeObject *)sip%s_%C))\n"
+" {\n"
+" Py_INCREF(Py_NotImplemented);\n"
+" return Py_NotImplemented;\n"
+" }\n"
+"\n"
+ , prefix, fqcname);
+
+ if (!isNumberSlot(md))
+ if (cd != NULL)
+ prcode(fp,
+" %S *sipCpp = reinterpret_cast<%S *>(sipGetCppPtr((sipWrapper *)sipSelf,sipClass_%C));\n"
+"\n"
+" if (!sipCpp)\n"
+" return %s;\n"
+"\n"
+ , fqcname, fqcname, fqcname
+ , (md->slot == cmp_slot ? "-2" : (ret_int ? "-1" : "0")));
+ else
+ prcode(fp,
+" %S sipCpp = static_cast<%S>(PyInt_AsLong(sipSelf));\n"
+"\n"
+ , fqcname, fqcname);
+
+ if (nr_args > 0)
+ prcode(fp,
+" int sipArgsParsed = 0;\n"
+ );
+
+ for (od = overs; od != NULL; od = od->next)
+ if (od->common == md && isAbstract(od))
+ {
+ prcode(fp,
+" bool sipSelfWasArg = !sipSelf;\n"
+ );
+
+ break;
+ }
+
+ for (od = overs; od != NULL; od = od->next)
+ if (od->common == md)
+ generateFunctionBody(pt, od, cd, cd, (ed == NULL && !dontDerefSelf(od)), fp);
+
+ if (nr_args > 0)
+ switch (md->slot)
+ {
+ case cmp_slot:
+ prcode(fp,
+"\n"
+" return 2;\n"
+ );
+ break;
+
+ case concat_slot:
+ case iconcat_slot:
+ case repeat_slot:
+ case irepeat_slot:
+ prcode(fp,
+"\n"
+" /* Raise an exception if the argument couldn't be parsed. */\n"
+" sipBadOperatorArg(sipSelf,sipArg,%s);\n"
+"\n"
+" return NULL;\n"
+ ,slotName(md->slot));
+ break;
+
+ default:
+ if (isNumberSlot(md) || isRichCompareSlot(md))
+ {
+ /* We can't extend enum slots. */
+ if (cd == NULL)
+ prcode(fp,
+"\n"
+" Py_INCREF(Py_NotImplemented);\n"
+" return Py_NotImplemented;\n"
+ );
+ else if (isNumberSlot(md))
+ prcode(fp,
+"\n"
+" return sipPySlotExtend(&sipModuleAPI_%s,%s,NULL,sipArg0,sipArg1);\n"
+ , pt->module->name, slotName(md->slot));
+ else
+ prcode(fp,
+"\n"
+" return sipPySlotExtend(&sipModuleAPI_%s,%s,sip%s_%C,sipSelf,sipArg);\n"
+ , pt->module->name, slotName(md->slot), prefix, fqcname);
+ }
+ else if (isInplaceNumberSlot(md))
+ prcode(fp,
+"\n"
+" PyErr_Clear();\n"
+"\n"
+" Py_INCREF(Py_NotImplemented);\n"
+" return Py_NotImplemented;\n"
+ );
+ else
+ prcode(fp,
+"\n"
+" /* Raise an exception if the arguments couldn't be parsed. */\n"
+" sipNoMethod(sipArgsParsed,%N,%N);\n"
+"\n"
+" return %s;\n"
+ , pyname, md->pyname
+ ,ret_int ? "-1" : "0");
+ }
+
+ prcode(fp,
+"}\n"
+ );
+}
+
+
+/*
+ * Generate the member functions for a class.
+ */
+static void generateClassFunctions(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ visibleList *vl;
+ memberDef *md;
+
+ /* Any shadow code. */
+ if (hasShadow(cd))
+ generateShadowCode(pt,cd,fp);
+
+ /* The member functions. */
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ if (vl->m->slot == no_slot)
+ generateFunction(pt, vl->m, vl->cd->overs, cd, vl->cd, fp);
+
+ /* The slot functions. */
+ for (md = cd->members; md != NULL; md = md->next)
+ if (cd->iff->type == namespace_iface)
+ generateOrdinaryFunction(pt,cd,md,fp);
+ else if (md->slot != no_slot && md->slot != unicode_slot)
+ generateSlot(pt, cd, NULL, md, fp);
+
+ if (cd->iff->type != namespace_iface && !generating_c)
+ {
+ classList *cl;
+ int need_ptr, need_state;
+
+ /* The cast function. */
+ prcode(fp,
+"\n"
+"\n"
+"/* Cast a pointer to a type somewhere in its superclass hierarchy. */\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void *cast_%C(void *, sipWrapperType *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static void *cast_%C(void *ptr,sipWrapperType *targetClass)\n"
+"{\n"
+ ,classFQCName(cd));
+
+ if (cd->supers != NULL)
+ prcode(fp,
+" void *res;\n"
+"\n"
+ );
+
+ prcode(fp,
+" if (targetClass == sipClass_%C)\n"
+" return ptr;\n"
+ ,classFQCName(cd));
+
+ for (cl = cd->supers; cl != NULL; cl = cl->next)
+ {
+ scopedNameDef *sname = cl->cd->iff->fqcname;
+
+ prcode(fp,
+"\n"
+" if ((res = sipCast_%C((%S *)(%S *)ptr,targetClass)) != NULL)\n"
+" return res;\n"
+ ,sname,sname,classFQCName(cd));
+ }
+
+ prcode(fp,
+"\n"
+" return NULL;\n"
+"}\n"
+ );
+
+ /* Generate the release function without compiler warnings. */
+ need_ptr = need_state = FALSE;
+
+ if (canCreate(cd) || isPublicDtor(cd))
+ {
+ if (hasShadow(cd))
+ need_ptr = need_state = TRUE;
+ else if (isPublicDtor(cd))
+ need_ptr = TRUE;
+ }
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Call the instance's destructor. */\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void release_%C(void *, int);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static void release_%C(void *%s,int%s)\n"
+"{\n"
+ , classFQCName(cd), (need_ptr ? "ptr" : ""), (need_state ? " state" : ""));
+
+ /*
+ * If there is an explicit public dtor then assume there is
+ * some way to call it which we haven't worked out (because we
+ * don't fully understand C++).
+ */
+ if (canCreate(cd) || isPublicDtor(cd))
+ {
+ int rgil = ((release_gil || isReleaseGILDtor(cd)) && !isHoldGILDtor(cd));
+
+ if (rgil)
+ prcode(fp,
+" Py_BEGIN_ALLOW_THREADS\n"
+"\n"
+ );
+
+ if (hasShadow(cd))
+ {
+ prcode(fp,
+" if (state & SIP_DERIVED_CLASS)\n"
+" delete reinterpret_cast<sip%C *>(ptr);\n"
+ , classFQCName(cd));
+
+ if (isPublicDtor(cd))
+ prcode(fp,
+" else\n"
+" delete reinterpret_cast<%U *>(ptr);\n"
+ , cd);
+ }
+ else if (isPublicDtor(cd))
+ prcode(fp,
+" delete reinterpret_cast<%U *>(ptr);\n"
+ , cd);
+
+ if (rgil)
+ prcode(fp,
+"\n"
+" Py_END_ALLOW_THREADS\n"
+ );
+ }
+
+ prcode(fp,
+"}\n"
+ );
+ }
+
+ /* The traverse function. */
+ if (cd->travcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static int traverse_%C(void *, visitproc, void *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static int traverse_%C(void *sipCppV,visitproc sipVisit,void *sipArg)\n"
+"{\n"
+" ", classFQCName(cd));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" int sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->travcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ /* The clear function. */
+ if (cd->clearcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static int clear_%C(void *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static int clear_%C(void *sipCppV)\n"
+"{\n"
+" ", classFQCName(cd));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" int sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->clearcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ /* The buffer interface functions. */
+ if (cd->readbufcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static SIP_SSIZE_T getreadbuffer_%C(PyObject *, void *, SIP_SSIZE_T, void **);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static SIP_SSIZE_T getreadbuffer_%C(PyObject *%s, void *sipCppV, SIP_SSIZE_T %s, void **%s)\n"
+"{\n"
+" ", classFQCName(cd)
+ , argName("sipSelf", cd->readbufcode)
+ , argName("sipSegment", cd->readbufcode)
+ , argName("sipPtrPtr", cd->readbufcode));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" SIP_SSIZE_T sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->readbufcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ if (cd->writebufcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static SIP_SSIZE_T getwritebuffer_%C(PyObject *, void *, SIP_SSIZE_T, void **);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static SIP_SSIZE_T getwritebuffer_%C(PyObject *%s, void *sipCppV, SIP_SSIZE_T %s, void **%s)\n"
+"{\n"
+" ", classFQCName(cd)
+ , argName("sipSelf", cd->writebufcode)
+ , argName("sipSegment", cd->writebufcode)
+ , argName("sipPtrPtr", cd->writebufcode));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" SIP_SSIZE_T sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->writebufcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ if (cd->segcountcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static SIP_SSIZE_T getsegcount_%C(PyObject *, void *, SIP_SSIZE_T *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static SIP_SSIZE_T getsegcount_%C(PyObject *%s, void *sipCppV, SIP_SSIZE_T *%s)\n"
+"{\n"
+" ", classFQCName(cd)
+ , argName("sipSelf", cd->segcountcode)
+ , argName("sipLenPtr", cd->segcountcode));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" SIP_SSIZE_T sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->segcountcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ if (cd->charbufcode != NULL)
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static SIP_SSIZE_T getcharbuffer_%C(PyObject *, void *, SIP_SSIZE_T, void **);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static SIP_SSIZE_T getcharbuffer_%C(PyObject *%s, void *sipCppV, SIP_SSIZE_T %s, void **%s)\n"
+"{\n"
+" ", classFQCName(cd)
+ , argName("sipSelf", cd->charbufcode)
+ , argName("sipSegment", cd->charbufcode)
+ , argName("sipPtrPtr", cd->charbufcode));
+
+ generateClassFromVoid(cd, "sipCpp", "sipCppV", fp);
+
+ prcode(fp, ";\n"
+" SIP_SSIZE_T sipRes;\n"
+"\n"
+ );
+
+ generateCppCodeBlock(cd->charbufcode, fp);
+
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+"}\n"
+ );
+ }
+
+ /* The dealloc function. */
+ if (needDealloc(cd))
+ {
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void dealloc_%C(sipWrapper *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static void dealloc_%C(sipWrapper *sipSelf)\n"
+"{\n"
+ ,classFQCName(cd));
+
+ if (tracing)
+ prcode(fp,
+" sipTrace(SIP_TRACE_DEALLOCS,\"dealloc_%C()\\n\");\n"
+"\n"
+ ,classFQCName(cd));
+
+ /* Disable the virtual handlers. */
+ if (hasShadow(cd))
+ prcode(fp,
+" if (sipIsDerived(sipSelf))\n"
+" reinterpret_cast<sip%C *>(sipSelf->u.cppPtr)->sipPySelf = NULL;\n"
+"\n"
+ ,classFQCName(cd));
+
+ if (generating_c || isPublicDtor(cd) || (hasShadow(cd) && isProtectedDtor(cd)))
+ {
+ prcode(fp,
+" if (sipIsPyOwned(sipSelf))\n"
+" {\n"
+ );
+
+ if (cd->dealloccode != NULL)
+ {
+ if (usedInCode(cd->dealloccode, "sipCpp"))
+ {
+ prcode(fp,
+" ");
+
+ generateClassFromVoid(cd, "sipCpp", "sipSelf->u.cppPtr", fp);
+
+ prcode(fp, ";\n"
+ );
+ }
+
+ generateCppCodeBlock(cd->dealloccode,fp);
+
+ prcode(fp,
+"\n"
+ );
+ }
+
+ if (isDelayedDtor(cd))
+ prcode(fp,
+" sipAddDelayedDtor(sipSelf);\n"
+ );
+ else if (generating_c)
+ prcode(fp,
+" sipFree(sipSelf->u.cppPtr);\n"
+ );
+ else
+ prcode(fp,
+" release_%C(sipSelf->u.cppPtr,%s);\n"
+ , classFQCName(cd), (hasShadow(cd) ? "sipSelf->flags" : "0"));
+
+ prcode(fp,
+" }\n"
+ );
+ }
+
+ prcode(fp,
+"}\n"
+ );
+ }
+
+ /* The type initialisation function. */
+ if (canCreate(cd))
+ generateTypeInit(pt, cd, fp);
+}
+
+
+/*
+ * Generate the shadow (derived) class code.
+ */
+static void generateShadowCode(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int nrVirts, virtNr;
+ virtOverDef *vod;
+ ctorDef *ct;
+
+ nrVirts = countVirtuals(cd);
+
+ /* Generate the wrapper class constructors. */
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ char *prefix;
+ int a;
+ ctorDef *dct;
+
+ if (isPrivateCtor(ct))
+ continue;
+
+ if (ct->cppsig == NULL)
+ continue;
+
+ /* Check we haven't already handled this C++ signature. */
+ for (dct = cd->ctors; dct != ct; dct = dct->next)
+ if (dct->cppsig != NULL && sameSignature(dct->cppsig, ct->cppsig, TRUE))
+ break;
+
+ if (dct != ct)
+ continue;
+
+ prcode(fp,
+"\n"
+"sip%C::sip%C(",classFQCName(cd),classFQCName(cd));
+
+ generateArgs(ct->cppsig,Definition,fp);
+
+ prcode(fp,")%X: %S(",ct->exceptions,classFQCName(cd));
+
+ prefix = "";
+
+ for (a = 0; a < ct->cppsig->nrArgs; ++a)
+ {
+ prcode(fp,"%sa%d",prefix,a);
+ prefix = ",";
+ }
+
+ prcode(fp,"), sipPySelf(0)\n"
+"{\n"
+ );
+
+ if (tracing)
+ {
+ prcode(fp,
+" sipTrace(SIP_TRACE_CTORS,\"sip%C::sip%C(",classFQCName(cd),classFQCName(cd));
+ generateArgs(ct->cppsig,Declaration,fp);
+ prcode(fp,")%X (this=0x%%08x)\\n\",this);\n"
+"\n"
+ ,ct->exceptions);
+ }
+
+ prcode(fp,
+" sipCommonCtor(%s,%d);\n"
+"}\n"
+ ,(nrVirts > 0 ? "sipPyMethods" : "NULL"),nrVirts);
+ }
+
+ /* The destructor. */
+
+ if (!isPrivateDtor(cd))
+ {
+ prcode(fp,
+"\n"
+"sip%C::~sip%C()%X\n"
+"{\n"
+ ,classFQCName(cd),classFQCName(cd),cd->dtorexceptions);
+
+ if (tracing)
+ prcode(fp,
+" sipTrace(SIP_TRACE_DTORS,\"sip%C::~sip%C()%X (this=0x%%08x)\\n\",this);\n"
+"\n"
+ ,classFQCName(cd),classFQCName(cd),cd->dtorexceptions);
+
+ if (cd->dtorcode != NULL)
+ generateCppCodeBlock(cd->dtorcode,fp);
+
+ prcode(fp,
+" sipCommonDtor(sipPySelf);\n"
+"}\n"
+ );
+ }
+
+ /* The metacall method if required. */
+ if (isQObjectSubClass(cd) && optQ_OBJECT4(pt))
+ {
+ prcode(fp,
+"\n"
+"const QMetaObject *sip%C::metaObject() const\n"
+"{\n"
+" return sip_%s_qt_metaobject(sipPySelf,sipClass_%C,%S::metaObject());\n"
+"}\n"
+"\n"
+"int sip%C::qt_metacall(QMetaObject::Call _c,int _id,void **_a)\n"
+"{\n"
+" sip%C::metaObject();\n"
+"\n"
+" _id = %S::qt_metacall(_c,_id,_a);\n"
+"\n"
+" if (_id >= 0)\n"
+" {\n"
+" SIP_BLOCK_THREADS\n"
+" _id = sip_%s_qt_metacall(sipPySelf,sipClass_%C,_c,_id,_a);\n"
+" SIP_UNBLOCK_THREADS\n"
+" }\n"
+"\n"
+" return _id;\n"
+"}\n"
+ , classFQCName(cd)
+ , pt->module->name, classFQCName(cd), classFQCName(cd)
+ , classFQCName(cd)
+ , classFQCName(cd)
+ , classFQCName(cd)
+ , pt->module->name, classFQCName(cd));
+ }
+
+ /* Generate the virtual catchers. */
+
+ virtNr = 0;
+
+ for (vod = cd->vmembers; vod != NULL; vod = vod->next)
+ {
+ overDef *od = &vod->o;
+ virtOverDef *dvod;
+
+ if (isPrivate(od))
+ continue;
+
+ /* Check we haven't already handled this C++ signature. */
+ for (dvod = cd->vmembers; dvod != vod; dvod = dvod->next)
+ if (strcmp(dvod->o.cppname,od->cppname) == 0 && sameSignature(dvod->o.cppsig,od->cppsig,TRUE))
+ break;
+
+ if (dvod != vod)
+ continue;
+
+ generateVirtualCatcher(pt,cd,virtNr++,vod,fp);
+ }
+
+ /* Generate the wrapper around each protected member function. */
+
+ generateProtectedDefinitions(cd,fp);
+
+ /* Generate the emitters if needed. */
+ if (!optNoEmitters(pt))
+ generateEmitters(pt, cd, fp);
+}
+
+
+/*
+ * Generate the emitter functions.
+ */
+static void generateEmitters(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ int noIntro;
+ visibleList *vl;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ if (od->common == vl->m && isSignal(od))
+ {
+ generateEmitter(pt,cd,vl,fp);
+ break;
+ }
+ }
+
+ /* Generate the table of signals to support fan-outs. */
+
+ noIntro = TRUE;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ if (od->common == vl->m && isSignal(od))
+ {
+ if (noIntro)
+ {
+ setHasSigSlots(cd);
+
+ prcode(fp,
+"\n"
+"static sipQtSignal signals_%C[] = {\n"
+ ,classFQCName(cd));
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" {%N, %C_emit_%s},\n"
+ ,vl->m->pyname,classFQCName(cd),vl->m->pyname->text);
+
+ break;
+ }
+ }
+
+ if (!noIntro)
+ prcode(fp,
+" {NULL, NULL}\n"
+"};\n"
+ );
+}
+
+
+/*
+ * Generate the protected enums for a class.
+ */
+static void generateProtectedEnums(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ enumDef *ed;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ char *eol;
+ enumMemberDef *emd;
+
+ /* Ignore unless this class is the publisher. */
+ if (cd != ed->pcd)
+ continue;
+
+ prcode(fp,
+"\n"
+" /* Expose this protected enum. */\n"
+" enum");
+
+ if (ed->fqcname != NULL)
+ prcode(fp," sip%s",scopedNameTail(ed->fqcname));
+
+ prcode(fp," {");
+
+ eol = "\n";
+
+ for (emd = ed->members; emd != NULL; emd = emd->next)
+ {
+ prcode(fp,"%s"
+" %s = %S::%s",eol,emd->cname,classFQCName(ed->ecd),emd->cname);
+
+ eol = ",\n";
+ }
+
+ prcode(fp,"\n"
+" };\n"
+ );
+ }
+}
+
+
+/*
+ * Generate the catcher for a virtual function.
+ */
+static void generateVirtualCatcher(sipSpec *pt, classDef *cd, int virtNr,
+ virtOverDef *vod, FILE *fp)
+{
+ overDef *od = &vod->o;
+ virtHandlerDef *vhd = od->virthandler;
+ argDef *res, *ad;
+ int a;
+
+ normaliseArgs(od->cppsig);
+
+ res = &od->cppsig->result;
+
+ if (res->atype == void_type && res->nrderefs == 0)
+ res = NULL;
+
+ prcode(fp,
+"\n");
+
+ generateBaseType(&od->cppsig->result,fp);
+
+ prcode(fp," sip%C::%O(",classFQCName(cd),od);
+ generateArgs(od->cppsig,Definition,fp);
+ prcode(fp,")%s%X\n"
+"{\n"
+ ,(isConst(od) ? " const" : ""),od->exceptions);
+
+ if (tracing)
+ {
+ prcode(fp,
+" sipTrace(SIP_TRACE_CATCHERS,\"");
+
+ generateBaseType(&od->cppsig->result,fp);
+ prcode(fp," sip%C::%O(",classFQCName(cd),od);
+ generateArgs(od->cppsig,Declaration,fp);
+ prcode(fp,")%s%X (this=0x%%08x)\\n\",this);\n"
+"\n"
+ ,(isConst(od) ? " const" : ""),od->exceptions);
+ }
+
+ restoreArgs(od->cppsig);
+
+ if (vhd->module == pt->module)
+ {
+ prcode(fp,
+" extern ");
+
+ generateBaseType(&od->cppsig->result,fp);
+
+ prcode(fp," sipVH_%s_%d(sip_gilstate_t,PyObject *",vhd->module->name,vhd->virthandlernr);
+ }
+ else
+ {
+ prcode(fp,
+" typedef ");
+
+ generateBaseType(&od->cppsig->result,fp);
+
+ prcode(fp," (*sipVH_%s_%d)(sip_gilstate_t,PyObject *",vhd->module->name,vhd->virthandlernr);
+ }
+
+ if (vhd->cppsig->nrArgs > 0)
+ {
+ prcode(fp,",");
+ generateArgs(vhd->cppsig,Declaration,fp);
+ }
+
+ prcode(fp,");\n"
+ );
+
+ if (isNewThread(od))
+ prcode(fp,
+"\n"
+" SIP_BLOCK_THREADS\n"
+ );
+
+ prcode(fp,
+"\n"
+" sip_gilstate_t sipGILState;\n"
+" PyObject *meth;\n"
+"\n"
+" meth = sipIsPyMethod(&sipGILState,");
+
+ if (isConst(od))
+ prcode(fp,"const_cast<sipMethodCache *>(");
+
+ prcode(fp,"&sipPyMethods[%d]",virtNr);
+
+ if (isConst(od))
+ prcode(fp,")");
+
+ prcode(fp,",sipPySelf,");
+
+ if (isAbstract(od))
+ prcode(fp,"%N",cd->iff->name);
+ else
+ prcode(fp,"NULL");
+
+ prcode(fp,",%N);\n"
+"\n"
+ ,od->common->pyname);
+
+ if (isNewThread(od))
+ prcode(fp,
+" if (meth)\n"
+" {\n"
+" sipStartThread();\n"
+" ");
+ else
+ {
+ prcode(fp,
+" if (!meth)\n"
+ );
+
+ if (isAbstract(od))
+ generateVirtHandlerErrorReturn(res,fp);
+ else
+ {
+ if (res == NULL)
+ prcode(fp,
+" {\n"
+" ");
+ else
+ prcode(fp,
+" return ");
+
+ generateUnambiguousClass(cd,vod->scope,fp);
+
+ prcode(fp,"::%O(",od);
+
+ for (a = 0; a < od->cppsig->nrArgs; ++a)
+ prcode(fp,"%sa%d",(a == 0 ? "" : ","),a);
+
+ prcode(fp,");\n"
+ );
+
+ if (res == NULL)
+ prcode(fp,
+" return;\n"
+" }\n"
+ );
+ }
+
+ prcode(fp,
+"\n"
+" ");
+
+ if (res != NULL)
+ prcode(fp,"return ");
+ }
+
+ if (vhd->module == pt->module)
+ prcode(fp,"sipVH_%s_%d",vhd->module->name,vhd->virthandlernr);
+ else
+ prcode(fp,"((sipVH_%s_%d)(sipModuleAPI_%s_%s->em_virthandlers[%d]))",vhd->module->name,vhd->virthandlernr,pt->module->name,vhd->module->name,vhd->virthandlernr);
+
+ prcode(fp,"(sipGILState,meth");
+
+ ad = od->cppsig->args;
+
+ for (a = 0; a < od->cppsig->nrArgs; ++a)
+ {
+ if (ad->atype == class_type && isProtectedClass(ad->u.cd))
+ prcode(fp,",static_cast<%U *>(a%d)",ad->u.cd,a);
+ else if (ad->atype == enum_type && isProtectedEnum(ad->u.ed))
+ prcode(fp, ",(%E)a%d", ad->u.ed, a);
+ else
+ prcode(fp,",a%d",a);
+
+ ++ad;
+ }
+
+ prcode(fp,");\n"
+ );
+
+ if (isNewThread(od))
+ prcode(fp,
+" sipEndThread();\n"
+" }\n"
+"\n"
+" SIP_UNBLOCK_THREADS\n"
+ );
+
+ prcode(fp,
+"}\n"
+ );
+}
+
+
+/*
+ * Generate the scope of the near class of a virtual taking duplicate
+ * super-classes into account.
+ */
+static void generateUnambiguousClass(classDef *cd,classDef *scope,FILE *fp)
+{
+ mroDef *mro;
+
+ /* See if the near class has a duplicate. */
+ for (mro = cd->mro; mro != NULL; mro = mro->next)
+ if (mro->cd == scope)
+ {
+ if (hasDuplicateSuper(mro))
+ {
+ mroDef *guardc;
+
+ /*
+ * Backtrack to find the class that directly
+ * sub-classes the duplicated one. This will
+ * be the one that disambiguates the duplicated
+ * one.
+ */
+ guardc = mro;
+
+ while (guardc != cd->mro)
+ {
+ mroDef *sub;
+ classList *cl;
+
+ for (sub = cd->mro; sub->next != guardc; sub = sub->next)
+ ;
+
+ for (cl = sub->cd->supers; cl != NULL; cl = cl->next)
+ if (cl->cd == mro->cd)
+ {
+ prcode(fp,"%S",classFQCName(sub->cd));
+
+ return;
+ }
+
+ /* Try the previous one. */
+ guardc = sub;
+ }
+ }
+
+ break;
+ }
+
+ /* If we got here there is nothing to worry about. */
+ prcode(fp,"%S",classFQCName(scope));
+}
+
+
+/*
+ * Generate a cast to zero.
+ */
+static void generateCastZero(argDef *ad,FILE *fp)
+{
+ if (ad->atype == enum_type)
+ prcode(fp,"(%E)",ad->u.ed);
+
+ prcode(fp,"0");
+}
+
+
+/*
+ * Generate the return statement for a virtual handler when there has been an
+ * error (ie. there is nothing sensible to return).
+ */
+static void generateVirtHandlerErrorReturn(argDef *res,FILE *fp)
+{
+ prcode(fp,
+" return");
+
+ if (res == NULL)
+ {
+ prcode(fp,";\n"
+ );
+
+ return;
+ }
+
+ prcode(fp," ");
+
+ if (res->atype == mapped_type && res->nrderefs == 0)
+ {
+ argDef res_noconstref;
+
+ /*
+ * We don't know anything about the mapped type so we just hope
+ * is has a default ctor.
+ */
+
+ if (isReference(res))
+ prcode(fp,"*new ");
+
+ res_noconstref = *res;
+ resetIsConstArg(&res_noconstref);
+ resetIsReference(&res_noconstref);
+ prcode(fp,"%B()",&res_noconstref);
+ }
+ else if (res->atype == class_type && res->nrderefs == 0)
+ {
+ ctorDef *ct = res->u.cd->defctor;
+
+ /*
+ * If we don't have a suitable ctor then the generated code
+ * will issue an error message.
+ */
+ if (ct != NULL && isPublicCtor(ct) && ct->cppsig != NULL)
+ {
+ argDef res_noconstref;
+
+ /*
+ * If this is a badly designed class. We can only
+ * generate correct code by leaking memory.
+ */
+ if (isReference(res))
+ prcode(fp,"*new ");
+
+ res_noconstref = *res;
+ resetIsConstArg(&res_noconstref);
+ resetIsReference(&res_noconstref);
+ prcode(fp,"%B",&res_noconstref);
+
+ generateCallDefaultCtor(ct,fp);
+ }
+ else
+ {
+ fatalScopedName(classFQCName(res->u.cd));
+ fatal(" must have a default constructor\n");
+ }
+ }
+ else
+ generateCastZero(res,fp);
+
+ prcode(fp,";\n"
+ );
+}
+
+
+/*
+ * Generate the call to a default ctor.
+ */
+static void generateCallDefaultCtor(ctorDef *ct, FILE *fp)
+{
+ int a;
+
+ prcode(fp, "(");
+
+ for (a = 0; a < ct->cppsig->nrArgs; ++a)
+ {
+ argDef *ad = &ct->cppsig->args[a];
+
+ if (ad->defval != NULL)
+ break;
+
+ if (a > 0)
+ prcode(fp, ",");
+
+ /*
+ * Do what we can to provide type information to the compiler.
+ */
+ if (ad->atype == class_type && ad->nrderefs > 0 && !isReference(ad))
+ prcode(fp, "static_cast<%B>(0)", ad);
+ else if (ad->atype == enum_type)
+ prcode(fp, "static_cast<%E>(0)", ad->u.ed);
+ else if (ad->atype == float_type || ad->atype == cfloat_type)
+ prcode(fp, "0.0F");
+ else if (ad->atype == double_type || ad->atype == cdouble_type)
+ prcode(fp, "0.0");
+ else if (ad->atype == uint_type)
+ prcode(fp, "0U");
+ else if (ad->atype == long_type || ad->atype == longlong_type)
+ prcode(fp, "0L");
+ else if (ad->atype == ulong_type || ad->atype == ulonglong_type)
+ prcode(fp, "0UL");
+ else if ((ad->atype == ustring_type || ad->atype == sstring_type || ad->atype == string_type) && ad->nrderefs == 0)
+ prcode(fp, "'\\0'");
+ else if (ad->atype == wstring_type && ad->nrderefs == 0)
+ prcode(fp, "L'\\0'");
+ else
+ prcode(fp, "0");
+ }
+
+ prcode(fp, ")");
+}
+
+
+/*
+ * Generate the emitter function for a signal.
+ */
+static void generateEmitter(sipSpec *pt,classDef *cd,visibleList *vl,FILE *fp)
+{
+ char *pname = vl->m->pyname->text;
+ overDef *od;
+
+ prcode(fp,
+"\n"
+"int sip%C::sipEmit_%s(PyObject *sipArgs)\n"
+"{\n"
+" int sipArgsParsed = 0;\n"
+ ,classFQCName(cd),pname);
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ int rgil = ((release_gil || isReleaseGIL(od)) && !isHoldGIL(od));
+
+ if (od->common != vl->m || !isSignal(od))
+ continue;
+
+ /*
+ * Generate the code that parses the args and emits the
+ * appropriate overloaded signal.
+ */
+ prcode(fp,
+"\n"
+" {\n"
+ );
+
+ generateArgParser(pt, &od->pysig, cd, NULL, NULL, FALSE, fp);
+
+ prcode(fp,
+" {\n"
+ );
+
+ if (rgil)
+ prcode(fp,
+" Py_BEGIN_ALLOW_THREADS\n"
+ );
+
+ prcode(fp,
+" emit %s("
+ ,od->cppname);
+
+ generateArgs(od->cppsig,Call,fp);
+
+ prcode(fp,");\n"
+ );
+
+ if (rgil)
+ prcode(fp,
+" Py_END_ALLOW_THREADS\n"
+ );
+
+ deleteTemps(&od->pysig, fp);
+
+ prcode(fp,
+"\n"
+" return 0;\n"
+" }\n"
+" }\n"
+ );
+ }
+
+ prcode(fp,
+"\n"
+" sipNoMethod(sipArgsParsed,%N,%N);\n"
+"\n"
+" return -1;\n"
+"}\n"
+"\n"
+ , cd->iff->name, vl->m->pyname);
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static int %C_emit_%s(sipWrapper *, PyObject *);}\n"
+ , classFQCName(cd), pname);
+
+ prcode(fp,
+"static int %C_emit_%s(sipWrapper *w,PyObject *sipArgs)\n"
+"{\n"
+" sip%C *ptr = reinterpret_cast<sip%C *>(sipGetComplexCppPtr(w));\n"
+"\n"
+" return (ptr ? ptr->sipEmit_%s(sipArgs) : -1);\n"
+"}\n"
+ ,classFQCName(cd),pname
+ ,classFQCName(cd),classFQCName(cd)
+ ,pname);
+}
+
+
+/*
+ * Generate the declarations of the protected wrapper functions for a class.
+ */
+
+static void generateProtectedDeclarations(classDef *cd,FILE *fp)
+{
+ int noIntro;
+ visibleList *vl;
+
+ noIntro = TRUE;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ if (vl->m->slot != no_slot)
+ continue;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ if (od->common != vl->m || !isProtected(od))
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /*\n"
+" * There is a public method for every protected method visible from\n"
+" * this class.\n"
+" */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" ");
+
+ if (isStatic(od))
+ prcode(fp,"static ");
+
+ generateBaseType(&od->cppsig->result,fp);
+
+ if (!isStatic(od) && !isAbstract(od) && (isVirtual(od) || isVirtualReimp(od)))
+ {
+ prcode(fp, " sipProtectVirt_%s(bool", od->cppname);
+
+ if (od->cppsig->nrArgs > 0)
+ prcode(fp, ",");
+ }
+ else
+ prcode(fp, " sipProtect_%s(", od->cppname);
+
+ generateArgs(od->cppsig,Declaration,fp);
+ prcode(fp,")%s;\n"
+ ,(isConst(od) ? " const" : ""));
+ }
+ }
+}
+
+
+/*
+ * Generate the definitions of the protected wrapper functions for a class.
+ */
+static void generateProtectedDefinitions(classDef *cd,FILE *fp)
+{
+ visibleList *vl;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ if (vl->m->slot != no_slot)
+ continue;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ char *mname = od->cppname;
+ int parens;
+ argDef *res;
+
+ if (od->common != vl->m || !isProtected(od))
+ continue;
+
+ prcode(fp,
+"\n"
+ );
+
+ generateBaseType(&od->cppsig->result,fp);
+
+ if (!isStatic(od) && !isAbstract(od) && (isVirtual(od) || isVirtualReimp(od)))
+ {
+ prcode(fp, " sip%C::sipProtectVirt_%s(bool sipSelfWasArg", classFQCName(cd), mname);
+
+ if (od->cppsig->nrArgs > 0)
+ prcode(fp, ",");
+ }
+ else
+ prcode(fp, " sip%C::sipProtect_%s(", classFQCName(cd), mname);
+
+ generateArgs(od->cppsig,Definition,fp);
+ prcode(fp,")%s\n"
+"{\n"
+ ,(isConst(od) ? " const" : ""));
+
+ parens = 1;
+
+ res = &od->cppsig->result;
+
+ if (res->atype == void_type && res->nrderefs == 0)
+ prcode(fp,
+" ");
+ else
+ {
+ prcode(fp,
+" return ");
+
+ if (res->atype == class_type && isProtectedClass(res->u.cd))
+ {
+ prcode(fp,"static_cast<%U *>(",res->u.cd);
+ ++parens;
+ }
+ else if (res->atype == enum_type && isProtectedEnum(res->u.ed))
+ /*
+ * One or two older compilers can't
+ * handle a static_cast here so we
+ * revert to a C-style cast.
+ */
+ prcode(fp,"(%E)",res->u.ed);
+ }
+
+ if (!isAbstract(od))
+ if (isVirtual(od) || isVirtualReimp(od))
+ {
+ prcode(fp, "(sipSelfWasArg ? %S::%s(", classFQCName(vl->cd), mname);
+
+ generateProtectedCallArgs(od, fp);
+
+ prcode(fp, ") : ");
+ ++parens;
+ }
+ else
+ prcode(fp, "%S::", classFQCName(vl->cd));
+
+ prcode(fp,"%s(",mname);
+
+ generateProtectedCallArgs(od, fp);
+
+ while (parens--)
+ prcode(fp,")");
+
+ prcode(fp,";\n"
+"}\n"
+ );
+ }
+ }
+}
+
+
+/*
+ * Generate the arguments for a call to a protected method.
+ */
+static void generateProtectedCallArgs(overDef *od, FILE *fp)
+{
+ int a;
+
+ for (a = 0; a < od->cppsig->nrArgs; ++a)
+ {
+ argDef *ad = &od->cppsig->args[a];
+
+ if (a > 0)
+ prcode(fp, ",");
+
+ if (ad->atype == enum_type && isProtectedEnum(ad->u.ed))
+ prcode(fp, "(%S)", ad->u.ed->fqcname);
+
+ prcode(fp, "a%d", a);
+ }
+}
+
+
+/*
+ * Generate the function that does most of the work to handle a particular
+ * virtual function.
+ */
+static void generateVirtualHandler(sipSpec *pt,virtHandlerDef *vhd,FILE *fp)
+{
+ int a, nrvals, copy, isref;
+ argDef *res, res_noconstref;
+
+ res = &vhd->cppsig->result;
+
+ copy = isref = FALSE;
+
+ if (res->atype == void_type && res->nrderefs == 0)
+ res = NULL;
+ else
+ {
+ /*
+ * If we are returning a reference to an instance then we take care to
+ * handle Python errors but still return a valid C++ instance. If we
+ * are returning an instance then we take care to make a local copy of
+ * the instance returned from Python before the Python object is
+ * garbage collected and the C++ instance (possibly) destroyed.
+ */
+ if ((res->atype == class_type || res->atype == mapped_type) && res->nrderefs == 0)
+ if (isReference(res))
+ isref = TRUE;
+ else
+ copy = TRUE;
+
+ res_noconstref = *res;
+ resetIsConstArg(&res_noconstref);
+ resetIsReference(&res_noconstref);
+ }
+
+ prcode(fp,
+"\n"
+ );
+
+ generateBaseType(&vhd->cppsig->result, fp);
+
+ prcode(fp," sipVH_%s_%d(sip_gilstate_t sipGILState,PyObject *sipMethod"
+ ,pt->module->name,vhd->virthandlernr);
+
+ if (vhd->cppsig->nrArgs > 0)
+ {
+ prcode(fp,",");
+
+ generateArgs(vhd->cppsig, Definition, fp);
+ }
+
+ prcode(fp,")\n"
+"{\n"
+ );
+
+ if (res != NULL)
+ {
+ prcode(fp, " ");
+
+ /*
+ * wchar_t * return values are always on the heap. To reduce memory
+ * leaks we keep the last result around until we have a new one. This
+ * means that ownership of the return value stays with the function
+ * returning it - which is consistent with how other types work, even
+ * thought it may not be what's required in all cases.
+ */
+ if (res->atype == wstring_type && res->nrderefs == 1)
+ prcode(fp, "static ");
+
+ generateBaseType(&res_noconstref,fp);
+
+ prcode(fp," %ssipRes",(isref ? "*" : ""));
+
+ if (copy && res->atype == class_type && res->nrderefs == 0)
+ {
+ ctorDef *ct = res->u.cd->defctor;
+
+ if (ct != NULL && isPublicCtor(ct) && ct->cppsig != NULL && ct->cppsig->nrArgs > 0 && ct->cppsig->args[0].defval == NULL)
+ generateCallDefaultCtor(ct,fp);
+ }
+ else if (!copy)
+ {
+ /*
+ * We initialise the result to try and suppress a
+ * compiler warning.
+ */
+ prcode(fp," = ");
+ generateCastZero(res,fp);
+ }
+
+ prcode(fp,";\n"
+ );
+
+ if (res->atype == wstring_type && res->nrderefs == 1)
+ prcode(fp,
+"\n"
+" if (sipRes)\n"
+" {\n"
+" // Return any previous result to the heap.\n"
+" sipFree(%s);\n"
+" sipRes = 0;\n"
+" }\n"
+"\n"
+ , (isConstArg(res) ? "const_cast<wchar_t *>(sipRes)" : "sipRes"));
+ }
+
+ if (vhd->virtcode != NULL)
+ {
+ int error_flag = needErrorFlag(vhd->virtcode);
+
+ if (error_flag)
+ prcode(fp,
+" int sipIsErr = 0;\n"
+ );
+
+ prcode(fp,
+"\n"
+ );
+
+ generateCppCodeBlock(vhd->virtcode,fp);
+
+ if (error_flag)
+ prcode(fp,
+"\n"
+" if (sipIsErr)\n"
+" PyErr_Print();\n"
+ );
+
+ prcode(fp,
+"\n"
+" Py_DECREF(sipMethod);\n"
+"\n"
+" SIP_RELEASE_GIL(sipGILState)\n"
+ );
+
+ if (res != NULL)
+ prcode(fp,
+"\n"
+" return sipRes;\n"
+ );
+
+ prcode(fp,
+"}\n"
+ );
+
+ return;
+ }
+
+ /* See how many values we expect. */
+ nrvals = (res != NULL ? 1 : 0);
+
+ for (a = 0; a < vhd->pysig->nrArgs; ++a)
+ if (isOutArg(&vhd->pysig->args[a]))
+ ++nrvals;
+
+ if (copy)
+ {
+ prcode(fp,
+" ");
+
+ generateBaseType(&res_noconstref,fp);
+
+ prcode(fp," *sipResOrig;\n");
+
+ if (res->atype == class_type && res->u.cd->convtocode != NULL)
+ prcode(fp,
+" int sipResState;\n"
+ );
+ }
+
+ /* Call the method. */
+ prcode(fp,
+" PyObject *sipResObj = sipCallMethod(0,sipMethod,");
+
+ generateTupleBuilder(vhd->pysig, fp);
+
+ prcode(fp,");\n"
+"\n"
+" %s (!sipResObj || sipParseResult(0,sipMethod,sipResObj,\"",(isref ? "int sipIsErr =" : "if"));
+
+ /* Build the format string. */
+ if (nrvals == 0)
+ prcode(fp,"Z");
+ else
+ {
+ if (nrvals > 1)
+ prcode(fp,"(");
+
+ if (res != NULL)
+ prcode(fp, "%s", getParseResultFormat(res, TRUE, isTransferVH(vhd)));
+
+ for (a = 0; a < vhd->pysig->nrArgs; ++a)
+ {
+ argDef *ad = &vhd->pysig->args[a];
+
+ if (isOutArg(ad))
+ prcode(fp, "%s", getParseResultFormat(ad, FALSE, FALSE));
+ }
+
+ if (nrvals > 1)
+ prcode(fp,")");
+ }
+
+ prcode(fp,"\"");
+
+ /* Pass the destination pointers. */
+ if (res != NULL)
+ {
+ generateParseResultExtraArgs(res, TRUE, fp);
+ prcode(fp,",&sipRes%s",(copy ? "Orig" : ""));
+ }
+
+ for (a = 0; a < vhd->pysig->nrArgs; ++a)
+ {
+ argDef *ad = &vhd->pysig->args[a];
+
+ if (isOutArg(ad))
+ {
+ generateParseResultExtraArgs(ad, FALSE, fp);
+ prcode(fp,",%sa%d",(isReference(ad) ? "&" : ""),a);
+ }
+ }
+
+ if (isref)
+ prcode(fp,") < 0);\n"
+"\n"
+" if (sipIsErr)\n"
+ );
+ else
+ prcode(fp,") < 0)\n"
+ );
+
+ prcode(fp,
+" PyErr_Print();\n"
+ );
+
+ /* Make a copy if needed. */
+ if (copy)
+ {
+ prcode(fp,
+" else\n"
+" {\n"
+" sipRes = *sipResOrig;\n"
+ );
+
+ if (res->atype == mapped_type)
+ prcode(fp,
+" delete sipResOrig;\n"
+ );
+ else if (res->atype == class_type && res->u.cd->convtocode != NULL)
+ prcode(fp,
+" sipReleaseInstance(sipResOrig,sipClass_%C,sipResState);\n"
+ , classFQCName(res->u.cd));
+
+ prcode(fp,
+" }\n"
+ );
+ }
+
+ prcode(fp,
+"\n"
+" Py_XDECREF(sipResObj);\n"
+" Py_DECREF(sipMethod);\n"
+"\n"
+" SIP_RELEASE_GIL(sipGILState)\n"
+ );
+
+ if (res != NULL)
+ {
+ if (isref)
+ {
+ prcode(fp,
+"\n"
+" if (sipIsErr)\n"
+ );
+
+ generateVirtHandlerErrorReturn(res,fp);
+ }
+
+ prcode(fp,
+"\n"
+" return %ssipRes;\n"
+ ,(isref ? "*" : ""));
+ }
+
+ prcode(fp,
+"}\n"
+ );
+}
+
+
+/*
+ * Generate the extra arguments needed by sipParseResult() for a particular
+ * type.
+ */
+static void generateParseResultExtraArgs(argDef *ad, int isres, FILE *fp)
+{
+ switch (ad->atype)
+ {
+ case mapped_type:
+ prcode(fp, ",sipMappedType_%T", ad);
+ break;
+
+ case class_type:
+ prcode(fp, ",sipClass_%C", classFQCName(ad->u.cd));
+
+ if (isres && ad->nrderefs == 0 && ad->u.cd->convtocode != NULL && !isReference(ad))
+ prcode(fp, ",&sipResState");
+
+ break;
+
+ case pytuple_type:
+ prcode(fp,",&PyTuple_Type");
+ break;
+
+ case pylist_type:
+ prcode(fp,",&PyList_Type");
+ break;
+
+ case pydict_type:
+ prcode(fp,",&PyDict_Type");
+ break;
+
+ case pyslice_type:
+ prcode(fp,",&PySlice_Type");
+ break;
+
+ case pytype_type:
+ prcode(fp,",&PyType_Type");
+ break;
+
+ case enum_type:
+ if (ad->u.ed->fqcname != NULL)
+ prcode(fp,",sipEnum_%C",ad->u.ed->fqcname);
+ break;
+ }
+}
+
+
+/*
+ * Return the format characters used by sipParseResult() for a particular type.
+ */
+static const char *getParseResultFormat(argDef *ad, int isres, int xfervh)
+{
+ switch (ad->atype)
+ {
+ case mapped_type:
+ {
+ static const char *s[] = {
+ "D0", "D1", "D2", "D3",
+ "D4", "D5", "D6", "D7"
+ };
+
+ int f = 0x04;
+
+ if (isres && ad->nrderefs == 0)
+ f |= 0x01;
+
+ if (isres && xfervh)
+ f |= 0x02;
+
+ return s[f];
+ }
+
+ case class_type:
+ {
+ static char s[] = "C?";
+
+ int f = 0x04;
+
+ if (isres && ad->nrderefs == 0)
+ {
+ f |= 0x01;
+
+ if (ad->u.cd->convtocode != NULL)
+ {
+ f &= ~0x04;
+
+ /*
+ * If it is a reference then we are
+ * going to return the dereference. To
+ * make sure it remains valid we can
+ * either leak the temporary from the
+ * %ConvertToCode or we can suppress
+ * the %ConvertToCode. We choose the
+ * latter.
+ */
+ if (isReference(ad))
+ f |= 0x10;
+ }
+ }
+
+ if (isres && xfervh)
+ f |= 0x02;
+
+ s[1] = '0' + f;
+
+ return s;
+ }
+
+ case bool_type:
+ case cbool_type:
+ return "b";
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ return ((ad->nrderefs == 0) ? "c" : "s");
+
+ case wstring_type:
+ return ((ad->nrderefs == 0) ? "w" : "x");
+
+ case enum_type:
+ return ((ad->u.ed->fqcname != NULL) ? "E" : "e");
+
+ case ushort_type:
+ return "t";
+
+ case short_type:
+ return "h";
+
+ case int_type:
+ case cint_type:
+ return "i";
+
+ case uint_type:
+ return "u";
+
+ case long_type:
+ return "l";
+
+ case ulong_type:
+ return "m";
+
+ case longlong_type:
+ return "n";
+
+ case ulonglong_type:
+ return "o";
+
+ case void_type:
+ case struct_type:
+ return "V";
+
+ case float_type:
+ case cfloat_type:
+ return "f";
+
+ case double_type:
+ case cdouble_type:
+ return "d";
+
+ case pyobject_type:
+ return "O";
+
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pyslice_type:
+ case pytype_type:
+ return (isAllowNone(ad) ? "N" : "T");
+ }
+
+ /* We should never get here. */
+ return " ";
+}
+
+
+/*
+ * Generate the code to build a tuple of Python arguments.
+ */
+static void generateTupleBuilder(signatureDef *sd,FILE *fp)
+{
+ int a, arraylenarg;
+
+ prcode(fp,"\"");
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ char *fmt = "";
+ argDef *ad = &sd->args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ switch (ad->atype)
+ {
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ if (ad->nrderefs == 0 || (ad->nrderefs == 1 && isOutArg(ad)))
+ fmt = "c";
+ else if (isArray(ad))
+ fmt = "a";
+ else
+ fmt = "s";
+
+ break;
+
+ case wstring_type:
+ if (ad->nrderefs == 0 || (ad->nrderefs == 1 && isOutArg(ad)))
+ fmt = "w";
+ else if (isArray(ad))
+ fmt = "A";
+ else
+ fmt = "x";
+
+ break;
+
+ case bool_type:
+ case cbool_type:
+ fmt = "b";
+ break;
+
+ case enum_type:
+ fmt = (ad->u.ed->fqcname != NULL) ? "E" : "e";
+ break;
+
+ case cint_type:
+ fmt = "i";
+ break;
+
+ case uint_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "u";
+
+ break;
+
+ case int_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "i";
+
+ break;
+
+ case ushort_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "t";
+
+ break;
+
+ case short_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "h";
+
+ break;
+
+ case long_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "l";
+
+ break;
+
+ case ulong_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "m";
+
+ break;
+
+ case longlong_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "n";
+
+ break;
+
+ case ulonglong_type:
+ if (isArraySize(ad))
+ arraylenarg = a;
+ else
+ fmt = "o";
+
+ break;
+
+ case struct_type:
+ case void_type:
+ fmt = "V";
+ break;
+
+ case float_type:
+ case cfloat_type:
+ fmt = "f";
+ break;
+
+ case double_type:
+ case cdouble_type:
+ fmt = "d";
+ break;
+
+ case signal_type:
+ case slot_type:
+ case slotcon_type:
+ case slotdis_type:
+ fmt = "s";
+ break;
+
+ case mapped_type:
+ fmt = "D";
+ break;
+
+ case class_type:
+ fmt = "C";
+ break;
+
+ case rxcon_type:
+ case rxdis_type:
+ case qobject_type:
+ fmt = "O";
+ break;
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ fmt = "S";
+ break;
+ }
+
+ prcode(fp,fmt);
+ }
+
+ prcode(fp,"\"");
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ int derefs;
+ argDef *ad = &sd->args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ derefs = ad->nrderefs;
+
+ switch (ad->atype)
+ {
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ case wstring_type:
+ if (!(ad->nrderefs == 0 || (ad->nrderefs == 1 && isOutArg(ad))))
+ --derefs;
+
+ break;
+
+ case mapped_type:
+ case class_type:
+ if (ad->nrderefs > 0)
+ --derefs;
+
+ break;
+
+ case struct_type:
+ case void_type:
+ --derefs;
+ break;
+ }
+
+ if (ad->atype == mapped_type || ad->atype == class_type ||
+ ad->atype == rxcon_type || ad->atype == rxdis_type ||
+ ad->atype == qobject_type)
+ {
+ prcode(fp,",");
+
+ if (isConstArg(ad))
+ prcode(fp,"const_cast<%b *>(",ad);
+
+ if (ad->nrderefs == 0)
+ prcode(fp,"&");
+ else
+ while (derefs-- != 0)
+ prcode(fp,"*");
+
+ prcode(fp,"a%d",a);
+
+ if (isConstArg(ad))
+ prcode(fp,")");
+
+ if (ad->atype == mapped_type)
+ prcode(fp, ",sipMappedType_%T,NULL", ad);
+ else if (ad->atype == class_type)
+ prcode(fp, ",sipClass_%C,NULL", classFQCName(ad->u.cd));
+ else
+ prcode(fp,",sipClass_QObject");
+ }
+ else
+ {
+ if (!isArraySize(ad))
+ {
+ prcode(fp,",");
+
+ while (derefs-- != 0)
+ prcode(fp,"*");
+
+ prcode(fp,"a%d",a);
+ }
+
+ if (isArray(ad))
+ {
+ argType astype = sd->args[arraylenarg].atype;
+
+ prcode(fp,",%sa%d",(astype == int_type ? "" : "(int)"),arraylenarg);
+ }
+ else if (ad->atype == enum_type && ad->u.ed->fqcname != NULL)
+ prcode(fp,",sipEnum_%C",ad->u.ed->fqcname);
+ }
+ }
+}
+
+
+/*
+ * Generate the class interface #include directives required by either a class
+ * or a module.
+ */
+static void generateUsedIncludes(ifaceFileList *iffl, int header, FILE *fp)
+{
+ int newl = TRUE;
+
+ while (iffl != NULL)
+ {
+ if (header == iffl->header)
+ {
+ if (newl)
+ {
+ prcode(fp,
+"\n"
+ );
+
+ newl = FALSE;
+ }
+
+ prcode(fp,
+"#include \"sip%s%F.h\"\n"
+ , iffl->iff->module->name, iffl->iff->fqcname);
+ }
+
+ iffl = iffl->next;
+ }
+
+ if (!newl)
+ prcode(fp,
+"\n"
+ );
+}
+
+
+/*
+ * Generate the header file for the C++ interface.
+ */
+static void generateIfaceHeader(sipSpec *pt,ifaceFileDef *iff,char *codeDir)
+{
+ char *wfile;
+ char *cmname = iff->module->name;
+ classDef *cd;
+ mappedTypeDef *mtd;
+ exceptionDef *xd;
+ int genused;
+ FILE *fp;
+
+ /* Create the header file. */
+
+ wfile = createIfaceFileName(codeDir,iff,".h");
+ fp = createFile(pt,wfile,"Interface header file.");
+
+ prcode(fp,
+"\n"
+"#ifndef _%s%F_h\n"
+"#define _%s%F_h\n"
+"\n"
+ ,cmname,iff->fqcname,cmname,iff->fqcname);
+
+ genused = TRUE;
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ if (cd->iff == iff)
+ {
+ if (iff->module == pt->module)
+ generateClassHeader(cd,genused,pt,fp);
+ else if (!isExternal(cd))
+ generateImportedClassHeader(cd,pt,fp);
+
+ genused = FALSE;
+ }
+
+ genused = TRUE;
+
+ for (mtd = pt->mappedtypes; mtd != NULL; mtd = mtd->next)
+ if (mtd->iff == iff)
+ {
+ if (iff->module == pt->module)
+ generateMappedTypeHeader(mtd,genused,fp);
+ else
+ generateImportedMappedTypeHeader(mtd,pt,fp);
+
+ genused = FALSE;
+ }
+
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ if (xd->iff == iff)
+ {
+ generateCppCodeBlock(xd->hdrcode,fp);
+
+ if (xd->exceptionnr >= 0)
+ {
+ prcode(fp,
+"\n"
+"#define sipException_%C sipModuleAPI_%s"
+ ,iff->fqcname,pt->module->name);
+
+ if (iff->module == pt->module)
+ prcode(fp,".");
+ else
+ prcode(fp,"_%s->",iff->module->name);
+
+ prcode(fp,"em_exceptions[%d]\n"
+ ,xd->exceptionnr);
+ }
+ }
+
+ prcode(fp,
+"\n"
+"#endif\n"
+ );
+
+ closeFile(fp);
+ free(wfile);
+}
+
+
+/*
+ * Generate the C++ header code for an imported mapped type.
+ */
+static void generateImportedMappedTypeHeader(mappedTypeDef *mtd,sipSpec *pt,
+ FILE *fp)
+{
+ char *mname = pt->module->name;
+ char *imname = mtd->iff->module->name;
+ argDef type;
+
+ generateCppCodeBlock(mtd->hdrcode,fp);
+
+ type.atype = mapped_type;
+ type.u.mtd = mtd;
+ type.argflags = 0;
+ type.name = NULL;
+ type.nrderefs = 0;
+ type.defval = NULL;
+
+ prcode(fp,
+"\n"
+"#define sipMappedType_%T sipModuleAPI_%s_%s->em_mappedtypes[%d]\n"
+"#define sipForceConvertTo_%T sipModuleAPI_%s_%s->em_mappedtypes[%d]->mt_fcto\n"
+"#define sipConvertFrom_%T sipModuleAPI_%s_%s->em_mappedtypes[%d]->mt_cfrom\n"
+ ,&type,mname,imname,mtd->mappednr
+ ,&type,mname,imname,mtd->mappednr
+ ,&type,mname,imname,mtd->mappednr);
+}
+
+
+/*
+ * Generate the C++ header code for a generated mapped type.
+ */
+static void generateMappedTypeHeader(mappedTypeDef *mtd,int genused,FILE *fp)
+{
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ generateCppCodeBlock(mtd->hdrcode,fp);
+
+ if (genused)
+ generateUsedIncludes(mtd->iff->used, TRUE, fp);
+
+ prcode(fp,
+"\n"
+"#define sipMappedType_%T &sipMappedTypeDef_%T\n"
+"#define sipForceConvertTo_%T sipMappedTypeDef_%T.mt_fcto\n"
+"#define sipConvertFrom_%T sipMappedTypeDef_%T.mt_cfrom\n"
+"\n"
+"extern sipMappedType sipMappedTypeDef_%T;\n"
+ ,&mtd->type,&mtd->type
+ ,&mtd->type,&mtd->type
+ ,&mtd->type,&mtd->type
+ ,&mtd->type);
+}
+
+
+/*
+ * Generate the C++ header code for an imported class.
+ */
+static void generateImportedClassHeader(classDef *cd,sipSpec *pt,FILE *fp)
+{
+ char *mname = pt->module->name;
+ char *imname = cd->iff->module->name;
+ classDef *hcd;
+
+ for (hcd = cd; hcd != NULL; hcd = hcd->ecd)
+ generateCppCodeBlock(hcd->hdrcode,fp);
+
+ prcode(fp,
+"\n"
+"#define sipClass_%C sipModuleAPI_%s_%s->em_types[%d]\n"
+"#define sipCast_%C sipModuleAPI_%s_%s->em_types[%d]->type->td_cast\n"
+"#define sipForceConvertTo_%C sipModuleAPI_%s_%s->em_types[%d]->type->td_fcto\n"
+ ,classFQCName(cd),mname,imname,cd->classnr
+ ,classFQCName(cd),mname,imname,cd->classnr
+ ,classFQCName(cd),mname,imname,cd->classnr);
+
+ generateEnumMacros(pt, cd, fp);
+}
+
+
+/*
+ * Generate the C++ header code for a generated class.
+ */
+static void generateClassHeader(classDef *cd,int genused,sipSpec *pt,FILE *fp)
+{
+ char *mname = pt->module->name;
+ classDef *hcd;
+
+ for (hcd = cd; hcd != NULL; hcd = hcd->ecd)
+ generateCppCodeBlock(hcd->hdrcode,fp);
+
+ if (genused)
+ generateUsedIncludes(cd->iff->used, TRUE, fp);
+
+ if (cd->iff->type != namespace_iface)
+ {
+ prcode(fp,
+"\n"
+"#define sipClass_%C sipModuleAPI_%s.em_types[%d]\n"
+ ,classFQCName(cd),mname,cd->classnr);
+
+ if (!isExternal(cd))
+ prcode(fp,
+"#define sipCast_%C sipType_%s_%C.td_cast\n"
+"#define sipForceConvertTo_%C sipType_%s_%C.td_fcto\n"
+ , classFQCName(cd), mname, classFQCName(cd)
+ , classFQCName(cd), mname, classFQCName(cd));
+ }
+
+ generateEnumMacros(pt, cd, fp);
+
+ if (!isExternal(cd))
+ prcode(fp,
+"\n"
+"extern sipTypeDef sipType_%s_%C;\n"
+ , mname, classFQCName(cd));
+
+ if (hasShadow(cd))
+ generateShadowClassDeclaration(pt,cd,fp);
+}
+
+
+/*
+ * Generate the sipEnum_* macros.
+ */
+static void generateEnumMacros(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ enumDef *ed;
+ int noIntro = TRUE;
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ if (ed->fqcname == NULL || ed->ecd != cd)
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+"#define sipEnum_%C sipModuleAPI_%s", ed->fqcname, pt->module->name);
+
+ if (pt->module == ed->module)
+ prcode(fp, ".");
+ else
+ prcode(fp, "_%s->", ed->module->name);
+
+ prcode(fp, "em_enums[%d]\n"
+ , ed->enumnr);
+ }
+}
+
+
+/*
+ * Generate the shadow class declaration.
+ */
+static void generateShadowClassDeclaration(sipSpec *pt,classDef *cd,FILE *fp)
+{
+ int noIntro, nrVirts;
+ ctorDef *ct;
+ virtOverDef *vod;
+ classDef *pcd;
+
+ prcode(fp,
+"\n"
+"\n"
+"class sip%C : public %S\n"
+"{\n"
+"public:\n"
+ ,classFQCName(cd),classFQCName(cd));
+
+ /* Define a shadow class for any protected classes we have. */
+
+ for (pcd = pt->classes; pcd != NULL; pcd = pcd->next)
+ {
+ if (pcd->ecd != cd || !isProtectedClass(pcd))
+ continue;
+
+ prcode(fp,
+" class sip%s : public %s {};\n"
+ ,classBaseName(pcd),classBaseName(pcd));
+ }
+
+ /* The constructor declarations. */
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ ctorDef *dct;
+
+ if (isPrivateCtor(ct))
+ continue;
+
+ if (ct->cppsig == NULL)
+ continue;
+
+ /* Check we haven't already handled this C++ signature. */
+ for (dct = cd->ctors; dct != ct; dct = dct->next)
+ if (dct->cppsig != NULL && sameSignature(dct->cppsig, ct->cppsig, TRUE))
+ break;
+
+ if (dct != ct)
+ continue;
+
+ prcode(fp,
+" sip%C(",classFQCName(cd));
+
+ generateArgs(ct->cppsig,Declaration,fp);
+
+ prcode(fp,")%X;\n"
+ ,ct->exceptions);
+ }
+
+ /* The destructor. */
+
+ if (!isPrivateDtor(cd))
+ prcode(fp,
+" %s~sip%C()%X;\n"
+ ,(cd->vmembers != NULL ? "virtual " : ""),classFQCName(cd),cd->dtorexceptions);
+
+ /* The metacall methods if required. */
+ if (isQObjectSubClass(cd) && optQ_OBJECT4(pt))
+ prcode(fp,
+"\n"
+" const QMetaObject *metaObject() const;\n"
+" int qt_metacall(QMetaObject::Call,int,void **);\n"
+ );
+
+ /* The exposure of protected enums. */
+
+ generateProtectedEnums(pt,cd,fp);
+
+ /* The wrapper around each protected member function. */
+
+ generateProtectedDeclarations(cd,fp);
+
+ /* The public wrapper around each signal emitter. */
+ if (!optNoEmitters(pt))
+ {
+ visibleList *vl;
+
+ noIntro = TRUE;
+
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ {
+ overDef *od;
+
+ if (vl->m->slot != no_slot)
+ continue;
+
+ for (od = vl->cd->overs; od != NULL; od = od->next)
+ {
+ if (od->common != vl->m || !isSignal(od))
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /*\n"
+" * There is a public method for every Qt signal that can be emitted\n"
+" * by this object. This function is called by Python to emit the\n"
+" * signal.\n"
+" */\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" int sipEmit_%s(PyObject *);\n"
+ ,vl->m->pyname->text);
+
+ break;
+ }
+ }
+ }
+
+ /* The catcher around each virtual function in the hierarchy. */
+ noIntro = TRUE;
+
+ for (vod = cd->vmembers; vod != NULL; vod = vod->next)
+ {
+ overDef *od = &vod->o;
+ virtOverDef *dvod;
+
+ if (isPrivate(od))
+ continue;
+
+ /* Check we haven't already handled this C++ signature. */
+ for (dvod = cd->vmembers; dvod != vod; dvod = dvod->next)
+ if (strcmp(dvod->o.cppname,od->cppname) == 0 && sameSignature(dvod->o.cppsig,od->cppsig,TRUE))
+ break;
+
+ if (dvod != vod)
+ continue;
+
+ if (noIntro)
+ {
+ prcode(fp,
+"\n"
+" /*\n"
+" * There is a protected method for every virtual method visible from\n"
+" * this class.\n"
+" */\n"
+"protected:\n"
+ );
+
+ noIntro = FALSE;
+ }
+
+ prcode(fp,
+" ");
+
+ prOverloadDecl(fp, od, FALSE);
+ prcode(fp, ";\n");
+ }
+
+ prcode(fp,
+"\n"
+"public:\n"
+" sipWrapper *sipPySelf;\n"
+ );
+
+ /* The private declarations. */
+
+ prcode(fp,
+"\n"
+"private:\n"
+" sip%C(const sip%C &);\n"
+" sip%C &operator = (const sip%C &);\n"
+ ,classFQCName(cd),classFQCName(cd)
+ ,classFQCName(cd),classFQCName(cd));
+
+ if ((nrVirts = countVirtuals(cd)) > 0)
+ prcode(fp,
+"\n"
+" sipMethodCache sipPyMethods[%d];\n"
+ ,nrVirts);
+
+ prcode(fp,
+"};\n"
+ );
+}
+
+
+/*
+ * Generate the C++ declaration for an overload.
+ */
+void prOverloadDecl(FILE *fp, overDef *od, int defval)
+{
+ int a;
+
+ normaliseArgs(od->cppsig);
+
+ generateBaseType(&od->cppsig->result, fp);
+
+ prcode(fp, " %O(", od);
+
+ for (a = 0; a < od->cppsig->nrArgs; ++a)
+ {
+ argDef *ad = &od->cppsig->args[a];
+
+ if (a > 0)
+ prcode(fp, ",");
+
+ generateBaseType(ad, fp);
+
+ if (defval && ad->defval != NULL)
+ {
+ prcode(fp, " = ");
+ generateExpression(ad->defval, fp);
+ }
+ }
+
+ prcode(fp, ")%s%X", (isConst(od) ? " const" : ""), od->exceptions);
+
+ restoreArgs(od->cppsig);
+}
+
+
+/*
+ * Generate typed arguments.
+ */
+static void generateArgs(signatureDef *sd,funcArgType ftype,FILE *fp)
+{
+ int a;
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ if (a > 0)
+ prcode(fp,",");
+
+ generateSingleArg(&sd->args[a],a,ftype,fp);
+ }
+}
+
+
+/*
+ * Generate the declaration of a named variable to hold a result from a C++
+ * function call.
+ */
+static void generateNamedValueType(argDef *ad,char *name,FILE *fp)
+{
+ argDef mod = *ad;
+
+ if (ad->nrderefs == 0)
+ if (ad->atype == class_type || ad->atype == mapped_type)
+ mod.nrderefs = 1;
+ else
+ resetIsConstArg(&mod);
+
+ resetIsReference(&mod);
+ generateNamedBaseType(&mod,name,fp);
+}
+
+
+/*
+ * Generate a single argument.
+ */
+static void generateSingleArg(argDef *ad,int argnr,funcArgType ftype,FILE *fp)
+{
+ char name[50];
+ int genType, genName, derefPtr;
+
+ /* Break the type down to individual modifications. */
+
+ genType = FALSE;
+ genName = FALSE;
+ derefPtr = FALSE;
+
+ switch (ftype)
+ {
+ case Call:
+ genName = TRUE;
+ derefPtr = TRUE;
+ break;
+
+ case Declaration:
+ genType = TRUE;
+ break;
+
+ case Definition:
+ genType = TRUE;
+ genName = TRUE;
+ break;
+ }
+
+ if (genName)
+ {
+ char *ind = "";
+
+ if (derefPtr)
+ switch (ad->atype)
+ {
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ case wstring_type:
+ if (ad->nrderefs > (isOutArg(ad) ? 0 : 1))
+ ind = "&";
+
+ break;
+
+ case mapped_type:
+ case class_type:
+ if (ad->nrderefs == 2)
+ ind = "&";
+ else if (ad->nrderefs == 0)
+ ind = "*";
+
+ break;
+
+ case struct_type:
+ case void_type:
+ if (ad->nrderefs == 2)
+ ind = "&";
+
+ break;
+
+ default:
+ if (ad->nrderefs == 1)
+ ind = "&";
+ }
+
+ sprintf(name,"%sa%d",ind,argnr);
+ }
+ else
+ name[0] = '\0';
+
+ if (genType)
+ generateNamedBaseType(ad,name,fp);
+ else if (genName)
+ prcode(fp,name);
+}
+
+
+/*
+ * Generate a C++ type.
+ */
+static void generateBaseType(argDef *ad,FILE *fp)
+{
+ generateNamedBaseType(ad,"",fp);
+}
+
+
+/*
+ * Generate a C++ type and name.
+ */
+static void generateNamedBaseType(argDef *ad,char *name,FILE *fp)
+{
+ int nr_derefs = ad->nrderefs;
+
+ /*
+ * A function type is handled differently because of the position of
+ * the name.
+ */
+ if (ad->atype == function_type)
+ {
+ int i;
+ signatureDef *sig = ad->u.sa;
+
+ generateBaseType(&sig->result,fp);
+
+ prcode(fp," (");
+
+ for (i = 0; i < nr_derefs; ++i)
+ prcode(fp,"*");
+
+ prcode(fp,"%s)(",name);
+ generateArgs(sig,Declaration,fp);
+ prcode(fp,")");
+
+ return;
+ }
+
+ if (isConstArg(ad))
+ prcode(fp,"const ");
+
+ switch (ad->atype)
+ {
+ case sstring_type:
+ prcode(fp,"signed char");
+ break;
+
+ case ustring_type:
+ prcode(fp,"unsigned char");
+ break;
+
+ case wstring_type:
+ prcode(fp,"wchar_t");
+ break;
+
+ case signal_type:
+ case slot_type:
+ case anyslot_type:
+ case slotcon_type:
+ case slotdis_type:
+ nr_derefs = 1;
+
+ /* Drop through. */
+
+ case string_type:
+ prcode(fp,"char");
+ break;
+
+ case ushort_type:
+ prcode(fp,"unsigned short");
+ break;
+
+ case short_type:
+ prcode(fp,"short");
+ break;
+
+ case uint_type:
+ prcode(fp,"unsigned");
+ break;
+
+ case int_type:
+ case cint_type:
+ prcode(fp,"int");
+ break;
+
+ case ulong_type:
+ prcode(fp,"unsigned long");
+ break;
+
+ case long_type:
+ prcode(fp,"long");
+ break;
+
+ case ulonglong_type:
+ prcode(fp,"unsigned PY_LONG_LONG");
+ break;
+
+ case longlong_type:
+ prcode(fp,"PY_LONG_LONG");
+ break;
+
+ case struct_type:
+ prcode(fp,"struct %S",ad->u.sname);
+ break;
+
+ case void_type:
+ prcode(fp,"void");
+ break;
+
+ case bool_type:
+ case cbool_type:
+ prcode(fp,"bool");
+ break;
+
+ case float_type:
+ case cfloat_type:
+ prcode(fp,"float");
+ break;
+
+ case double_type:
+ case cdouble_type:
+ prcode(fp,"double");
+ break;
+
+ case defined_type:
+ /*
+ * The only defined types still remaining are arguments to
+ * templates.
+ */
+
+ prcode(fp,"%S",ad->u.snd);
+ break;
+
+ case rxcon_type:
+ case rxdis_type:
+ nr_derefs = 1;
+ prcode(fp,"QObject");
+ break;
+
+ case mapped_type:
+ generateBaseType(&ad->u.mtd->type,fp);
+ break;
+
+ case class_type:
+ prcode(fp,"%U",ad->u.cd);
+ break;
+
+ case template_type:
+ {
+ static const char tail[] = ">";
+ int a;
+ templateDef *td = ad->u.td;
+
+ prcode(fp, "%S%s", td->fqname, (prcode_xml ? "&lt;" : "<"));
+
+ for (a = 0; a < td->types.nrArgs; ++a)
+ {
+ if (a > 0)
+ prcode(fp,",");
+
+ generateBaseType(&td->types.args[a],fp);
+ }
+
+ if (prcode_last == tail)
+ prcode(fp, " ");
+
+ prcode(fp, (prcode_xml ? "&gt;" : tail));
+ break;
+ }
+
+ case enum_type:
+ prcode(fp,"%E",ad->u.ed);
+ break;
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ case qobject_type:
+ case ellipsis_type:
+ prcode(fp, "PyObject *");
+ break;
+ }
+
+ if (nr_derefs > 0)
+ {
+ int i;
+
+ prcode(fp," ");
+
+ for (i = 0; i < nr_derefs; ++i)
+ prcode(fp,"*");
+ }
+
+ if (isReference(ad))
+ prcode(fp, (prcode_xml ? "&amp;" : "&"));
+
+ if (*name != '\0')
+ {
+ if (nr_derefs == 0)
+ prcode(fp," ");
+
+ prcode(fp,name);
+ }
+}
+
+
+/*
+ * Generate the definition of an argument variable and any supporting
+ * variables.
+ */
+static void generateVariable(argDef *ad,int argnr,FILE *fp)
+{
+ argType atype = ad->atype;
+ argDef orig;
+
+ if (isInArg(ad) && ad->defval != NULL &&
+ (atype == class_type || atype == mapped_type) &&
+ (ad->nrderefs == 0 || isReference(ad)))
+ {
+ /*
+ * Generate something to hold the default value as it cannot be
+ * assigned straight away.
+ */
+ prcode(fp,
+" %B a%ddef = ",ad,argnr);
+
+ generateExpression(ad->defval,fp);
+
+ prcode(fp,";\n"
+ );
+ }
+
+ /* Adjust the type so we have the type that will really handle it. */
+
+ orig = *ad;
+
+ switch (atype)
+ {
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ case wstring_type:
+ if (!isReference(ad))
+ if (ad->nrderefs == 2)
+ ad->nrderefs = 1;
+ else if (ad->nrderefs == 1 && isOutArg(ad))
+ ad->nrderefs = 0;
+
+ break;
+
+ case mapped_type:
+ case class_type:
+ case void_type:
+ case struct_type:
+ ad->nrderefs = 1;
+ break;
+
+ default:
+ ad->nrderefs = 0;
+ }
+
+ /* Array sizes are always integers. */
+ if (isArraySize(ad))
+ ad->atype = int_type;
+
+ resetIsReference(ad);
+
+ if (ad->nrderefs == 0)
+ resetIsConstArg(ad);
+
+ prcode(fp,
+" %B a%d",ad,argnr);
+
+ if (atype == anyslot_type)
+ prcode(fp, "Name");
+
+ *ad = orig;
+
+ generateDefaultValue(ad, argnr, fp);
+
+ prcode(fp,";\n"
+ );
+
+ /* Some types have supporting variables. */
+ if (isInArg(ad))
+ switch (atype)
+ {
+ case class_type:
+ if (ad->u.cd->convtocode != NULL && !isConstrained(ad))
+ prcode(fp,
+" int a%dState = 0;\n"
+ ,argnr);
+
+ if (isGetWrapper(ad))
+ prcode(fp,
+" PyObject *a%dWrapper;\n"
+ ,argnr);
+
+ break;
+
+ case mapped_type:
+ prcode(fp,
+" int a%dState = 0;\n"
+ ,argnr);
+ break;
+
+ case anyslot_type:
+ prcode(fp,
+" PyObject *a%dCallable", argnr);
+ generateDefaultValue(ad, argnr, fp);
+ prcode(fp, ";\n"
+ );
+ break;
+ }
+}
+
+
+/*
+ * Generate a default value.
+ */
+static void generateDefaultValue(argDef *ad, int argnr, FILE *fp)
+{
+ if (isInArg(ad) && ad->defval != NULL)
+ {
+ prcode(fp," = ");
+
+ if ((ad->atype == class_type || ad->atype == mapped_type) &&
+ (ad->nrderefs == 0 || isReference(ad)))
+ prcode(fp, "&a%ddef", argnr);
+ else
+ generateExpression(ad->defval,fp);
+ }
+}
+
+
+/*
+ * Generate a simple function call.
+ */
+static void generateSimpleFunctionCall(fcallDef *fcd,FILE *fp)
+{
+ int i;
+
+ prcode(fp, "%B(", &fcd->type);
+
+ for (i = 0; i < fcd->nrArgs; ++i)
+ {
+ if (i > 0)
+ prcode(fp,",");
+
+ generateExpression(fcd->args[i],fp);
+ }
+
+ prcode(fp,")");
+}
+
+
+/*
+ * Generate the type structure that contains all the information needed by the
+ * metatype. A sub-set of this is used to extend namespaces.
+ */
+static void generateTypeDefinition(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ char *mname = pt->module->name;
+ const char *sep;
+ int is_slots, nr_methods, nr_enums;
+ int is_inst_class, is_inst_voidp, is_inst_char, is_inst_string;
+ int is_inst_int, is_inst_long, is_inst_ulong, is_inst_longlong;
+ int is_inst_ulonglong, is_inst_double, is_inst_enum;
+ memberDef *md;
+
+ if (cd->supers != NULL)
+ {
+ classList *cl;
+
+ prcode(fp,
+"\n"
+"\n"
+"/* Define this type's super-types. */\n"
+"static sipEncodedClassDef supers_%C[] = {",classFQCName(cd));
+
+ for (cl = cd->supers; cl != NULL; cl = cl->next)
+ {
+ if (cl != cd->supers)
+ prcode(fp,", ");
+
+ generateEncodedClass(pt,cl->cd,(cl->next == NULL),fp);
+ }
+
+ prcode(fp,"};\n"
+ );
+ }
+
+ /* Generate the slots table. */
+ is_slots = FALSE;
+
+ for (md = cd->members; md != NULL; md = md->next)
+ {
+ const char *stype;
+
+ if (md->slot == no_slot)
+ continue;
+
+ if (!is_slots)
+ {
+ prcode(fp,
+"\n"
+"\n"
+"/* Define this type's Python slots. */\n"
+"static sipPySlotDef slots_%C[] = {\n"
+ ,classFQCName(cd));
+
+ is_slots = TRUE;
+ }
+
+ if ((stype = slotName(md->slot)) != NULL)
+ prcode(fp,
+" {(void *)slot_%C_%s, %s},\n"
+ ,classFQCName(cd),md->pyname->text,stype);
+ }
+
+ if (is_slots)
+ prcode(fp,
+" {0, (sipPySlotType)0}\n"
+"};\n"
+ );
+
+ /* Generate the attributes tables. */
+ nr_methods = generateMethodTable(cd,fp);
+ nr_enums = generateEnumMemberTable(pt,cd,fp);
+
+ /* Generate each instance table. */
+ is_inst_class = generateClasses(pt,cd,fp);
+ is_inst_voidp = generateVoidPointers(pt,cd,fp);
+ is_inst_char = generateChars(pt,cd,fp);
+ is_inst_string = generateStrings(pt,cd,fp);
+ is_inst_int = generateInts(pt,cd,fp);
+ is_inst_long = generateLongs(pt,cd,fp);
+ is_inst_ulong = generateUnsignedLongs(pt,cd,fp);
+ is_inst_longlong = generateLongLongs(pt,cd,fp);
+ is_inst_ulonglong = generateUnsignedLongLongs(pt,cd,fp);
+ is_inst_double = generateDoubles(pt,cd,fp);
+ is_inst_enum = generateEnums(pt,cd,fp);
+
+ prcode(fp,
+"\n"
+"\n"
+"sipTypeDef sipType_%s_%C = {\n"
+" 0,\n"
+" ", mname, classFQCName(cd));
+
+ sep = "";
+
+ if (cd->userflags)
+ {
+ prcode(fp, "%s%x", sep, ((cd->userflags << TYPE_FLAGS_SHIFT) & TYPE_FLAGS_MASK));
+ sep = "|";
+ }
+
+ if (isAbstractClass(cd))
+ {
+ prcode(fp, "%sSIP_TYPE_ABSTRACT", sep);
+ sep = "|";
+ }
+
+ if (cd->subbase != NULL)
+ {
+ prcode(fp, "%sSIP_TYPE_SCC", sep);
+ sep = "|";
+ }
+
+ if (*sep == '\0')
+ prcode(fp, "0");
+
+ prcode(fp, ",\n");
+
+ if (cd->real != NULL)
+ prcode(fp,
+" 0,\n"
+ );
+ else if (cd->ecd != NULL && cd->ecd->real != NULL)
+ prcode(fp,
+" \"%s.%P\",\n"
+ , cd->ecd->real->iff->module->name, cd->ecd, cd->pyname);
+ else
+ prcode(fp,
+" \"%s.%P\",\n"
+ , mname, cd->ecd, cd->pyname);
+
+ if (isRenamedClass(cd))
+ prcode(fp,
+" \"%S\",\n"
+ , classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ prcode(fp,
+" ");
+
+ if (cd->real != NULL)
+ generateEncodedClass(pt, cd->real, 0, fp);
+ else if (cd->ecd != NULL)
+ generateEncodedClass(pt, cd->ecd, 0, fp);
+ else
+ prcode(fp, "{0, 0, 1}");
+
+ prcode(fp, ",\n"
+ );
+
+ if (cd->supers != NULL)
+ prcode(fp,
+" supers_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (is_slots)
+ prcode(fp,
+" slots_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (nr_methods == 0)
+ prcode(fp,
+" 0, 0,\n"
+ );
+ else
+ prcode(fp,
+" %d, methods_%C,\n"
+ ,nr_methods,classFQCName(cd));
+
+ if (nr_enums == 0)
+ prcode(fp,
+" 0, 0,\n"
+ );
+ else
+ prcode(fp,
+" %d, enummembers_%C,\n"
+ ,nr_enums,classFQCName(cd));
+
+ if (hasVarHandlers(cd))
+ prcode(fp,
+" variables_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (canCreate(cd))
+ prcode(fp,
+" init_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->travcode != NULL)
+ prcode(fp,
+" traverse_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->clearcode != NULL)
+ prcode(fp,
+" clear_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->readbufcode != NULL)
+ prcode(fp,
+" getreadbuffer_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->writebufcode != NULL)
+ prcode(fp,
+" getwritebuffer_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->segcountcode != NULL)
+ prcode(fp,
+" getsegcount_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->charbufcode != NULL)
+ prcode(fp,
+" getcharbuffer_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (needDealloc(cd))
+ prcode(fp,
+" dealloc_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ if (cd->iff->type == namespace_iface || generating_c)
+ prcode(fp,
+" 0,\n"
+" 0,\n"
+ );
+ else
+ prcode(fp,
+" cast_%C,\n"
+" release_%C,\n"
+ , classFQCName(cd)
+ , classFQCName(cd));
+
+ if (cd->iff->type == namespace_iface)
+ prcode(fp,
+" 0,\n"
+" 0,\n"
+ );
+ else
+ {
+ prcode(fp,
+" forceConvertTo_%C,\n"
+ ,classFQCName(cd));
+
+ if (cd->convtocode != NULL)
+ prcode(fp,
+" convertTo_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+ }
+
+ if (!optNoEmitters(pt) && hasSigSlots(cd))
+ prcode(fp,
+" signals_%C,\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" 0,\n"
+ );
+
+ prcode(fp,
+" {");
+
+ if (is_inst_class)
+ prcode(fp,"classInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_voidp)
+ prcode(fp,"voidPtrInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_char)
+ prcode(fp,"charInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_string)
+ prcode(fp,"stringInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_int)
+ prcode(fp,"intInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_long)
+ prcode(fp,"longInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_ulong)
+ prcode(fp,"unsignedLongInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_longlong)
+ prcode(fp,"longLongInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_ulonglong)
+ prcode(fp,"unsignedLongLongInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_double)
+ prcode(fp,"doubleInstances_%C, ",classFQCName(cd));
+ else
+ prcode(fp,"0, ");
+
+ if (is_inst_enum)
+ prcode(fp,"enumInstances_%C",classFQCName(cd));
+ else
+ prcode(fp,"0");
+
+ prcode(fp,"},\n"
+" 0\n"
+"};\n"
+ );
+}
+
+
+/*
+ * Return the sip module's string equivalent of a slot.
+ */
+static const char *slotName(slotType st)
+{
+ const char *sn;
+
+ switch (st)
+ {
+ case str_slot:
+ sn = "str_slot";
+ break;
+
+ case int_slot:
+ sn = "int_slot";
+ break;
+
+ case long_slot:
+ sn = "long_slot";
+ break;
+
+ case float_slot:
+ sn = "float_slot";
+ break;
+
+ case len_slot:
+ sn = "len_slot";
+ break;
+
+ case contains_slot:
+ sn = "contains_slot";
+ break;
+
+ case add_slot:
+ sn = "add_slot";
+ break;
+
+ case concat_slot:
+ sn = "concat_slot";
+ break;
+
+ case sub_slot:
+ sn = "sub_slot";
+ break;
+
+ case mul_slot:
+ sn = "mul_slot";
+ break;
+
+ case repeat_slot:
+ sn = "repeat_slot";
+ break;
+
+ case div_slot:
+ sn = "div_slot";
+ break;
+
+ case mod_slot:
+ sn = "mod_slot";
+ break;
+
+ case and_slot:
+ sn = "and_slot";
+ break;
+
+ case or_slot:
+ sn = "or_slot";
+ break;
+
+ case xor_slot:
+ sn = "xor_slot";
+ break;
+
+ case lshift_slot:
+ sn = "lshift_slot";
+ break;
+
+ case rshift_slot:
+ sn = "rshift_slot";
+ break;
+
+ case iadd_slot:
+ sn = "iadd_slot";
+ break;
+
+ case iconcat_slot:
+ sn = "iconcat_slot";
+ break;
+
+ case isub_slot:
+ sn = "isub_slot";
+ break;
+
+ case imul_slot:
+ sn = "imul_slot";
+ break;
+
+ case irepeat_slot:
+ sn = "irepeat_slot";
+ break;
+
+ case idiv_slot:
+ sn = "idiv_slot";
+ break;
+
+ case imod_slot:
+ sn = "imod_slot";
+ break;
+
+ case iand_slot:
+ sn = "iand_slot";
+ break;
+
+ case ior_slot:
+ sn = "ior_slot";
+ break;
+
+ case ixor_slot:
+ sn = "ixor_slot";
+ break;
+
+ case ilshift_slot:
+ sn = "ilshift_slot";
+ break;
+
+ case irshift_slot:
+ sn = "irshift_slot";
+ break;
+
+ case invert_slot:
+ sn = "invert_slot";
+ break;
+
+ case call_slot:
+ sn = "call_slot";
+ break;
+
+ case getitem_slot:
+ sn = "getitem_slot";
+ break;
+
+ case setitem_slot:
+ sn = "setitem_slot";
+ break;
+
+ case delitem_slot:
+ sn = "delitem_slot";
+ break;
+
+ case lt_slot:
+ sn = "lt_slot";
+ break;
+
+ case le_slot:
+ sn = "le_slot";
+ break;
+
+ case eq_slot:
+ sn = "eq_slot";
+ break;
+
+ case ne_slot:
+ sn = "ne_slot";
+ break;
+
+ case gt_slot:
+ sn = "gt_slot";
+ break;
+
+ case ge_slot:
+ sn = "ge_slot";
+ break;
+
+ case cmp_slot:
+ sn = "cmp_slot";
+ break;
+
+ case nonzero_slot:
+ sn = "nonzero_slot";
+ break;
+
+ case neg_slot:
+ sn = "neg_slot";
+ break;
+
+ case pos_slot:
+ sn = "pos_slot";
+ break;
+
+ case abs_slot:
+ sn = "abs_slot";
+ break;
+
+ case repr_slot:
+ sn = "repr_slot";
+ break;
+
+ case hash_slot:
+ sn = "hash_slot";
+ break;
+
+ default:
+ sn = NULL;
+ }
+
+ return sn;
+}
+
+
+/*
+ * Generate the code to register a class as a Qt metatype.
+ */
+static void generateRegisterMetaType(classDef *cd, FILE *fp)
+{
+ int pub_def_ctor, pub_copy_ctor;
+ ctorDef *ct;
+
+ /*
+ * We register types with Qt if the class is not abstract, has a public
+ * default ctor, a public copy ctor, a public dtor and isn't one of the
+ * internally supported types.
+ */
+ if (isAbstractClass(cd))
+ return;
+
+ if (!isPublicDtor(cd))
+ return;
+
+ if (classFQCName(cd)->next == NULL)
+ {
+ if (strcmp(classBaseName(cd), "QChar") == 0)
+ return;
+
+ if (strcmp(classBaseName(cd), "QString") == 0)
+ return;
+
+ if (strcmp(classBaseName(cd), "QByteArray") == 0)
+ return;
+ }
+
+ pub_def_ctor = pub_copy_ctor = FALSE;
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ if (ct->cppsig == NULL || !isPublicCtor(ct))
+ continue;
+
+ if (ct->cppsig->nrArgs == 0)
+ pub_def_ctor = TRUE;
+ else if (ct->cppsig->nrArgs == 1)
+ {
+ argDef *ad = &ct->cppsig->args[0];
+
+ if (ad->atype == class_type && ad->u.cd == cd && isReference(ad) &&
+ isConstArg(ad) && ad->nrderefs == 0 && ad->defval == NULL)
+ pub_copy_ctor = TRUE;
+ }
+ }
+
+ if (pub_def_ctor && pub_copy_ctor)
+ prcode(fp,
+" qRegisterMetaType<%S>(\"%S\");\n"
+ , classFQCName(cd), classFQCName(cd));
+}
+
+
+/*
+ * Generate the initialisation function or cast operators for the type.
+ */
+static void generateTypeInit(sipSpec *pt, classDef *cd, FILE *fp)
+{
+ ctorDef *ct;
+ int need_self, need_owner;
+
+ /*
+ * See if we need to name the self and owner arguments so that we can
+ * avoid a compiler warning about an unused argument.
+ */
+ need_self = (generating_c || hasShadow(cd));
+ need_owner = generating_c;
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ int a;
+
+ if (usedInCode(ct->methodcode, "sipSelf"))
+ need_self = TRUE;
+
+ for (a = 0; a < ct->pysig.nrArgs; ++a)
+ if (isThisTransferred(&ct->pysig.args[a]))
+ {
+ need_owner = TRUE;
+ break;
+ }
+ }
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static void *init_%C(sipWrapper *, PyObject *, sipWrapper **, int *);}\n"
+ , classFQCName(cd));
+
+ prcode(fp,
+"static void *init_%C(sipWrapper *%s,PyObject *sipArgs,sipWrapper **%s,int *sipArgsParsed)\n"
+"{\n"
+ ,classFQCName(cd),(need_self ? "sipSelf" : ""),(need_owner ? "sipOwner" : ""));
+
+ if (hasShadow(cd))
+ prcode(fp,
+" sip%C *sipCpp = 0;\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" %U *sipCpp = 0;\n"
+ ,cd);
+
+ if (tracing)
+ prcode(fp,
+"\n"
+" sipTrace(SIP_TRACE_INITS,\"init_%C()\\n\");\n"
+ ,classFQCName(cd));
+
+ /*
+ * Generate the code that parses the Python arguments and calls the
+ * correct constructor.
+ */
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ int needSecCall, error_flag = FALSE;
+
+ if (isPrivateCtor(ct))
+ continue;
+
+ prcode(fp,
+"\n"
+" if (!sipCpp)\n"
+" {\n"
+ );
+
+ if (ct->methodcode != NULL && needErrorFlag(ct->methodcode))
+ {
+ prcode(fp,
+" int sipIsErr = 0;\n"
+ );
+
+ error_flag = TRUE;
+ }
+
+ needSecCall = generateArgParser(pt, &ct->pysig, cd, ct, NULL, FALSE, fp);
+ generateConstructorCall(cd,ct,error_flag,fp);
+
+ if (needSecCall)
+ {
+ prcode(fp,
+" }\n"
+"\n"
+" if (!sipCpp)\n"
+" {\n"
+ );
+
+ if (error_flag)
+ prcode(fp,
+" int sipIsErr = 0;\n"
+ );
+
+ generateArgParser(pt, &ct->pysig, cd, ct, NULL, TRUE, fp);
+ generateConstructorCall(cd,ct,error_flag,fp);
+ }
+
+ prcode(fp,
+" }\n"
+ );
+ }
+
+ if (hasShadow(cd))
+ prcode(fp,
+"\n"
+" if (sipCpp)\n"
+" sipCpp->sipPySelf = sipSelf;\n"
+ );
+
+ prcode(fp,
+"\n"
+" return sipCpp;\n"
+"}\n"
+ );
+}
+
+
+/*
+ * Count the number of virtual members in a class.
+ */
+static int countVirtuals(classDef *cd)
+{
+ int nrvirts;
+ virtOverDef *vod;
+
+ nrvirts = 0;
+
+ for (vod = cd->vmembers; vod != NULL; vod = vod->next)
+ if (!isPrivate(&vod->o))
+ ++nrvirts;
+
+ return nrvirts;
+}
+
+
+/*
+ * Generate the try block for a call.
+ */
+static void generateTry(throwArgs *ta,FILE *fp)
+{
+ /*
+ * Generate the block if there was no throw specifier, or a non-empty
+ * throw specifier.
+ */
+ if (exceptions && (ta == NULL || ta->nrArgs > 0))
+ prcode(fp,
+" try\n"
+" {\n"
+ );
+}
+
+
+/*
+ * Generate the catch block for a call.
+ */
+static void generateCatch(throwArgs *ta, signatureDef *sd, FILE *fp)
+{
+ /*
+ * Generate the block if there was no throw specifier, or a non-empty
+ * throw specifier.
+ */
+ if (exceptions && (ta == NULL || ta->nrArgs > 0))
+ {
+ prcode(fp,
+" }\n"
+ );
+
+ if (ta == NULL)
+ {
+ prcode(fp,
+" catch (...)\n"
+" {\n"
+ );
+
+ deleteTemps(sd, fp);
+
+ if (release_gil)
+ prcode(fp,
+" Py_BLOCK_THREADS\n"
+"\n"
+ );
+
+ prcode(fp,
+" sipRaiseUnknownException();\n"
+" return NULL;\n"
+" }\n"
+ );
+ }
+ else
+ {
+ int a;
+
+ for (a = 0; a < ta->nrArgs; ++a)
+ {
+ exceptionDef *xd = ta->args[a];
+ scopedNameDef *ename = xd->iff->fqcname;
+
+ prcode(fp,
+" catch (%S &%s)\n"
+" {\n"
+ ,ename,(xd->cd != NULL || usedInCode(xd->raisecode, "sipExceptionRef")) ? "sipExceptionRef" : "");
+
+ deleteTemps(sd, fp);
+
+ if (xd->cd != NULL)
+ {
+ /* The exception is a wrapped class. */
+
+ prcode(fp,
+" /* Hope that there is a valid copy ctor. */\n"
+" %S *sipExceptionCopy = new %S(sipExceptionRef);\n"
+"\n"
+ ,ename,ename);
+
+ if (release_gil)
+ prcode(fp,
+" Py_BLOCK_THREADS\n"
+"\n"
+ );
+
+ prcode(fp,
+" sipRaise%sClassException(sipClass_%C,sipExceptionCopy);\n"
+ ,(xd->cd->subbase != NULL ? "Sub" : ""),ename);
+ }
+ else
+ generateCppCodeBlock(xd->raisecode,fp);
+
+ prcode(fp,
+"\n"
+" return NULL;\n"
+" }\n"
+ );
+ }
+ }
+ }
+}
+
+
+/*
+ * Generate a throw specifier.
+ */
+static void generateThrowSpecifier(throwArgs *ta,FILE *fp)
+{
+ if (exceptions && ta != NULL)
+ {
+ int a;
+
+ prcode(fp," throw(");
+
+ for (a = 0; a < ta->nrArgs; ++a)
+ {
+ if (a > 0)
+ prcode(fp,",");
+
+ prcode(fp,"%S",ta->args[a]->iff->fqcname);
+ }
+
+ prcode(fp,")");
+ }
+}
+
+
+/*
+ * Generate a single constructor call.
+ */
+static void generateConstructorCall(classDef *cd,ctorDef *ct,int error_flag,
+ FILE *fp)
+{
+ prcode(fp,
+" {\n"
+ );
+
+ /* Call any pre-hook. */
+ if (ct->prehook != NULL)
+ prcode(fp,
+" sipCallHook(\"%s\");\n"
+"\n"
+ ,ct->prehook);
+
+ if (ct->methodcode != NULL)
+ generateCppCodeBlock(ct->methodcode,fp);
+ else if (generating_c)
+ prcode(fp,
+" sipCpp = sipMalloc(sizeof (%S));\n"
+ ,classFQCName(cd));
+ else
+ {
+ int rgil = ((release_gil || isReleaseGILCtor(ct)) && !isHoldGILCtor(ct));
+
+ if (rgil)
+ prcode(fp,
+" Py_BEGIN_ALLOW_THREADS\n"
+ );
+
+ generateTry(ct->exceptions,fp);
+
+ if (hasShadow(cd))
+ prcode(fp,
+" sipCpp = new sip%C(",classFQCName(cd));
+ else
+ prcode(fp,
+" sipCpp = new %U(",cd);
+
+ if (isCastCtor(ct))
+ {
+ classDef *ocd;
+
+ /* We have to fiddle the type to generate the correct code. */
+ ocd = ct->pysig.args[0].u.cd;
+ ct->pysig.args[0].u.cd = cd;
+ prcode(fp, "a0->operator %B()", &ct->pysig.args[0]);
+ ct->pysig.args[0].u.cd = ocd;
+ }
+ else
+ generateArgs(ct->cppsig, Call, fp);
+
+ prcode(fp,");\n"
+ );
+
+ generateCatch(ct->exceptions, &ct->pysig, fp);
+
+ if (rgil)
+ prcode(fp,
+" Py_END_ALLOW_THREADS\n"
+ );
+ }
+
+ gc_ellipsis(&ct->pysig, fp);
+
+ deleteTemps(&ct->pysig, fp);
+
+ if (error_flag)
+ prcode(fp,
+"\n"
+" if (sipIsErr)\n"
+" return 0;\n"
+ );
+
+ /* Call any post-hook. */
+ if (ct->posthook != NULL)
+ prcode(fp,
+"\n"
+" sipCallHook(\"%s\");\n"
+ ,ct->posthook);
+
+ prcode(fp,
+" }\n"
+ );
+}
+
+
+/*
+ * See if a member overload should be skipped.
+ */
+static int skipOverload(overDef *od,memberDef *md,classDef *cd,classDef *ccd,
+ int want_local)
+{
+ /* Skip if it's not the right name. */
+ if (od->common != md)
+ return TRUE;
+
+ /* Skip if it's a signal. */
+ if (isSignal(od))
+ return TRUE;
+
+ /* Skip if it's a private abstract. */
+ if (isAbstract(od) && isPrivate(od))
+ return TRUE;
+
+ /*
+ * If we are disallowing them, skip if it's not in the current class
+ * unless it is protected.
+ */
+ if (want_local && !isProtected(od) && ccd != cd)
+ return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Generate a class member function.
+ */
+static void generateFunction(sipSpec *pt,memberDef *md,overDef *overs,
+ classDef *cd,classDef *ocd,FILE *fp)
+{
+ overDef *od;
+ int need_method, need_self, need_args, need_selfarg;
+
+ /*
+ * Check that there is at least one overload that needs to be handled.
+ * See if we can avoid naming the "self" argument (and suppress a
+ * compiler warning). Finally see if we need to remember if "self" was
+ * explicitly passed as an argument.
+ */
+ need_method = need_self = need_args = need_selfarg = FALSE;
+
+ for (od = overs; od != NULL; od = od->next)
+ {
+ /*
+ * Skip protected methods if we don't have the means to handle
+ * them.
+ */
+ if (isProtected(od) && !hasShadow(cd))
+ continue;
+
+ if (!skipOverload(od,md,cd,ocd,TRUE))
+ {
+ need_method = TRUE;
+
+ if (!isPrivate(od))
+ {
+ need_args = TRUE;
+
+ if (!isStatic(od))
+ {
+ need_self = TRUE;
+
+ if (isAbstract(od) || isVirtual(od) || isVirtualReimp(od) || usedInCode(od->methodcode, "sipSelfWasArg"))
+ need_selfarg = TRUE;
+ }
+ }
+ }
+ }
+
+ if (need_method)
+ {
+ char *pname = md->pyname->text;
+
+ prcode(fp,
+"\n"
+"\n"
+ );
+
+ if (!generating_c)
+ prcode(fp,
+"extern \"C\" {static PyObject *meth_%C_%s(PyObject *, PyObject *);}\n"
+ , classFQCName(cd), pname);
+
+ prcode(fp,
+"static PyObject *meth_%C_%s(PyObject *%s,PyObject *%s)\n"
+"{\n"
+ ,classFQCName(cd),pname,(need_self ? "sipSelf" : ""),(need_args ? "sipArgs" : ""));
+
+ if (tracing)
+ prcode(fp,
+" sipTrace(SIP_TRACE_METHODS,\"meth_%C_%s()\\n\");\n"
+"\n"
+ ,classFQCName(cd),pname);
+
+ if (need_args)
+ prcode(fp,
+" int sipArgsParsed = 0;\n"
+ );
+
+ if (need_selfarg)
+ prcode(fp,
+" bool sipSelfWasArg = !sipSelf;\n"
+ );
+
+ for (od = overs; od != NULL; od = od->next)
+ {
+ /*
+ * If we are handling one variant then we must handle
+ * them all.
+ */
+ if (skipOverload(od,md,cd,ocd,FALSE))
+ continue;
+
+ if (isPrivate(od))
+ continue;
+
+ generateFunctionBody(pt,od,cd,ocd,TRUE,fp);
+ }
+
+ prcode(fp,
+"\n"
+" /* Raise an exception if the arguments couldn't be parsed. */\n"
+" sipNoMethod(%s,%N,%N);\n"
+"\n"
+" return NULL;\n"
+"}\n"
+ ,(need_args ? "sipArgsParsed" : "0"),cd->iff->name,md->pyname);
+ }
+}
+
+
+/*
+ * Generate the function calls for a particular overload.
+ */
+static void generateFunctionBody(sipSpec *pt,overDef *od,classDef *cd,
+ classDef *ocd,int deref,FILE *fp)
+{
+ int needSecCall;
+ signatureDef saved;
+
+ prcode(fp,
+"\n"
+" {\n"
+ );
+
+ /* In case we have to fiddle with it. */
+ saved = od->pysig;
+
+ if (isNumberSlot(od->common))
+ {
+ /*
+ * Number slots must have two arguments because we parse them
+ * slightly differently.
+ */
+ if (od->pysig.nrArgs == 1)
+ {
+ od->pysig.nrArgs = 2;
+ od->pysig.args[1] = od->pysig.args[0];
+
+ /* Insert self as the first argument. */
+ od->pysig.args[0].atype = class_type;
+ od->pysig.args[0].name = NULL;
+ od->pysig.args[0].argflags = ARG_IS_REF|ARG_IN;
+ od->pysig.args[0].nrderefs = 0;
+ od->pysig.args[0].defval = NULL;
+ od->pysig.args[0].u.cd = ocd;
+ }
+
+ generateArgParser(pt, &od->pysig, cd, NULL, od, FALSE, fp);
+ needSecCall = FALSE;
+ }
+ else if (isIntArgSlot(od->common) || isZeroArgSlot(od->common))
+ needSecCall = FALSE;
+ else
+ needSecCall = generateArgParser(pt, &od->pysig, cd, NULL, od, FALSE, fp);
+
+ generateFunctionCall(cd,ocd,od,deref,fp);
+
+ if (needSecCall)
+ {
+ prcode(fp,
+" }\n"
+"\n"
+" {\n"
+ );
+
+ generateArgParser(pt, &od->pysig, cd, NULL, od, TRUE, fp);
+ generateFunctionCall(cd,ocd,od,deref,fp);
+ }
+
+ prcode(fp,
+" }\n"
+ );
+
+ od->pysig = saved;
+}
+
+
+/*
+ * Generate the code to handle the result of a call to a member function.
+ */
+static void generateHandleResult(overDef *od,int isNew,char *prefix,FILE *fp)
+{
+ char *vname, vnamebuf[50];
+ int a, nrvals, only, has_owner;
+ argDef *res, *ad;
+
+ res = &od->pysig.result;
+
+ if (res->atype == void_type && res->nrderefs == 0)
+ res = NULL;
+
+ /* See if we are returning 0, 1 or more values. */
+ nrvals = 0;
+
+ if (res != NULL)
+ {
+ only = -1;
+ ++nrvals;
+ }
+
+ has_owner = FALSE;
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ if (isOutArg(&od->pysig.args[a]))
+ {
+ only = a;
+ ++nrvals;
+ }
+
+ if (isThisTransferred(&od->pysig.args[a]))
+ has_owner = TRUE;
+ }
+
+ /* Handle the trivial case. */
+ if (nrvals == 0)
+ {
+ prcode(fp,
+" Py_INCREF(Py_None);\n"
+" %s Py_None;\n"
+ ,prefix);
+
+ return;
+ }
+
+ /* Handle results that are classes or mapped types separately. */
+ if (res != NULL)
+ if (res->atype == mapped_type)
+ {
+ prcode(fp,
+" PyObject *sipResObj = sipConvertFromMappedType(");
+
+ if (isConstArg(res))
+ prcode(fp,"const_cast<%b *>(sipRes)",res);
+ else
+ prcode(fp,"sipRes");
+
+ prcode(fp,",sipMappedType_%T,%s);\n"
+ , res, isResultTransferredBack(od) ? "Py_None" : "NULL");
+
+ if (isNew)
+ prcode(fp,
+" delete sipRes;\n"
+ );
+
+ /* Shortcut if this is the only value returned. */
+ if (nrvals == 1)
+ {
+ prcode(fp,
+"\n"
+" %s sipResObj;\n"
+ ,prefix);
+
+ return;
+ }
+ }
+ else if (res->atype == class_type)
+ {
+ classDef *cd = res->u.cd;
+
+ if (isNew || isFactory(od))
+ {
+ prcode(fp,
+" %s sipConvertFromNewInstance(",(nrvals == 1 ? prefix : "PyObject *sipResObj ="));
+
+ if (isConstArg(res))
+ prcode(fp,"const_cast<%b *>(sipRes)",res);
+ else
+ prcode(fp,"sipRes");
+
+ prcode(fp,",sipClass_%C,%s);\n"
+ ,classFQCName(cd),((has_owner && isFactory(od)) ? "(PyObject *)sipOwner" : "NULL"));
+
+ /*
+ * Shortcut if this is the only value returned.
+ */
+ if (nrvals == 1)
+ return;
+ }
+ else
+ {
+ prcode(fp,
+" %s sipConvertFromInstance(",(nrvals == 1 ? prefix : "PyObject *sipResObj ="));
+
+ if (isConstArg(res))
+ prcode(fp,"const_cast<%b *>(sipRes)",res);
+ else
+ prcode(fp,"sipRes");
+
+ prcode(fp, ",sipClass_%C,%s);\n"
+ , classFQCName(cd), (isResultTransferredBack(od) ? "Py_None" : "NULL"));
+
+ /*
+ * Shortcut if this is the only value returned.
+ */
+ if (nrvals == 1)
+ return;
+ }
+ }
+
+ /* If there are multiple values then build a tuple. */
+ if (nrvals > 1)
+ {
+ prcode(fp,
+" %s sipBuildResult(0,\"(",prefix);
+
+ /* Build the format string. */
+ if (res != NULL)
+ prcode(fp,"%c",((res->atype == mapped_type || res->atype == class_type) ? 'R' : getBuildResultFormat(res)));
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ if (isOutArg(ad))
+ prcode(fp,"%c",getBuildResultFormat(ad));
+ }
+
+ prcode(fp,")\"");
+
+ /* Pass the values for conversion. */
+ if (res != NULL)
+ {
+ prcode(fp,",sipRes");
+
+ if (res->atype == mapped_type || res->atype == class_type)
+ prcode(fp,"Obj");
+ else if (res->atype == enum_type && res->u.ed->fqcname != NULL)
+ prcode(fp,",sipEnum_%C",res->u.ed->fqcname);
+ }
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ if (isOutArg(ad))
+ {
+ prcode(fp,",a%d",a);
+
+ if (ad->atype == mapped_type)
+ prcode(fp, ",sipMappedType_%T,%s", ad, (isTransferredBack(ad) ? "Py_None" : "NULL"));
+ else if (ad->atype == class_type)
+ prcode(fp, ",sipClass_%C,%s", classFQCName(ad->u.cd), (isTransferredBack(ad) ? "Py_None" : "NULL"));
+ else if (ad->atype == enum_type && ad->u.ed->fqcname != NULL)
+ prcode(fp,",sipEnum_%C",ad->u.ed->fqcname);
+ }
+ }
+
+ prcode(fp,");\n"
+ );
+
+ /* All done for multiple values. */
+ return;
+ }
+
+ /* Deal with the only returned value. */
+ if (only < 0)
+ {
+ ad = res;
+ vname = "sipRes";
+ }
+ else
+ {
+ ad = &od->pysig.args[only];
+
+ sprintf(vnamebuf,"a%d",only);
+ vname = vnamebuf;
+ }
+
+ switch (ad->atype)
+ {
+ case mapped_type:
+ prcode(fp,
+" %s sipConvertFromMappedType(", prefix);
+
+ if (isConstArg(ad))
+ prcode(fp,"const_cast<%b *>(%s)",ad,vname);
+ else
+ prcode(fp,"%s",vname);
+
+ prcode(fp,",sipMappedType_%T,%s);\n"
+ , ad, (isTransferredBack(ad) ? "Py_None" : "NULL"));
+
+ break;
+
+ case class_type:
+ {
+ classDef *cd = ad->u.cd;
+ int needNew = needNewInstance(ad);
+
+ if (needNew)
+ prcode(fp,
+" %s sipConvertFromNewInstance(", prefix);
+ else
+ prcode(fp,
+" %s sipConvertFromInstance(", prefix);
+
+ if (isConstArg(ad))
+ prcode(fp,"const_cast<%b *>(%s)",ad,vname);
+ else
+ prcode(fp,"%s",vname);
+
+ prcode(fp,",sipClass_%C,",classFQCName(cd));
+
+ if (needNew)
+ prcode(fp,"NULL");
+ else
+ prcode(fp,"%s\n"
+ , (isTransferredBack(ad) ? "Py_None" : "NULL"));
+
+ prcode(fp,");\n"
+ );
+ }
+
+ break;
+
+ case bool_type:
+ case cbool_type:
+ prcode(fp,
+" %s PyBool_FromLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ if (ad->nrderefs == 0)
+ prcode(fp,
+" %s PyString_FromStringAndSize(%s&%s,1);\n"
+ ,prefix,(ad->atype != string_type) ? "(char *)" : "",vname);
+ else
+ prcode(fp,
+" if (%s == NULL)\n"
+" {\n"
+" Py_INCREF(Py_None);\n"
+" return Py_None;\n"
+" }\n"
+"\n"
+" %s PyString_FromString(%s%s);\n"
+ ,vname
+ ,prefix,(ad->atype != string_type) ? "(char *)" : "",vname);
+
+ break;
+
+ case wstring_type:
+ if (ad->nrderefs == 0)
+ prcode(fp,
+" %s PyUnicode_FromWideChar(&%s,1);\n"
+ , prefix, vname);
+ else
+ prcode(fp,
+" if (%s == NULL)\n"
+" {\n"
+" Py_INCREF(Py_None);\n"
+" return Py_None;\n"
+" }\n"
+"\n"
+" %s PyUnicode_FromWideChar(%s,(SIP_SSIZE_T)wcslen(%s));\n"
+ , vname
+ , prefix, vname, vname);
+
+ break;
+
+ case enum_type:
+ if (ad->u.ed->fqcname != NULL)
+ {
+ prcode(fp,
+" %s sipConvertFromNamedEnum(%s,sipEnum_%C);\n"
+ ,prefix,vname,ad->u.ed->fqcname);
+
+ break;
+ }
+
+ /* Drop through. */
+
+ case short_type:
+ case int_type:
+ case cint_type:
+ prcode(fp,
+" %s PyInt_FromLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case long_type:
+ prcode(fp,
+" %s PyLong_FromLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case ushort_type:
+ case uint_type:
+ case ulong_type:
+ prcode(fp,
+" %s PyLong_FromUnsignedLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case longlong_type:
+ prcode(fp,
+" %s PyLong_FromLongLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case ulonglong_type:
+ prcode(fp,
+" %s PyLong_FromUnsignedLongLong(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case void_type:
+ prcode(fp,
+" %s sipConvertFromVoidPtr(", prefix);
+
+ if (isConstArg(ad))
+ prcode(fp, "const_cast<void *>(%s)", vname);
+ else
+ prcode(fp, "%s", vname);
+
+ prcode(fp, ");\n"
+ );
+
+ break;
+
+ case struct_type:
+ prcode(fp,
+" %s sipConvertFromVoidPtr(",prefix);
+
+ if (isConstArg(ad))
+ prcode(fp,"const_cast<%b *>(%s)",ad,vname);
+ else
+ prcode(fp,"%s",vname);
+
+ prcode(fp,");\n"
+ );
+
+ break;
+
+ case float_type:
+ case cfloat_type:
+ prcode(fp,
+" %s PyFloat_FromDouble((double)%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case double_type:
+ case cdouble_type:
+ prcode(fp,
+" %s PyFloat_FromDouble(%s);\n"
+ ,prefix,vname);
+
+ break;
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ prcode(fp,
+" %s %s;\n"
+ ,prefix,vname);
+
+ break;
+ }
+}
+
+
+/*
+ * Return the format character used by sipBuildResult() for a particular type.
+ */
+static char getBuildResultFormat(argDef *ad)
+{
+ switch (ad->atype)
+ {
+ case mapped_type:
+ return 'D';
+
+ case class_type:
+ if (needNewInstance(ad))
+ return 'B';
+
+ return 'C';
+
+ case bool_type:
+ case cbool_type:
+ return 'b';
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ return (ad->nrderefs > (isOutArg(ad) ? 1 : 0)) ? 's' : 'c';
+
+ case wstring_type:
+ return (ad->nrderefs > (isOutArg(ad) ? 1 : 0)) ? 'x' : 'w';
+
+ case enum_type:
+ return (ad->u.ed->fqcname != NULL) ? 'E' : 'e';
+
+ case short_type:
+ return 'h';
+
+ case ushort_type:
+ return 't';
+
+ case int_type:
+ case cint_type:
+ return 'i';
+
+ case uint_type:
+ return 'u';
+
+ case long_type:
+ return 'l';
+
+ case ulong_type:
+ return 'm';
+
+ case longlong_type:
+ return 'n';
+
+ case ulonglong_type:
+ return 'o';
+
+ case void_type:
+ case struct_type:
+ return 'V';
+
+ case float_type:
+ case cfloat_type:
+ return 'f';
+
+ case double_type:
+ case cdouble_type:
+ return 'd';
+
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ return 'R';
+ }
+
+ /* We should never get here. */
+ return ' ';
+}
+
+
+/*
+ * Generate a function call.
+ */
+static void generateFunctionCall(classDef *cd,classDef *ocd,overDef *od,
+ int deref, FILE *fp)
+{
+ int needsNew, error_flag = FALSE, newline, is_result, a, deltemps;
+ argDef *res = &od->pysig.result, orig_res;
+
+ prcode(fp,
+" {\n"
+ );
+
+ /*
+ * If there is no shadow class then protected methods can never be
+ * called.
+ */
+ if (isProtected(od) && !hasShadow(cd))
+ {
+ prcode(fp,
+" /* Never reached. */\n"
+" }\n"
+ );
+
+ return;
+ }
+
+ /* Save the full result type as we may want to fiddle with it. */
+ orig_res = *res;
+
+ /* See if we need to make a copy of the result on the heap. */
+ if ((res->atype == class_type || res->atype == mapped_type) &&
+ !isReference(res) &&
+ res->nrderefs == 0)
+ {
+ needsNew = TRUE;
+ resetIsConstArg(res);
+ }
+ else
+ needsNew = FALSE;
+
+ /* See if sipRes is needed. */
+ is_result = (!isInplaceNumberSlot(od->common) &&
+ !isInplaceSequenceSlot(od->common) &&
+ (res->atype != void_type || res->nrderefs != 0));
+
+ newline = FALSE;
+
+ if (is_result)
+ {
+ prcode(fp,
+" ");
+
+ generateNamedValueType(res,"sipRes",fp);
+
+ /*
+ * The typical %MethodCode usually causes a compiler warning,
+ * so we initialise the result in that case to try and suppress
+ * it.
+ */
+ if (od->methodcode != NULL)
+ {
+ prcode(fp," = ");
+
+ generateCastZero(res,fp);
+ }
+
+ prcode(fp,";\n"
+ );
+
+ newline = TRUE;
+ }
+
+ deltemps = TRUE;
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ /*
+ * If we have an In,Out argument that has conversion code then we delay
+ * the destruction of any temporary variables until after we have
+ * converted the outputs.
+ */
+ if (isInArg(ad) && isOutArg(ad) && hasConvertToCode(ad) && deltemps)
+ {
+ deltemps = FALSE;
+
+ prcode(fp,
+" PyObject *sipResult;\n"
+ );
+
+ newline = TRUE;
+ }
+
+ /*
+ * If we are returning a class via an output only reference or pointer
+ * then we need an instance on the heap.
+ */
+ if (needNewInstance(ad))
+ {
+ prcode(fp,
+" a%d = new %b();\n"
+ ,a,ad);
+
+ newline = TRUE;
+ }
+ }
+
+ if (od->methodcode != NULL)
+ {
+ /* See if the handwritten code seems to be using the error flag. */
+ if (needErrorFlag(od->methodcode))
+ {
+ prcode(fp,
+" int sipIsErr = 0;\n"
+ );
+
+ newline = TRUE;
+ error_flag = TRUE;
+ }
+ }
+
+ if (newline)
+ prcode(fp,
+"\n"
+ );
+
+ /* If it is abstract make sure that self was bound. */
+ if (isAbstract(od))
+ prcode(fp,
+" if (sipSelfWasArg)\n"
+" {\n"
+" sipAbstractMethod(%N,%N);\n"
+" return NULL;\n"
+" }\n"
+"\n"
+ , cd->iff->name, od->common->pyname);
+
+ /* Call any pre-hook. */
+ if (od->prehook != NULL)
+ prcode(fp,
+" sipCallHook(\"%s\");\n"
+"\n"
+ ,od->prehook);
+
+ if (od->methodcode != NULL)
+ generateCppCodeBlock(od->methodcode,fp);
+ else
+ {
+ int rgil = ((release_gil || isReleaseGIL(od)) && !isHoldGIL(od));
+
+ if (needsNew && generating_c)
+ {
+ prcode(fp,
+" if ((sipRes = (%b *)sipMalloc(sizeof (%b))) == NULL)\n"
+" {\n"
+ ,res,res);
+
+ gc_ellipsis(&od->pysig, fp);
+
+ prcode(fp,
+" return NULL;\n"
+" }\n"
+"\n"
+ );
+ }
+
+ if (rgil)
+ prcode(fp,
+" Py_BEGIN_ALLOW_THREADS\n"
+ );
+
+ generateTry(od->exceptions,fp);
+
+ prcode(fp,
+" ");
+
+ if (od->common->slot != cmp_slot && is_result)
+ {
+ /* Construct a copy on the heap if needed. */
+ if (needsNew)
+ {
+ if (generating_c)
+ prcode(fp,"*sipRes = ");
+ else
+ prcode(fp,"sipRes = new %b(",res);
+ }
+ else
+ prcode(fp,"sipRes = ");
+
+ /* See if we need the address of the result. */
+ if ((res->atype == class_type || res->atype == mapped_type) && isReference(res))
+ prcode(fp,"&");
+ }
+
+ switch (od->common->slot)
+ {
+ case no_slot:
+ generateCppFunctionCall(cd,ocd,od,fp);
+ break;
+
+ case getitem_slot:
+ prcode(fp, "(*sipCpp)[");
+ generateSlotArg(&od->pysig, 0, fp);
+ prcode(fp,"]");
+ break;
+
+ case call_slot:
+ prcode(fp, "(*sipCpp)(");
+ generateArgs(od->cppsig,Call,fp);
+ prcode(fp,")");
+ break;
+
+ case int_slot:
+ case long_slot:
+ case float_slot:
+ prcode(fp, "*sipCpp");
+ break;
+
+ case add_slot:
+ generateNumberSlotCall(od,"+",fp);
+ break;
+
+ case concat_slot:
+ generateBinarySlotCall(od,"+",deref,fp);
+ break;
+
+ case sub_slot:
+ generateNumberSlotCall(od,"-",fp);
+ break;
+
+ case mul_slot:
+ generateNumberSlotCall(od,"*",fp);
+ break;
+
+ case repeat_slot:
+ generateBinarySlotCall(od,"*",deref,fp);
+ break;
+
+ case div_slot:
+ generateNumberSlotCall(od,"/",fp);
+ break;
+
+ case mod_slot:
+ generateNumberSlotCall(od,"%",fp);
+ break;
+
+ case and_slot:
+ generateNumberSlotCall(od,"&",fp);
+ break;
+
+ case or_slot:
+ generateNumberSlotCall(od,"|",fp);
+ break;
+
+ case xor_slot:
+ generateNumberSlotCall(od,"^",fp);
+ break;
+
+ case lshift_slot:
+ generateNumberSlotCall(od,"<<",fp);
+ break;
+
+ case rshift_slot:
+ generateNumberSlotCall(od,">>",fp);
+ break;
+
+ case iadd_slot:
+ case iconcat_slot:
+ generateBinarySlotCall(od,"+=",deref,fp);
+ break;
+
+ case isub_slot:
+ generateBinarySlotCall(od,"-=",deref,fp);
+ break;
+
+ case imul_slot:
+ case irepeat_slot:
+ generateBinarySlotCall(od,"*=",deref,fp);
+ break;
+
+ case idiv_slot:
+ generateBinarySlotCall(od,"/=",deref,fp);
+ break;
+
+ case imod_slot:
+ generateBinarySlotCall(od,"%=",deref,fp);
+ break;
+
+ case iand_slot:
+ generateBinarySlotCall(od,"&=",deref,fp);
+ break;
+
+ case ior_slot:
+ generateBinarySlotCall(od,"|=",deref,fp);
+ break;
+
+ case ixor_slot:
+ generateBinarySlotCall(od,"^=",deref,fp);
+ break;
+
+ case ilshift_slot:
+ generateBinarySlotCall(od,"<<=",deref,fp);
+ break;
+
+ case irshift_slot:
+ generateBinarySlotCall(od,">>=",deref,fp);
+ break;
+
+ case invert_slot:
+ prcode(fp, "~(*sipCpp)");
+ break;
+
+ case lt_slot:
+ generateBinarySlotCall(od,"<",deref,fp);
+ break;
+
+ case le_slot:
+ generateBinarySlotCall(od,"<=",deref,fp);
+ break;
+
+ case eq_slot:
+ generateBinarySlotCall(od,"==",deref,fp);
+ break;
+
+ case ne_slot:
+ generateBinarySlotCall(od,"!=",deref,fp);
+ break;
+
+ case gt_slot:
+ generateBinarySlotCall(od,">",deref,fp);
+ break;
+
+ case ge_slot:
+ generateBinarySlotCall(od,">=",deref,fp);
+ break;
+
+ case neg_slot:
+ prcode(fp, "-(*sipCpp)");
+ break;
+
+ case pos_slot:
+ prcode(fp, "+(*sipCpp)");
+ break;
+
+ case cmp_slot:
+ prcode(fp,"if ");
+ generateBinarySlotCall(od,"<",deref,fp);
+ prcode(fp,"\n"
+" sipRes = -1;\n"
+" else if ");
+ generateBinarySlotCall(od,">",deref,fp);
+ prcode(fp,"\n"
+" sipRes = 1;\n"
+" else\n"
+" sipRes = 0");
+
+ break;
+ }
+
+ if (needsNew && !generating_c)
+ prcode(fp,")");
+
+ prcode(fp,";\n"
+ );
+
+ generateCatch(od->exceptions, &od->pysig, fp);
+
+ if (rgil)
+ prcode(fp,
+" Py_END_ALLOW_THREADS\n"
+ );
+ }
+
+ /* Handle /TransferThis/ for non-factory methods. */
+ if (!isFactory(od))
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ {
+ argDef *ad = &od->pysig.args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ if (isThisTransferred(ad))
+ {
+ prcode(fp,
+"\n"
+" if (sipOwner)\n"
+" sipTransferTo(sipSelf, (PyObject *)sipOwner);\n"
+" else\n"
+" sipTransferBack(sipSelf);\n"
+ );
+
+ break;
+ }
+ }
+
+ gc_ellipsis(&od->pysig, fp);
+
+ if (deltemps)
+ deleteTemps(&od->pysig, fp);
+
+ prcode(fp,
+"\n"
+ );
+
+ /* Handle sipIsErr if it was used. */
+ if (error_flag)
+ prcode(fp,
+" if (sipIsErr)\n"
+" return %s;\n"
+"\n"
+ ,((isVoidReturnSlot(od->common) || isIntReturnSlot(od->common) || isLongReturnSlot(od->common)) ? "-1" : "0"));
+
+ /* Call any post-hook. */
+ if (od->posthook != NULL)
+ prcode(fp,
+"\n"
+" sipCallHook(\"%s\");\n"
+ ,od->posthook);
+
+ if (isVoidReturnSlot(od->common))
+ prcode(fp,
+" return 0;\n"
+ );
+ else if (isInplaceNumberSlot(od->common) || isInplaceSequenceSlot(od->common))
+ prcode(fp,
+" Py_INCREF(sipSelf);\n"
+" return sipSelf;\n"
+ );
+ else if (isIntReturnSlot(od->common) || isLongReturnSlot(od->common))
+ prcode(fp,
+" return sipRes;\n"
+ );
+ else
+ {
+ generateHandleResult(od,needsNew,(deltemps ? "return" : "sipResult ="),fp);
+
+ /* Delete the temporaries now if we haven't already done so. */
+ if (!deltemps)
+ {
+ deleteTemps(&od->pysig, fp);
+
+ prcode(fp,
+"\n"
+" return sipResult;\n"
+ );
+ }
+ }
+
+ prcode(fp,
+" }\n"
+ );
+
+ /* Restore the full type of the result. */
+ *res = orig_res;
+}
+
+
+/*
+ * Generate a call to a C++ function.
+ */
+static void generateCppFunctionCall(classDef *cd,classDef *ocd,overDef *od,
+ FILE *fp)
+{
+ char *mname = od->cppname;
+ int parens = 1;
+
+ /*
+ * If the function is protected then call the public wrapper. If it is
+ * virtual then call explicit scoped function if "self" was passed as
+ * the first argument.
+ */
+
+ if (cd == NULL)
+ prcode(fp,"%s(",mname);
+ else if (cd->iff->type == namespace_iface)
+ prcode(fp,"%S::%s(",classFQCName(cd),mname);
+ else if (isStatic(od))
+ {
+ if (isProtected(od))
+ prcode(fp,"sip%C::sipProtect_%s(",classFQCName(cd),mname);
+ else
+ prcode(fp,"%S::%s(",classFQCName(ocd),mname);
+ }
+ else if (isProtected(od))
+ {
+ if (!isAbstract(od) && (isVirtual(od) || isVirtualReimp(od)))
+ {
+ prcode(fp, "sipCpp->sipProtectVirt_%s(sipSelfWasArg", mname);
+
+ if (od->cppsig->nrArgs > 0)
+ prcode(fp, ",");
+ }
+ else
+ prcode(fp, "sipCpp->sipProtect_%s(", mname);
+ }
+ else if (!isAbstract(od) && (isVirtual(od) || isVirtualReimp(od)))
+ {
+ prcode(fp, "(sipSelfWasArg ? sipCpp->%U::%s(", ocd, mname);
+ generateArgs(od->cppsig, Call, fp);
+ prcode(fp, ") : sipCpp->%s(", mname);
+ ++parens;
+ }
+ else
+ prcode(fp, "sipCpp->%s(", mname);
+
+ generateArgs(od->cppsig, Call, fp);
+
+ while (parens--)
+ prcode(fp, ")");
+}
+
+
+/*
+ * Generate argument to a slot.
+ */
+static void generateSlotArg(signatureDef *sd, int argnr, FILE *fp)
+{
+ argDef *ad;
+ int deref;
+
+ ad = &sd->args[argnr];
+ deref = ((ad->atype == class_type || ad->atype == mapped_type) && ad->nrderefs == 0);
+
+ prcode(fp, "%sa%d", (deref ? "*" : ""), argnr);
+}
+
+
+/*
+ * Generate the call to a binary (non-number) slot method.
+ */
+static void generateBinarySlotCall(overDef *od, char *op, int deref, FILE *fp)
+{
+ if (deref)
+ prcode(fp, "((*sipCpp) %s ", op);
+ else
+ prcode(fp, "(sipCpp %s ", op);
+
+ generateSlotArg(&od->pysig, 0, fp);
+ prcode(fp, ")");
+}
+
+
+/*
+ * Generate the call to a binary number slot method.
+ */
+static void generateNumberSlotCall(overDef *od, char *op, FILE *fp)
+{
+ prcode(fp, "(");
+ generateSlotArg(&od->pysig, 0, fp);
+ prcode(fp, " %s ", op);
+ generateSlotArg(&od->pysig, 1, fp);
+ prcode(fp, ")");
+}
+
+
+/*
+ * Generate the argument variables for a member function/constructor/operator.
+ */
+static int generateArgParser(sipSpec *pt, signatureDef *sd, classDef *cd,
+ ctorDef *ct, overDef *od, int secCall, FILE *fp)
+{
+ int a, isQtSlot, optargs, arraylenarg, sigarg, handle_self;
+ int slotconarg, slotdisarg, need_owner;
+
+ /* If the class is just a namespace, then ignore it. */
+
+ if (cd != NULL && cd->iff->type == namespace_iface)
+ cd = NULL;
+
+ handle_self = (od != NULL && od->common->slot == no_slot && !isStatic(od) && cd != NULL);
+
+ /* Assume there isn't a Qt slot. */
+
+ isQtSlot = FALSE;
+
+ /*
+ * Generate the local variables that will hold the parsed arguments and
+ * values returned via arguments.
+ */
+
+ sigarg = -1;
+ need_owner = FALSE;
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ argDef *ad = &sd->args[a];
+
+ switch (ad->atype)
+ {
+ case signal_type:
+ sigarg = a;
+ break;
+
+ case rxcon_type:
+ case rxdis_type:
+ isQtSlot = TRUE;
+ break;
+
+ case slotcon_type:
+ slotconarg = a;
+ break;
+
+ case slotdis_type:
+ slotdisarg = a;
+ break;
+ }
+
+ if (isArraySize(ad))
+ arraylenarg = a;
+
+ generateVariable(ad,a,fp);
+
+ if (isThisTransferred(ad))
+ need_owner = TRUE;
+ }
+
+ if (od != NULL && need_owner)
+ prcode(fp,
+" sipWrapper *sipOwner = 0;\n"
+ );
+
+ if (handle_self)
+ {
+ if (isProtected(od) && hasShadow(cd))
+ prcode(fp,
+" sip%C *sipCpp;\n"
+ ,classFQCName(cd));
+ else
+ prcode(fp,
+" %U *sipCpp;\n"
+ ,cd);
+
+ prcode(fp,
+"\n"
+ );
+ }
+ else if (sd->nrArgs != 0)
+ prcode(fp,
+"\n"
+ );
+
+ /* Generate the call to the parser function. */
+ if (od != NULL && isNumberSlot(od->common))
+ prcode(fp,
+" if (sipParsePair(%ssipArgsParsed,sipArg0,sipArg1,\"", (ct != NULL ? "" : "&"));
+ else
+ prcode(fp,
+" if (sipParseArgs(%ssipArgsParsed,sipArg%s,\"", (ct != NULL ? "" : "&"), (od == NULL || od->common->slot == no_slot || isMultiArgSlot(od->common)) ? "s" : "");
+
+ /* Generate the format string. */
+ optargs = FALSE;
+
+ if (handle_self)
+ prcode(fp,"%c",(isProtected(od) ? 'p' : 'B'));
+ else if (isQtSlot && od == NULL)
+ prcode(fp,"C");
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ char *fmt = "";
+ argDef *ad = &sd->args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ if (ad->defval != NULL && !optargs)
+ {
+ prcode(fp,"|");
+ optargs = TRUE;
+ }
+
+ switch (ad->atype)
+ {
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
+ fmt = "c";
+ else if (isArray(ad))
+ fmt = "a";
+ else
+ fmt = "s";
+
+ break;
+
+ case wstring_type:
+ if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
+ fmt = "w";
+ else if (isArray(ad))
+ fmt = "A";
+ else
+ fmt = "x";
+
+ break;
+
+ case enum_type:
+ fmt = (ad->u.ed->fqcname != NULL) ? "E" : "e";
+ break;
+
+ case bool_type:
+ fmt = "b";
+ break;
+
+ case cbool_type:
+ fmt = "Xb";
+ break;
+
+ case int_type:
+ if (!isArraySize(ad))
+ fmt = "i";
+
+ break;
+
+ case uint_type:
+ if (!isArraySize(ad))
+ fmt = "u";
+
+ break;
+
+ case cint_type:
+ fmt = "Xi";
+ break;
+
+ case short_type:
+ if (!isArraySize(ad))
+ fmt = "h";
+
+ break;
+
+ case ushort_type:
+ if (!isArraySize(ad))
+ fmt = "t";
+
+ break;
+
+ case long_type:
+ if (!isArraySize(ad))
+ fmt = "l";
+
+ break;
+
+ case ulong_type:
+ if (!isArraySize(ad))
+ fmt = "m";
+
+ break;
+
+ case longlong_type:
+ if (!isArraySize(ad))
+ fmt = "n";
+
+ break;
+
+ case ulonglong_type:
+ if (!isArraySize(ad))
+ fmt = "o";
+
+ break;
+
+ case struct_type:
+ case void_type:
+ fmt = "v";
+ break;
+
+ case float_type:
+ fmt = "f";
+ break;
+
+ case cfloat_type:
+ fmt = "Xf";
+ break;
+
+ case double_type:
+ fmt = "d";
+ break;
+
+ case cdouble_type:
+ fmt = "Xd";
+ break;
+
+ case signal_type:
+ fmt = "G";
+ break;
+
+ case slot_type:
+ fmt = "S";
+ break;
+
+ case anyslot_type:
+ fmt = "U";
+ break;
+
+ case slotcon_type:
+ case slotdis_type:
+ fmt = (secCall ? "" : "S");
+ break;
+
+ case rxcon_type:
+ fmt = (secCall ? "y" : "q");
+ break;
+
+ case rxdis_type:
+ fmt = (secCall ? "Y" : "Q");
+ break;
+
+ case mapped_type:
+ fmt = getSubFormatChar('M',ad);
+ break;
+
+ case class_type:
+ fmt = getSubFormatChar('J', ad);
+ break;
+
+ case pyobject_type:
+ fmt = getSubFormatChar('P',ad);
+ break;
+
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pyslice_type:
+ case pytype_type:
+ fmt = (isAllowNone(ad) ? "N" : "T");
+ break;
+
+ case pycallable_type:
+ fmt = (isAllowNone(ad) ? "H" : "F");
+ break;
+
+ case qobject_type:
+ fmt = "R";
+ break;
+
+ case ellipsis_type:
+ fmt = "W";
+ break;
+ }
+
+ prcode(fp,fmt);
+ }
+
+ prcode(fp,"\"");
+
+ /* Generate the parameters corresponding to the format string. */
+
+ if (handle_self)
+ prcode(fp,",&sipSelf,sipClass_%C,&sipCpp",classFQCName(cd));
+ else if (isQtSlot && od == NULL)
+ prcode(fp,",sipSelf");
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ argDef *ad = &sd->args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ switch (ad->atype)
+ {
+ case mapped_type:
+ prcode(fp,",sipMappedType_%T,&a%d,&a%dState",ad,a,a);
+ break;
+
+ case class_type:
+ prcode(fp, ",sipClass_%T,&a%d", ad, a);
+
+ if (isThisTransferred(ad))
+ prcode(fp, ",%ssipOwner", (ct != NULL ? "" : "&"));
+ else if (isGetWrapper(ad))
+ prcode(fp, ",&a%dWrapper", a);
+
+ if (ad->u.cd->convtocode != NULL && !isConstrained(ad))
+ prcode(fp, ",&a%dState", a);
+
+ break;
+
+ case rxcon_type:
+ {
+ if (sigarg > 0)
+ prcode(fp,",a%d",sigarg);
+ else
+ {
+ prcode(fp,",\"(");
+
+ generateArgs(sd->args[slotconarg].u.sa,Declaration,fp);
+
+ prcode(fp,")\"");
+ }
+
+ prcode(fp,",&a%d,&a%d",a,slotconarg);
+
+ break;
+ }
+
+ case rxdis_type:
+ {
+ prcode(fp,",\"(");
+
+ generateArgs(sd->args[slotdisarg].u.sa,Declaration,fp);
+
+ prcode(fp,")\",&a%d,&a%d",a,slotdisarg);
+
+ break;
+ }
+
+ case slotcon_type:
+ case slotdis_type:
+ if (!secCall)
+ prcode(fp,",&a%d",a);
+
+ break;
+
+ case anyslot_type:
+ prcode(fp, ",&a%dName,&a%dCallable", a, a);
+ break;
+
+ case pytuple_type:
+ prcode(fp,",&PyTuple_Type,&a%d",a);
+ break;
+
+ case pylist_type:
+ prcode(fp,",&PyList_Type,&a%d",a);
+ break;
+
+ case pydict_type:
+ prcode(fp,",&PyDict_Type,&a%d",a);
+ break;
+
+ case pyslice_type:
+ prcode(fp,",&PySlice_Type,&a%d",a);
+ break;
+
+ case pytype_type:
+ prcode(fp,",&PyType_Type,&a%d",a);
+ break;
+
+ case enum_type:
+ if (ad->u.ed->fqcname != NULL)
+ prcode(fp,",sipEnum_%C",ad->u.ed->fqcname);
+
+ prcode(fp,",&a%d",a);
+ break;
+
+ default:
+ if (!isArraySize(ad))
+ prcode(fp,",&a%d",a);
+
+ if (isArray(ad))
+ prcode(fp,",&a%d",arraylenarg);
+ }
+ }
+
+ prcode(fp,"))\n");
+
+ return isQtSlot;
+}
+
+
+/*
+ * Get the format character string for something that has sub-formats.
+ */
+
+static char *getSubFormatChar(char fc,argDef *ad)
+{
+ static char fmt[3];
+ char flags;
+
+ fmt[0] = fc;
+
+ flags = 0;
+
+ if (fc != 'P' && ad->nrderefs == 0)
+ flags |= 0x01;
+
+ if (isTransferred(ad))
+ flags |= 0x02;
+
+ if (isTransferredBack(ad))
+ flags |= 0x04;
+
+ if (fc == 'J')
+ {
+ if (isThisTransferred(ad))
+ flags |= 0x20;
+
+ if (isGetWrapper(ad))
+ flags |= 0x08;
+
+ if (ad->u.cd->convtocode == NULL || isConstrained(ad))
+ flags |= 0x10;
+ }
+
+ fmt[1] = '0' + flags;
+
+ fmt[2] = '\0';
+
+ return fmt;
+}
+
+
+/*
+ * Return TRUE if a type has %ConvertToTypeCode.
+ */
+static int hasConvertToCode(argDef *ad)
+{
+ codeBlock *convtocode;
+
+ if (ad->atype == class_type && !isConstrained(ad))
+ convtocode = ad->u.cd->convtocode;
+ else if (ad->atype == mapped_type)
+ convtocode = ad->u.mtd->convtocode;
+ else
+ convtocode = NULL;
+
+ return (convtocode != NULL);
+}
+
+
+/*
+ * Garbage collect any ellipsis argument.
+ */
+static void gc_ellipsis(signatureDef *sd, FILE *fp)
+{
+ if (sd->nrArgs > 0 && sd->args[sd->nrArgs - 1].atype == ellipsis_type)
+ prcode(fp,
+"\n"
+" Py_DECREF(a%d);\n"
+ , sd->nrArgs - 1);
+}
+
+
+/*
+ * Delete any temporary variables on the heap created by type convertors.
+ */
+static void deleteTemps(signatureDef *sd, FILE *fp)
+{
+ int a, first = TRUE;
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ argDef *ad = &sd->args[a];
+
+ if (!isInArg(ad))
+ continue;
+
+ if (ad->atype == wstring_type && ad->nrderefs == 1)
+ {
+ if (generating_c || !isConstArg(ad))
+ prcode(fp,
+" sipFree(a%d);\n"
+ , a);
+ else
+ prcode(fp,
+" sipFree(const_cast<wchar_t *>(a%d));\n"
+ , a);
+ }
+ else if (hasConvertToCode(ad))
+ {
+ const char *fstr, *sstr;
+
+ if (ad->atype == mapped_type)
+ fstr = sstr = "MappedType";
+ else
+ {
+ fstr = "Instance";
+ sstr = "Class";
+ }
+
+ if (first)
+ {
+ prcode(fp,
+"\n"
+ );
+
+ first = FALSE;
+ }
+
+ if (generating_c || !isConstArg(ad))
+ prcode(fp,
+" sipRelease%s(a%d,sip%s_%T,a%dState);\n"
+ , fstr, a, sstr, ad, a);
+ else
+ prcode(fp,
+" sipRelease%s(const_cast<%b *>(a%d),sip%s_%T,a%dState);\n"
+ , fstr, ad, a, sstr, ad, a);
+ }
+ }
+}
+
+
+/*
+ * Generate a C++ code block.
+ */
+static void generateCppCodeBlock(codeBlock *code,FILE *fp)
+{
+ int reset_line = FALSE;
+ codeBlock *cb;
+
+ for (cb = code; cb != NULL; cb = cb->next)
+ {
+ char *cp;
+
+ /*
+ * Fragmented fragments (possibly created when applying
+ * template types) don't have a filename.
+ */
+ if ((cp = cb->filename) != NULL)
+ {
+ reset_line = TRUE;
+
+ prcode(fp,
+"#line %d \"", cb->linenr);
+
+ while (*cp != '\0')
+ {
+ prcode(fp, "%c", *cp);
+
+ if (*cp == '\\')
+ prcode(fp, "\\");
+
+ ++cp;
+ }
+
+ prcode(fp, "\"\n"
+ );
+ }
+
+ prcode(fp, "%s", cb->frag);
+ }
+
+ if (reset_line)
+ {
+ char *bn;
+
+ /* Just use the base name. */
+
+ if ((bn = strrchr(currentFileName,'/')) != NULL)
+ ++bn;
+ else
+ bn = currentFileName;
+
+ prcode(fp,
+"#line %d \"%s\"\n"
+ ,currentLineNr + 1,bn);
+ }
+}
+
+
+/*
+ * Create a source file.
+ */
+static FILE *createCompilationUnit(sipSpec *pt, char *fname, char *description)
+{
+ FILE *fp = createFile(pt, fname, description);
+
+ if (fp != NULL)
+ generateCppCodeBlock(pt->unitcode, fp);
+
+ return fp;
+}
+
+
+/*
+ * Create a file with an optional standard header.
+ */
+static FILE *createFile(sipSpec *pt,char *fname,char *description)
+{
+ FILE *fp;
+
+ /* Create the file. */
+
+ if ((fp = fopen(fname,"w")) == NULL)
+ fatal("Unable to create file \"%s\"\n",fname);
+
+ /* The "stack" doesn't have to be very deep. */
+ previousLineNr = currentLineNr;
+ currentLineNr = 1;
+ previousFileName = currentFileName;
+ currentFileName = fname;
+
+ if (description != NULL)
+ {
+ int needComment;
+ codeBlock *cb;
+ time_t now;
+
+ /* Write the header. */
+ now = time(NULL);
+
+ prcode(fp,
+"/*\n"
+" * %s\n"
+" *\n"
+" * Generated by SIP %s on %s"
+ ,description
+ ,sipVersion,ctime(&now));
+
+ if (pt->copying != NULL)
+ prcode(fp,
+" *\n"
+ );
+
+ needComment = TRUE;
+
+ for (cb = pt->copying; cb != NULL; cb = cb->next)
+ {
+ char *cp;
+
+ for (cp = cb->frag; *cp != '\0'; ++cp)
+ {
+ if (needComment)
+ {
+ needComment = FALSE;
+ prcode(fp," * ");
+ }
+
+ prcode(fp,"%c",*cp);
+
+ if (*cp == '\n')
+ needComment = TRUE;
+ }
+ }
+
+ prcode(fp,
+" */\n"
+ );
+ }
+
+ return fp;
+}
+
+
+/*
+ * Close a file and report any errors.
+ */
+static void closeFile(FILE *fp)
+{
+ if (ferror(fp))
+ fatal("Error writing to \"%s\"\n",currentFileName);
+
+ if (fclose(fp))
+ fatal("Error closing \"%s\"\n",currentFileName);
+
+ currentLineNr = previousLineNr;
+ currentFileName = previousFileName;
+}
+
+
+/*
+ * Print formatted code.
+ */
+void prcode(FILE *fp, const char *fmt, ...)
+{
+ char ch;
+ va_list ap;
+
+ prcode_last = fmt;
+
+ va_start(ap,fmt);
+
+ while ((ch = *fmt++) != '\0')
+ if (ch == '%')
+ {
+ ch = *fmt++;
+
+ switch (ch)
+ {
+ case 'c':
+ {
+ char c = (char)va_arg(ap,int);
+
+ if (c == '\n')
+ ++currentLineNr;
+
+ fputc(c,fp);
+ break;
+ }
+
+ case 's':
+ {
+ const char *cp = va_arg(ap,const char *);
+
+ while (*cp != '\0')
+ {
+ if (*cp == '\n')
+ ++currentLineNr;
+
+ fputc(*cp,fp);
+ ++cp;
+ }
+
+ break;
+ }
+
+ case 'l':
+ fprintf(fp,"%ld",va_arg(ap,long));
+ break;
+
+ case 'u':
+ fprintf(fp,"%u",va_arg(ap,unsigned));
+ break;
+
+ case 'd':
+ fprintf(fp,"%d",va_arg(ap,int));
+ break;
+
+ case 'g':
+ fprintf(fp,"%g",va_arg(ap,double));
+ break;
+
+ case 'x':
+ fprintf(fp,"0x%08x",va_arg(ap,unsigned));
+ break;
+
+ case '\0':
+ fputc('%',fp);
+ --fmt;
+ break;
+
+ case '\n':
+ fputc('\n',fp);
+ ++currentLineNr;
+ break;
+
+ case 'b':
+ {
+ argDef *ad, orig;
+
+ ad = va_arg(ap,argDef *);
+ orig = *ad;
+
+ resetIsConstArg(ad);
+ resetIsReference(ad);
+ ad->nrderefs = 0;
+
+ generateBaseType(ad,fp);
+
+ *ad = orig;
+
+ break;
+ }
+
+ case 'M':
+ prcode_xml = !prcode_xml;
+ break;
+
+ case 'B':
+ generateBaseType(va_arg(ap,argDef *),fp);
+ break;
+
+ case 'T':
+ prTypeName(fp,va_arg(ap,argDef *),FALSE);
+ break;
+
+ case 'I':
+ {
+ int indent = va_arg(ap,int);
+
+ while (indent-- > 0)
+ fputc('\t',fp);
+
+ break;
+ }
+
+ case 'N':
+ {
+ nameDef *nd = va_arg(ap,nameDef *);
+
+ fprintf(fp,"sipNm_%s_%s",nd->module->name,nd->text);
+ break;
+ }
+
+ case 'E':
+ {
+ enumDef *ed = va_arg(ap,enumDef *);
+
+ if (ed->fqcname == NULL)
+ fprintf(fp,"int");
+ else if (isProtectedEnum(ed))
+ {
+ fprintf(fp,"sip");
+ prScopedName(fp,classFQCName(ed->pcd),"_");
+
+ fprintf(fp,"::sip%s",scopedNameTail(ed->fqcname));
+ }
+ else
+ prScopedName(fp,ed->fqcname,"::");
+
+ break;
+ }
+
+ case 'F':
+ prScopedName(fp,va_arg(ap,scopedNameDef *),"");
+ break;
+
+ case 'C':
+ prScopedName(fp,va_arg(ap,scopedNameDef *),"_");
+ break;
+
+ case 'S':
+ if (generating_c)
+ fprintf(fp,"struct ");
+
+ prScopedName(fp,va_arg(ap,scopedNameDef *),"::");
+ break;
+
+ case 'U':
+ if (generating_c)
+ fprintf(fp,"struct ");
+
+ prScopedClassName(fp,va_arg(ap,classDef *),"::");
+ break;
+
+ case 'O':
+ prOverloadName(fp, va_arg(ap, overDef *));
+ break;
+
+ case 'P':
+ {
+ classDef *ecd = va_arg(ap, classDef *);
+ const char *pyname = va_arg(ap, const char *);
+
+ prScopedPythonName(fp, ecd, pyname);
+ break;
+ }
+
+ case 'X':
+ generateThrowSpecifier(va_arg(ap,throwArgs *),fp);
+ break;
+
+ default:
+ fputc(ch,fp);
+ }
+ }
+ else if (ch == '\n')
+ {
+ fputc('\n',fp);
+ ++currentLineNr;
+ }
+ else
+ fputc(ch,fp);
+
+ va_end(ap);
+}
+
+
+/*
+ * Generate the C++ name of an overloaded function.
+ */
+void prOverloadName(FILE *fp, overDef *od)
+{
+ char *pt1, *pt2;
+
+ pt1 = "operator";
+
+ switch (od->common->slot)
+ {
+ case add_slot:
+ pt2 = "+";
+ break;
+
+ case sub_slot:
+ pt2 = "-";
+ break;
+
+ case mul_slot:
+ pt2 = "*";
+ break;
+
+ case div_slot:
+ pt2 = "/";
+ break;
+
+ case mod_slot:
+ pt2 = "%";
+ break;
+
+ case and_slot:
+ pt2 = "&";
+ break;
+
+ case or_slot:
+ pt2 = "|";
+ break;
+
+ case xor_slot:
+ pt2 = "^";
+ break;
+
+ case lshift_slot:
+ pt2 = "<<";
+ break;
+
+ case rshift_slot:
+ pt2 = ">>";
+ break;
+
+ case iadd_slot:
+ pt2 = "+=";
+ break;
+
+ case isub_slot:
+ pt2 = "-=";
+ break;
+
+ case imul_slot:
+ pt2 = "*=";
+ break;
+
+ case idiv_slot:
+ pt2 = "/=";
+ break;
+
+ case imod_slot:
+ pt2 = "%=";
+ break;
+
+ case iand_slot:
+ pt2 = "&=";
+ break;
+
+ case ior_slot:
+ pt2 = "|=";
+ break;
+
+ case ixor_slot:
+ pt2 = "^=";
+ break;
+
+ case ilshift_slot:
+ pt2 = "<<=";
+ break;
+
+ case irshift_slot:
+ pt2 = ">>=";
+ break;
+
+ case invert_slot:
+ pt2 = "~";
+ break;
+
+ case call_slot:
+ pt2 = "()";
+ break;
+
+ case getitem_slot:
+ pt2 = "[]";
+ break;
+
+ case lt_slot:
+ pt2 = "<";
+ break;
+
+ case le_slot:
+ pt2 = "<=";
+ break;
+
+ case eq_slot:
+ pt2 = "==";
+ break;
+
+ case ne_slot:
+ pt2 = "!=";
+ break;
+
+ case gt_slot:
+ pt2 = ">";
+ break;
+
+ case ge_slot:
+ pt2 = ">=";
+ break;
+
+ default:
+ pt1 = "";
+ pt2 = od->cppname;
+ }
+
+ fprintf(fp, "%s%s", pt1, pt2);
+}
+
+
+/*
+ * Generate a scoped name with the given separator string.
+ */
+static void prScopedName(FILE *fp,scopedNameDef *snd,char *sep)
+{
+ while (snd != NULL)
+ {
+ fprintf(fp,"%s",snd->name);
+
+ if ((snd = snd->next) != NULL)
+ fprintf(fp,"%s",sep);
+ }
+}
+
+
+/*
+ * Generate a scoped class name with the given separator string. At the moment
+ * this provides (probably) broken support for protected classes.
+ */
+static void prScopedClassName(FILE *fp,classDef *cd,char *sep)
+{
+ scopedNameDef *snd = classFQCName(cd);
+
+ while (snd != NULL)
+ {
+ if (isProtectedClass(cd))
+ fprintf(fp,"sip");
+
+ fprintf(fp,"%s",snd->name);
+
+ if ((snd = snd->next) != NULL)
+ fprintf(fp,"%s",sep);
+ }
+}
+
+
+/*
+ * Generate a scoped Python name.
+ */
+void prScopedPythonName(FILE *fp, classDef *scope, const char *pyname)
+{
+ if (scope != NULL)
+ {
+ prScopedPythonName(fp, scope->ecd, NULL);
+ fprintf(fp, "%s.", scope->pyname);
+ }
+
+ if (pyname != NULL)
+ fprintf(fp, "%s", pyname);
+}
+
+
+/*
+ * Generate a type name to be used as part of an identifier name.
+ */
+static void prTypeName(FILE *fp,argDef *ad,int intmpl)
+{
+ if (intmpl)
+ {
+ char buf[10];
+ int flgs;
+
+ /* We use numbers so they don't conflict with names. */
+
+ sprintf(buf,"%02d",ad->atype);
+
+ flgs = 0;
+
+ if (isConstArg(ad))
+ flgs += 1;
+
+ if (isReference(ad))
+ flgs += 2;
+
+ prcode(fp,"%s%d%d",buf,flgs,ad->nrderefs);
+ }
+
+ /* Now add a name if there is one associated with the type. */
+
+ switch (ad->atype)
+ {
+ case struct_type:
+ prcode(fp,"%C",ad->u.sname);
+ break;
+
+ case defined_type:
+ prcode(fp,"%C",ad->u.snd);
+ break;
+
+ case enum_type:
+ prcode(fp,"%C",ad->u.ed->fqcname);
+ break;
+
+ case mapped_type:
+ prTypeName(fp,&ad->u.mtd->type,intmpl);
+ break;
+
+ case class_type:
+ prcode(fp,"%C",classFQCName(ad->u.cd));
+ break;
+
+ case template_type:
+ {
+ int a;
+ templateDef *td = ad->u.td;
+
+ prcode(fp,"%C",td->fqname);
+
+ for (a = 0; a < td->types.nrArgs; ++a)
+ {
+ prcode(fp,"_");
+ prTypeName(fp,&td->types.args[a],TRUE);
+ }
+
+ break;
+ }
+ }
+}
+
+
+/*
+ * Return TRUE if handwritten code uses the error flag.
+ */
+static int needErrorFlag(codeBlock *cb)
+{
+ return usedInCode(cb, "sipIsErr");
+}
+
+
+/*
+ * Return TRUE if the argument type means an instance needs to be created on
+ * the heap to pass back to Python.
+ */
+static int needNewInstance(argDef *ad)
+{
+ return ((ad->atype == mapped_type || ad->atype == class_type) &&
+ ((isReference(ad) && ad->nrderefs == 0) || (!isReference(ad) && ad->nrderefs == 1)) &&
+ !isInArg(ad) && isOutArg(ad));
+}
+
+
+/*
+ * Reset and save any argument flags so that the signature will be rendered
+ * exactly as defined in C++.
+ */
+static void normaliseArgs(signatureDef *sd)
+{
+ int a;
+ argDef *ad = sd->args;
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ if (ad->atype == class_type && isProtectedClass(ad->u.cd))
+ {
+ resetIsProtectedClass(ad->u.cd);
+ setWasProtectedClass(ad->u.cd);
+ }
+ else if (ad->atype == enum_type && isProtectedEnum(ad->u.ed))
+ {
+ resetIsProtectedEnum(ad->u.ed);
+ setWasProtectedEnum(ad->u.ed);
+ }
+
+ ++ad;
+ }
+}
+
+
+/*
+ * Restore any argument flags modified by normaliseArgs().
+ */
+static void restoreArgs(signatureDef *sd)
+{
+ int a;
+ argDef *ad = sd->args;
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ {
+ if (ad->atype == class_type && wasProtectedClass(ad->u.cd))
+ {
+ resetWasProtectedClass(ad->u.cd);
+ setIsProtectedClass(ad->u.cd);
+ }
+ else if (ad->atype == enum_type && wasProtectedEnum(ad->u.ed))
+ {
+ resetWasProtectedEnum(ad->u.ed);
+ setIsProtectedEnum(ad->u.ed);
+ }
+
+ ++ad;
+ }
+}
+
+
+/*
+ * Return TRUE if a dealloc function is needed for a class.
+ */
+static int needDealloc(classDef *cd)
+{
+ if (cd->iff->type == namespace_iface)
+ return FALSE;
+
+ /* All of these conditions cause some code to be generated. */
+
+ if (tracing)
+ return TRUE;
+
+ if (generating_c)
+ return TRUE;
+
+ if (cd->dealloccode != NULL)
+ return TRUE;
+
+ if (isPublicDtor(cd))
+ return TRUE;
+
+ if (hasShadow(cd))
+ return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Return the argument name to use in a function definition for handwritten
+ * code.
+ */
+static const char *argName(const char *name, codeBlock *cb)
+{
+ static const char noname[] = "";
+
+ /* Always use the name in C code. */
+ if (generating_c)
+ return name;
+
+ /* Use the name if it is used in the handwritten code. */
+ if (usedInCode(cb, name))
+ return name;
+
+ /* Don't use the name and avoid a compiler warning. */
+ return noname;
+}
+
+
+/*
+ * Returns TRUE if a string is used in a code block.
+ */
+static int usedInCode(codeBlock *code, const char *str)
+{
+ while (code != NULL)
+ {
+ if (strstr(code->frag, str) != NULL)
+ return TRUE;
+
+ code = code->next;
+ }
+
+ return FALSE;
+}
+
+
+/*
+ * Generate an assignment statement from a void * variable to a class instance
+ * variable.
+ */
+static void generateClassFromVoid(classDef *cd, const char *cname,
+ const char *vname, FILE *fp)
+{
+ if (generating_c)
+ prcode(fp, "%S *%s = (%S *)%s", classFQCName(cd), cname, classFQCName(cd), vname);
+ else
+ prcode(fp, "%S *%s = reinterpret_cast<%S *>(%s)", classFQCName(cd), cname, classFQCName(cd), vname);
+}
+
+
+/*
+ * Generate an assignment statement from a void * variable to a mapped type
+ * variable.
+ */
+static void generateMappedTypeFromVoid(mappedTypeDef *mtd, const char *cname,
+ const char *vname, FILE *fp)
+{
+ if (generating_c)
+ prcode(fp, "%b *%s = (%b *)%s", &mtd->type, cname, &mtd->type, vname);
+ else
+ prcode(fp, "%b *%s = reinterpret_cast<%b *>(%s)", &mtd->type, cname, &mtd->type, vname);
+}
diff --git a/python/sip/sipgen/heap.c b/python/sip/sipgen/heap.c
new file mode 100644
index 00000000..d6e94ccc
--- /dev/null
+++ b/python/sip/sipgen/heap.c
@@ -0,0 +1,115 @@
+/*
+ * Wrappers around standard functions that use the heap.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <sys/types.h>
+
+#include "sip.h"
+
+
+static void nomem(void);
+
+
+/*
+ * Wrap malloc() and handle any errors.
+ */
+
+void *sipMalloc(size_t n)
+{
+ void *h;
+
+ if ((h = malloc(n)) == NULL)
+ nomem();
+
+ return h;
+}
+
+
+/*
+ * Wrap strdup() and handle any errors.
+ */
+
+char *sipStrdup(char *s)
+{
+ char *h;
+
+ if ((h = strdup(s)) == NULL)
+ nomem();
+
+ return h;
+}
+
+
+/*
+ * Return a string on the heap which is the concatonation of all the arguments.
+ */
+
+char *concat(const char *s, ...)
+{
+ const char *sp;
+ char *new;
+ size_t len;
+ va_list ap;
+
+ /* Find the length of the final string. */
+
+ len = 1;
+ va_start(ap,s);
+
+ for (sp = s; sp != NULL; sp = va_arg(ap, const char *))
+ len += strlen(sp);
+
+ va_end(ap);
+
+ /* Create the new string. */
+
+ new = sipMalloc(len);
+ *new = '\0';
+
+ va_start(ap,s);
+
+ for (sp = s; sp != NULL; sp = va_arg(ap, const char *))
+ strcat(new,sp);
+
+ va_end(ap);
+
+ return new;
+}
+
+
+/*
+ * Append a string to another that is on the heap.
+ */
+
+void append(char **s,char *new)
+{
+ if ((*s = realloc(*s,strlen(*s) + strlen(new) + 1)) == NULL)
+ nomem();
+
+ strcat(*s,new);
+}
+
+
+/*
+ * Display a standard error message when the heap is exhausted.
+ */
+
+static void nomem(void)
+{
+ fatal("Unable to allocate memory on the heap\n");
+}
diff --git a/python/sip/sipgen/lexer.c b/python/sip/sipgen/lexer.c
new file mode 100644
index 00000000..138acfeb
--- /dev/null
+++ b/python/sip/sipgen/lexer.c
@@ -0,0 +1,3266 @@
+#line 2 "lexer.c.tmp"
+
+#line 4 "lexer.c.tmp"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 33
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef unsigned int yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart (FILE *input_file );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
+void yy_delete_buffer (YY_BUFFER_STATE b );
+void yy_flush_buffer (YY_BUFFER_STATE b );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
+
+void *yyalloc (yy_size_t );
+void *yyrealloc (void *,yy_size_t );
+void yyfree (void * );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ yyleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 111
+#define YY_END_OF_BUFFER 112
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[735] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 112, 110, 65, 66,
+ 110, 110, 110, 110, 110, 68, 68, 110, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 110, 65, 110, 109,
+ 108, 109, 78, 76, 78, 0, 73, 0, 74, 0,
+ 68, 0, 72, 69, 72, 75, 67, 0, 47, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 64, 72, 67, 70, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 27, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 69, 40, 71, 25, 23,
+ 71, 71, 71, 33, 71, 71, 71, 28, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 38, 71, 71, 71, 31, 71, 0, 0, 0, 0,
+ 0, 0, 0, 0, 101, 15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 69, 71, 71, 71, 71, 71, 16, 36, 71,
+ 71, 39, 29, 71, 71, 71, 71, 71, 26, 71,
+ 71, 22, 71, 71, 71, 44, 71, 71, 71, 71,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 71, 71, 71, 71, 71, 71, 30, 71,
+ 71, 71, 71, 71, 18, 71, 34, 37, 17, 71,
+ 71, 71, 71, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 20, 71, 21, 71, 41, 71, 32, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 57, 45, 71, 43,
+ 71, 46, 35, 6, 0, 0, 0, 0, 0, 7,
+ 0, 79, 0, 0, 10, 0, 0, 105, 3, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 106, 0, 0, 0, 0, 0, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 42, 19, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8, 90, 0,
+ 88, 0, 71, 71, 52, 51, 71, 71, 71, 55,
+ 71, 71, 56, 71, 71, 0, 0, 0, 0, 0,
+ 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 100, 0, 0, 0,
+ 0, 58, 71, 71, 54, 50, 63, 71, 71, 71,
+ 71, 104, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 91, 89, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 71, 49, 71, 71, 61,
+
+ 62, 0, 0, 0, 0, 0, 0, 0, 102, 0,
+ 94, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 71, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 99, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 93, 0, 0, 0,
+ 0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
+
+ 97, 0, 0, 0, 81, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 0, 0, 92, 98, 95,
+ 0, 80, 0, 0, 0, 96, 0, 0, 0, 82,
+ 0, 86, 87, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 5, 1, 1, 6, 1, 7, 1,
+ 1, 8, 9, 1, 10, 11, 12, 13, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 15, 1, 1,
+ 1, 1, 1, 1, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 26,
+ 1, 1, 1, 1, 41, 1, 42, 43, 44, 45,
+
+ 46, 47, 48, 49, 50, 26, 51, 52, 53, 54,
+ 55, 56, 26, 57, 58, 59, 60, 61, 62, 63,
+ 64, 26, 1, 65, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[66] =
+ { 0,
+ 1, 1, 2, 1, 1, 1, 1, 1, 1, 3,
+ 3, 3, 4, 4, 1, 4, 4, 4, 4, 4,
+ 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 4, 4, 4, 4, 4, 4, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 1
+ } ;
+
+static yyconst flex_int16_t yy_base[743] =
+ { 0,
+ 0, 64, 1581, 65, 64, 66, 1583, 1585, 1585, 1585,
+ 70, 73, 68, 73, 80, 80, 84, 1567, 89, 92,
+ 95, 98, 102, 105, 110, 113, 120, 123, 126, 129,
+ 134, 137, 151, 159, 169, 165, 1516, 150, 209, 1585,
+ 1585, 1560, 1585, 1585, 1567, 124, 1585, 181, 1585, 64,
+ 179, 189, 192, 237, 195, 1585, 0, 0, 1585, 200,
+ 211, 242, 206, 248, 252, 255, 258, 264, 267, 270,
+ 274, 277, 281, 285, 288, 291, 294, 300, 303, 309,
+ 315, 320, 332, 337, 342, 348, 351, 355, 358, 1585,
+ 369, 391, 1534, 1553, 186, 1521, 96, 1529, 72, 286,
+
+ 1524, 332, 1517, 324, 1530, 65, 108, 1517, 1520, 1515,
+ 1585, 370, 222, 382, 0, 0, 390, 417, 420, 423,
+ 426, 429, 432, 435, 438, 441, 444, 449, 452, 455,
+ 458, 466, 471, 481, 484, 492, 495, 498, 501, 506,
+ 509, 512, 524, 527, 532, 537, 541, 1540, 253, 140,
+ 1515, 1542, 1515, 1520, 1541, 1507, 326, 1517, 1515, 429,
+ 1517, 148, 1499, 1585, 1501, 1512, 1511, 294, 1495, 1508,
+ 1493, 1509, 1492, 1503, 1498, 1516, 1487, 1492, 1488, 1493,
+ 1485, 1496, 546, 242, 553, 559, 564, 568, 575, 578,
+ 582, 585, 593, 596, 599, 602, 605, 608, 611, 614,
+
+ 617, 620, 623, 626, 640, 631, 643, 650, 660, 664,
+ 667, 680, 685, 688, 691, 694, 1496, 1483, 1493, 1491,
+ 1490, 1490, 1473, 1469, 1585, 1585, 1486, 1476, 1471, 1477,
+ 1471, 1509, 1471, 1473, 1478, 1477, 1466, 1472, 1460, 1469,
+ 1459, 1458, 362, 1458, 242, 1497, 1468, 1467, 1453, 1452,
+ 1585, 390, 698, 703, 706, 710, 718, 727, 742, 745,
+ 748, 751, 754, 757, 760, 763, 766, 770, 773, 776,
+ 784, 787, 790, 793, 796, 805, 813, 820, 825, 829,
+ 1450, 1451, 1449, 1447, 1460, 1455, 1448, 1446, 1442, 1455,
+ 1458, 1444, 1441, 1437, 1442, 1448, 1448, 1438, 1440, 1436,
+
+ 1443, 1465, 1434, 1423, 1440, 1430, 1428, 1428, 1430, 456,
+ 1463, 1420, 832, 846, 836, 839, 867, 872, 850, 875,
+ 880, 883, 886, 889, 893, 896, 899, 902, 905, 908,
+ 916, 919, 923, 929, 1427, 1420, 650, 1425, 1419, 1421,
+ 1415, 1414, 1415, 1429, 1409, 1424, 1409, 1422, 1408, 1415,
+ 1419, 1418, 1416, 1407, 1405, 1405, 1408, 1398, 1438, 1435,
+ 1395, 1408, 1402, 1396, 1404, 1394, 1406, 932, 935, 945,
+ 948, 966, 969, 974, 979, 982, 990, 995, 1001, 1005,
+ 1010, 1013, 1016, 1021, 1024, 1027, 1030, 1033, 1036, 1401,
+ 1428, 1396, 1398, 1397, 1385, 1395, 1381, 1391, 1388, 1391,
+
+ 1390, 1378, 1388, 1387, 1585, 1386, 1385, 1378, 1394, 1410,
+ 508, 1385, 1369, 1375, 1365, 1374, 1367, 1368, 1370, 1373,
+ 1364, 1372, 1374, 1370, 1362, 1041, 1044, 1047, 1062, 1066,
+ 1069, 1072, 1075, 1078, 1089, 1097, 1100, 1105, 1108, 1111,
+ 1114, 1117, 1120, 1585, 1358, 1370, 1369, 1362, 1359, 1585,
+ 185, 1585, 1353, 1362, 1585, 1388, 1348, 1585, 1585, 1585,
+ 1358, 1339, 1347, 1346, 1354, 1347, 1345, 1338, 1346, 1340,
+ 1349, 1343, 1337, 1585, 1345, 1344, 1344, 1342, 1369, 1123,
+ 1128, 1132, 1135, 1138, 1150, 1153, 1161, 1164, 1167, 1173,
+ 1176, 1179, 1186, 1341, 1328, 1339, 1365, 1323, 1324, 1325,
+
+ 1325, 391, 1323, 1319, 1585, 1320, 1330, 1329, 1331, 1348,
+ 1313, 1320, 1327, 1314, 1321, 1305, 1284, 1585, 1585, 1290,
+ 1585, 1283, 1191, 1194, 1201, 1204, 1207, 1210, 1217, 1221,
+ 1224, 1228, 1231, 1238, 1241, 1278, 1296, 1294, 1255, 1259,
+ 1245, 389, 1585, 1244, 1247, 1221, 1218, 1217, 1212, 1211,
+ 1200, 1190, 1585, 1182, 1171, 1191, 1585, 1148, 1141, 1136,
+ 1133, 1244, 1250, 1259, 1262, 1265, 1268, 1271, 1274, 1277,
+ 1280, 1585, 1109, 1106, 1097, 1139, 1099, 1091, 1073, 1092,
+ 1063, 1058, 1084, 1585, 1585, 1585, 1051, 1051, 1042, 1042,
+ 1014, 1020, 1585, 1046, 1019, 1285, 1292, 1297, 1305, 1308,
+
+ 1311, 1014, 1003, 975, 958, 974, 965, 947, 1585, 953,
+ 1585, 942, 938, 935, 932, 916, 928, 914, 915, 919,
+ 1317, 1320, 1323, 917, 915, 902, 906, 888, 932, 903,
+ 891, 891, 906, 863, 863, 846, 829, 813, 823, 820,
+ 1330, 817, 809, 836, 798, 777, 775, 808, 764, 774,
+ 763, 767, 769, 750, 1585, 1585, 747, 733, 732, 722,
+ 695, 701, 700, 702, 686, 722, 1585, 690, 688, 673,
+ 681, 1585, 706, 705, 701, 666, 650, 669, 623, 635,
+ 612, 619, 1585, 613, 603, 602, 592, 591, 593, 580,
+ 526, 510, 504, 500, 1585, 485, 478, 484, 483, 480,
+
+ 1585, 459, 453, 479, 1585, 443, 417, 439, 374, 367,
+ 353, 343, 339, 322, 1585, 338, 273, 1585, 1585, 1585,
+ 271, 1585, 263, 193, 190, 1585, 152, 122, 96, 1585,
+ 80, 1585, 1585, 1585, 1342, 1346, 1350, 1354, 1356, 1358,
+ 1362, 92
+ } ;
+
+static yyconst flex_int16_t yy_def[743] =
+ { 0,
+ 734, 1, 735, 735, 736, 736, 734, 734, 734, 734,
+ 737, 738, 734, 739, 734, 734, 734, 734, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 737, 734, 738, 734, 734,
+ 734, 739, 739, 739, 739, 734, 741, 742, 734, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 739, 739, 741, 742, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 739, 739, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 740, 740, 740, 740, 740,
+
+ 740, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 740, 740, 740, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 740, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 0, 734, 734, 734, 734, 734, 734,
+ 734, 734
+ } ;
+
+static yyconst flex_int16_t yy_nxt[1651] =
+ { 0,
+ 8, 9, 10, 9, 11, 8, 12, 8, 8, 13,
+ 14, 15, 16, 17, 18, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19, 20, 19,
+ 19, 19, 19, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 22, 23, 24, 25, 26, 19, 19, 27,
+ 19, 28, 19, 29, 30, 31, 19, 32, 33, 34,
+ 35, 36, 19, 19, 37, 38, 44, 41, 44, 39,
+ 42, 45, 47, 45, 47, 49, 112, 112, 50, 49,
+ 51, 51, 52, 53, 52, 54, 54, 56, 176, 162,
+ 50, 57, 51, 51, 50, 116, 51, 51, 52, 55,
+
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 177, 52, 55, 52, 52, 55, 52, 163, 62, 52,
+ 55, 52, 52, 55, 52, 733, 47, 61, 47, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 52, 55,
+ 52, 732, 58, 52, 55, 52, 52, 55, 52, 159,
+ 64, 91, 63, 65, 70, 92, 66, 178, 160, 67,
+ 52, 55, 52, 68, 71, 230, 731, 74, 52, 55,
+ 52, 179, 69, 72, 52, 55, 52, 73, 52, 55,
+ 52, 218, 231, 49, 75, 78, 79, 49, 80, 50,
+ 76, 51, 51, 77, 219, 81, 82, 730, 52, 83,
+
+ 52, 52, 113, 52, 52, 499, 52, 84, 89, 52,
+ 55, 52, 86, 156, 85, 52, 55, 52, 87, 500,
+ 52, 55, 52, 88, 93, 94, 95, 96, 97, 98,
+ 99, 52, 100, 52, 729, 101, 102, 117, 103, 104,
+ 157, 105, 106, 107, 108, 109, 52, 728, 52, 54,
+ 54, 52, 55, 52, 252, 252, 114, 52, 55, 52,
+ 119, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 306, 307, 118, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 114, 52, 55, 52, 52, 55, 52, 120,
+ 52, 55, 52, 121, 52, 55, 52, 52, 55, 52,
+
+ 52, 55, 52, 52, 55, 52, 159, 727, 122, 52,
+ 55, 52, 52, 55, 52, 217, 726, 123, 52, 55,
+ 52, 126, 125, 124, 52, 55, 52, 725, 127, 52,
+ 55, 52, 164, 131, 129, 128, 134, 130, 165, 166,
+ 132, 52, 55, 52, 236, 133, 52, 55, 52, 237,
+ 136, 52, 55, 52, 135, 724, 138, 52, 55, 52,
+ 52, 55, 52, 137, 52, 55, 52, 52, 55, 52,
+ 91, 139, 140, 168, 92, 172, 723, 169, 173, 223,
+ 174, 224, 112, 112, 722, 303, 170, 721, 141, 183,
+ 184, 185, 304, 52, 186, 186, 142, 143, 720, 52,
+
+ 55, 52, 252, 252, 146, 144, 147, 145, 148, 544,
+ 149, 98, 719, 545, 100, 183, 187, 101, 150, 718,
+ 103, 151, 578, 579, 152, 153, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 717, 188, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 716, 189, 227, 364, 193, 52, 55, 52, 365, 190,
+ 52, 55, 52, 191, 228, 197, 192, 194, 715, 195,
+ 52, 55, 52, 52, 55, 52, 714, 713, 196, 198,
+
+ 199, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 712, 200, 52, 55, 52, 52, 55,
+ 52, 52, 55, 52, 711, 464, 201, 710, 709, 202,
+ 465, 708, 203, 52, 55, 52, 52, 55, 52, 707,
+ 204, 52, 55, 52, 706, 205, 52, 55, 52, 705,
+ 52, 55, 52, 206, 184, 184, 207, 211, 252, 252,
+ 208, 209, 52, 210, 52, 186, 186, 704, 52, 212,
+ 52, 186, 186, 52, 55, 52, 213, 52, 55, 52,
+ 703, 215, 216, 253, 52, 55, 52, 52, 55, 52,
+ 214, 52, 55, 52, 52, 55, 52, 702, 254, 255,
+
+ 256, 257, 52, 55, 52, 52, 55, 52, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 701, 258,
+ 52, 55, 52, 259, 260, 700, 699, 262, 261, 52,
+ 55, 52, 52, 55, 52, 265, 698, 697, 266, 52,
+ 55, 52, 696, 263, 695, 267, 694, 392, 264, 52,
+ 55, 52, 268, 52, 55, 52, 52, 55, 52, 693,
+ 692, 270, 393, 394, 269, 271, 691, 395, 272, 52,
+ 55, 52, 273, 274, 52, 55, 52, 52, 55, 52,
+
+ 52, 55, 52, 52, 55, 52, 690, 52, 55, 52,
+ 689, 275, 52, 55, 52, 52, 55, 52, 688, 52,
+ 55, 52, 687, 686, 277, 276, 313, 52, 55, 52,
+ 685, 684, 278, 683, 682, 315, 52, 55, 52, 681,
+ 680, 317, 314, 679, 318, 678, 677, 279, 316, 676,
+ 280, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 675, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 674, 673,
+ 319, 320, 672, 52, 55, 52, 52, 55, 52, 52,
+
+ 55, 52, 52, 55, 52, 52, 55, 52, 671, 324,
+ 670, 669, 321, 325, 52, 55, 52, 668, 322, 667,
+ 666, 323, 52, 55, 52, 665, 664, 326, 327, 52,
+ 55, 52, 663, 328, 52, 55, 52, 330, 52, 55,
+ 52, 52, 55, 52, 662, 52, 55, 52, 52, 55,
+ 52, 329, 375, 661, 660, 52, 55, 52, 331, 52,
+ 55, 52, 659, 369, 370, 658, 333, 657, 376, 334,
+ 656, 368, 371, 332, 655, 372, 52, 55, 52, 373,
+ 374, 52, 55, 52, 52, 55, 52, 654, 377, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 52, 55,
+
+ 52, 378, 52, 55, 52, 52, 55, 52, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 653, 380, 652, 651, 379, 52, 55, 52, 52, 55,
+ 52, 382, 52, 55, 52, 650, 649, 381, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 383, 648, 647,
+ 427, 646, 645, 384, 52, 55, 52, 52, 55, 52,
+ 644, 643, 386, 642, 387, 426, 385, 640, 428, 639,
+ 638, 429, 637, 636, 388, 52, 55, 52, 52, 55,
+ 52, 635, 430, 52, 55, 52, 634, 389, 52, 55,
+ 52, 52, 55, 52, 633, 431, 632, 631, 435, 52,
+
+ 55, 52, 630, 434, 52, 55, 52, 629, 628, 432,
+ 52, 55, 52, 433, 52, 55, 52, 627, 436, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 626, 437,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 52, 55, 52, 439, 625,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 438,
+ 624, 441, 620, 619, 482, 618, 440, 480, 617, 442,
+ 481, 52, 55, 52, 443, 52, 55, 52, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 484, 616, 485, 615, 614, 483, 613, 488, 52, 55,
+
+ 52, 612, 486, 611, 610, 487, 52, 55, 52, 52,
+ 55, 52, 490, 489, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 609, 608, 52, 55, 52,
+ 491, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 607, 606, 523, 492, 524, 605, 604, 527, 493, 52,
+ 55, 52, 52, 55, 52, 603, 525, 528, 602, 526,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 529,
+ 530, 531, 52, 55, 52, 52, 55, 52, 52, 55,
+ 52, 595, 594, 534, 535, 52, 55, 52, 593, 533,
+
+ 52, 55, 52, 52, 55, 52, 592, 532, 591, 563,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 590, 589, 564, 562, 52, 55, 52, 565,
+ 52, 55, 52, 52, 55, 52, 566, 52, 55, 52,
+ 52, 55, 52, 588, 587, 568, 569, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 586, 585, 567, 52,
+ 55, 52, 584, 583, 571, 582, 596, 570, 52, 55,
+ 52, 52, 55, 52, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 52, 55, 52, 52, 55, 52, 52,
+ 55, 52, 581, 597, 52, 55, 52, 599, 580, 577,
+
+ 598, 52, 55, 52, 576, 600, 52, 55, 52, 575,
+ 574, 621, 573, 601, 52, 55, 52, 52, 55, 52,
+ 52, 55, 52, 572, 561, 622, 52, 55, 52, 52,
+ 55, 52, 52, 55, 52, 560, 641, 559, 623, 52,
+ 55, 52, 40, 40, 40, 40, 43, 43, 43, 43,
+ 46, 46, 46, 46, 48, 48, 48, 48, 55, 55,
+ 60, 60, 115, 558, 115, 115, 557, 556, 555, 554,
+ 553, 552, 551, 550, 549, 548, 547, 546, 543, 542,
+ 541, 540, 539, 538, 537, 536, 522, 521, 520, 519,
+ 518, 517, 516, 515, 514, 513, 512, 511, 510, 509,
+
+ 508, 507, 506, 505, 504, 503, 502, 501, 498, 497,
+ 496, 495, 494, 479, 478, 477, 476, 475, 474, 473,
+ 472, 471, 470, 469, 468, 467, 466, 463, 462, 461,
+ 460, 459, 458, 457, 456, 455, 454, 453, 452, 451,
+ 450, 449, 448, 447, 446, 445, 444, 425, 424, 423,
+ 422, 421, 420, 419, 418, 417, 416, 415, 414, 413,
+ 412, 411, 410, 409, 408, 407, 406, 405, 404, 403,
+ 402, 401, 400, 399, 398, 397, 396, 391, 390, 367,
+ 366, 363, 362, 361, 360, 359, 358, 357, 356, 355,
+ 354, 353, 352, 351, 350, 349, 348, 347, 346, 345,
+
+ 344, 343, 342, 341, 340, 339, 338, 337, 336, 335,
+ 312, 311, 310, 309, 308, 305, 302, 301, 300, 299,
+ 298, 297, 296, 295, 294, 293, 292, 291, 290, 289,
+ 288, 287, 286, 285, 284, 283, 282, 281, 237, 227,
+ 251, 250, 249, 248, 247, 246, 245, 244, 243, 242,
+ 241, 240, 239, 238, 235, 234, 233, 232, 229, 226,
+ 225, 222, 221, 220, 178, 176, 172, 156, 182, 181,
+ 180, 175, 171, 167, 161, 158, 155, 154, 111, 110,
+ 90, 59, 734, 41, 7, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734
+ } ;
+
+static yyconst flex_int16_t yy_chk[1651] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 5, 4, 6, 2,
+ 4, 5, 11, 6, 11, 12, 50, 50, 13, 12,
+ 13, 13, 14, 14, 14, 14, 14, 15, 106, 99,
+ 16, 15, 16, 16, 17, 742, 17, 17, 19, 19,
+
+ 19, 20, 20, 20, 21, 21, 21, 22, 22, 22,
+ 106, 23, 23, 23, 24, 24, 24, 99, 21, 25,
+ 25, 25, 26, 26, 26, 731, 46, 20, 46, 27,
+ 27, 27, 28, 28, 28, 29, 29, 29, 30, 30,
+ 30, 729, 16, 31, 31, 31, 32, 32, 32, 97,
+ 23, 38, 22, 23, 26, 38, 23, 107, 97, 24,
+ 33, 33, 33, 25, 26, 162, 728, 29, 34, 34,
+ 34, 107, 25, 27, 36, 36, 36, 28, 35, 35,
+ 35, 150, 162, 48, 30, 32, 32, 48, 32, 51,
+ 31, 51, 51, 31, 150, 32, 33, 727, 52, 33,
+
+ 52, 53, 53, 53, 55, 451, 55, 33, 36, 60,
+ 60, 60, 34, 95, 33, 63, 63, 63, 35, 451,
+ 61, 61, 61, 35, 39, 39, 39, 39, 39, 39,
+ 39, 113, 39, 113, 725, 39, 39, 61, 39, 39,
+ 95, 39, 39, 39, 39, 39, 54, 724, 54, 54,
+ 54, 62, 62, 62, 184, 184, 54, 64, 64, 64,
+ 63, 65, 65, 65, 66, 66, 66, 67, 67, 67,
+ 245, 245, 62, 68, 68, 68, 69, 69, 69, 70,
+ 70, 70, 54, 71, 71, 71, 72, 72, 72, 64,
+ 73, 73, 73, 65, 74, 74, 74, 75, 75, 75,
+
+ 76, 76, 76, 77, 77, 77, 149, 723, 66, 78,
+ 78, 78, 79, 79, 79, 149, 721, 67, 80, 80,
+ 80, 70, 69, 68, 81, 81, 81, 717, 71, 82,
+ 82, 82, 100, 75, 73, 72, 77, 74, 100, 100,
+ 76, 83, 83, 83, 168, 76, 84, 84, 84, 168,
+ 79, 85, 85, 85, 78, 716, 81, 86, 86, 86,
+ 87, 87, 87, 80, 88, 88, 88, 89, 89, 89,
+ 91, 81, 82, 102, 91, 104, 714, 102, 104, 157,
+ 104, 157, 112, 112, 713, 243, 102, 712, 83, 112,
+ 114, 114, 243, 114, 114, 114, 84, 85, 711, 117,
+
+ 117, 117, 252, 252, 88, 86, 89, 87, 92, 502,
+ 92, 92, 710, 502, 92, 112, 117, 92, 92, 709,
+ 92, 92, 542, 542, 92, 92, 118, 118, 118, 119,
+ 119, 119, 120, 120, 120, 121, 121, 121, 122, 122,
+ 122, 123, 123, 123, 124, 124, 124, 125, 125, 125,
+ 126, 126, 126, 127, 127, 127, 708, 118, 128, 128,
+ 128, 129, 129, 129, 130, 130, 130, 131, 131, 131,
+ 707, 119, 160, 310, 123, 132, 132, 132, 310, 120,
+ 133, 133, 133, 121, 160, 127, 122, 124, 706, 125,
+ 134, 134, 134, 135, 135, 135, 704, 703, 126, 129,
+
+ 130, 136, 136, 136, 137, 137, 137, 138, 138, 138,
+ 139, 139, 139, 702, 131, 140, 140, 140, 141, 141,
+ 141, 142, 142, 142, 700, 411, 132, 699, 698, 133,
+ 411, 697, 134, 143, 143, 143, 144, 144, 144, 696,
+ 135, 145, 145, 145, 694, 136, 146, 146, 146, 693,
+ 147, 147, 147, 137, 183, 183, 138, 142, 183, 183,
+ 139, 140, 185, 141, 185, 185, 185, 692, 186, 143,
+ 186, 186, 186, 187, 187, 187, 144, 188, 188, 188,
+ 691, 146, 147, 188, 189, 189, 189, 190, 190, 190,
+ 145, 191, 191, 191, 192, 192, 192, 690, 188, 188,
+
+ 188, 188, 193, 193, 193, 194, 194, 194, 195, 195,
+ 195, 196, 196, 196, 197, 197, 197, 198, 198, 198,
+ 199, 199, 199, 200, 200, 200, 201, 201, 201, 202,
+ 202, 202, 203, 203, 203, 204, 204, 204, 689, 191,
+ 206, 206, 206, 192, 193, 688, 687, 196, 195, 205,
+ 205, 205, 207, 207, 207, 200, 686, 685, 201, 208,
+ 208, 208, 684, 197, 682, 202, 681, 337, 199, 209,
+ 209, 209, 203, 210, 210, 210, 211, 211, 211, 680,
+ 679, 205, 337, 337, 204, 205, 678, 337, 206, 212,
+ 212, 212, 207, 208, 213, 213, 213, 214, 214, 214,
+
+ 215, 215, 215, 216, 216, 216, 677, 253, 253, 253,
+ 676, 209, 254, 254, 254, 255, 255, 255, 675, 256,
+ 256, 256, 674, 673, 212, 210, 253, 257, 257, 257,
+ 671, 670, 213, 669, 668, 255, 258, 258, 258, 666,
+ 665, 257, 254, 664, 257, 663, 662, 214, 256, 661,
+ 216, 259, 259, 259, 260, 260, 260, 261, 261, 261,
+ 262, 262, 262, 263, 263, 263, 264, 264, 264, 265,
+ 265, 265, 266, 266, 266, 267, 267, 267, 660, 268,
+ 268, 268, 269, 269, 269, 270, 270, 270, 659, 658,
+ 260, 261, 657, 271, 271, 271, 272, 272, 272, 273,
+
+ 273, 273, 274, 274, 274, 275, 275, 275, 654, 267,
+ 653, 652, 264, 268, 276, 276, 276, 651, 265, 650,
+ 649, 266, 277, 277, 277, 648, 647, 270, 271, 278,
+ 278, 278, 646, 273, 279, 279, 279, 275, 280, 280,
+ 280, 313, 313, 313, 645, 315, 315, 315, 316, 316,
+ 316, 274, 315, 644, 643, 314, 314, 314, 277, 319,
+ 319, 319, 642, 314, 314, 640, 279, 639, 316, 280,
+ 638, 313, 314, 278, 637, 314, 317, 317, 317, 314,
+ 314, 318, 318, 318, 320, 320, 320, 636, 317, 321,
+ 321, 321, 322, 322, 322, 323, 323, 323, 324, 324,
+
+ 324, 318, 325, 325, 325, 326, 326, 326, 327, 327,
+ 327, 328, 328, 328, 329, 329, 329, 330, 330, 330,
+ 635, 321, 634, 633, 320, 331, 331, 331, 332, 332,
+ 332, 323, 333, 333, 333, 632, 631, 322, 334, 334,
+ 334, 368, 368, 368, 369, 369, 369, 324, 630, 629,
+ 369, 628, 627, 326, 370, 370, 370, 371, 371, 371,
+ 626, 625, 331, 624, 332, 368, 330, 620, 370, 619,
+ 618, 371, 617, 616, 333, 372, 372, 372, 373, 373,
+ 373, 615, 372, 374, 374, 374, 614, 334, 375, 375,
+ 375, 376, 376, 376, 613, 373, 612, 610, 376, 377,
+
+ 377, 377, 608, 375, 378, 378, 378, 607, 606, 374,
+ 379, 379, 379, 374, 380, 380, 380, 605, 377, 381,
+ 381, 381, 382, 382, 382, 383, 383, 383, 604, 378,
+ 384, 384, 384, 385, 385, 385, 386, 386, 386, 387,
+ 387, 387, 388, 388, 388, 389, 389, 389, 380, 603,
+ 426, 426, 426, 427, 427, 427, 428, 428, 428, 379,
+ 602, 383, 595, 594, 428, 592, 381, 426, 591, 385,
+ 427, 429, 429, 429, 387, 430, 430, 430, 431, 431,
+ 431, 432, 432, 432, 433, 433, 433, 434, 434, 434,
+ 430, 590, 431, 589, 588, 429, 587, 434, 435, 435,
+
+ 435, 583, 432, 582, 581, 433, 436, 436, 436, 437,
+ 437, 437, 436, 435, 438, 438, 438, 439, 439, 439,
+ 440, 440, 440, 441, 441, 441, 442, 442, 442, 443,
+ 443, 443, 480, 480, 480, 580, 579, 481, 481, 481,
+ 437, 482, 482, 482, 483, 483, 483, 484, 484, 484,
+ 578, 577, 480, 439, 481, 576, 575, 484, 441, 485,
+ 485, 485, 486, 486, 486, 574, 482, 485, 573, 483,
+ 487, 487, 487, 488, 488, 488, 489, 489, 489, 486,
+ 487, 488, 490, 490, 490, 491, 491, 491, 492, 492,
+ 492, 561, 560, 491, 491, 493, 493, 493, 559, 490,
+
+ 523, 523, 523, 524, 524, 524, 558, 489, 556, 524,
+ 525, 525, 525, 526, 526, 526, 527, 527, 527, 528,
+ 528, 528, 555, 554, 527, 523, 529, 529, 529, 528,
+ 530, 530, 530, 531, 531, 531, 529, 532, 532, 532,
+ 533, 533, 533, 552, 551, 532, 532, 534, 534, 534,
+ 535, 535, 535, 562, 562, 562, 550, 549, 531, 563,
+ 563, 563, 548, 547, 535, 546, 563, 534, 564, 564,
+ 564, 565, 565, 565, 566, 566, 566, 567, 567, 567,
+ 568, 568, 568, 569, 569, 569, 570, 570, 570, 571,
+ 571, 571, 545, 564, 596, 596, 596, 569, 544, 541,
+
+ 568, 597, 597, 597, 540, 570, 598, 598, 598, 539,
+ 538, 596, 537, 571, 599, 599, 599, 600, 600, 600,
+ 601, 601, 601, 536, 522, 598, 621, 621, 621, 622,
+ 622, 622, 623, 623, 623, 520, 621, 517, 599, 641,
+ 641, 641, 735, 735, 735, 735, 736, 736, 736, 736,
+ 737, 737, 737, 737, 738, 738, 738, 738, 739, 739,
+ 740, 740, 741, 516, 741, 741, 515, 514, 513, 512,
+ 511, 510, 509, 508, 507, 506, 504, 503, 501, 500,
+ 499, 498, 497, 496, 495, 494, 479, 478, 477, 476,
+ 475, 473, 472, 471, 470, 469, 468, 467, 466, 465,
+
+ 464, 463, 462, 461, 457, 456, 454, 453, 449, 448,
+ 447, 446, 445, 425, 424, 423, 422, 421, 420, 419,
+ 418, 417, 416, 415, 414, 413, 412, 410, 409, 408,
+ 407, 406, 404, 403, 402, 401, 400, 399, 398, 397,
+ 396, 395, 394, 393, 392, 391, 390, 367, 366, 365,
+ 364, 363, 362, 361, 360, 359, 358, 357, 356, 355,
+ 354, 353, 352, 351, 350, 349, 348, 347, 346, 345,
+ 344, 343, 342, 341, 340, 339, 338, 336, 335, 312,
+ 311, 309, 308, 307, 306, 305, 304, 303, 302, 301,
+ 300, 299, 298, 297, 296, 295, 294, 293, 292, 291,
+
+ 290, 289, 288, 287, 286, 285, 284, 283, 282, 281,
+ 250, 249, 248, 247, 246, 244, 242, 241, 240, 239,
+ 238, 237, 236, 235, 234, 233, 232, 231, 230, 229,
+ 228, 227, 224, 223, 222, 221, 220, 219, 218, 217,
+ 182, 181, 180, 179, 178, 177, 176, 175, 174, 173,
+ 172, 171, 170, 169, 167, 166, 165, 163, 161, 159,
+ 158, 156, 155, 154, 153, 152, 151, 148, 110, 109,
+ 108, 105, 103, 101, 98, 96, 94, 93, 45, 42,
+ 37, 18, 7, 3, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 734, 734
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "lexer.l"
+/*
+ * The SIP lexer.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+#line 17 "lexer.l"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "sip.h"
+#include "parser.h"
+
+
+#ifndef FLEX_SCANNER
+#error "Only flex is supported at the moment"
+#endif
+
+
+#define YY_FATAL_ERROR(s) fatallex(s)
+
+#define MAX_INCLUDE_DEPTH 10
+#define MAX_CODE_LINE_LENGTH 1000
+
+
+static struct inputFile {
+ int lineno; /* The line number. */
+ YY_BUFFER_STATE bs; /* The flex buffer state handle. */
+ char *name; /* The file name. */
+ char *cwd; /* The path part of the file name. */
+ parserContext pc; /* The parser context. */
+} inputFileStack[MAX_INCLUDE_DEPTH];
+
+static int currentFile = -1; /* Index of the current input file. */
+static char codeLine[MAX_CODE_LINE_LENGTH + 2]; /* The current code line. */
+static int codeIdx = -1; /* Index of next code character. */
+
+static FILE *openFile(char *);
+static void fatallex(char *);
+
+
+#line 1113 "lexer.c.tmp"
+
+#define INITIAL 0
+#define code 1
+#define ccomment 2
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ size_t n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ if ( yyleng > 0 ) \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
+ (yytext[yyleng - 1] == '\n'); \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 56 "lexer.l"
+
+
+#line 1274 "lexer.c.tmp"
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_load_buffer_state( );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of yytext. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+ yy_current_state += YY_AT_BOL();
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 735 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 1585 );
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = (yy_hold_char);
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 58 "lexer.l"
+{return TK_OPTIONS;}
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 59 "lexer.l"
+{return TK_NOEMITTERS;}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 60 "lexer.l"
+{return TK_INCLUDE;}
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 61 "lexer.l"
+{return TK_OPTINCLUDE;}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 62 "lexer.l"
+{return TK_IMPORT;}
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 63 "lexer.l"
+{return TK_MODULE;}
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 64 "lexer.l"
+{return TK_CMODULE;}
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 65 "lexer.l"
+{return TK_TIMELINE;}
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 66 "lexer.l"
+{return TK_PLATFORMS;}
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 67 "lexer.l"
+{return TK_FEATURE;}
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 68 "lexer.l"
+{return TK_LICENSE;}
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 69 "lexer.l"
+{return TK_MAPPEDTYPE;}
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 70 "lexer.l"
+{return TK_EXCEPTION;}
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 71 "lexer.l"
+{return TK_IF;}
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 72 "lexer.l"
+{return TK_END;}
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 73 "lexer.l"
+{return TK_CLASS;}
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 74 "lexer.l"
+{return TK_STRUCT;}
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 75 "lexer.l"
+{return TK_PUBLIC;}
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 76 "lexer.l"
+{return TK_PROTECTED;}
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 77 "lexer.l"
+{return TK_PRIVATE;}
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 78 "lexer.l"
+{return TK_SIGNALS;}
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 79 "lexer.l"
+{return TK_SLOTS;}
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 80 "lexer.l"
+{return TK_CHAR;}
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 81 "lexer.l"
+{return TK_WCHAR_T;}
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 82 "lexer.l"
+{return TK_BOOL;}
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 83 "lexer.l"
+{return TK_SHORT;}
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 84 "lexer.l"
+{return TK_INT;}
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 85 "lexer.l"
+{return TK_LONG;}
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 86 "lexer.l"
+{return TK_FLOAT;}
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 87 "lexer.l"
+{return TK_DOUBLE;}
+ YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 88 "lexer.l"
+{return TK_VOID;}
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 89 "lexer.l"
+{return TK_VIRTUAL;}
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 90 "lexer.l"
+{return TK_ENUM;}
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 91 "lexer.l"
+{return TK_SIGNED;}
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 92 "lexer.l"
+{return TK_UNSIGNED;}
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 93 "lexer.l"
+{return TK_CONST;}
+ YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 94 "lexer.l"
+{return TK_STATIC;}
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 95 "lexer.l"
+{return TK_TRUE;}
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 96 "lexer.l"
+{return TK_FALSE;}
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 97 "lexer.l"
+{return TK_NULL;}
+ YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 98 "lexer.l"
+{return TK_TYPEDEF;}
+ YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 99 "lexer.l"
+{return TK_NAMESPACE;}
+ YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 100 "lexer.l"
+{return TK_OPERATOR;}
+ YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 101 "lexer.l"
+{return TK_THROW;}
+ YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 102 "lexer.l"
+{return TK_EXPLICIT;}
+ YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 103 "lexer.l"
+{return TK_TEMPLATE;}
+ YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 104 "lexer.l"
+{return TK_SCOPE;}
+ YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 105 "lexer.l"
+{return TK_LOGICAL_OR;}
+ YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 106 "lexer.l"
+{return TK_PYOBJECT;}
+ YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 107 "lexer.l"
+{return TK_PYTUPLE;}
+ YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 108 "lexer.l"
+{return TK_PYLIST;}
+ YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 109 "lexer.l"
+{return TK_PYDICT;}
+ YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 110 "lexer.l"
+{return TK_PYCALLABLE;}
+ YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 111 "lexer.l"
+{return TK_PYSLICE;}
+ YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 112 "lexer.l"
+{return TK_PYTYPE;}
+ YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 113 "lexer.l"
+{return TK_SIPSIGNAL;}
+ YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 114 "lexer.l"
+{return TK_SIPSLOT;}
+ YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 115 "lexer.l"
+{return TK_SIPANYSLOT;}
+ YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 116 "lexer.l"
+{return TK_SIPRXCON;}
+ YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 117 "lexer.l"
+{return TK_SIPRXDIS;}
+ YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 118 "lexer.l"
+{return TK_SIPSLOTCON;}
+ YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 119 "lexer.l"
+{return TK_SIPSLOTDIS;}
+ YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 120 "lexer.l"
+{return TK_QOBJECT;}
+ YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 121 "lexer.l"
+{return TK_ELLIPSIS;}
+ YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 124 "lexer.l"
+{ /* Ignore whitespace. */
+ ;
+}
+ YY_BREAK
+case 66:
+/* rule 66 can match eol */
+YY_RULE_SETUP
+#line 128 "lexer.l"
+{ /* Maintain the line number. */
+ ++inputFileStack[currentFile].lineno;
+
+ if (codeIdx == 0)
+ {
+ BEGIN code;
+ }
+}
+ YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 137 "lexer.l"
+{ /* Ignore C++ style comments. */
+ ;
+}
+ YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 142 "lexer.l"
+{ /* A signed decimal number. */
+ yylval.number = strtol(yytext,NULL,0);
+ return TK_NUMBER;
+}
+ YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 148 "lexer.l"
+{/* A floating point number. */
+ yylval.real = strtod(yytext,NULL);
+ return TK_REAL;
+}
+ YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 154 "lexer.l"
+{ /* An unsigned hexadecimal number. */
+ yylval.number = strtol(yytext,NULL,16);
+ return TK_NUMBER;
+}
+ YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 160 "lexer.l"
+{ /* An identifier name. */
+ yylval.text = sipStrdup(yytext);
+ return TK_NAME;
+}
+ YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 166 "lexer.l"
+{ /* A relative pathname. */
+ yylval.text = sipStrdup(yytext);
+ return TK_PATHNAME;
+}
+ YY_BREAK
+case 73:
+/* rule 73 can match eol */
+YY_RULE_SETUP
+#line 172 "lexer.l"
+{ /* A double-quoted string. */
+ char *dp, *sp;
+
+ /* Copy the string without the quotes. */
+
+ yylval.text = sipMalloc(strlen(yytext) + 1);
+
+ dp = yylval.text;
+ sp = yytext;
+
+ while (*sp != '\0')
+ {
+ if (*sp != '"')
+ *dp++ = *sp;
+
+ ++sp;
+ }
+
+ *dp = '\0';
+
+ return TK_STRING;
+}
+ YY_BREAK
+case 74:
+/* rule 74 can match eol */
+YY_RULE_SETUP
+#line 196 "lexer.l"
+{ /* A single-quoted character. */
+ if (strlen(yytext) != 3)
+ fatallex("Exactly one character expected between single quotes");
+
+ yylval.qchar = yytext[1];
+
+ return TK_QCHAR;
+}
+ YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 206 "lexer.l"
+{ /* Ignore C-style comments. */
+ BEGIN ccomment;
+}
+ YY_BREAK
+case 76:
+/* rule 76 can match eol */
+YY_RULE_SETUP
+#line 209 "lexer.l"
+{
+ ++inputFileStack[currentFile].lineno;
+}
+ YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 212 "lexer.l"
+{
+ BEGIN INITIAL;
+}
+ YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 215 "lexer.l"
+{
+ ;
+}
+ YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 220 "lexer.l"
+{ /* The software license. */
+ codeIdx = 0;
+ return TK_COPYING;
+}
+ YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 225 "lexer.l"
+{ /* The start of a from-type code block. */
+ codeIdx = 0;
+ return TK_FROMTYPE;
+}
+ YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 230 "lexer.l"
+{ /* The start of a to-type code block. */
+ codeIdx = 0;
+ return TK_TOTYPE;
+}
+ YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 235 "lexer.l"
+{ /* The start of a to-sub-class code block. */
+ codeIdx = 0;
+ return TK_TOSUBCLASS;
+}
+ YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 240 "lexer.l"
+{ /* The start of an exported header code block. */
+ codeIdx = 0;
+ return TK_EXPHEADERCODE;
+}
+ YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 245 "lexer.l"
+{ /* The start of a module header code block. */
+ codeIdx = 0;
+ return TK_MODHEADERCODE;
+}
+ YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 250 "lexer.l"
+{ /* The start of a type header code block. */
+ codeIdx = 0;
+ return TK_TYPEHEADERCODE;
+}
+ YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 255 "lexer.l"
+{ /* The start of a pre-initialisation code block. */
+ codeIdx = 0;
+ return TK_PREINITCODE;
+}
+ YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 260 "lexer.l"
+{ /* The start of a post-initialisation code block. */
+ codeIdx = 0;
+ return TK_POSTINITCODE;
+}
+ YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 265 "lexer.l"
+{ /* The start of a unit code block. */
+ codeIdx = 0;
+ return TK_UNITCODE;
+}
+ YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 270 "lexer.l"
+{ /* The start of a module code block. */
+ codeIdx = 0;
+ return TK_MODCODE;
+}
+ YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 275 "lexer.l"
+{ /* The start of a type code block. */
+ codeIdx = 0;
+ return TK_TYPECODE;
+}
+ YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 280 "lexer.l"
+{ /* The start of a C++ method code block. */
+ codeIdx = 0;
+ return TK_METHODCODE;
+}
+ YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 285 "lexer.l"
+{ /* The start of a C++ virtual code block. */
+ codeIdx = 0;
+ return TK_VIRTUALCATCHERCODE;
+}
+ YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 290 "lexer.l"
+{ /* The start of a traverse code block. */
+ codeIdx = 0;
+ return TK_TRAVERSECODE;
+}
+ YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 295 "lexer.l"
+{ /* The start of a clear code block. */
+ codeIdx = 0;
+ return TK_CLEARCODE;
+}
+ YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 300 "lexer.l"
+{ /* The start of a read buffer code block. */
+ codeIdx = 0;
+ return TK_READBUFFERCODE;
+}
+ YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 305 "lexer.l"
+{ /* The start of a write buffer code block. */
+ codeIdx = 0;
+ return TK_WRITEBUFFERCODE;
+}
+ YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 310 "lexer.l"
+{ /* The start of a segment count code block. */
+ codeIdx = 0;
+ return TK_SEGCOUNTCODE;
+}
+ YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 315 "lexer.l"
+{ /* The start of a char buffer code block. */
+ codeIdx = 0;
+ return TK_CHARBUFFERCODE;
+}
+ YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 320 "lexer.l"
+{ /* The start of a pre-Python code block. */
+ codeIdx = 0;
+ return TK_PREPYCODE;
+}
+ YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 325 "lexer.l"
+{ /* The start of a raise exception code block. */
+ codeIdx = 0;
+ return TK_RAISECODE;
+}
+ YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 330 "lexer.l"
+{ /* The start of a documentation block. */
+ codeIdx = 0;
+ return TK_DOC;
+}
+ YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 335 "lexer.l"
+{ /* The start of an exported documentation block. */
+ codeIdx = 0;
+ return TK_EXPORTEDDOC;
+}
+ YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 340 "lexer.l"
+{ /* The start of a Makefile code block. */
+ codeIdx = 0;
+ return TK_MAKEFILE;
+}
+ YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 345 "lexer.l"
+{ /* The start of an access code block. */
+ codeIdx = 0;
+ return TK_ACCESSCODE;
+}
+ YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 350 "lexer.l"
+{ /* The start of a get code block. */
+ codeIdx = 0;
+ return TK_GETCODE;
+}
+ YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 355 "lexer.l"
+{ /* The start of a set code block. */
+ codeIdx = 0;
+ return TK_SETCODE;
+}
+ YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 360 "lexer.l"
+{ /* The end of a code block. */
+ BEGIN INITIAL;
+ codeIdx = -1;
+ return TK_END;
+}
+ YY_BREAK
+case 108:
+/* rule 108 can match eol */
+YY_RULE_SETUP
+#line 366 "lexer.l"
+{ /* The end of a code line . */
+ struct inputFile *ifp;
+
+ codeLine[codeIdx] = '\n';
+ codeLine[codeIdx + 1] = '\0';
+ codeIdx = 0;
+
+ ifp = &inputFileStack[currentFile];
+
+ yylval.codeb = sipMalloc(sizeof (codeBlock));
+
+ yylval.codeb -> frag = sipStrdup(codeLine);
+ yylval.codeb -> linenr = ifp -> lineno++;
+ yylval.codeb -> filename = sipStrdup(ifp -> name);
+ yylval.codeb -> next = NULL;
+
+ return TK_CODELINE;
+}
+ YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 385 "lexer.l"
+{ /* The contents of a code line. */
+ if (codeIdx == MAX_CODE_LINE_LENGTH)
+ fatallex("Line is too long");
+
+ codeLine[codeIdx++] = yytext[0];
+}
+ YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 392 "lexer.l"
+{ /* Anything else is returned as is. */
+ return yytext[0];
+}
+ YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 396 "lexer.l"
+ECHO;
+ YY_BREAK
+#line 2092 "lexer.c.tmp"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(code):
+case YY_STATE_EOF(ccomment):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( yywrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart(yyin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+ yy_current_state += YY_AT_BOL();
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 735 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+ register char *yy_cp = (yy_c_buf_p);
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 735 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 734);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up yytext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart(yyin );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve yytext */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+ yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ yy_load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void yy_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ *
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf );
+
+ yyfree((void *) b );
+}
+
+#ifndef _UNISTD_H /* assume unistd.h has isatty() for us */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef __THROW /* this is a gnuism */
+extern int isatty (int ) __THROW;
+#else
+extern int isatty (int );
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ yy_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ yy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack();
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void yypop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param str a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = (yy_hold_char); \
+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int yyget_lineno (void)
+{
+
+ return yylineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *yyget_in (void)
+{
+ return yyin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *yyget_out (void)
+{
+ return yyout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int yyget_leng (void)
+{
+ return yyleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *yyget_text (void)
+{
+ return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void yyset_lineno (int line_number )
+{
+
+ yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str )
+{
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str )
+{
+ yyout = out_str ;
+}
+
+int yyget_debug (void)
+{
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug )
+{
+ yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ yyfree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 396 "lexer.l"
+
+
+
+/*
+ * Hook into EOF handling. Return 0 if there is more to process.
+ */
+
+int yywrap()
+{
+ char *cwd;
+ struct inputFile *ifp;
+
+ if ((cwd = inputFileStack[currentFile].cwd) != NULL)
+ free(cwd);
+
+ ifp = &inputFileStack[currentFile--];
+
+ /* Tell the parser if this is the end of a file. */
+
+ parserEOF(ifp -> name,&ifp -> pc);
+
+ /* Tidy up this file. */
+
+ fclose(yyin);
+ free(ifp -> name);
+
+ /* See if this was the original file. */
+
+ if (currentFile < 0)
+ return 1;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER);
+ yy_switch_to_buffer(ifp -> bs);
+
+ return 0;
+}
+
+
+/*
+ * Set up an input file to be read by the lexer, opening it if necessary.
+ */
+void setInputFile(FILE *fp,char *name,parserContext *pc,int optional)
+{
+ char *fullname = NULL;
+
+ if (currentFile >= MAX_INCLUDE_DEPTH - 1)
+ fatal("Too many nested %%Include, %%OptionalInclude or %%Import statements\n");
+
+ if (fp != NULL || (fp = openFile(name)) != NULL)
+ fullname = sipStrdup(name);
+ else
+ {
+ char *cwd;
+
+ /* Try the directory that contains the current file. */
+ if (currentFile >= 0 && (cwd = inputFileStack[currentFile].cwd) != NULL)
+ {
+ fullname = concat(cwd,"/",name,NULL);
+
+ if ((fp = openFile(fullname)) == NULL)
+ {
+ free(fullname);
+ fullname = NULL;
+ }
+ }
+ }
+
+ /* Try the include path if we haven't found anything yet. */
+ if (fullname == NULL)
+ {
+ stringList *sl;
+
+ fullname = NULL;
+
+ for (sl = includeDirList; sl != NULL; sl = sl -> next)
+ {
+ if (fullname != NULL)
+ free(fullname);
+
+ fullname = concat(sl -> s,"/",name,NULL);
+
+ if ((fp = openFile(fullname)) != NULL)
+ break;
+ }
+
+ if (fp == NULL && !optional)
+ fatal("Unable to find file \"%s\"\n",name);
+ }
+
+ if (fp != NULL)
+ {
+ char *cwd;
+
+ yyin = fp;
+
+ ++currentFile;
+
+ /*
+ * Remember the directory containing the new file and make it
+ * "current".
+ */
+ if ((cwd = strchr(fullname,'/')) != NULL)
+ {
+ cwd = sipStrdup(fullname);
+ *strrchr(cwd,'/') = '\0';
+ }
+
+ inputFileStack[currentFile].lineno = 1;
+ inputFileStack[currentFile].name = fullname;
+ inputFileStack[currentFile].pc = *pc;
+ inputFileStack[currentFile].cwd = cwd;
+
+ if (currentFile > 0)
+ {
+ inputFileStack[currentFile].bs = YY_CURRENT_BUFFER;
+ yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
+ }
+ }
+}
+
+
+/*
+ * Open a file for reading or return NULL if it doesn't exist. Any other error
+ * is fatal.
+ */
+static FILE *openFile(char *name)
+{
+ FILE *fp;
+
+ if ((fp = fopen(name,"r")) == NULL && errno != ENOENT)
+ fatal("Error in opening file %s\n",name);
+
+ return fp;
+}
+
+
+/*
+ * Handle fatal yacc errors.
+ */
+void yyerror(char *s)
+{
+ if (currentFile < 0)
+ fatal("%s\n", s);
+
+ fatal("%s:%d: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
+
+
+/*
+ * Handle warnings while parsing.
+ */
+void yywarning(char *s)
+{
+ warning("%s:%d: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
+
+
+/*
+ * Handle fatal lex errors.
+ */
+static void fatallex(char *s)
+{
+ fatal("%s:%d: Lexical analyser error: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
+
diff --git a/python/sip/sipgen/lexer.l b/python/sip/sipgen/lexer.l
new file mode 100644
index 00000000..ef234193
--- /dev/null
+++ b/python/sip/sipgen/lexer.l
@@ -0,0 +1,567 @@
+/*
+ * The SIP lexer.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+%{
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "sip.h"
+#include "parser.h"
+
+
+#ifndef FLEX_SCANNER
+#error "Only flex is supported at the moment"
+#endif
+
+
+#define YY_FATAL_ERROR(s) fatallex(s)
+
+#define MAX_INCLUDE_DEPTH 10
+#define MAX_CODE_LINE_LENGTH 1000
+
+
+static struct inputFile {
+ int lineno; /* The line number. */
+ YY_BUFFER_STATE bs; /* The flex buffer state handle. */
+ char *name; /* The file name. */
+ char *cwd; /* The path part of the file name. */
+ parserContext pc; /* The parser context. */
+} inputFileStack[MAX_INCLUDE_DEPTH];
+
+static int currentFile = -1; /* Index of the current input file. */
+static char codeLine[MAX_CODE_LINE_LENGTH + 2]; /* The current code line. */
+static int codeIdx = -1; /* Index of next code character. */
+
+static FILE *openFile(char *);
+static void fatallex(char *);
+%}
+
+%x code
+%x ccomment
+
+%%
+
+^[ \t]*%SIPOptions {return TK_OPTIONS;}
+^[ \t]*%SIPNoEmitters {return TK_NOEMITTERS;}
+^[ \t]*%Include {return TK_INCLUDE;}
+^[ \t]*%OptionalInclude {return TK_OPTINCLUDE;}
+^[ \t]*%Import {return TK_IMPORT;}
+^[ \t]*%Module {return TK_MODULE;}
+^[ \t]*%CModule {return TK_CMODULE;}
+^[ \t]*%Timeline {return TK_TIMELINE;}
+^[ \t]*%Platforms {return TK_PLATFORMS;}
+^[ \t]*%Feature {return TK_FEATURE;}
+^[ \t]*%License {return TK_LICENSE;}
+^[ \t]*%MappedType {return TK_MAPPEDTYPE;}
+^[ \t]*%Exception {return TK_EXCEPTION;}
+^[ \t]*%If {return TK_IF;}
+<INITIAL>^[ \t]*%End {return TK_END;}
+class {return TK_CLASS;}
+struct {return TK_STRUCT;}
+public {return TK_PUBLIC;}
+protected {return TK_PROTECTED;}
+private {return TK_PRIVATE;}
+signals {return TK_SIGNALS;}
+slots {return TK_SLOTS;}
+char {return TK_CHAR;}
+wchar_t {return TK_WCHAR_T;}
+bool {return TK_BOOL;}
+short {return TK_SHORT;}
+int {return TK_INT;}
+long {return TK_LONG;}
+float {return TK_FLOAT;}
+double {return TK_DOUBLE;}
+void {return TK_VOID;}
+virtual {return TK_VIRTUAL;}
+enum {return TK_ENUM;}
+signed {return TK_SIGNED;}
+unsigned {return TK_UNSIGNED;}
+const {return TK_CONST;}
+static {return TK_STATIC;}
+true {return TK_TRUE;}
+false {return TK_FALSE;}
+NULL {return TK_NULL;}
+typedef {return TK_TYPEDEF;}
+namespace {return TK_NAMESPACE;}
+operator {return TK_OPERATOR;}
+throw {return TK_THROW;}
+explicit {return TK_EXPLICIT;}
+template {return TK_TEMPLATE;}
+:: {return TK_SCOPE;}
+\|\| {return TK_LOGICAL_OR;}
+SIP_PYOBJECT {return TK_PYOBJECT;}
+SIP_PYTUPLE {return TK_PYTUPLE;}
+SIP_PYLIST {return TK_PYLIST;}
+SIP_PYDICT {return TK_PYDICT;}
+SIP_PYCALLABLE {return TK_PYCALLABLE;}
+SIP_PYSLICE {return TK_PYSLICE;}
+SIP_PYTYPE {return TK_PYTYPE;}
+SIP_SIGNAL {return TK_SIPSIGNAL;}
+SIP_SLOT {return TK_SIPSLOT;}
+SIP_ANYSLOT {return TK_SIPANYSLOT;}
+SIP_RXOBJ_CON {return TK_SIPRXCON;}
+SIP_RXOBJ_DIS {return TK_SIPRXDIS;}
+SIP_SLOT_CON {return TK_SIPSLOTCON;}
+SIP_SLOT_DIS {return TK_SIPSLOTDIS;}
+SIP_QOBJECT {return TK_QOBJECT;}
+\.\.\. {return TK_ELLIPSIS;}
+
+
+[ \t\r] { /* Ignore whitespace. */
+ ;
+}
+
+\n { /* Maintain the line number. */
+ ++inputFileStack[currentFile].lineno;
+
+ if (codeIdx == 0)
+ {
+ BEGIN code;
+ }
+}
+
+\/\/.* { /* Ignore C++ style comments. */
+ ;
+}
+
+
+-?[0-9]+ { /* A signed decimal number. */
+ yylval.number = strtol(yytext,NULL,0);
+ return TK_NUMBER;
+}
+
+
+-?(([0-9]+)|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) {/* A floating point number. */
+ yylval.real = strtod(yytext,NULL);
+ return TK_REAL;
+}
+
+
+0x[0-9a-fA-F]+ { /* An unsigned hexadecimal number. */
+ yylval.number = strtol(yytext,NULL,16);
+ return TK_NUMBER;
+}
+
+
+[_A-Za-z][_A-Za-z0-9]* { /* An identifier name. */
+ yylval.text = sipStrdup(yytext);
+ return TK_NAME;
+}
+
+
+[._A-Za-z][._/A-Za-z0-9\-]*[._A-Za-z0-9] { /* A relative pathname. */
+ yylval.text = sipStrdup(yytext);
+ return TK_PATHNAME;
+}
+
+
+\"[^"\n]*["\n] { /* A double-quoted string. */
+ char *dp, *sp;
+
+ /* Copy the string without the quotes. */
+
+ yylval.text = sipMalloc(strlen(yytext) + 1);
+
+ dp = yylval.text;
+ sp = yytext;
+
+ while (*sp != '\0')
+ {
+ if (*sp != '"')
+ *dp++ = *sp;
+
+ ++sp;
+ }
+
+ *dp = '\0';
+
+ return TK_STRING;
+}
+
+
+\'[^'\n]*['\n] { /* A single-quoted character. */
+ if (strlen(yytext) != 3)
+ fatallex("Exactly one character expected between single quotes");
+
+ yylval.qchar = yytext[1];
+
+ return TK_QCHAR;
+}
+
+
+\/\* { /* Ignore C-style comments. */
+ BEGIN ccomment;
+}
+<ccomment>\n {
+ ++inputFileStack[currentFile].lineno;
+}
+<ccomment>\*\/ {
+ BEGIN INITIAL;
+}
+<ccomment>. {
+ ;
+}
+
+
+^%Copying { /* The software license. */
+ codeIdx = 0;
+ return TK_COPYING;
+}
+
+^%ConvertFromTypeCode { /* The start of a from-type code block. */
+ codeIdx = 0;
+ return TK_FROMTYPE;
+}
+
+^%ConvertToTypeCode { /* The start of a to-type code block. */
+ codeIdx = 0;
+ return TK_TOTYPE;
+}
+
+^%ConvertToSubClassCode { /* The start of a to-sub-class code block. */
+ codeIdx = 0;
+ return TK_TOSUBCLASS;
+}
+
+^%ExportedHeaderCode { /* The start of an exported header code block. */
+ codeIdx = 0;
+ return TK_EXPHEADERCODE;
+}
+
+^%ModuleHeaderCode { /* The start of a module header code block. */
+ codeIdx = 0;
+ return TK_MODHEADERCODE;
+}
+
+^%TypeHeaderCode { /* The start of a type header code block. */
+ codeIdx = 0;
+ return TK_TYPEHEADERCODE;
+}
+
+^%PreInitialisationCode { /* The start of a pre-initialisation code block. */
+ codeIdx = 0;
+ return TK_PREINITCODE;
+}
+
+^%PostInitialisationCode { /* The start of a post-initialisation code block. */
+ codeIdx = 0;
+ return TK_POSTINITCODE;
+}
+
+^%UnitCode { /* The start of a unit code block. */
+ codeIdx = 0;
+ return TK_UNITCODE;
+}
+
+^%ModuleCode { /* The start of a module code block. */
+ codeIdx = 0;
+ return TK_MODCODE;
+}
+
+^%TypeCode { /* The start of a type code block. */
+ codeIdx = 0;
+ return TK_TYPECODE;
+}
+
+^%MethodCode { /* The start of a C++ method code block. */
+ codeIdx = 0;
+ return TK_METHODCODE;
+}
+
+^%VirtualCatcherCode { /* The start of a C++ virtual code block. */
+ codeIdx = 0;
+ return TK_VIRTUALCATCHERCODE;
+}
+
+^%GCTraverseCode { /* The start of a traverse code block. */
+ codeIdx = 0;
+ return TK_TRAVERSECODE;
+}
+
+^%GCClearCode { /* The start of a clear code block. */
+ codeIdx = 0;
+ return TK_CLEARCODE;
+}
+
+^%BIGetReadBufferCode { /* The start of a read buffer code block. */
+ codeIdx = 0;
+ return TK_READBUFFERCODE;
+}
+
+^%BIGetWriteBufferCode { /* The start of a write buffer code block. */
+ codeIdx = 0;
+ return TK_WRITEBUFFERCODE;
+}
+
+^%BIGetSegCountCode { /* The start of a segment count code block. */
+ codeIdx = 0;
+ return TK_SEGCOUNTCODE;
+}
+
+^%BIGetCharBufferCode { /* The start of a char buffer code block. */
+ codeIdx = 0;
+ return TK_CHARBUFFERCODE;
+}
+
+^%PrePythonCode { /* The start of a pre-Python code block. */
+ codeIdx = 0;
+ return TK_PREPYCODE;
+}
+
+^%RaiseCode { /* The start of a raise exception code block. */
+ codeIdx = 0;
+ return TK_RAISECODE;
+}
+
+^%Doc { /* The start of a documentation block. */
+ codeIdx = 0;
+ return TK_DOC;
+}
+
+^%ExportedDoc { /* The start of an exported documentation block. */
+ codeIdx = 0;
+ return TK_EXPORTEDDOC;
+}
+
+^%Makefile { /* The start of a Makefile code block. */
+ codeIdx = 0;
+ return TK_MAKEFILE;
+}
+
+^%AccessCode { /* The start of an access code block. */
+ codeIdx = 0;
+ return TK_ACCESSCODE;
+}
+
+^%GetCode { /* The start of a get code block. */
+ codeIdx = 0;
+ return TK_GETCODE;
+}
+
+^%SetCode { /* The start of a set code block. */
+ codeIdx = 0;
+ return TK_SETCODE;
+}
+
+<code>^%End { /* The end of a code block. */
+ BEGIN INITIAL;
+ codeIdx = -1;
+ return TK_END;
+}
+
+<code>\n { /* The end of a code line . */
+ struct inputFile *ifp;
+
+ codeLine[codeIdx] = '\n';
+ codeLine[codeIdx + 1] = '\0';
+ codeIdx = 0;
+
+ ifp = &inputFileStack[currentFile];
+
+ yylval.codeb = sipMalloc(sizeof (codeBlock));
+
+ yylval.codeb -> frag = sipStrdup(codeLine);
+ yylval.codeb -> linenr = ifp -> lineno++;
+ yylval.codeb -> filename = sipStrdup(ifp -> name);
+ yylval.codeb -> next = NULL;
+
+ return TK_CODELINE;
+}
+
+<code>. { /* The contents of a code line. */
+ if (codeIdx == MAX_CODE_LINE_LENGTH)
+ fatallex("Line is too long");
+
+ codeLine[codeIdx++] = yytext[0];
+}
+
+. { /* Anything else is returned as is. */
+ return yytext[0];
+}
+
+%%
+
+/*
+ * Hook into EOF handling. Return 0 if there is more to process.
+ */
+
+int yywrap()
+{
+ char *cwd;
+ struct inputFile *ifp;
+
+ if ((cwd = inputFileStack[currentFile].cwd) != NULL)
+ free(cwd);
+
+ ifp = &inputFileStack[currentFile--];
+
+ /* Tell the parser if this is the end of a file. */
+
+ parserEOF(ifp -> name,&ifp -> pc);
+
+ /* Tidy up this file. */
+
+ fclose(yyin);
+ free(ifp -> name);
+
+ /* See if this was the original file. */
+
+ if (currentFile < 0)
+ return 1;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER);
+ yy_switch_to_buffer(ifp -> bs);
+
+ return 0;
+}
+
+
+/*
+ * Set up an input file to be read by the lexer, opening it if necessary.
+ */
+void setInputFile(FILE *fp,char *name,parserContext *pc,int optional)
+{
+ char *fullname = NULL;
+
+ if (currentFile >= MAX_INCLUDE_DEPTH - 1)
+ fatal("Too many nested %%Include, %%OptionalInclude or %%Import statements\n");
+
+ if (fp != NULL || (fp = openFile(name)) != NULL)
+ fullname = sipStrdup(name);
+ else
+ {
+ char *cwd;
+
+ /* Try the directory that contains the current file. */
+ if (currentFile >= 0 && (cwd = inputFileStack[currentFile].cwd) != NULL)
+ {
+ fullname = concat(cwd,"/",name,NULL);
+
+ if ((fp = openFile(fullname)) == NULL)
+ {
+ free(fullname);
+ fullname = NULL;
+ }
+ }
+ }
+
+ /* Try the include path if we haven't found anything yet. */
+ if (fullname == NULL)
+ {
+ stringList *sl;
+
+ fullname = NULL;
+
+ for (sl = includeDirList; sl != NULL; sl = sl -> next)
+ {
+ if (fullname != NULL)
+ free(fullname);
+
+ fullname = concat(sl -> s,"/",name,NULL);
+
+ if ((fp = openFile(fullname)) != NULL)
+ break;
+ }
+
+ if (fp == NULL && !optional)
+ fatal("Unable to find file \"%s\"\n",name);
+ }
+
+ if (fp != NULL)
+ {
+ char *cwd;
+
+ yyin = fp;
+
+ ++currentFile;
+
+ /*
+ * Remember the directory containing the new file and make it
+ * "current".
+ */
+ if ((cwd = strchr(fullname,'/')) != NULL)
+ {
+ cwd = sipStrdup(fullname);
+ *strrchr(cwd,'/') = '\0';
+ }
+
+ inputFileStack[currentFile].lineno = 1;
+ inputFileStack[currentFile].name = fullname;
+ inputFileStack[currentFile].pc = *pc;
+ inputFileStack[currentFile].cwd = cwd;
+
+ if (currentFile > 0)
+ {
+ inputFileStack[currentFile].bs = YY_CURRENT_BUFFER;
+ yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
+ }
+ }
+}
+
+
+/*
+ * Open a file for reading or return NULL if it doesn't exist. Any other error
+ * is fatal.
+ */
+static FILE *openFile(char *name)
+{
+ FILE *fp;
+
+ if ((fp = fopen(name,"r")) == NULL && errno != ENOENT)
+ fatal("Error in opening file %s\n",name);
+
+ return fp;
+}
+
+
+/*
+ * Handle fatal yacc errors.
+ */
+void yyerror(char *s)
+{
+ if (currentFile < 0)
+ fatal("%s\n", s);
+
+ fatal("%s:%d: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
+
+
+/*
+ * Handle warnings while parsing.
+ */
+void yywarning(char *s)
+{
+ warning("%s:%d: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
+
+
+/*
+ * Handle fatal lex errors.
+ */
+static void fatallex(char *s)
+{
+ fatal("%s:%d: Lexical analyser error: %s\n",
+ inputFileStack[currentFile].name,
+ inputFileStack[currentFile].lineno,
+ s);
+}
diff --git a/python/sip/sipgen/main.c b/python/sip/sipgen/main.c
new file mode 100644
index 00000000..ce1e859b
--- /dev/null
+++ b/python/sip/sipgen/main.c
@@ -0,0 +1,484 @@
+/*
+ * The main module for SIP.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "sip.h"
+
+
+#ifndef PACKAGE
+#define PACKAGE "sip"
+#endif
+
+#define VERSION "4.6 (4.6)"
+
+
+/* Global variables - see sip.h for their meaning. */
+char *sipVersion;
+stringList *includeDirList;
+
+static char *sipPackage = PACKAGE;
+static int warnings = FALSE;
+
+
+static void help(void);
+static void version(void);
+static void usage(void);
+static char parseopt(int,char **,char *,char **,int *,char **);
+static int parseInt(char *,char);
+
+
+int main(int argc,char **argv)
+{
+ char *filename, *docFile, *codeDir, *srcSuffix, *flagFile;
+ char arg, *optarg, *buildFile, *apiFile, *xmlFile;
+ int optnr, exceptions, tracing, releaseGIL, parts;
+ FILE *file;
+ sipSpec spec;
+ stringList *versions, *xfeatures;
+
+ /* Initialise. */
+ sipVersion = VERSION;
+ includeDirList = NULL;
+ versions = NULL;
+ xfeatures = NULL;
+ buildFile = NULL;
+ codeDir = NULL;
+ docFile = NULL;
+ srcSuffix = NULL;
+ flagFile = NULL;
+ apiFile = NULL;
+ xmlFile = NULL;
+ exceptions = FALSE;
+ tracing = FALSE;
+ releaseGIL = FALSE;
+ parts = 0;
+
+ /* Parse the command line. */
+ optnr = 1;
+
+ while ((arg = parseopt(argc, argv, "hVa:b:ec:d:gI:j:m:rs:t:wx:z:", &flagFile, &optnr, &optarg)) != '\0')
+ switch (arg)
+ {
+ case 'a':
+ /* Where to generate the API file. */
+ apiFile = optarg;
+ break;
+
+ case 'm':
+ /* Where to generate the XML file. */
+ xmlFile = optarg;
+ break;
+
+ case 'b':
+ /* Generate a build file. */
+ buildFile = optarg;
+ break;
+
+ case 'e':
+ /* Enable exceptions. */
+ exceptions = TRUE;
+ break;
+
+ case 'g':
+ /* Always release the GIL. */
+ releaseGIL = TRUE;
+ break;
+
+ case 'j':
+ /* Generate the code in this number of parts. */
+ parts = parseInt(optarg,'j');
+ break;
+
+ case 'z':
+ /* Read a file for the next flags. */
+ if (flagFile != NULL)
+ fatal("The -z flag cannot be specified in an argument file\n");
+
+ flagFile = optarg;
+ break;
+
+ case 'c':
+ /* Where to generate the code. */
+ codeDir = optarg;
+ break;
+
+ case 'd':
+ /* Where to generate the documentation. */
+ docFile = optarg;
+ break;
+
+ case 't':
+ /* Which platform or version to generate code for. */
+ appendString(&versions,optarg);
+ break;
+
+ case 'x':
+ /* Which features are disabled. */
+ appendString(&xfeatures,optarg);
+ break;
+
+ case 'I':
+ /* Where to get included files from. */
+ appendString(&includeDirList,optarg);
+ break;
+
+ case 'r':
+ /* Enable tracing. */
+ tracing = TRUE;
+ break;
+
+ case 's':
+ /* The suffix to use for source files. */
+ srcSuffix = optarg;
+ break;
+
+ case 'w':
+ /* Enable warning messages. */
+ warnings = TRUE;
+ break;
+
+ case 'h':
+ /* Help message. */
+ help();
+ break;
+
+ case 'V':
+ /* Display the version number. */
+ version();
+ break;
+
+ default:
+ usage();
+ }
+
+ if (optnr < argc)
+ {
+ file = NULL;
+ filename = argv[optnr++];
+
+ if (optnr < argc)
+ usage();
+ }
+ else
+ {
+ file = stdin;
+ filename = "stdin";
+ }
+
+ /* Parse the input file. */
+ parse(&spec,file,filename,versions,xfeatures);
+
+ /* Verify and transform the parse tree. */
+ transform(&spec);
+
+ /* Generate code. */
+ generateCode(&spec, codeDir, buildFile, docFile, srcSuffix, exceptions,
+ tracing, releaseGIL, parts, xfeatures);
+
+ /* Generate the API file. */
+ if (apiFile != NULL)
+ generateAPI(&spec, apiFile);
+
+ /* Generate the XML export. */
+ if (xmlFile != NULL)
+ generateXML(&spec, xmlFile);
+
+ /* All done. */
+ return 0;
+}
+
+
+/*
+ * Parse the next command line argument - similar to UNIX getopts(). Allow a
+ * flag to specify that a file contains further arguments.
+ */
+static char parseopt(int argc,char **argv,char *opts,char **flags,int *optnrp,
+ char **optargp)
+{
+ char arg, *op, *fname;
+ int optnr;
+ static FILE *fp = NULL;
+
+ /* Deal with any file first. */
+
+ fname = *flags;
+
+ if (fname != NULL && fp == NULL && (fp = fopen(fname,"r")) == NULL)
+ fatal("Unable to open %s\n",fname);
+
+ if (fp != NULL)
+ {
+ char buf[200], *cp, *fname;
+ int ch;
+
+ fname = *flags;
+ cp = buf;
+
+ while ((ch = fgetc(fp)) != EOF)
+ {
+ /* Skip leading whitespace. */
+
+ if (cp == buf && isspace(ch))
+ continue;
+
+ if (ch == '\n')
+ break;
+
+ if (cp == &buf[sizeof (buf) - 1])
+ fatal("A flag in %s is too long\n",fname);
+
+ *cp++ = (char)ch;
+ }
+
+ *cp = '\0';
+
+ if (ch == EOF)
+ {
+ fclose(fp);
+ fp = NULL;
+ *flags = NULL;
+ }
+
+ /*
+ * Get the option character and any optional argument from the
+ * line.
+ */
+
+ if (buf[0] != '\0')
+ {
+ if (buf[0] != '-' || buf[1] == '\0')
+ fatal("An non-flag was given in %s\n",fname);
+
+ arg = buf[1];
+
+ /* Find any optional argument. */
+
+ for (cp = &buf[2]; *cp != '\0'; ++cp)
+ if (!isspace(*cp))
+ break;
+
+ if (*cp == '\0')
+ cp = NULL;
+ else
+ cp = sipStrdup(cp);
+
+ *optargp = cp;
+
+ if ((op = strchr(opts,arg)) == NULL)
+ fatal("An invalid flag was given in %s\n",fname);
+
+ if (op[1] == ':' && cp == NULL)
+ fatal("Missing flag argument in %s\n",fname);
+
+ if (op[1] != ':' && cp != NULL)
+ fatal("Unexpected flag argument in %s\n",fname);
+
+ return arg;
+ }
+ }
+
+ /* Check there is an argument and it is a switch. */
+
+ optnr = *optnrp;
+
+ if (optnr >= argc || argv[optnr] == NULL || argv[optnr][0] != '-')
+ return '\0';
+
+ /* Check it is a valid switch. */
+
+ arg = argv[optnr][1];
+
+ if (arg == '\0' || (op = strchr(opts,arg)) == NULL)
+ usage();
+
+ /* Check for the switch parameter, if any. */
+
+ if (op[1] == ':')
+ {
+ if (argv[optnr][2] != '\0')
+ {
+ *optargp = &argv[optnr][2];
+ ++optnr;
+ }
+ else if (optnr + 1 >= argc || argv[optnr + 1] == NULL)
+ usage();
+ else
+ {
+ *optargp = argv[optnr + 1];
+ optnr += 2;
+ }
+ }
+ else if (argv[optnr][2] != '\0')
+ usage();
+ else
+ {
+ *optargp = NULL;
+ ++optnr;
+ }
+
+ *optnrp = optnr;
+
+ return arg;
+}
+
+
+/*
+ * Parse an integer option.
+ */
+static int parseInt(char *arg, char opt)
+{
+ char *endptr;
+ int val;
+
+ val = strtol(arg, &endptr, 10);
+
+ if (*arg == '\0' || *endptr != '\0')
+ fatal("Invalid integer argument for -%c flag\n", opt);
+
+ return val;
+}
+
+
+/*
+ * Append a string to a list of them.
+ */
+void appendString(stringList **headp, const char *s)
+{
+ stringList *sl;
+
+ /* Create the new entry. */
+
+ sl = sipMalloc(sizeof (stringList));
+
+ sl -> s = s;
+ sl -> next = NULL;
+
+ /* Append it to the list. */
+
+ while (*headp != NULL)
+ headp = &(*headp) -> next;
+
+ *headp = sl;
+}
+
+
+/*
+ * Display a warning message.
+ */
+void warning(char *fmt,...)
+{
+ static int start = TRUE;
+
+ va_list ap;
+
+ if (!warnings)
+ return;
+
+ if (start)
+ {
+ fprintf(stderr,"%s: Warning: ",sipPackage);
+ start = FALSE;
+ }
+
+ va_start(ap,fmt);
+ vfprintf(stderr,fmt,ap);
+ va_end(ap);
+
+ if (strchr(fmt,'\n') != NULL)
+ start = TRUE;
+}
+
+
+/*
+ * Display all or part of a one line error message describing a fatal error.
+ * If the message is complete (it has a newline) then the program exits.
+ */
+void fatal(char *fmt,...)
+{
+ static int start = TRUE;
+
+ va_list ap;
+
+ if (start)
+ {
+ fprintf(stderr,"%s: ",sipPackage);
+ start = FALSE;
+ }
+
+ va_start(ap,fmt);
+ vfprintf(stderr,fmt,ap);
+ va_end(ap);
+
+ if (strchr(fmt,'\n') != NULL)
+ exit(1);
+}
+
+
+/*
+ * Display the SIP version number on stdout and exit with zero exit status.
+ */
+static void version(void)
+{
+ printf("%s\n",sipVersion);
+ exit(0);
+}
+
+
+/*
+ * Display the help message on stdout and exit with zero exit status.
+ */
+static void help(void)
+{
+ printf(
+"Usage:\n"
+" %s [-h] [-V] [-a file] [-c dir] [-d file] [-e] [-g] [-I dir] [-j #] [-m file] [-r] [-s suffix] [-t version] [-w] [-x feature] [-z file] [file]\n"
+"where:\n"
+" -h display this help message\n"
+" -V display the %s version number\n"
+" -a file the name of the QScintilla API file [default not generated]\n"
+" -b file the name of the build file [default none generated]\n"
+" -c dir the name of the code directory [default not generated]\n"
+" -d file the name of the documentation file [default not generated]\n"
+" -e enable support for exceptions [default disabled]\n"
+" -g always release and reacquire the GIL [default only when specified]\n"
+" -I dir look in this directory when including files\n"
+" -j # split the generated code into # files [default 1 per class]\n"
+" -m file the name of the XML export file [default not generated]\n"
+" -r generate code with tracing enabled [default disabled]\n"
+" -s suffix the suffix to use for C or C++ source files [default \".c\" or \".cpp\"]\n"
+" -t tag the version/platform to generate code for\n"
+" -w enable warning messages\n"
+" -x feature this feature is disabled\n"
+" -z file the name of a file containing more command line flags\n"
+" file the name of the specification file [default stdin]\n"
+ ,sipPackage,sipPackage);
+
+ exit(0);
+}
+
+
+/*
+ * Display the usage message.
+ */
+static void usage(void)
+{
+ fatal("Usage: %s [-h] [-V] [-a file] [-b file] [-c dir] [-d file] [-e] [-g] [-I dir] [-j #] [-m file] [-r] [-s suffix] [-t tag] [-w] [-x feature] [-z file] [file]\n",sipPackage);
+}
diff --git a/python/sip/sipgen/parser.c b/python/sip/sipgen/parser.c
new file mode 100644
index 00000000..f6e31832
--- /dev/null
+++ b/python/sip/sipgen/parser.c
@@ -0,0 +1,7526 @@
+/* A Bison parser, made by GNU Bison 1.875d. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ TK_OPTIONS = 258,
+ TK_NOEMITTERS = 259,
+ TK_DOC = 260,
+ TK_EXPORTEDDOC = 261,
+ TK_MAKEFILE = 262,
+ TK_ACCESSCODE = 263,
+ TK_GETCODE = 264,
+ TK_SETCODE = 265,
+ TK_PREINITCODE = 266,
+ TK_POSTINITCODE = 267,
+ TK_UNITCODE = 268,
+ TK_MODCODE = 269,
+ TK_TYPECODE = 270,
+ TK_PREPYCODE = 271,
+ TK_COPYING = 272,
+ TK_MAPPEDTYPE = 273,
+ TK_CODELINE = 274,
+ TK_IF = 275,
+ TK_END = 276,
+ TK_NAME = 277,
+ TK_PATHNAME = 278,
+ TK_STRING = 279,
+ TK_VIRTUALCATCHERCODE = 280,
+ TK_TRAVERSECODE = 281,
+ TK_CLEARCODE = 282,
+ TK_READBUFFERCODE = 283,
+ TK_WRITEBUFFERCODE = 284,
+ TK_SEGCOUNTCODE = 285,
+ TK_CHARBUFFERCODE = 286,
+ TK_METHODCODE = 287,
+ TK_FROMTYPE = 288,
+ TK_TOTYPE = 289,
+ TK_TOSUBCLASS = 290,
+ TK_INCLUDE = 291,
+ TK_OPTINCLUDE = 292,
+ TK_IMPORT = 293,
+ TK_EXPHEADERCODE = 294,
+ TK_MODHEADERCODE = 295,
+ TK_TYPEHEADERCODE = 296,
+ TK_MODULE = 297,
+ TK_CMODULE = 298,
+ TK_CLASS = 299,
+ TK_STRUCT = 300,
+ TK_PUBLIC = 301,
+ TK_PROTECTED = 302,
+ TK_PRIVATE = 303,
+ TK_SIGNALS = 304,
+ TK_SLOTS = 305,
+ TK_BOOL = 306,
+ TK_SHORT = 307,
+ TK_INT = 308,
+ TK_LONG = 309,
+ TK_FLOAT = 310,
+ TK_DOUBLE = 311,
+ TK_CHAR = 312,
+ TK_WCHAR_T = 313,
+ TK_VOID = 314,
+ TK_PYOBJECT = 315,
+ TK_PYTUPLE = 316,
+ TK_PYLIST = 317,
+ TK_PYDICT = 318,
+ TK_PYCALLABLE = 319,
+ TK_PYSLICE = 320,
+ TK_PYTYPE = 321,
+ TK_VIRTUAL = 322,
+ TK_ENUM = 323,
+ TK_SIGNED = 324,
+ TK_UNSIGNED = 325,
+ TK_SCOPE = 326,
+ TK_LOGICAL_OR = 327,
+ TK_CONST = 328,
+ TK_STATIC = 329,
+ TK_SIPSIGNAL = 330,
+ TK_SIPSLOT = 331,
+ TK_SIPANYSLOT = 332,
+ TK_SIPRXCON = 333,
+ TK_SIPRXDIS = 334,
+ TK_SIPSLOTCON = 335,
+ TK_SIPSLOTDIS = 336,
+ TK_NUMBER = 337,
+ TK_REAL = 338,
+ TK_TYPEDEF = 339,
+ TK_NAMESPACE = 340,
+ TK_TIMELINE = 341,
+ TK_PLATFORMS = 342,
+ TK_FEATURE = 343,
+ TK_LICENSE = 344,
+ TK_QCHAR = 345,
+ TK_TRUE = 346,
+ TK_FALSE = 347,
+ TK_NULL = 348,
+ TK_OPERATOR = 349,
+ TK_THROW = 350,
+ TK_QOBJECT = 351,
+ TK_EXCEPTION = 352,
+ TK_RAISECODE = 353,
+ TK_EXPLICIT = 354,
+ TK_TEMPLATE = 355,
+ TK_ELLIPSIS = 356
+ };
+#endif
+#define TK_OPTIONS 258
+#define TK_NOEMITTERS 259
+#define TK_DOC 260
+#define TK_EXPORTEDDOC 261
+#define TK_MAKEFILE 262
+#define TK_ACCESSCODE 263
+#define TK_GETCODE 264
+#define TK_SETCODE 265
+#define TK_PREINITCODE 266
+#define TK_POSTINITCODE 267
+#define TK_UNITCODE 268
+#define TK_MODCODE 269
+#define TK_TYPECODE 270
+#define TK_PREPYCODE 271
+#define TK_COPYING 272
+#define TK_MAPPEDTYPE 273
+#define TK_CODELINE 274
+#define TK_IF 275
+#define TK_END 276
+#define TK_NAME 277
+#define TK_PATHNAME 278
+#define TK_STRING 279
+#define TK_VIRTUALCATCHERCODE 280
+#define TK_TRAVERSECODE 281
+#define TK_CLEARCODE 282
+#define TK_READBUFFERCODE 283
+#define TK_WRITEBUFFERCODE 284
+#define TK_SEGCOUNTCODE 285
+#define TK_CHARBUFFERCODE 286
+#define TK_METHODCODE 287
+#define TK_FROMTYPE 288
+#define TK_TOTYPE 289
+#define TK_TOSUBCLASS 290
+#define TK_INCLUDE 291
+#define TK_OPTINCLUDE 292
+#define TK_IMPORT 293
+#define TK_EXPHEADERCODE 294
+#define TK_MODHEADERCODE 295
+#define TK_TYPEHEADERCODE 296
+#define TK_MODULE 297
+#define TK_CMODULE 298
+#define TK_CLASS 299
+#define TK_STRUCT 300
+#define TK_PUBLIC 301
+#define TK_PROTECTED 302
+#define TK_PRIVATE 303
+#define TK_SIGNALS 304
+#define TK_SLOTS 305
+#define TK_BOOL 306
+#define TK_SHORT 307
+#define TK_INT 308
+#define TK_LONG 309
+#define TK_FLOAT 310
+#define TK_DOUBLE 311
+#define TK_CHAR 312
+#define TK_WCHAR_T 313
+#define TK_VOID 314
+#define TK_PYOBJECT 315
+#define TK_PYTUPLE 316
+#define TK_PYLIST 317
+#define TK_PYDICT 318
+#define TK_PYCALLABLE 319
+#define TK_PYSLICE 320
+#define TK_PYTYPE 321
+#define TK_VIRTUAL 322
+#define TK_ENUM 323
+#define TK_SIGNED 324
+#define TK_UNSIGNED 325
+#define TK_SCOPE 326
+#define TK_LOGICAL_OR 327
+#define TK_CONST 328
+#define TK_STATIC 329
+#define TK_SIPSIGNAL 330
+#define TK_SIPSLOT 331
+#define TK_SIPANYSLOT 332
+#define TK_SIPRXCON 333
+#define TK_SIPRXDIS 334
+#define TK_SIPSLOTCON 335
+#define TK_SIPSLOTDIS 336
+#define TK_NUMBER 337
+#define TK_REAL 338
+#define TK_TYPEDEF 339
+#define TK_NAMESPACE 340
+#define TK_TIMELINE 341
+#define TK_PLATFORMS 342
+#define TK_FEATURE 343
+#define TK_LICENSE 344
+#define TK_QCHAR 345
+#define TK_TRUE 346
+#define TK_FALSE 347
+#define TK_NULL 348
+#define TK_OPERATOR 349
+#define TK_THROW 350
+#define TK_QOBJECT 351
+#define TK_EXCEPTION 352
+#define TK_RAISECODE 353
+#define TK_EXPLICIT 354
+#define TK_TEMPLATE 355
+#define TK_ELLIPSIS 356
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 16 "parser.y"
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "sip.h"
+
+
+#define MAX_NESTED_IF 10
+#define MAX_NESTED_SCOPE 10
+
+#define inMainModule() (currentSpec -> module == currentModule)
+
+
+static sipSpec *currentSpec; /* The current spec being parsed. */
+static stringList *neededQualifiers; /* The list of required qualifiers. */
+static stringList *excludedQualifiers; /* The list of excluded qualifiers. */
+static moduleDef *currentModule; /* The current module being parsed. */
+static mappedTypeDef *currentMappedType; /* The current mapped type. */
+static enumDef *currentEnum; /* The current enum being parsed. */
+static int sectionFlags; /* The current section flags. */
+static int currentOverIsVirt; /* Set if the overload is virtual. */
+static int currentCtorIsExplicit; /* Set if the ctor is explicit. */
+static int currentIsStatic; /* Set if the current is static. */
+static char *previousFile; /* The file just parsed. */
+static parserContext newContext; /* The new pending context. */
+static int skipStackPtr; /* The skip stack pointer. */
+static int skipStack[MAX_NESTED_IF]; /* Stack of skip flags. */
+static classDef *scopeStack[MAX_NESTED_SCOPE]; /* The scope stack. */
+static int sectFlagsStack[MAX_NESTED_SCOPE]; /* The section flags stack. */
+static int currentScopeIdx; /* The scope stack index. */
+static int currentTimelineOrder; /* The current timeline order. */
+
+
+static char *getPythonName(optFlags *optflgs, char *cname);
+static nameDef *cacheName(sipSpec *,char *);
+static classDef *findClass(sipSpec *,ifaceFileType,scopedNameDef *);
+static classDef *findClassWithInterface(sipSpec *pt, ifaceFileDef *iff);
+static classDef *newClass(sipSpec *,ifaceFileType,scopedNameDef *);
+static void finishClass(sipSpec *,moduleDef *,classDef *,optFlags *);
+static exceptionDef *findException(sipSpec *pt, scopedNameDef *fqname, int new);
+static mappedTypeDef *newMappedType(sipSpec *,argDef *);
+static enumDef *newEnum(sipSpec *,moduleDef *,char *,optFlags *,int);
+static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod, classDef *scope, scopedNameDef *fqname, classTmplDef *tcd, templateDef *td);
+static void newTypedef(sipSpec *,moduleDef *,char *,argDef *);
+static void newVar(sipSpec *,moduleDef *,char *,int,argDef *,optFlags *,
+ codeBlock *,codeBlock *,codeBlock *);
+static void newCtor(char *,int,signatureDef *,optFlags *,codeBlock *,
+ throwArgs *,signatureDef *,int);
+static void newFunction(sipSpec *,moduleDef *,int,int,int,char *,
+ signatureDef *,int,int,optFlags *,codeBlock *,
+ codeBlock *,throwArgs *,signatureDef *);
+static optFlag *findOptFlag(optFlags *,char *,flagType);
+static memberDef *findFunction(sipSpec *,moduleDef *,classDef *,nameDef *,int,
+ int);
+static void checkAttributes(sipSpec *,classDef *,char *,int);
+static void newModule(FILE *,char *);
+static void appendCodeBlock(codeBlock **,codeBlock *);
+static void parseFile(FILE *,char *,moduleDef *,int);
+static void handleEOF(void);
+static void handleEOM(void);
+static qualDef *findQualifier(char *);
+static scopedNameDef *text2scopedName(char *);
+static scopedNameDef *scopeScopedName(scopedNameDef *name);
+static void pushScope(classDef *);
+static void popScope(void);
+static classDef *currentScope(void);
+static void newQualifier(moduleDef *,int,int,char *,qualType);
+static void newImport(char *);
+static void usedInMainModule(sipSpec *,ifaceFileDef *);
+static int timePeriod(char *,char *);
+static int platOrFeature(char *,int);
+static int isNeeded(qualDef *);
+static int notSkipping(void);
+static void getHooks(optFlags *,char **,char **);
+static int getReleaseGIL(optFlags *);
+static int getHoldGIL(optFlags *);
+static void templateSignature(signatureDef *sd, int result, classTmplDef *tcd, templateDef *td, classDef *ncd);
+static void templateType(argDef *ad, classTmplDef *tcd, templateDef *td, classDef *ncd);
+static int search_back(const char *end, const char *start, const char *target);
+static char *getType(scopedNameDef *ename, argDef *ad);
+static char *scopedNameToString(scopedNameDef *name);
+static void addUsedFromCode(sipSpec *pt, ifaceFileList **used, const char *sname);
+static int sameName(scopedNameDef *snd, const char *sname);
+static int optFind(sipSpec *pt, const char *opt);
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 103 "parser.y"
+typedef union YYSTYPE {
+ char qchar;
+ char *text;
+ long number;
+ double real;
+ argDef memArg;
+ signatureDef signature;
+ signatureDef *optsignature;
+ throwArgs *throwlist;
+ codeBlock *codeb;
+ valueDef value;
+ valueDef *valp;
+ optFlags optflags;
+ optFlag flag;
+ scopedNameDef *scpvalp;
+ fcallDef fcall;
+ int boolean;
+ exceptionDef exceptionbase;
+ classDef *klass;
+} YYSTYPE;
+/* Line 191 of yacc.c. */
+#line 386 "parser.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 214 of yacc.c. */
+#line 398 "parser.c"
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+# ifndef YYFREE
+# define YYFREE free
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# endif
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+# endif
+# else
+# if defined (alloca) || defined (_ALLOCA_H)
+# define YYSTACK_ALLOC alloca
+# else
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short int yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined (__GNUC__) && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ register YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+#else
+ typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 4
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 1105
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 124
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 134
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 339
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 562
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 356
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const unsigned char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 108, 2, 2, 2, 122, 114, 2,
+ 102, 103, 112, 111, 104, 109, 2, 113, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 119, 107,
+ 117, 110, 118, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 120, 2, 121, 123, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 105, 115, 106, 116, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const unsigned short int yyprhs[] =
+{
+ 0, 0, 3, 5, 8, 9, 12, 14, 16, 18,
+ 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
+ 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
+ 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
+ 80, 82, 84, 89, 91, 95, 97, 107, 108, 112,
+ 115, 116, 121, 122, 128, 133, 135, 138, 140, 143,
+ 146, 147, 155, 157, 160, 161, 167, 169, 172, 174,
+ 177, 178, 184, 186, 189, 191, 196, 198, 201, 205,
+ 210, 212, 216, 218, 221, 225, 227, 229, 231, 233,
+ 234, 236, 239, 242, 245, 246, 249, 250, 253, 254,
+ 257, 260, 263, 266, 269, 270, 272, 275, 278, 281,
+ 284, 287, 290, 293, 296, 299, 302, 305, 308, 311,
+ 314, 319, 322, 324, 327, 328, 337, 338, 340, 341,
+ 343, 344, 346, 348, 351, 353, 355, 360, 361, 363,
+ 364, 367, 368, 371, 373, 377, 379, 381, 383, 385,
+ 387, 389, 390, 392, 394, 396, 398, 401, 403, 407,
+ 409, 411, 416, 418, 420, 422, 424, 426, 428, 430,
+ 431, 433, 437, 442, 453, 454, 463, 466, 471, 472,
+ 480, 481, 484, 486, 490, 492, 493, 497, 499, 502,
+ 504, 506, 508, 510, 512, 514, 516, 518, 520, 522,
+ 524, 526, 528, 530, 532, 534, 536, 538, 540, 543,
+ 546, 550, 554, 558, 561, 562, 564, 576, 577, 581,
+ 583, 593, 594, 600, 601, 608, 609, 611, 625, 640,
+ 654, 656, 658, 660, 662, 664, 666, 668, 670, 673,
+ 676, 679, 682, 685, 688, 691, 694, 697, 700, 704,
+ 708, 710, 713, 716, 718, 721, 724, 727, 729, 732,
+ 733, 735, 736, 739, 740, 744, 746, 750, 752, 756,
+ 758, 760, 762, 763, 766, 767, 770, 772, 773, 775,
+ 779, 783, 787, 791, 794, 797, 803, 809, 812, 815,
+ 816, 820, 822, 824, 826, 827, 831, 833, 841, 846,
+ 850, 854, 855, 857, 858, 861, 863, 868, 871, 874,
+ 876, 878, 881, 883, 885, 888, 891, 895, 897, 899,
+ 901, 904, 907, 909, 911, 913, 915, 917, 919, 921,
+ 923, 925, 927, 929, 931, 935, 936, 941, 942, 944
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+ 125, 0, -1, 126, -1, 125, 126, -1, -1, 127,
+ 128, -1, 160, -1, 130, -1, 132, -1, 170, -1,
+ 164, -1, 165, -1, 166, -1, 151, -1, 146, -1,
+ 150, -1, 159, -1, 171, -1, 172, -1, 181, -1,
+ 183, -1, 184, -1, 185, -1, 186, -1, 187, -1,
+ 188, -1, 189, -1, 136, -1, 138, -1, 129, -1,
+ 155, -1, 158, -1, 143, -1, 211, -1, 215, -1,
+ 213, -1, 133, -1, 210, -1, 192, -1, 231, -1,
+ 249, -1, 173, -1, 3, 102, 131, 103, -1, 22,
+ -1, 131, 104, 22, -1, 4, -1, 97, 206, 134,
+ 235, 105, 174, 135, 106, 107, -1, -1, 102, 206,
+ 103, -1, 98, 190, -1, -1, 18, 254, 137, 140,
+ -1, -1, 214, 18, 254, 139, 140, -1, 105, 141,
+ 106, 107, -1, 142, -1, 141, 142, -1, 173, -1,
+ 33, 190, -1, 34, 190, -1, -1, 85, 22, 144,
+ 105, 145, 106, 107, -1, 129, -1, 145, 129, -1,
+ -1, 87, 147, 105, 148, 106, -1, 149, -1, 148,
+ 149, -1, 22, -1, 88, 22, -1, -1, 86, 152,
+ 105, 153, 106, -1, 154, -1, 153, 154, -1, 22,
+ -1, 20, 102, 157, 103, -1, 22, -1, 108, 22,
+ -1, 156, 72, 22, -1, 156, 72, 108, 22, -1,
+ 156, -1, 195, 109, 195, -1, 21, -1, 89, 235,
+ -1, 161, 162, 163, -1, 42, -1, 43, -1, 22,
+ -1, 23, -1, -1, 82, -1, 36, 23, -1, 37,
+ 23, -1, 38, 23, -1, -1, 8, 190, -1, -1,
+ 9, 190, -1, -1, 10, 190, -1, 17, 190, -1,
+ 39, 190, -1, 40, 190, -1, 41, 190, -1, -1,
+ 173, -1, 26, 190, -1, 27, 190, -1, 28, 190,
+ -1, 29, 190, -1, 30, 190, -1, 31, 190, -1,
+ 14, 190, -1, 15, 190, -1, 11, 190, -1, 12,
+ 190, -1, 13, 190, -1, 16, 190, -1, 5, 190,
+ -1, 6, 190, -1, 7, 23, 194, 190, -1, 191,
+ 21, -1, 19, -1, 191, 19, -1, -1, 68, 195,
+ 235, 193, 105, 196, 106, 107, -1, -1, 23, -1,
+ -1, 22, -1, -1, 197, -1, 198, -1, 197, 198,
+ -1, 155, -1, 158, -1, 22, 200, 235, 199, -1,
+ -1, 104, -1, -1, 110, 205, -1, -1, 110, 202,
+ -1, 205, -1, 202, 203, 205, -1, 109, -1, 111,
+ -1, 112, -1, 113, -1, 114, -1, 115, -1, -1,
+ 108, -1, 116, -1, 109, -1, 111, -1, 204, 208,
+ -1, 207, -1, 206, 71, 207, -1, 22, -1, 206,
+ -1, 254, 102, 209, 103, -1, 83, -1, 82, -1,
+ 91, -1, 92, -1, 93, -1, 24, -1, 90, -1,
+ -1, 202, -1, 209, 104, 202, -1, 84, 250, 22,
+ 107, -1, 84, 250, 102, 253, 22, 103, 102, 255,
+ 103, 107, -1, -1, 45, 22, 212, 235, 105, 221,
+ 106, 107, -1, 214, 215, -1, 100, 117, 255, 118,
+ -1, -1, 44, 206, 216, 217, 235, 220, 107, -1,
+ -1, 119, 218, -1, 219, -1, 218, 104, 219, -1,
+ 206, -1, -1, 105, 221, 106, -1, 222, -1, 221,
+ 222, -1, 155, -1, 158, -1, 143, -1, 211, -1,
+ 215, -1, 133, -1, 210, -1, 192, -1, 182, -1,
+ 173, -1, 175, -1, 176, -1, 177, -1, 178, -1,
+ 179, -1, 180, -1, 225, -1, 224, -1, 244, -1,
+ 35, 190, -1, 34, 190, -1, 46, 223, 119, -1,
+ 47, 223, 119, -1, 48, 223, 119, -1, 49, 119,
+ -1, -1, 50, -1, 230, 116, 22, 102, 103, 256,
+ 234, 235, 107, 239, 240, -1, -1, 99, 226, 227,
+ -1, 227, -1, 22, 102, 241, 103, 256, 235, 228,
+ 107, 239, -1, -1, 120, 102, 241, 103, 121, -1,
+ -1, 120, 250, 102, 241, 103, 121, -1, -1, 67,
+ -1, 250, 22, 102, 241, 103, 233, 256, 234, 235,
+ 229, 107, 239, 240, -1, 250, 94, 232, 102, 241,
+ 103, 233, 256, 234, 235, 229, 107, 239, 240, -1,
+ 94, 250, 102, 241, 103, 233, 256, 234, 235, 229,
+ 107, 239, 240, -1, 111, -1, 109, -1, 112, -1,
+ 113, -1, 122, -1, 114, -1, 115, -1, 123, -1,
+ 117, 117, -1, 118, 118, -1, 111, 110, -1, 109,
+ 110, -1, 112, 110, -1, 113, 110, -1, 122, 110,
+ -1, 114, 110, -1, 115, 110, -1, 123, 110, -1,
+ 117, 117, 110, -1, 118, 118, 110, -1, 116, -1,
+ 102, 103, -1, 120, 121, -1, 117, -1, 117, 110,
+ -1, 110, 110, -1, 108, 110, -1, 118, -1, 118,
+ 110, -1, -1, 73, -1, -1, 110, 82, -1, -1,
+ 113, 236, 113, -1, 237, -1, 236, 104, 237, -1,
+ 22, -1, 22, 110, 238, -1, 22, -1, 24, -1,
+ 82, -1, -1, 32, 190, -1, -1, 25, 190, -1,
+ 242, -1, -1, 243, -1, 242, 104, 243, -1, 75,
+ 195, 201, -1, 76, 195, 201, -1, 77, 195, 201,
+ -1, 78, 195, -1, 79, 195, -1, 80, 102, 241,
+ 103, 195, -1, 81, 102, 241, 103, 195, -1, 96,
+ 195, -1, 251, 201, -1, -1, 74, 245, 246, -1,
+ 246, -1, 247, -1, 249, -1, -1, 67, 248, 231,
+ -1, 231, -1, 250, 22, 235, 107, 167, 168, 169,
+ -1, 73, 254, 253, 252, -1, 254, 253, 252, -1,
+ 250, 195, 235, -1, -1, 114, -1, -1, 253, 112,
+ -1, 206, -1, 206, 117, 255, 118, -1, 45, 206,
+ -1, 70, 52, -1, 52, -1, 70, -1, 70, 53,
+ -1, 53, -1, 54, -1, 70, 54, -1, 54, 54,
+ -1, 70, 54, 54, -1, 55, -1, 56, -1, 51,
+ -1, 69, 57, -1, 70, 57, -1, 57, -1, 58,
+ -1, 59, -1, 60, -1, 61, -1, 62, -1, 63,
+ -1, 64, -1, 65, -1, 66, -1, 101, -1, 250,
+ -1, 255, 104, 250, -1, -1, 95, 102, 257, 103,
+ -1, -1, 206, -1, 257, 104, 206, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const unsigned short int yyrline[] =
+{
+ 0, 289, 289, 290, 293, 293, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 327, 331,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 371, 374, 377, 382, 391, 430, 434, 508,
+ 513, 513, 519, 519, 558, 572, 573, 576, 580, 589,
+ 600, 600, 637, 638, 641, 641, 668, 669, 672, 677,
+ 682, 682, 707, 708, 711, 716, 729, 732, 735, 738,
+ 743, 744, 749, 755, 782, 807, 810, 815, 816, 832,
+ 835, 838, 843, 848, 853, 856, 861, 864, 869, 872,
+ 877, 883, 888, 893, 898, 901, 904, 909, 914, 919,
+ 924, 929, 934, 939, 944, 950, 956, 962, 971, 977,
+ 982, 988, 991, 992, 1003, 1003, 1014, 1017, 1022, 1025,
+ 1030, 1031, 1034, 1035, 1038, 1039, 1040, 1073, 1074, 1077,
+ 1078, 1081, 1084, 1089, 1090, 1108, 1111, 1114, 1117, 1120,
+ 1123, 1128, 1131, 1134, 1137, 1140, 1145, 1163, 1164, 1172,
+ 1177, 1187, 1197, 1201, 1205, 1209, 1213, 1217, 1221, 1227,
+ 1232, 1238, 1256, 1260, 1283, 1283, 1303, 1328, 1333, 1333,
+ 1382, 1383, 1386, 1387, 1390, 1405, 1408, 1413, 1414, 1417,
+ 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1429, 1433,
+ 1440, 1447, 1454, 1461, 1468, 1475, 1476, 1477, 1478, 1489,
+ 1500, 1507, 1514, 1521, 1530, 1533, 1538, 1587, 1587, 1588,
+ 1591, 1617, 1620, 1627, 1630, 1638, 1641, 1646, 1663, 1688,
+ 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
+ 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
+ 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1797,
+ 1800, 1805, 1808, 1816, 1819, 1825, 1829, 1841, 1845, 1851,
+ 1855, 1859, 1865, 1868, 1873, 1876, 1881, 1929, 1934, 1940,
+ 1967, 1976, 1985, 1994, 2002, 2010, 2025, 2040, 2046, 2052,
+ 2052, 2053, 2056, 2057, 2060, 2060, 2061, 2064, 2097, 2103,
+ 2111, 2168, 2171, 2179, 2182, 2187, 2191, 2201, 2214, 2217,
+ 2220, 2223, 2226, 2229, 2232, 2235, 2238, 2241, 2244, 2247,
+ 2250, 2253, 2256, 2259, 2262, 2265, 2268, 2271, 2274, 2277,
+ 2280, 2283, 2286, 2291, 2297, 2313, 2316, 2343, 2349, 2356
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "TK_OPTIONS", "TK_NOEMITTERS", "TK_DOC",
+ "TK_EXPORTEDDOC", "TK_MAKEFILE", "TK_ACCESSCODE", "TK_GETCODE",
+ "TK_SETCODE", "TK_PREINITCODE", "TK_POSTINITCODE", "TK_UNITCODE",
+ "TK_MODCODE", "TK_TYPECODE", "TK_PREPYCODE", "TK_COPYING",
+ "TK_MAPPEDTYPE", "TK_CODELINE", "TK_IF", "TK_END", "TK_NAME",
+ "TK_PATHNAME", "TK_STRING", "TK_VIRTUALCATCHERCODE", "TK_TRAVERSECODE",
+ "TK_CLEARCODE", "TK_READBUFFERCODE", "TK_WRITEBUFFERCODE",
+ "TK_SEGCOUNTCODE", "TK_CHARBUFFERCODE", "TK_METHODCODE", "TK_FROMTYPE",
+ "TK_TOTYPE", "TK_TOSUBCLASS", "TK_INCLUDE", "TK_OPTINCLUDE", "TK_IMPORT",
+ "TK_EXPHEADERCODE", "TK_MODHEADERCODE", "TK_TYPEHEADERCODE", "TK_MODULE",
+ "TK_CMODULE", "TK_CLASS", "TK_STRUCT", "TK_PUBLIC", "TK_PROTECTED",
+ "TK_PRIVATE", "TK_SIGNALS", "TK_SLOTS", "TK_BOOL", "TK_SHORT", "TK_INT",
+ "TK_LONG", "TK_FLOAT", "TK_DOUBLE", "TK_CHAR", "TK_WCHAR_T", "TK_VOID",
+ "TK_PYOBJECT", "TK_PYTUPLE", "TK_PYLIST", "TK_PYDICT", "TK_PYCALLABLE",
+ "TK_PYSLICE", "TK_PYTYPE", "TK_VIRTUAL", "TK_ENUM", "TK_SIGNED",
+ "TK_UNSIGNED", "TK_SCOPE", "TK_LOGICAL_OR", "TK_CONST", "TK_STATIC",
+ "TK_SIPSIGNAL", "TK_SIPSLOT", "TK_SIPANYSLOT", "TK_SIPRXCON",
+ "TK_SIPRXDIS", "TK_SIPSLOTCON", "TK_SIPSLOTDIS", "TK_NUMBER", "TK_REAL",
+ "TK_TYPEDEF", "TK_NAMESPACE", "TK_TIMELINE", "TK_PLATFORMS",
+ "TK_FEATURE", "TK_LICENSE", "TK_QCHAR", "TK_TRUE", "TK_FALSE", "TK_NULL",
+ "TK_OPERATOR", "TK_THROW", "TK_QOBJECT", "TK_EXCEPTION", "TK_RAISECODE",
+ "TK_EXPLICIT", "TK_TEMPLATE", "TK_ELLIPSIS", "'('", "')'", "','", "'{'",
+ "'}'", "';'", "'!'", "'-'", "'='", "'+'", "'*'", "'/'", "'&'", "'|'",
+ "'~'", "'<'", "'>'", "':'", "'['", "']'", "'%'", "'^'", "$accept",
+ "specification", "statement", "@1", "modstatement", "nsstatement",
+ "options", "optionlist", "noemitters", "exception", "baseexception",
+ "raisecode", "mappedtype", "@2", "mappedtypetmpl", "@3", "mtdefinition",
+ "mtbody", "mtline", "namespace", "@4", "nsbody", "platforms", "@5",
+ "platformlist", "platform", "feature", "timeline", "@6", "qualifierlist",
+ "qualifiername", "ifstart", "oredqualifiers", "qualifiers", "ifend",
+ "license", "module", "modlang", "modname", "optnumber", "include",
+ "optinclude", "import", "optaccesscode", "optgetcode", "optsetcode",
+ "copying", "exphdrcode", "modhdrcode", "typehdrcode", "opttypehdrcode",
+ "travcode", "clearcode", "readbufcode", "writebufcode", "segcountcode",
+ "charbufcode", "modcode", "typecode", "preinitcode", "postinitcode",
+ "unitcode", "prepycode", "doc", "exporteddoc", "makefile", "codeblock",
+ "codelines", "enum", "@7", "optfilename", "optname", "optenumbody",
+ "enumbody", "enumline", "optcomma", "optenumassign", "optassign", "expr",
+ "binop", "optunop", "value", "scopedname", "scopepart", "simplevalue",
+ "exprlist", "typedef", "struct", "@8", "classtmpl", "template", "class",
+ "@9", "superclasses", "superlist", "superclass", "optclassbody",
+ "classbody", "classline", "optslot", "dtor", "ctor", "@10", "simplector",
+ "optctorsig", "optsig", "optvirtual", "function", "operatorname",
+ "optconst", "optabstract", "optflags", "flaglist", "flag", "flagvalue",
+ "methodcode", "virtualcatchercode", "arglist", "rawarglist", "argvalue",
+ "varmember", "@11", "varmem", "member", "@12", "variable", "cpptype",
+ "argtype", "optref", "deref", "basetype", "cpptypelist", "optexceptions",
+ "exceptionlist", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const unsigned short int yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 40, 41, 44, 123, 125, 59, 33, 45,
+ 61, 43, 42, 47, 38, 124, 126, 60, 62, 58,
+ 91, 93, 37, 94
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const unsigned short int yyr1[] =
+{
+ 0, 124, 125, 125, 127, 126, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 130, 131, 131, 132, 133, 134, 134, 135,
+ 137, 136, 139, 138, 140, 141, 141, 142, 142, 142,
+ 144, 143, 145, 145, 147, 146, 148, 148, 149, 150,
+ 152, 151, 153, 153, 154, 155, 156, 156, 156, 156,
+ 157, 157, 158, 159, 160, 161, 161, 162, 162, 163,
+ 163, 164, 165, 166, 167, 167, 168, 168, 169, 169,
+ 170, 171, 172, 173, 174, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 191, 193, 192, 194, 194, 195, 195,
+ 196, 196, 197, 197, 198, 198, 198, 199, 199, 200,
+ 200, 201, 201, 202, 202, 203, 203, 203, 203, 203,
+ 203, 204, 204, 204, 204, 204, 205, 206, 206, 207,
+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 209,
+ 209, 209, 210, 210, 212, 211, 213, 214, 216, 215,
+ 217, 217, 218, 218, 219, 220, 220, 221, 221, 222,
+ 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+ 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+ 222, 222, 222, 222, 223, 223, 224, 226, 225, 225,
+ 227, 228, 228, 229, 229, 230, 230, 231, 231, 231,
+ 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
+ 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
+ 232, 232, 232, 232, 232, 232, 232, 232, 232, 233,
+ 233, 234, 234, 235, 235, 236, 236, 237, 237, 238,
+ 238, 238, 239, 239, 240, 240, 241, 242, 242, 242,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 245,
+ 244, 244, 246, 246, 248, 247, 247, 249, 250, 250,
+ 251, 252, 252, 253, 253, 254, 254, 254, 254, 254,
+ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 254, 254, 255, 255, 256, 256, 257, 257, 257
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const unsigned char yyr2[] =
+{
+ 0, 2, 1, 2, 0, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 1, 3, 1, 9, 0, 3, 2,
+ 0, 4, 0, 5, 4, 1, 2, 1, 2, 2,
+ 0, 7, 1, 2, 0, 5, 1, 2, 1, 2,
+ 0, 5, 1, 2, 1, 4, 1, 2, 3, 4,
+ 1, 3, 1, 2, 3, 1, 1, 1, 1, 0,
+ 1, 2, 2, 2, 0, 2, 0, 2, 0, 2,
+ 2, 2, 2, 2, 0, 1, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 2, 1, 2, 0, 8, 0, 1, 0, 1,
+ 0, 1, 1, 2, 1, 1, 4, 0, 1, 0,
+ 2, 0, 2, 1, 3, 1, 1, 1, 1, 1,
+ 1, 0, 1, 1, 1, 1, 2, 1, 3, 1,
+ 1, 4, 1, 1, 1, 1, 1, 1, 1, 0,
+ 1, 3, 4, 10, 0, 8, 2, 4, 0, 7,
+ 0, 2, 1, 3, 1, 0, 3, 1, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+ 3, 3, 3, 2, 0, 1, 11, 0, 3, 1,
+ 9, 0, 5, 0, 6, 0, 1, 13, 14, 13,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
+ 1, 2, 2, 1, 2, 2, 2, 1, 2, 0,
+ 1, 0, 2, 0, 3, 1, 3, 1, 3, 1,
+ 1, 1, 0, 2, 0, 2, 1, 0, 1, 3,
+ 3, 3, 3, 2, 2, 5, 5, 2, 2, 0,
+ 3, 1, 1, 1, 0, 3, 1, 7, 4, 3,
+ 3, 0, 1, 0, 2, 1, 4, 2, 2, 1,
+ 1, 2, 1, 1, 2, 2, 3, 1, 1, 1,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 0, 4, 0, 1, 3
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned short int yydefact[] =
+{
+ 4, 4, 2, 0, 1, 3, 0, 45, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
+ 159, 0, 0, 0, 0, 0, 0, 85, 86, 0,
+ 0, 319, 309, 312, 313, 317, 318, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 128, 0, 310,
+ 0, 0, 0, 70, 64, 0, 263, 0, 0, 0,
+ 332, 5, 29, 7, 8, 36, 27, 28, 32, 14,
+ 15, 13, 30, 31, 16, 6, 0, 10, 11, 12,
+ 9, 17, 18, 41, 19, 20, 21, 22, 23, 24,
+ 25, 26, 38, 305, 157, 37, 33, 35, 0, 34,
+ 39, 40, 0, 303, 0, 122, 118, 0, 119, 126,
+ 114, 115, 116, 112, 117, 100, 0, 50, 128, 91,
+ 92, 93, 101, 102, 103, 178, 159, 307, 315, 129,
+ 263, 320, 308, 311, 314, 321, 303, 0, 60, 0,
+ 0, 69, 0, 83, 0, 47, 0, 87, 88, 89,
+ 0, 0, 0, 176, 263, 0, 301, 43, 0, 123,
+ 121, 127, 0, 0, 76, 0, 80, 0, 0, 180,
+ 263, 124, 316, 301, 0, 303, 0, 0, 0, 267,
+ 0, 265, 277, 0, 263, 333, 0, 90, 84, 158,
+ 0, 52, 277, 0, 0, 0, 231, 0, 230, 232,
+ 233, 235, 236, 250, 253, 257, 0, 234, 237, 0,
+ 304, 302, 299, 42, 0, 120, 0, 51, 77, 0,
+ 75, 128, 0, 263, 0, 0, 298, 172, 0, 0,
+ 74, 0, 72, 68, 0, 66, 0, 0, 264, 128,
+ 128, 128, 128, 128, 0, 0, 128, 0, 276, 278,
+ 128, 141, 0, 0, 0, 177, 306, 0, 0, 94,
+ 251, 256, 241, 255, 240, 242, 243, 245, 246, 254,
+ 238, 258, 239, 252, 244, 247, 277, 44, 0, 0,
+ 0, 55, 57, 78, 0, 81, 184, 181, 182, 185,
+ 225, 130, 0, 62, 0, 0, 71, 73, 65, 67,
+ 269, 270, 271, 268, 266, 141, 141, 141, 283, 284,
+ 277, 277, 287, 259, 0, 263, 151, 288, 48, 104,
+ 334, 53, 259, 0, 96, 248, 249, 0, 58, 59,
+ 0, 56, 79, 0, 225, 0, 0, 159, 0, 0,
+ 0, 0, 0, 0, 0, 0, 214, 214, 214, 0,
+ 294, 289, 217, 194, 191, 189, 190, 198, 199, 200,
+ 201, 202, 203, 204, 197, 196, 195, 192, 193, 225,
+ 187, 206, 205, 219, 0, 296, 207, 291, 292, 293,
+ 139, 134, 135, 0, 131, 132, 0, 0, 63, 280,
+ 281, 282, 0, 0, 260, 335, 279, 300, 152, 154,
+ 155, 153, 142, 0, 143, 105, 0, 335, 95, 0,
+ 98, 259, 54, 183, 225, 179, 113, 277, 106, 107,
+ 108, 109, 110, 111, 209, 208, 215, 0, 0, 0,
+ 213, 0, 0, 0, 0, 188, 0, 151, 263, 0,
+ 133, 0, 61, 128, 128, 0, 261, 145, 146, 147,
+ 148, 149, 150, 151, 167, 163, 162, 168, 164, 165,
+ 166, 160, 156, 0, 0, 0, 261, 97, 0, 297,
+ 335, 186, 0, 210, 211, 212, 295, 0, 294, 290,
+ 0, 218, 175, 0, 140, 137, 125, 0, 285, 286,
+ 337, 0, 263, 144, 151, 49, 0, 263, 99, 261,
+ 335, 0, 0, 138, 136, 0, 338, 0, 262, 223,
+ 170, 0, 46, 223, 263, 263, 335, 173, 336, 0,
+ 0, 0, 161, 151, 0, 223, 221, 261, 339, 0,
+ 272, 171, 272, 0, 0, 0, 263, 277, 0, 274,
+ 274, 272, 277, 272, 0, 0, 273, 0, 229, 227,
+ 274, 0, 220, 272, 0, 275, 228, 0, 274, 224,
+ 222, 216
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+ -1, 1, 2, 3, 61, 62, 63, 158, 64, 353,
+ 184, 465, 66, 163, 67, 257, 217, 280, 281, 354,
+ 176, 294, 69, 140, 234, 235, 70, 71, 139, 231,
+ 232, 355, 166, 167, 356, 74, 75, 76, 149, 188,
+ 77, 78, 79, 324, 410, 469, 80, 81, 82, 357,
+ 406, 358, 359, 360, 361, 362, 363, 84, 364, 85,
+ 86, 87, 88, 89, 90, 91, 106, 107, 365, 225,
+ 162, 130, 383, 384, 385, 504, 438, 317, 402, 453,
+ 403, 404, 93, 94, 462, 511, 366, 367, 170, 97,
+ 295, 368, 169, 223, 287, 288, 335, 369, 370, 427,
+ 371, 372, 433, 373, 535, 521, 374, 375, 209, 395,
+ 492, 143, 180, 181, 303, 539, 548, 247, 248, 249,
+ 376, 432, 377, 378, 431, 379, 250, 251, 212, 156,
+ 103, 186, 446, 507
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -484
+static const short int yypact[] =
+{
+ -484, 79, -484, 506, -484, -484, 29, -484, 127, 127,
+ 132, 127, 127, 127, 127, 127, 127, 1004, 58, -484,
+ -484, 139, 157, 176, 127, 127, 127, -484, -484, 179,
+ 189, -484, -484, -484, 158, -484, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, -484, 193, 159, 137,
+ 1004, 221, 195, -484, -484, 203, 115, 221, 179, 112,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, 69, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, -484,
+ -484, -484, -484, -28, -484, -484, -484, -484, 41, -484,
+ -484, -484, 12, -484, 204, -484, -484, 92, -484, 207,
+ -484, -484, -484, -484, -484, -484, 179, -484, 14, -484,
+ -484, -484, -484, -484, -484, 160, 2, 160, -484, -484,
+ 115, -484, -484, -484, 178, -484, -484, 19, -484, 128,
+ 130, -484, 214, -484, 135, -18, 221, -484, -484, 165,
+ 179, 221, 1004, -484, -39, 240, 47, -484, 46, -484,
+ -484, -484, 127, 136, 133, 226, 177, 151, 148, 141,
+ 115, -484, -484, 47, 154, -484, 153, 241, 242, 152,
+ -14, -484, 867, 179, 115, -484, -40, -484, -484, -484,
+ -6, -484, 867, 161, 162, 183, 186, 187, 188, 190,
+ 197, 198, 213, -484, -15, -1, 146, 215, 216, 169,
+ -484, -484, -484, -484, 266, -484, 39, -484, -484, 17,
+ -484, 193, 179, 115, 184, 219, -484, -484, 6, 814,
+ -484, 18, -484, -484, 20, -484, 28, 214, -484, 193,
+ 193, 193, 193, 193, 201, 235, 193, 225, 234, -484,
+ 193, 230, -27, 238, 221, -484, -484, 136, 244, 336,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, -484,
+ 249, -484, 251, -484, -484, -484, 867, -484, 127, 127,
+ 13, -484, -484, -484, 342, -484, 160, 261, -484, 262,
+ 755, 108, 265, -484, 113, 325, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, 230, 230, 230, -484, -484,
+ 867, 867, -484, 297, 867, 115, -8, -484, -484, 331,
+ -484, -484, 297, 127, 366, -484, -484, 273, -484, -484,
+ 270, -484, -484, 179, 755, 272, 127, 278, 127, 127,
+ 127, 127, 127, 127, 127, 127, 332, 332, 332, 267,
+ 268, -484, -484, -484, -484, -484, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, 589,
+ -484, -484, -484, -484, 269, -484, -484, -484, -484, -484,
+ 271, -484, -484, 281, 108, -484, 286, 282, -484, -484,
+ -484, -484, 287, 288, -484, 298, -484, -484, -484, -484,
+ -484, -484, 109, 927, -484, -484, 294, 298, -484, 127,
+ 387, 297, -484, -484, 672, -484, -484, 867, -484, -484,
+ -484, -484, -484, -484, -484, -484, -484, 283, 284, 285,
+ -484, 978, 420, 379, 299, -484, 383, -8, 115, 300,
+ -484, 221, -484, 193, 193, 306, 301, -484, -484, -484,
+ -484, -484, -484, -8, -484, -484, -484, -484, -484, -484,
+ -484, -34, -484, 307, 127, 304, 301, -484, 127, -484,
+ 298, -484, 309, -484, -484, -484, -484, 33, -484, -484,
+ 278, -484, -484, 311, -484, 310, -484, 81, -484, -484,
+ 179, 333, 115, -484, 84, -484, 313, 115, -484, 301,
+ 298, 314, 315, -484, -484, 316, 160, 100, -484, 302,
+ 109, 102, -484, 302, 115, 115, 298, -484, -484, 179,
+ 221, 317, -484, -8, 318, 302, 308, 301, 160, 319,
+ 394, 109, 394, 320, 328, 324, 115, 867, 127, 407,
+ 407, 394, 867, 394, 326, 335, -484, 127, -484, -484,
+ 407, 337, -484, 394, 322, -484, -484, 323, 407, -484,
+ -484, -484
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const short int yypgoto[] =
+{
+ -484, -484, 433, -484, -484, -197, -484, -484, -484, 11,
+ -484, -484, -484, -484, -484, -484, 182, -484, 155, 21,
+ -484, -484, -484, -484, -484, 211, -484, -484, -484, -484,
+ 210, 10, -484, -484, 15, -484, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, 22,
+ -484, -484, -484, -484, -484, -484, -484, -484, -484, -484,
+ -484, -484, -484, -484, -484, -484, -9, -484, 23, -484,
+ -484, -98, -484, -484, 63, -484, -484, -169, -436, -484,
+ -484, -376, -20, 303, -484, -484, 24, 26, -484, -484,
+ 445, 16, -484, -484, -484, 116, -484, 117, -321, -139,
+ -484, -484, -484, 25, -484, -443, -484, -2, -484, -291,
+ -433, -119, -484, 217, -484, -472, -483, -171, -484, 138,
+ -484, -484, 30, -484, -484, 27, 5, -484, 277, -87,
+ -5, -129, -384, -484
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -306
+static const short int yytable[] =
+{
+ 108, 100, 110, 111, 112, 113, 114, 115, 102, 125,
+ 127, 171, 117, 72, 65, 122, 123, 124, 73, 99,
+ 168, 258, 190, 466, 68, 83, 92, 95, 292, 96,
+ 101, 407, 293, 497, 154, 193, 164, 150, 145, 283,
+ 230, 174, 233, 150, 150, 136, 278, 279, 435, 173,
+ 300, 224, 301, 150, 26, 501, 137, 549, 510, 152,
+ 540, 484, 144, 192, 254, 253, 514, 556, -305, 550,
+ 524, 552, 278, 279, 142, 561, 318, 493, 255, 4,
+ 26, 558, 533, 151, 183, 29, 499, 531, 228, 151,
+ 237, 147, 148, 435, 536, 269, 127, 388, 254, 238,
+ 398, 399, 270, 400, 289, 327, 155, -174, 401, 271,
+ 302, 159, 256, 160, 153, -174, 515, 272, 210, 330,
+ 470, 175, 165, 285, 296, 284, 298, 155, 18, 19,
+ 380, 104, 527, 18, 19, 20, 389, 390, 391, 392,
+ 393, 305, 306, 307, 308, 309, 105, 191, 312, 213,
+ 214, 185, 315, 215, 26, 109, 185, 29, 30, 210,
+ 118, 211, 119, 252, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 120, 47, 48, 49, 505, 254, 50, -169, -169, 132,
+ 133, 134, 398, 399, 135, 400, 397, 51, 52, 121,
+ 401, 20, 286, 518, 519, 522, 523, 57, 428, 429,
+ 58, 126, 128, 59, 60, 129, 131, 138, 447, 387,
+ 448, 449, 450, 451, 452, 141, 157, 100, 142, 146,
+ 161, 150, 172, 177, 102, 178, 179, 182, 282, 72,
+ 65, 216, -129, 20, 73, 99, 472, 187, 218, 219,
+ 68, 83, 92, 95, 220, 96, 101, 221, 229, 320,
+ 222, 227, 236, 230, 233, 260, 116, 273, 259, 328,
+ 329, 276, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 277, 290,
+ 48, 49, 100, 261, 50, 102, 262, 263, 264, 102,
+ 265, 381, 282, 310, 72, 65, 382, 266, 267, 73,
+ 99, 153, 487, 286, 408, 68, 83, 92, 95, 485,
+ 96, 101, 60, 268, 291, 274, 275, 416, 313, 418,
+ 419, 420, 421, 422, 423, 424, 425, 311, 314, 102,
+ 316, 405, 194, 319, 323, 488, 489, 322, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 325,
+ 206, 326, 207, 208, 332, 333, 545, 334, 386, 29,
+ 394, 551, 26, 509, 102, 409, 411, 412, 513, 415,
+ 417, 437, 426, 461, -226, 436, 430, 439, 441, 442,
+ 443, 444, 464, 445, 381, 525, 526, 468, 463, 382,
+ 467, 480, 473, 474, 475, 483, 482, 486, 490, 494,
+ 496, 491, 500, 502, 503, 508, 192, 544, 516, 102,
+ 512, 537, 520, 517, 530, 532, 538, 541, 534, 476,
+ 542, 543, 547, 553, 5, 331, 477, 102, 554, 321,
+ 557, 297, 20, 559, 560, 299, 185, 440, 98, 413,
+ 226, 414, 396, 189, 304, 495, 0, 0, 481, 498,
+ 0, 0, 479, 0, 0, 116, 0, 0, 0, 0,
+ 506, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 478, 0, 48,
+ 49, 0, 0, 50, 0, 0, 0, 0, 0, 528,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 9, 10, 57, 0, 0, 11, 12, 13,
+ 14, 60, 15, 16, 17, 529, 18, 19, 20, 546,
+ 0, 0, 0, 0, 0, 0, 0, 0, 555, 0,
+ 0, 0, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 0, 0, 0, 0, 0, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 0, 47, 48, 49, 0, 0, 50,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 52, 53, 54, 55, 56, 0, 0, 0, 0,
+ 57, 0, 0, 58, 336, 0, 59, 60, 0, 18,
+ 19, 337, 0, 0, 0, 338, 339, 340, 341, 342,
+ 343, 0, 0, 344, 345, 0, 0, 0, 0, 0,
+ 26, 0, 0, 29, 30, 346, 347, 348, 349, 0,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 350, 47, 48, 49,
+ 0, 0, 50, 351, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 52, 0, 0, 0, 0, 0,
+ 0, 0, 0, 57, 0, 0, 58, 336, 352, 0,
+ 60, 0, 18, 19, 337, 434, 0, 0, 338, 339,
+ 340, 341, 342, 343, 0, 0, 344, 345, 0, 0,
+ 0, 0, 0, 26, 0, 0, 29, 30, 346, 347,
+ 348, 349, 0, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 350,
+ 47, 48, 49, 0, 0, 50, 351, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 57, 0, 0, 58,
+ 336, 352, 0, 60, 0, 18, 19, 337, 471, 0,
+ 0, 338, 339, 340, 341, 342, 343, 0, 0, 344,
+ 345, 0, 0, 0, 0, 0, 26, 0, 0, 29,
+ 30, 346, 347, 348, 349, 0, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 350, 47, 48, 49, 0, 0, 50, 351,
+ 0, 0, 0, 0, 18, 19, 20, 0, 0, 51,
+ 52, 0, 0, 0, 0, 0, 0, 0, 0, 57,
+ 0, 0, 58, 0, 352, 26, 60, 0, 29, 30,
+ 0, 0, 0, 0, 0, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 0, 47, 48, 49, 0, 0, 50, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
+ 0, 0, 0, 0, 0, 0, 0, 0, 57, 0,
+ 0, 58, 116, 0, 59, 60, 0, 0, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 0, 0, 48, 49, 0, 0,
+ 50, 0, 239, 240, 241, 242, 243, 244, 245, 20,
+ 0, 454, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 246, 0, 0, 0, 0, 60, 0,
+ 0, 0, 116, 0, 0, 0, 0, 0, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 0, 0, 48, 49, 0, 0,
+ 20, 0, 0, 0, 0, 0, 0, 0, 0, 455,
+ 456, 0, 0, 0, 0, 0, 0, 457, 458, 459,
+ 460, 0, 0, 116, 0, 0, 20, 0, 60, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 0, 0, 48, 49, 116,
+ 0, 50, 0, 0, 0, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 0, 57, 48, 49, 0, 0, 0, 0, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 60
+};
+
+static const short int yycheck[] =
+{
+ 9, 3, 11, 12, 13, 14, 15, 16, 3, 29,
+ 30, 130, 17, 3, 3, 24, 25, 26, 3, 3,
+ 118, 192, 151, 407, 3, 3, 3, 3, 22, 3,
+ 3, 322, 229, 466, 22, 154, 22, 71, 58, 22,
+ 22, 22, 22, 71, 71, 50, 33, 34, 369, 136,
+ 22, 170, 24, 71, 41, 22, 51, 540, 494, 18,
+ 532, 437, 57, 102, 104, 184, 499, 550, 102, 541,
+ 513, 543, 33, 34, 113, 558, 103, 453, 118, 0,
+ 41, 553, 525, 117, 102, 44, 470, 523, 175, 117,
+ 104, 22, 23, 414, 527, 110, 116, 294, 104, 113,
+ 108, 109, 117, 111, 223, 276, 94, 105, 116, 110,
+ 82, 19, 118, 21, 98, 113, 500, 118, 112, 106,
+ 411, 102, 108, 221, 106, 108, 106, 94, 20, 21,
+ 22, 102, 516, 20, 21, 22, 305, 306, 307, 310,
+ 311, 239, 240, 241, 242, 243, 19, 152, 246, 103,
+ 104, 146, 250, 162, 41, 23, 151, 44, 45, 112,
+ 102, 114, 23, 183, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 23, 68, 69, 70, 103, 104, 73, 103, 104, 52,
+ 53, 54, 108, 109, 57, 111, 315, 84, 85, 23,
+ 116, 22, 222, 103, 104, 103, 104, 94, 347, 348,
+ 97, 22, 54, 100, 101, 22, 57, 22, 109, 106,
+ 111, 112, 113, 114, 115, 22, 22, 229, 113, 117,
+ 23, 71, 54, 105, 229, 105, 22, 102, 216, 229,
+ 229, 105, 109, 22, 229, 229, 417, 82, 22, 72,
+ 229, 229, 229, 229, 103, 229, 229, 109, 105, 254,
+ 119, 107, 110, 22, 22, 103, 45, 121, 107, 278,
+ 279, 102, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 22, 105,
+ 69, 70, 294, 110, 73, 290, 110, 110, 110, 294,
+ 110, 291, 280, 102, 294, 294, 291, 110, 110, 294,
+ 294, 295, 441, 333, 323, 294, 294, 294, 294, 438,
+ 294, 294, 101, 110, 105, 110, 110, 336, 103, 338,
+ 339, 340, 341, 342, 343, 344, 345, 102, 104, 334,
+ 110, 319, 102, 105, 8, 443, 444, 103, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 110,
+ 120, 110, 122, 123, 22, 104, 537, 105, 103, 44,
+ 73, 542, 41, 492, 369, 9, 103, 107, 497, 107,
+ 102, 110, 50, 403, 116, 116, 119, 106, 102, 107,
+ 103, 103, 98, 95, 384, 514, 515, 10, 403, 384,
+ 409, 22, 119, 119, 119, 22, 107, 107, 102, 102,
+ 106, 110, 103, 102, 104, 82, 102, 536, 103, 414,
+ 107, 102, 120, 107, 107, 107, 32, 107, 120, 431,
+ 102, 107, 25, 107, 1, 280, 431, 432, 103, 257,
+ 103, 231, 22, 121, 121, 234, 441, 384, 3, 333,
+ 173, 334, 314, 150, 237, 464, -1, -1, 433, 468,
+ -1, -1, 432, -1, -1, 45, -1, -1, -1, -1,
+ 490, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, -1, 69,
+ 70, -1, -1, 73, -1, -1, -1, -1, -1, 519,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, 6, 7, 94, -1, -1, 11, 12, 13,
+ 14, 101, 16, 17, 18, 520, 20, 21, 22, 538,
+ -1, -1, -1, -1, -1, -1, -1, -1, 547, -1,
+ -1, -1, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, -1, -1, -1, -1, -1, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, -1, 68, 69, 70, -1, -1, 73,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
+ 94, -1, -1, 97, 15, -1, 100, 101, -1, 20,
+ 21, 22, -1, -1, -1, 26, 27, 28, 29, 30,
+ 31, -1, -1, 34, 35, -1, -1, -1, -1, -1,
+ 41, -1, -1, 44, 45, 46, 47, 48, 49, -1,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ -1, -1, 73, 74, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 84, 85, -1, -1, -1, -1, -1,
+ -1, -1, -1, 94, -1, -1, 97, 15, 99, -1,
+ 101, -1, 20, 21, 22, 106, -1, -1, 26, 27,
+ 28, 29, 30, 31, -1, -1, 34, 35, -1, -1,
+ -1, -1, -1, 41, -1, -1, 44, 45, 46, 47,
+ 48, 49, -1, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, -1, -1, 73, 74, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 84, 85, -1, -1,
+ -1, -1, -1, -1, -1, -1, 94, -1, -1, 97,
+ 15, 99, -1, 101, -1, 20, 21, 22, 106, -1,
+ -1, 26, 27, 28, 29, 30, 31, -1, -1, 34,
+ 35, -1, -1, -1, -1, -1, 41, -1, -1, 44,
+ 45, 46, 47, 48, 49, -1, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, -1, -1, 73, 74,
+ -1, -1, -1, -1, 20, 21, 22, -1, -1, 84,
+ 85, -1, -1, -1, -1, -1, -1, -1, -1, 94,
+ -1, -1, 97, -1, 99, 41, 101, -1, 44, 45,
+ -1, -1, -1, -1, -1, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, -1, 68, 69, 70, -1, -1, 73, -1, 22,
+ -1, -1, -1, -1, -1, -1, -1, -1, 84, 85,
+ -1, -1, -1, -1, -1, -1, -1, -1, 94, -1,
+ -1, 97, 45, -1, 100, 101, -1, -1, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, -1, -1, 69, 70, -1, -1,
+ 73, -1, 75, 76, 77, 78, 79, 80, 81, 22,
+ -1, 24, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 96, -1, -1, -1, -1, 101, -1,
+ -1, -1, 45, -1, -1, -1, -1, -1, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, -1, -1, 69, 70, -1, -1,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, 82,
+ 83, -1, -1, -1, -1, -1, -1, 90, 91, 92,
+ 93, -1, -1, 45, -1, -1, 22, -1, 101, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, -1, -1, 69, 70, 45,
+ -1, 73, -1, -1, -1, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, -1, 94, 69, 70, -1, -1, -1, -1, 101,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 101
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned short int yystos[] =
+{
+ 0, 125, 126, 127, 0, 126, 3, 4, 5, 6,
+ 7, 11, 12, 13, 14, 16, 17, 18, 20, 21,
+ 22, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 68, 69, 70,
+ 73, 84, 85, 86, 87, 88, 89, 94, 97, 100,
+ 101, 128, 129, 130, 132, 133, 136, 138, 143, 146,
+ 150, 151, 155, 158, 159, 160, 161, 164, 165, 166,
+ 170, 171, 172, 173, 181, 183, 184, 185, 186, 187,
+ 188, 189, 192, 206, 207, 210, 211, 213, 214, 215,
+ 231, 249, 250, 254, 102, 19, 190, 191, 190, 23,
+ 190, 190, 190, 190, 190, 190, 45, 254, 102, 23,
+ 23, 23, 190, 190, 190, 206, 22, 206, 54, 22,
+ 195, 57, 52, 53, 54, 57, 254, 250, 22, 152,
+ 147, 22, 113, 235, 250, 206, 117, 22, 23, 162,
+ 71, 117, 18, 215, 22, 94, 253, 22, 131, 19,
+ 21, 23, 194, 137, 22, 108, 156, 157, 195, 216,
+ 212, 235, 54, 253, 22, 102, 144, 105, 105, 22,
+ 236, 237, 102, 102, 134, 250, 255, 82, 163, 207,
+ 255, 254, 102, 235, 102, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 120, 122, 123, 232,
+ 112, 114, 252, 103, 104, 190, 105, 140, 22, 72,
+ 103, 109, 119, 217, 235, 193, 252, 107, 253, 105,
+ 22, 153, 154, 22, 148, 149, 110, 104, 113, 75,
+ 76, 77, 78, 79, 80, 81, 96, 241, 242, 243,
+ 250, 251, 206, 235, 104, 118, 118, 139, 241, 107,
+ 103, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+ 117, 110, 118, 121, 110, 110, 102, 22, 33, 34,
+ 141, 142, 173, 22, 108, 195, 206, 218, 219, 235,
+ 105, 105, 22, 129, 145, 214, 106, 154, 106, 149,
+ 22, 24, 82, 238, 237, 195, 195, 195, 195, 195,
+ 102, 102, 195, 103, 104, 195, 110, 201, 103, 105,
+ 250, 140, 103, 8, 167, 110, 110, 241, 190, 190,
+ 106, 142, 22, 104, 105, 220, 15, 22, 26, 27,
+ 28, 29, 30, 31, 34, 35, 46, 47, 48, 49,
+ 67, 74, 99, 133, 143, 155, 158, 173, 175, 176,
+ 177, 178, 179, 180, 182, 192, 210, 211, 215, 221,
+ 222, 224, 225, 227, 230, 231, 244, 246, 247, 249,
+ 22, 155, 158, 196, 197, 198, 103, 106, 129, 201,
+ 201, 201, 241, 241, 73, 233, 243, 235, 108, 109,
+ 111, 116, 202, 204, 205, 173, 174, 233, 190, 9,
+ 168, 103, 107, 219, 221, 107, 190, 102, 190, 190,
+ 190, 190, 190, 190, 190, 190, 50, 223, 223, 223,
+ 119, 248, 245, 226, 106, 222, 116, 110, 200, 106,
+ 198, 102, 107, 103, 103, 95, 256, 109, 111, 112,
+ 113, 114, 115, 203, 24, 82, 83, 90, 91, 92,
+ 93, 206, 208, 254, 98, 135, 256, 190, 10, 169,
+ 233, 106, 241, 119, 119, 119, 231, 250, 67, 246,
+ 22, 227, 107, 22, 205, 235, 107, 255, 195, 195,
+ 102, 110, 234, 205, 102, 190, 106, 234, 190, 256,
+ 103, 22, 102, 104, 199, 103, 206, 257, 82, 235,
+ 202, 209, 107, 235, 234, 256, 103, 107, 103, 104,
+ 120, 229, 103, 104, 229, 235, 235, 256, 206, 250,
+ 107, 202, 107, 229, 120, 228, 234, 102, 32, 239,
+ 239, 107, 102, 107, 235, 241, 190, 25, 240, 240,
+ 239, 241, 239, 107, 103, 190, 240, 103, 239, 121,
+ 121, 240
+};
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror ("syntax error: cannot back up");\
+ YYERROR; \
+ } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ ((Current).first_line = (Rhs)[1].first_line, \
+ (Current).first_column = (Rhs)[1].first_column, \
+ (Current).last_line = (Rhs)[N].last_line, \
+ (Current).last_column = (Rhs)[N].last_column)
+#endif
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+# define YYDSYMPRINT(Args) \
+do { \
+ if (yydebug) \
+ yysymprint Args; \
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Token, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ short int *bottom;
+ short int *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+ int yyrule;
+#endif
+{
+ int yyi;
+ unsigned int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ yyrule - 1, yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ register const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ register char *yyd = yydest;
+ register const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+#endif /* !YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ if (yytype < YYNTOKENS)
+ {
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ }
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+ YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+
+ register int yystate;
+ register int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ register short int *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ register YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK (yyvsp--, yyssp--)
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short int *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyoverflowlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyoverflowlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short int *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyoverflowlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 4:
+#line 293 "parser.y"
+ {
+ /*
+ * We don't do these in parserEOF() because the parser
+ * is reading ahead and that would be too early.
+ */
+
+ if (previousFile != NULL)
+ {
+ handleEOF();
+
+ if (newContext.prevmod != NULL)
+ handleEOM();
+
+ free(previousFile);
+ previousFile = NULL;
+ }
+ }
+ break;
+
+ case 17:
+#line 323 "parser.y"
+ {
+ if (notSkipping())
+ appendCodeBlock(&currentSpec->exphdrcode, yyvsp[0].codeb);
+ }
+ break;
+
+ case 18:
+#line 327 "parser.y"
+ {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> hdrcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 19:
+#line 331 "parser.y"
+ {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> cppcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 41:
+#line 358 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *scope = currentScope();
+
+ if (scope == NULL)
+ yyerror("%TypeHeaderCode can only be used in a namespace, class or mapped type");
+
+ appendCodeBlock(&scope->hdrcode, yyvsp[0].codeb);
+ }
+ }
+ break;
+
+ case 43:
+#line 374 "parser.y"
+ {
+ appendString(&currentSpec->options, yyvsp[0].text);
+ }
+ break;
+
+ case 44:
+#line 377 "parser.y"
+ {
+ appendString(&currentSpec->options, yyvsp[0].text);
+ }
+ break;
+
+ case 45:
+#line 382 "parser.y"
+ {
+ if (notSkipping())
+ {
+ yywarning("%SIPNoEmitters is deprecated, please use %SIPOptions instead");
+ appendString(&currentSpec->options, "QtNoEmitters");
+ }
+ }
+ break;
+
+ case 46:
+#line 391 "parser.y"
+ {
+ if (notSkipping())
+ {
+ exceptionDef *xd;
+ char *pyname;
+
+ if (currentSpec->genc)
+ yyerror("%Exception not allowed in a C module");
+
+ pyname = getPythonName(&yyvsp[-5].optflags, scopedNameTail(yyvsp[-7].scpvalp));
+
+ checkAttributes(currentSpec, NULL, pyname, FALSE);
+
+ xd = findException(currentSpec, yyvsp[-7].scpvalp, TRUE);
+
+ if (xd->cd != NULL)
+ yyerror("%Exception name has already been seen as a class name - it must be defined before being used");
+
+ if (xd->iff->module != NULL)
+ yyerror("The %Exception has already been defined");
+
+ /* Complete the definition. */
+
+ xd->iff->module = currentModule;
+ xd->pyname = pyname;
+ xd->bibase = yyvsp[-6].exceptionbase.bibase;
+ xd->base = yyvsp[-6].exceptionbase.base;
+ xd->hdrcode = yyvsp[-3].codeb;
+ xd->raisecode = yyvsp[-2].codeb;
+
+ if (xd->bibase != NULL || xd->base != NULL)
+ xd->exceptionnr = currentModule->nrexceptions++;
+
+ if (inMainModule() && xd->base != NULL && xd->base->iff->module != currentModule)
+ addToUsedList(&currentSpec->used, xd->base->iff);
+ }
+ }
+ break;
+
+ case 47:
+#line 430 "parser.y"
+ {
+ yyval.exceptionbase.bibase = NULL;
+ yyval.exceptionbase.base = NULL;
+ }
+ break;
+
+ case 48:
+#line 434 "parser.y"
+ {
+ exceptionDef *xd;
+
+ yyval.exceptionbase.bibase = NULL;
+ yyval.exceptionbase.base = NULL;
+
+ /* See if it is a defined exception. */
+ for (xd = currentSpec->exceptions; xd != NULL; xd = xd->next)
+ if (sameScopedName(xd->iff->fqcname, yyvsp[-1].scpvalp))
+ {
+ yyval.exceptionbase.base = xd;
+ break;
+ }
+
+ if (xd == NULL && yyvsp[-1].scpvalp->next == NULL && strncmp(yyvsp[-1].scpvalp->name, "SIP_", 4) == 0)
+ {
+ /* See if it is a builtin exception. */
+
+ static char *builtins[] = {
+ "Exception",
+ "StopIteration",
+ "StandardError",
+ "ArithmeticError",
+ "LookupError",
+ "AssertionError",
+ "AttributeError",
+ "EOFError",
+ "FloatingPointError",
+ "EnvironmentError",
+ "IOError",
+ "OSError",
+ "ImportError",
+ "IndexError",
+ "KeyError",
+ "KeyboardInterrupt",
+ "MemoryError",
+ "NameError",
+ "OverflowError",
+ "RuntimeError",
+ "NotImplementedError",
+ "SyntaxError",
+ "IndentationError",
+ "TabError",
+ "ReferenceError",
+ "SystemError",
+ "SystemExit",
+ "TypeError",
+ "UnboundLocalError",
+ "UnicodeError",
+ "UnicodeEncodeError",
+ "UnicodeDecodeError",
+ "UnicodeTranslateError",
+ "ValueError",
+ "ZeroDivisionError",
+ "WindowsError",
+ "VMSError",
+ NULL
+ };
+
+ char **cp;
+
+ for (cp = builtins; *cp != NULL; ++cp)
+ if (strcmp(yyvsp[-1].scpvalp->name + 4, *cp) == 0)
+ {
+ yyval.exceptionbase.bibase = *cp;
+ break;
+ }
+ }
+
+ if (yyval.exceptionbase.bibase == NULL && yyval.exceptionbase.base == NULL)
+ yyerror("Unknown exception base type");
+ }
+ break;
+
+ case 49:
+#line 508 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 50:
+#line 513 "parser.y"
+ {
+ if (notSkipping())
+ currentMappedType = newMappedType(currentSpec,&yyvsp[0].memArg);
+ }
+ break;
+
+ case 52:
+#line 519 "parser.y"
+ {
+ int a;
+
+ if (currentSpec->genc)
+ yyerror("%MappedType templates not allowed in a C module");
+
+ /* Check the template arguments are all just simple names. */
+ for (a = 0; a < yyvsp[-2].signature.nrArgs; ++a)
+ if (yyvsp[-2].signature.args[a].atype != defined_type || yyvsp[-2].signature.args[a].u.snd->next != NULL)
+ yyerror("%MappedType template arguments must be simple names");
+
+ if (yyvsp[0].memArg.atype != template_type)
+ yyerror("%MappedType template must map a template type");
+
+ if (notSkipping())
+ {
+ mappedTypeTmplDef *mtt;
+
+ /* Check a template hasn't already been provided. */
+ for (mtt = currentSpec->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
+ if (sameScopedName(mtt->mt->type.u.td->fqname, yyvsp[0].memArg.u.td->fqname) && sameTemplateSignature(&mtt->mt->type.u.td->types, &yyvsp[0].memArg.u.td->types, TRUE))
+ yyerror("%MappedType template for this type has already been defined");
+
+ yyvsp[0].memArg.nrderefs = 0;
+ yyvsp[0].memArg.argflags = 0;
+
+ mtt = sipMalloc(sizeof (mappedTypeTmplDef));
+
+ mtt->sig = yyvsp[-2].signature;
+ mtt->mt = allocMappedType(&yyvsp[0].memArg);
+ mtt->next = currentSpec->mappedtypetemplates;
+
+ currentSpec->mappedtypetemplates = mtt;
+
+ currentMappedType = mtt->mt;
+ }
+ }
+ break;
+
+ case 54:
+#line 558 "parser.y"
+ {
+ if (notSkipping())
+ {
+ if (currentMappedType->convfromcode == NULL)
+ yyerror("%MappedType must have a %ConvertFromTypeCode directive");
+
+ if (currentMappedType->convtocode == NULL)
+ yyerror("%MappedType must have a %ConvertToTypeCode directive");
+
+ currentMappedType = NULL;
+ }
+ }
+ break;
+
+ case 57:
+#line 576 "parser.y"
+ {
+ if (notSkipping())
+ appendCodeBlock(&currentMappedType -> hdrcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 58:
+#line 580 "parser.y"
+ {
+ if (notSkipping())
+ {
+ if (currentMappedType -> convfromcode != NULL)
+ yyerror("%MappedType has more than one %ConvertFromTypeCode directive");
+
+ currentMappedType -> convfromcode = yyvsp[0].codeb;
+ }
+ }
+ break;
+
+ case 59:
+#line 589 "parser.y"
+ {
+ if (notSkipping())
+ {
+ if (currentMappedType -> convtocode != NULL)
+ yyerror("%MappedType has more than one %ConvertToTypeCode directive");
+
+ currentMappedType -> convtocode = yyvsp[0].codeb;
+ }
+ }
+ break;
+
+ case 60:
+#line 600 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("namespace definition not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classDef *ns;
+
+ ns = newClass(currentSpec,namespace_iface,text2scopedName(yyvsp[0].text));
+
+ pushScope(ns);
+
+ sectionFlags = 0;
+ }
+ }
+ break;
+
+ case 61:
+#line 614 "parser.y"
+ {
+ if (inMainModule())
+ {
+ classDef *ns = currentScope();
+
+ if (!isUsedName(ns->iff->name))
+ {
+ varDef *vd;
+
+ for (vd = currentSpec->vars; vd != NULL; vd = vd->next)
+ if (vd->ecd == ns)
+ {
+ setIsUsedName(ns->iff->name);
+ break;
+ }
+ }
+ }
+
+ if (notSkipping())
+ popScope();
+ }
+ break;
+
+ case 64:
+#line 641 "parser.y"
+ {
+ qualDef *qd;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == platform_qualifier)
+ yyerror("%Platforms has already been defined for this module");
+ }
+ break;
+
+ case 65:
+#line 648 "parser.y"
+ {
+ qualDef *qd;
+ int nrneeded;
+
+ /*
+ * Check that exactly one platform in the set was
+ * requested.
+ */
+
+ nrneeded = 0;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == platform_qualifier && isNeeded(qd))
+ ++nrneeded;
+
+ if (nrneeded > 1)
+ yyerror("No more than one of these %Platforms must be specified with the -t flag");
+ }
+ break;
+
+ case 68:
+#line 672 "parser.y"
+ {
+ newQualifier(currentModule,-1,-1,yyvsp[0].text,platform_qualifier);
+ }
+ break;
+
+ case 69:
+#line 677 "parser.y"
+ {
+ newQualifier(currentModule,-1,-1,yyvsp[0].text,feature_qualifier);
+ }
+ break;
+
+ case 70:
+#line 682 "parser.y"
+ {
+ currentTimelineOrder = 0;
+ }
+ break;
+
+ case 71:
+#line 685 "parser.y"
+ {
+ qualDef *qd;
+ int nrneeded;
+
+ /*
+ * Check that exactly one time slot in the set was
+ * requested.
+ */
+
+ nrneeded = 0;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == time_qualifier && isNeeded(qd))
+ ++nrneeded;
+
+ if (nrneeded > 1)
+ yyerror("At most one of this %Timeline must be specified with the -t flag");
+
+ currentModule -> nrtimelines++;
+ }
+ break;
+
+ case 74:
+#line 711 "parser.y"
+ {
+ newQualifier(currentModule,currentModule -> nrtimelines,currentTimelineOrder++,yyvsp[0].text,time_qualifier);
+ }
+ break;
+
+ case 75:
+#line 716 "parser.y"
+ {
+ if (skipStackPtr >= MAX_NESTED_IF)
+ yyerror("Internal error: increase the value of MAX_NESTED_IF");
+
+ /* Nested %Ifs are implicit logical ands. */
+
+ if (skipStackPtr > 0)
+ yyvsp[-1].boolean = (yyvsp[-1].boolean && skipStack[skipStackPtr - 1]);
+
+ skipStack[skipStackPtr++] = yyvsp[-1].boolean;
+ }
+ break;
+
+ case 76:
+#line 729 "parser.y"
+ {
+ yyval.boolean = platOrFeature(yyvsp[0].text,FALSE);
+ }
+ break;
+
+ case 77:
+#line 732 "parser.y"
+ {
+ yyval.boolean = platOrFeature(yyvsp[0].text,TRUE);
+ }
+ break;
+
+ case 78:
+#line 735 "parser.y"
+ {
+ yyval.boolean = (platOrFeature(yyvsp[0].text,FALSE) || yyvsp[-2].boolean);
+ }
+ break;
+
+ case 79:
+#line 738 "parser.y"
+ {
+ yyval.boolean = (platOrFeature(yyvsp[0].text,TRUE) || yyvsp[-3].boolean);
+ }
+ break;
+
+ case 81:
+#line 744 "parser.y"
+ {
+ yyval.boolean = timePeriod(yyvsp[-2].text,yyvsp[0].text);
+ }
+ break;
+
+ case 82:
+#line 749 "parser.y"
+ {
+ if (skipStackPtr-- <= 0)
+ yyerror("Too many %End directives");
+ }
+ break;
+
+ case 83:
+#line 755 "parser.y"
+ {
+ optFlag *of;
+
+ if (yyvsp[0].optflags.nrFlags == 0)
+ yyerror("%License details not specified");
+
+ if ((of = findOptFlag(&yyvsp[0].optflags,"Type",string_flag)) == NULL)
+ yyerror("%License type not specified");
+
+ currentModule -> license = sipMalloc(sizeof (licenseDef));
+
+ currentModule -> license -> type = of -> fvalue.sval;
+
+ currentModule -> license -> licensee =
+ ((of = findOptFlag(&yyvsp[0].optflags,"Licensee",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+
+ currentModule -> license -> timestamp =
+ ((of = findOptFlag(&yyvsp[0].optflags,"Timestamp",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+
+ currentModule -> license -> sig =
+ ((of = findOptFlag(&yyvsp[0].optflags,"Signature",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+ }
+ break;
+
+ case 84:
+#line 782 "parser.y"
+ {
+ /* Check the module hasn't already been defined. */
+
+ moduleDef *mod;
+
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ if (mod->fullname != NULL && strcmp(mod->fullname, yyvsp[-1].text) == 0)
+ yyerror("Module is already defined");
+
+ currentModule->fullname = yyvsp[-1].text;
+
+ if ((currentModule->name = strrchr(yyvsp[-1].text, '.')) != NULL)
+ currentModule->name++;
+ else
+ currentModule->name = yyvsp[-1].text;
+
+ currentModule -> version = yyvsp[0].number;
+
+ if (currentSpec -> genc < 0)
+ currentSpec -> genc = yyvsp[-2].boolean;
+ else if (currentSpec -> genc != yyvsp[-2].boolean)
+ yyerror("Cannot mix C and C++ modules");
+ }
+ break;
+
+ case 85:
+#line 807 "parser.y"
+ {
+ yyval.boolean = FALSE;
+ }
+ break;
+
+ case 86:
+#line 810 "parser.y"
+ {
+ yyval.boolean = TRUE;
+ }
+ break;
+
+ case 88:
+#line 816 "parser.y"
+ {
+ /*
+ * The grammar design is a bit broken and this is the
+ * easiest way to allow periods in module names.
+ */
+
+ char *cp;
+
+ for (cp = yyvsp[0].text; *cp != '\0'; ++cp)
+ if (*cp != '.' && *cp != '_' && !isalnum(*cp))
+ yyerror("Invalid character in module name");
+
+ yyval.text = yyvsp[0].text;
+ }
+ break;
+
+ case 89:
+#line 832 "parser.y"
+ {
+ yyval.number = -1;
+ }
+ break;
+
+ case 91:
+#line 838 "parser.y"
+ {
+ parseFile(NULL,yyvsp[0].text,NULL,FALSE);
+ }
+ break;
+
+ case 92:
+#line 843 "parser.y"
+ {
+ parseFile(NULL,yyvsp[0].text,NULL,TRUE);
+ }
+ break;
+
+ case 93:
+#line 848 "parser.y"
+ {
+ newImport(yyvsp[0].text);
+ }
+ break;
+
+ case 94:
+#line 853 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 95:
+#line 856 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 96:
+#line 861 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 97:
+#line 864 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 98:
+#line 869 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 99:
+#line 872 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 100:
+#line 877 "parser.y"
+ {
+ if (inMainModule())
+ appendCodeBlock(&currentSpec -> copying,yyvsp[0].codeb);
+ }
+ break;
+
+ case 101:
+#line 883 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 102:
+#line 888 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 103:
+#line 893 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 104:
+#line 898 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 106:
+#line 904 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 107:
+#line 909 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 108:
+#line 914 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 109:
+#line 919 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 110:
+#line 924 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 111:
+#line 929 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 112:
+#line 934 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 113:
+#line 939 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 114:
+#line 944 "parser.y"
+ {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> preinitcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 115:
+#line 950 "parser.y"
+ {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> postinitcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 116:
+#line 956 "parser.y"
+ {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec->unitcode, yyvsp[0].codeb);
+ }
+ break;
+
+ case 117:
+#line 962 "parser.y"
+ {
+ /*
+ * This is a no-op and is retained for compatibility
+ * until the last use of it (by SIP v3) can be removed
+ * from PyQt.
+ */
+ }
+ break;
+
+ case 118:
+#line 971 "parser.y"
+ {
+ if (inMainModule())
+ appendCodeBlock(&currentSpec -> docs,yyvsp[0].codeb);
+ }
+ break;
+
+ case 119:
+#line 977 "parser.y"
+ {
+ appendCodeBlock(&currentSpec -> docs,yyvsp[0].codeb);
+ }
+ break;
+
+ case 120:
+#line 982 "parser.y"
+ {
+ if (inMainModule())
+ yywarning("%Makefile is ignored, please use the -b flag instead");
+ }
+ break;
+
+ case 123:
+#line 992 "parser.y"
+ {
+ yyval.codeb = yyvsp[-1].codeb;
+
+ append(&yyval.codeb->frag, yyvsp[0].codeb->frag);
+
+ free(yyvsp[0].codeb->frag);
+ free(yyvsp[0].codeb->filename);
+ free(yyvsp[0].codeb);
+ }
+ break;
+
+ case 124:
+#line 1003 "parser.y"
+ {
+ if (notSkipping())
+ {
+ if (sectionFlags != 0 && (sectionFlags & ~(SECT_IS_PUBLIC | SECT_IS_PROT)) != 0)
+ yyerror("Class enums must be in the public or protected sections");
+
+ currentEnum = newEnum(currentSpec,currentModule,yyvsp[-1].text,&yyvsp[0].optflags,sectionFlags);
+ }
+ }
+ break;
+
+ case 126:
+#line 1014 "parser.y"
+ {
+ yyval.text = NULL;
+ }
+ break;
+
+ case 127:
+#line 1017 "parser.y"
+ {
+ yyval.text = yyvsp[0].text;
+ }
+ break;
+
+ case 128:
+#line 1022 "parser.y"
+ {
+ yyval.text = NULL;
+ }
+ break;
+
+ case 129:
+#line 1025 "parser.y"
+ {
+ yyval.text = yyvsp[0].text;
+ }
+ break;
+
+ case 136:
+#line 1040 "parser.y"
+ {
+ if (notSkipping())
+ {
+ /*
+ * Note that we don't use the assigned value.
+ * This is a hangover from when enums where
+ * generated in Python. We can remove it when
+ * we have got around to updating all the .sip
+ * files.
+ */
+ enumMemberDef *emd, **tail;
+
+ emd = sipMalloc(sizeof (enumMemberDef));
+
+ emd -> pyname = cacheName(currentSpec, getPythonName(&yyvsp[-1].optflags, yyvsp[-3].text));
+ emd -> cname = yyvsp[-3].text;
+ emd -> ed = currentEnum;
+ emd -> next = NULL;
+
+ checkAttributes(currentSpec,emd -> ed -> ecd,emd -> pyname -> text,FALSE);
+
+ /* Append to preserve the order. */
+ for (tail = &currentEnum->members; *tail != NULL; tail = &(*tail)->next)
+ ;
+
+ *tail = emd;
+
+ if (inMainModule())
+ setIsUsedName(emd -> pyname);
+ }
+ }
+ break;
+
+ case 141:
+#line 1081 "parser.y"
+ {
+ yyval.valp = NULL;
+ }
+ break;
+
+ case 142:
+#line 1084 "parser.y"
+ {
+ yyval.valp = yyvsp[0].valp;
+ }
+ break;
+
+ case 144:
+#line 1090 "parser.y"
+ {
+ valueDef *vd;
+
+ if (yyvsp[-2].valp -> vtype == string_value || yyvsp[0].valp -> vtype == string_value)
+ yyerror("Invalid binary operator for string");
+
+ /* Find the last value in the existing expression. */
+
+ for (vd = yyvsp[-2].valp; vd -> next != NULL; vd = vd -> next)
+ ;
+
+ vd -> vbinop = yyvsp[-1].qchar;
+ vd -> next = yyvsp[0].valp;
+
+ yyval.valp = yyvsp[-2].valp;
+ }
+ break;
+
+ case 145:
+#line 1108 "parser.y"
+ {
+ yyval.qchar = '-';
+ }
+ break;
+
+ case 146:
+#line 1111 "parser.y"
+ {
+ yyval.qchar = '+';
+ }
+ break;
+
+ case 147:
+#line 1114 "parser.y"
+ {
+ yyval.qchar = '*';
+ }
+ break;
+
+ case 148:
+#line 1117 "parser.y"
+ {
+ yyval.qchar = '/';
+ }
+ break;
+
+ case 149:
+#line 1120 "parser.y"
+ {
+ yyval.qchar = '&';
+ }
+ break;
+
+ case 150:
+#line 1123 "parser.y"
+ {
+ yyval.qchar = '|';
+ }
+ break;
+
+ case 151:
+#line 1128 "parser.y"
+ {
+ yyval.qchar = '\0';
+ }
+ break;
+
+ case 152:
+#line 1131 "parser.y"
+ {
+ yyval.qchar = '!';
+ }
+ break;
+
+ case 153:
+#line 1134 "parser.y"
+ {
+ yyval.qchar = '~';
+ }
+ break;
+
+ case 154:
+#line 1137 "parser.y"
+ {
+ yyval.qchar = '-';
+ }
+ break;
+
+ case 155:
+#line 1140 "parser.y"
+ {
+ yyval.qchar = '+';
+ }
+ break;
+
+ case 156:
+#line 1145 "parser.y"
+ {
+ if (yyvsp[-1].qchar != '\0' && yyvsp[0].value.vtype == string_value)
+ yyerror("Invalid unary operator for string");
+
+ /*
+ * Convert the value to a simple expression on the
+ * heap.
+ */
+
+ yyval.valp = sipMalloc(sizeof (valueDef));
+
+ *yyval.valp = yyvsp[0].value;
+ yyval.valp -> vunop = yyvsp[-1].qchar;
+ yyval.valp -> vbinop = '\0';
+ yyval.valp -> next = NULL;
+ }
+ break;
+
+ case 158:
+#line 1164 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("Scoped names are not allowed in a C module");
+
+ appendScopedName(&yyvsp[-2].scpvalp,yyvsp[0].scpvalp);
+ }
+ break;
+
+ case 159:
+#line 1172 "parser.y"
+ {
+ yyval.scpvalp = text2scopePart(yyvsp[0].text);
+ }
+ break;
+
+ case 160:
+#line 1177 "parser.y"
+ {
+ /*
+ * We let the C++ compiler decide if the value is a
+ * valid one - no point in building a full C++ parser
+ * here.
+ */
+
+ yyval.value.vtype = scoped_value;
+ yyval.value.u.vscp = yyvsp[0].scpvalp;
+ }
+ break;
+
+ case 161:
+#line 1187 "parser.y"
+ {
+ fcallDef *fcd;
+
+ fcd = sipMalloc(sizeof (fcallDef));
+ *fcd = yyvsp[-1].fcall;
+ fcd -> type = yyvsp[-3].memArg;
+
+ yyval.value.vtype = fcall_value;
+ yyval.value.u.fcd = fcd;
+ }
+ break;
+
+ case 162:
+#line 1197 "parser.y"
+ {
+ yyval.value.vtype = real_value;
+ yyval.value.u.vreal = yyvsp[0].real;
+ }
+ break;
+
+ case 163:
+#line 1201 "parser.y"
+ {
+ yyval.value.vtype = numeric_value;
+ yyval.value.u.vnum = yyvsp[0].number;
+ }
+ break;
+
+ case 164:
+#line 1205 "parser.y"
+ {
+ yyval.value.vtype = numeric_value;
+ yyval.value.u.vnum = 1;
+ }
+ break;
+
+ case 165:
+#line 1209 "parser.y"
+ {
+ yyval.value.vtype = numeric_value;
+ yyval.value.u.vnum = 0;
+ }
+ break;
+
+ case 166:
+#line 1213 "parser.y"
+ {
+ yyval.value.vtype = numeric_value;
+ yyval.value.u.vnum = 0;
+ }
+ break;
+
+ case 167:
+#line 1217 "parser.y"
+ {
+ yyval.value.vtype = string_value;
+ yyval.value.u.vstr = yyvsp[0].text;
+ }
+ break;
+
+ case 168:
+#line 1221 "parser.y"
+ {
+ yyval.value.vtype = qchar_value;
+ yyval.value.u.vqchar = yyvsp[0].qchar;
+ }
+ break;
+
+ case 169:
+#line 1227 "parser.y"
+ {
+ /* No values. */
+
+ yyval.fcall.nrArgs = 0;
+ }
+ break;
+
+ case 170:
+#line 1232 "parser.y"
+ {
+ /* The single or first expression. */
+
+ yyval.fcall.args[0] = yyvsp[0].valp;
+ yyval.fcall.nrArgs = 1;
+ }
+ break;
+
+ case 171:
+#line 1238 "parser.y"
+ {
+ /* Check that it wasn't ...(,expression...). */
+
+ if (yyval.fcall.nrArgs == 0)
+ yyerror("First argument to function call is missing");
+
+ /* Check there is room. */
+
+ if (yyvsp[-2].fcall.nrArgs == MAX_NR_ARGS)
+ yyerror("Too many arguments to function call");
+
+ yyval.fcall = yyvsp[-2].fcall;
+
+ yyval.fcall.args[yyval.fcall.nrArgs] = yyvsp[0].valp;
+ yyval.fcall.nrArgs++;
+ }
+ break;
+
+ case 172:
+#line 1256 "parser.y"
+ {
+ if (notSkipping())
+ newTypedef(currentSpec,currentModule,yyvsp[-1].text,&yyvsp[-2].memArg);
+ }
+ break;
+
+ case 173:
+#line 1260 "parser.y"
+ {
+ if (notSkipping())
+ {
+ argDef ftype;
+ signatureDef *sig;
+
+ /* Create the full signature on the heap. */
+ sig = sipMalloc(sizeof (signatureDef));
+ *sig = yyvsp[-2].signature;
+ sig -> result = yyvsp[-8].memArg;
+
+ /* Create the full type. */
+ ftype.atype = function_type;
+ ftype.argflags = 0;
+ ftype.nrderefs = yyvsp[-6].number;
+ ftype.defval = NULL;
+ ftype.u.sa = sig;
+
+ newTypedef(currentSpec,currentModule,yyvsp[-5].text,&ftype);
+ }
+ }
+ break;
+
+ case 174:
+#line 1283 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd;
+
+ cd = newClass(currentSpec,class_iface,text2scopedName(yyvsp[0].text));
+
+ pushScope(cd);
+
+ sectionFlags = SECT_IS_PUBLIC;
+ }
+ }
+ break;
+
+ case 175:
+#line 1294 "parser.y"
+ {
+ if (notSkipping())
+ {
+ finishClass(currentSpec, currentModule, currentScope(), &yyvsp[-4].optflags);
+ popScope();
+ }
+ }
+ break;
+
+ case 176:
+#line 1303 "parser.y"
+ {
+ if (currentSpec->genc)
+ yyerror("Class templates not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classTmplDef *tcd;
+
+ /*
+ * Make sure there is room for the extra class
+ * name argument.
+ */
+ if (yyvsp[-1].signature.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ tcd = sipMalloc(sizeof (classTmplDef));
+ tcd->sig = yyvsp[-1].signature;
+ tcd->cd = yyvsp[0].klass;
+ tcd->next = currentSpec->classtemplates;
+
+ currentSpec->classtemplates = tcd;
+ }
+ }
+ break;
+
+ case 177:
+#line 1328 "parser.y"
+ {
+ yyval.signature = yyvsp[-1].signature;
+ }
+ break;
+
+ case 178:
+#line 1333 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("Class definition not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classDef *cd;
+
+ cd = newClass(currentSpec, class_iface, scopeScopedName(yyvsp[0].scpvalp));
+
+ pushScope(cd);
+
+ sectionFlags = SECT_IS_PRIVATE;
+ }
+ }
+ break;
+
+ case 179:
+#line 1347 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ /*
+ * See if the class was defined or just
+ * declared.
+ */
+ if (yyvsp[-1].boolean)
+ {
+ if (yyvsp[-5].scpvalp->next != NULL)
+ yyerror("A scoped name cannot be given in a class definition");
+
+ }
+ else if (cd->supers != NULL)
+ yyerror("Class has super-classes but no definition");
+ else
+ setIsOpaque(cd);
+
+ finishClass(currentSpec, currentModule, cd, &yyvsp[-2].optflags);
+ popScope();
+
+ /*
+ * Check that external classes have only been
+ * declared at the global scope.
+ */
+ if (isExternal(cd) && currentScope() != NULL)
+ yyerror("External classes can only be declared in the global scope");
+
+ yyval.klass = cd;
+ }
+ }
+ break;
+
+ case 184:
+#line 1390 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd, *super;
+
+ cd = currentScope();
+
+ super = findClass(currentSpec,class_iface,yyvsp[0].scpvalp);
+
+ appendToClassList(&cd -> supers,super);
+ addToUsedList(&cd->iff->used, super->iff);
+ }
+ }
+ break;
+
+ case 185:
+#line 1405 "parser.y"
+ {
+ yyval.boolean = FALSE;
+ }
+ break;
+
+ case 186:
+#line 1408 "parser.y"
+ {
+ yyval.boolean = TRUE;
+ }
+ break;
+
+ case 197:
+#line 1425 "parser.y"
+ {
+ if (notSkipping())
+ appendCodeBlock(&currentScope() -> cppcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 198:
+#line 1429 "parser.y"
+ {
+ if (notSkipping())
+ appendCodeBlock(&currentScope() -> hdrcode,yyvsp[0].codeb);
+ }
+ break;
+
+ case 199:
+#line 1433 "parser.y"
+ {
+ if (currentScope()->travcode != NULL)
+ yyerror("%GCTraverseCode already given for class");
+
+ if (notSkipping())
+ currentScope()->travcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 200:
+#line 1440 "parser.y"
+ {
+ if (currentScope()->clearcode != NULL)
+ yyerror("%GCClearCode already given for class");
+
+ if (notSkipping())
+ currentScope()->clearcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 201:
+#line 1447 "parser.y"
+ {
+ if (currentScope()->readbufcode != NULL)
+ yyerror("%BIGetReadBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->readbufcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 202:
+#line 1454 "parser.y"
+ {
+ if (currentScope()->writebufcode != NULL)
+ yyerror("%BIGetWriteBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->writebufcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 203:
+#line 1461 "parser.y"
+ {
+ if (currentScope()->segcountcode != NULL)
+ yyerror("%BIGetSegCountCode already given for class");
+
+ if (notSkipping())
+ currentScope()->segcountcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 204:
+#line 1468 "parser.y"
+ {
+ if (currentScope()->charbufcode != NULL)
+ yyerror("%BIGetCharBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->charbufcode = yyvsp[0].codeb;
+ }
+ break;
+
+ case 208:
+#line 1478 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (cd -> convtosubcode != NULL)
+ yyerror("Class has more than one %ConvertToSubClassCode directive");
+
+ cd -> convtosubcode = yyvsp[0].codeb;
+ }
+ }
+ break;
+
+ case 209:
+#line 1489 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (cd -> convtocode != NULL)
+ yyerror("Class has more than one %ConvertToTypeCode directive");
+
+ cd -> convtocode = yyvsp[0].codeb;
+ }
+ }
+ break;
+
+ case 210:
+#line 1500 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("public section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PUBLIC | yyvsp[-1].number;
+ }
+ break;
+
+ case 211:
+#line 1507 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("protected section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PROT | yyvsp[-1].number;
+ }
+ break;
+
+ case 212:
+#line 1514 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("private section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PRIVATE | yyvsp[-1].number;
+ }
+ break;
+
+ case 213:
+#line 1521 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("signals section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_SIGNAL;
+ }
+ break;
+
+ case 214:
+#line 1530 "parser.y"
+ {
+ yyval.number = 0;
+ }
+ break;
+
+ case 215:
+#line 1533 "parser.y"
+ {
+ yyval.number = SECT_IS_SLOT;
+ }
+ break;
+
+ case 216:
+#line 1538 "parser.y"
+ {
+ /* Note that we allow non-virtual dtors in C modules. */
+
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (strcmp(classBaseName(cd),yyvsp[-8].text) != 0)
+ yyerror("Destructor doesn't have the same name as its class");
+
+ if (isDtor(cd))
+ yyerror("Destructor has already been defined");
+
+ if (currentSpec -> genc && yyvsp[-1].codeb == NULL)
+ yyerror("Destructor in C modules must include %MethodCode");
+
+ cd -> dealloccode = yyvsp[-1].codeb;
+ cd -> dtorcode = yyvsp[0].codeb;
+ cd -> dtorexceptions = yyvsp[-5].throwlist;
+ cd -> classflags |= sectionFlags;
+
+ if (yyvsp[-4].number)
+ {
+ if (!yyvsp[-10].number)
+ yyerror("Abstract destructor must be virtual");
+
+ setIsAbstractClass(cd);
+ }
+
+ /*
+ * The class has a shadow if we have a virtual dtor or some
+ * dtor code.
+ */
+ if (yyvsp[-10].number || yyvsp[0].codeb != NULL)
+ {
+ if (currentSpec -> genc)
+ yyerror("Virtual destructor or %VirtualCatcherCode not allowed in a C module");
+
+ setHasShadow(cd);
+ }
+
+ if (getReleaseGIL(&yyvsp[-3].optflags))
+ setIsReleaseGILDtor(cd);
+ else if (getHoldGIL(&yyvsp[-3].optflags))
+ setIsHoldGILDtor(cd);
+ }
+ }
+ break;
+
+ case 217:
+#line 1587 "parser.y"
+ {currentCtorIsExplicit = TRUE;}
+ break;
+
+ case 220:
+#line 1591 "parser.y"
+ {
+ /* Note that we allow ctors in C modules. */
+
+ if (notSkipping())
+ {
+ if (currentSpec -> genc)
+ {
+ if (yyvsp[0].codeb == NULL && yyvsp[-6].signature.nrArgs != 0)
+ yyerror("Constructors with arguments in C modules must include %MethodCode");
+
+ if (currentCtorIsExplicit)
+ yyerror("Explicit constructors not allowed in a C module");
+ }
+
+ if ((sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE)) == 0)
+ yyerror("Constructor must be in the public, private or protected sections");
+
+ newCtor(yyvsp[-8].text,sectionFlags,&yyvsp[-6].signature,&yyvsp[-3].optflags,yyvsp[0].codeb,yyvsp[-4].throwlist,yyvsp[-2].optsignature,currentCtorIsExplicit);
+ }
+
+ free(yyvsp[-8].text);
+
+ currentCtorIsExplicit = FALSE;
+ }
+ break;
+
+ case 221:
+#line 1617 "parser.y"
+ {
+ yyval.optsignature = NULL;
+ }
+ break;
+
+ case 222:
+#line 1620 "parser.y"
+ {
+ yyval.optsignature = sipMalloc(sizeof (signatureDef));
+
+ *yyval.optsignature = yyvsp[-2].signature;
+ }
+ break;
+
+ case 223:
+#line 1627 "parser.y"
+ {
+ yyval.optsignature = NULL;
+ }
+ break;
+
+ case 224:
+#line 1630 "parser.y"
+ {
+ yyval.optsignature = sipMalloc(sizeof (signatureDef));
+
+ *yyval.optsignature = yyvsp[-2].signature;
+ yyval.optsignature -> result = yyvsp[-4].memArg;
+ }
+ break;
+
+ case 225:
+#line 1638 "parser.y"
+ {
+ yyval.number = FALSE;
+ }
+ break;
+
+ case 226:
+#line 1641 "parser.y"
+ {
+ yyval.number = TRUE;
+ }
+ break;
+
+ case 227:
+#line 1646 "parser.y"
+ {
+ if (notSkipping())
+ {
+ if (sectionFlags != 0 && (sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE | SECT_IS_SLOT | SECT_IS_SIGNAL)) == 0)
+ yyerror("Class function must be in the public, private, protected, slot or signal sections");
+
+ yyvsp[-9].signature.result = yyvsp[-12].memArg;
+
+ newFunction(currentSpec,currentModule,
+ sectionFlags,currentIsStatic,
+ currentOverIsVirt,
+ yyvsp[-11].text,&yyvsp[-9].signature,yyvsp[-7].number,yyvsp[-5].number,&yyvsp[-4].optflags,yyvsp[-1].codeb,yyvsp[0].codeb,yyvsp[-6].throwlist,yyvsp[-3].optsignature);
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ break;
+
+ case 228:
+#line 1663 "parser.y"
+ {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ /* Handle the unary '+' and '-' operators. */
+ if ((cd != NULL && yyvsp[-9].signature.nrArgs == 0) || (cd == NULL && yyvsp[-9].signature.nrArgs == 1))
+ {
+ if (strcmp(yyvsp[-11].text, "__add__") == 0)
+ yyvsp[-11].text = "__pos__";
+ else if (strcmp(yyvsp[-11].text, "__sub__") == 0)
+ yyvsp[-11].text = "__neg__";
+ }
+
+ yyvsp[-9].signature.result = yyvsp[-13].memArg;
+
+ newFunction(currentSpec,currentModule,
+ sectionFlags,currentIsStatic,
+ currentOverIsVirt,
+ yyvsp[-11].text,&yyvsp[-9].signature,yyvsp[-7].number,yyvsp[-5].number,&yyvsp[-4].optflags,yyvsp[-1].codeb,yyvsp[0].codeb,yyvsp[-6].throwlist,yyvsp[-3].optsignature);
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ break;
+
+ case 229:
+#line 1688 "parser.y"
+ {
+ classDef *scope = currentScope();
+
+ if (scope == NULL || yyvsp[-9].signature.nrArgs != 0)
+ yyerror("Operator casts must be specified in a class and have no arguments");
+
+
+ if (notSkipping())
+ {
+ char *sname;
+
+ switch (yyvsp[-11].memArg.atype)
+ {
+ case defined_type:
+ sname = NULL;
+ break;
+
+ case bool_type:
+ case cbool_type:
+ case short_type:
+ case ushort_type:
+ case int_type:
+ case cint_type:
+ case uint_type:
+ sname = "__int__";
+ break;
+
+ case long_type:
+ case ulong_type:
+ case longlong_type:
+ case ulonglong_type:
+ sname = "__long__";
+ break;
+
+ case float_type:
+ case cfloat_type:
+ case double_type:
+ case cdouble_type:
+ sname = "__float__";
+ break;
+
+ default:
+ yyerror("Unsupported operator cast");
+ }
+
+ if (sname != NULL)
+ {
+ yyvsp[-9].signature.result = yyvsp[-11].memArg;
+
+ newFunction(currentSpec, currentModule,
+ sectionFlags,
+ currentIsStatic,
+ currentOverIsVirt, sname,
+ &yyvsp[-9].signature, yyvsp[-7].number, yyvsp[-5].number, &yyvsp[-4].optflags, yyvsp[-1].codeb, yyvsp[0].codeb,
+ yyvsp[-6].throwlist, yyvsp[-3].optsignature);
+ }
+ else
+ {
+ argList *al;
+
+ /* Check it doesn't already exist. */
+ for (al = scope->casts; al != NULL; al = al->next)
+ if (sameScopedName(yyvsp[-11].memArg.u.snd, al->arg.u.snd))
+ yyerror("This operator cast has already been specified in this class");
+
+ al = sipMalloc(sizeof (argList));
+ al->arg = yyvsp[-11].memArg;
+ al->next = scope->casts;
+
+ scope->casts = al;
+ }
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ break;
+
+ case 230:
+#line 1766 "parser.y"
+ {yyval.text = "__add__";}
+ break;
+
+ case 231:
+#line 1767 "parser.y"
+ {yyval.text = "__sub__";}
+ break;
+
+ case 232:
+#line 1768 "parser.y"
+ {yyval.text = "__mul__";}
+ break;
+
+ case 233:
+#line 1769 "parser.y"
+ {yyval.text = "__div__";}
+ break;
+
+ case 234:
+#line 1770 "parser.y"
+ {yyval.text = "__mod__";}
+ break;
+
+ case 235:
+#line 1771 "parser.y"
+ {yyval.text = "__and__";}
+ break;
+
+ case 236:
+#line 1772 "parser.y"
+ {yyval.text = "__or__";}
+ break;
+
+ case 237:
+#line 1773 "parser.y"
+ {yyval.text = "__xor__";}
+ break;
+
+ case 238:
+#line 1774 "parser.y"
+ {yyval.text = "__lshift__";}
+ break;
+
+ case 239:
+#line 1775 "parser.y"
+ {yyval.text = "__rshift__";}
+ break;
+
+ case 240:
+#line 1776 "parser.y"
+ {yyval.text = "__iadd__";}
+ break;
+
+ case 241:
+#line 1777 "parser.y"
+ {yyval.text = "__isub__";}
+ break;
+
+ case 242:
+#line 1778 "parser.y"
+ {yyval.text = "__imul__";}
+ break;
+
+ case 243:
+#line 1779 "parser.y"
+ {yyval.text = "__idiv__";}
+ break;
+
+ case 244:
+#line 1780 "parser.y"
+ {yyval.text = "__imod__";}
+ break;
+
+ case 245:
+#line 1781 "parser.y"
+ {yyval.text = "__iand__";}
+ break;
+
+ case 246:
+#line 1782 "parser.y"
+ {yyval.text = "__ior__";}
+ break;
+
+ case 247:
+#line 1783 "parser.y"
+ {yyval.text = "__ixor__";}
+ break;
+
+ case 248:
+#line 1784 "parser.y"
+ {yyval.text = "__ilshift__";}
+ break;
+
+ case 249:
+#line 1785 "parser.y"
+ {yyval.text = "__irshift__";}
+ break;
+
+ case 250:
+#line 1786 "parser.y"
+ {yyval.text = "__invert__";}
+ break;
+
+ case 251:
+#line 1787 "parser.y"
+ {yyval.text = "__call__";}
+ break;
+
+ case 252:
+#line 1788 "parser.y"
+ {yyval.text = "__getitem__";}
+ break;
+
+ case 253:
+#line 1789 "parser.y"
+ {yyval.text = "__lt__";}
+ break;
+
+ case 254:
+#line 1790 "parser.y"
+ {yyval.text = "__le__";}
+ break;
+
+ case 255:
+#line 1791 "parser.y"
+ {yyval.text = "__eq__";}
+ break;
+
+ case 256:
+#line 1792 "parser.y"
+ {yyval.text = "__ne__";}
+ break;
+
+ case 257:
+#line 1793 "parser.y"
+ {yyval.text = "__gt__";}
+ break;
+
+ case 258:
+#line 1794 "parser.y"
+ {yyval.text = "__ge__";}
+ break;
+
+ case 259:
+#line 1797 "parser.y"
+ {
+ yyval.number = FALSE;
+ }
+ break;
+
+ case 260:
+#line 1800 "parser.y"
+ {
+ yyval.number = TRUE;
+ }
+ break;
+
+ case 261:
+#line 1805 "parser.y"
+ {
+ yyval.number = 0;
+ }
+ break;
+
+ case 262:
+#line 1808 "parser.y"
+ {
+ if (yyvsp[0].number != 0)
+ yyerror("Abstract virtual function '= 0' expected");
+
+ yyval.number = TRUE;
+ }
+ break;
+
+ case 263:
+#line 1816 "parser.y"
+ {
+ yyval.optflags.nrFlags = 0;
+ }
+ break;
+
+ case 264:
+#line 1819 "parser.y"
+ {
+ yyval.optflags = yyvsp[-1].optflags;
+ }
+ break;
+
+ case 265:
+#line 1825 "parser.y"
+ {
+ yyval.optflags.flags[0] = yyvsp[0].flag;
+ yyval.optflags.nrFlags = 1;
+ }
+ break;
+
+ case 266:
+#line 1829 "parser.y"
+ {
+ /* Check there is room. */
+
+ if (yyvsp[-2].optflags.nrFlags == MAX_NR_FLAGS)
+ yyerror("Too many optional flags");
+
+ yyval.optflags = yyvsp[-2].optflags;
+
+ yyval.optflags.flags[yyval.optflags.nrFlags++] = yyvsp[0].flag;
+ }
+ break;
+
+ case 267:
+#line 1841 "parser.y"
+ {
+ yyval.flag.ftype = bool_flag;
+ yyval.flag.fname = yyvsp[0].text;
+ }
+ break;
+
+ case 268:
+#line 1845 "parser.y"
+ {
+ yyval.flag = yyvsp[0].flag;
+ yyval.flag.fname = yyvsp[-2].text;
+ }
+ break;
+
+ case 269:
+#line 1851 "parser.y"
+ {
+ yyval.flag.ftype = name_flag;
+ yyval.flag.fvalue.sval = yyvsp[0].text;
+ }
+ break;
+
+ case 270:
+#line 1855 "parser.y"
+ {
+ yyval.flag.ftype = string_flag;
+ yyval.flag.fvalue.sval = yyvsp[0].text;
+ }
+ break;
+
+ case 271:
+#line 1859 "parser.y"
+ {
+ yyval.flag.ftype = integer_flag;
+ yyval.flag.fvalue.ival = yyvsp[0].number;
+ }
+ break;
+
+ case 272:
+#line 1865 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 273:
+#line 1868 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 274:
+#line 1873 "parser.y"
+ {
+ yyval.codeb = NULL;
+ }
+ break;
+
+ case 275:
+#line 1876 "parser.y"
+ {
+ yyval.codeb = yyvsp[0].codeb;
+ }
+ break;
+
+ case 276:
+#line 1881 "parser.y"
+ {
+ int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
+
+ nrrxcon = nrrxdis = nrslotcon = nrslotdis = nrarray = nrarraysize = 0;
+
+ for (a = 0; a < yyvsp[0].signature.nrArgs; ++a)
+ {
+ argDef *ad = &yyvsp[0].signature.args[a];
+
+ switch (ad -> atype)
+ {
+ case rxcon_type:
+ ++nrrxcon;
+ break;
+
+ case rxdis_type:
+ ++nrrxdis;
+ break;
+
+ case slotcon_type:
+ ++nrslotcon;
+ break;
+
+ case slotdis_type:
+ ++nrslotdis;
+ break;
+ }
+
+ if (isArray(ad))
+ ++nrarray;
+
+ if (isArraySize(ad))
+ ++nrarraysize;
+ }
+
+ if (nrrxcon != nrslotcon || nrrxcon > 1)
+ yyerror("SIP_RXOBJ_CON and SIP_SLOT_CON must both be given and at most once");
+
+ if (nrrxdis != nrslotdis || nrrxdis > 1)
+ yyerror("SIP_RXOBJ_DIS and SIP_SLOT_DIS must both be given and at most once");
+
+ if (nrarray != nrarraysize || nrarray > 1)
+ yyerror("/Array/ and /ArraySize/ must both be given and at most once");
+
+ yyval.signature = yyvsp[0].signature;
+ }
+ break;
+
+ case 277:
+#line 1929 "parser.y"
+ {
+ /* No arguments. */
+
+ yyval.signature.nrArgs = 0;
+ }
+ break;
+
+ case 278:
+#line 1934 "parser.y"
+ {
+ /* The single or first argument. */
+
+ yyval.signature.args[0] = yyvsp[0].memArg;
+ yyval.signature.nrArgs = 1;
+ }
+ break;
+
+ case 279:
+#line 1940 "parser.y"
+ {
+ /* Check that it wasn't ...(,arg...). */
+ if (yyvsp[-2].signature.nrArgs == 0)
+ yyerror("First argument of the list is missing");
+
+ /* Check there is nothing after an ellipsis. */
+ if (yyvsp[-2].signature.args[yyvsp[-2].signature.nrArgs - 1].atype == ellipsis_type)
+ yyerror("An ellipsis must be at the end of the argument list");
+
+ /*
+ * If this argument has no default value, then the
+ * previous one mustn't either.
+ */
+ if (yyvsp[0].memArg.defval == NULL && yyvsp[-2].signature.args[yyvsp[-2].signature.nrArgs - 1].defval != NULL)
+ yyerror("Compulsory argument given after optional argument");
+
+ /* Check there is room. */
+ if (yyvsp[-2].signature.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ yyval.signature = yyvsp[-2].signature;
+
+ yyval.signature.args[yyval.signature.nrArgs] = yyvsp[0].memArg;
+ yyval.signature.nrArgs++;
+ }
+ break;
+
+ case 280:
+#line 1967 "parser.y"
+ {
+ yyval.memArg.atype = signal_type;
+ yyval.memArg.argflags = ARG_IS_CONST;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[-1].text;
+ yyval.memArg.defval = yyvsp[0].valp;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 281:
+#line 1976 "parser.y"
+ {
+ yyval.memArg.atype = slot_type;
+ yyval.memArg.argflags = ARG_IS_CONST;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[-1].text;
+ yyval.memArg.defval = yyvsp[0].valp;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 282:
+#line 1985 "parser.y"
+ {
+ yyval.memArg.atype = anyslot_type;
+ yyval.memArg.argflags = ARG_IS_CONST;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[-1].text;
+ yyval.memArg.defval = yyvsp[0].valp;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 283:
+#line 1994 "parser.y"
+ {
+ yyval.memArg.atype = rxcon_type;
+ yyval.memArg.argflags = 0;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[0].text;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 284:
+#line 2002 "parser.y"
+ {
+ yyval.memArg.atype = rxdis_type;
+ yyval.memArg.argflags = 0;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[0].text;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 285:
+#line 2010 "parser.y"
+ {
+ yyval.memArg.atype = slotcon_type;
+ yyval.memArg.argflags = ARG_IS_CONST;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[0].text;
+
+ yyvsp[-2].signature.result.atype = void_type;
+ yyvsp[-2].signature.result.argflags = 0;
+ yyvsp[-2].signature.result.nrderefs = 0;
+
+ yyval.memArg.u.sa = sipMalloc(sizeof (signatureDef));
+ *yyval.memArg.u.sa = yyvsp[-2].signature;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 286:
+#line 2025 "parser.y"
+ {
+ yyval.memArg.atype = slotdis_type;
+ yyval.memArg.argflags = ARG_IS_CONST;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[0].text;
+
+ yyvsp[-2].signature.result.atype = void_type;
+ yyvsp[-2].signature.result.argflags = 0;
+ yyvsp[-2].signature.result.nrderefs = 0;
+
+ yyval.memArg.u.sa = sipMalloc(sizeof (signatureDef));
+ *yyval.memArg.u.sa = yyvsp[-2].signature;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ break;
+
+ case 287:
+#line 2040 "parser.y"
+ {
+ yyval.memArg.atype = qobject_type;
+ yyval.memArg.argflags = 0;
+ yyval.memArg.nrderefs = 0;
+ yyval.memArg.name = yyvsp[0].text;
+ }
+ break;
+
+ case 288:
+#line 2046 "parser.y"
+ {
+ yyval.memArg = yyvsp[-1].memArg;
+ yyval.memArg.defval = yyvsp[0].valp;
+ }
+ break;
+
+ case 289:
+#line 2052 "parser.y"
+ {currentIsStatic = TRUE;}
+ break;
+
+ case 294:
+#line 2060 "parser.y"
+ {currentOverIsVirt = TRUE;}
+ break;
+
+ case 297:
+#line 2064 "parser.y"
+ {
+ if (notSkipping())
+ {
+ /* Check the section. */
+
+ if (sectionFlags != 0)
+ {
+ if ((sectionFlags & SECT_IS_PUBLIC) == 0)
+ yyerror("Class variables must be in the public section");
+
+ if (!currentIsStatic && yyvsp[-2].codeb != NULL)
+ yyerror("%AccessCode cannot be specified for non-static class variables");
+ }
+
+ if (currentIsStatic && currentSpec -> genc)
+ yyerror("Cannot have static members in a C structure");
+
+ if (yyvsp[-1].codeb != NULL || yyvsp[0].codeb != NULL)
+ {
+ if (yyvsp[-2].codeb != NULL)
+ yyerror("Cannot mix %AccessCode and %GetCode or %SetCode");
+
+ if (currentScope() == NULL)
+ yyerror("Cannot specify %GetCode or %SetCode for global variables");
+ }
+
+ newVar(currentSpec,currentModule,yyvsp[-5].text,currentIsStatic,&yyvsp[-6].memArg,&yyvsp[-4].optflags,yyvsp[-2].codeb,yyvsp[-1].codeb,yyvsp[0].codeb);
+ }
+
+ currentIsStatic = FALSE;
+ }
+ break;
+
+ case 298:
+#line 2097 "parser.y"
+ {
+ yyval.memArg = yyvsp[-2].memArg;
+ yyval.memArg.nrderefs = yyvsp[-1].number;
+ yyval.memArg.argflags = ARG_IS_CONST | yyvsp[0].number;
+ yyval.memArg.name = NULL;
+ }
+ break;
+
+ case 299:
+#line 2103 "parser.y"
+ {
+ yyval.memArg = yyvsp[-2].memArg;
+ yyval.memArg.nrderefs = yyvsp[-1].number;
+ yyval.memArg.argflags = yyvsp[0].number;
+ yyval.memArg.name = NULL;
+ }
+ break;
+
+ case 300:
+#line 2111 "parser.y"
+ {
+ yyval.memArg = yyvsp[-2].memArg;
+ yyval.memArg.name = yyvsp[-1].text;
+
+ if (findOptFlag(&yyvsp[0].optflags,"AllowNone",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_ALLOW_NONE;
+
+ if (findOptFlag(&yyvsp[0].optflags,"GetWrapper",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_GET_WRAPPER;
+
+ if (findOptFlag(&yyvsp[0].optflags,"Array",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_ARRAY;
+
+ if (findOptFlag(&yyvsp[0].optflags,"ArraySize",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_ARRAY_SIZE;
+
+ if (findOptFlag(&yyvsp[0].optflags,"Transfer",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_XFERRED;
+
+ if (findOptFlag(&yyvsp[0].optflags,"TransferThis",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_THIS_XFERRED;
+
+ if (findOptFlag(&yyvsp[0].optflags,"TransferBack",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_XFERRED_BACK;
+
+ if (findOptFlag(&yyvsp[0].optflags,"In",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_IN;
+
+ if (findOptFlag(&yyvsp[0].optflags,"Out",bool_flag) != NULL)
+ yyval.memArg.argflags |= ARG_OUT;
+
+ if (findOptFlag(&yyvsp[0].optflags,"Constrained",bool_flag) != NULL)
+ {
+ yyval.memArg.argflags |= ARG_CONSTRAINED;
+
+ switch (yyval.memArg.atype)
+ {
+ case bool_type:
+ yyval.memArg.atype = cbool_type;
+ break;
+
+ case int_type:
+ yyval.memArg.atype = cint_type;
+ break;
+
+ case float_type:
+ yyval.memArg.atype = cfloat_type;
+ break;
+
+ case double_type:
+ yyval.memArg.atype = cdouble_type;
+ break;
+ }
+ }
+ }
+ break;
+
+ case 301:
+#line 2168 "parser.y"
+ {
+ yyval.number = 0;
+ }
+ break;
+
+ case 302:
+#line 2171 "parser.y"
+ {
+ if (currentSpec -> genc)
+ yyerror("References not allowed in a C module");
+
+ yyval.number = ARG_IS_REF;
+ }
+ break;
+
+ case 303:
+#line 2179 "parser.y"
+ {
+ yyval.number = 0;
+ }
+ break;
+
+ case 304:
+#line 2182 "parser.y"
+ {
+ yyval.number = yyvsp[-1].number + 1;
+ }
+ break;
+
+ case 305:
+#line 2187 "parser.y"
+ {
+ yyval.memArg.atype = defined_type;
+ yyval.memArg.u.snd = yyvsp[0].scpvalp;
+ }
+ break;
+
+ case 306:
+#line 2191 "parser.y"
+ {
+ templateDef *td;
+
+ td = sipMalloc(sizeof(templateDef));
+ td -> fqname = yyvsp[-3].scpvalp;
+ td -> types = yyvsp[-1].signature;
+
+ yyval.memArg.atype = template_type;
+ yyval.memArg.u.td = td;
+ }
+ break;
+
+ case 307:
+#line 2201 "parser.y"
+ {
+ /* In a C module all structures must be defined. */
+ if (currentSpec -> genc)
+ {
+ yyval.memArg.atype = defined_type;
+ yyval.memArg.u.snd = yyvsp[0].scpvalp;
+ }
+ else
+ {
+ yyval.memArg.atype = struct_type;
+ yyval.memArg.u.sname = yyvsp[0].scpvalp;
+ }
+ }
+ break;
+
+ case 308:
+#line 2214 "parser.y"
+ {
+ yyval.memArg.atype = ushort_type;
+ }
+ break;
+
+ case 309:
+#line 2217 "parser.y"
+ {
+ yyval.memArg.atype = short_type;
+ }
+ break;
+
+ case 310:
+#line 2220 "parser.y"
+ {
+ yyval.memArg.atype = uint_type;
+ }
+ break;
+
+ case 311:
+#line 2223 "parser.y"
+ {
+ yyval.memArg.atype = uint_type;
+ }
+ break;
+
+ case 312:
+#line 2226 "parser.y"
+ {
+ yyval.memArg.atype = int_type;
+ }
+ break;
+
+ case 313:
+#line 2229 "parser.y"
+ {
+ yyval.memArg.atype = long_type;
+ }
+ break;
+
+ case 314:
+#line 2232 "parser.y"
+ {
+ yyval.memArg.atype = ulong_type;
+ }
+ break;
+
+ case 315:
+#line 2235 "parser.y"
+ {
+ yyval.memArg.atype = longlong_type;
+ }
+ break;
+
+ case 316:
+#line 2238 "parser.y"
+ {
+ yyval.memArg.atype = ulonglong_type;
+ }
+ break;
+
+ case 317:
+#line 2241 "parser.y"
+ {
+ yyval.memArg.atype = float_type;
+ }
+ break;
+
+ case 318:
+#line 2244 "parser.y"
+ {
+ yyval.memArg.atype = double_type;
+ }
+ break;
+
+ case 319:
+#line 2247 "parser.y"
+ {
+ yyval.memArg.atype = bool_type;
+ }
+ break;
+
+ case 320:
+#line 2250 "parser.y"
+ {
+ yyval.memArg.atype = sstring_type;
+ }
+ break;
+
+ case 321:
+#line 2253 "parser.y"
+ {
+ yyval.memArg.atype = ustring_type;
+ }
+ break;
+
+ case 322:
+#line 2256 "parser.y"
+ {
+ yyval.memArg.atype = string_type;
+ }
+ break;
+
+ case 323:
+#line 2259 "parser.y"
+ {
+ yyval.memArg.atype = wstring_type;
+ }
+ break;
+
+ case 324:
+#line 2262 "parser.y"
+ {
+ yyval.memArg.atype = void_type;
+ }
+ break;
+
+ case 325:
+#line 2265 "parser.y"
+ {
+ yyval.memArg.atype = pyobject_type;
+ }
+ break;
+
+ case 326:
+#line 2268 "parser.y"
+ {
+ yyval.memArg.atype = pytuple_type;
+ }
+ break;
+
+ case 327:
+#line 2271 "parser.y"
+ {
+ yyval.memArg.atype = pylist_type;
+ }
+ break;
+
+ case 328:
+#line 2274 "parser.y"
+ {
+ yyval.memArg.atype = pydict_type;
+ }
+ break;
+
+ case 329:
+#line 2277 "parser.y"
+ {
+ yyval.memArg.atype = pycallable_type;
+ }
+ break;
+
+ case 330:
+#line 2280 "parser.y"
+ {
+ yyval.memArg.atype = pyslice_type;
+ }
+ break;
+
+ case 331:
+#line 2283 "parser.y"
+ {
+ yyval.memArg.atype = pytype_type;
+ }
+ break;
+
+ case 332:
+#line 2286 "parser.y"
+ {
+ yyval.memArg.atype = ellipsis_type;
+ }
+ break;
+
+ case 333:
+#line 2291 "parser.y"
+ {
+ /* The single or first type. */
+
+ yyval.signature.args[0] = yyvsp[0].memArg;
+ yyval.signature.nrArgs = 1;
+ }
+ break;
+
+ case 334:
+#line 2297 "parser.y"
+ {
+ /* Check there is nothing after an ellipsis. */
+ if (yyvsp[-2].signature.args[yyvsp[-2].signature.nrArgs - 1].atype == ellipsis_type)
+ yyerror("An ellipsis must be at the end of the argument list");
+
+ /* Check there is room. */
+ if (yyvsp[-2].signature.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ yyval.signature = yyvsp[-2].signature;
+
+ yyval.signature.args[yyval.signature.nrArgs] = yyvsp[0].memArg;
+ yyval.signature.nrArgs++;
+ }
+ break;
+
+ case 335:
+#line 2313 "parser.y"
+ {
+ yyval.throwlist = NULL;
+ }
+ break;
+
+ case 336:
+#line 2316 "parser.y"
+ {
+ if (currentSpec->genc)
+ yyerror("Exceptions not allowed in a C module");
+
+ if (notSkipping() && inMainModule())
+ {
+ int e;
+ ifaceFileList **ifl;
+
+ /*
+ * Make sure the exceptions' header files are
+ * included. We unconditionally mark them to
+ * be included in the current scope's header
+ * file to save us the effort of checking if
+ * they are being used with a protected method,
+ * a virtual or a signal.
+ */
+ ifl = (currentScope() != NULL) ? &currentScope()->iff->used : &currentSpec->used;
+
+ for (e = 0; e < yyvsp[-1].throwlist->nrArgs; ++e)
+ addToUsedList(ifl, yyvsp[-1].throwlist->args[e]->iff);
+ }
+
+ yyval.throwlist = yyvsp[-1].throwlist;
+ }
+ break;
+
+ case 337:
+#line 2343 "parser.y"
+ {
+ /* Empty list so use a blank. */
+
+ yyval.throwlist = sipMalloc(sizeof (throwArgs));
+ yyval.throwlist -> nrArgs = 0;
+ }
+ break;
+
+ case 338:
+#line 2349 "parser.y"
+ {
+ /* The only or first exception. */
+
+ yyval.throwlist = sipMalloc(sizeof (throwArgs));
+ yyval.throwlist -> nrArgs = 1;
+ yyval.throwlist -> args[0] = findException(currentSpec, yyvsp[0].scpvalp, FALSE);
+ }
+ break;
+
+ case 339:
+#line 2356 "parser.y"
+ {
+ /* Check that it wasn't ...(,arg...). */
+
+ if (yyvsp[-2].throwlist -> nrArgs == 0)
+ yyerror("First exception of throw specifier is missing");
+
+ /* Check there is room. */
+
+ if (yyvsp[-2].throwlist -> nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ yyval.throwlist = yyvsp[-2].throwlist;
+ yyval.throwlist -> args[yyval.throwlist -> nrArgs++] = findException(currentSpec, yyvsp[0].scpvalp, FALSE);
+ }
+ break;
+
+
+ }
+
+/* Line 1010 of yacc.c. */
+#line 4727 "parser.c"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+
+
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ int yytype = YYTRANSLATE (yychar);
+ const char* yyprefix;
+ char *yymsg;
+ int yyx;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 0;
+
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+ yycount += 1;
+ if (yycount == 5)
+ {
+ yysize = 0;
+ break;
+ }
+ }
+ yysize += (sizeof ("syntax error, unexpected ")
+ + yystrlen (yytname[yytype]));
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[yytype]);
+
+ if (yycount < 5)
+ {
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ yyp = yystpcpy (yyp, yyprefix);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yyprefix = " or ";
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("syntax error; also virtual memory exhausted");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror ("syntax error");
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* If at end of input, pop the error token,
+ then the rest of the stack, then return failure. */
+ if (yychar == YYEOF)
+ for (;;)
+ {
+ YYPOPSTACK;
+ if (yyssp == yyss)
+ YYABORT;
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[*yyssp], yyvsp);
+ }
+ }
+ else
+ {
+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+ yydestruct (yytoken, &yylval);
+ yychar = YYEMPTY;
+
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+#ifdef __GNUC__
+ /* Pacify GCC when the user code never invokes YYERROR and the label
+ yyerrorlab therefore never appears in user code. */
+ if (0)
+ goto yyerrorlab;
+#endif
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[yystate], yyvsp);
+ YYPOPSTACK;
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++yyvsp = yylval;
+
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here. |
+`----------------------------------------------*/
+yyoverflowlab:
+ yyerror ("parser stack overflow");
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+
+
+#line 2372 "parser.y"
+
+
+
+/*
+ * Parse the specification.
+ */
+void parse(sipSpec *spec,FILE *fp,char *filename,stringList *tsl,
+ stringList *xfl)
+{
+ classTmplDef *tcd;
+
+ /* Initialise the spec. */
+
+ spec -> modules = NULL;
+ spec -> namecache = NULL;
+ spec -> ifacefiles = NULL;
+ spec -> classes = NULL;
+ spec -> classtemplates = NULL;
+ spec -> proxies = NULL;
+ spec -> exceptions = NULL;
+ spec -> mappedtypes = NULL;
+ spec -> mappedtypetemplates = NULL;
+ spec -> qobjclass = -1;
+ spec -> enums = NULL;
+ spec -> vars = NULL;
+ spec -> othfuncs = NULL;
+ spec -> overs = NULL;
+ spec -> typedefs = NULL;
+ spec -> copying = NULL;
+ spec -> exphdrcode = NULL;
+ spec -> hdrcode = NULL;
+ spec -> cppcode = NULL;
+ spec -> docs = NULL;
+ spec -> preinitcode = NULL;
+ spec -> postinitcode = NULL;
+ spec -> unitcode = NULL;
+ spec -> used = NULL;
+ spec -> sigslots = FALSE;
+ spec -> genc = -1;
+ spec -> options = NULL;
+
+ currentSpec = spec;
+ neededQualifiers = tsl;
+ excludedQualifiers = xfl;
+ currentModule = NULL;
+ currentMappedType = NULL;
+ currentOverIsVirt = FALSE;
+ currentCtorIsExplicit = FALSE;
+ currentIsStatic = FALSE;
+ previousFile = NULL;
+ skipStackPtr = 0;
+ currentScopeIdx = 0;
+ sectionFlags = 0;
+
+ newModule(fp,filename);
+ spec -> module = currentModule;
+
+ yyparse();
+
+ handleEOF();
+ handleEOM();
+
+ /*
+ * Go through each template class and remove it from the list of
+ * classes.
+ */
+ for (tcd = spec->classtemplates; tcd != NULL; tcd = tcd->next)
+ {
+ classDef **cdp;
+
+ for (cdp = &spec->classes; *cdp != NULL; cdp = &(*cdp)->next)
+ if (*cdp == tcd->cd)
+ {
+ ifaceFileDef **ifdp;
+
+ /* Remove the interface file as well. */
+ for (ifdp = &spec->ifacefiles; *ifdp != NULL; ifdp = &(*ifdp)->next)
+ if (*ifdp == tcd->cd->iff)
+ {
+ *ifdp = (*ifdp)->next;
+ break;
+ }
+
+ *cdp = (*cdp)->next;
+ break;
+ }
+ }
+}
+
+
+/*
+ * Tell the parser that a complete file has now been read.
+ */
+void parserEOF(char *name,parserContext *pc)
+{
+ previousFile = sipStrdup(name);
+ newContext = *pc;
+}
+
+
+/*
+ * Append a class definition to a class list if it doesn't already appear.
+ * Append is needed specifically for the list of super-classes because the
+ * order is important to Python.
+ */
+void appendToClassList(classList **clp,classDef *cd)
+{
+ classList *new;
+
+ /* Find the end of the list. */
+
+ while (*clp != NULL)
+ {
+ if ((*clp) -> cd == cd)
+ return;
+
+ clp = &(*clp) -> next;
+ }
+
+ new = sipMalloc(sizeof (classList));
+
+ new -> cd = cd;
+ new -> next = NULL;
+
+ *clp = new;
+}
+
+
+/*
+ * Create a new module for the current specification and make it current.
+ */
+static void newModule(FILE *fp,char *filename)
+{
+ moduleDef *newmod;
+
+ parseFile(fp,filename,currentModule,FALSE);
+
+ newmod = sipMalloc(sizeof (moduleDef));
+ newmod -> fullname = NULL;
+ newmod -> name = NULL;
+ newmod -> version = -1;
+ newmod -> modflags = 0;
+ newmod -> modulenr = -1;
+ newmod -> file = filename;
+ newmod -> qualifiers = NULL;
+ newmod -> root.cd = NULL;
+ newmod -> root.child = NULL;
+ newmod -> nrtimelines = 0;
+ newmod -> nrclasses = 0;
+ newmod -> nrexceptions = 0;
+ newmod -> nrmappedtypes = 0;
+ newmod -> nrenums = 0;
+ newmod -> nrtypedefs = 0;
+ newmod -> nrvirthandlers = 0;
+ newmod -> virthandlers = NULL;
+ newmod -> license = NULL;
+ newmod -> allimports = NULL;
+ newmod -> imports = NULL;
+ newmod -> next = currentSpec -> modules;
+
+ currentModule = currentSpec->modules = newmod;
+}
+
+
+/*
+ * Switch to parsing a new file.
+ */
+static void parseFile(FILE *fp,char *name,moduleDef *prevmod,int optional)
+{
+ parserContext pc;
+
+ pc.ifdepth = skipStackPtr;
+ pc.prevmod = prevmod;
+
+ setInputFile(fp,name,&pc,optional);
+}
+
+
+/*
+ * Find an interface file, or create a new one.
+ */
+ifaceFileDef *findIfaceFile(sipSpec *pt, moduleDef *mod, scopedNameDef *fqname,
+ ifaceFileType iftype, argDef *ad)
+{
+ ifaceFileDef *iff;
+
+ /* See if the name is already used. */
+
+ for (iff = pt -> ifacefiles; iff != NULL; iff = iff -> next)
+ {
+ if (!sameScopedName(iff -> fqcname,fqname))
+ continue;
+
+ /*
+ * They must be the same type except that we allow a class if
+ * if we want an exception. This is because we allow classes
+ * to be used before they are defined.
+ */
+ if (iff -> type != iftype)
+ if (iftype != exception_iface || iff -> type != class_iface)
+ yyerror("A class, exception, namespace or mapped type has already been defined with the same name");
+
+ /* Ignore an external class declared in another module. */
+ if (iftype == class_iface && iff->module != mod)
+ {
+ classDef *cd;
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ if (cd->iff == iff)
+ break;
+
+ if (cd != NULL && iff->module != NULL && isExternal(cd))
+ continue;
+ }
+
+ /*
+ * If this is a mapped type with the same name defined in a
+ * different module, then check that this type isn't the same
+ * as any of the mapped types defined in that module.
+ */
+ if (iftype == mappedtype_iface && iff -> module != mod)
+ {
+ mappedTypeDef *mtd;
+
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ {
+ if (mtd -> iff != iff)
+ continue;
+
+ if (ad -> atype != template_type ||
+ mtd -> type.atype != template_type ||
+ sameBaseType(ad,&mtd -> type))
+ yyerror("Mapped type has already been defined in another module");
+ }
+
+ /*
+ * If we got here then we have a mapped type based on
+ * an existing template, but with unique parameters.
+ * We don't want to use interface files from other
+ * modules, so skip this one.
+ */
+
+ continue;
+ }
+
+ /* Ignore a namespace defined in another module. */
+ if (iftype == namespace_iface && iff->module != mod)
+ continue;
+
+ return iff;
+ }
+
+ iff = sipMalloc(sizeof (ifaceFileDef));
+
+ iff -> name = cacheName(pt,scopedNameTail(fqname));
+ iff -> type = iftype;
+ iff -> fqcname = fqname;
+ iff -> module = NULL;
+ iff -> used = NULL;
+ iff -> next = pt -> ifacefiles;
+
+ pt -> ifacefiles = iff;
+
+ return iff;
+}
+
+
+/*
+ * Find a class definition in a parse tree.
+ */
+static classDef *findClass(sipSpec *pt,ifaceFileType iftype,
+ scopedNameDef *fqname)
+{
+ return findClassWithInterface(pt, findIfaceFile(pt, currentModule, fqname, iftype, NULL));
+}
+
+
+/*
+ * Find a class definition given an existing interface file.
+ */
+static classDef *findClassWithInterface(sipSpec *pt, ifaceFileDef *iff)
+{
+ classDef *cd;
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ if (cd -> iff == iff)
+ return cd;
+
+ /* Create a new one. */
+ cd = sipMalloc(sizeof (classDef));
+
+ cd -> iff = iff;
+ cd -> pyname = classBaseName(cd);
+ cd -> classnr = -1;
+ cd -> classflags = 0;
+ cd -> userflags = 0;
+ cd -> ecd = NULL;
+ cd -> dtorexceptions = NULL;
+ cd -> real = NULL;
+ cd -> node = NULL;
+ cd -> supers = NULL;
+ cd -> mro = NULL;
+ cd -> td = NULL;
+ cd -> ctors = NULL;
+ cd -> defctor = NULL;
+ cd -> dealloccode = NULL;
+ cd -> dtorcode = NULL;
+ cd -> members = NULL;
+ cd -> overs = NULL;
+ cd -> casts = NULL;
+ cd -> vmembers = NULL;
+ cd -> visible = NULL;
+ cd -> cppcode = NULL;
+ cd -> hdrcode = NULL;
+ cd -> convtosubcode = NULL;
+ cd -> subbase = NULL;
+ cd -> convtocode = NULL;
+ cd -> travcode = NULL;
+ cd -> clearcode = NULL;
+ cd -> readbufcode = NULL;
+ cd -> writebufcode = NULL;
+ cd -> segcountcode = NULL;
+ cd -> charbufcode = NULL;
+ cd -> next = pt -> classes;
+
+ pt -> classes = cd;
+
+ return cd;
+}
+
+
+/*
+ * Add an interface file to an interface file list if it isn't already there.
+ */
+ifaceFileList *addToUsedList(ifaceFileList **ifflp, ifaceFileDef *iff)
+{
+ ifaceFileList *iffl;
+
+ while ((iffl = *ifflp) != NULL)
+ {
+ /* Don't bother if it is already there. */
+ if (iffl -> iff == iff)
+ return iffl;
+
+ ifflp = &iffl -> next;
+ }
+
+ iffl = sipMalloc(sizeof (ifaceFileList));
+
+ iffl->iff = iff;
+ iffl->header = FALSE;
+ iffl->next = NULL;
+
+ *ifflp = iffl;
+
+ return iffl;
+}
+
+
+/*
+ * Find an undefined (or create a new) exception definition in a parse tree.
+ */
+static exceptionDef *findException(sipSpec *pt, scopedNameDef *fqname, int new)
+{
+ exceptionDef *xd, **tail;
+ ifaceFileDef *iff;
+ classDef *cd;
+
+ iff = findIfaceFile(pt, currentModule, fqname, exception_iface, NULL);
+
+ /* See if it is an existing one. */
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ if (xd->iff == iff)
+ return xd;
+
+ /*
+ * If it is an exception interface file then we have never seen this
+ * name before. We require that exceptions are defined before being
+ * used, but don't make the same requirement of classes (for reasons of
+ * backwards compatibility). Therefore the name must be reinterpreted
+ * as a (as yet undefined) class.
+ */
+ if (new)
+ if (iff->type == exception_iface)
+ cd = NULL;
+ else
+ yyerror("There is already a class with the same name or the exception has been used before being defined");
+ else
+ {
+ if (iff->type == exception_iface)
+ iff->type = class_iface;
+
+ cd = findClassWithInterface(pt, iff);
+ }
+
+ /* Create a new one. */
+ xd = sipMalloc(sizeof (exceptionDef));
+
+ xd->exceptionnr = -1;
+ xd->iff = iff;
+ xd->pyname = NULL;
+ xd->cd = cd;
+ xd->bibase = NULL;
+ xd->base = NULL;
+ xd->hdrcode = NULL;
+ xd->raisecode = NULL;
+ xd->next = NULL;
+
+ /* Append it to the list. */
+ for (tail = &pt->exceptions; *tail != NULL; tail = &(*tail)->next)
+ ;
+
+ *tail = xd;
+
+ return xd;
+}
+
+
+/*
+ * Find an undefined (or create a new) class definition in a parse tree.
+ */
+static classDef *newClass(sipSpec *pt,ifaceFileType iftype,
+ scopedNameDef *fqname)
+{
+ int flags;
+ classDef *cd, *scope;
+ codeBlock *hdrcode;
+
+ if (sectionFlags & SECT_IS_PRIVATE)
+ yyerror("Classes, structs and namespaces must be in the public or or protected sections");
+
+ flags = 0;
+
+ if ((scope = currentScope()) != NULL)
+ {
+ if (sectionFlags & SECT_IS_PROT)
+ flags = CLASS_IS_PROTECTED;
+
+ hdrcode = scope -> hdrcode;
+ }
+ else
+ hdrcode = NULL;
+
+ if (pt -> genc)
+ {
+ /* C structs are always global types. */
+ while (fqname -> next != NULL)
+ fqname = fqname -> next;
+
+ scope = NULL;
+ }
+
+ cd = findClass(pt,iftype,fqname);
+
+ /* Check it hasn't already been defined. */
+ if (iftype != namespace_iface && cd->iff->module != NULL)
+ yyerror("The struct/class has already been defined");
+
+ /* Complete the initialisation. */
+ cd->classflags |= flags;
+ cd->ecd = scope;
+ cd->iff->module = currentModule;
+
+ appendCodeBlock(&cd->hdrcode, hdrcode);
+
+ /* See if it is a namespace extender. */
+ if (iftype == namespace_iface)
+ {
+ classDef *ns;
+
+ for (ns = pt->classes; ns != NULL; ns = ns->next)
+ {
+ if (ns == cd)
+ continue;
+
+ if (ns->iff->type != namespace_iface)
+ continue;
+
+ if (!sameScopedName(ns->iff->fqcname, fqname))
+ continue;
+
+ cd->real = ns;
+ break;
+ }
+ }
+
+ return cd;
+}
+
+
+/*
+ * Tidy up after finishing a class definition.
+ */
+static void finishClass(sipSpec *pt, moduleDef *mod, classDef *cd, optFlags *of)
+{
+ char *pyname;
+ optFlag *flg;
+
+ /* Get the Python name and see if it is different to the C++ name. */
+ pyname = getPythonName(of, classBaseName(cd));
+
+ cd -> pyname = NULL;
+ checkAttributes(pt, cd->ecd, pyname, FALSE);
+ cd->pyname = pyname;
+
+ if (cd->pyname != classBaseName(cd))
+ setIsRenamedClass(cd);
+
+ if ((flg = findOptFlag(of, "TypeFlags", integer_flag)) != NULL)
+ cd->userflags = flg->fvalue.ival;
+
+ if (isOpaque(cd))
+ {
+ if (findOptFlag(of, "External", bool_flag) != NULL)
+ setIsExternal(cd);
+ }
+ else
+ {
+ int seq_might, seq_not;
+ memberDef *md;
+
+ if (findOptFlag(of, "NoDefaultCtors", bool_flag) != NULL)
+ setNoDefaultCtors(cd);
+
+ if (cd -> ctors == NULL)
+ {
+ if (!noDefaultCtors(cd))
+ {
+ /* Provide a default ctor. */
+
+ cd->ctors = sipMalloc(sizeof (ctorDef));
+
+ cd->ctors->ctorflags = SECT_IS_PUBLIC;
+ cd->ctors->pysig.nrArgs = 0;
+ cd->ctors->cppsig = &cd -> ctors -> pysig;
+ cd->ctors->exceptions = NULL;
+ cd->ctors->methodcode = NULL;
+ cd->ctors->prehook = NULL;
+ cd->ctors->posthook = NULL;
+ cd->ctors->next = NULL;
+
+ cd->defctor = cd->ctors;
+
+ setCanCreate(cd);
+ }
+ }
+ else if (cd -> defctor == NULL)
+ {
+ ctorDef *ct, *last = NULL;
+
+ for (ct = cd -> ctors; ct != NULL; ct = ct -> next)
+ {
+ if (!isPublicCtor(ct))
+ continue;
+
+ if (ct -> pysig.nrArgs == 0 || ct -> pysig.args[0].defval != NULL)
+ {
+ cd -> defctor = ct;
+ break;
+ }
+
+ if (last == NULL)
+ last = ct;
+ }
+
+ /* The last resort is the first public ctor. */
+ if (cd->defctor == NULL)
+ cd->defctor = last;
+ }
+
+ if (findOptFlag(of,"Abstract",bool_flag) != NULL)
+ {
+ setIsAbstractClass(cd);
+ setIsIncomplete(cd);
+ resetCanCreate(cd);
+ }
+
+ /* We assume a public dtor if nothing specific was provided. */
+ if (!isDtor(cd))
+ setIsPublicDtor(cd);
+
+ if (findOptFlag(of, "DelayDtor", bool_flag) != NULL)
+ {
+ setIsDelayedDtor(cd);
+ setHasDelayedDtors(mod);
+ }
+
+ /*
+ * There are subtle differences between the add and concat methods and
+ * the multiply and repeat methods. The number versions can have their
+ * operands swapped and may return NotImplemented. If the user has
+ * used the /Numeric/ annotation or there are other numeric operators
+ * then we use add/multiply. Otherwise, if there are indexing
+ * operators then we use concat/repeat.
+ */
+ seq_might = seq_not = FALSE;
+
+ for (md = cd -> members; md != NULL; md = md -> next)
+ switch (md -> slot)
+ {
+ case getitem_slot:
+ case setitem_slot:
+ case delitem_slot:
+ /* This might be a sequence. */
+ seq_might = TRUE;
+ break;
+
+ case sub_slot:
+ case isub_slot:
+ case div_slot:
+ case idiv_slot:
+ case mod_slot:
+ case imod_slot:
+ case pos_slot:
+ case neg_slot:
+ /* This is definately not a sequence. */
+ seq_not = TRUE;
+ break;
+ }
+
+ if (!seq_not && seq_might)
+ for (md = cd -> members; md != NULL; md = md -> next)
+ {
+ /* Ignore if the user has been explicit. */
+ if (isNumeric(md))
+ continue;
+
+ switch (md -> slot)
+ {
+ case add_slot:
+ md -> slot = concat_slot;
+ break;
+
+ case iadd_slot:
+ md -> slot = iconcat_slot;
+ break;
+
+ case mul_slot:
+ md -> slot = repeat_slot;
+ break;
+
+ case imul_slot:
+ md -> slot = irepeat_slot;
+ break;
+ }
+ }
+ }
+
+ if (inMainModule())
+ {
+ setIsUsedName(cd->iff->name);
+ setIsClassName(cd->iff->name);
+ }
+}
+
+
+/*
+ * Create a new mapped type.
+ */
+static mappedTypeDef *newMappedType(sipSpec *pt,argDef *ad)
+{
+ mappedTypeDef *mtd;
+ scopedNameDef *snd;
+ ifaceFileDef *iff;
+
+ /* Check that the type is one we want to map. */
+ switch (ad -> atype)
+ {
+ case defined_type:
+ snd = ad -> u.snd;
+ break;
+
+ case template_type:
+ snd = ad -> u.td -> fqname;
+ break;
+
+ case struct_type:
+ snd = ad -> u.sname;
+ break;
+
+ default:
+ yyerror("Invalid type for %MappedType");
+ }
+
+ iff = findIfaceFile(pt, currentModule, snd, mappedtype_iface, ad);
+
+ if (inMainModule())
+ setIsUsedName(iff -> name);
+
+ /* Check it hasn't already been defined. */
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ if (mtd -> iff == iff)
+ {
+ /*
+ * We allow types based on the same template but with
+ * different arguments.
+ */
+
+ if (ad -> atype != template_type ||
+ sameBaseType(ad,&mtd -> type))
+ yyerror("Mapped type has already been defined in this module");
+ }
+
+ /* The module may not have been set yet. */
+ iff -> module = currentModule;
+
+ /* Create a new mapped type. */
+ mtd = allocMappedType(ad);
+
+ mtd -> iff = iff;
+ mtd -> next = pt -> mappedtypes;
+
+ pt -> mappedtypes = mtd;
+
+ return mtd;
+}
+
+
+/*
+ * Allocate, intialise and return a mapped type structure.
+ */
+mappedTypeDef *allocMappedType(argDef *type)
+{
+ mappedTypeDef *mtd;
+
+ mtd = sipMalloc(sizeof (mappedTypeDef));
+
+ mtd->type = *type;
+ mtd->type.argflags = 0;
+ mtd->type.nrderefs = 0;
+
+ mtd->mappednr = -1;
+ mtd->iff = NULL;
+ mtd->hdrcode = NULL;
+ mtd->convfromcode = NULL;
+ mtd->convtocode = NULL;
+ mtd->next = NULL;
+
+ return mtd;
+}
+
+
+/*
+ * Create a new enum.
+ */
+static enumDef *newEnum(sipSpec *pt,moduleDef *mod,char *name,optFlags *of,
+ int flags)
+{
+ enumDef *ed;
+ classDef *escope = currentScope();
+
+ ed = sipMalloc(sizeof (enumDef));
+
+ if (name != NULL)
+ {
+ ed -> fqcname = text2scopedName(name);
+ ed -> pyname = cacheName(pt, getPythonName(of, name));
+
+ checkAttributes(pt, escope, ed->pyname->text, FALSE);
+ }
+ else
+ {
+ ed -> fqcname = NULL;
+ ed -> pyname = NULL;
+ }
+
+ ed -> enumflags = flags;
+ ed -> enumnr = -1;
+ ed -> ecd = escope;
+ ed -> pcd = (flags & SECT_IS_PROT) ? escope : NULL;
+ ed -> module = mod;
+ ed -> members = NULL;
+ ed -> slots = NULL;
+ ed -> overs = NULL;
+ ed -> next = pt -> enums;
+
+ if (name != NULL && strcmp(ed->pyname->text, name) != 0)
+ setIsRenamedEnum(ed);
+
+ pt -> enums = ed;
+
+ if (escope != NULL)
+ setHasEnums(escope);
+
+ return ed;
+}
+
+
+/*
+ * Get the type values and (optionally) the type names for substitution in
+ * handwritten code.
+ */
+void appendTypeStrings(scopedNameDef *ename, signatureDef *patt, signatureDef *src, signatureDef *known, scopedNameDef **names, scopedNameDef **values)
+{
+ int a;
+
+ for (a = 0; a < patt->nrArgs; ++a)
+ {
+ argDef *pad = &patt->args[a];
+
+ if (pad->atype == defined_type)
+ {
+ char *nam = NULL;
+
+ /*
+ * If the type names are already known then check that
+ * this is one of them.
+ */
+ if (known == NULL)
+ nam = scopedNameTail(pad->u.snd);
+ else if (pad->u.snd->next == NULL)
+ {
+ int k;
+
+ for (k = 0; k < known->nrArgs; ++k)
+ if (strcmp(pad->u.snd->name, known->args[k].u.snd->name) == 0)
+ {
+ nam = pad->u.snd->name;
+ break;
+ }
+ }
+
+ if (nam == NULL)
+ continue;
+
+ /* Add the name. */
+ appendScopedName(names, text2scopePart(nam));
+
+ /* Add the corresponding value. */
+ appendScopedName(values, text2scopePart(getType(ename, &src->args[a])));
+ }
+ else if (pad->atype == template_type)
+ {
+ argDef *sad = &src->args[a];
+
+ /* These checks shouldn't be necessary, but... */
+ if (sad->atype == template_type && pad->u.td->types.nrArgs == sad->u.td->types.nrArgs)
+ appendTypeStrings(ename, &pad->u.td->types, &sad->u.td->types, known, names, values);
+ }
+ }
+}
+
+
+/*
+ * Convert a type to a string. We impose some limitations because I'm too lazy
+ * to handle everything that might be needed one day.
+ */
+static char *getType(scopedNameDef *ename, argDef *ad)
+{
+ if (ad->atype == defined_type)
+ return scopedNameToString(ad->u.snd);
+
+ fatalScopedName(ename);
+ fatal(": unsupported type argument to template class instantiation\n");
+
+ return NULL;
+}
+
+
+/*
+ * Convert a scoped name to a string on the heap.
+ */
+static char *scopedNameToString(scopedNameDef *name)
+{
+ static const char scope_string[] = "::";
+ size_t len;
+ scopedNameDef *snd;
+ char *s, *dp;
+
+ /* Work out the length of buffer needed. */
+ len = 0;
+
+ for (snd = name; snd != NULL; snd = snd->next)
+ {
+ len += strlen(snd->name);
+
+ if (snd->next != NULL)
+ len += strlen(scope_string);
+ }
+
+ /* Allocate and populate the buffer. */
+ dp = s = sipMalloc(len + 1);
+
+ for (snd = name; snd != NULL; snd = snd->next)
+ {
+ strcpy(dp, snd->name);
+ dp += strlen(snd->name);
+
+ if (snd->next != NULL)
+ {
+ strcpy(dp, scope_string);
+ dp += strlen(scope_string);
+ }
+ }
+
+ return s;
+}
+
+
+/*
+ * Instantiate a class template.
+ */
+static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod, classDef *scope, scopedNameDef *fqname, classTmplDef *tcd, templateDef *td)
+{
+ scopedNameDef *type_names, *type_values;
+ classDef *cd;
+ ctorDef *oct, **cttail;
+ memberDef *omd, **mdtail;
+ overDef *ood, **odtail;
+ argDef *ad;
+ ifaceFileList *iffl, **used;
+
+ type_names = type_values = NULL;
+ appendTypeStrings(classFQCName(tcd->cd), &tcd->sig, &td->types, NULL, &type_names, &type_values);
+
+ /*
+ * Add a mapping from the template name to the instantiated name. If
+ * we have got this far we know there is room for it.
+ */
+ ad = &tcd->sig.args[tcd->sig.nrArgs++];
+ ad->atype = defined_type;
+ ad->name = NULL;
+ ad->argflags = 0;
+ ad->nrderefs = 0;
+ ad->defval = NULL;
+ ad->u.snd = classFQCName(tcd->cd);
+
+ appendScopedName(&type_names, text2scopePart(scopedNameTail(classFQCName(tcd->cd))));
+ appendScopedName(&type_values, text2scopePart(scopedNameToString(fqname)));
+
+ /* Create the new class. */
+ cd = sipMalloc(sizeof (classDef));
+
+ /* Start with a shallow copy. */
+ *cd = *tcd->cd;
+
+ cd->pyname = scopedNameTail(fqname);
+ cd->td = td;
+
+ /* Handle the interface file. */
+ cd->iff = findIfaceFile(pt, mod, fqname, class_iface, NULL);
+ cd->iff->module = mod;
+
+ /* Make a copy of the used list and add the enclosing scope. */
+ used = &cd->iff->used;
+
+ for (iffl = tcd->cd->iff->used; iffl != NULL; iffl = iffl->next)
+ addToUsedList(used, iffl->iff);
+
+ if (scope != NULL)
+ addToUsedList(&cd->iff->used, scope->iff);
+
+ if (inMainModule())
+ {
+ setIsUsedName(cd->iff->name);
+ setIsClassName(cd->iff->name);
+ }
+
+ cd->ecd = currentScope();
+
+ /* Handle the ctors. */
+ cd->ctors = NULL;
+ cttail = &cd->ctors;
+
+ for (oct = tcd->cd->ctors; oct != NULL; oct = oct->next)
+ {
+ ctorDef *nct = sipMalloc(sizeof (ctorDef));
+
+ /* Start with a shallow copy. */
+ *nct = *oct;
+
+ templateSignature(&nct->pysig, FALSE, tcd, td, cd);
+
+ if (oct->cppsig == NULL)
+ nct->cppsig = NULL;
+ else if (oct->cppsig == &oct->pysig)
+ nct->cppsig = &nct->pysig;
+ else
+ {
+ nct->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nct->cppsig = *oct->cppsig;
+
+ templateSignature(nct->cppsig, FALSE, tcd, td, cd);
+ }
+
+ nct->methodcode = templateCode(pt, used, nct->methodcode, type_names, type_values);
+
+ nct->next = NULL;
+ *cttail = nct;
+ cttail = &nct->next;
+
+ /* Handle the default ctor. */
+ if (tcd->cd->defctor == oct)
+ cd->defctor = nct;
+ }
+
+ cd->dealloccode = templateCode(pt, used, cd->dealloccode, type_names, type_values);
+ cd->dtorcode = templateCode(pt, used, cd->dtorcode, type_names, type_values);
+
+ /* Handle the members, ie. the common parts of overloads. */
+ cd->members = NULL;
+ mdtail = &cd->members;
+
+ for (omd = tcd->cd->members; omd != NULL; omd = omd->next)
+ {
+ memberDef *nmd = sipMalloc(sizeof (memberDef));
+
+ /* Start with a shallow copy. */
+ *nmd = *omd;
+
+ nmd->module = mod;
+
+ nmd->next = NULL;
+ *mdtail = nmd;
+ mdtail = &nmd->next;
+ }
+
+ /* Handle the overloads. */
+ cd->overs = NULL;
+ odtail = &cd->overs;
+
+ for (ood = tcd->cd->overs; ood != NULL; ood = ood->next)
+ {
+ overDef *nod = sipMalloc(sizeof (overDef));
+ memberDef *nmd;
+
+ /* Start with a shallow copy. */
+ *nod = *ood;
+
+ for (nmd = cd->members, omd = tcd->cd->members; omd != NULL; omd = omd->next, nmd = nmd->next)
+ if (omd == ood->common)
+ {
+ nod->common = nmd;
+ break;
+ }
+
+ templateSignature(&nod->pysig, TRUE, tcd, td, cd);
+
+ if (ood->cppsig == &ood->pysig)
+ nod->cppsig = &nod->pysig;
+ else
+ {
+ nod->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nod->cppsig = *ood->cppsig;
+
+ templateSignature(nod->cppsig, TRUE, tcd, td, cd);
+ }
+
+ nod->methodcode = templateCode(pt, used, nod->methodcode, type_names, type_values);
+
+ /* Handle any virtual handler. */
+ if (ood->virthandler != NULL)
+ {
+ nod->virthandler = sipMalloc(sizeof (virtHandlerDef));
+
+ /* Start with a shallow copy. */
+ *nod->virthandler = *ood->virthandler;
+
+ if (ood->virthandler->cppsig == &ood->pysig)
+ nod->virthandler->cppsig = &nod->pysig;
+ else
+ {
+ nod->virthandler->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nod->virthandler->cppsig = *ood->virthandler->cppsig;
+
+ templateSignature(nod->virthandler->cppsig, TRUE, tcd, td, cd);
+ }
+
+ nod->virthandler->module = mod;
+ nod->virthandler->virtcode = templateCode(pt, used, nod->virthandler->virtcode, type_names, type_values);
+ nod->virthandler->next = mod->virthandlers;
+
+ mod->virthandlers = nod->virthandler;
+ }
+
+ nod->next = NULL;
+ *odtail = nod;
+ odtail = &nod->next;
+ }
+
+ cd->cppcode = templateCode(pt, used, cd->cppcode, type_names, type_values);
+ cd->hdrcode = templateCode(pt, used, cd->hdrcode, type_names, type_values);
+ cd->convtosubcode = templateCode(pt, used, cd->convtosubcode, type_names, type_values);
+ cd->convtocode = templateCode(pt, used, cd->convtocode, type_names, type_values);
+ cd->travcode = templateCode(pt, used, cd->travcode, type_names, type_values);
+ cd->clearcode = templateCode(pt, used, cd->clearcode, type_names, type_values);
+ cd->readbufcode = templateCode(pt, used, cd->readbufcode, type_names, type_values);
+ cd->writebufcode = templateCode(pt, used, cd->writebufcode, type_names, type_values);
+ cd->segcountcode = templateCode(pt, used, cd->segcountcode, type_names, type_values);
+ cd->charbufcode = templateCode(pt, used, cd->charbufcode, type_names, type_values);
+ cd->next = pt->classes;
+
+ pt->classes = cd;
+
+ tcd->sig.nrArgs--;
+
+ freeScopedName(type_names);
+ freeScopedName(type_values);
+}
+
+
+/*
+ * Replace any template arguments in a signature.
+ */
+static void templateSignature(signatureDef *sd, int result, classTmplDef *tcd, templateDef *td, classDef *ncd)
+{
+ int a;
+
+ if (result)
+ templateType(&sd->result, tcd, td, ncd);
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ templateType(&sd->args[a], tcd, td, ncd);
+}
+
+
+/*
+ * Replace any template arguments in a type.
+ */
+static void templateType(argDef *ad, classTmplDef *tcd, templateDef *td, classDef *ncd)
+{
+ int a;
+ char *name;
+
+ /* Ignore if it isn't an unscoped name. */
+ if (ad->atype != defined_type || ad->u.snd->next != NULL)
+ return;
+
+ name = ad->u.snd->name;
+
+ for (a = 0; a < tcd->sig.nrArgs - 1; ++a)
+ if (strcmp(name, scopedNameTail(tcd->sig.args[a].u.snd)) == 0)
+ {
+ ad->atype = td->types.args[a].atype;
+
+ /* We take the constrained flag from the real type. */
+ resetIsConstrained(ad);
+
+ if (isConstrained(&td->types.args[a]))
+ setIsConstrained(ad);
+
+ ad->u = td->types.args[a].u;
+
+ return;
+ }
+
+ /* Handle the class name itself. */
+ if (strcmp(name, scopedNameTail(classFQCName(tcd->cd))) == 0)
+ {
+ ad->atype = class_type;
+ ad->u.cd = ncd;
+ }
+}
+
+
+/*
+ * Replace any template arguments in a literal code block.
+ */
+codeBlock *templateCode(sipSpec *pt, ifaceFileList **used, codeBlock *ocb, scopedNameDef *names, scopedNameDef *values)
+{
+ codeBlock *ncb = NULL, **tail = &ncb;
+
+ while (ocb != NULL)
+ {
+ char *at = ocb->frag;
+
+ do
+ {
+ char *first = NULL;
+ codeBlock *cb;
+ scopedNameDef *nam, *val, *nam_first, *val_first;
+
+ /*
+ * Go through the rest of this fragment looking for
+ * each of the types and the name of the class itself.
+ */
+ nam = names;
+ val = values;
+
+ while (nam != NULL && val != NULL)
+ {
+ char *cp;
+
+ if ((cp = strstr(at, nam->name)) != NULL)
+ if (first == NULL || first > cp)
+ {
+ nam_first = nam;
+ val_first = val;
+ first = cp;
+ }
+
+ nam = nam->next;
+ val = val->next;
+ }
+
+ /* Create the new fragment. */
+ cb = sipMalloc(sizeof (codeBlock));
+
+ if (at == ocb->frag)
+ {
+ cb->filename = ocb->filename;
+ cb->linenr = ocb->linenr;
+ }
+ else
+ cb->filename = NULL;
+
+ cb->next = NULL;
+ *tail = cb;
+ tail = &cb->next;
+
+ /* See if anything was found. */
+ if (first == NULL)
+ {
+ /* We can just point to this. */
+ cb->frag = at;
+
+ /* All done with this one. */
+ at = NULL;
+ }
+ else
+ {
+ static char *gen_names[] = {
+ "sipForceConvertToTransfer_",
+ "sipForceConvertTo_",
+ "sipConvertFromTransfer_",
+ "sipConvertFrom_",
+ "sipClass_",
+ "sipEnum_",
+ "sipException_",
+ NULL
+ };
+
+ char *dp, *sp, **gn;
+ int genname = FALSE;
+
+ /*
+ * If the context in which the text is used is
+ * in the name of a SIP generated object then
+ * translate any "::" scoping to "_".
+ */
+ for (gn = gen_names; *gn != NULL; ++gn)
+ if (search_back(first, at, *gn))
+ {
+ addUsedFromCode(pt, used, val_first->name);
+ genname = TRUE;
+ break;
+ }
+
+ /* Fragment the fragment. */
+ cb->frag = sipMalloc(first - at + strlen(val_first->name) + 1);
+
+ strncpy(cb->frag, at, first - at);
+
+ dp = &cb->frag[first - at];
+ sp = val_first->name;
+
+ if (genname)
+ {
+ char gch;
+
+ while ((gch = *sp++) != '\0')
+ if (gch == ':' && *sp == ':')
+ {
+ *dp++ = '_';
+ ++sp;
+ }
+ else
+ *dp++ = gch;
+
+ *dp = '\0';
+ }
+ else
+ strcpy(dp, sp);
+
+ /* Move past the replaced text. */
+ at = first + strlen(nam_first->name);
+ }
+ }
+ while (at != NULL && *at != '\0');
+
+ ocb = ocb->next;
+ }
+
+ return ncb;
+}
+
+
+/*
+ * Return TRUE if the text at the end of a string matches the target string.
+ */
+static int search_back(const char *end, const char *start, const char *target)
+{
+ size_t tlen = strlen(target);
+
+ if (start + tlen >= end)
+ return FALSE;
+
+ return (strncmp(end - tlen, target, tlen) == 0);
+}
+
+
+/*
+ * Add any needed interface files based on handwritten code.
+ */
+static void addUsedFromCode(sipSpec *pt, ifaceFileList **used, const char *sname)
+{
+ ifaceFileDef *iff;
+ enumDef *ed;
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ {
+ if (iff->type != class_iface && iff->type != exception_iface)
+ continue;
+
+ if (sameName(iff->fqcname, sname))
+ {
+ addToUsedList(used, iff);
+
+ return;
+ }
+ }
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ if (ed->ecd == NULL)
+ continue;
+
+ if (sameName(ed->fqcname, sname))
+ {
+ addToUsedList(used, ed->ecd->iff);
+
+ return;
+ }
+ }
+}
+
+
+/*
+ * Compare a scoped name with its string equivalent.
+ */
+static int sameName(scopedNameDef *snd, const char *sname)
+{
+ while (snd != NULL && *sname != '\0')
+ {
+ const char *sp = snd->name;
+
+ while (*sp != '\0' && *sname != ':' && *sname != '\0')
+ if (*sp++ != *sname++)
+ return FALSE;
+
+ if (*sp != '\0' || (*sname != ':' && *sname != '\0'))
+ return FALSE;
+
+ snd = snd->next;
+
+ if (*sname == ':')
+ sname += 2;
+ }
+
+ return (snd == NULL && *sname == '\0');
+}
+
+
+/*
+ * Create a new typedef.
+ */
+static void newTypedef(sipSpec *pt,moduleDef *mod,char *name,argDef *type)
+{
+ typedefDef *td;
+ scopedNameDef *fqname = text2scopedName(name);
+ classDef *scope = currentScope();
+
+ /* See if we are instantiating a template class. */
+ if (type->atype == template_type)
+ {
+ classTmplDef *tcd;
+ templateDef *td = type->u.td;
+
+ for (tcd = pt->classtemplates; tcd != NULL; tcd = tcd->next)
+ if (sameScopedName(tcd->cd->iff->fqcname, td->fqname))
+ {
+ if (!sameTemplateSignature(&tcd->sig, &td->types, FALSE))
+ continue;
+
+ instantiateClassTemplate(pt, mod, scope, fqname, tcd, td);
+
+ /* All done. */
+ return;
+ }
+ }
+
+ /* Check it doesn't already exist. */
+ for (td = pt -> typedefs; td != NULL; td = td -> next)
+ if (sameScopedName(td -> fqname,fqname))
+ {
+ fatalScopedName(fqname);
+ fatal(" already defined\n");
+ }
+
+ td = sipMalloc(sizeof (typedefDef));
+
+ td -> fqname = fqname;
+ td -> ecd = scope;
+ td -> module = mod;
+ td -> type = *type;
+ td -> next = pt -> typedefs;
+
+ mod -> nrtypedefs++;
+
+ pt -> typedefs = td;
+}
+
+
+/*
+ * Return TRUE if the template signatures are the same. A deep comparison is
+ * used for mapped type templates where we want to recurse into any nested
+ * templates.
+ */
+int sameTemplateSignature(signatureDef *sd1, signatureDef *sd2, int deep)
+{
+ int a;
+
+ if (sd1->nrArgs != sd2->nrArgs)
+ return FALSE;
+
+ for (a = 0; a < sd1->nrArgs; ++a)
+ {
+ argDef *ad1 = &sd1->args[a];
+ argDef *ad2 = &sd2->args[a];
+
+ /*
+ * If we are doing a shallow comparision (ie. for class
+ * templates) then a type name on the left hand side matches
+ * anything on the right hand side.
+ */
+ if (ad1->atype == defined_type && !deep)
+ continue;
+
+ /*
+ * For type names only compare the references and pointers, and
+ * do the same for any nested templates.
+ */
+ if (ad1->atype == defined_type && ad2->atype == defined_type)
+ {
+ if (isReference(ad1) != isReference(ad2) || ad1->nrderefs != ad2->nrderefs)
+ return FALSE;
+ }
+ else if (ad1->atype == template_type && ad2->atype == template_type)
+ {
+ if (!sameTemplateSignature(&ad1->u.td->types, &ad2->u.td->types, deep))
+ return FALSE;
+ }
+ else if (!sameBaseType(ad1, ad2))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Create a new variable.
+ */
+static void newVar(sipSpec *pt,moduleDef *mod,char *name,int isstatic,
+ argDef *type,optFlags *of,codeBlock *acode,codeBlock *gcode,
+ codeBlock *scode)
+{
+ varDef *var;
+ classDef *escope = currentScope();
+ nameDef *nd = cacheName(pt,getPythonName(of,name));
+
+ if (inMainModule())
+ setIsUsedName(nd);
+
+ checkAttributes(pt,escope,nd -> text,FALSE);
+
+ var = sipMalloc(sizeof (varDef));
+
+ var -> pyname = nd;
+ var -> fqcname = text2scopedName(name);
+ var -> ecd = escope;
+ var -> module = mod;
+ var -> varflags = 0;
+ var -> type = *type;
+ var -> accessfunc = acode;
+ var -> getcode = gcode;
+ var -> setcode = scode;
+ var -> next = pt -> vars;
+
+ if (isstatic || (escope != NULL && escope->iff->type == namespace_iface))
+ setIsStaticVar(var);
+
+ pt -> vars = var;
+}
+
+
+/*
+ * Create a new ctor.
+ */
+static void newCtor(char *name,int sectFlags,signatureDef *args,
+ optFlags *optflgs,codeBlock *methodcode,
+ throwArgs *exceptions,signatureDef *cppsig,int explicit)
+{
+ ctorDef *ct, **ctp;
+ classDef *cd = currentScope();
+
+ /* Check the name of the constructor. */
+ if (strcmp(classBaseName(cd),name) != 0)
+ yyerror("Constructor doesn't have the same name as its class");
+
+ /* Add to the list of constructors. */
+ ct = sipMalloc(sizeof (ctorDef));
+
+ ct -> ctorflags = sectFlags;
+ ct -> pysig = *args;
+ ct -> cppsig = (cppsig != NULL ? cppsig : &ct -> pysig);
+ ct -> exceptions = exceptions;
+ ct -> methodcode = methodcode;
+ ct -> next = NULL;
+
+ if (!isPrivateCtor(ct))
+ setCanCreate(cd);
+
+ if (isProtectedCtor(ct))
+ setHasShadow(cd);
+
+ if (explicit)
+ setIsExplicitCtor(ct);
+
+ getHooks(optflgs,&ct -> prehook,&ct -> posthook);
+
+ if (getReleaseGIL(optflgs))
+ setIsReleaseGILCtor(ct);
+ else if (getHoldGIL(optflgs))
+ setIsHoldGILCtor(ct);
+
+ if (findOptFlag(optflgs,"NoDerived",bool_flag) != NULL)
+ {
+ if (cppsig != NULL)
+ yyerror("The /NoDerived/ annotation cannot be used with a C++ signature");
+
+ if (methodcode == NULL)
+ yyerror("The /NoDerived/ annotation must be used with %MethodCode");
+
+ ct->cppsig = NULL;
+ }
+
+ if (findOptFlag(optflgs,"Default",bool_flag) != NULL)
+ {
+ if (cd -> defctor != NULL)
+ yyerror("A constructor with the /Default/ annotation has already been defined");
+
+ cd -> defctor = ct;
+ }
+
+ /* Append to the list. */
+ for (ctp = &cd->ctors; *ctp != NULL; ctp = &(*ctp)->next)
+ ;
+
+ *ctp = ct;
+}
+
+
+/*
+ * Create a new function.
+ */
+static void newFunction(sipSpec *pt,moduleDef *mod,int sflags,int isstatic,
+ int isvirt,char *name,signatureDef *sig,int isconst,
+ int isabstract,optFlags *optflgs,codeBlock *methodcode,
+ codeBlock *vcode,throwArgs *exceptions,
+ signatureDef *cppsig)
+{
+ classDef *cd = currentScope();
+ nameDef *pname;
+ int factory, xferback;
+ overDef *od, **odp, **headp;
+ optFlag *of;
+ virtHandlerDef *vhd;
+
+ /* Extra checks for a C module. */
+ if (pt -> genc)
+ {
+ if (cd != NULL)
+ yyerror("Function declaration not allowed in a struct in a C module");
+
+ if (isstatic)
+ yyerror("Static functions not allowed in a C module");
+
+ if (exceptions != NULL)
+ yyerror("Exceptions not allowed in a C module");
+ }
+
+ headp = (cd != NULL ? &cd -> overs : &pt -> overs);
+
+ /* See if it is a factory method. */
+ if (findOptFlag(optflgs,"Factory",bool_flag) != NULL)
+ factory = TRUE;
+ else
+ {
+ int a;
+
+ factory = FALSE;
+
+ /* Check /TransferThis/ wasn't specified. */
+ if (cd == NULL || isstatic)
+ for (a = 0; a < sig -> nrArgs; ++a)
+ if (isThisTransferred(&sig -> args[a]))
+ yyerror("/TransferThis/ may only be specified in constructors and class methods");
+ }
+
+ /* See if the result is to be returned to Python ownership. */
+ xferback = (findOptFlag(optflgs,"TransferBack",bool_flag) != NULL);
+
+ if (factory && xferback)
+ yyerror("/TransferBack/ and /Factory/ cannot both be specified");
+
+ /* Use the C++ name if a Python name wasn't given. */
+ pname = cacheName(pt, getPythonName(optflgs, name));
+
+ /* Create a new overload definition. */
+
+ od = sipMalloc(sizeof (overDef));
+
+ /* Set the overload flags. */
+
+ od -> overflags = sflags;
+
+ if (factory)
+ setIsFactory(od);
+
+ if (xferback)
+ setIsResultTransferredBack(od);
+
+ if (isProtected(od))
+ setHasShadow(cd);
+
+ if ((isSlot(od) || isSignal(od)) && !isPrivate(od))
+ {
+ if (isSignal(od))
+ setHasShadow(cd);
+
+ pt -> sigslots = TRUE;
+ }
+
+ if (isSignal(od) && (methodcode != NULL || vcode != NULL))
+ yyerror("Cannot provide code for signals");
+
+ if (isstatic)
+ {
+ if (isSignal(od))
+ yyerror("Static functions cannot be signals");
+
+ if (isvirt)
+ yyerror("Static functions cannot be virtual");
+
+ setIsStatic(od);
+ }
+
+ if (isconst)
+ setIsConst(od);
+
+ if (isabstract)
+ {
+ if (sflags == 0)
+ yyerror("Non-class function specified as abstract");
+
+ setIsAbstract(od);
+ }
+
+ if ((of = findOptFlag(optflgs,"AutoGen",opt_name_flag)) != NULL)
+ {
+ setIsAutoGen(od);
+
+ if (of -> fvalue.sval != NULL)
+ {
+ qualDef *qd;
+
+ if ((qd = findQualifier(of -> fvalue.sval)) == NULL || qd -> qtype != feature_qualifier)
+ yyerror("No such feature");
+
+ if (excludedFeature(excludedQualifiers,qd))
+ resetIsAutoGen(od);
+ }
+ }
+
+ if (isvirt)
+ {
+ if (isSignal(od) && !optNoEmitters(pt))
+ yyerror("Virtual signals aren't supported");
+
+ setIsVirtual(od);
+ setHasShadow(cd);
+
+ vhd = sipMalloc(sizeof (virtHandlerDef));
+
+ vhd -> virthandlernr = -1;
+ vhd -> vhflags = 0;
+ vhd -> pysig = &od -> pysig;
+ vhd -> cppsig = (cppsig != NULL ? cppsig : &od -> pysig);
+ vhd -> module = currentModule;
+ vhd -> virtcode = vcode;
+ vhd -> next = currentModule -> virthandlers;
+
+ if (factory || xferback)
+ setIsTransferVH(vhd);
+
+ currentModule -> virthandlers = vhd;
+ }
+ else
+ {
+ if (vcode != NULL)
+ yyerror("%VirtualCatcherCode provided for non-virtual function");
+
+ vhd = NULL;
+ }
+
+ od -> cppname = name;
+ od -> pysig = *sig;
+ od -> cppsig = (cppsig != NULL ? cppsig : &od -> pysig);
+ od -> exceptions = exceptions;
+ od -> methodcode = methodcode;
+ od -> virthandler = vhd;
+ od -> common = findFunction(pt,mod,cd,pname,(methodcode != NULL),sig -> nrArgs);
+
+ if (findOptFlag(optflgs,"Numeric",bool_flag) != NULL)
+ setIsNumeric(od -> common);
+
+ /* Methods that run in new threads must be virtual. */
+ if (findOptFlag(optflgs,"NewThread",bool_flag) != NULL)
+ {
+ argDef *res;
+
+ if (!isvirt)
+ yyerror("/NewThread/ may only be specified for virtual functions");
+
+ /*
+ * This is an arbitary limitation to make the code generator
+ * slightly easier - laziness on my part.
+ */
+ res = &od -> cppsig -> result;
+
+ if (res -> atype != void_type || res -> nrderefs != 0)
+ yyerror("/NewThread/ may only be specified for void functions");
+
+ setIsNewThread(od);
+ }
+
+ getHooks(optflgs,&od -> prehook,&od -> posthook);
+
+ if (getReleaseGIL(optflgs))
+ setIsReleaseGIL(od);
+ else if (getHoldGIL(optflgs))
+ setIsHoldGIL(od);
+
+ od -> next = NULL;
+
+ /* Append to the list. */
+ for (odp = headp; *odp != NULL; odp = &(*odp)->next)
+ ;
+
+ *odp = od;
+}
+
+
+/*
+ * Return the Python name based on the C/C++ name and any /PyName/ annotation.
+ */
+static char *getPythonName(optFlags *optflgs, char *cname)
+{
+ char *pname;
+ optFlag *of;
+
+ if ((of = findOptFlag(optflgs, "PyName", name_flag)) != NULL)
+ pname = of -> fvalue.sval;
+ else
+ pname = cname;
+
+ return pname;
+}
+
+
+/*
+ * Cache a name in a module.
+ */
+static nameDef *cacheName(sipSpec *pt,char *name)
+{
+ nameDef *nd;
+
+ /* See if it already exists. */
+ for (nd = pt -> namecache; nd != NULL; nd = nd -> next)
+ if (strcmp(nd -> text,name) == 0)
+ return nd;
+
+ /* Create a new one. */
+ nd = sipMalloc(sizeof (nameDef));
+
+ nd -> nameflags = 0;
+ nd -> module = currentSpec -> module;
+ nd -> text = name;
+ nd -> next = pt -> namecache;
+
+ pt -> namecache = nd;
+
+ return nd;
+}
+
+
+/*
+ * Find (or create) an overloaded function name.
+ */
+static memberDef *findFunction(sipSpec *pt,moduleDef *mod,classDef *cd,
+ nameDef *pname,int hwcode,int nrargs)
+{
+ static struct slot_map {
+ char *name; /* The slot name. */
+ slotType type; /* The corresponding type. */
+ int needs_hwcode; /* If handwritten code is required. */
+ int nrargs; /* Nr. of arguments. */
+ } slot_table[] = {
+ {"__str__", str_slot, TRUE, 0},
+ {"__unicode__", unicode_slot, TRUE, 0},
+ {"__int__", int_slot, FALSE, 0},
+ {"__long__", long_slot, FALSE, 0},
+ {"__float__", float_slot, FALSE, 0},
+ {"__len__", len_slot, TRUE, 0},
+ {"__contains__", contains_slot, TRUE, 1},
+ {"__add__", add_slot, FALSE, 1},
+ {"__sub__", sub_slot, FALSE, 1},
+ {"__mul__", mul_slot, FALSE, 1},
+ {"__div__", div_slot, FALSE, 1},
+ {"__mod__", mod_slot, FALSE, 1},
+ {"__and__", and_slot, FALSE, 1},
+ {"__or__", or_slot, FALSE, 1},
+ {"__xor__", xor_slot, FALSE, 1},
+ {"__lshift__", lshift_slot, FALSE, 1},
+ {"__rshift__", rshift_slot, FALSE, 1},
+ {"__iadd__", iadd_slot, FALSE, 1},
+ {"__isub__", isub_slot, FALSE, 1},
+ {"__imul__", imul_slot, FALSE, 1},
+ {"__idiv__", idiv_slot, FALSE, 1},
+ {"__imod__", imod_slot, FALSE, 1},
+ {"__iand__", iand_slot, FALSE, 1},
+ {"__ior__", ior_slot, FALSE, 1},
+ {"__ixor__", ixor_slot, FALSE, 1},
+ {"__ilshift__", ilshift_slot, FALSE, 1},
+ {"__irshift__", irshift_slot, FALSE, 1},
+ {"__invert__", invert_slot, FALSE, 0},
+ {"__call__", call_slot, FALSE, -1},
+ {"__getitem__", getitem_slot, FALSE, -1},
+ {"__setitem__", setitem_slot, TRUE, -1},
+ {"__delitem__", delitem_slot, TRUE, -1},
+ {"__lt__", lt_slot, FALSE, 1},
+ {"__le__", le_slot, FALSE, 1},
+ {"__eq__", eq_slot, FALSE, 1},
+ {"__ne__", ne_slot, FALSE, 1},
+ {"__gt__", gt_slot, FALSE, 1},
+ {"__ge__", ge_slot, FALSE, 1},
+ {"__cmp__", cmp_slot, FALSE, 1},
+ {"__nonzero__", nonzero_slot, TRUE, 0},
+ {"__neg__", neg_slot, FALSE, 0},
+ {"__pos__", pos_slot, FALSE, 0},
+ {"__abs__", abs_slot, TRUE, 0},
+ {"__repr__", repr_slot, TRUE, 0},
+ {"__hash__", hash_slot, TRUE, 0},
+ {NULL}
+ };
+
+ memberDef *md, **flist;
+ struct slot_map *sm;
+ slotType st;
+
+ /* Get the slot type. */
+ st = no_slot;
+
+ for (sm = slot_table; sm -> name != NULL; ++sm)
+ if (strcmp(sm -> name,pname -> text) == 0)
+ {
+ if (sm -> needs_hwcode && !hwcode)
+ yyerror("This Python slot requires %MethodCode");
+
+ if (sm -> nrargs < 0)
+ {
+ int min_nr;
+
+ /* These require a minimum number. */
+ switch (sm -> type)
+ {
+ case getitem_slot:
+ case delitem_slot:
+ min_nr = 1;
+ break;
+
+ case setitem_slot:
+ min_nr = 2;
+ break;
+
+ default:
+ min_nr = 0;
+ }
+
+ if (nrargs < min_nr)
+ yyerror("Insufficient number of arguments to Python slot");
+ }
+ else if (cd == NULL)
+ {
+ /* Global operators need one extra argument. */
+ if (sm -> nrargs + 1 != nrargs)
+ yyerror("Incorrect number of arguments to global operator");
+ }
+ else if (sm -> nrargs != nrargs)
+ yyerror("Incorrect number of arguments to Python slot");
+
+ st = sm -> type;
+
+ break;
+ }
+
+ if (inMainModule())
+ setIsUsedName(pname);
+
+ /* Check there is no name clash. */
+ checkAttributes(pt,cd,pname -> text,TRUE);
+
+ /* See if it already exists. */
+ flist = (cd != NULL ? &cd -> members : &pt -> othfuncs);
+
+ for (md = *flist; md != NULL; md = md -> next)
+ if (md -> pyname == pname && md -> module == mod)
+ return md;
+
+ /* Create a new one. */
+ md = sipMalloc(sizeof (memberDef));
+
+ md -> pyname = pname;
+ md -> memberflags = 0;
+ md -> slot = st;
+ md -> module = mod;
+ md -> next = *flist;
+
+ *flist = md;
+
+ /* Global operators are a subset. */
+ if (cd == NULL && st != no_slot && st != neg_slot && st != pos_slot && !isNumberSlot(md) && !isRichCompareSlot(md))
+ yyerror("Global operators must be either numeric or comparison operators");
+
+ return md;
+}
+
+
+/*
+ * Search a set of flags for a particular one and check its type.
+ */
+static optFlag *findOptFlag(optFlags *flgs,char *name,flagType ft)
+{
+ int f;
+
+ for (f = 0; f < flgs -> nrFlags; ++f)
+ {
+ optFlag *of = &flgs -> flags[f];
+
+ if (strcmp(of -> fname,name) == 0)
+ {
+ /*
+ * An optional name can look like a boolean or a name.
+ */
+
+ if (ft == opt_name_flag)
+ {
+ if (of -> ftype == bool_flag)
+ {
+ of -> ftype = opt_name_flag;
+ of -> fvalue.sval = NULL;
+ }
+ else if (of -> ftype == name_flag)
+ of -> ftype = opt_name_flag;
+ }
+
+ if (ft != of -> ftype)
+ yyerror("Optional flag has a value of the wrong type");
+
+ return of;
+ }
+ }
+
+ return NULL;
+}
+
+
+/*
+ * A name is going to be used as a Python attribute name within a Python scope
+ * (ie. a Python dictionary), so check against what we already know is going in
+ * the same scope in case there is a clash.
+ */
+static void checkAttributes(sipSpec *pt,classDef *pyscope,char *attr,int isfunc)
+{
+ enumDef *ed;
+ varDef *vd;
+ classDef *cd;
+
+ /* Check the enums. */
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ {
+ enumMemberDef *emd;
+
+ if (ed -> ecd != pyscope || ed -> pyname == NULL)
+ continue;
+
+ if (strcmp(ed->pyname->text, attr) == 0)
+ yyerror("There is already an enum in scope with the same Python name");
+
+ for (emd = ed -> members; emd != NULL; emd = emd -> next)
+ if (strcmp(emd -> pyname -> text, attr) == 0)
+ yyerror("There is already an enum member in scope with the same Python name");
+ }
+
+ /* Check the variables. */
+
+ for (vd = pt -> vars; vd != NULL; vd = vd -> next)
+ {
+ if (vd -> ecd != pyscope)
+ continue;
+
+ if (strcmp(vd -> pyname -> text, attr) == 0)
+ yyerror("There is already a variable in scope with the same Python name");
+ }
+
+ /*
+ * Only check the members if this attribute isn't a member because we
+ * can handle members with the same name in the same scope.
+ */
+ if (!isfunc)
+ {
+ memberDef *md, *membs;
+
+ membs = (pyscope != NULL ? pyscope -> members : pt -> othfuncs);
+
+ for (md = membs; md != NULL; md = md -> next)
+ {
+ overDef *od, *overs;
+
+ if (strcmp(md -> pyname -> text, attr) != 0)
+ continue;
+
+ /* Check for a conflict with all overloads. */
+
+ overs = (pyscope != NULL ? pyscope -> overs : pt -> overs);
+
+ for (od = overs; od != NULL; od = od -> next)
+ {
+ if (od -> common != md)
+ continue;
+
+ yyerror("There is already a function in scope with the same Python name");
+ }
+ }
+ }
+
+ /* Check the classes. */
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ if (cd -> ecd != pyscope || cd -> pyname == NULL)
+ continue;
+
+ if (strcmp(cd->pyname, attr) == 0 && !isExternal(cd))
+ yyerror("There is already a class or namespace in scope with the same Python name");
+ }
+
+ /* Check the exceptions. */
+
+ if (pyscope == NULL)
+ {
+ exceptionDef *xd;
+
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ if (xd->pyname != NULL && strcmp(xd->pyname, attr) == 0)
+ yyerror("There is already an exception with the same Python name");
+ }
+}
+
+
+/*
+ * Append a code block to a list of them. Append is needed to give the
+ * specifier easy control over the order of the documentation.
+ */
+static void appendCodeBlock(codeBlock **headp,codeBlock *new)
+{
+ while (*headp != NULL)
+ headp = &(*headp) -> next;
+
+ *headp = new;
+}
+
+
+/*
+ * Handle the end of a fully parsed a file.
+ */
+static void handleEOF()
+{
+ /*
+ * Check that the number of nested if's is the same as when we started
+ * the file.
+ */
+
+ if (skipStackPtr > newContext.ifdepth)
+ fatal("Too many %%If statements in %s\n",previousFile);
+
+ if (skipStackPtr < newContext.ifdepth)
+ fatal("Too many %%End statements in %s\n",previousFile);
+}
+
+
+/*
+ * Handle the end of a fully parsed a module.
+ */
+static void handleEOM()
+{
+ /* Check it has been named. */
+
+ if (currentModule -> name == NULL)
+ fatal("No %%Module has been specified for module defined in %s\n",previousFile);
+
+ /* The previous module is now current. */
+
+ currentModule = newContext.prevmod;
+}
+
+
+/*
+ * Find an existing qualifier.
+ */
+static qualDef *findQualifier(char *name)
+{
+ moduleDef *mod;
+
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ {
+ qualDef *qd;
+
+ for (qd = mod -> qualifiers; qd != NULL; qd = qd -> next)
+ if (strcmp(qd -> name,name) == 0)
+ return qd;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return a copy of a scoped name.
+ */
+scopedNameDef *copyScopedName(scopedNameDef *snd)
+{
+ scopedNameDef *head;
+
+ head = NULL;
+
+ while (snd != NULL)
+ {
+ appendScopedName(&head,text2scopePart(snd -> name));
+ snd = snd -> next;
+ }
+
+ return head;
+}
+
+
+/*
+ * Append a name to a list of scopes.
+ */
+void appendScopedName(scopedNameDef **headp,scopedNameDef *newsnd)
+{
+ while (*headp != NULL)
+ headp = &(*headp) -> next;
+
+ *headp = newsnd;
+}
+
+
+/*
+ * Free a scoped name - but not the text itself.
+ */
+void freeScopedName(scopedNameDef *snd)
+{
+ while (snd != NULL)
+ {
+ scopedNameDef *next = snd -> next;
+
+ free(snd);
+
+ snd = next;
+ }
+}
+
+
+/*
+ * Convert a text string to a scope part structure.
+ */
+scopedNameDef *text2scopePart(char *text)
+{
+ scopedNameDef *snd;
+
+ snd = sipMalloc(sizeof (scopedNameDef));
+
+ snd -> name = text;
+ snd -> next = NULL;
+
+ return snd;
+}
+
+
+/*
+ * Convert a text string to a fully scoped name.
+ */
+static scopedNameDef *text2scopedName(char *text)
+{
+ return scopeScopedName(text2scopePart(text));
+}
+
+
+/*
+ * Prepend any current scope to a scoped name.
+ */
+static scopedNameDef *scopeScopedName(scopedNameDef *name)
+{
+ classDef *cd = currentScope();
+ scopedNameDef *snd;
+
+ snd = (cd != NULL ? copyScopedName(cd->iff->fqcname) : NULL);
+
+ appendScopedName(&snd, name);
+
+ return snd;
+}
+
+
+/*
+ * Return a pointer to the tail part of a scoped name.
+ */
+char *scopedNameTail(scopedNameDef *snd)
+{
+ if (snd == NULL)
+ return NULL;
+
+ while (snd -> next != NULL)
+ snd = snd -> next;
+
+ return snd -> name;
+}
+
+
+/*
+ * Push the given scope onto the scope stack.
+ */
+static void pushScope(classDef *scope)
+{
+ if (currentScopeIdx >= MAX_NESTED_SCOPE)
+ fatal("Internal error: increase the value of MAX_NESTED_SCOPE\n");
+
+ scopeStack[currentScopeIdx] = scope;
+ sectFlagsStack[currentScopeIdx] = sectionFlags;
+
+ ++currentScopeIdx;
+}
+
+
+/*
+ * Pop the scope stack.
+ */
+static void popScope(void)
+{
+ if (currentScopeIdx > 0)
+ sectionFlags = sectFlagsStack[--currentScopeIdx];
+}
+
+
+/*
+ * Return non-zero if the current input should be parsed rather than be
+ * skipped.
+ */
+static int notSkipping()
+{
+ return (skipStackPtr == 0 ? TRUE : skipStack[skipStackPtr - 1]);
+}
+
+
+/*
+ * Return the value of an expression involving a time period.
+ */
+static int timePeriod(char *lname,char *uname)
+{
+ int this, line;
+ qualDef *qd, *lower, *upper;
+ moduleDef *mod;
+
+ if (lname == NULL)
+ lower = NULL;
+ else if ((lower = findQualifier(lname)) == NULL || lower -> qtype != time_qualifier)
+ yyerror("Lower bound is not a time version");
+
+ if (uname == NULL)
+ upper = NULL;
+ else if ((upper = findQualifier(uname)) == NULL || upper -> qtype != time_qualifier)
+ yyerror("Upper bound is not a time version");
+
+ /* Sanity checks on the bounds. */
+
+ if (lower == NULL && upper == NULL)
+ yyerror("Lower and upper bounds cannot both be omitted");
+
+ if (lower != NULL && upper != NULL)
+ {
+ if (lower -> module != upper -> module || lower -> line != upper -> line)
+ yyerror("Lower and upper bounds are from different timelines");
+
+ if (lower == upper)
+ yyerror("Lower and upper bounds must be different");
+
+ if (lower -> order > upper -> order)
+ yyerror("Later version specified as lower bound");
+ }
+
+ /* Go through each slot in the relevant timeline. */
+
+ if (lower != NULL)
+ {
+ mod = lower -> module;
+ line = lower -> line;
+ }
+ else
+ {
+ mod = upper -> module;
+ line = upper -> line;
+ }
+
+ this = FALSE;
+
+ for (qd = mod -> qualifiers; qd != NULL; qd = qd -> next)
+ {
+ if (qd -> qtype != time_qualifier || qd -> line != line)
+ continue;
+
+ if (lower != NULL && qd -> order < lower -> order)
+ continue;
+
+ if (upper != NULL && qd -> order >= upper -> order)
+ continue;
+
+ /*
+ * This is within the required range so if it is also needed
+ * then the expression is true.
+ */
+
+ if (isNeeded(qd))
+ {
+ this = TRUE;
+ break;
+ }
+ }
+
+ return this;
+}
+
+
+/*
+ * Return the value of an expression involving a single platform or feature.
+ */
+static int platOrFeature(char *name,int optnot)
+{
+ int this;
+ qualDef *qd;
+
+ if ((qd = findQualifier(name)) == NULL || qd -> qtype == time_qualifier)
+ yyerror("No such platform or feature");
+
+ /* Assume this sub-expression is false. */
+
+ this = FALSE;
+
+ if (qd -> qtype == feature_qualifier)
+ {
+ if (!excludedFeature(excludedQualifiers,qd))
+ this = TRUE;
+ }
+ else if (isNeeded(qd))
+ this = TRUE;
+
+ if (optnot)
+ this = !this;
+
+ return this;
+}
+
+
+/*
+ * Return TRUE if the given qualifier is excluded.
+ */
+int excludedFeature(stringList *xsl,qualDef *qd)
+{
+ while (xsl != NULL)
+ {
+ if (strcmp(qd -> name,xsl -> s) == 0)
+ return TRUE;
+
+ xsl = xsl -> next;
+ }
+
+ return FALSE;
+}
+
+
+/*
+ * Return TRUE if the given qualifier is needed.
+ */
+static int isNeeded(qualDef *qd)
+{
+ stringList *sl;
+
+ for (sl = neededQualifiers; sl != NULL; sl = sl -> next)
+ if (strcmp(qd -> name,sl -> s) == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Return the current scope. currentScope() is only valid if notSkipping()
+ * returns non-zero.
+ */
+static classDef *currentScope(void)
+{
+ return (currentScopeIdx > 0 ? scopeStack[currentScopeIdx - 1] : NULL);
+}
+
+
+/*
+ * Create a new qualifier.
+ */
+static void newQualifier(moduleDef *mod,int line,int order,char *name,qualType qt)
+{
+ qualDef *qd;
+
+ /* Check it doesn't already exist. */
+
+ if (findQualifier(name) != NULL)
+ yyerror("Version is already defined");
+
+ qd = sipMalloc(sizeof (qualDef));
+ qd -> name = name;
+ qd -> qtype = qt;
+ qd -> module = mod;
+ qd -> line = line;
+ qd -> order = order;
+ qd -> next = mod -> qualifiers;
+ mod -> qualifiers = qd;
+}
+
+
+/*
+ * Create a new imported module.
+ */
+static void newImport(char *name)
+{
+ moduleDef *from, *mod;
+ moduleListDef *mld;
+
+ /* Create a new module if it has already been imported. */
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ if (strcmp(mod -> file,name) == 0)
+ break;
+
+ from = currentModule;
+
+ if (mod == NULL)
+ {
+ newModule(NULL,name);
+ mod = currentModule;
+ }
+
+ /* Add the new import unless it has already been imported. */
+ for (mld = from->imports; mld != NULL; mld = mld->next)
+ if (mld->module == mod)
+ return;
+
+ mld = sipMalloc(sizeof (moduleListDef));
+ mld -> module = mod;
+ mld -> next = from->imports;
+
+ from->imports = mld;
+}
+
+
+/*
+ * Set up pointers to hook names.
+ */
+static void getHooks(optFlags *optflgs,char **pre,char **post)
+{
+ optFlag *of;
+
+ if ((of = findOptFlag(optflgs,"PreHook",name_flag)) != NULL)
+ *pre = of -> fvalue.sval;
+ else
+ *pre = NULL;
+
+ if ((of = findOptFlag(optflgs,"PostHook",name_flag)) != NULL)
+ *post = of -> fvalue.sval;
+ else
+ *post = NULL;
+}
+
+
+/*
+ * Get the /ReleaseGIL/ option flag.
+ */
+static int getReleaseGIL(optFlags *optflgs)
+{
+ return (findOptFlag(optflgs, "ReleaseGIL", bool_flag) != NULL);
+}
+
+
+/*
+ * Get the /HoldGIL/ option flag.
+ */
+static int getHoldGIL(optFlags *optflgs)
+{
+ return (findOptFlag(optflgs, "HoldGIL", bool_flag) != NULL);
+}
+
+
+/*
+ * Return TRUE if the QtNoEmitters option was specified.
+ */
+int optNoEmitters(sipSpec *pt)
+{
+ return optFind(pt, "QtNoEmitters");
+}
+
+
+/*
+ * Return TRUE if the QtRegisterTypes option was specified.
+ */
+int optRegisterTypes(sipSpec *pt)
+{
+ return optFind(pt, "QtRegisterTypes");
+}
+
+
+/*
+ * Return TRUE if the Qt4Q_OBJECT option was specified.
+ */
+int optQ_OBJECT4(sipSpec *pt)
+{
+ return optFind(pt, "Qt4Q_OBJECT");
+}
+
+
+/*
+ * Return TRUE if a particular option was specified with %SIPOptions.
+ */
+static int optFind(sipSpec *pt, const char *opt)
+{
+ stringList *sl;
+
+ for (sl = pt->options; sl != NULL; sl = sl->next)
+ if (strcmp(sl->s, opt) == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
diff --git a/python/sip/sipgen/parser.h b/python/sip/sipgen/parser.h
new file mode 100644
index 00000000..49cbce77
--- /dev/null
+++ b/python/sip/sipgen/parser.h
@@ -0,0 +1,268 @@
+/* A Bison parser, made by GNU Bison 1.875d. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ TK_OPTIONS = 258,
+ TK_NOEMITTERS = 259,
+ TK_DOC = 260,
+ TK_EXPORTEDDOC = 261,
+ TK_MAKEFILE = 262,
+ TK_ACCESSCODE = 263,
+ TK_GETCODE = 264,
+ TK_SETCODE = 265,
+ TK_PREINITCODE = 266,
+ TK_POSTINITCODE = 267,
+ TK_UNITCODE = 268,
+ TK_MODCODE = 269,
+ TK_TYPECODE = 270,
+ TK_PREPYCODE = 271,
+ TK_COPYING = 272,
+ TK_MAPPEDTYPE = 273,
+ TK_CODELINE = 274,
+ TK_IF = 275,
+ TK_END = 276,
+ TK_NAME = 277,
+ TK_PATHNAME = 278,
+ TK_STRING = 279,
+ TK_VIRTUALCATCHERCODE = 280,
+ TK_TRAVERSECODE = 281,
+ TK_CLEARCODE = 282,
+ TK_READBUFFERCODE = 283,
+ TK_WRITEBUFFERCODE = 284,
+ TK_SEGCOUNTCODE = 285,
+ TK_CHARBUFFERCODE = 286,
+ TK_METHODCODE = 287,
+ TK_FROMTYPE = 288,
+ TK_TOTYPE = 289,
+ TK_TOSUBCLASS = 290,
+ TK_INCLUDE = 291,
+ TK_OPTINCLUDE = 292,
+ TK_IMPORT = 293,
+ TK_EXPHEADERCODE = 294,
+ TK_MODHEADERCODE = 295,
+ TK_TYPEHEADERCODE = 296,
+ TK_MODULE = 297,
+ TK_CMODULE = 298,
+ TK_CLASS = 299,
+ TK_STRUCT = 300,
+ TK_PUBLIC = 301,
+ TK_PROTECTED = 302,
+ TK_PRIVATE = 303,
+ TK_SIGNALS = 304,
+ TK_SLOTS = 305,
+ TK_BOOL = 306,
+ TK_SHORT = 307,
+ TK_INT = 308,
+ TK_LONG = 309,
+ TK_FLOAT = 310,
+ TK_DOUBLE = 311,
+ TK_CHAR = 312,
+ TK_WCHAR_T = 313,
+ TK_VOID = 314,
+ TK_PYOBJECT = 315,
+ TK_PYTUPLE = 316,
+ TK_PYLIST = 317,
+ TK_PYDICT = 318,
+ TK_PYCALLABLE = 319,
+ TK_PYSLICE = 320,
+ TK_PYTYPE = 321,
+ TK_VIRTUAL = 322,
+ TK_ENUM = 323,
+ TK_SIGNED = 324,
+ TK_UNSIGNED = 325,
+ TK_SCOPE = 326,
+ TK_LOGICAL_OR = 327,
+ TK_CONST = 328,
+ TK_STATIC = 329,
+ TK_SIPSIGNAL = 330,
+ TK_SIPSLOT = 331,
+ TK_SIPANYSLOT = 332,
+ TK_SIPRXCON = 333,
+ TK_SIPRXDIS = 334,
+ TK_SIPSLOTCON = 335,
+ TK_SIPSLOTDIS = 336,
+ TK_NUMBER = 337,
+ TK_REAL = 338,
+ TK_TYPEDEF = 339,
+ TK_NAMESPACE = 340,
+ TK_TIMELINE = 341,
+ TK_PLATFORMS = 342,
+ TK_FEATURE = 343,
+ TK_LICENSE = 344,
+ TK_QCHAR = 345,
+ TK_TRUE = 346,
+ TK_FALSE = 347,
+ TK_NULL = 348,
+ TK_OPERATOR = 349,
+ TK_THROW = 350,
+ TK_QOBJECT = 351,
+ TK_EXCEPTION = 352,
+ TK_RAISECODE = 353,
+ TK_EXPLICIT = 354,
+ TK_TEMPLATE = 355,
+ TK_ELLIPSIS = 356
+ };
+#endif
+#define TK_OPTIONS 258
+#define TK_NOEMITTERS 259
+#define TK_DOC 260
+#define TK_EXPORTEDDOC 261
+#define TK_MAKEFILE 262
+#define TK_ACCESSCODE 263
+#define TK_GETCODE 264
+#define TK_SETCODE 265
+#define TK_PREINITCODE 266
+#define TK_POSTINITCODE 267
+#define TK_UNITCODE 268
+#define TK_MODCODE 269
+#define TK_TYPECODE 270
+#define TK_PREPYCODE 271
+#define TK_COPYING 272
+#define TK_MAPPEDTYPE 273
+#define TK_CODELINE 274
+#define TK_IF 275
+#define TK_END 276
+#define TK_NAME 277
+#define TK_PATHNAME 278
+#define TK_STRING 279
+#define TK_VIRTUALCATCHERCODE 280
+#define TK_TRAVERSECODE 281
+#define TK_CLEARCODE 282
+#define TK_READBUFFERCODE 283
+#define TK_WRITEBUFFERCODE 284
+#define TK_SEGCOUNTCODE 285
+#define TK_CHARBUFFERCODE 286
+#define TK_METHODCODE 287
+#define TK_FROMTYPE 288
+#define TK_TOTYPE 289
+#define TK_TOSUBCLASS 290
+#define TK_INCLUDE 291
+#define TK_OPTINCLUDE 292
+#define TK_IMPORT 293
+#define TK_EXPHEADERCODE 294
+#define TK_MODHEADERCODE 295
+#define TK_TYPEHEADERCODE 296
+#define TK_MODULE 297
+#define TK_CMODULE 298
+#define TK_CLASS 299
+#define TK_STRUCT 300
+#define TK_PUBLIC 301
+#define TK_PROTECTED 302
+#define TK_PRIVATE 303
+#define TK_SIGNALS 304
+#define TK_SLOTS 305
+#define TK_BOOL 306
+#define TK_SHORT 307
+#define TK_INT 308
+#define TK_LONG 309
+#define TK_FLOAT 310
+#define TK_DOUBLE 311
+#define TK_CHAR 312
+#define TK_WCHAR_T 313
+#define TK_VOID 314
+#define TK_PYOBJECT 315
+#define TK_PYTUPLE 316
+#define TK_PYLIST 317
+#define TK_PYDICT 318
+#define TK_PYCALLABLE 319
+#define TK_PYSLICE 320
+#define TK_PYTYPE 321
+#define TK_VIRTUAL 322
+#define TK_ENUM 323
+#define TK_SIGNED 324
+#define TK_UNSIGNED 325
+#define TK_SCOPE 326
+#define TK_LOGICAL_OR 327
+#define TK_CONST 328
+#define TK_STATIC 329
+#define TK_SIPSIGNAL 330
+#define TK_SIPSLOT 331
+#define TK_SIPANYSLOT 332
+#define TK_SIPRXCON 333
+#define TK_SIPRXDIS 334
+#define TK_SIPSLOTCON 335
+#define TK_SIPSLOTDIS 336
+#define TK_NUMBER 337
+#define TK_REAL 338
+#define TK_TYPEDEF 339
+#define TK_NAMESPACE 340
+#define TK_TIMELINE 341
+#define TK_PLATFORMS 342
+#define TK_FEATURE 343
+#define TK_LICENSE 344
+#define TK_QCHAR 345
+#define TK_TRUE 346
+#define TK_FALSE 347
+#define TK_NULL 348
+#define TK_OPERATOR 349
+#define TK_THROW 350
+#define TK_QOBJECT 351
+#define TK_EXCEPTION 352
+#define TK_RAISECODE 353
+#define TK_EXPLICIT 354
+#define TK_TEMPLATE 355
+#define TK_ELLIPSIS 356
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 103 "parser.y"
+typedef union YYSTYPE {
+ char qchar;
+ char *text;
+ long number;
+ double real;
+ argDef memArg;
+ signatureDef signature;
+ signatureDef *optsignature;
+ throwArgs *throwlist;
+ codeBlock *codeb;
+ valueDef value;
+ valueDef *valp;
+ optFlags optflags;
+ optFlag flag;
+ scopedNameDef *scpvalp;
+ fcallDef fcall;
+ int boolean;
+ exceptionDef exceptionbase;
+ classDef *klass;
+} YYSTYPE;
+/* Line 1285 of yacc.c. */
+#line 260 "parser.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+
diff --git a/python/sip/sipgen/parser.y b/python/sip/sipgen/parser.y
new file mode 100644
index 00000000..bba7d0c1
--- /dev/null
+++ b/python/sip/sipgen/parser.y
@@ -0,0 +1,4945 @@
+/*
+ * The SIP parser.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+%{
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "sip.h"
+
+
+#define MAX_NESTED_IF 10
+#define MAX_NESTED_SCOPE 10
+
+#define inMainModule() (currentSpec -> module == currentModule)
+
+
+static sipSpec *currentSpec; /* The current spec being parsed. */
+static stringList *neededQualifiers; /* The list of required qualifiers. */
+static stringList *excludedQualifiers; /* The list of excluded qualifiers. */
+static moduleDef *currentModule; /* The current module being parsed. */
+static mappedTypeDef *currentMappedType; /* The current mapped type. */
+static enumDef *currentEnum; /* The current enum being parsed. */
+static int sectionFlags; /* The current section flags. */
+static int currentOverIsVirt; /* Set if the overload is virtual. */
+static int currentCtorIsExplicit; /* Set if the ctor is explicit. */
+static int currentIsStatic; /* Set if the current is static. */
+static char *previousFile; /* The file just parsed. */
+static parserContext newContext; /* The new pending context. */
+static int skipStackPtr; /* The skip stack pointer. */
+static int skipStack[MAX_NESTED_IF]; /* Stack of skip flags. */
+static classDef *scopeStack[MAX_NESTED_SCOPE]; /* The scope stack. */
+static int sectFlagsStack[MAX_NESTED_SCOPE]; /* The section flags stack. */
+static int currentScopeIdx; /* The scope stack index. */
+static int currentTimelineOrder; /* The current timeline order. */
+
+
+static char *getPythonName(optFlags *optflgs, char *cname);
+static nameDef *cacheName(sipSpec *,char *);
+static classDef *findClass(sipSpec *,ifaceFileType,scopedNameDef *);
+static classDef *findClassWithInterface(sipSpec *pt, ifaceFileDef *iff);
+static classDef *newClass(sipSpec *,ifaceFileType,scopedNameDef *);
+static void finishClass(sipSpec *,moduleDef *,classDef *,optFlags *);
+static exceptionDef *findException(sipSpec *pt, scopedNameDef *fqname, int new);
+static mappedTypeDef *newMappedType(sipSpec *,argDef *);
+static enumDef *newEnum(sipSpec *,moduleDef *,char *,optFlags *,int);
+static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod, classDef *scope, scopedNameDef *fqname, classTmplDef *tcd, templateDef *td);
+static void newTypedef(sipSpec *,moduleDef *,char *,argDef *);
+static void newVar(sipSpec *,moduleDef *,char *,int,argDef *,optFlags *,
+ codeBlock *,codeBlock *,codeBlock *);
+static void newCtor(char *,int,signatureDef *,optFlags *,codeBlock *,
+ throwArgs *,signatureDef *,int);
+static void newFunction(sipSpec *,moduleDef *,int,int,int,char *,
+ signatureDef *,int,int,optFlags *,codeBlock *,
+ codeBlock *,throwArgs *,signatureDef *);
+static optFlag *findOptFlag(optFlags *,char *,flagType);
+static memberDef *findFunction(sipSpec *,moduleDef *,classDef *,nameDef *,int,
+ int);
+static void checkAttributes(sipSpec *,classDef *,char *,int);
+static void newModule(FILE *,char *);
+static void appendCodeBlock(codeBlock **,codeBlock *);
+static void parseFile(FILE *,char *,moduleDef *,int);
+static void handleEOF(void);
+static void handleEOM(void);
+static qualDef *findQualifier(char *);
+static scopedNameDef *text2scopedName(char *);
+static scopedNameDef *scopeScopedName(scopedNameDef *name);
+static void pushScope(classDef *);
+static void popScope(void);
+static classDef *currentScope(void);
+static void newQualifier(moduleDef *,int,int,char *,qualType);
+static void newImport(char *);
+static void usedInMainModule(sipSpec *,ifaceFileDef *);
+static int timePeriod(char *,char *);
+static int platOrFeature(char *,int);
+static int isNeeded(qualDef *);
+static int notSkipping(void);
+static void getHooks(optFlags *,char **,char **);
+static int getReleaseGIL(optFlags *);
+static int getHoldGIL(optFlags *);
+static void templateSignature(signatureDef *sd, int result, classTmplDef *tcd, templateDef *td, classDef *ncd);
+static void templateType(argDef *ad, classTmplDef *tcd, templateDef *td, classDef *ncd);
+static int search_back(const char *end, const char *start, const char *target);
+static char *getType(scopedNameDef *ename, argDef *ad);
+static char *scopedNameToString(scopedNameDef *name);
+static void addUsedFromCode(sipSpec *pt, ifaceFileList **used, const char *sname);
+static int sameName(scopedNameDef *snd, const char *sname);
+static int optFind(sipSpec *pt, const char *opt);
+%}
+
+%union {
+ char qchar;
+ char *text;
+ long number;
+ double real;
+ argDef memArg;
+ signatureDef signature;
+ signatureDef *optsignature;
+ throwArgs *throwlist;
+ codeBlock *codeb;
+ valueDef value;
+ valueDef *valp;
+ optFlags optflags;
+ optFlag flag;
+ scopedNameDef *scpvalp;
+ fcallDef fcall;
+ int boolean;
+ exceptionDef exceptionbase;
+ classDef *klass;
+}
+
+%token TK_OPTIONS
+%token TK_NOEMITTERS
+%token TK_DOC
+%token TK_EXPORTEDDOC
+%token TK_MAKEFILE
+%token TK_ACCESSCODE
+%token TK_GETCODE
+%token TK_SETCODE
+%token TK_PREINITCODE
+%token TK_POSTINITCODE
+%token TK_UNITCODE
+%token TK_MODCODE
+%token TK_TYPECODE
+%token TK_PREPYCODE
+%token TK_COPYING
+%token TK_MAPPEDTYPE
+%token <codeb> TK_CODELINE
+%token TK_IF
+%token TK_END
+%token <text> TK_NAME
+%token <text> TK_PATHNAME
+%token <text> TK_STRING
+%token TK_VIRTUALCATCHERCODE
+%token TK_TRAVERSECODE
+%token TK_CLEARCODE
+%token TK_READBUFFERCODE
+%token TK_WRITEBUFFERCODE
+%token TK_SEGCOUNTCODE
+%token TK_CHARBUFFERCODE
+%token TK_METHODCODE
+%token TK_FROMTYPE
+%token TK_TOTYPE
+%token TK_TOSUBCLASS
+%token TK_INCLUDE
+%token TK_OPTINCLUDE
+%token TK_IMPORT
+%token TK_EXPHEADERCODE
+%token TK_MODHEADERCODE
+%token TK_TYPEHEADERCODE
+%token TK_MODULE
+%token TK_CMODULE
+%token TK_CLASS
+%token TK_STRUCT
+%token TK_PUBLIC
+%token TK_PROTECTED
+%token TK_PRIVATE
+%token TK_SIGNALS
+%token TK_SLOTS
+%token TK_BOOL
+%token TK_SHORT
+%token TK_INT
+%token TK_LONG
+%token TK_FLOAT
+%token TK_DOUBLE
+%token TK_CHAR
+%token TK_WCHAR_T
+%token TK_VOID
+%token TK_PYOBJECT
+%token TK_PYTUPLE
+%token TK_PYLIST
+%token TK_PYDICT
+%token TK_PYCALLABLE
+%token TK_PYSLICE
+%token TK_PYTYPE
+%token TK_VIRTUAL
+%token TK_ENUM
+%token TK_SIGNED
+%token TK_UNSIGNED
+%token TK_SCOPE
+%token TK_LOGICAL_OR
+%token TK_CONST
+%token TK_STATIC
+%token TK_SIPSIGNAL
+%token TK_SIPSLOT
+%token TK_SIPANYSLOT
+%token TK_SIPRXCON
+%token TK_SIPRXDIS
+%token TK_SIPSLOTCON
+%token TK_SIPSLOTDIS
+%token <number> TK_NUMBER
+%token <real> TK_REAL
+%token TK_TYPEDEF
+%token TK_NAMESPACE
+%token TK_TIMELINE
+%token TK_PLATFORMS
+%token TK_FEATURE
+%token TK_LICENSE
+%token <qchar> TK_QCHAR
+%token TK_TRUE
+%token TK_FALSE
+%token TK_NULL
+%token TK_OPERATOR
+%token TK_THROW
+%token TK_QOBJECT
+%token TK_EXCEPTION
+%token TK_RAISECODE
+%token TK_EXPLICIT
+%token TK_TEMPLATE
+%token TK_ELLIPSIS
+
+%type <memArg> argvalue
+%type <memArg> argtype
+%type <memArg> cpptype
+%type <memArg> basetype
+%type <signature> template
+%type <signature> arglist
+%type <signature> rawarglist
+%type <signature> cpptypelist
+%type <optsignature> optsig
+%type <optsignature> optctorsig
+%type <throwlist> optexceptions
+%type <throwlist> exceptionlist
+%type <number> optslot
+%type <number> optref
+%type <number> optconst
+%type <number> optvirtual
+%type <number> optabstract
+%type <number> deref
+%type <number> optnumber
+%type <value> simplevalue
+%type <valp> value
+%type <valp> expr
+%type <valp> optassign
+%type <codeb> optaccesscode
+%type <codeb> optgetcode
+%type <codeb> optsetcode
+%type <codeb> exphdrcode
+%type <codeb> modhdrcode
+%type <codeb> typehdrcode
+%type <codeb> opttypehdrcode
+%type <codeb> travcode
+%type <codeb> clearcode
+%type <codeb> readbufcode
+%type <codeb> writebufcode
+%type <codeb> segcountcode
+%type <codeb> charbufcode
+%type <codeb> modcode
+%type <codeb> typecode
+%type <codeb> codeblock
+%type <codeb> codelines
+%type <codeb> virtualcatchercode
+%type <codeb> methodcode
+%type <codeb> raisecode
+%type <text> operatorname
+%type <text> optfilename
+%type <text> optname
+%type <text> modname
+%type <optflags> optflags
+%type <optflags> flaglist
+%type <flag> flag
+%type <flag> flagvalue
+%type <qchar> optunop
+%type <qchar> binop
+%type <scpvalp> scopepart
+%type <scpvalp> scopedname
+%type <fcall> exprlist
+%type <boolean> qualifiers
+%type <boolean> oredqualifiers
+%type <boolean> modlang
+%type <boolean> optclassbody
+%type <exceptionbase> baseexception
+%type <klass> class
+
+%%
+
+specification: statement
+ | specification statement
+ ;
+
+statement: {
+ /*
+ * We don't do these in parserEOF() because the parser
+ * is reading ahead and that would be too early.
+ */
+
+ if (previousFile != NULL)
+ {
+ handleEOF();
+
+ if (newContext.prevmod != NULL)
+ handleEOM();
+
+ free(previousFile);
+ previousFile = NULL;
+ }
+ } modstatement
+ ;
+
+modstatement: module
+ | options
+ | noemitters
+ | copying
+ | include
+ | optinclude
+ | import
+ | timeline
+ | platforms
+ | feature
+ | license
+ | exphdrcode {
+ if (notSkipping())
+ appendCodeBlock(&currentSpec->exphdrcode, $1);
+ }
+ | modhdrcode {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> hdrcode,$1);
+ }
+ | modcode {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> cppcode,$1);
+ }
+ | preinitcode
+ | postinitcode
+ | unitcode
+ | prepycode
+ | doc
+ | exporteddoc
+ | makefile
+ | mappedtype
+ | mappedtypetmpl
+ | nsstatement
+ ;
+
+nsstatement: ifstart
+ | ifend
+ | namespace
+ | struct
+ | class
+ | classtmpl
+ | exception
+ | typedef
+ | enum
+ | function
+ | variable
+ | typehdrcode {
+ if (notSkipping())
+ {
+ classDef *scope = currentScope();
+
+ if (scope == NULL)
+ yyerror("%TypeHeaderCode can only be used in a namespace, class or mapped type");
+
+ appendCodeBlock(&scope->hdrcode, $1);
+ }
+ }
+ ;
+
+options: TK_OPTIONS '(' optionlist ')'
+ ;
+
+optionlist: TK_NAME {
+ appendString(&currentSpec->options, $1);
+ }
+ | optionlist ',' TK_NAME {
+ appendString(&currentSpec->options, $3);
+ }
+ ;
+
+noemitters: TK_NOEMITTERS {
+ if (notSkipping())
+ {
+ yywarning("%SIPNoEmitters is deprecated, please use %SIPOptions instead");
+ appendString(&currentSpec->options, "QtNoEmitters");
+ }
+ }
+ ;
+
+exception: TK_EXCEPTION scopedname baseexception optflags '{' opttypehdrcode raisecode '}' ';' {
+ if (notSkipping())
+ {
+ exceptionDef *xd;
+ char *pyname;
+
+ if (currentSpec->genc)
+ yyerror("%Exception not allowed in a C module");
+
+ pyname = getPythonName(&$4, scopedNameTail($2));
+
+ checkAttributes(currentSpec, NULL, pyname, FALSE);
+
+ xd = findException(currentSpec, $2, TRUE);
+
+ if (xd->cd != NULL)
+ yyerror("%Exception name has already been seen as a class name - it must be defined before being used");
+
+ if (xd->iff->module != NULL)
+ yyerror("The %Exception has already been defined");
+
+ /* Complete the definition. */
+
+ xd->iff->module = currentModule;
+ xd->pyname = pyname;
+ xd->bibase = $3.bibase;
+ xd->base = $3.base;
+ xd->hdrcode = $6;
+ xd->raisecode = $7;
+
+ if (xd->bibase != NULL || xd->base != NULL)
+ xd->exceptionnr = currentModule->nrexceptions++;
+
+ if (inMainModule() && xd->base != NULL && xd->base->iff->module != currentModule)
+ addToUsedList(&currentSpec->used, xd->base->iff);
+ }
+ }
+ ;
+
+baseexception: {
+ $$.bibase = NULL;
+ $$.base = NULL;
+ }
+ | '(' scopedname ')' {
+ exceptionDef *xd;
+
+ $$.bibase = NULL;
+ $$.base = NULL;
+
+ /* See if it is a defined exception. */
+ for (xd = currentSpec->exceptions; xd != NULL; xd = xd->next)
+ if (sameScopedName(xd->iff->fqcname, $2))
+ {
+ $$.base = xd;
+ break;
+ }
+
+ if (xd == NULL && $2->next == NULL && strncmp($2->name, "SIP_", 4) == 0)
+ {
+ /* See if it is a builtin exception. */
+
+ static char *builtins[] = {
+ "Exception",
+ "StopIteration",
+ "StandardError",
+ "ArithmeticError",
+ "LookupError",
+ "AssertionError",
+ "AttributeError",
+ "EOFError",
+ "FloatingPointError",
+ "EnvironmentError",
+ "IOError",
+ "OSError",
+ "ImportError",
+ "IndexError",
+ "KeyError",
+ "KeyboardInterrupt",
+ "MemoryError",
+ "NameError",
+ "OverflowError",
+ "RuntimeError",
+ "NotImplementedError",
+ "SyntaxError",
+ "IndentationError",
+ "TabError",
+ "ReferenceError",
+ "SystemError",
+ "SystemExit",
+ "TypeError",
+ "UnboundLocalError",
+ "UnicodeError",
+ "UnicodeEncodeError",
+ "UnicodeDecodeError",
+ "UnicodeTranslateError",
+ "ValueError",
+ "ZeroDivisionError",
+ "WindowsError",
+ "VMSError",
+ NULL
+ };
+
+ char **cp;
+
+ for (cp = builtins; *cp != NULL; ++cp)
+ if (strcmp($2->name + 4, *cp) == 0)
+ {
+ $$.bibase = *cp;
+ break;
+ }
+ }
+
+ if ($$.bibase == NULL && $$.base == NULL)
+ yyerror("Unknown exception base type");
+ }
+ ;
+
+raisecode: TK_RAISECODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+mappedtype: TK_MAPPEDTYPE basetype {
+ if (notSkipping())
+ currentMappedType = newMappedType(currentSpec,&$2);
+ } mtdefinition
+ ;
+
+mappedtypetmpl: template TK_MAPPEDTYPE basetype {
+ int a;
+
+ if (currentSpec->genc)
+ yyerror("%MappedType templates not allowed in a C module");
+
+ /* Check the template arguments are all just simple names. */
+ for (a = 0; a < $1.nrArgs; ++a)
+ if ($1.args[a].atype != defined_type || $1.args[a].u.snd->next != NULL)
+ yyerror("%MappedType template arguments must be simple names");
+
+ if ($3.atype != template_type)
+ yyerror("%MappedType template must map a template type");
+
+ if (notSkipping())
+ {
+ mappedTypeTmplDef *mtt;
+
+ /* Check a template hasn't already been provided. */
+ for (mtt = currentSpec->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
+ if (sameScopedName(mtt->mt->type.u.td->fqname, $3.u.td->fqname) && sameTemplateSignature(&mtt->mt->type.u.td->types, &$3.u.td->types, TRUE))
+ yyerror("%MappedType template for this type has already been defined");
+
+ $3.nrderefs = 0;
+ $3.argflags = 0;
+
+ mtt = sipMalloc(sizeof (mappedTypeTmplDef));
+
+ mtt->sig = $1;
+ mtt->mt = allocMappedType(&$3);
+ mtt->next = currentSpec->mappedtypetemplates;
+
+ currentSpec->mappedtypetemplates = mtt;
+
+ currentMappedType = mtt->mt;
+ }
+ } mtdefinition
+ ;
+
+mtdefinition: '{' mtbody '}' ';' {
+ if (notSkipping())
+ {
+ if (currentMappedType->convfromcode == NULL)
+ yyerror("%MappedType must have a %ConvertFromTypeCode directive");
+
+ if (currentMappedType->convtocode == NULL)
+ yyerror("%MappedType must have a %ConvertToTypeCode directive");
+
+ currentMappedType = NULL;
+ }
+ }
+ ;
+
+mtbody: mtline
+ | mtbody mtline
+ ;
+
+mtline: typehdrcode {
+ if (notSkipping())
+ appendCodeBlock(&currentMappedType -> hdrcode,$1);
+ }
+ | TK_FROMTYPE codeblock {
+ if (notSkipping())
+ {
+ if (currentMappedType -> convfromcode != NULL)
+ yyerror("%MappedType has more than one %ConvertFromTypeCode directive");
+
+ currentMappedType -> convfromcode = $2;
+ }
+ }
+ | TK_TOTYPE codeblock {
+ if (notSkipping())
+ {
+ if (currentMappedType -> convtocode != NULL)
+ yyerror("%MappedType has more than one %ConvertToTypeCode directive");
+
+ currentMappedType -> convtocode = $2;
+ }
+ }
+ ;
+
+namespace: TK_NAMESPACE TK_NAME {
+ if (currentSpec -> genc)
+ yyerror("namespace definition not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classDef *ns;
+
+ ns = newClass(currentSpec,namespace_iface,text2scopedName($2));
+
+ pushScope(ns);
+
+ sectionFlags = 0;
+ }
+ } '{' nsbody '}' ';' {
+ if (inMainModule())
+ {
+ classDef *ns = currentScope();
+
+ if (!isUsedName(ns->iff->name))
+ {
+ varDef *vd;
+
+ for (vd = currentSpec->vars; vd != NULL; vd = vd->next)
+ if (vd->ecd == ns)
+ {
+ setIsUsedName(ns->iff->name);
+ break;
+ }
+ }
+ }
+
+ if (notSkipping())
+ popScope();
+ }
+ ;
+
+nsbody: nsstatement
+ | nsbody nsstatement
+ ;
+
+platforms: TK_PLATFORMS {
+ qualDef *qd;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == platform_qualifier)
+ yyerror("%Platforms has already been defined for this module");
+ }
+ '{' platformlist '}' {
+ qualDef *qd;
+ int nrneeded;
+
+ /*
+ * Check that exactly one platform in the set was
+ * requested.
+ */
+
+ nrneeded = 0;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == platform_qualifier && isNeeded(qd))
+ ++nrneeded;
+
+ if (nrneeded > 1)
+ yyerror("No more than one of these %Platforms must be specified with the -t flag");
+ }
+ ;
+
+platformlist: platform
+ | platformlist platform
+ ;
+
+platform: TK_NAME {
+ newQualifier(currentModule,-1,-1,$1,platform_qualifier);
+ }
+ ;
+
+feature: TK_FEATURE TK_NAME {
+ newQualifier(currentModule,-1,-1,$2,feature_qualifier);
+ }
+ ;
+
+timeline: TK_TIMELINE {
+ currentTimelineOrder = 0;
+ }
+ '{' qualifierlist '}' {
+ qualDef *qd;
+ int nrneeded;
+
+ /*
+ * Check that exactly one time slot in the set was
+ * requested.
+ */
+
+ nrneeded = 0;
+
+ for (qd = currentModule -> qualifiers; qd != NULL; qd = qd -> next)
+ if (qd -> qtype == time_qualifier && isNeeded(qd))
+ ++nrneeded;
+
+ if (nrneeded > 1)
+ yyerror("At most one of this %Timeline must be specified with the -t flag");
+
+ currentModule -> nrtimelines++;
+ }
+ ;
+
+qualifierlist: qualifiername
+ | qualifierlist qualifiername
+ ;
+
+qualifiername: TK_NAME {
+ newQualifier(currentModule,currentModule -> nrtimelines,currentTimelineOrder++,$1,time_qualifier);
+ }
+ ;
+
+ifstart: TK_IF '(' qualifiers ')' {
+ if (skipStackPtr >= MAX_NESTED_IF)
+ yyerror("Internal error: increase the value of MAX_NESTED_IF");
+
+ /* Nested %Ifs are implicit logical ands. */
+
+ if (skipStackPtr > 0)
+ $3 = ($3 && skipStack[skipStackPtr - 1]);
+
+ skipStack[skipStackPtr++] = $3;
+ }
+ ;
+
+oredqualifiers: TK_NAME {
+ $$ = platOrFeature($1,FALSE);
+ }
+ | '!' TK_NAME {
+ $$ = platOrFeature($2,TRUE);
+ }
+ | oredqualifiers TK_LOGICAL_OR TK_NAME {
+ $$ = (platOrFeature($3,FALSE) || $1);
+ }
+ | oredqualifiers TK_LOGICAL_OR '!' TK_NAME {
+ $$ = (platOrFeature($4,TRUE) || $1);
+ }
+ ;
+
+qualifiers: oredqualifiers
+ | optname '-' optname {
+ $$ = timePeriod($1,$3);
+ }
+ ;
+
+ifend: TK_END {
+ if (skipStackPtr-- <= 0)
+ yyerror("Too many %End directives");
+ }
+ ;
+
+license: TK_LICENSE optflags {
+ optFlag *of;
+
+ if ($2.nrFlags == 0)
+ yyerror("%License details not specified");
+
+ if ((of = findOptFlag(&$2,"Type",string_flag)) == NULL)
+ yyerror("%License type not specified");
+
+ currentModule -> license = sipMalloc(sizeof (licenseDef));
+
+ currentModule -> license -> type = of -> fvalue.sval;
+
+ currentModule -> license -> licensee =
+ ((of = findOptFlag(&$2,"Licensee",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+
+ currentModule -> license -> timestamp =
+ ((of = findOptFlag(&$2,"Timestamp",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+
+ currentModule -> license -> sig =
+ ((of = findOptFlag(&$2,"Signature",string_flag)) != NULL)
+ ? of -> fvalue.sval : NULL;
+ }
+ ;
+
+module: modlang modname optnumber {
+ /* Check the module hasn't already been defined. */
+
+ moduleDef *mod;
+
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ if (mod->fullname != NULL && strcmp(mod->fullname, $2) == 0)
+ yyerror("Module is already defined");
+
+ currentModule->fullname = $2;
+
+ if ((currentModule->name = strrchr($2, '.')) != NULL)
+ currentModule->name++;
+ else
+ currentModule->name = $2;
+
+ currentModule -> version = $3;
+
+ if (currentSpec -> genc < 0)
+ currentSpec -> genc = $1;
+ else if (currentSpec -> genc != $1)
+ yyerror("Cannot mix C and C++ modules");
+ }
+ ;
+
+modlang: TK_MODULE {
+ $$ = FALSE;
+ }
+ | TK_CMODULE {
+ $$ = TRUE;
+ }
+ ;
+
+modname: TK_NAME
+ | TK_PATHNAME {
+ /*
+ * The grammar design is a bit broken and this is the
+ * easiest way to allow periods in module names.
+ */
+
+ char *cp;
+
+ for (cp = $1; *cp != '\0'; ++cp)
+ if (*cp != '.' && *cp != '_' && !isalnum(*cp))
+ yyerror("Invalid character in module name");
+
+ $$ = $1;
+ }
+ ;
+
+optnumber: {
+ $$ = -1;
+ }
+ | TK_NUMBER
+ ;
+
+include: TK_INCLUDE TK_PATHNAME {
+ parseFile(NULL,$2,NULL,FALSE);
+ }
+ ;
+
+optinclude: TK_OPTINCLUDE TK_PATHNAME {
+ parseFile(NULL,$2,NULL,TRUE);
+ }
+ ;
+
+import: TK_IMPORT TK_PATHNAME {
+ newImport($2);
+ }
+ ;
+
+optaccesscode: {
+ $$ = NULL;
+ }
+ | TK_ACCESSCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+optgetcode: {
+ $$ = NULL;
+ }
+ | TK_GETCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+optsetcode: {
+ $$ = NULL;
+ }
+ | TK_SETCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+copying: TK_COPYING codeblock {
+ if (inMainModule())
+ appendCodeBlock(&currentSpec -> copying,$2);
+ }
+ ;
+
+exphdrcode: TK_EXPHEADERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+modhdrcode: TK_MODHEADERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+typehdrcode: TK_TYPEHEADERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+opttypehdrcode: {
+ $$ = NULL;
+ }
+ | typehdrcode
+ ;
+
+travcode: TK_TRAVERSECODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+clearcode: TK_CLEARCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+readbufcode: TK_READBUFFERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+writebufcode: TK_WRITEBUFFERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+segcountcode: TK_SEGCOUNTCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+charbufcode: TK_CHARBUFFERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+modcode: TK_MODCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+typecode: TK_TYPECODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+preinitcode: TK_PREINITCODE codeblock {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> preinitcode,$2);
+ }
+ ;
+
+postinitcode: TK_POSTINITCODE codeblock {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec -> postinitcode,$2);
+ }
+ ;
+
+unitcode: TK_UNITCODE codeblock {
+ if (notSkipping() && inMainModule())
+ appendCodeBlock(&currentSpec->unitcode, $2);
+ }
+ ;
+
+prepycode: TK_PREPYCODE codeblock {
+ /*
+ * This is a no-op and is retained for compatibility
+ * until the last use of it (by SIP v3) can be removed
+ * from PyQt.
+ */
+ }
+ ;
+
+doc: TK_DOC codeblock {
+ if (inMainModule())
+ appendCodeBlock(&currentSpec -> docs,$2);
+ }
+ ;
+
+exporteddoc: TK_EXPORTEDDOC codeblock {
+ appendCodeBlock(&currentSpec -> docs,$2);
+ }
+ ;
+
+makefile: TK_MAKEFILE TK_PATHNAME optfilename codeblock {
+ if (inMainModule())
+ yywarning("%Makefile is ignored, please use the -b flag instead");
+ }
+ ;
+
+codeblock: codelines TK_END
+ ;
+
+codelines: TK_CODELINE
+ | codelines TK_CODELINE {
+ $$ = $1;
+
+ append(&$$->frag, $2->frag);
+
+ free($2->frag);
+ free($2->filename);
+ free($2);
+ }
+ ;
+
+enum: TK_ENUM optname optflags {
+ if (notSkipping())
+ {
+ if (sectionFlags != 0 && (sectionFlags & ~(SECT_IS_PUBLIC | SECT_IS_PROT)) != 0)
+ yyerror("Class enums must be in the public or protected sections");
+
+ currentEnum = newEnum(currentSpec,currentModule,$2,&$3,sectionFlags);
+ }
+ } '{' optenumbody '}' ';'
+ ;
+
+optfilename: {
+ $$ = NULL;
+ }
+ | TK_PATHNAME {
+ $$ = $1;
+ }
+ ;
+
+optname: {
+ $$ = NULL;
+ }
+ | TK_NAME {
+ $$ = $1;
+ }
+ ;
+
+optenumbody:
+ | enumbody
+ ;
+
+enumbody: enumline
+ | enumbody enumline
+ ;
+
+enumline: ifstart
+ | ifend
+ | TK_NAME optenumassign optflags optcomma {
+ if (notSkipping())
+ {
+ /*
+ * Note that we don't use the assigned value.
+ * This is a hangover from when enums where
+ * generated in Python. We can remove it when
+ * we have got around to updating all the .sip
+ * files.
+ */
+ enumMemberDef *emd, **tail;
+
+ emd = sipMalloc(sizeof (enumMemberDef));
+
+ emd -> pyname = cacheName(currentSpec, getPythonName(&$3, $1));
+ emd -> cname = $1;
+ emd -> ed = currentEnum;
+ emd -> next = NULL;
+
+ checkAttributes(currentSpec,emd -> ed -> ecd,emd -> pyname -> text,FALSE);
+
+ /* Append to preserve the order. */
+ for (tail = &currentEnum->members; *tail != NULL; tail = &(*tail)->next)
+ ;
+
+ *tail = emd;
+
+ if (inMainModule())
+ setIsUsedName(emd -> pyname);
+ }
+ }
+ ;
+
+optcomma:
+ | ','
+ ;
+
+optenumassign:
+ | '=' value
+ ;
+
+optassign: {
+ $$ = NULL;
+ }
+ | '=' expr {
+ $$ = $2;
+ }
+ ;
+
+expr: value
+ | expr binop value {
+ valueDef *vd;
+
+ if ($1 -> vtype == string_value || $3 -> vtype == string_value)
+ yyerror("Invalid binary operator for string");
+
+ /* Find the last value in the existing expression. */
+
+ for (vd = $1; vd -> next != NULL; vd = vd -> next)
+ ;
+
+ vd -> vbinop = $2;
+ vd -> next = $3;
+
+ $$ = $1;
+ }
+ ;
+
+binop: '-' {
+ $$ = '-';
+ }
+ | '+' {
+ $$ = '+';
+ }
+ | '*' {
+ $$ = '*';
+ }
+ | '/' {
+ $$ = '/';
+ }
+ | '&' {
+ $$ = '&';
+ }
+ | '|' {
+ $$ = '|';
+ }
+ ;
+
+optunop: {
+ $$ = '\0';
+ }
+ | '!' {
+ $$ = '!';
+ }
+ | '~' {
+ $$ = '~';
+ }
+ | '-' {
+ $$ = '-';
+ }
+ | '+' {
+ $$ = '+';
+ }
+ ;
+
+value: optunop simplevalue {
+ if ($1 != '\0' && $2.vtype == string_value)
+ yyerror("Invalid unary operator for string");
+
+ /*
+ * Convert the value to a simple expression on the
+ * heap.
+ */
+
+ $$ = sipMalloc(sizeof (valueDef));
+
+ *$$ = $2;
+ $$ -> vunop = $1;
+ $$ -> vbinop = '\0';
+ $$ -> next = NULL;
+ }
+ ;
+
+scopedname: scopepart
+ | scopedname TK_SCOPE scopepart {
+ if (currentSpec -> genc)
+ yyerror("Scoped names are not allowed in a C module");
+
+ appendScopedName(&$1,$3);
+ }
+ ;
+
+scopepart: TK_NAME {
+ $$ = text2scopePart($1);
+ }
+ ;
+
+simplevalue: scopedname {
+ /*
+ * We let the C++ compiler decide if the value is a
+ * valid one - no point in building a full C++ parser
+ * here.
+ */
+
+ $$.vtype = scoped_value;
+ $$.u.vscp = $1;
+ }
+ | basetype '(' exprlist ')' {
+ fcallDef *fcd;
+
+ fcd = sipMalloc(sizeof (fcallDef));
+ *fcd = $3;
+ fcd -> type = $1;
+
+ $$.vtype = fcall_value;
+ $$.u.fcd = fcd;
+ }
+ | TK_REAL {
+ $$.vtype = real_value;
+ $$.u.vreal = $1;
+ }
+ | TK_NUMBER {
+ $$.vtype = numeric_value;
+ $$.u.vnum = $1;
+ }
+ | TK_TRUE {
+ $$.vtype = numeric_value;
+ $$.u.vnum = 1;
+ }
+ | TK_FALSE {
+ $$.vtype = numeric_value;
+ $$.u.vnum = 0;
+ }
+ | TK_NULL {
+ $$.vtype = numeric_value;
+ $$.u.vnum = 0;
+ }
+ | TK_STRING {
+ $$.vtype = string_value;
+ $$.u.vstr = $1;
+ }
+ | TK_QCHAR {
+ $$.vtype = qchar_value;
+ $$.u.vqchar = $1;
+ }
+ ;
+
+exprlist: {
+ /* No values. */
+
+ $$.nrArgs = 0;
+ }
+ | expr {
+ /* The single or first expression. */
+
+ $$.args[0] = $1;
+ $$.nrArgs = 1;
+ }
+ | exprlist ',' expr {
+ /* Check that it wasn't ...(,expression...). */
+
+ if ($$.nrArgs == 0)
+ yyerror("First argument to function call is missing");
+
+ /* Check there is room. */
+
+ if ($1.nrArgs == MAX_NR_ARGS)
+ yyerror("Too many arguments to function call");
+
+ $$ = $1;
+
+ $$.args[$$.nrArgs] = $3;
+ $$.nrArgs++;
+ }
+ ;
+
+typedef: TK_TYPEDEF cpptype TK_NAME ';' {
+ if (notSkipping())
+ newTypedef(currentSpec,currentModule,$3,&$2);
+ }
+ | TK_TYPEDEF cpptype '(' deref TK_NAME ')' '(' cpptypelist ')' ';' {
+ if (notSkipping())
+ {
+ argDef ftype;
+ signatureDef *sig;
+
+ /* Create the full signature on the heap. */
+ sig = sipMalloc(sizeof (signatureDef));
+ *sig = $8;
+ sig -> result = $2;
+
+ /* Create the full type. */
+ ftype.atype = function_type;
+ ftype.argflags = 0;
+ ftype.nrderefs = $4;
+ ftype.defval = NULL;
+ ftype.u.sa = sig;
+
+ newTypedef(currentSpec,currentModule,$5,&ftype);
+ }
+ }
+ ;
+
+struct: TK_STRUCT TK_NAME {
+ if (notSkipping())
+ {
+ classDef *cd;
+
+ cd = newClass(currentSpec,class_iface,text2scopedName($2));
+
+ pushScope(cd);
+
+ sectionFlags = SECT_IS_PUBLIC;
+ }
+ } optflags '{' classbody '}' ';' {
+ if (notSkipping())
+ {
+ finishClass(currentSpec, currentModule, currentScope(), &$4);
+ popScope();
+ }
+ }
+ ;
+
+classtmpl: template class {
+ if (currentSpec->genc)
+ yyerror("Class templates not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classTmplDef *tcd;
+
+ /*
+ * Make sure there is room for the extra class
+ * name argument.
+ */
+ if ($1.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ tcd = sipMalloc(sizeof (classTmplDef));
+ tcd->sig = $1;
+ tcd->cd = $2;
+ tcd->next = currentSpec->classtemplates;
+
+ currentSpec->classtemplates = tcd;
+ }
+ }
+ ;
+
+template: TK_TEMPLATE '<' cpptypelist '>' {
+ $$ = $3;
+ }
+ ;
+
+class: TK_CLASS scopedname {
+ if (currentSpec -> genc)
+ yyerror("Class definition not allowed in a C module");
+
+ if (notSkipping())
+ {
+ classDef *cd;
+
+ cd = newClass(currentSpec, class_iface, scopeScopedName($2));
+
+ pushScope(cd);
+
+ sectionFlags = SECT_IS_PRIVATE;
+ }
+ } superclasses optflags optclassbody ';' {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ /*
+ * See if the class was defined or just
+ * declared.
+ */
+ if ($6)
+ {
+ if ($2->next != NULL)
+ yyerror("A scoped name cannot be given in a class definition");
+
+ }
+ else if (cd->supers != NULL)
+ yyerror("Class has super-classes but no definition");
+ else
+ setIsOpaque(cd);
+
+ finishClass(currentSpec, currentModule, cd, &$5);
+ popScope();
+
+ /*
+ * Check that external classes have only been
+ * declared at the global scope.
+ */
+ if (isExternal(cd) && currentScope() != NULL)
+ yyerror("External classes can only be declared in the global scope");
+
+ $$ = cd;
+ }
+ }
+ ;
+
+superclasses:
+ | ':' superlist
+ ;
+
+superlist: superclass
+ | superlist ',' superclass
+ ;
+
+superclass: scopedname {
+ if (notSkipping())
+ {
+ classDef *cd, *super;
+
+ cd = currentScope();
+
+ super = findClass(currentSpec,class_iface,$1);
+
+ appendToClassList(&cd -> supers,super);
+ addToUsedList(&cd->iff->used, super->iff);
+ }
+ }
+ ;
+
+optclassbody: {
+ $$ = FALSE;
+ }
+ | '{' classbody '}' {
+ $$ = TRUE;
+ }
+ ;
+
+classbody: classline
+ | classbody classline
+ ;
+
+classline: ifstart
+ | ifend
+ | namespace
+ | struct
+ | class
+ | exception
+ | typedef
+ | enum
+ | typecode {
+ if (notSkipping())
+ appendCodeBlock(&currentScope() -> cppcode,$1);
+ }
+ | typehdrcode {
+ if (notSkipping())
+ appendCodeBlock(&currentScope() -> hdrcode,$1);
+ }
+ | travcode {
+ if (currentScope()->travcode != NULL)
+ yyerror("%GCTraverseCode already given for class");
+
+ if (notSkipping())
+ currentScope()->travcode = $1;
+ }
+ | clearcode {
+ if (currentScope()->clearcode != NULL)
+ yyerror("%GCClearCode already given for class");
+
+ if (notSkipping())
+ currentScope()->clearcode = $1;
+ }
+ | readbufcode {
+ if (currentScope()->readbufcode != NULL)
+ yyerror("%BIGetReadBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->readbufcode = $1;
+ }
+ | writebufcode {
+ if (currentScope()->writebufcode != NULL)
+ yyerror("%BIGetWriteBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->writebufcode = $1;
+ }
+ | segcountcode {
+ if (currentScope()->segcountcode != NULL)
+ yyerror("%BIGetSegCountCode already given for class");
+
+ if (notSkipping())
+ currentScope()->segcountcode = $1;
+ }
+ | charbufcode {
+ if (currentScope()->charbufcode != NULL)
+ yyerror("%BIGetCharBufferCode already given for class");
+
+ if (notSkipping())
+ currentScope()->charbufcode = $1;
+ }
+ | ctor
+ | dtor
+ | varmember
+ | TK_TOSUBCLASS codeblock {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (cd -> convtosubcode != NULL)
+ yyerror("Class has more than one %ConvertToSubClassCode directive");
+
+ cd -> convtosubcode = $2;
+ }
+ }
+ | TK_TOTYPE codeblock {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (cd -> convtocode != NULL)
+ yyerror("Class has more than one %ConvertToTypeCode directive");
+
+ cd -> convtocode = $2;
+ }
+ }
+ | TK_PUBLIC optslot ':' {
+ if (currentSpec -> genc)
+ yyerror("public section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PUBLIC | $2;
+ }
+ | TK_PROTECTED optslot ':' {
+ if (currentSpec -> genc)
+ yyerror("protected section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PROT | $2;
+ }
+ | TK_PRIVATE optslot ':' {
+ if (currentSpec -> genc)
+ yyerror("private section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_PRIVATE | $2;
+ }
+ | TK_SIGNALS ':' {
+ if (currentSpec -> genc)
+ yyerror("signals section not allowed in a C module");
+
+ if (notSkipping())
+ sectionFlags = SECT_IS_SIGNAL;
+ }
+ ;
+
+optslot: {
+ $$ = 0;
+ }
+ | TK_SLOTS {
+ $$ = SECT_IS_SLOT;
+ }
+ ;
+
+dtor: optvirtual '~' TK_NAME '(' ')' optexceptions optabstract optflags ';' methodcode virtualcatchercode {
+ /* Note that we allow non-virtual dtors in C modules. */
+
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ if (strcmp(classBaseName(cd),$3) != 0)
+ yyerror("Destructor doesn't have the same name as its class");
+
+ if (isDtor(cd))
+ yyerror("Destructor has already been defined");
+
+ if (currentSpec -> genc && $10 == NULL)
+ yyerror("Destructor in C modules must include %MethodCode");
+
+ cd -> dealloccode = $10;
+ cd -> dtorcode = $11;
+ cd -> dtorexceptions = $6;
+ cd -> classflags |= sectionFlags;
+
+ if ($7)
+ {
+ if (!$1)
+ yyerror("Abstract destructor must be virtual");
+
+ setIsAbstractClass(cd);
+ }
+
+ /*
+ * The class has a shadow if we have a virtual dtor or some
+ * dtor code.
+ */
+ if ($1 || $11 != NULL)
+ {
+ if (currentSpec -> genc)
+ yyerror("Virtual destructor or %VirtualCatcherCode not allowed in a C module");
+
+ setHasShadow(cd);
+ }
+
+ if (getReleaseGIL(&$8))
+ setIsReleaseGILDtor(cd);
+ else if (getHoldGIL(&$8))
+ setIsHoldGILDtor(cd);
+ }
+ }
+ ;
+
+ctor: TK_EXPLICIT {currentCtorIsExplicit = TRUE;} simplector
+ | simplector
+ ;
+
+simplector: TK_NAME '(' arglist ')' optexceptions optflags optctorsig ';' methodcode {
+ /* Note that we allow ctors in C modules. */
+
+ if (notSkipping())
+ {
+ if (currentSpec -> genc)
+ {
+ if ($9 == NULL && $3.nrArgs != 0)
+ yyerror("Constructors with arguments in C modules must include %MethodCode");
+
+ if (currentCtorIsExplicit)
+ yyerror("Explicit constructors not allowed in a C module");
+ }
+
+ if ((sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE)) == 0)
+ yyerror("Constructor must be in the public, private or protected sections");
+
+ newCtor($1,sectionFlags,&$3,&$6,$9,$5,$7,currentCtorIsExplicit);
+ }
+
+ free($1);
+
+ currentCtorIsExplicit = FALSE;
+ }
+ ;
+
+optctorsig: {
+ $$ = NULL;
+ }
+ | '[' '(' arglist ')' ']' {
+ $$ = sipMalloc(sizeof (signatureDef));
+
+ *$$ = $3;
+ }
+ ;
+
+optsig: {
+ $$ = NULL;
+ }
+ | '[' cpptype '(' arglist ')' ']' {
+ $$ = sipMalloc(sizeof (signatureDef));
+
+ *$$ = $4;
+ $$ -> result = $2;
+ }
+ ;
+
+optvirtual: {
+ $$ = FALSE;
+ }
+ | TK_VIRTUAL {
+ $$ = TRUE;
+ }
+ ;
+
+function: cpptype TK_NAME '(' arglist ')' optconst optexceptions optabstract optflags optsig ';' methodcode virtualcatchercode {
+ if (notSkipping())
+ {
+ if (sectionFlags != 0 && (sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE | SECT_IS_SLOT | SECT_IS_SIGNAL)) == 0)
+ yyerror("Class function must be in the public, private, protected, slot or signal sections");
+
+ $4.result = $1;
+
+ newFunction(currentSpec,currentModule,
+ sectionFlags,currentIsStatic,
+ currentOverIsVirt,
+ $2,&$4,$6,$8,&$9,$12,$13,$7,$10);
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ | cpptype TK_OPERATOR operatorname '(' arglist ')' optconst optexceptions optabstract optflags optsig ';' methodcode virtualcatchercode {
+ if (notSkipping())
+ {
+ classDef *cd = currentScope();
+
+ /* Handle the unary '+' and '-' operators. */
+ if ((cd != NULL && $5.nrArgs == 0) || (cd == NULL && $5.nrArgs == 1))
+ {
+ if (strcmp($3, "__add__") == 0)
+ $3 = "__pos__";
+ else if (strcmp($3, "__sub__") == 0)
+ $3 = "__neg__";
+ }
+
+ $5.result = $1;
+
+ newFunction(currentSpec,currentModule,
+ sectionFlags,currentIsStatic,
+ currentOverIsVirt,
+ $3,&$5,$7,$9,&$10,$13,$14,$8,$11);
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ | TK_OPERATOR cpptype '(' arglist ')' optconst optexceptions optabstract optflags optsig ';' methodcode virtualcatchercode {
+ classDef *scope = currentScope();
+
+ if (scope == NULL || $4.nrArgs != 0)
+ yyerror("Operator casts must be specified in a class and have no arguments");
+
+
+ if (notSkipping())
+ {
+ char *sname;
+
+ switch ($2.atype)
+ {
+ case defined_type:
+ sname = NULL;
+ break;
+
+ case bool_type:
+ case cbool_type:
+ case short_type:
+ case ushort_type:
+ case int_type:
+ case cint_type:
+ case uint_type:
+ sname = "__int__";
+ break;
+
+ case long_type:
+ case ulong_type:
+ case longlong_type:
+ case ulonglong_type:
+ sname = "__long__";
+ break;
+
+ case float_type:
+ case cfloat_type:
+ case double_type:
+ case cdouble_type:
+ sname = "__float__";
+ break;
+
+ default:
+ yyerror("Unsupported operator cast");
+ }
+
+ if (sname != NULL)
+ {
+ $4.result = $2;
+
+ newFunction(currentSpec, currentModule,
+ sectionFlags,
+ currentIsStatic,
+ currentOverIsVirt, sname,
+ &$4, $6, $8, &$9, $12, $13,
+ $7, $10);
+ }
+ else
+ {
+ argList *al;
+
+ /* Check it doesn't already exist. */
+ for (al = scope->casts; al != NULL; al = al->next)
+ if (sameScopedName($2.u.snd, al->arg.u.snd))
+ yyerror("This operator cast has already been specified in this class");
+
+ al = sipMalloc(sizeof (argList));
+ al->arg = $2;
+ al->next = scope->casts;
+
+ scope->casts = al;
+ }
+ }
+
+ currentIsStatic = FALSE;
+ currentOverIsVirt = FALSE;
+ }
+ ;
+
+operatorname: '+' {$$ = "__add__";}
+ | '-' {$$ = "__sub__";}
+ | '*' {$$ = "__mul__";}
+ | '/' {$$ = "__div__";}
+ | '%' {$$ = "__mod__";}
+ | '&' {$$ = "__and__";}
+ | '|' {$$ = "__or__";}
+ | '^' {$$ = "__xor__";}
+ | '<' '<' {$$ = "__lshift__";}
+ | '>' '>' {$$ = "__rshift__";}
+ | '+' '=' {$$ = "__iadd__";}
+ | '-' '=' {$$ = "__isub__";}
+ | '*' '=' {$$ = "__imul__";}
+ | '/' '=' {$$ = "__idiv__";}
+ | '%' '=' {$$ = "__imod__";}
+ | '&' '=' {$$ = "__iand__";}
+ | '|' '=' {$$ = "__ior__";}
+ | '^' '=' {$$ = "__ixor__";}
+ | '<' '<' '=' {$$ = "__ilshift__";}
+ | '>' '>' '=' {$$ = "__irshift__";}
+ | '~' {$$ = "__invert__";}
+ | '(' ')' {$$ = "__call__";}
+ | '[' ']' {$$ = "__getitem__";}
+ | '<' {$$ = "__lt__";}
+ | '<' '=' {$$ = "__le__";}
+ | '=' '=' {$$ = "__eq__";}
+ | '!' '=' {$$ = "__ne__";}
+ | '>' {$$ = "__gt__";}
+ | '>' '=' {$$ = "__ge__";}
+ ;
+
+optconst: {
+ $$ = FALSE;
+ }
+ | TK_CONST {
+ $$ = TRUE;
+ }
+ ;
+
+optabstract: {
+ $$ = 0;
+ }
+ | '=' TK_NUMBER {
+ if ($2 != 0)
+ yyerror("Abstract virtual function '= 0' expected");
+
+ $$ = TRUE;
+ }
+ ;
+
+optflags: {
+ $$.nrFlags = 0;
+ }
+ | '/' flaglist '/' {
+ $$ = $2;
+ }
+ ;
+
+
+flaglist: flag {
+ $$.flags[0] = $1;
+ $$.nrFlags = 1;
+ }
+ | flaglist ',' flag {
+ /* Check there is room. */
+
+ if ($1.nrFlags == MAX_NR_FLAGS)
+ yyerror("Too many optional flags");
+
+ $$ = $1;
+
+ $$.flags[$$.nrFlags++] = $3;
+ }
+ ;
+
+flag: TK_NAME {
+ $$.ftype = bool_flag;
+ $$.fname = $1;
+ }
+ | TK_NAME '=' flagvalue {
+ $$ = $3;
+ $$.fname = $1;
+ }
+ ;
+
+flagvalue: TK_NAME {
+ $$.ftype = name_flag;
+ $$.fvalue.sval = $1;
+ }
+ | TK_STRING {
+ $$.ftype = string_flag;
+ $$.fvalue.sval = $1;
+ }
+ | TK_NUMBER {
+ $$.ftype = integer_flag;
+ $$.fvalue.ival = $1;
+ }
+ ;
+
+methodcode: {
+ $$ = NULL;
+ }
+ | TK_METHODCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+virtualcatchercode: {
+ $$ = NULL;
+ }
+ | TK_VIRTUALCATCHERCODE codeblock {
+ $$ = $2;
+ }
+ ;
+
+arglist: rawarglist {
+ int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
+
+ nrrxcon = nrrxdis = nrslotcon = nrslotdis = nrarray = nrarraysize = 0;
+
+ for (a = 0; a < $1.nrArgs; ++a)
+ {
+ argDef *ad = &$1.args[a];
+
+ switch (ad -> atype)
+ {
+ case rxcon_type:
+ ++nrrxcon;
+ break;
+
+ case rxdis_type:
+ ++nrrxdis;
+ break;
+
+ case slotcon_type:
+ ++nrslotcon;
+ break;
+
+ case slotdis_type:
+ ++nrslotdis;
+ break;
+ }
+
+ if (isArray(ad))
+ ++nrarray;
+
+ if (isArraySize(ad))
+ ++nrarraysize;
+ }
+
+ if (nrrxcon != nrslotcon || nrrxcon > 1)
+ yyerror("SIP_RXOBJ_CON and SIP_SLOT_CON must both be given and at most once");
+
+ if (nrrxdis != nrslotdis || nrrxdis > 1)
+ yyerror("SIP_RXOBJ_DIS and SIP_SLOT_DIS must both be given and at most once");
+
+ if (nrarray != nrarraysize || nrarray > 1)
+ yyerror("/Array/ and /ArraySize/ must both be given and at most once");
+
+ $$ = $1;
+ }
+ ;
+
+rawarglist: {
+ /* No arguments. */
+
+ $$.nrArgs = 0;
+ }
+ | argvalue {
+ /* The single or first argument. */
+
+ $$.args[0] = $1;
+ $$.nrArgs = 1;
+ }
+ | rawarglist ',' argvalue {
+ /* Check that it wasn't ...(,arg...). */
+ if ($1.nrArgs == 0)
+ yyerror("First argument of the list is missing");
+
+ /* Check there is nothing after an ellipsis. */
+ if ($1.args[$1.nrArgs - 1].atype == ellipsis_type)
+ yyerror("An ellipsis must be at the end of the argument list");
+
+ /*
+ * If this argument has no default value, then the
+ * previous one mustn't either.
+ */
+ if ($3.defval == NULL && $1.args[$1.nrArgs - 1].defval != NULL)
+ yyerror("Compulsory argument given after optional argument");
+
+ /* Check there is room. */
+ if ($1.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ $$ = $1;
+
+ $$.args[$$.nrArgs] = $3;
+ $$.nrArgs++;
+ }
+ ;
+
+argvalue: TK_SIPSIGNAL optname optassign {
+ $$.atype = signal_type;
+ $$.argflags = ARG_IS_CONST;
+ $$.nrderefs = 0;
+ $$.name = $2;
+ $$.defval = $3;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPSLOT optname optassign {
+ $$.atype = slot_type;
+ $$.argflags = ARG_IS_CONST;
+ $$.nrderefs = 0;
+ $$.name = $2;
+ $$.defval = $3;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPANYSLOT optname optassign {
+ $$.atype = anyslot_type;
+ $$.argflags = ARG_IS_CONST;
+ $$.nrderefs = 0;
+ $$.name = $2;
+ $$.defval = $3;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPRXCON optname {
+ $$.atype = rxcon_type;
+ $$.argflags = 0;
+ $$.nrderefs = 0;
+ $$.name = $2;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPRXDIS optname {
+ $$.atype = rxdis_type;
+ $$.argflags = 0;
+ $$.nrderefs = 0;
+ $$.name = $2;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPSLOTCON '(' arglist ')' optname {
+ $$.atype = slotcon_type;
+ $$.argflags = ARG_IS_CONST;
+ $$.nrderefs = 0;
+ $$.name = $5;
+
+ $3.result.atype = void_type;
+ $3.result.argflags = 0;
+ $3.result.nrderefs = 0;
+
+ $$.u.sa = sipMalloc(sizeof (signatureDef));
+ *$$.u.sa = $3;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_SIPSLOTDIS '(' arglist ')' optname {
+ $$.atype = slotdis_type;
+ $$.argflags = ARG_IS_CONST;
+ $$.nrderefs = 0;
+ $$.name = $5;
+
+ $3.result.atype = void_type;
+ $3.result.argflags = 0;
+ $3.result.nrderefs = 0;
+
+ $$.u.sa = sipMalloc(sizeof (signatureDef));
+ *$$.u.sa = $3;
+
+ currentSpec -> sigslots = TRUE;
+ }
+ | TK_QOBJECT optname {
+ $$.atype = qobject_type;
+ $$.argflags = 0;
+ $$.nrderefs = 0;
+ $$.name = $2;
+ }
+ | argtype optassign {
+ $$ = $1;
+ $$.defval = $2;
+ }
+ ;
+
+varmember: TK_STATIC {currentIsStatic = TRUE;} varmem
+ | varmem
+ ;
+
+varmem: member
+ | variable
+ ;
+
+member: TK_VIRTUAL {currentOverIsVirt = TRUE;} function
+ | function
+ ;
+
+variable: cpptype TK_NAME optflags ';' optaccesscode optgetcode optsetcode {
+ if (notSkipping())
+ {
+ /* Check the section. */
+
+ if (sectionFlags != 0)
+ {
+ if ((sectionFlags & SECT_IS_PUBLIC) == 0)
+ yyerror("Class variables must be in the public section");
+
+ if (!currentIsStatic && $5 != NULL)
+ yyerror("%AccessCode cannot be specified for non-static class variables");
+ }
+
+ if (currentIsStatic && currentSpec -> genc)
+ yyerror("Cannot have static members in a C structure");
+
+ if ($6 != NULL || $7 != NULL)
+ {
+ if ($5 != NULL)
+ yyerror("Cannot mix %AccessCode and %GetCode or %SetCode");
+
+ if (currentScope() == NULL)
+ yyerror("Cannot specify %GetCode or %SetCode for global variables");
+ }
+
+ newVar(currentSpec,currentModule,$2,currentIsStatic,&$1,&$3,$5,$6,$7);
+ }
+
+ currentIsStatic = FALSE;
+ }
+ ;
+
+cpptype: TK_CONST basetype deref optref {
+ $$ = $2;
+ $$.nrderefs = $3;
+ $$.argflags = ARG_IS_CONST | $4;
+ $$.name = NULL;
+ }
+ | basetype deref optref {
+ $$ = $1;
+ $$.nrderefs = $2;
+ $$.argflags = $3;
+ $$.name = NULL;
+ }
+ ;
+
+argtype: cpptype optname optflags {
+ $$ = $1;
+ $$.name = $2;
+
+ if (findOptFlag(&$3,"AllowNone",bool_flag) != NULL)
+ $$.argflags |= ARG_ALLOW_NONE;
+
+ if (findOptFlag(&$3,"GetWrapper",bool_flag) != NULL)
+ $$.argflags |= ARG_GET_WRAPPER;
+
+ if (findOptFlag(&$3,"Array",bool_flag) != NULL)
+ $$.argflags |= ARG_ARRAY;
+
+ if (findOptFlag(&$3,"ArraySize",bool_flag) != NULL)
+ $$.argflags |= ARG_ARRAY_SIZE;
+
+ if (findOptFlag(&$3,"Transfer",bool_flag) != NULL)
+ $$.argflags |= ARG_XFERRED;
+
+ if (findOptFlag(&$3,"TransferThis",bool_flag) != NULL)
+ $$.argflags |= ARG_THIS_XFERRED;
+
+ if (findOptFlag(&$3,"TransferBack",bool_flag) != NULL)
+ $$.argflags |= ARG_XFERRED_BACK;
+
+ if (findOptFlag(&$3,"In",bool_flag) != NULL)
+ $$.argflags |= ARG_IN;
+
+ if (findOptFlag(&$3,"Out",bool_flag) != NULL)
+ $$.argflags |= ARG_OUT;
+
+ if (findOptFlag(&$3,"Constrained",bool_flag) != NULL)
+ {
+ $$.argflags |= ARG_CONSTRAINED;
+
+ switch ($$.atype)
+ {
+ case bool_type:
+ $$.atype = cbool_type;
+ break;
+
+ case int_type:
+ $$.atype = cint_type;
+ break;
+
+ case float_type:
+ $$.atype = cfloat_type;
+ break;
+
+ case double_type:
+ $$.atype = cdouble_type;
+ break;
+ }
+ }
+ }
+ ;
+
+optref: {
+ $$ = 0;
+ }
+ | '&' {
+ if (currentSpec -> genc)
+ yyerror("References not allowed in a C module");
+
+ $$ = ARG_IS_REF;
+ }
+ ;
+
+deref: {
+ $$ = 0;
+ }
+ | deref '*' {
+ $$ = $1 + 1;
+ }
+ ;
+
+basetype: scopedname {
+ $$.atype = defined_type;
+ $$.u.snd = $1;
+ }
+ | scopedname '<' cpptypelist '>' {
+ templateDef *td;
+
+ td = sipMalloc(sizeof(templateDef));
+ td -> fqname = $1;
+ td -> types = $3;
+
+ $$.atype = template_type;
+ $$.u.td = td;
+ }
+ | TK_STRUCT scopedname {
+ /* In a C module all structures must be defined. */
+ if (currentSpec -> genc)
+ {
+ $$.atype = defined_type;
+ $$.u.snd = $2;
+ }
+ else
+ {
+ $$.atype = struct_type;
+ $$.u.sname = $2;
+ }
+ }
+ | TK_UNSIGNED TK_SHORT {
+ $$.atype = ushort_type;
+ }
+ | TK_SHORT {
+ $$.atype = short_type;
+ }
+ | TK_UNSIGNED {
+ $$.atype = uint_type;
+ }
+ | TK_UNSIGNED TK_INT {
+ $$.atype = uint_type;
+ }
+ | TK_INT {
+ $$.atype = int_type;
+ }
+ | TK_LONG {
+ $$.atype = long_type;
+ }
+ | TK_UNSIGNED TK_LONG {
+ $$.atype = ulong_type;
+ }
+ | TK_LONG TK_LONG {
+ $$.atype = longlong_type;
+ }
+ | TK_UNSIGNED TK_LONG TK_LONG {
+ $$.atype = ulonglong_type;
+ }
+ | TK_FLOAT {
+ $$.atype = float_type;
+ }
+ | TK_DOUBLE {
+ $$.atype = double_type;
+ }
+ | TK_BOOL {
+ $$.atype = bool_type;
+ }
+ | TK_SIGNED TK_CHAR {
+ $$.atype = sstring_type;
+ }
+ | TK_UNSIGNED TK_CHAR {
+ $$.atype = ustring_type;
+ }
+ | TK_CHAR {
+ $$.atype = string_type;
+ }
+ | TK_WCHAR_T {
+ $$.atype = wstring_type;
+ }
+ | TK_VOID {
+ $$.atype = void_type;
+ }
+ | TK_PYOBJECT {
+ $$.atype = pyobject_type;
+ }
+ | TK_PYTUPLE {
+ $$.atype = pytuple_type;
+ }
+ | TK_PYLIST {
+ $$.atype = pylist_type;
+ }
+ | TK_PYDICT {
+ $$.atype = pydict_type;
+ }
+ | TK_PYCALLABLE {
+ $$.atype = pycallable_type;
+ }
+ | TK_PYSLICE {
+ $$.atype = pyslice_type;
+ }
+ | TK_PYTYPE {
+ $$.atype = pytype_type;
+ }
+ | TK_ELLIPSIS {
+ $$.atype = ellipsis_type;
+ }
+ ;
+
+cpptypelist: cpptype {
+ /* The single or first type. */
+
+ $$.args[0] = $1;
+ $$.nrArgs = 1;
+ }
+ | cpptypelist ',' cpptype {
+ /* Check there is nothing after an ellipsis. */
+ if ($1.args[$1.nrArgs - 1].atype == ellipsis_type)
+ yyerror("An ellipsis must be at the end of the argument list");
+
+ /* Check there is room. */
+ if ($1.nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ $$ = $1;
+
+ $$.args[$$.nrArgs] = $3;
+ $$.nrArgs++;
+ }
+ ;
+
+optexceptions: {
+ $$ = NULL;
+ }
+ | TK_THROW '(' exceptionlist ')' {
+ if (currentSpec->genc)
+ yyerror("Exceptions not allowed in a C module");
+
+ if (notSkipping() && inMainModule())
+ {
+ int e;
+ ifaceFileList **ifl;
+
+ /*
+ * Make sure the exceptions' header files are
+ * included. We unconditionally mark them to
+ * be included in the current scope's header
+ * file to save us the effort of checking if
+ * they are being used with a protected method,
+ * a virtual or a signal.
+ */
+ ifl = (currentScope() != NULL) ? &currentScope()->iff->used : &currentSpec->used;
+
+ for (e = 0; e < $3->nrArgs; ++e)
+ addToUsedList(ifl, $3->args[e]->iff);
+ }
+
+ $$ = $3;
+ }
+ ;
+
+exceptionlist: {
+ /* Empty list so use a blank. */
+
+ $$ = sipMalloc(sizeof (throwArgs));
+ $$ -> nrArgs = 0;
+ }
+ | scopedname {
+ /* The only or first exception. */
+
+ $$ = sipMalloc(sizeof (throwArgs));
+ $$ -> nrArgs = 1;
+ $$ -> args[0] = findException(currentSpec, $1, FALSE);
+ }
+ | exceptionlist ',' scopedname {
+ /* Check that it wasn't ...(,arg...). */
+
+ if ($1 -> nrArgs == 0)
+ yyerror("First exception of throw specifier is missing");
+
+ /* Check there is room. */
+
+ if ($1 -> nrArgs == MAX_NR_ARGS)
+ yyerror("Internal error - increase the value of MAX_NR_ARGS");
+
+ $$ = $1;
+ $$ -> args[$$ -> nrArgs++] = findException(currentSpec, $3, FALSE);
+ }
+ ;
+
+%%
+
+
+/*
+ * Parse the specification.
+ */
+void parse(sipSpec *spec,FILE *fp,char *filename,stringList *tsl,
+ stringList *xfl)
+{
+ classTmplDef *tcd;
+
+ /* Initialise the spec. */
+
+ spec -> modules = NULL;
+ spec -> namecache = NULL;
+ spec -> ifacefiles = NULL;
+ spec -> classes = NULL;
+ spec -> classtemplates = NULL;
+ spec -> proxies = NULL;
+ spec -> exceptions = NULL;
+ spec -> mappedtypes = NULL;
+ spec -> mappedtypetemplates = NULL;
+ spec -> qobjclass = -1;
+ spec -> enums = NULL;
+ spec -> vars = NULL;
+ spec -> othfuncs = NULL;
+ spec -> overs = NULL;
+ spec -> typedefs = NULL;
+ spec -> copying = NULL;
+ spec -> exphdrcode = NULL;
+ spec -> hdrcode = NULL;
+ spec -> cppcode = NULL;
+ spec -> docs = NULL;
+ spec -> preinitcode = NULL;
+ spec -> postinitcode = NULL;
+ spec -> unitcode = NULL;
+ spec -> used = NULL;
+ spec -> sigslots = FALSE;
+ spec -> genc = -1;
+ spec -> options = NULL;
+
+ currentSpec = spec;
+ neededQualifiers = tsl;
+ excludedQualifiers = xfl;
+ currentModule = NULL;
+ currentMappedType = NULL;
+ currentOverIsVirt = FALSE;
+ currentCtorIsExplicit = FALSE;
+ currentIsStatic = FALSE;
+ previousFile = NULL;
+ skipStackPtr = 0;
+ currentScopeIdx = 0;
+ sectionFlags = 0;
+
+ newModule(fp,filename);
+ spec -> module = currentModule;
+
+ yyparse();
+
+ handleEOF();
+ handleEOM();
+
+ /*
+ * Go through each template class and remove it from the list of
+ * classes.
+ */
+ for (tcd = spec->classtemplates; tcd != NULL; tcd = tcd->next)
+ {
+ classDef **cdp;
+
+ for (cdp = &spec->classes; *cdp != NULL; cdp = &(*cdp)->next)
+ if (*cdp == tcd->cd)
+ {
+ ifaceFileDef **ifdp;
+
+ /* Remove the interface file as well. */
+ for (ifdp = &spec->ifacefiles; *ifdp != NULL; ifdp = &(*ifdp)->next)
+ if (*ifdp == tcd->cd->iff)
+ {
+ *ifdp = (*ifdp)->next;
+ break;
+ }
+
+ *cdp = (*cdp)->next;
+ break;
+ }
+ }
+}
+
+
+/*
+ * Tell the parser that a complete file has now been read.
+ */
+void parserEOF(char *name,parserContext *pc)
+{
+ previousFile = sipStrdup(name);
+ newContext = *pc;
+}
+
+
+/*
+ * Append a class definition to a class list if it doesn't already appear.
+ * Append is needed specifically for the list of super-classes because the
+ * order is important to Python.
+ */
+void appendToClassList(classList **clp,classDef *cd)
+{
+ classList *new;
+
+ /* Find the end of the list. */
+
+ while (*clp != NULL)
+ {
+ if ((*clp) -> cd == cd)
+ return;
+
+ clp = &(*clp) -> next;
+ }
+
+ new = sipMalloc(sizeof (classList));
+
+ new -> cd = cd;
+ new -> next = NULL;
+
+ *clp = new;
+}
+
+
+/*
+ * Create a new module for the current specification and make it current.
+ */
+static void newModule(FILE *fp,char *filename)
+{
+ moduleDef *newmod;
+
+ parseFile(fp,filename,currentModule,FALSE);
+
+ newmod = sipMalloc(sizeof (moduleDef));
+ newmod -> fullname = NULL;
+ newmod -> name = NULL;
+ newmod -> version = -1;
+ newmod -> modflags = 0;
+ newmod -> modulenr = -1;
+ newmod -> file = filename;
+ newmod -> qualifiers = NULL;
+ newmod -> root.cd = NULL;
+ newmod -> root.child = NULL;
+ newmod -> nrtimelines = 0;
+ newmod -> nrclasses = 0;
+ newmod -> nrexceptions = 0;
+ newmod -> nrmappedtypes = 0;
+ newmod -> nrenums = 0;
+ newmod -> nrtypedefs = 0;
+ newmod -> nrvirthandlers = 0;
+ newmod -> virthandlers = NULL;
+ newmod -> license = NULL;
+ newmod -> allimports = NULL;
+ newmod -> imports = NULL;
+ newmod -> next = currentSpec -> modules;
+
+ currentModule = currentSpec->modules = newmod;
+}
+
+
+/*
+ * Switch to parsing a new file.
+ */
+static void parseFile(FILE *fp,char *name,moduleDef *prevmod,int optional)
+{
+ parserContext pc;
+
+ pc.ifdepth = skipStackPtr;
+ pc.prevmod = prevmod;
+
+ setInputFile(fp,name,&pc,optional);
+}
+
+
+/*
+ * Find an interface file, or create a new one.
+ */
+ifaceFileDef *findIfaceFile(sipSpec *pt, moduleDef *mod, scopedNameDef *fqname,
+ ifaceFileType iftype, argDef *ad)
+{
+ ifaceFileDef *iff;
+
+ /* See if the name is already used. */
+
+ for (iff = pt -> ifacefiles; iff != NULL; iff = iff -> next)
+ {
+ if (!sameScopedName(iff -> fqcname,fqname))
+ continue;
+
+ /*
+ * They must be the same type except that we allow a class if
+ * if we want an exception. This is because we allow classes
+ * to be used before they are defined.
+ */
+ if (iff -> type != iftype)
+ if (iftype != exception_iface || iff -> type != class_iface)
+ yyerror("A class, exception, namespace or mapped type has already been defined with the same name");
+
+ /* Ignore an external class declared in another module. */
+ if (iftype == class_iface && iff->module != mod)
+ {
+ classDef *cd;
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ if (cd->iff == iff)
+ break;
+
+ if (cd != NULL && iff->module != NULL && isExternal(cd))
+ continue;
+ }
+
+ /*
+ * If this is a mapped type with the same name defined in a
+ * different module, then check that this type isn't the same
+ * as any of the mapped types defined in that module.
+ */
+ if (iftype == mappedtype_iface && iff -> module != mod)
+ {
+ mappedTypeDef *mtd;
+
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ {
+ if (mtd -> iff != iff)
+ continue;
+
+ if (ad -> atype != template_type ||
+ mtd -> type.atype != template_type ||
+ sameBaseType(ad,&mtd -> type))
+ yyerror("Mapped type has already been defined in another module");
+ }
+
+ /*
+ * If we got here then we have a mapped type based on
+ * an existing template, but with unique parameters.
+ * We don't want to use interface files from other
+ * modules, so skip this one.
+ */
+
+ continue;
+ }
+
+ /* Ignore a namespace defined in another module. */
+ if (iftype == namespace_iface && iff->module != mod)
+ continue;
+
+ return iff;
+ }
+
+ iff = sipMalloc(sizeof (ifaceFileDef));
+
+ iff -> name = cacheName(pt,scopedNameTail(fqname));
+ iff -> type = iftype;
+ iff -> fqcname = fqname;
+ iff -> module = NULL;
+ iff -> used = NULL;
+ iff -> next = pt -> ifacefiles;
+
+ pt -> ifacefiles = iff;
+
+ return iff;
+}
+
+
+/*
+ * Find a class definition in a parse tree.
+ */
+static classDef *findClass(sipSpec *pt,ifaceFileType iftype,
+ scopedNameDef *fqname)
+{
+ return findClassWithInterface(pt, findIfaceFile(pt, currentModule, fqname, iftype, NULL));
+}
+
+
+/*
+ * Find a class definition given an existing interface file.
+ */
+static classDef *findClassWithInterface(sipSpec *pt, ifaceFileDef *iff)
+{
+ classDef *cd;
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ if (cd -> iff == iff)
+ return cd;
+
+ /* Create a new one. */
+ cd = sipMalloc(sizeof (classDef));
+
+ cd -> iff = iff;
+ cd -> pyname = classBaseName(cd);
+ cd -> classnr = -1;
+ cd -> classflags = 0;
+ cd -> userflags = 0;
+ cd -> ecd = NULL;
+ cd -> dtorexceptions = NULL;
+ cd -> real = NULL;
+ cd -> node = NULL;
+ cd -> supers = NULL;
+ cd -> mro = NULL;
+ cd -> td = NULL;
+ cd -> ctors = NULL;
+ cd -> defctor = NULL;
+ cd -> dealloccode = NULL;
+ cd -> dtorcode = NULL;
+ cd -> members = NULL;
+ cd -> overs = NULL;
+ cd -> casts = NULL;
+ cd -> vmembers = NULL;
+ cd -> visible = NULL;
+ cd -> cppcode = NULL;
+ cd -> hdrcode = NULL;
+ cd -> convtosubcode = NULL;
+ cd -> subbase = NULL;
+ cd -> convtocode = NULL;
+ cd -> travcode = NULL;
+ cd -> clearcode = NULL;
+ cd -> readbufcode = NULL;
+ cd -> writebufcode = NULL;
+ cd -> segcountcode = NULL;
+ cd -> charbufcode = NULL;
+ cd -> next = pt -> classes;
+
+ pt -> classes = cd;
+
+ return cd;
+}
+
+
+/*
+ * Add an interface file to an interface file list if it isn't already there.
+ */
+ifaceFileList *addToUsedList(ifaceFileList **ifflp, ifaceFileDef *iff)
+{
+ ifaceFileList *iffl;
+
+ while ((iffl = *ifflp) != NULL)
+ {
+ /* Don't bother if it is already there. */
+ if (iffl -> iff == iff)
+ return iffl;
+
+ ifflp = &iffl -> next;
+ }
+
+ iffl = sipMalloc(sizeof (ifaceFileList));
+
+ iffl->iff = iff;
+ iffl->header = FALSE;
+ iffl->next = NULL;
+
+ *ifflp = iffl;
+
+ return iffl;
+}
+
+
+/*
+ * Find an undefined (or create a new) exception definition in a parse tree.
+ */
+static exceptionDef *findException(sipSpec *pt, scopedNameDef *fqname, int new)
+{
+ exceptionDef *xd, **tail;
+ ifaceFileDef *iff;
+ classDef *cd;
+
+ iff = findIfaceFile(pt, currentModule, fqname, exception_iface, NULL);
+
+ /* See if it is an existing one. */
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ if (xd->iff == iff)
+ return xd;
+
+ /*
+ * If it is an exception interface file then we have never seen this
+ * name before. We require that exceptions are defined before being
+ * used, but don't make the same requirement of classes (for reasons of
+ * backwards compatibility). Therefore the name must be reinterpreted
+ * as a (as yet undefined) class.
+ */
+ if (new)
+ if (iff->type == exception_iface)
+ cd = NULL;
+ else
+ yyerror("There is already a class with the same name or the exception has been used before being defined");
+ else
+ {
+ if (iff->type == exception_iface)
+ iff->type = class_iface;
+
+ cd = findClassWithInterface(pt, iff);
+ }
+
+ /* Create a new one. */
+ xd = sipMalloc(sizeof (exceptionDef));
+
+ xd->exceptionnr = -1;
+ xd->iff = iff;
+ xd->pyname = NULL;
+ xd->cd = cd;
+ xd->bibase = NULL;
+ xd->base = NULL;
+ xd->hdrcode = NULL;
+ xd->raisecode = NULL;
+ xd->next = NULL;
+
+ /* Append it to the list. */
+ for (tail = &pt->exceptions; *tail != NULL; tail = &(*tail)->next)
+ ;
+
+ *tail = xd;
+
+ return xd;
+}
+
+
+/*
+ * Find an undefined (or create a new) class definition in a parse tree.
+ */
+static classDef *newClass(sipSpec *pt,ifaceFileType iftype,
+ scopedNameDef *fqname)
+{
+ int flags;
+ classDef *cd, *scope;
+ codeBlock *hdrcode;
+
+ if (sectionFlags & SECT_IS_PRIVATE)
+ yyerror("Classes, structs and namespaces must be in the public or or protected sections");
+
+ flags = 0;
+
+ if ((scope = currentScope()) != NULL)
+ {
+ if (sectionFlags & SECT_IS_PROT)
+ flags = CLASS_IS_PROTECTED;
+
+ hdrcode = scope -> hdrcode;
+ }
+ else
+ hdrcode = NULL;
+
+ if (pt -> genc)
+ {
+ /* C structs are always global types. */
+ while (fqname -> next != NULL)
+ fqname = fqname -> next;
+
+ scope = NULL;
+ }
+
+ cd = findClass(pt,iftype,fqname);
+
+ /* Check it hasn't already been defined. */
+ if (iftype != namespace_iface && cd->iff->module != NULL)
+ yyerror("The struct/class has already been defined");
+
+ /* Complete the initialisation. */
+ cd->classflags |= flags;
+ cd->ecd = scope;
+ cd->iff->module = currentModule;
+
+ appendCodeBlock(&cd->hdrcode, hdrcode);
+
+ /* See if it is a namespace extender. */
+ if (iftype == namespace_iface)
+ {
+ classDef *ns;
+
+ for (ns = pt->classes; ns != NULL; ns = ns->next)
+ {
+ if (ns == cd)
+ continue;
+
+ if (ns->iff->type != namespace_iface)
+ continue;
+
+ if (!sameScopedName(ns->iff->fqcname, fqname))
+ continue;
+
+ cd->real = ns;
+ break;
+ }
+ }
+
+ return cd;
+}
+
+
+/*
+ * Tidy up after finishing a class definition.
+ */
+static void finishClass(sipSpec *pt, moduleDef *mod, classDef *cd, optFlags *of)
+{
+ char *pyname;
+ optFlag *flg;
+
+ /* Get the Python name and see if it is different to the C++ name. */
+ pyname = getPythonName(of, classBaseName(cd));
+
+ cd -> pyname = NULL;
+ checkAttributes(pt, cd->ecd, pyname, FALSE);
+ cd->pyname = pyname;
+
+ if (cd->pyname != classBaseName(cd))
+ setIsRenamedClass(cd);
+
+ if ((flg = findOptFlag(of, "TypeFlags", integer_flag)) != NULL)
+ cd->userflags = flg->fvalue.ival;
+
+ if (isOpaque(cd))
+ {
+ if (findOptFlag(of, "External", bool_flag) != NULL)
+ setIsExternal(cd);
+ }
+ else
+ {
+ int seq_might, seq_not;
+ memberDef *md;
+
+ if (findOptFlag(of, "NoDefaultCtors", bool_flag) != NULL)
+ setNoDefaultCtors(cd);
+
+ if (cd -> ctors == NULL)
+ {
+ if (!noDefaultCtors(cd))
+ {
+ /* Provide a default ctor. */
+
+ cd->ctors = sipMalloc(sizeof (ctorDef));
+
+ cd->ctors->ctorflags = SECT_IS_PUBLIC;
+ cd->ctors->pysig.nrArgs = 0;
+ cd->ctors->cppsig = &cd -> ctors -> pysig;
+ cd->ctors->exceptions = NULL;
+ cd->ctors->methodcode = NULL;
+ cd->ctors->prehook = NULL;
+ cd->ctors->posthook = NULL;
+ cd->ctors->next = NULL;
+
+ cd->defctor = cd->ctors;
+
+ setCanCreate(cd);
+ }
+ }
+ else if (cd -> defctor == NULL)
+ {
+ ctorDef *ct, *last = NULL;
+
+ for (ct = cd -> ctors; ct != NULL; ct = ct -> next)
+ {
+ if (!isPublicCtor(ct))
+ continue;
+
+ if (ct -> pysig.nrArgs == 0 || ct -> pysig.args[0].defval != NULL)
+ {
+ cd -> defctor = ct;
+ break;
+ }
+
+ if (last == NULL)
+ last = ct;
+ }
+
+ /* The last resort is the first public ctor. */
+ if (cd->defctor == NULL)
+ cd->defctor = last;
+ }
+
+ if (findOptFlag(of,"Abstract",bool_flag) != NULL)
+ {
+ setIsAbstractClass(cd);
+ setIsIncomplete(cd);
+ resetCanCreate(cd);
+ }
+
+ /* We assume a public dtor if nothing specific was provided. */
+ if (!isDtor(cd))
+ setIsPublicDtor(cd);
+
+ if (findOptFlag(of, "DelayDtor", bool_flag) != NULL)
+ {
+ setIsDelayedDtor(cd);
+ setHasDelayedDtors(mod);
+ }
+
+ /*
+ * There are subtle differences between the add and concat methods and
+ * the multiply and repeat methods. The number versions can have their
+ * operands swapped and may return NotImplemented. If the user has
+ * used the /Numeric/ annotation or there are other numeric operators
+ * then we use add/multiply. Otherwise, if there are indexing
+ * operators then we use concat/repeat.
+ */
+ seq_might = seq_not = FALSE;
+
+ for (md = cd -> members; md != NULL; md = md -> next)
+ switch (md -> slot)
+ {
+ case getitem_slot:
+ case setitem_slot:
+ case delitem_slot:
+ /* This might be a sequence. */
+ seq_might = TRUE;
+ break;
+
+ case sub_slot:
+ case isub_slot:
+ case div_slot:
+ case idiv_slot:
+ case mod_slot:
+ case imod_slot:
+ case pos_slot:
+ case neg_slot:
+ /* This is definately not a sequence. */
+ seq_not = TRUE;
+ break;
+ }
+
+ if (!seq_not && seq_might)
+ for (md = cd -> members; md != NULL; md = md -> next)
+ {
+ /* Ignore if the user has been explicit. */
+ if (isNumeric(md))
+ continue;
+
+ switch (md -> slot)
+ {
+ case add_slot:
+ md -> slot = concat_slot;
+ break;
+
+ case iadd_slot:
+ md -> slot = iconcat_slot;
+ break;
+
+ case mul_slot:
+ md -> slot = repeat_slot;
+ break;
+
+ case imul_slot:
+ md -> slot = irepeat_slot;
+ break;
+ }
+ }
+ }
+
+ if (inMainModule())
+ {
+ setIsUsedName(cd->iff->name);
+ setIsClassName(cd->iff->name);
+ }
+}
+
+
+/*
+ * Create a new mapped type.
+ */
+static mappedTypeDef *newMappedType(sipSpec *pt,argDef *ad)
+{
+ mappedTypeDef *mtd;
+ scopedNameDef *snd;
+ ifaceFileDef *iff;
+
+ /* Check that the type is one we want to map. */
+ switch (ad -> atype)
+ {
+ case defined_type:
+ snd = ad -> u.snd;
+ break;
+
+ case template_type:
+ snd = ad -> u.td -> fqname;
+ break;
+
+ case struct_type:
+ snd = ad -> u.sname;
+ break;
+
+ default:
+ yyerror("Invalid type for %MappedType");
+ }
+
+ iff = findIfaceFile(pt, currentModule, snd, mappedtype_iface, ad);
+
+ if (inMainModule())
+ setIsUsedName(iff -> name);
+
+ /* Check it hasn't already been defined. */
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ if (mtd -> iff == iff)
+ {
+ /*
+ * We allow types based on the same template but with
+ * different arguments.
+ */
+
+ if (ad -> atype != template_type ||
+ sameBaseType(ad,&mtd -> type))
+ yyerror("Mapped type has already been defined in this module");
+ }
+
+ /* The module may not have been set yet. */
+ iff -> module = currentModule;
+
+ /* Create a new mapped type. */
+ mtd = allocMappedType(ad);
+
+ mtd -> iff = iff;
+ mtd -> next = pt -> mappedtypes;
+
+ pt -> mappedtypes = mtd;
+
+ return mtd;
+}
+
+
+/*
+ * Allocate, intialise and return a mapped type structure.
+ */
+mappedTypeDef *allocMappedType(argDef *type)
+{
+ mappedTypeDef *mtd;
+
+ mtd = sipMalloc(sizeof (mappedTypeDef));
+
+ mtd->type = *type;
+ mtd->type.argflags = 0;
+ mtd->type.nrderefs = 0;
+
+ mtd->mappednr = -1;
+ mtd->iff = NULL;
+ mtd->hdrcode = NULL;
+ mtd->convfromcode = NULL;
+ mtd->convtocode = NULL;
+ mtd->next = NULL;
+
+ return mtd;
+}
+
+
+/*
+ * Create a new enum.
+ */
+static enumDef *newEnum(sipSpec *pt,moduleDef *mod,char *name,optFlags *of,
+ int flags)
+{
+ enumDef *ed;
+ classDef *escope = currentScope();
+
+ ed = sipMalloc(sizeof (enumDef));
+
+ if (name != NULL)
+ {
+ ed -> fqcname = text2scopedName(name);
+ ed -> pyname = cacheName(pt, getPythonName(of, name));
+
+ checkAttributes(pt, escope, ed->pyname->text, FALSE);
+ }
+ else
+ {
+ ed -> fqcname = NULL;
+ ed -> pyname = NULL;
+ }
+
+ ed -> enumflags = flags;
+ ed -> enumnr = -1;
+ ed -> ecd = escope;
+ ed -> pcd = (flags & SECT_IS_PROT) ? escope : NULL;
+ ed -> module = mod;
+ ed -> members = NULL;
+ ed -> slots = NULL;
+ ed -> overs = NULL;
+ ed -> next = pt -> enums;
+
+ if (name != NULL && strcmp(ed->pyname->text, name) != 0)
+ setIsRenamedEnum(ed);
+
+ pt -> enums = ed;
+
+ if (escope != NULL)
+ setHasEnums(escope);
+
+ return ed;
+}
+
+
+/*
+ * Get the type values and (optionally) the type names for substitution in
+ * handwritten code.
+ */
+void appendTypeStrings(scopedNameDef *ename, signatureDef *patt, signatureDef *src, signatureDef *known, scopedNameDef **names, scopedNameDef **values)
+{
+ int a;
+
+ for (a = 0; a < patt->nrArgs; ++a)
+ {
+ argDef *pad = &patt->args[a];
+
+ if (pad->atype == defined_type)
+ {
+ char *nam = NULL;
+
+ /*
+ * If the type names are already known then check that
+ * this is one of them.
+ */
+ if (known == NULL)
+ nam = scopedNameTail(pad->u.snd);
+ else if (pad->u.snd->next == NULL)
+ {
+ int k;
+
+ for (k = 0; k < known->nrArgs; ++k)
+ if (strcmp(pad->u.snd->name, known->args[k].u.snd->name) == 0)
+ {
+ nam = pad->u.snd->name;
+ break;
+ }
+ }
+
+ if (nam == NULL)
+ continue;
+
+ /* Add the name. */
+ appendScopedName(names, text2scopePart(nam));
+
+ /* Add the corresponding value. */
+ appendScopedName(values, text2scopePart(getType(ename, &src->args[a])));
+ }
+ else if (pad->atype == template_type)
+ {
+ argDef *sad = &src->args[a];
+
+ /* These checks shouldn't be necessary, but... */
+ if (sad->atype == template_type && pad->u.td->types.nrArgs == sad->u.td->types.nrArgs)
+ appendTypeStrings(ename, &pad->u.td->types, &sad->u.td->types, known, names, values);
+ }
+ }
+}
+
+
+/*
+ * Convert a type to a string. We impose some limitations because I'm too lazy
+ * to handle everything that might be needed one day.
+ */
+static char *getType(scopedNameDef *ename, argDef *ad)
+{
+ if (ad->atype == defined_type)
+ return scopedNameToString(ad->u.snd);
+
+ fatalScopedName(ename);
+ fatal(": unsupported type argument to template class instantiation\n");
+
+ return NULL;
+}
+
+
+/*
+ * Convert a scoped name to a string on the heap.
+ */
+static char *scopedNameToString(scopedNameDef *name)
+{
+ static const char scope_string[] = "::";
+ size_t len;
+ scopedNameDef *snd;
+ char *s, *dp;
+
+ /* Work out the length of buffer needed. */
+ len = 0;
+
+ for (snd = name; snd != NULL; snd = snd->next)
+ {
+ len += strlen(snd->name);
+
+ if (snd->next != NULL)
+ len += strlen(scope_string);
+ }
+
+ /* Allocate and populate the buffer. */
+ dp = s = sipMalloc(len + 1);
+
+ for (snd = name; snd != NULL; snd = snd->next)
+ {
+ strcpy(dp, snd->name);
+ dp += strlen(snd->name);
+
+ if (snd->next != NULL)
+ {
+ strcpy(dp, scope_string);
+ dp += strlen(scope_string);
+ }
+ }
+
+ return s;
+}
+
+
+/*
+ * Instantiate a class template.
+ */
+static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod, classDef *scope, scopedNameDef *fqname, classTmplDef *tcd, templateDef *td)
+{
+ scopedNameDef *type_names, *type_values;
+ classDef *cd;
+ ctorDef *oct, **cttail;
+ memberDef *omd, **mdtail;
+ overDef *ood, **odtail;
+ argDef *ad;
+ ifaceFileList *iffl, **used;
+
+ type_names = type_values = NULL;
+ appendTypeStrings(classFQCName(tcd->cd), &tcd->sig, &td->types, NULL, &type_names, &type_values);
+
+ /*
+ * Add a mapping from the template name to the instantiated name. If
+ * we have got this far we know there is room for it.
+ */
+ ad = &tcd->sig.args[tcd->sig.nrArgs++];
+ ad->atype = defined_type;
+ ad->name = NULL;
+ ad->argflags = 0;
+ ad->nrderefs = 0;
+ ad->defval = NULL;
+ ad->u.snd = classFQCName(tcd->cd);
+
+ appendScopedName(&type_names, text2scopePart(scopedNameTail(classFQCName(tcd->cd))));
+ appendScopedName(&type_values, text2scopePart(scopedNameToString(fqname)));
+
+ /* Create the new class. */
+ cd = sipMalloc(sizeof (classDef));
+
+ /* Start with a shallow copy. */
+ *cd = *tcd->cd;
+
+ cd->pyname = scopedNameTail(fqname);
+ cd->td = td;
+
+ /* Handle the interface file. */
+ cd->iff = findIfaceFile(pt, mod, fqname, class_iface, NULL);
+ cd->iff->module = mod;
+
+ /* Make a copy of the used list and add the enclosing scope. */
+ used = &cd->iff->used;
+
+ for (iffl = tcd->cd->iff->used; iffl != NULL; iffl = iffl->next)
+ addToUsedList(used, iffl->iff);
+
+ if (scope != NULL)
+ addToUsedList(&cd->iff->used, scope->iff);
+
+ if (inMainModule())
+ {
+ setIsUsedName(cd->iff->name);
+ setIsClassName(cd->iff->name);
+ }
+
+ cd->ecd = currentScope();
+
+ /* Handle the ctors. */
+ cd->ctors = NULL;
+ cttail = &cd->ctors;
+
+ for (oct = tcd->cd->ctors; oct != NULL; oct = oct->next)
+ {
+ ctorDef *nct = sipMalloc(sizeof (ctorDef));
+
+ /* Start with a shallow copy. */
+ *nct = *oct;
+
+ templateSignature(&nct->pysig, FALSE, tcd, td, cd);
+
+ if (oct->cppsig == NULL)
+ nct->cppsig = NULL;
+ else if (oct->cppsig == &oct->pysig)
+ nct->cppsig = &nct->pysig;
+ else
+ {
+ nct->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nct->cppsig = *oct->cppsig;
+
+ templateSignature(nct->cppsig, FALSE, tcd, td, cd);
+ }
+
+ nct->methodcode = templateCode(pt, used, nct->methodcode, type_names, type_values);
+
+ nct->next = NULL;
+ *cttail = nct;
+ cttail = &nct->next;
+
+ /* Handle the default ctor. */
+ if (tcd->cd->defctor == oct)
+ cd->defctor = nct;
+ }
+
+ cd->dealloccode = templateCode(pt, used, cd->dealloccode, type_names, type_values);
+ cd->dtorcode = templateCode(pt, used, cd->dtorcode, type_names, type_values);
+
+ /* Handle the members, ie. the common parts of overloads. */
+ cd->members = NULL;
+ mdtail = &cd->members;
+
+ for (omd = tcd->cd->members; omd != NULL; omd = omd->next)
+ {
+ memberDef *nmd = sipMalloc(sizeof (memberDef));
+
+ /* Start with a shallow copy. */
+ *nmd = *omd;
+
+ nmd->module = mod;
+
+ nmd->next = NULL;
+ *mdtail = nmd;
+ mdtail = &nmd->next;
+ }
+
+ /* Handle the overloads. */
+ cd->overs = NULL;
+ odtail = &cd->overs;
+
+ for (ood = tcd->cd->overs; ood != NULL; ood = ood->next)
+ {
+ overDef *nod = sipMalloc(sizeof (overDef));
+ memberDef *nmd;
+
+ /* Start with a shallow copy. */
+ *nod = *ood;
+
+ for (nmd = cd->members, omd = tcd->cd->members; omd != NULL; omd = omd->next, nmd = nmd->next)
+ if (omd == ood->common)
+ {
+ nod->common = nmd;
+ break;
+ }
+
+ templateSignature(&nod->pysig, TRUE, tcd, td, cd);
+
+ if (ood->cppsig == &ood->pysig)
+ nod->cppsig = &nod->pysig;
+ else
+ {
+ nod->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nod->cppsig = *ood->cppsig;
+
+ templateSignature(nod->cppsig, TRUE, tcd, td, cd);
+ }
+
+ nod->methodcode = templateCode(pt, used, nod->methodcode, type_names, type_values);
+
+ /* Handle any virtual handler. */
+ if (ood->virthandler != NULL)
+ {
+ nod->virthandler = sipMalloc(sizeof (virtHandlerDef));
+
+ /* Start with a shallow copy. */
+ *nod->virthandler = *ood->virthandler;
+
+ if (ood->virthandler->cppsig == &ood->pysig)
+ nod->virthandler->cppsig = &nod->pysig;
+ else
+ {
+ nod->virthandler->cppsig = sipMalloc(sizeof (signatureDef));
+
+ *nod->virthandler->cppsig = *ood->virthandler->cppsig;
+
+ templateSignature(nod->virthandler->cppsig, TRUE, tcd, td, cd);
+ }
+
+ nod->virthandler->module = mod;
+ nod->virthandler->virtcode = templateCode(pt, used, nod->virthandler->virtcode, type_names, type_values);
+ nod->virthandler->next = mod->virthandlers;
+
+ mod->virthandlers = nod->virthandler;
+ }
+
+ nod->next = NULL;
+ *odtail = nod;
+ odtail = &nod->next;
+ }
+
+ cd->cppcode = templateCode(pt, used, cd->cppcode, type_names, type_values);
+ cd->hdrcode = templateCode(pt, used, cd->hdrcode, type_names, type_values);
+ cd->convtosubcode = templateCode(pt, used, cd->convtosubcode, type_names, type_values);
+ cd->convtocode = templateCode(pt, used, cd->convtocode, type_names, type_values);
+ cd->travcode = templateCode(pt, used, cd->travcode, type_names, type_values);
+ cd->clearcode = templateCode(pt, used, cd->clearcode, type_names, type_values);
+ cd->readbufcode = templateCode(pt, used, cd->readbufcode, type_names, type_values);
+ cd->writebufcode = templateCode(pt, used, cd->writebufcode, type_names, type_values);
+ cd->segcountcode = templateCode(pt, used, cd->segcountcode, type_names, type_values);
+ cd->charbufcode = templateCode(pt, used, cd->charbufcode, type_names, type_values);
+ cd->next = pt->classes;
+
+ pt->classes = cd;
+
+ tcd->sig.nrArgs--;
+
+ freeScopedName(type_names);
+ freeScopedName(type_values);
+}
+
+
+/*
+ * Replace any template arguments in a signature.
+ */
+static void templateSignature(signatureDef *sd, int result, classTmplDef *tcd, templateDef *td, classDef *ncd)
+{
+ int a;
+
+ if (result)
+ templateType(&sd->result, tcd, td, ncd);
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ templateType(&sd->args[a], tcd, td, ncd);
+}
+
+
+/*
+ * Replace any template arguments in a type.
+ */
+static void templateType(argDef *ad, classTmplDef *tcd, templateDef *td, classDef *ncd)
+{
+ int a;
+ char *name;
+
+ /* Ignore if it isn't an unscoped name. */
+ if (ad->atype != defined_type || ad->u.snd->next != NULL)
+ return;
+
+ name = ad->u.snd->name;
+
+ for (a = 0; a < tcd->sig.nrArgs - 1; ++a)
+ if (strcmp(name, scopedNameTail(tcd->sig.args[a].u.snd)) == 0)
+ {
+ ad->atype = td->types.args[a].atype;
+
+ /* We take the constrained flag from the real type. */
+ resetIsConstrained(ad);
+
+ if (isConstrained(&td->types.args[a]))
+ setIsConstrained(ad);
+
+ ad->u = td->types.args[a].u;
+
+ return;
+ }
+
+ /* Handle the class name itself. */
+ if (strcmp(name, scopedNameTail(classFQCName(tcd->cd))) == 0)
+ {
+ ad->atype = class_type;
+ ad->u.cd = ncd;
+ }
+}
+
+
+/*
+ * Replace any template arguments in a literal code block.
+ */
+codeBlock *templateCode(sipSpec *pt, ifaceFileList **used, codeBlock *ocb, scopedNameDef *names, scopedNameDef *values)
+{
+ codeBlock *ncb = NULL, **tail = &ncb;
+
+ while (ocb != NULL)
+ {
+ char *at = ocb->frag;
+
+ do
+ {
+ char *first = NULL;
+ codeBlock *cb;
+ scopedNameDef *nam, *val, *nam_first, *val_first;
+
+ /*
+ * Go through the rest of this fragment looking for
+ * each of the types and the name of the class itself.
+ */
+ nam = names;
+ val = values;
+
+ while (nam != NULL && val != NULL)
+ {
+ char *cp;
+
+ if ((cp = strstr(at, nam->name)) != NULL)
+ if (first == NULL || first > cp)
+ {
+ nam_first = nam;
+ val_first = val;
+ first = cp;
+ }
+
+ nam = nam->next;
+ val = val->next;
+ }
+
+ /* Create the new fragment. */
+ cb = sipMalloc(sizeof (codeBlock));
+
+ if (at == ocb->frag)
+ {
+ cb->filename = ocb->filename;
+ cb->linenr = ocb->linenr;
+ }
+ else
+ cb->filename = NULL;
+
+ cb->next = NULL;
+ *tail = cb;
+ tail = &cb->next;
+
+ /* See if anything was found. */
+ if (first == NULL)
+ {
+ /* We can just point to this. */
+ cb->frag = at;
+
+ /* All done with this one. */
+ at = NULL;
+ }
+ else
+ {
+ static char *gen_names[] = {
+ "sipForceConvertToTransfer_",
+ "sipForceConvertTo_",
+ "sipConvertFromTransfer_",
+ "sipConvertFrom_",
+ "sipClass_",
+ "sipEnum_",
+ "sipException_",
+ NULL
+ };
+
+ char *dp, *sp, **gn;
+ int genname = FALSE;
+
+ /*
+ * If the context in which the text is used is
+ * in the name of a SIP generated object then
+ * translate any "::" scoping to "_".
+ */
+ for (gn = gen_names; *gn != NULL; ++gn)
+ if (search_back(first, at, *gn))
+ {
+ addUsedFromCode(pt, used, val_first->name);
+ genname = TRUE;
+ break;
+ }
+
+ /* Fragment the fragment. */
+ cb->frag = sipMalloc(first - at + strlen(val_first->name) + 1);
+
+ strncpy(cb->frag, at, first - at);
+
+ dp = &cb->frag[first - at];
+ sp = val_first->name;
+
+ if (genname)
+ {
+ char gch;
+
+ while ((gch = *sp++) != '\0')
+ if (gch == ':' && *sp == ':')
+ {
+ *dp++ = '_';
+ ++sp;
+ }
+ else
+ *dp++ = gch;
+
+ *dp = '\0';
+ }
+ else
+ strcpy(dp, sp);
+
+ /* Move past the replaced text. */
+ at = first + strlen(nam_first->name);
+ }
+ }
+ while (at != NULL && *at != '\0');
+
+ ocb = ocb->next;
+ }
+
+ return ncb;
+}
+
+
+/*
+ * Return TRUE if the text at the end of a string matches the target string.
+ */
+static int search_back(const char *end, const char *start, const char *target)
+{
+ size_t tlen = strlen(target);
+
+ if (start + tlen >= end)
+ return FALSE;
+
+ return (strncmp(end - tlen, target, tlen) == 0);
+}
+
+
+/*
+ * Add any needed interface files based on handwritten code.
+ */
+static void addUsedFromCode(sipSpec *pt, ifaceFileList **used, const char *sname)
+{
+ ifaceFileDef *iff;
+ enumDef *ed;
+
+ for (iff = pt->ifacefiles; iff != NULL; iff = iff->next)
+ {
+ if (iff->type != class_iface && iff->type != exception_iface)
+ continue;
+
+ if (sameName(iff->fqcname, sname))
+ {
+ addToUsedList(used, iff);
+
+ return;
+ }
+ }
+
+ for (ed = pt->enums; ed != NULL; ed = ed->next)
+ {
+ if (ed->ecd == NULL)
+ continue;
+
+ if (sameName(ed->fqcname, sname))
+ {
+ addToUsedList(used, ed->ecd->iff);
+
+ return;
+ }
+ }
+}
+
+
+/*
+ * Compare a scoped name with its string equivalent.
+ */
+static int sameName(scopedNameDef *snd, const char *sname)
+{
+ while (snd != NULL && *sname != '\0')
+ {
+ const char *sp = snd->name;
+
+ while (*sp != '\0' && *sname != ':' && *sname != '\0')
+ if (*sp++ != *sname++)
+ return FALSE;
+
+ if (*sp != '\0' || (*sname != ':' && *sname != '\0'))
+ return FALSE;
+
+ snd = snd->next;
+
+ if (*sname == ':')
+ sname += 2;
+ }
+
+ return (snd == NULL && *sname == '\0');
+}
+
+
+/*
+ * Create a new typedef.
+ */
+static void newTypedef(sipSpec *pt,moduleDef *mod,char *name,argDef *type)
+{
+ typedefDef *td;
+ scopedNameDef *fqname = text2scopedName(name);
+ classDef *scope = currentScope();
+
+ /* See if we are instantiating a template class. */
+ if (type->atype == template_type)
+ {
+ classTmplDef *tcd;
+ templateDef *td = type->u.td;
+
+ for (tcd = pt->classtemplates; tcd != NULL; tcd = tcd->next)
+ if (sameScopedName(tcd->cd->iff->fqcname, td->fqname))
+ {
+ if (!sameTemplateSignature(&tcd->sig, &td->types, FALSE))
+ continue;
+
+ instantiateClassTemplate(pt, mod, scope, fqname, tcd, td);
+
+ /* All done. */
+ return;
+ }
+ }
+
+ /* Check it doesn't already exist. */
+ for (td = pt -> typedefs; td != NULL; td = td -> next)
+ if (sameScopedName(td -> fqname,fqname))
+ {
+ fatalScopedName(fqname);
+ fatal(" already defined\n");
+ }
+
+ td = sipMalloc(sizeof (typedefDef));
+
+ td -> fqname = fqname;
+ td -> ecd = scope;
+ td -> module = mod;
+ td -> type = *type;
+ td -> next = pt -> typedefs;
+
+ mod -> nrtypedefs++;
+
+ pt -> typedefs = td;
+}
+
+
+/*
+ * Return TRUE if the template signatures are the same. A deep comparison is
+ * used for mapped type templates where we want to recurse into any nested
+ * templates.
+ */
+int sameTemplateSignature(signatureDef *sd1, signatureDef *sd2, int deep)
+{
+ int a;
+
+ if (sd1->nrArgs != sd2->nrArgs)
+ return FALSE;
+
+ for (a = 0; a < sd1->nrArgs; ++a)
+ {
+ argDef *ad1 = &sd1->args[a];
+ argDef *ad2 = &sd2->args[a];
+
+ /*
+ * If we are doing a shallow comparision (ie. for class
+ * templates) then a type name on the left hand side matches
+ * anything on the right hand side.
+ */
+ if (ad1->atype == defined_type && !deep)
+ continue;
+
+ /*
+ * For type names only compare the references and pointers, and
+ * do the same for any nested templates.
+ */
+ if (ad1->atype == defined_type && ad2->atype == defined_type)
+ {
+ if (isReference(ad1) != isReference(ad2) || ad1->nrderefs != ad2->nrderefs)
+ return FALSE;
+ }
+ else if (ad1->atype == template_type && ad2->atype == template_type)
+ {
+ if (!sameTemplateSignature(&ad1->u.td->types, &ad2->u.td->types, deep))
+ return FALSE;
+ }
+ else if (!sameBaseType(ad1, ad2))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Create a new variable.
+ */
+static void newVar(sipSpec *pt,moduleDef *mod,char *name,int isstatic,
+ argDef *type,optFlags *of,codeBlock *acode,codeBlock *gcode,
+ codeBlock *scode)
+{
+ varDef *var;
+ classDef *escope = currentScope();
+ nameDef *nd = cacheName(pt,getPythonName(of,name));
+
+ if (inMainModule())
+ setIsUsedName(nd);
+
+ checkAttributes(pt,escope,nd -> text,FALSE);
+
+ var = sipMalloc(sizeof (varDef));
+
+ var -> pyname = nd;
+ var -> fqcname = text2scopedName(name);
+ var -> ecd = escope;
+ var -> module = mod;
+ var -> varflags = 0;
+ var -> type = *type;
+ var -> accessfunc = acode;
+ var -> getcode = gcode;
+ var -> setcode = scode;
+ var -> next = pt -> vars;
+
+ if (isstatic || (escope != NULL && escope->iff->type == namespace_iface))
+ setIsStaticVar(var);
+
+ pt -> vars = var;
+}
+
+
+/*
+ * Create a new ctor.
+ */
+static void newCtor(char *name,int sectFlags,signatureDef *args,
+ optFlags *optflgs,codeBlock *methodcode,
+ throwArgs *exceptions,signatureDef *cppsig,int explicit)
+{
+ ctorDef *ct, **ctp;
+ classDef *cd = currentScope();
+
+ /* Check the name of the constructor. */
+ if (strcmp(classBaseName(cd),name) != 0)
+ yyerror("Constructor doesn't have the same name as its class");
+
+ /* Add to the list of constructors. */
+ ct = sipMalloc(sizeof (ctorDef));
+
+ ct -> ctorflags = sectFlags;
+ ct -> pysig = *args;
+ ct -> cppsig = (cppsig != NULL ? cppsig : &ct -> pysig);
+ ct -> exceptions = exceptions;
+ ct -> methodcode = methodcode;
+ ct -> next = NULL;
+
+ if (!isPrivateCtor(ct))
+ setCanCreate(cd);
+
+ if (isProtectedCtor(ct))
+ setHasShadow(cd);
+
+ if (explicit)
+ setIsExplicitCtor(ct);
+
+ getHooks(optflgs,&ct -> prehook,&ct -> posthook);
+
+ if (getReleaseGIL(optflgs))
+ setIsReleaseGILCtor(ct);
+ else if (getHoldGIL(optflgs))
+ setIsHoldGILCtor(ct);
+
+ if (findOptFlag(optflgs,"NoDerived",bool_flag) != NULL)
+ {
+ if (cppsig != NULL)
+ yyerror("The /NoDerived/ annotation cannot be used with a C++ signature");
+
+ if (methodcode == NULL)
+ yyerror("The /NoDerived/ annotation must be used with %MethodCode");
+
+ ct->cppsig = NULL;
+ }
+
+ if (findOptFlag(optflgs,"Default",bool_flag) != NULL)
+ {
+ if (cd -> defctor != NULL)
+ yyerror("A constructor with the /Default/ annotation has already been defined");
+
+ cd -> defctor = ct;
+ }
+
+ /* Append to the list. */
+ for (ctp = &cd->ctors; *ctp != NULL; ctp = &(*ctp)->next)
+ ;
+
+ *ctp = ct;
+}
+
+
+/*
+ * Create a new function.
+ */
+static void newFunction(sipSpec *pt,moduleDef *mod,int sflags,int isstatic,
+ int isvirt,char *name,signatureDef *sig,int isconst,
+ int isabstract,optFlags *optflgs,codeBlock *methodcode,
+ codeBlock *vcode,throwArgs *exceptions,
+ signatureDef *cppsig)
+{
+ classDef *cd = currentScope();
+ nameDef *pname;
+ int factory, xferback;
+ overDef *od, **odp, **headp;
+ optFlag *of;
+ virtHandlerDef *vhd;
+
+ /* Extra checks for a C module. */
+ if (pt -> genc)
+ {
+ if (cd != NULL)
+ yyerror("Function declaration not allowed in a struct in a C module");
+
+ if (isstatic)
+ yyerror("Static functions not allowed in a C module");
+
+ if (exceptions != NULL)
+ yyerror("Exceptions not allowed in a C module");
+ }
+
+ headp = (cd != NULL ? &cd -> overs : &pt -> overs);
+
+ /* See if it is a factory method. */
+ if (findOptFlag(optflgs,"Factory",bool_flag) != NULL)
+ factory = TRUE;
+ else
+ {
+ int a;
+
+ factory = FALSE;
+
+ /* Check /TransferThis/ wasn't specified. */
+ if (cd == NULL || isstatic)
+ for (a = 0; a < sig -> nrArgs; ++a)
+ if (isThisTransferred(&sig -> args[a]))
+ yyerror("/TransferThis/ may only be specified in constructors and class methods");
+ }
+
+ /* See if the result is to be returned to Python ownership. */
+ xferback = (findOptFlag(optflgs,"TransferBack",bool_flag) != NULL);
+
+ if (factory && xferback)
+ yyerror("/TransferBack/ and /Factory/ cannot both be specified");
+
+ /* Use the C++ name if a Python name wasn't given. */
+ pname = cacheName(pt, getPythonName(optflgs, name));
+
+ /* Create a new overload definition. */
+
+ od = sipMalloc(sizeof (overDef));
+
+ /* Set the overload flags. */
+
+ od -> overflags = sflags;
+
+ if (factory)
+ setIsFactory(od);
+
+ if (xferback)
+ setIsResultTransferredBack(od);
+
+ if (isProtected(od))
+ setHasShadow(cd);
+
+ if ((isSlot(od) || isSignal(od)) && !isPrivate(od))
+ {
+ if (isSignal(od))
+ setHasShadow(cd);
+
+ pt -> sigslots = TRUE;
+ }
+
+ if (isSignal(od) && (methodcode != NULL || vcode != NULL))
+ yyerror("Cannot provide code for signals");
+
+ if (isstatic)
+ {
+ if (isSignal(od))
+ yyerror("Static functions cannot be signals");
+
+ if (isvirt)
+ yyerror("Static functions cannot be virtual");
+
+ setIsStatic(od);
+ }
+
+ if (isconst)
+ setIsConst(od);
+
+ if (isabstract)
+ {
+ if (sflags == 0)
+ yyerror("Non-class function specified as abstract");
+
+ setIsAbstract(od);
+ }
+
+ if ((of = findOptFlag(optflgs,"AutoGen",opt_name_flag)) != NULL)
+ {
+ setIsAutoGen(od);
+
+ if (of -> fvalue.sval != NULL)
+ {
+ qualDef *qd;
+
+ if ((qd = findQualifier(of -> fvalue.sval)) == NULL || qd -> qtype != feature_qualifier)
+ yyerror("No such feature");
+
+ if (excludedFeature(excludedQualifiers,qd))
+ resetIsAutoGen(od);
+ }
+ }
+
+ if (isvirt)
+ {
+ if (isSignal(od) && !optNoEmitters(pt))
+ yyerror("Virtual signals aren't supported");
+
+ setIsVirtual(od);
+ setHasShadow(cd);
+
+ vhd = sipMalloc(sizeof (virtHandlerDef));
+
+ vhd -> virthandlernr = -1;
+ vhd -> vhflags = 0;
+ vhd -> pysig = &od -> pysig;
+ vhd -> cppsig = (cppsig != NULL ? cppsig : &od -> pysig);
+ vhd -> module = currentModule;
+ vhd -> virtcode = vcode;
+ vhd -> next = currentModule -> virthandlers;
+
+ if (factory || xferback)
+ setIsTransferVH(vhd);
+
+ currentModule -> virthandlers = vhd;
+ }
+ else
+ {
+ if (vcode != NULL)
+ yyerror("%VirtualCatcherCode provided for non-virtual function");
+
+ vhd = NULL;
+ }
+
+ od -> cppname = name;
+ od -> pysig = *sig;
+ od -> cppsig = (cppsig != NULL ? cppsig : &od -> pysig);
+ od -> exceptions = exceptions;
+ od -> methodcode = methodcode;
+ od -> virthandler = vhd;
+ od -> common = findFunction(pt,mod,cd,pname,(methodcode != NULL),sig -> nrArgs);
+
+ if (findOptFlag(optflgs,"Numeric",bool_flag) != NULL)
+ setIsNumeric(od -> common);
+
+ /* Methods that run in new threads must be virtual. */
+ if (findOptFlag(optflgs,"NewThread",bool_flag) != NULL)
+ {
+ argDef *res;
+
+ if (!isvirt)
+ yyerror("/NewThread/ may only be specified for virtual functions");
+
+ /*
+ * This is an arbitary limitation to make the code generator
+ * slightly easier - laziness on my part.
+ */
+ res = &od -> cppsig -> result;
+
+ if (res -> atype != void_type || res -> nrderefs != 0)
+ yyerror("/NewThread/ may only be specified for void functions");
+
+ setIsNewThread(od);
+ }
+
+ getHooks(optflgs,&od -> prehook,&od -> posthook);
+
+ if (getReleaseGIL(optflgs))
+ setIsReleaseGIL(od);
+ else if (getHoldGIL(optflgs))
+ setIsHoldGIL(od);
+
+ od -> next = NULL;
+
+ /* Append to the list. */
+ for (odp = headp; *odp != NULL; odp = &(*odp)->next)
+ ;
+
+ *odp = od;
+}
+
+
+/*
+ * Return the Python name based on the C/C++ name and any /PyName/ annotation.
+ */
+static char *getPythonName(optFlags *optflgs, char *cname)
+{
+ char *pname;
+ optFlag *of;
+
+ if ((of = findOptFlag(optflgs, "PyName", name_flag)) != NULL)
+ pname = of -> fvalue.sval;
+ else
+ pname = cname;
+
+ return pname;
+}
+
+
+/*
+ * Cache a name in a module.
+ */
+static nameDef *cacheName(sipSpec *pt,char *name)
+{
+ nameDef *nd;
+
+ /* See if it already exists. */
+ for (nd = pt -> namecache; nd != NULL; nd = nd -> next)
+ if (strcmp(nd -> text,name) == 0)
+ return nd;
+
+ /* Create a new one. */
+ nd = sipMalloc(sizeof (nameDef));
+
+ nd -> nameflags = 0;
+ nd -> module = currentSpec -> module;
+ nd -> text = name;
+ nd -> next = pt -> namecache;
+
+ pt -> namecache = nd;
+
+ return nd;
+}
+
+
+/*
+ * Find (or create) an overloaded function name.
+ */
+static memberDef *findFunction(sipSpec *pt,moduleDef *mod,classDef *cd,
+ nameDef *pname,int hwcode,int nrargs)
+{
+ static struct slot_map {
+ char *name; /* The slot name. */
+ slotType type; /* The corresponding type. */
+ int needs_hwcode; /* If handwritten code is required. */
+ int nrargs; /* Nr. of arguments. */
+ } slot_table[] = {
+ {"__str__", str_slot, TRUE, 0},
+ {"__unicode__", unicode_slot, TRUE, 0},
+ {"__int__", int_slot, FALSE, 0},
+ {"__long__", long_slot, FALSE, 0},
+ {"__float__", float_slot, FALSE, 0},
+ {"__len__", len_slot, TRUE, 0},
+ {"__contains__", contains_slot, TRUE, 1},
+ {"__add__", add_slot, FALSE, 1},
+ {"__sub__", sub_slot, FALSE, 1},
+ {"__mul__", mul_slot, FALSE, 1},
+ {"__div__", div_slot, FALSE, 1},
+ {"__mod__", mod_slot, FALSE, 1},
+ {"__and__", and_slot, FALSE, 1},
+ {"__or__", or_slot, FALSE, 1},
+ {"__xor__", xor_slot, FALSE, 1},
+ {"__lshift__", lshift_slot, FALSE, 1},
+ {"__rshift__", rshift_slot, FALSE, 1},
+ {"__iadd__", iadd_slot, FALSE, 1},
+ {"__isub__", isub_slot, FALSE, 1},
+ {"__imul__", imul_slot, FALSE, 1},
+ {"__idiv__", idiv_slot, FALSE, 1},
+ {"__imod__", imod_slot, FALSE, 1},
+ {"__iand__", iand_slot, FALSE, 1},
+ {"__ior__", ior_slot, FALSE, 1},
+ {"__ixor__", ixor_slot, FALSE, 1},
+ {"__ilshift__", ilshift_slot, FALSE, 1},
+ {"__irshift__", irshift_slot, FALSE, 1},
+ {"__invert__", invert_slot, FALSE, 0},
+ {"__call__", call_slot, FALSE, -1},
+ {"__getitem__", getitem_slot, FALSE, -1},
+ {"__setitem__", setitem_slot, TRUE, -1},
+ {"__delitem__", delitem_slot, TRUE, -1},
+ {"__lt__", lt_slot, FALSE, 1},
+ {"__le__", le_slot, FALSE, 1},
+ {"__eq__", eq_slot, FALSE, 1},
+ {"__ne__", ne_slot, FALSE, 1},
+ {"__gt__", gt_slot, FALSE, 1},
+ {"__ge__", ge_slot, FALSE, 1},
+ {"__cmp__", cmp_slot, FALSE, 1},
+ {"__nonzero__", nonzero_slot, TRUE, 0},
+ {"__neg__", neg_slot, FALSE, 0},
+ {"__pos__", pos_slot, FALSE, 0},
+ {"__abs__", abs_slot, TRUE, 0},
+ {"__repr__", repr_slot, TRUE, 0},
+ {"__hash__", hash_slot, TRUE, 0},
+ {NULL}
+ };
+
+ memberDef *md, **flist;
+ struct slot_map *sm;
+ slotType st;
+
+ /* Get the slot type. */
+ st = no_slot;
+
+ for (sm = slot_table; sm -> name != NULL; ++sm)
+ if (strcmp(sm -> name,pname -> text) == 0)
+ {
+ if (sm -> needs_hwcode && !hwcode)
+ yyerror("This Python slot requires %MethodCode");
+
+ if (sm -> nrargs < 0)
+ {
+ int min_nr;
+
+ /* These require a minimum number. */
+ switch (sm -> type)
+ {
+ case getitem_slot:
+ case delitem_slot:
+ min_nr = 1;
+ break;
+
+ case setitem_slot:
+ min_nr = 2;
+ break;
+
+ default:
+ min_nr = 0;
+ }
+
+ if (nrargs < min_nr)
+ yyerror("Insufficient number of arguments to Python slot");
+ }
+ else if (cd == NULL)
+ {
+ /* Global operators need one extra argument. */
+ if (sm -> nrargs + 1 != nrargs)
+ yyerror("Incorrect number of arguments to global operator");
+ }
+ else if (sm -> nrargs != nrargs)
+ yyerror("Incorrect number of arguments to Python slot");
+
+ st = sm -> type;
+
+ break;
+ }
+
+ if (inMainModule())
+ setIsUsedName(pname);
+
+ /* Check there is no name clash. */
+ checkAttributes(pt,cd,pname -> text,TRUE);
+
+ /* See if it already exists. */
+ flist = (cd != NULL ? &cd -> members : &pt -> othfuncs);
+
+ for (md = *flist; md != NULL; md = md -> next)
+ if (md -> pyname == pname && md -> module == mod)
+ return md;
+
+ /* Create a new one. */
+ md = sipMalloc(sizeof (memberDef));
+
+ md -> pyname = pname;
+ md -> memberflags = 0;
+ md -> slot = st;
+ md -> module = mod;
+ md -> next = *flist;
+
+ *flist = md;
+
+ /* Global operators are a subset. */
+ if (cd == NULL && st != no_slot && st != neg_slot && st != pos_slot && !isNumberSlot(md) && !isRichCompareSlot(md))
+ yyerror("Global operators must be either numeric or comparison operators");
+
+ return md;
+}
+
+
+/*
+ * Search a set of flags for a particular one and check its type.
+ */
+static optFlag *findOptFlag(optFlags *flgs,char *name,flagType ft)
+{
+ int f;
+
+ for (f = 0; f < flgs -> nrFlags; ++f)
+ {
+ optFlag *of = &flgs -> flags[f];
+
+ if (strcmp(of -> fname,name) == 0)
+ {
+ /*
+ * An optional name can look like a boolean or a name.
+ */
+
+ if (ft == opt_name_flag)
+ {
+ if (of -> ftype == bool_flag)
+ {
+ of -> ftype = opt_name_flag;
+ of -> fvalue.sval = NULL;
+ }
+ else if (of -> ftype == name_flag)
+ of -> ftype = opt_name_flag;
+ }
+
+ if (ft != of -> ftype)
+ yyerror("Optional flag has a value of the wrong type");
+
+ return of;
+ }
+ }
+
+ return NULL;
+}
+
+
+/*
+ * A name is going to be used as a Python attribute name within a Python scope
+ * (ie. a Python dictionary), so check against what we already know is going in
+ * the same scope in case there is a clash.
+ */
+static void checkAttributes(sipSpec *pt,classDef *pyscope,char *attr,int isfunc)
+{
+ enumDef *ed;
+ varDef *vd;
+ classDef *cd;
+
+ /* Check the enums. */
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ {
+ enumMemberDef *emd;
+
+ if (ed -> ecd != pyscope || ed -> pyname == NULL)
+ continue;
+
+ if (strcmp(ed->pyname->text, attr) == 0)
+ yyerror("There is already an enum in scope with the same Python name");
+
+ for (emd = ed -> members; emd != NULL; emd = emd -> next)
+ if (strcmp(emd -> pyname -> text, attr) == 0)
+ yyerror("There is already an enum member in scope with the same Python name");
+ }
+
+ /* Check the variables. */
+
+ for (vd = pt -> vars; vd != NULL; vd = vd -> next)
+ {
+ if (vd -> ecd != pyscope)
+ continue;
+
+ if (strcmp(vd -> pyname -> text, attr) == 0)
+ yyerror("There is already a variable in scope with the same Python name");
+ }
+
+ /*
+ * Only check the members if this attribute isn't a member because we
+ * can handle members with the same name in the same scope.
+ */
+ if (!isfunc)
+ {
+ memberDef *md, *membs;
+
+ membs = (pyscope != NULL ? pyscope -> members : pt -> othfuncs);
+
+ for (md = membs; md != NULL; md = md -> next)
+ {
+ overDef *od, *overs;
+
+ if (strcmp(md -> pyname -> text, attr) != 0)
+ continue;
+
+ /* Check for a conflict with all overloads. */
+
+ overs = (pyscope != NULL ? pyscope -> overs : pt -> overs);
+
+ for (od = overs; od != NULL; od = od -> next)
+ {
+ if (od -> common != md)
+ continue;
+
+ yyerror("There is already a function in scope with the same Python name");
+ }
+ }
+ }
+
+ /* Check the classes. */
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ if (cd -> ecd != pyscope || cd -> pyname == NULL)
+ continue;
+
+ if (strcmp(cd->pyname, attr) == 0 && !isExternal(cd))
+ yyerror("There is already a class or namespace in scope with the same Python name");
+ }
+
+ /* Check the exceptions. */
+
+ if (pyscope == NULL)
+ {
+ exceptionDef *xd;
+
+ for (xd = pt->exceptions; xd != NULL; xd = xd->next)
+ if (xd->pyname != NULL && strcmp(xd->pyname, attr) == 0)
+ yyerror("There is already an exception with the same Python name");
+ }
+}
+
+
+/*
+ * Append a code block to a list of them. Append is needed to give the
+ * specifier easy control over the order of the documentation.
+ */
+static void appendCodeBlock(codeBlock **headp,codeBlock *new)
+{
+ while (*headp != NULL)
+ headp = &(*headp) -> next;
+
+ *headp = new;
+}
+
+
+/*
+ * Handle the end of a fully parsed a file.
+ */
+static void handleEOF()
+{
+ /*
+ * Check that the number of nested if's is the same as when we started
+ * the file.
+ */
+
+ if (skipStackPtr > newContext.ifdepth)
+ fatal("Too many %%If statements in %s\n",previousFile);
+
+ if (skipStackPtr < newContext.ifdepth)
+ fatal("Too many %%End statements in %s\n",previousFile);
+}
+
+
+/*
+ * Handle the end of a fully parsed a module.
+ */
+static void handleEOM()
+{
+ /* Check it has been named. */
+
+ if (currentModule -> name == NULL)
+ fatal("No %%Module has been specified for module defined in %s\n",previousFile);
+
+ /* The previous module is now current. */
+
+ currentModule = newContext.prevmod;
+}
+
+
+/*
+ * Find an existing qualifier.
+ */
+static qualDef *findQualifier(char *name)
+{
+ moduleDef *mod;
+
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ {
+ qualDef *qd;
+
+ for (qd = mod -> qualifiers; qd != NULL; qd = qd -> next)
+ if (strcmp(qd -> name,name) == 0)
+ return qd;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return a copy of a scoped name.
+ */
+scopedNameDef *copyScopedName(scopedNameDef *snd)
+{
+ scopedNameDef *head;
+
+ head = NULL;
+
+ while (snd != NULL)
+ {
+ appendScopedName(&head,text2scopePart(snd -> name));
+ snd = snd -> next;
+ }
+
+ return head;
+}
+
+
+/*
+ * Append a name to a list of scopes.
+ */
+void appendScopedName(scopedNameDef **headp,scopedNameDef *newsnd)
+{
+ while (*headp != NULL)
+ headp = &(*headp) -> next;
+
+ *headp = newsnd;
+}
+
+
+/*
+ * Free a scoped name - but not the text itself.
+ */
+void freeScopedName(scopedNameDef *snd)
+{
+ while (snd != NULL)
+ {
+ scopedNameDef *next = snd -> next;
+
+ free(snd);
+
+ snd = next;
+ }
+}
+
+
+/*
+ * Convert a text string to a scope part structure.
+ */
+scopedNameDef *text2scopePart(char *text)
+{
+ scopedNameDef *snd;
+
+ snd = sipMalloc(sizeof (scopedNameDef));
+
+ snd -> name = text;
+ snd -> next = NULL;
+
+ return snd;
+}
+
+
+/*
+ * Convert a text string to a fully scoped name.
+ */
+static scopedNameDef *text2scopedName(char *text)
+{
+ return scopeScopedName(text2scopePart(text));
+}
+
+
+/*
+ * Prepend any current scope to a scoped name.
+ */
+static scopedNameDef *scopeScopedName(scopedNameDef *name)
+{
+ classDef *cd = currentScope();
+ scopedNameDef *snd;
+
+ snd = (cd != NULL ? copyScopedName(cd->iff->fqcname) : NULL);
+
+ appendScopedName(&snd, name);
+
+ return snd;
+}
+
+
+/*
+ * Return a pointer to the tail part of a scoped name.
+ */
+char *scopedNameTail(scopedNameDef *snd)
+{
+ if (snd == NULL)
+ return NULL;
+
+ while (snd -> next != NULL)
+ snd = snd -> next;
+
+ return snd -> name;
+}
+
+
+/*
+ * Push the given scope onto the scope stack.
+ */
+static void pushScope(classDef *scope)
+{
+ if (currentScopeIdx >= MAX_NESTED_SCOPE)
+ fatal("Internal error: increase the value of MAX_NESTED_SCOPE\n");
+
+ scopeStack[currentScopeIdx] = scope;
+ sectFlagsStack[currentScopeIdx] = sectionFlags;
+
+ ++currentScopeIdx;
+}
+
+
+/*
+ * Pop the scope stack.
+ */
+static void popScope(void)
+{
+ if (currentScopeIdx > 0)
+ sectionFlags = sectFlagsStack[--currentScopeIdx];
+}
+
+
+/*
+ * Return non-zero if the current input should be parsed rather than be
+ * skipped.
+ */
+static int notSkipping()
+{
+ return (skipStackPtr == 0 ? TRUE : skipStack[skipStackPtr - 1]);
+}
+
+
+/*
+ * Return the value of an expression involving a time period.
+ */
+static int timePeriod(char *lname,char *uname)
+{
+ int this, line;
+ qualDef *qd, *lower, *upper;
+ moduleDef *mod;
+
+ if (lname == NULL)
+ lower = NULL;
+ else if ((lower = findQualifier(lname)) == NULL || lower -> qtype != time_qualifier)
+ yyerror("Lower bound is not a time version");
+
+ if (uname == NULL)
+ upper = NULL;
+ else if ((upper = findQualifier(uname)) == NULL || upper -> qtype != time_qualifier)
+ yyerror("Upper bound is not a time version");
+
+ /* Sanity checks on the bounds. */
+
+ if (lower == NULL && upper == NULL)
+ yyerror("Lower and upper bounds cannot both be omitted");
+
+ if (lower != NULL && upper != NULL)
+ {
+ if (lower -> module != upper -> module || lower -> line != upper -> line)
+ yyerror("Lower and upper bounds are from different timelines");
+
+ if (lower == upper)
+ yyerror("Lower and upper bounds must be different");
+
+ if (lower -> order > upper -> order)
+ yyerror("Later version specified as lower bound");
+ }
+
+ /* Go through each slot in the relevant timeline. */
+
+ if (lower != NULL)
+ {
+ mod = lower -> module;
+ line = lower -> line;
+ }
+ else
+ {
+ mod = upper -> module;
+ line = upper -> line;
+ }
+
+ this = FALSE;
+
+ for (qd = mod -> qualifiers; qd != NULL; qd = qd -> next)
+ {
+ if (qd -> qtype != time_qualifier || qd -> line != line)
+ continue;
+
+ if (lower != NULL && qd -> order < lower -> order)
+ continue;
+
+ if (upper != NULL && qd -> order >= upper -> order)
+ continue;
+
+ /*
+ * This is within the required range so if it is also needed
+ * then the expression is true.
+ */
+
+ if (isNeeded(qd))
+ {
+ this = TRUE;
+ break;
+ }
+ }
+
+ return this;
+}
+
+
+/*
+ * Return the value of an expression involving a single platform or feature.
+ */
+static int platOrFeature(char *name,int optnot)
+{
+ int this;
+ qualDef *qd;
+
+ if ((qd = findQualifier(name)) == NULL || qd -> qtype == time_qualifier)
+ yyerror("No such platform or feature");
+
+ /* Assume this sub-expression is false. */
+
+ this = FALSE;
+
+ if (qd -> qtype == feature_qualifier)
+ {
+ if (!excludedFeature(excludedQualifiers,qd))
+ this = TRUE;
+ }
+ else if (isNeeded(qd))
+ this = TRUE;
+
+ if (optnot)
+ this = !this;
+
+ return this;
+}
+
+
+/*
+ * Return TRUE if the given qualifier is excluded.
+ */
+int excludedFeature(stringList *xsl,qualDef *qd)
+{
+ while (xsl != NULL)
+ {
+ if (strcmp(qd -> name,xsl -> s) == 0)
+ return TRUE;
+
+ xsl = xsl -> next;
+ }
+
+ return FALSE;
+}
+
+
+/*
+ * Return TRUE if the given qualifier is needed.
+ */
+static int isNeeded(qualDef *qd)
+{
+ stringList *sl;
+
+ for (sl = neededQualifiers; sl != NULL; sl = sl -> next)
+ if (strcmp(qd -> name,sl -> s) == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Return the current scope. currentScope() is only valid if notSkipping()
+ * returns non-zero.
+ */
+static classDef *currentScope(void)
+{
+ return (currentScopeIdx > 0 ? scopeStack[currentScopeIdx - 1] : NULL);
+}
+
+
+/*
+ * Create a new qualifier.
+ */
+static void newQualifier(moduleDef *mod,int line,int order,char *name,qualType qt)
+{
+ qualDef *qd;
+
+ /* Check it doesn't already exist. */
+
+ if (findQualifier(name) != NULL)
+ yyerror("Version is already defined");
+
+ qd = sipMalloc(sizeof (qualDef));
+ qd -> name = name;
+ qd -> qtype = qt;
+ qd -> module = mod;
+ qd -> line = line;
+ qd -> order = order;
+ qd -> next = mod -> qualifiers;
+ mod -> qualifiers = qd;
+}
+
+
+/*
+ * Create a new imported module.
+ */
+static void newImport(char *name)
+{
+ moduleDef *from, *mod;
+ moduleListDef *mld;
+
+ /* Create a new module if it has already been imported. */
+ for (mod = currentSpec -> modules; mod != NULL; mod = mod -> next)
+ if (strcmp(mod -> file,name) == 0)
+ break;
+
+ from = currentModule;
+
+ if (mod == NULL)
+ {
+ newModule(NULL,name);
+ mod = currentModule;
+ }
+
+ /* Add the new import unless it has already been imported. */
+ for (mld = from->imports; mld != NULL; mld = mld->next)
+ if (mld->module == mod)
+ return;
+
+ mld = sipMalloc(sizeof (moduleListDef));
+ mld -> module = mod;
+ mld -> next = from->imports;
+
+ from->imports = mld;
+}
+
+
+/*
+ * Set up pointers to hook names.
+ */
+static void getHooks(optFlags *optflgs,char **pre,char **post)
+{
+ optFlag *of;
+
+ if ((of = findOptFlag(optflgs,"PreHook",name_flag)) != NULL)
+ *pre = of -> fvalue.sval;
+ else
+ *pre = NULL;
+
+ if ((of = findOptFlag(optflgs,"PostHook",name_flag)) != NULL)
+ *post = of -> fvalue.sval;
+ else
+ *post = NULL;
+}
+
+
+/*
+ * Get the /ReleaseGIL/ option flag.
+ */
+static int getReleaseGIL(optFlags *optflgs)
+{
+ return (findOptFlag(optflgs, "ReleaseGIL", bool_flag) != NULL);
+}
+
+
+/*
+ * Get the /HoldGIL/ option flag.
+ */
+static int getHoldGIL(optFlags *optflgs)
+{
+ return (findOptFlag(optflgs, "HoldGIL", bool_flag) != NULL);
+}
+
+
+/*
+ * Return TRUE if the QtNoEmitters option was specified.
+ */
+int optNoEmitters(sipSpec *pt)
+{
+ return optFind(pt, "QtNoEmitters");
+}
+
+
+/*
+ * Return TRUE if the QtRegisterTypes option was specified.
+ */
+int optRegisterTypes(sipSpec *pt)
+{
+ return optFind(pt, "QtRegisterTypes");
+}
+
+
+/*
+ * Return TRUE if the Qt4Q_OBJECT option was specified.
+ */
+int optQ_OBJECT4(sipSpec *pt)
+{
+ return optFind(pt, "Qt4Q_OBJECT");
+}
+
+
+/*
+ * Return TRUE if a particular option was specified with %SIPOptions.
+ */
+static int optFind(sipSpec *pt, const char *opt)
+{
+ stringList *sl;
+
+ for (sl = pt->options; sl != NULL; sl = sl->next)
+ if (strcmp(sl->s, opt) == 0)
+ return TRUE;
+
+ return FALSE;
+}
diff --git a/python/sip/sipgen/sip.h b/python/sip/sipgen/sip.h
new file mode 100644
index 00000000..f7fa46c3
--- /dev/null
+++ b/python/sip/sipgen/sip.h
@@ -0,0 +1,1027 @@
+/*
+ * The main header file for SIP.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#ifndef SIP_H
+#define SIP_H
+
+#include <stdio.h>
+#include <sys/types.h>
+
+
+#ifdef TRUE
+#undef TRUE
+#endif
+
+#ifdef FALSE
+#undef FALSE
+#endif
+
+#define TRUE 1
+#define FALSE 0
+
+
+#define DEFAULT_OFILE_EXT ".o" /* Default object file extension. */
+
+#define MAX_NR_ARGS 20 /* Max. nr. args. to a function or template. */
+
+
+/* For convenience. */
+
+#define classBaseName(cd) ((cd)->iff->name->text)
+#define classFQCName(cd) ((cd)->iff->fqcname)
+
+
+/* Handle module flags. */
+
+#define MOD_HAS_DELAYED_DTORS 0x0001 /* It has a class with a delayed dtor. */
+
+#define hasDelayedDtors(m) ((m)->modflags & MOD_HAS_DELAYED_DTORS)
+#define setHasDelayedDtors(m) ((m)->modflags |= MOD_HAS_DELAYED_DTORS)
+
+
+/* Handle section flags. */
+
+#define SECT_IS_PUBLIC 0x01 /* It is public. */
+#define SECT_IS_PROT 0x02 /* It is protected. */
+#define SECT_IS_PRIVATE 0x04 /* It is private. */
+#define SECT_IS_SLOT 0x08 /* It is a slot. */
+#define SECT_IS_SIGNAL 0x10 /* It is a signal. */
+#define SECT_MASK 0x1f /* The mask of all flags. */
+
+
+/* Handle class flags. These are combined with the section flags. */
+
+#define CLASS_HAS_ENUMS 0x00000100 /* It has enums. */
+#define CLASS_HAS_SIGSLOTS 0x00000200 /* It has signals or slots. */
+#define CLASS_IS_ABSTRACT 0x00000400 /* It is an abstract class. */
+#define CLASS_HAS_SHADOW 0x00000800 /* It is has a shadow class. */
+#define CLASS_IS_OPAQUE 0x00001000 /* It is opaque. */
+#define CLASS_HAS_VAR_HANDLERS 0x00002000 /* It has variable handlers. */
+#define CLASS_DTOR_RELEASE_GIL 0x00004000 /* The dtor releases the GIL. */
+#define CLASS_IS_PROTECTED 0x00008000 /* It is protected. */
+#define CLASS_IS_PROTECTED_SAV 0x00010000 /* It is protected (saved). */
+#define CLASS_IS_RENAMED 0x00020000 /* It has a different Python name. */
+#define CLASS_IS_INCOMPLETE 0x00040000 /* The specification is incomplete. */
+#define CLASS_CAN_CREATE 0x00080000 /* It has usable ctors. */
+#define CLASS_IS_EXTERNAL 0x00100000 /* It is external. */
+#define CLASS_IS_DELAYED_DTOR 0x00200000 /* The dtor is delayed. */
+#define CLASS_NO_DEFAULT_CTORS 0x00400000 /* Don't create default ctors. */
+#define CLASS_QOBJECT_SUB 0x00800000 /* It is derived from QObject. */
+#define CLASS_DTOR_HOLD_GIL 0x01000000 /* The dtor holds the GIL. */
+
+#define hasEnums(cd) ((cd)->classflags & CLASS_HAS_ENUMS)
+#define setHasEnums(cd) ((cd)->classflags |= CLASS_HAS_ENUMS)
+#define hasSigSlots(cd) ((cd)->classflags & CLASS_HAS_SIGSLOTS)
+#define setHasSigSlots(cd) ((cd)->classflags |= CLASS_HAS_SIGSLOTS)
+#define isAbstractClass(cd) ((cd)->classflags & CLASS_IS_ABSTRACT)
+#define setIsAbstractClass(cd) ((cd)->classflags |= CLASS_IS_ABSTRACT)
+#define hasShadow(cd) ((cd)->classflags & CLASS_HAS_SHADOW)
+#define setHasShadow(cd) ((cd)->classflags |= CLASS_HAS_SHADOW)
+#define resetHasShadow(cd) ((cd)->classflags &= ~CLASS_HAS_SHADOW)
+#define isOpaque(cd) ((cd)->classflags & CLASS_IS_OPAQUE)
+#define setIsOpaque(cd) ((cd)->classflags |= CLASS_IS_OPAQUE)
+#define hasVarHandlers(cd) ((cd)->classflags & CLASS_HAS_VAR_HANDLERS)
+#define setHasVarHandlers(cd) ((cd)->classflags |= CLASS_HAS_VAR_HANDLERS)
+#define isProtectedClass(cd) ((cd)->classflags & CLASS_IS_PROTECTED)
+#define setIsProtectedClass(cd) ((cd)->classflags |= CLASS_IS_PROTECTED)
+#define resetIsProtectedClass(cd) ((cd)->classflags &= ~CLASS_IS_PROTECTED)
+#define wasProtectedClass(cd) ((cd)->classflags & CLASS_IS_PROTECTED_SAV)
+#define setWasProtectedClass(cd) ((cd)->classflags |= CLASS_IS_PROTECTED_SAV)
+#define resetWasProtectedClass(cd) ((cd)->classflags &= ~CLASS_IS_PROTECTED_SAV)
+#define isReleaseGILDtor(c) ((cd)->classflags & CLASS_DTOR_RELEASE_GIL)
+#define setIsReleaseGILDtor(c) ((cd)->classflags |= CLASS_DTOR_RELEASE_GIL)
+#define isRenamedClass(cd) ((cd)->classflags & CLASS_IS_RENAMED)
+#define setIsRenamedClass(cd) ((cd)->classflags |= CLASS_IS_RENAMED)
+#define isIncomplete(cd) ((cd)->classflags & CLASS_IS_INCOMPLETE)
+#define setIsIncomplete(cd) ((cd)->classflags |= CLASS_IS_INCOMPLETE)
+#define canCreate(cd) ((cd)->classflags & CLASS_CAN_CREATE)
+#define setCanCreate(cd) ((cd)->classflags |= CLASS_CAN_CREATE)
+#define resetCanCreate(cd) ((cd)->classflags &= ~CLASS_CAN_CREATE)
+#define isExternal(cd) ((cd)->classflags & CLASS_IS_EXTERNAL)
+#define setIsExternal(cd) ((cd)->classflags |= CLASS_IS_EXTERNAL)
+#define isDelayedDtor(cd) ((cd)->classflags & CLASS_IS_DELAYED_DTOR)
+#define setIsDelayedDtor(cd) ((cd)->classflags |= CLASS_IS_DELAYED_DTOR)
+#define noDefaultCtors(cd) ((cd)->classflags & CLASS_NO_DEFAULT_CTORS)
+#define setNoDefaultCtors(cd) ((cd)->classflags |= CLASS_NO_DEFAULT_CTORS)
+#define isQObjectSubClass(cd) ((cd)->classflags & CLASS_QOBJECT_SUB)
+#define setIsQObjectSubClass(cd) ((cd)->classflags |= CLASS_QOBJECT_SUB)
+#define isHoldGILDtor(c) ((cd)->classflags & CLASS_DTOR_HOLD_GIL)
+#define setIsHoldGILDtor(c) ((cd)->classflags |= CLASS_DTOR_HOLD_GIL)
+
+#define isPublicDtor(cd) ((cd)->classflags & SECT_IS_PUBLIC)
+#define setIsPublicDtor(cd) ((cd)->classflags |= SECT_IS_PUBLIC)
+#define isProtectedDtor(cd) ((cd)->classflags & SECT_IS_PROT)
+#define isPrivateDtor(cd) ((cd)->classflags & SECT_IS_PRIVATE)
+
+#define isDtor(cd) ((cd)->classflags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE))
+
+
+/* Handle ctor flags. These are combined with the section flags. */
+
+#define CTOR_RELEASE_GIL 0x00000100 /* The ctor releases the GIL. */
+#define CTOR_EXPLICIT 0x00000200 /* The ctor is explicit. */
+#define CTOR_CAST 0x00000400 /* The ctor is a cast. */
+#define CTOR_HOLD_GIL 0x00000800 /* The ctor holds the GIL. */
+
+#define isPublicCtor(c) ((c)->ctorflags & SECT_IS_PUBLIC)
+#define setIsPublicCtor(c) ((c)->ctorflags |= SECT_IS_PUBLIC)
+#define isProtectedCtor(c) ((c)->ctorflags & SECT_IS_PROT)
+#define setIsProtectedCtor(c) ((c)->ctorflags |= SECT_IS_PROT)
+#define isPrivateCtor(c) ((c)->ctorflags & SECT_IS_PRIVATE)
+#define setIsPrivateCtor(c) ((c)->ctorflags |= SECT_IS_PRIVATE)
+
+#define isReleaseGILCtor(c) ((c)->ctorflags & CTOR_RELEASE_GIL)
+#define setIsReleaseGILCtor(c) ((c)->ctorflags |= CTOR_RELEASE_GIL)
+#define isExplicitCtor(c) ((c)->ctorflags & CTOR_EXPLICIT)
+#define setIsExplicitCtor(c) ((c)->ctorflags |= CTOR_EXPLICIT)
+#define isCastCtor(c) ((c)->ctorflags & CTOR_CAST)
+#define isHoldGILCtor(c) ((c)->ctorflags & CTOR_HOLD_GIL)
+#define setIsHoldGILCtor(c) ((c)->ctorflags |= CTOR_HOLD_GIL)
+
+
+/* Handle member flags. */
+
+#define MEMBR_NUMERIC 0x0001 /* It is a numeric slot. */
+
+#define isNumeric(m) ((m)->memberflags & MEMBR_NUMERIC)
+#define setIsNumeric(m) ((m)->memberflags |= MEMBR_NUMERIC)
+
+
+/* Handle enum flags. These are combined with the section flags. */
+
+#define ENUM_WAS_PROT 0x00000100 /* It was defined as protected. */
+#define ENUM_IS_RENAMED 0x00000200 /* It has been renamed. */
+
+#define isProtectedEnum(e) ((e)->enumflags & SECT_IS_PROT)
+#define setIsProtectedEnum(e) ((e)->enumflags |= SECT_IS_PROT)
+#define resetIsProtectedEnum(e) ((e)->enumflags &= ~SECT_IS_PROT)
+
+#define wasProtectedEnum(e) ((e)->enumflags & ENUM_WAS_PROT)
+#define setWasProtectedEnum(e) ((e)->enumflags |= ENUM_WAS_PROT)
+#define resetWasProtectedEnum(e) ((e)->enumflags &= ~ENUM_WAS_PROT)
+#define isRenamedEnum(e) ((e)->enumflags & ENUM_IS_RENAMED)
+#define setIsRenamedEnum(e) ((e)->enumflags |= ENUM_IS_RENAMED)
+
+
+/* Handle hierarchy flags. */
+
+#define HIER_IS_DUPLICATE 0x0001 /* It is a super class duplicate. */
+#define HIER_HAS_DUPLICATE 0x0002 /* It has a super class duplicate. */
+
+#define isDuplicateSuper(m) ((m)->mroflags & HIER_IS_DUPLICATE)
+#define setIsDuplicateSuper(m) ((m)->mroflags |= HIER_IS_DUPLICATE)
+#define hasDuplicateSuper(m) ((m)->mroflags & HIER_HAS_DUPLICATE)
+#define setHasDuplicateSuper(m) ((m)->mroflags |= HIER_HAS_DUPLICATE)
+
+
+/* Handle overload flags. These are combined with the section flags. */
+
+#define OVER_IS_VIRTUAL 0x00000100 /* It is virtual. */
+#define OVER_IS_ABSTRACT 0x00000200 /* It is abstract. */
+#define OVER_IS_CONST 0x00000400 /* It is a const function. */
+#define OVER_IS_STATIC 0x00000800 /* It is a static function. */
+#define OVER_IS_AUTOGEN 0x00001000 /* It is auto-generated. */
+#define OVER_IS_NEW_THREAD 0x00002000 /* It is in a new thread. */
+#define OVER_IS_FACTORY 0x00004000 /* It is a factory method. */
+#define OVER_XFERRED_BACK 0x00008000 /* Ownership is transferred back. */
+#define OVER_RELEASE_GIL 0x00010000 /* The function releases the GIL. */
+#define OVER_IS_VIRTUAL_REIMP 0x00020000 /* It is a re-implementation of a virtual. */
+#define OVER_DONT_DEREF_SELF 0x00040000 /* For comparison operators, don't dereference self. */
+#define OVER_HOLD_GIL 0x00080000 /* The function holds the GIL. */
+
+#define isPublic(o) ((o)->overflags & SECT_IS_PUBLIC)
+#define setIsPublic(o) ((o)->overflags |= SECT_IS_PUBLIC)
+#define isProtected(o) ((o)->overflags & SECT_IS_PROT)
+#define setIsProtected(o) ((o)->overflags |= SECT_IS_PROT)
+#define isPrivate(o) ((o)->overflags & SECT_IS_PRIVATE)
+#define setIsPrivate(o) ((o)->overflags |= SECT_IS_PRIVATE)
+#define isSlot(o) ((o)->overflags & SECT_IS_SLOT)
+#define setIsSlot(o) ((o)->overflags |= SECT_IS_SLOT)
+#define isSignal(o) ((o)->overflags & SECT_IS_SIGNAL)
+#define setIsSignal(o) ((o)->overflags |= SECT_IS_SIGNAL)
+
+#define isVirtual(o) ((o)->overflags & OVER_IS_VIRTUAL)
+#define setIsVirtual(o) ((o)->overflags |= OVER_IS_VIRTUAL)
+#define isAbstract(o) ((o)->overflags & OVER_IS_ABSTRACT)
+#define setIsAbstract(o) ((o)->overflags |= OVER_IS_ABSTRACT)
+#define isConst(o) ((o)->overflags & OVER_IS_CONST)
+#define setIsConst(o) ((o)->overflags |= OVER_IS_CONST)
+#define isStatic(o) ((o)->overflags & OVER_IS_STATIC)
+#define setIsStatic(o) ((o)->overflags |= OVER_IS_STATIC)
+#define isAutoGen(o) ((o)->overflags & OVER_IS_AUTOGEN)
+#define setIsAutoGen(o) ((o)->overflags |= OVER_IS_AUTOGEN)
+#define resetIsAutoGen(o) ((o)->overflags &= ~OVER_IS_AUTOGEN)
+#define isNewThread(o) ((o)->overflags & OVER_IS_NEW_THREAD)
+#define setIsNewThread(o) ((o)->overflags |= OVER_IS_NEW_THREAD)
+#define isFactory(o) ((o)->overflags & OVER_IS_FACTORY)
+#define setIsFactory(o) ((o)->overflags |= OVER_IS_FACTORY)
+#define isResultTransferredBack(o) ((o)->overflags & OVER_XFERRED_BACK)
+#define setIsResultTransferredBack(o) ((o)->overflags |= OVER_XFERRED_BACK)
+#define isReleaseGIL(o) ((o)->overflags & OVER_RELEASE_GIL)
+#define setIsReleaseGIL(o) ((o)->overflags |= OVER_RELEASE_GIL)
+#define isVirtualReimp(o) ((o)->overflags & OVER_IS_VIRTUAL_REIMP)
+#define setIsVirtualReimp(o) ((o)->overflags |= OVER_IS_VIRTUAL_REIMP)
+#define dontDerefSelf(o) ((o)->overflags & OVER_DONT_DEREF_SELF)
+#define setDontDerefSelf(o) ((o)->overflags |= OVER_DONT_DEREF_SELF)
+#define isHoldGIL(o) ((o)->overflags & OVER_HOLD_GIL)
+#define setIsHoldGIL(o) ((o)->overflags |= OVER_HOLD_GIL)
+
+
+/* Handle variable flags. */
+
+#define VAR_IS_STATIC 0x01 /* It is a static variable. */
+#define VAR_NEEDS_HANDLER 0x02 /* It the variable needs a handler. */
+
+#define isStaticVar(v) ((v)->varflags & VAR_IS_STATIC)
+#define setIsStaticVar(v) ((v)->varflags |= VAR_IS_STATIC)
+#define needsHandler(v) ((v)->varflags & VAR_NEEDS_HANDLER)
+#define setNeedsHandler(v) ((v)->varflags |= VAR_NEEDS_HANDLER)
+
+
+/* Handle argument flags. */
+
+#define ARG_IS_REF 0x0001 /* It is a reference. */
+#define ARG_IS_CONST 0x0002 /* It is a const. */
+#define ARG_XFERRED 0x0004 /* Ownership is transferred. */
+#define ARG_THIS_XFERRED 0x0008 /* Ownership of this is transferred. */
+#define ARG_XFERRED_BACK 0x0010 /* Ownership is transferred back. */
+#define ARG_ARRAY 0x0020 /* Used as an array. */
+#define ARG_ARRAY_SIZE 0x0040 /* Used as an array size. */
+#define ARG_ALLOW_NONE 0x0080 /* Allow None as a value. */
+#define ARG_GET_WRAPPER 0x0100 /* Get the wrapper object. */
+#define ARG_IN 0x0200 /* It passes an argument. */
+#define ARG_OUT 0x0400 /* It returns a result. */
+#define ARG_CONSTRAINED 0x0800 /* Suppress type conversion. */
+
+#define isReference(a) ((a)->argflags & ARG_IS_REF)
+#define setIsReference(a) ((a)-> argflags |= ARG_IS_REF)
+#define resetIsReference(a) ((a)->argflags &= ~ARG_IS_REF)
+#define isConstArg(a) ((a)->argflags & ARG_IS_CONST)
+#define setIsConstArg(a) ((a)->argflags |= ARG_IS_CONST)
+#define resetIsConstArg(a) ((a)->argflags &= ~ARG_IS_CONST)
+#define isTransferred(a) ((a)->argflags & ARG_XFERRED)
+#define setIsTransferred(a) ((a)->argflags |= ARG_XFERRED)
+#define isThisTransferred(a) ((a)->argflags & ARG_THIS_XFERRED)
+#define setIsThisTransferred(a) ((a)->argflags |= ARG_THIS_XFERRED)
+#define isTransferredBack(a) ((a)->argflags & ARG_XFERRED_BACK)
+#define setIsTransferredBack(a) ((a)->argflags |= ARG_XFERRED_BACK)
+#define isArray(a) ((a)->argflags & ARG_ARRAY)
+#define setArray(a) ((a)->argflags |= ARG_ARRAY)
+#define isArraySize(a) ((a)->argflags & ARG_ARRAY_SIZE)
+#define setArraySize(a) ((a)->argflags |= ARG_ARRAY_SIZE)
+#define isAllowNone(a) ((a)->argflags & ARG_ALLOW_NONE)
+#define setAllowNone(a) ((a)->argflags |= ARG_ALLOW_NONE)
+#define isGetWrapper(a) ((a)->argflags & ARG_GET_WRAPPER)
+#define setGetWrapper(a) ((a)->argflags |= ARG_GET_WRAPPER)
+#define isInArg(a) ((a)->argflags & ARG_IN)
+#define setIsInArg(a) ((a)->argflags |= ARG_IN)
+#define isOutArg(a) ((a)->argflags & ARG_OUT)
+#define setIsOutArg(a) ((a)->argflags |= ARG_OUT)
+#define isConstrained(a) ((a)->argflags & ARG_CONSTRAINED)
+#define setIsConstrained(a) ((a)->argflags |= ARG_CONSTRAINED)
+#define resetIsConstrained(a) ((a)->argflags &= ~ARG_CONSTRAINED)
+
+
+/* Handle name flags. */
+
+#define NAME_IS_USED 0x01 /* It is used in the main module. */
+#define NAME_IS_CLASS 0x02 /* It is the name of a class. */
+
+#define isUsedName(n) ((n)->nameflags & NAME_IS_USED)
+#define setIsUsedName(n) ((n)->nameflags |= NAME_IS_USED)
+#define resetIsUsedName(n) ((n)->nameflags &= ~NAME_IS_USED)
+#define isClassName(n) ((n)->nameflags & NAME_IS_CLASS)
+#define setIsClassName(n) ((n)->nameflags |= NAME_IS_CLASS)
+#define resetIsClassName(n) ((n)->nameflags &= ~NAME_IS_CLASS)
+
+
+/* Handle virtual handler flags. */
+
+#define VH_IS_DUPLICATE 0x01 /* It is a duplicate. */
+#define VH_TRANSFERS 0x02 /* It transfers ownership of the result. */
+
+#define isDuplicateVH(vh) ((vh)->vhflags & VH_IS_DUPLICATE)
+#define setIsDuplicateVH(vh) ((vh)->vhflags |= VH_IS_DUPLICATE)
+#define resetIsDuplicateVH(vh) ((vh)->vhflags &= ~VH_IS_DUPLICATE)
+#define isTransferVH(vh) ((vh)->vhflags & VH_TRANSFERS)
+#define setIsTransferVH(vh) ((vh)->vhflags |= VH_TRANSFERS)
+
+
+/* Slot types. */
+
+typedef enum {
+ str_slot,
+ unicode_slot,
+ int_slot,
+ long_slot,
+ float_slot,
+ len_slot,
+ contains_slot,
+ add_slot,
+ concat_slot,
+ sub_slot,
+ mul_slot,
+ repeat_slot,
+ div_slot,
+ mod_slot,
+ and_slot,
+ or_slot,
+ xor_slot,
+ lshift_slot,
+ rshift_slot,
+ iadd_slot,
+ iconcat_slot,
+ isub_slot,
+ imul_slot,
+ irepeat_slot,
+ idiv_slot,
+ imod_slot,
+ iand_slot,
+ ior_slot,
+ ixor_slot,
+ ilshift_slot,
+ irshift_slot,
+ invert_slot,
+ call_slot,
+ getitem_slot,
+ setitem_slot,
+ delitem_slot,
+ lt_slot,
+ le_slot,
+ eq_slot,
+ ne_slot,
+ gt_slot,
+ ge_slot,
+ cmp_slot,
+ nonzero_slot,
+ neg_slot,
+ pos_slot,
+ abs_slot,
+ repr_slot,
+ hash_slot,
+ no_slot
+} slotType;
+
+
+/*
+ * Argument types. Always add new ones at the end because the numeric values
+ * can appear in generated code.
+ */
+typedef enum {
+ no_type,
+ defined_type,
+ class_type,
+ struct_type,
+ void_type,
+ enum_type,
+ template_type,
+ signal_type,
+ slot_type,
+ rxcon_type,
+ rxdis_type,
+ slotcon_type,
+ slotdis_type,
+ ustring_type,
+ string_type,
+ short_type,
+ ushort_type,
+ cint_type,
+ int_type,
+ uint_type,
+ long_type,
+ ulong_type,
+ float_type,
+ cfloat_type,
+ double_type,
+ cdouble_type,
+ bool_type,
+ mapped_type,
+ pyobject_type,
+ pytuple_type,
+ pylist_type,
+ pydict_type,
+ pycallable_type,
+ pyslice_type,
+ qobject_type,
+ function_type,
+ pytype_type,
+ ellipsis_type,
+ longlong_type,
+ ulonglong_type,
+ anyslot_type,
+ cbool_type,
+ sstring_type,
+ wstring_type
+} argType;
+
+
+/* Value types. */
+
+typedef enum {
+ qchar_value,
+ string_value,
+ numeric_value,
+ real_value,
+ scoped_value,
+ fcall_value
+} valueType;
+
+
+/* Version types. */
+
+typedef enum {
+ time_qualifier,
+ platform_qualifier,
+ feature_qualifier
+} qualType;
+
+
+/* Interface file types. */
+
+typedef enum {
+ exception_iface,
+ mappedtype_iface,
+ namespace_iface,
+ class_iface
+} ifaceFileType;
+
+
+/* A software license. */
+
+typedef struct {
+ char *type; /* The license type. */
+ char *licensee; /* The licensee. */
+ char *timestamp; /* The timestamp. */
+ char *sig; /* The signature. */
+} licenseDef;
+
+
+/* A version qualifier. */
+
+typedef struct _qualDef {
+ char *name; /* The qualifier name. */
+ qualType qtype; /* The qualifier type. */
+ struct _moduleDef *module; /* The defining module. */
+ int line; /* Timeline if it is a time. */
+ int order; /* Order if it is a time. */
+ struct _qualDef *next; /* Next in the list. */
+} qualDef;
+
+
+/* A scoped name. */
+
+typedef struct _scopedNameDef {
+ char *name; /* The name. */
+ struct _scopedNameDef *next; /* Next in the scope list. */
+} scopedNameDef;
+
+
+/* A name. */
+
+typedef struct _nameDef {
+ int nameflags; /* The name flags. */
+ struct _moduleDef *module; /* The main module. */
+ char *text; /* The text of the name. */
+ struct _nameDef *next; /* Next in the list. */
+} nameDef;
+
+
+/*
+ * A node in the tree of classes used to determine the order in which the
+ * classes need to be created.
+ */
+
+typedef struct _nodeDef {
+ int ordered; /* Set if in order. */
+ struct _classDef *cd; /* The class. */
+ struct _nodeDef *parent; /* The parent. */
+ struct _nodeDef *child; /* The first child. */
+ struct _nodeDef *next; /* The next sibling. */
+} nodeDef;
+
+
+/* A module definition. */
+
+typedef struct _moduleDef {
+ char *fullname; /* The full module name. */
+ char *name; /* The module base name. */
+ int version; /* The module version. */
+ int modflags; /* The module flags. */
+ int modulenr; /* The module number. */
+ char *file; /* The filename. */
+ qualDef *qualifiers; /* The list of qualifiers. */
+ nodeDef root; /* Root of class tree. */
+ int nrtimelines; /* The nr. of timelines. */
+ int nrclasses; /* The nr. of classes. */
+ int nrexceptions; /* The nr. of exceptions. */
+ int nrmappedtypes; /* The nr. of mapped types. */
+ int nrenums; /* The nr. of named enums. */
+ int nrtypedefs; /* The nr. of typedefs. */
+ int nrvirthandlers; /* The nr. of virtual handlers. */
+ struct _virtHandlerDef *virthandlers; /* The virtual handlers. */
+ licenseDef *license; /* The software license. */
+ struct _moduleListDef *allimports; /* The list of all imports. */
+ struct _moduleListDef *imports; /* The list of direct imports. */
+ struct _moduleDef *next; /* Next in the list. */
+} moduleDef;
+
+
+/* An entry in a linked module list. */
+
+typedef struct _moduleListDef {
+ moduleDef *module; /* The module itself. */
+ struct _moduleListDef *next; /* The next in the list. */
+} moduleListDef;
+
+
+/* A literal code block. */
+
+typedef struct _codeBlock {
+ char *frag; /* The code itself. */
+ char *filename; /* The original file. */
+ int linenr; /* The line in the file. */
+ struct _codeBlock *next; /* Next in the list. */
+} codeBlock;
+
+
+/* The arguments to a throw specifier. */
+
+typedef struct _throwArgs {
+ int nrArgs; /* The number of arguments. */
+ struct _exceptionDef *args[MAX_NR_ARGS]; /* The arguments. */
+} throwArgs;
+
+
+/* An exception. */
+
+typedef struct _exceptionDef {
+ int exceptionnr; /* The exception number. */
+ struct _ifaceFileDef *iff; /* The interface file. */
+ char *pyname; /* The exception Python name. */
+ struct _classDef *cd; /* The exception class. */
+ char *bibase; /* The builtin base exception. */
+ struct _exceptionDef *base; /* The defined base exception. */
+ codeBlock *hdrcode; /* Optional header code. */
+ codeBlock *raisecode; /* Raise exception code. */
+ struct _exceptionDef *next; /* The next in the list. */
+} exceptionDef;
+
+
+/* A value. */
+
+typedef struct _valueDef {
+ valueType vtype; /* The type. */
+ char vunop; /* Any unary operator. */
+ char vbinop; /* Any binary operator. */
+ union {
+ char vqchar; /* Quoted character value. */
+ long vnum; /* Numeric value. */
+ double vreal; /* Real value. */
+ char *vstr; /* String value. */
+ scopedNameDef *vscp; /* Scoped value. */
+ struct _fcallDef *fcd; /* Function call. */
+ } u;
+ struct _valueDef *next; /* Next in the expression. */
+} valueDef;
+
+
+/* A member function argument (or result). */
+
+typedef struct {
+ argType atype; /* The type. */
+ char *name; /* The name. */
+ int argflags; /* The argument flags. */
+ int nrderefs; /* Nr. of dereferences. */
+ valueDef *defval; /* The default value. */
+ union {
+ struct _signatureDef *sa; /* If it is a function. */
+ struct _templateDef *td; /* If it is a template. */
+ struct _scopedNameDef *snd; /* If it is a defined type. */
+ struct _classDef *cd; /* If it is a class. */
+ struct _enumDef *ed; /* If it is an enum. */
+ struct _scopedNameDef *sname; /* If it is a struct. */
+ struct _mappedTypeDef *mtd; /* If it is a mapped type. */
+ } u;
+} argDef;
+
+
+
+/* An entry in a linked argument list. */
+typedef struct _argList {
+ argDef arg; /* The argument itself. */
+ struct _argList *next; /* Next in the list. */
+} argList;
+
+
+/* A function call. */
+
+typedef struct _fcallDef {
+ argDef type; /* The type. */
+ int nrArgs; /* The number of arguments. */
+ struct _valueDef *args[MAX_NR_ARGS]; /* The arguments. */
+} fcallDef;
+
+
+/* An interface file definition. */
+
+typedef struct _ifaceFileDef {
+ nameDef *name; /* The name. */
+ ifaceFileType type; /* Interface file type. */
+ scopedNameDef *fqcname; /* The fully qualified C++ name. */
+ moduleDef *module; /* The owning module. */
+ struct _ifaceFileList *used; /* Interface files used. */
+ struct _ifaceFileDef *next; /* Next in the list. */
+} ifaceFileDef;
+
+
+/* An entry in a linked interface file list. */
+
+typedef struct _ifaceFileList {
+ ifaceFileDef *iff; /* The interface file itself. */
+ int header; /* If needed in the .h file. */
+ struct _ifaceFileList *next; /* Next in the list. */
+} ifaceFileList;
+
+
+/* A mapped type. */
+
+typedef struct _mappedTypeDef {
+ argDef type; /* The type being mapped. */
+ int mappednr; /* The mapped type number. */
+ ifaceFileDef *iff; /* The interface file. */
+ codeBlock *hdrcode; /* Header code. */
+ codeBlock *convfromcode; /* Convert from C++ code. */
+ codeBlock *convtocode; /* Convert to C++ code. */
+ struct _mappedTypeDef *next; /* Next in the list. */
+} mappedTypeDef;
+
+
+/* A function signature. */
+
+typedef struct _signatureDef {
+ argDef result; /* The result. */
+ int nrArgs; /* The number of arguments. */
+ argDef args[MAX_NR_ARGS]; /* The arguments. */
+} signatureDef;
+
+
+/* A list of function signatures. */
+
+typedef struct _signatureList {
+ struct _signatureDef *sd; /* The signature. */
+ struct _signatureList *next; /* Next in the list. */
+} signatureList;
+
+
+/* A template type. */
+
+typedef struct _templateDef {
+ scopedNameDef *fqname; /* The name. */
+ signatureDef types; /* The types. */
+} templateDef;
+
+
+/* A list of virtual handlers. */
+
+typedef struct _virtHandlerDef {
+ int virthandlernr; /* The nr. of the virtual handler. */
+ int vhflags; /* The virtual handler flags. */
+ signatureDef *pysig; /* The Python signature. */
+ signatureDef *cppsig; /* The C++ signature. */
+ struct _moduleDef *module; /* The defining module. */
+ codeBlock *virtcode; /* Virtual handler code. */
+ struct _virtHandlerDef *next; /* Next in the list. */
+} virtHandlerDef;
+
+
+/* A typedef definition. */
+
+typedef struct _typedefDef {
+ scopedNameDef *fqname; /* The fully qualified name. */
+ struct _classDef *ecd; /* The enclosing class. */
+ moduleDef *module; /* The owning module. */
+ argDef type; /* The actual type. */
+ struct _typedefDef *next; /* Next in the list. */
+} typedefDef;
+
+
+/* A variable definition. */
+
+typedef struct _varDef {
+ nameDef *pyname; /* The variable Python name. */
+ scopedNameDef *fqcname; /* The fully qualified C/C++ name. */
+ struct _classDef *ecd; /* The enclosing class. */
+ moduleDef *module; /* The owning module. */
+ int varflags; /* The variable flags. */
+ argDef type; /* The actual type. */
+ codeBlock *accessfunc; /* The access function. */
+ codeBlock *getcode; /* The get code. */
+ codeBlock *setcode; /* The set code. */
+ struct _varDef *next; /* Next in the list. */
+} varDef;
+
+
+/* An overloaded member function definition. */
+
+typedef struct _overDef {
+ char *cppname; /* The C++ name. */
+ int overflags; /* The overload flags. */
+ struct _memberDef *common; /* Common parts. */
+ signatureDef pysig; /* The Python signature. */
+ signatureDef *cppsig; /* The C++ signature. */
+ throwArgs *exceptions; /* The exceptions. */
+ codeBlock *methodcode; /* Method code. */
+ virtHandlerDef *virthandler; /* The virtual handler. */
+ char *prehook; /* The pre-hook name. */
+ char *posthook; /* The post-hook name. */
+ struct _overDef *next; /* Next in the list. */
+} overDef;
+
+
+/* An overloaded constructor definition. */
+
+typedef struct _ctorDef {
+ int ctorflags; /* The ctor flags. */
+ signatureDef pysig; /* The Python signature. */
+ signatureDef *cppsig; /* The C++ signature, NULL if /NoDerived/. */
+ throwArgs *exceptions; /* The exceptions. */
+ codeBlock *methodcode; /* Method code. */
+ char *prehook; /* The pre-hook name. */
+ char *posthook; /* The post-hook name. */
+ struct _ctorDef *next; /* Next in the list. */
+} ctorDef;
+
+
+/* An enumerated type member definition. */
+
+typedef struct _enumMemberDef {
+ nameDef *pyname; /* The Python name. */
+ char *cname; /* The C/C++ name. */
+ struct _enumDef *ed; /* The enclosing enum. */
+ struct _enumMemberDef *next; /* Next in the list. */
+} enumMemberDef;
+
+
+/* An enumerated type definition. */
+
+typedef struct _enumDef {
+ int enumflags; /* The enum flags. */
+ scopedNameDef *fqcname; /* The name (may be NULL). */
+ nameDef *pyname; /* The Python name (may be NULL). */
+ int enumnr; /* The enum number. */
+ struct _classDef *ecd; /* The enclosing class. */
+ struct _classDef *pcd; /* The publishing class. */
+ moduleDef *module; /* The owning module. */
+ enumMemberDef *members; /* The list of members. */
+ struct _memberDef *slots; /* The list of slots. */
+ struct _overDef *overs; /* The list of slot overloads. */
+ struct _enumDef *next; /* Next in the list. */
+} enumDef;
+
+
+/* An member function definition. */
+
+typedef struct _memberDef {
+ nameDef *pyname; /* The Python name. */
+ int memberflags; /* The member flags. */
+ slotType slot; /* The slot type. */
+ moduleDef *module; /* The owning module. */
+ struct _memberDef *next; /* Next in the list. */
+} memberDef;
+
+
+/* A list of visible member functions. */
+
+typedef struct _visibleList {
+ memberDef *m; /* The member definition. */
+ struct _classDef *cd; /* The class. */
+ struct _visibleList *next; /* Next in the list. */
+} visibleList;
+
+
+/* An entry in a linked class list. */
+
+typedef struct _classList {
+ struct _classDef *cd; /* The class itself. */
+ struct _classList *next; /* Next in the list. */
+} classList;
+
+
+/* A virtual overload definition. */
+
+typedef struct _virtOverDef {
+ overDef o; /* The overload. */
+ struct _classDef *scope; /* The overload scope. */
+ struct _virtOverDef *next; /* Next in the list. */
+} virtOverDef;
+
+
+/* A class that appears in a class's hierarchy. */
+
+typedef struct _mroDef {
+ struct _classDef *cd; /* The class. */
+ int mroflags; /* The hierarchy flags. */
+ struct _mroDef *next; /* The next in the list. */
+} mroDef;
+
+
+/* A class definition. */
+
+typedef struct _classDef {
+ int classflags; /* The class flags. */
+ int userflags; /* The user type flags. */
+ int classnr; /* The class number. */
+ char *pyname; /* The Python name. */
+ ifaceFileDef *iff; /* The interface file. */
+ struct _classDef *ecd; /* The enclosing scope. */
+ struct _classDef *real; /* The real class if this is a proxy or extender. */
+ nodeDef *node; /* Position in class tree. */
+ classList *supers; /* The parent classes. */
+ mroDef *mro; /* The super-class hierarchy. */
+ templateDef *td; /* The instantiated template. */
+ ctorDef *ctors; /* The constructors. */
+ ctorDef *defctor; /* The default ctor. */
+ codeBlock *dealloccode; /* Handwritten dealloc code. */
+ codeBlock *dtorcode; /* Handwritten dtor code. */
+ throwArgs *dtorexceptions; /* The dtor exceptions. */
+ memberDef *members; /* The member functions. */
+ overDef *overs; /* The overloads. */
+ argList *casts; /* The operator casts. */
+ virtOverDef *vmembers; /* The virtual members. */
+ visibleList *visible; /* The visible members. */
+ codeBlock *cppcode; /* Class C++ code. */
+ codeBlock *hdrcode; /* Class header code. */
+ codeBlock *convtosubcode; /* Convert to sub C++ code. */
+ struct _classDef *subbase; /* Sub-class base class. */
+ codeBlock *convtocode; /* Convert to C++ code. */
+ codeBlock *travcode; /* Traverse code. */
+ codeBlock *clearcode; /* Clear code. */
+ codeBlock *readbufcode; /* Read buffer code. */
+ codeBlock *writebufcode; /* Write buffer code. */
+ codeBlock *segcountcode; /* Segment count code. */
+ codeBlock *charbufcode; /* Character buffer code. */
+ struct _classDef *next; /* Next in the list. */
+} classDef;
+
+
+/* A class template definition. */
+
+typedef struct _classTmplDef {
+ signatureDef sig; /* The template arguments. */
+ classDef *cd; /* The class itself. */
+ struct _classTmplDef *next; /* The next in the list. */
+} classTmplDef;
+
+
+/* A mapped type template definition. */
+
+typedef struct _mappedTypeTmplDef {
+ signatureDef sig; /* The template arguments. */
+ mappedTypeDef *mt; /* The mapped type itself. */
+ struct _mappedTypeTmplDef *next; /* The next in the list. */
+} mappedTypeTmplDef;
+
+
+/* The parse tree corresponding to the specification file. */
+
+typedef struct {
+ moduleDef *module; /* This module. */
+ moduleDef *modules; /* The list of modules. */
+ nameDef *namecache; /* The name cache. */
+ ifaceFileDef *ifacefiles; /* The list of interface files. */
+ classDef *classes; /* The list of classes. */
+ classTmplDef *classtemplates; /* The list of class templates. */
+ classDef *proxies; /* The list of proxy classes. */
+ exceptionDef *exceptions; /* The list of exceptions. */
+ mappedTypeDef *mappedtypes; /* The mapped types. */
+ mappedTypeTmplDef *mappedtypetemplates; /* The list of mapped type templates. */
+ int qobjclass; /* QObject class, -1 if none. */
+ enumDef *enums; /* List of enums. */
+ varDef *vars; /* List of variables. */
+ memberDef *othfuncs; /* List of other functions. */
+ overDef *overs; /* Global overloads. */
+ typedefDef *typedefs; /* List of typedefs. */
+ codeBlock *copying; /* Software license. */
+ codeBlock *exphdrcode; /* Exported header code. */
+ codeBlock *hdrcode; /* Header code. */
+ codeBlock *cppcode; /* Global C++ code. */
+ codeBlock *docs; /* Documentation. */
+ codeBlock *preinitcode; /* Pre-initialisation code. */
+ codeBlock *postinitcode; /* Post-initialisation code. */
+ codeBlock *unitcode; /* Compilation unit code. */
+ ifaceFileList *used; /* Interface files used. */
+ int sigslots; /* Set if signals or slots are used. */
+ int genc; /* Set if we are generating C code. */
+ struct _stringList *options; /* The list of options. */
+} sipSpec;
+
+
+/* A list of strings. */
+
+typedef struct _stringList {
+ const char *s; /* The string. */
+ struct _stringList *next; /* The next in the list. */
+} stringList;
+
+
+/* File specific context information for the parser. */
+
+typedef struct _parserContext {
+ int ifdepth; /* The depth of nested if's. */
+ moduleDef *prevmod; /* The previous module. */
+} parserContext;
+
+
+extern char *sipVersion; /* The version of SIP. */
+extern stringList *includeDirList; /* The include directory list for SIP files. */
+
+
+void parse(sipSpec *,FILE *,char *,stringList *,stringList *);
+void parserEOF(char *,parserContext *);
+void transform(sipSpec *);
+void generateCode(sipSpec *,char *,char *,char *,char *,int,int,int,int,stringList *);
+void generateAPI(sipSpec *pt, const char *apiFile);
+void generateXML(sipSpec *pt, const char *xmlFile);
+void generateExpression(valueDef *vd, FILE *fp);
+void warning(char *,...);
+void fatal(char *,...);
+void fatalScopedName(scopedNameDef *);
+void setInputFile(FILE *,char *,parserContext *,int);
+void *sipMalloc(size_t);
+char *sipStrdup(char *);
+char *concat(const char *, ...);
+void append(char **,char *);
+ifaceFileList *addToUsedList(ifaceFileList **, ifaceFileDef *);
+int excludedFeature(stringList *,qualDef *);
+int sameSignature(signatureDef *,signatureDef *,int);
+int sameTemplateSignature(signatureDef *sd1, signatureDef *sd2, int deep);
+int sameScopedName(scopedNameDef *,scopedNameDef *);
+int sameBaseType(argDef *,argDef *);
+char *scopedNameTail(scopedNameDef *);
+scopedNameDef *text2scopePart(char *);
+scopedNameDef *copyScopedName(scopedNameDef *);
+void appendScopedName(scopedNameDef **,scopedNameDef *);
+void freeScopedName(scopedNameDef *);
+void appendToClassList(classList **,classDef *);
+void prcode(FILE *fp, const char *fmt, ...);
+void prOverloadName(FILE *fp, overDef *od);
+void prScopedPythonName(FILE *fp, classDef *scope, const char *pyname);
+void prOverloadDecl(FILE *fp, overDef *od, int defval);
+int isIntReturnSlot(memberDef *md);
+int isLongReturnSlot(memberDef *md);
+int isVoidReturnSlot(memberDef *md);
+int isNumberSlot(memberDef *md);
+int isRichCompareSlot(memberDef *md);
+mappedTypeDef *allocMappedType(argDef *type);
+void appendString(stringList **headp, const char *s);
+void appendTypeStrings(scopedNameDef *ename, signatureDef *patt, signatureDef *src, signatureDef *known, scopedNameDef **names, scopedNameDef **values);
+codeBlock *templateCode(sipSpec *pt, ifaceFileList **used, codeBlock *ocb, scopedNameDef *names, scopedNameDef *values);
+ifaceFileDef *findIfaceFile(sipSpec *pt, moduleDef *mod, scopedNameDef *fqname, ifaceFileType iftype, argDef *ad);
+int optNoEmitters(sipSpec *pt);
+int optRegisterTypes(sipSpec *pt);
+int optQ_OBJECT4(sipSpec *pt);
+void yywarning(char *);
+
+
+/* These are only here because bison publically references them. */
+
+/* Represent a set of option flags. */
+
+#define MAX_NR_FLAGS 5
+
+typedef enum {
+ bool_flag,
+ string_flag,
+ name_flag,
+ opt_name_flag,
+ integer_flag
+} flagType;
+
+typedef struct {
+ char *fname; /* The flag name. */
+ flagType ftype; /* The flag type. */
+ union { /* The flag value. */
+ char *sval; /* A string value. */
+ long ival; /* An integer value. */
+ } fvalue;
+} optFlag;
+
+typedef struct {
+ int nrFlags; /* The number of flags. */
+ optFlag flags[MAX_NR_FLAGS]; /* Each flag. */
+} optFlags;
+
+#endif
diff --git a/python/sip/sipgen/sipgen.sbf b/python/sip/sipgen/sipgen.sbf
new file mode 100644
index 00000000..911b216b
--- /dev/null
+++ b/python/sip/sipgen/sipgen.sbf
@@ -0,0 +1,16 @@
+# This is the build file for the code generator.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of SIP.
+#
+# This copy of SIP is licensed for use under the terms of the SIP License
+# Agreement. See the file LICENSE for more details.
+#
+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+target = sip
+sources = main.c transform.c gencode.c export.c heap.c parser.c lexer.c
+headers = sip.h parser.h
diff --git a/python/sip/sipgen/transform.c b/python/sip/sipgen/transform.c
new file mode 100644
index 00000000..036a124b
--- /dev/null
+++ b/python/sip/sipgen/transform.c
@@ -0,0 +1,2856 @@
+/*
+ * The parse tree transformation module for SIP.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <stddef.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "sip.h"
+
+
+static int samePythonSignature(signatureDef *sd1, signatureDef *sd2);
+static int nextSignificantArg(signatureDef *sd, int a);
+static int sameArgType(argDef *a1, argDef *a2, int strict);
+static int supportedType(classDef *,overDef *,argDef *,int);
+static int sameOverload(overDef *od1,overDef *od2);
+static int sameVirtualHandler(virtHandlerDef *vhd1,virtHandlerDef *vhd2);
+static int isSubClass(classDef *cc,classDef *pc);
+static void setAllImports(sipSpec *pt, moduleDef *mod);
+static void addUniqueModule(moduleDef *mod, moduleDef *imp);
+static void ensureInput(classDef *,overDef *,argDef *);
+static void defaultInput(argDef *);
+static void defaultOutput(classDef *,overDef *,argDef *);
+static void assignClassNrs(sipSpec *,moduleDef *,nodeDef *);
+static void assignEnumNrs(sipSpec *pt);
+static void positionClass(classDef *);
+static void addNodeToParent(nodeDef *,classDef *);
+static void addAutoOverload(sipSpec *,classDef *,overDef *);
+static void ifaceFileIsUsed(sipSpec *, ifaceFileDef *, argDef *);
+static void ifaceFilesAreUsed(sipSpec *, ifaceFileDef *, overDef *);
+static void ifaceFilesAreUsedByMethod(sipSpec *, classDef *, memberDef *);
+static void ifaceFilesAreUsedFromOther(sipSpec *pt, signatureDef *sd);
+static void scopeDefaultValue(sipSpec *,classDef *,argDef *);
+static void setHierarchy(sipSpec *,classDef *,classDef *,classList **);
+static void transformCtors(sipSpec *,classDef *);
+static void transformCasts(sipSpec *,classDef *);
+static void addDefaultCopyCtor(classDef *);
+static void transformOverloads(sipSpec *,classDef *,overDef *);
+static void transformVariableList(sipSpec *);
+static void transformMappedTypes(sipSpec *);
+static void getVisibleMembers(sipSpec *,classDef *);
+static void getVirtuals(sipSpec *pt,classDef *cd);
+static void getClassVirtuals(classDef *,classDef *);
+static void transformTypedefs(sipSpec *pt);
+static void resolveMappedTypeTypes(sipSpec *,mappedTypeDef *);
+static void resolveCtorTypes(sipSpec *,classDef *,ctorDef *);
+static void resolveFuncTypes(sipSpec *,moduleDef *,classDef *,overDef *);
+static void resolvePySigTypes(sipSpec *,moduleDef *,classDef *,overDef *,signatureDef *,int);
+static void resolveVariableType(sipSpec *,varDef *);
+static void fatalNoDefinedType(scopedNameDef *);
+static void getBaseType(sipSpec *,moduleDef *,classDef *,argDef *);
+static void searchScope(sipSpec *,classDef *,scopedNameDef *,argDef *);
+static void searchMappedTypes(sipSpec *,scopedNameDef *,argDef *);
+static void searchTypedefs(sipSpec *,scopedNameDef *,argDef *);
+static void searchEnums(sipSpec *,scopedNameDef *,argDef *);
+static void searchClasses(sipSpec *,moduleDef *mod,scopedNameDef *,argDef *);
+static void appendToMRO(mroDef *,mroDef ***,classDef *);
+static void moveClassCasts(sipSpec *pt, classDef *cd);
+static void moveGlobalSlot(sipSpec *pt, memberDef *gmd);
+static void filterVirtualHandlers(moduleDef *mod);
+static ifaceFileDef *getIfaceFile(argDef *ad);
+static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type);
+static classDef *getProxy(sipSpec *pt, classDef *cd);
+
+
+/*
+ * Transform the parse tree.
+ */
+
+void transform(sipSpec *pt)
+{
+ moduleDef *mod;
+ moduleListDef *mld;
+ classDef *cd, *rev, **tail;
+ classList *newl;
+ overDef *od;
+ mappedTypeDef *mtd;
+ virtHandlerDef *vhd;
+ int nr;
+
+ if (pt -> module -> name == NULL)
+ fatal("No %%Module has been specified for the module\n");
+
+ /*
+ * The class list has the main module's classes at the front and the
+ * ones from the module at the most nested %Import at the end. This
+ * affects some of the following algorithms, eg. when assigning class
+ * numbers. We have to have consistency whenever a module is used. To
+ * achieve this we reverse the order of the classes.
+ */
+ rev = NULL;
+ cd = pt -> classes;
+
+ while (cd != NULL)
+ {
+ classDef *next = cd -> next;
+
+ cd -> next = rev;
+ rev = cd;
+
+ /*
+ * Mark any QObject class. This flag will ripple through all derived
+ * classes when we set the hierarchy.
+ */
+ if (strcmp(classBaseName(cd), "QObject") == 0)
+ setIsQObjectSubClass(cd);
+
+ cd = next;
+ }
+
+ pt -> classes = rev;
+
+ /* Build the list of all imports for each module. */
+ for (mod = pt->modules; mod != NULL; mod = mod->next)
+ setAllImports(pt, mod);
+
+ /* Check each class has been defined. */
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ if (cd -> iff -> module == NULL)
+ {
+ fatalScopedName(classFQCName(cd));
+ fatal(" has not been defined\n");
+ }
+
+ /*
+ * Set the super-class hierarchy for each class and re-order the list
+ * of classes so that no class appears before a super class or an
+ * enclosing scope class.
+ */
+ newl = NULL;
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ setHierarchy(pt,cd,cd,&newl);
+
+ /* Replace the old list with the new one. */
+ tail = &pt -> classes;
+
+ while (newl != NULL)
+ {
+ classList *cl = newl;
+
+ *tail = cl -> cd;
+ tail = &cl -> cd -> next;
+
+ newl = cl -> next;
+ free(cl);
+ }
+
+ *tail = NULL;
+
+ /* Transform typedefs, variables and global functions. */
+ transformTypedefs(pt);
+ transformVariableList(pt);
+ transformOverloads(pt,NULL,pt -> overs);
+
+ /* Transform class ctors, functions and casts. */
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ transformCtors(pt,cd);
+
+ if (!pt -> genc)
+ {
+ transformOverloads(pt,cd,cd -> overs);
+ transformCasts(pt, cd);
+ }
+ }
+
+ /* Transform mapped types based on templates. */
+ transformMappedTypes(pt);
+
+ /* Handle default ctors now that the argument types are resolved. */
+ if (!pt -> genc)
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ if (!noDefaultCtors(cd) && !isOpaque(cd) && cd->iff->type != namespace_iface)
+ addDefaultCopyCtor(cd);
+
+ /*
+ * Go through each class and add it to it's defining module's tree of
+ * classes. The tree reflects the namespace hierarchy.
+ */
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ addNodeToParent(&cd -> iff -> module -> root,cd);
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ positionClass(cd);
+
+ /* Assign module specific class numbers for all modules. */
+ for (mod = pt->modules; mod != NULL; mod = mod->next)
+ assignClassNrs(pt, mod, &mod->root);
+
+ /* Assign module specific enum numbers for all enums. */
+ assignEnumNrs(pt);
+
+ /* Add any automatically generated methods. */
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ for (od = cd -> overs; od != NULL; od = od -> next)
+ if (isAutoGen(od))
+ addAutoOverload(pt,cd,od);
+
+ /* Allocate mapped types numbers. */
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ mtd -> mappednr = mtd -> iff -> module -> nrmappedtypes++;
+
+ /*
+ * Move casts and slots around to their correct classes (if in the same
+ * module) or create proxies for them (if cross-module).
+ */
+ if (!pt -> genc)
+ {
+ memberDef *md;
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ if (cd->iff->module == pt->module)
+ moveClassCasts(pt, cd);
+
+ for (md = pt->othfuncs; md != NULL; md = md->next)
+ if (md->slot != no_slot && md->module == pt->module)
+ moveGlobalSlot(pt, md);
+ }
+
+ /* Generate the different class views. */
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ ifaceFileDef *iff = cd -> iff;
+
+ if (iff -> type == class_iface)
+ {
+ /* Get the list of visible member functions. */
+ getVisibleMembers(pt,cd);
+
+ /* Get the virtual members. */
+ if (hasShadow(cd))
+ getVirtuals(pt,cd);
+ }
+ else if (iff -> type == namespace_iface && iff -> module == pt -> module)
+ {
+ memberDef *md;
+
+ for (md = cd -> members; md != NULL; md = md -> next)
+ ifaceFilesAreUsedByMethod(pt, cd, md);
+ }
+ }
+
+ /*
+ * In case there are any global functions that need external interface
+ * files.
+ */
+ for (od = pt -> overs; od != NULL; od = od -> next)
+ if (od->common->module == pt->module)
+ ifaceFilesAreUsedFromOther(pt, &od->pysig);
+
+ /*
+ * Remove redundant virtual handlers. It's important that earlier,
+ * ie. those at the deepest level of %Import, are done first.
+ */
+ nr = 0;
+
+ for (mld = pt->module->allimports; mld != NULL; mld = mld->next)
+ {
+ mld->module->modulenr = nr++;
+ filterVirtualHandlers(mld->module);
+ }
+
+ pt->module->modulenr = nr;
+ filterVirtualHandlers(pt->module);
+
+ /*
+ * Make sure we have the interface files for all types from other modules
+ * that are used in virtual handlers implemented in this module.
+ */
+ for (vhd = pt->module->virthandlers; vhd != NULL; vhd = vhd->next)
+ if (!isDuplicateVH(vhd))
+ ifaceFilesAreUsedFromOther(pt, vhd->cppsig);
+
+ /* Update proxies with some information from the real classes. */
+ for (cd = pt->proxies; cd != NULL; cd = cd->next)
+ cd->classnr = cd->real->classnr;
+}
+
+
+/*
+ * Set the list of all imports for a module. The list is ordered so that a
+ * module appears before any module that imports it.
+ */
+static void setAllImports(sipSpec *pt, moduleDef *mod)
+{
+ moduleListDef *mld;
+
+ /*
+ * Handle the trivial case where there are no imports, or the list has
+ * already been done.
+ */
+ if (mod->imports == NULL || mod->allimports != NULL)
+ return;
+
+ /* Make sure all the direct imports are done first. */
+ for (mld = mod->imports; mld != NULL; mld = mld->next)
+ setAllImports(pt, mld->module);
+
+ /*
+ * Now build the list from our direct imports lists but ignoring
+ * duplicates.
+ */
+ for (mld = mod->imports; mld != NULL; mld = mld->next)
+ {
+ moduleListDef *amld;
+
+ for (amld = mld->module->allimports; amld != NULL; amld = amld->next)
+ addUniqueModule(mod, amld->module);
+
+ addUniqueModule(mod, mld->module);
+ }
+}
+
+
+/*
+ * Append a module to the list of all imported modules if it isn't already
+ * there.
+ */
+static void addUniqueModule(moduleDef *mod, moduleDef *imp)
+{
+ moduleListDef **tail;
+
+ for (tail = &mod->allimports; *tail != NULL; tail = &(*tail)->next)
+ if ((*tail)->module == imp)
+ return;
+
+ *tail = sipMalloc(sizeof (moduleListDef));
+
+ (*tail)->module = imp;
+ (*tail)->next = NULL;
+}
+
+
+/*
+ * Move any class casts to its correct class, or publish as a ctor extender.
+ */
+static void moveClassCasts(sipSpec *pt, classDef *cd)
+{
+ argList *al;
+
+ for (al = cd->casts; al != NULL; al = al->next)
+ {
+ classDef *dcd = al->arg.u.cd;
+ ctorDef *ct, **ctp;
+ argDef *ad;
+
+ /*
+ * If the destination class is in a different module then use
+ * a proxy.
+ */
+ if (dcd->iff->module != pt->module)
+ dcd = getProxy(pt, dcd);
+
+ /* Create the new ctor. */
+ ct = sipMalloc(sizeof (ctorDef));
+
+ ct->ctorflags = SECT_IS_PUBLIC | CTOR_CAST;
+ ct->cppsig = &ct->pysig;
+ ct->exceptions = NULL;
+ ct->methodcode = NULL;
+ ct->prehook = NULL;
+ ct->posthook = NULL;
+ ct->next = NULL;
+
+ /* Add the source class as the only argument. */
+ ad = &ct->pysig.args[0];
+
+ ad->atype = class_type;
+ ad->name = NULL;
+ ad->argflags = ARG_IN | (al->arg.argflags & (ARG_IS_REF | ARG_IS_CONST));
+ ad->nrderefs = al->arg.nrderefs;
+ ad->defval = NULL;
+ ad->u.cd = cd;
+
+ ifaceFileIsUsed(pt, dcd->iff, ad);
+
+ ct->pysig.nrArgs = 1;
+
+ /* Append it to the list. */
+ for (ctp = &dcd->ctors; *ctp != NULL; ctp = &(*ctp)->next)
+ if (sameSignature(&(*ctp)->pysig, &ct->pysig, FALSE))
+ {
+ fatal("operator ");
+ fatalScopedName(classFQCName(dcd));
+ fatal("::");
+ fatalScopedName(classFQCName(dcd));
+ fatal("(");
+ fatalScopedName(classFQCName(cd));
+ fatal(") already defined\n");
+ }
+
+ *ctp = ct;
+ }
+}
+
+
+/*
+ * If possible, move a global slot to its correct class.
+ */
+static void moveGlobalSlot(sipSpec *pt, memberDef *gmd)
+{
+ overDef **odp = &pt->overs, *od;
+
+ while ((od = *odp) != NULL)
+ {
+ int second;
+ argDef *arg0, *arg1;
+ memberDef *md, **mdhead;
+ overDef **odhead;
+ moduleDef *mod;
+ nameDef *nd;
+
+ if (od->common != gmd)
+ {
+ odp = &od->next;
+ continue;
+ }
+
+ /*
+ * We know that the slot has the right number of arguments, but the
+ * first or second one needs to be a class or enum defined in the same
+ * module. Otherwise we leave it as it is and publish it as a slot
+ * extender.
+ */
+ arg0 = &od->pysig.args[0];
+ arg1 = &od->pysig.args[1];
+
+ second = FALSE;
+ nd = NULL;
+
+ if (arg0->atype == class_type)
+ {
+ mdhead = &arg0->u.cd->members;
+ odhead = &arg0->u.cd->overs;
+ mod = arg0->u.cd->iff->module;
+ }
+ else if (arg0->atype == enum_type)
+ {
+ mdhead = &arg0->u.ed->slots;
+ odhead = &arg0->u.ed->overs;
+ mod = arg0->u.ed->module;
+ nd = arg0->u.ed->pyname;
+ }
+ else if (arg1->atype == class_type)
+ {
+ mdhead = &arg1->u.cd->members;
+ odhead = &arg1->u.cd->overs;
+ mod = arg1->u.cd->iff->module;
+ second = TRUE;
+ }
+ else if (arg1->atype == enum_type)
+ {
+ mdhead = &arg1->u.ed->slots;
+ odhead = &arg1->u.ed->overs;
+ mod = arg1->u.ed->module;
+ nd = arg1->u.ed->pyname;
+ second = TRUE;
+ }
+ else
+ {
+ fatal("One of the arguments of ");
+ prOverloadName(stderr, od);
+ fatal(" must be a class or enum\n");
+ }
+
+ /*
+ * For rich comparisons the first argument must be a class or
+ * an enum. For cross-module slots then it may only be a
+ * class. (This latter limitation is artificial, but is
+ * unlikely to be a problem in practice.)
+ */
+ if (isRichCompareSlot(gmd))
+ {
+ if (second)
+ {
+ fatal("The first argument of ");
+ prOverloadName(stderr, od);
+ fatal(" must be a class or enum\n");
+ }
+
+ if (mod != gmd->module && arg0->atype == enum_type)
+ {
+ fatal("The first argument of ");
+ prOverloadName(stderr, od);
+ fatal(" must be a class\n");
+ }
+ }
+
+ if (mod != gmd->module)
+ {
+ if (isRichCompareSlot(gmd))
+ {
+ classDef *pcd = getProxy(pt, arg0->u.cd);
+ memberDef *pmd;
+ overDef *pod;
+
+ /* Create a new proxy member if needed. */
+ for (pmd = pcd->members; pmd != NULL; pmd = pmd->next)
+ if (pmd->slot == gmd->slot)
+ break;
+
+ if (pmd == NULL)
+ {
+ pmd = sipMalloc(sizeof (memberDef));
+
+ pmd->pyname = gmd->pyname;
+ pmd->memberflags = 0;
+ pmd->slot = gmd->slot;
+ pmd->module = mod;
+ pmd->next = pcd->members;
+
+ pcd->members = pmd;
+ }
+
+ /* Add the proxy overload. */
+ pod = sipMalloc(sizeof (overDef));
+
+ *pod = *od;
+ pod->common = pmd;
+ pod->next = pcd->overs;
+
+ pcd->overs = pod;
+
+ /* Remove the first argument. */
+ pod->pysig.args[0] = pod->pysig.args[1];
+ pod->pysig.nrArgs = 1;
+
+ /* Remove from the list. */
+ *odp = od->next;
+ }
+ else
+ odp = &od->next;
+
+ continue;
+ }
+
+ /* Remove from the list. */
+ *odp = od->next;
+
+ /*
+ * The only time we need the name of an enum is when it has
+ * slots.
+ */
+ if (nd != NULL)
+ setIsUsedName(nd);
+
+ /* See if there is already a member or create a new one. */
+ for (md = *mdhead; md != NULL; md = md->next)
+ if (md->slot == gmd->slot)
+ break;
+
+ if (md == NULL)
+ {
+ md = sipMalloc(sizeof (memberDef));
+
+ *md = *gmd;
+
+ md->module = mod;
+ md->next = *mdhead;
+
+ *mdhead = md;
+ }
+
+ /* Move the overload. */
+ setIsPublic(od);
+ od->common = md;
+ od->next = *odhead;
+
+ *odhead = od;
+
+ /* Remove the first argument of comparison operators. */
+ if (isRichCompareSlot(md))
+ {
+ /* Remember if the argument was a pointer. */
+ if (arg0->nrderefs > 0)
+ setDontDerefSelf(od);
+
+ *arg0 = *arg1;
+ od->pysig.nrArgs = 1;
+ }
+ }
+}
+
+
+/*
+ * Create a proxy for a class if it doesn't already exist. Proxies are used as
+ * containers for cross-module extenders.
+ */
+static classDef *getProxy(sipSpec *pt, classDef *cd)
+{
+ classDef *pcd;
+
+ for (pcd = pt->proxies; pcd != NULL; pcd = pcd->next)
+ if (pcd->iff == cd->iff)
+ return pcd;
+
+ pcd = sipMalloc(sizeof (classDef));
+
+ pcd->classflags = 0;
+ pcd->userflags = 0;
+ pcd->classnr = -1;
+ pcd->pyname = cd->pyname;
+ pcd->iff = cd->iff;
+ pcd->ecd = cd->ecd;
+ pcd->real = cd;
+ pcd->node = NULL;
+ pcd->supers = cd->supers;
+ pcd->mro = cd->mro;
+ pcd->td = NULL;
+ pcd->ctors = NULL;
+ pcd->defctor = NULL;
+ pcd->dealloccode = NULL;
+ pcd->dtorcode = NULL;
+ pcd->dtorexceptions = NULL;
+ pcd->members = NULL;
+ pcd->overs = NULL;
+ pcd->casts = NULL;
+ pcd->vmembers = NULL;
+ pcd->visible = NULL;
+ pcd->cppcode = NULL;
+ pcd->hdrcode = NULL;
+ pcd->convtosubcode = NULL;
+ pcd->subbase = NULL;
+ pcd->convtocode = NULL;
+ pcd->travcode = NULL;
+ pcd->clearcode = NULL;
+ pcd->readbufcode = NULL;
+ pcd->writebufcode = NULL;
+ pcd->segcountcode = NULL;
+ pcd->charbufcode = NULL;
+ pcd->next = pt->proxies;
+
+ pt->proxies = pcd;
+
+ return pcd;
+}
+
+
+/*
+ * Go through the virtual handlers filtering those that can duplicate earlier
+ * ones. Make sure each virtual is numbered within its module, and according
+ * to their position in the list (ignoring duplicates).
+ */
+static void filterVirtualHandlers(moduleDef *mod)
+{
+ virtHandlerDef *vhd;
+
+ for (vhd = mod->virthandlers; vhd != NULL; vhd = vhd->next)
+ {
+ virtHandlerDef *best, *best_thismod, *hd;
+
+ best = best_thismod = NULL;
+
+ /*
+ * If this has handwritten code then we will want to use it.
+ * Otherwise, look for a handler in earlier modules.
+ */
+ if (vhd->virtcode == NULL)
+ {
+ moduleListDef *mld;
+
+ for (mld = mod->allimports; mld != NULL && mld->module != mod; mld = mld->next)
+ {
+ for (hd = mld->module->virthandlers; hd != NULL; hd = hd->next)
+ if (sameVirtualHandler(vhd, hd))
+ {
+ best = hd;
+ break;
+ }
+
+ /*
+ * No need to check later modules as this will either be the
+ * right one, or a duplicate of the right one.
+ */
+ if (best != NULL)
+ break;
+ }
+ }
+
+ /*
+ * Find the best candidate in this module in case we want to give it
+ * our handwritten code.
+ */
+ for (hd = mod->virthandlers; hd != vhd; hd = hd->next)
+ if (sameVirtualHandler(vhd, hd))
+ {
+ best_thismod = hd;
+ break;
+ }
+
+ /*
+ * We don't use this one if it doesn't have virtual code and there is
+ * an alternative, or if it does have virtual code and there is already
+ * an alternative in the same module which doesn't have virtual code.
+ */
+ if ((vhd->virtcode == NULL && (best != NULL || best_thismod != NULL)) ||
+ (vhd->virtcode != NULL && best_thismod != NULL && best_thismod->virtcode == NULL))
+ {
+ virtHandlerDef *saved;
+
+ /*
+ * If the alternative is in the same module and we have virtual
+ * code then give it to the alternative. Note that there is a bug
+ * here. If there are three handlers, the first without code and
+ * the second and third with code then which code is transfered to
+ * the first is down to luck. We should really only transfer code
+ * to methods that are known to be re-implementations - just having
+ * the same signature isn't enough.
+ */
+ if (best_thismod != NULL)
+ {
+ if (best_thismod->virtcode == NULL && vhd->virtcode != NULL)
+ {
+ best_thismod->virtcode = vhd->virtcode;
+ resetIsDuplicateVH(best_thismod);
+ }
+
+ best = best_thismod;
+ }
+
+ /* Use the better one in place of this one. */
+ saved = vhd->next;
+ *vhd = *best;
+ setIsDuplicateVH(vhd);
+ vhd->next = saved;
+ }
+ else
+ vhd->virthandlernr = mod->nrvirthandlers++;
+ }
+}
+
+
+/*
+ * Add an overload that is automatically generated (typically by Qt's moc).
+ */
+static void addAutoOverload(sipSpec *pt,classDef *autocd,overDef *autood)
+{
+ classDef *cd;
+
+ /* Find every class that has this one in its hierarchy. */
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ mroDef *mro;
+
+ if (cd == autocd)
+ continue;
+
+ for (mro = cd -> mro; mro != NULL; mro = mro -> next)
+ if (mro -> cd == autocd)
+ {
+ memberDef *md;
+ overDef *od;
+
+ /* Another overload may already exist. */
+
+ for (md = cd -> members; md != NULL; md = md -> next)
+ if (md -> pyname == autood -> common -> pyname)
+ break;
+
+ if (md == NULL)
+ {
+ md = sipMalloc(sizeof (memberDef));
+
+ md -> pyname = autood -> common -> pyname;
+ md -> memberflags = autood -> common -> memberflags;
+ md -> slot = autood -> common -> slot;
+ md -> module = cd -> iff -> module;
+ md -> next = cd -> members;
+ cd -> members = md;
+ }
+
+ od = sipMalloc(sizeof (overDef));
+
+ *od = *autood;
+ od -> common = md;
+ od -> next = cd -> overs;
+ cd -> overs = od;
+
+ resetIsAutoGen(od);
+
+ if (cd -> iff -> module == pt -> module)
+ setIsUsedName(md -> pyname);
+
+ break;
+ }
+ }
+}
+
+
+/*
+ * Set the complete hierarchy for a class.
+ */
+static void setHierarchy(sipSpec *pt,classDef *base,classDef *cd,
+ classList **head)
+{
+ mroDef **tailp = &cd -> mro;
+
+ /* See if it has already been done. */
+ if (cd -> mro != NULL)
+ return;
+
+ if (cd -> ecd != NULL)
+ setHierarchy(pt,base,cd -> ecd,head);
+
+ if (cd -> iff -> type == class_iface)
+ {
+ classList *cl;
+
+ /* The first thing is itself. */
+ appendToMRO(cd -> mro,&tailp,cd);
+
+ if (cd -> convtosubcode != NULL)
+ cd -> subbase = cd;
+
+ /* Now do it's superclasses. */
+ for (cl = cd -> supers; cl != NULL; cl = cl -> next)
+ {
+ mroDef *mro;
+
+ /*
+ * Make sure the super-class's hierarchy has been done.
+ */
+ setHierarchy(pt,base,cl -> cd,head);
+
+ /* Append the super-classes hierarchy. */
+ for (mro = cl -> cd -> mro; mro != NULL; mro = mro -> next)
+ {
+ appendToMRO(cd -> mro,&tailp,mro -> cd);
+
+ /*
+ * If the super-class is a QObject sub-class then this one is
+ * as well.
+ */
+ if (isQObjectSubClass(mro->cd))
+ setIsQObjectSubClass(cd);
+
+ /*
+ * If the super-class has a shadow then this one should have
+ * one as well.
+ */
+ if (hasShadow(mro->cd))
+ setHasShadow(cd);
+
+ /*
+ * Ensure that the sub-class base class is the furthest up the
+ * hierarchy.
+ */
+ if (mro->cd->subbase != NULL)
+ cd->subbase = mro->cd->subbase;
+ }
+ }
+ }
+
+ /*
+ * We can't have a shadow if the specification is incomplete, there is
+ * a private dtor, there are no none-private ctors or there are private
+ * abstract methods.
+ */
+ if (isIncomplete(cd) || isPrivateDtor(cd) || !canCreate(cd))
+ resetHasShadow(cd);
+ else
+ {
+ overDef *od;
+
+ /*
+ * Note that we should be able to provide better support for
+ * abstract private methods than we do at the moment.
+ */
+ for (od = cd->overs; od != NULL; od = od->next)
+ if (isAbstract(od) && isPrivate(od))
+ {
+ resetHasShadow(cd);
+
+ /*
+ * It also means we cannot create an instance
+ * from Python.
+ */
+ resetCanCreate(cd);
+
+ break;
+ }
+ }
+
+ /* Add it to the new list. */
+ appendToClassList(head,cd);
+}
+
+
+/*
+ * Append a class definition to an mro list
+ */
+static void appendToMRO(mroDef *head,mroDef ***tailp,classDef *cd)
+{
+ mroDef *mro, *new;
+
+ new = sipMalloc(sizeof (mroDef));
+
+ new -> cd = cd;
+ new -> mroflags = 0;
+ new -> next = NULL;
+
+ /* See if it is a duplicate. */
+
+ for (mro = head; mro != NULL; mro = mro -> next)
+ if (mro -> cd == cd)
+ {
+ setIsDuplicateSuper(new);
+
+ if (!isDuplicateSuper(mro))
+ setHasDuplicateSuper(mro);
+
+ break;
+ }
+
+ /* Append to the list and update the tail pointer. */
+ **tailp = new;
+ *tailp = &new -> next;
+}
+
+
+/*
+ * Get the base types for all typedefs.
+ */
+static void transformTypedefs(sipSpec *pt)
+{
+ typedefDef *td;
+
+ for (td = pt -> typedefs; td != NULL; td = td -> next)
+ getBaseType(pt, td->module, td -> ecd, &td -> type);
+}
+
+
+/*
+ * Transform the data types for mapped types based on a template.
+ */
+static void transformMappedTypes(sipSpec *pt)
+{
+ mappedTypeDef *mt;
+
+ for (mt = pt -> mappedtypes; mt != NULL; mt = mt -> next)
+ {
+ /* Nothing to do if this isn't template based. */
+
+ if (mt -> type.atype == template_type)
+ resolveMappedTypeTypes(pt,mt);
+ }
+}
+
+
+/*
+ * Transform the data types for a list of ctors.
+ */
+static void transformCtors(sipSpec *pt, classDef *cd)
+{
+ ctorDef *ct;
+
+ for (ct = cd->ctors; ct != NULL; ct = ct->next)
+ {
+ ctorDef *prev;
+
+ resolveCtorTypes(pt, cd, ct);
+
+ /*
+ * Now check that the Python signature doesn't conflict with an
+ * earlier one.
+ */
+ for (prev = cd->ctors; prev != ct; prev = prev->next)
+ if (samePythonSignature(&prev->pysig, &ct->pysig))
+ {
+ fatalScopedName(classFQCName(cd));
+ fatal(" has ctors with the same Python signature\n");
+ }
+ }
+}
+
+
+/*
+ * Transform the data type for a list of casts.
+ */
+static void transformCasts(sipSpec *pt, classDef *cd)
+{
+ argList *al;
+
+ for (al = cd->casts; al != NULL; al = al->next)
+ {
+ getBaseType(pt, cd->iff->module, cd, &al->arg);
+
+ if (al->arg.atype != class_type)
+ {
+ fatalScopedName(classFQCName(cd));
+ fatal(" operator cast must be to a class\n");
+ }
+ }
+}
+
+
+/*
+ * Add a default copy ctor is required.
+ */
+static void addDefaultCopyCtor(classDef *cd)
+{
+ ctorDef *copyct;
+ mroDef *mro;
+
+ /* See if there is a private copy ctor in the hierarchy. */
+
+ copyct = NULL;
+
+ for (mro = cd -> mro; mro != NULL; mro = mro -> next)
+ {
+ ctorDef *ct;
+
+ if (isDuplicateSuper(mro))
+ continue;
+
+ for (ct = mro -> cd -> ctors; ct != NULL; ct = ct -> next)
+ {
+ argDef *ad = &ct -> pysig.args[0];
+
+ /* See if is a copy ctor. */
+ if (ct -> pysig.nrArgs != 1 || ad -> nrderefs != 0 ||
+ !isReference(ad) || ad -> atype != class_type ||
+ ad -> u.cd != mro -> cd)
+ continue;
+
+ /* Stop now if the copy ctor is private. */
+ if (isPrivateCtor(ct))
+ return;
+
+ /*
+ * Remember if it's in the class we are dealing with.
+ */
+ if (mro == cd -> mro)
+ copyct = ct;
+
+ break;
+ }
+ }
+
+ if (copyct == NULL)
+ {
+ ctorDef **tailp;
+
+ /* Create a default public copy ctor. */
+
+ copyct = sipMalloc(sizeof (ctorDef));
+
+ copyct -> ctorflags = SECT_IS_PUBLIC;
+ copyct -> pysig.nrArgs = 1;
+ copyct -> pysig.args[0].name = "other";
+ copyct -> pysig.args[0].atype = class_type;
+ copyct -> pysig.args[0].u.cd = cd;
+ copyct -> pysig.args[0].argflags = (ARG_IS_REF | ARG_IS_CONST | ARG_IN);
+ copyct -> pysig.args[0].nrderefs = 0;
+ copyct -> pysig.args[0].defval = NULL;
+
+ copyct -> cppsig = &copyct -> pysig;
+ copyct -> exceptions = NULL;
+ copyct -> methodcode = NULL;
+ copyct -> prehook = NULL;
+ copyct -> posthook = NULL;
+ copyct -> next = NULL;
+
+ /* Append it to the list. */
+ for (tailp = &cd -> ctors; *tailp != NULL; tailp = &(*tailp) -> next)
+ ;
+
+ *tailp = copyct;
+ }
+}
+
+
+/*
+ * Transform the data types for a list of overloads.
+ */
+static void transformOverloads(sipSpec *pt, classDef *scope, overDef *overs)
+{
+ overDef *od;
+
+ for (od = overs; od != NULL; od = od -> next)
+ {
+ overDef *prev;
+
+ resolveFuncTypes(pt, od->common->module, scope, od);
+
+ /*
+ * Now check that the Python signature doesn't conflict with an
+ * earlier one.
+ */
+ for (prev = overs; prev != od; prev = prev->next)
+ {
+ if (prev->common != od->common)
+ continue;
+
+ if (samePythonSignature(&prev->pysig, &od->pysig))
+ {
+ if (scope != NULL)
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal("::");
+ }
+
+ fatal("%s() has overloaded functions with the same Python signature\n", od->common->pyname->text);
+ }
+ }
+ }
+}
+
+
+/*
+ * Transform the data types for the variables.
+ */
+static void transformVariableList(sipSpec *pt)
+{
+ varDef *vd;
+
+ for (vd = pt -> vars; vd != NULL; vd = vd -> next)
+ resolveVariableType(pt,vd);
+}
+
+
+/*
+ * Set the list of visible member functions for a class.
+ */
+static void getVisibleMembers(sipSpec *pt,classDef *cd)
+{
+ mroDef *mro;
+
+ cd -> visible = NULL;
+
+ for (mro = cd -> mro; mro != NULL; mro = mro -> next)
+ {
+ memberDef *md;
+ classDef *mrocd;
+
+ if (isDuplicateSuper(mro))
+ continue;
+
+ mrocd = mro -> cd;
+
+ /*
+ * If the base class is in the main module, see if it needs to
+ * publish any protected enums.
+ */
+ if (cd -> iff -> module == pt -> module)
+ {
+ enumDef *ed;
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ {
+ /* Skip unless we are the publisher. */
+ if (ed -> pcd != mrocd)
+ continue;
+
+ /*
+ * If we are not in the main module then the
+ * base class must take over as the publisher.
+ */
+ if (mrocd -> iff -> module != pt -> module)
+ ed -> pcd = cd;
+ }
+ }
+
+ for (md = mrocd -> members; md != NULL; md = md -> next)
+ {
+ visibleList *vl;
+
+ /*
+ * See if it is already in the list. This has the desired side
+ * effect of eliminating any functions that have an implementation
+ * closer to this class in the hierarchy. This is the only reason
+ * to define private functions.
+ */
+ for (vl = cd->visible; vl != NULL; vl = vl->next)
+ if (vl->m->pyname == md->pyname)
+ break;
+
+ /* See if it is a new member function. */
+
+ if (vl == NULL)
+ {
+ overDef *od;
+
+ vl = sipMalloc(sizeof (visibleList));
+
+ vl -> m = md;
+ vl -> cd = mrocd;
+ vl -> next = cd -> visible;
+
+ addToUsedList(&cd->iff->used, mrocd->iff);
+
+ cd -> visible = vl;
+
+ for (od = mrocd -> overs; od != NULL; od = od -> next)
+ if (od -> common == md)
+ {
+ if (isAbstract(od))
+ setIsAbstractClass(cd);
+
+ ifaceFilesAreUsed(pt, cd->iff, od);
+
+ /* See if we need the name. */
+ if (cd->iff->module != pt->module)
+ continue;
+
+ if (isProtected(od) || (isSignal(od) && !optNoEmitters(pt)))
+ setIsUsedName(md->pyname);
+ }
+ }
+ }
+ }
+}
+
+
+/*
+ * Get all the virtuals for a particular class.
+ */
+static void getVirtuals(sipSpec *pt,classDef *cd)
+{
+ mroDef *mro;
+ virtOverDef *vod;
+
+ for (mro = cd -> mro; mro != NULL; mro = mro -> next)
+ {
+ if (isDuplicateSuper(mro))
+ continue;
+
+ getClassVirtuals(cd,mro -> cd);
+ }
+
+ /*
+ * Identify any re-implementations of virtuals. We have to do this for
+ * all classes, not just those in the main module.
+ */
+ for (vod = cd -> vmembers; vod != NULL; vod = vod -> next)
+ {
+ overDef *od;
+
+ for (od = cd->overs; od != NULL; od = od->next)
+ {
+ if (isVirtual(od))
+ continue;
+
+ if (strcmp(vod->o.cppname, od->cppname) == 0 && sameOverload(&vod->o, od))
+ {
+ setIsVirtualReimp(od);
+ break;
+ }
+ }
+
+ /*
+ * If this class is defined in the main module make sure we get
+ * the API files for all the visible virtuals.
+ */
+ if (cd->iff->module == pt->module)
+ {
+ /* Make sure we get the name. */
+ setIsUsedName(vod -> o.common -> pyname);
+
+ ifaceFilesAreUsed(pt, cd->iff, &vod -> o);
+ }
+ }
+}
+
+
+/*
+ * Get the list of visible virtual functions for a class.
+ */
+static void getClassVirtuals(classDef *base,classDef *cd)
+{
+ overDef *od;
+
+ for (od = cd -> overs; od != NULL; od = od -> next)
+ {
+ virtOverDef **tailp, *vod;
+
+ if (!isVirtual(od) || isPrivate(od))
+ continue;
+
+ /*
+ * See if a virtual of this name and signature is already in
+ * the list.
+ */
+ for (tailp = &base -> vmembers; (vod = *tailp) != NULL; tailp = &vod -> next)
+ if (strcmp(vod -> o.cppname,od -> cppname) == 0 && sameOverload(&vod -> o,od))
+ break;
+
+ if (vod == NULL)
+ {
+ /*
+ * See if there is a non-virtual reimplementation
+ * nearer in the class hierarchy.
+ */
+
+ mroDef *mro;
+ classDef *scope = NULL;
+ overDef *eod;
+
+ for (mro = base -> mro; mro -> cd != cd; mro = mro -> next)
+ {
+ if (isDuplicateSuper(mro))
+ continue;
+
+ /*
+ * Ignore classes that are on a different
+ * branch of the class hierarchy.
+ */
+ if (!isSubClass(mro -> cd,cd))
+ continue;
+
+ for (eod = mro -> cd -> overs; eod != NULL; eod = eod -> next)
+ if (strcmp(eod -> cppname,od -> cppname) == 0 && sameSignature(eod -> cppsig,od -> cppsig,TRUE) && isConst(eod) == isConst(od) && !isAbstract(eod))
+ {
+ scope = mro -> cd;
+ break;
+ }
+
+ if (scope != NULL)
+ break;
+ }
+
+ vod = sipMalloc(sizeof (virtOverDef));
+
+ vod -> o = *od;
+ vod -> scope = (scope != NULL ? scope : cd);
+ vod -> next = NULL;
+
+ *tailp = vod;
+
+ /*
+ * If there was a nearer reimplementation then we use
+ * its protection and abstract flags.
+ */
+ if (scope != NULL)
+ {
+ vod -> o.overflags &= ~(SECT_MASK | OVER_IS_ABSTRACT);
+ vod -> o.overflags |= (SECT_MASK | OVER_IS_ABSTRACT) & eod -> overflags;
+ }
+ }
+ }
+}
+
+
+/*
+ * Return TRUE is a class is derived from another.
+ */
+static int isSubClass(classDef *cc,classDef *pc)
+{
+ mroDef *mro;
+
+ /*
+ * In other words, does the parent class appear in the child class's
+ * MRO list.
+ */
+ for (mro = cc -> mro; mro != NULL; mro = mro -> next)
+ if (mro -> cd == pc)
+ return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Resolve the types of a mapped type based on a template.
+ */
+static void resolveMappedTypeTypes(sipSpec *pt,mappedTypeDef *mt)
+{
+ int a;
+ templateDef *td = mt -> type.u.td;
+
+ for (a = 0; a < td -> types.nrArgs; ++a)
+ {
+ getBaseType(pt, mt->iff->module, NULL, &td->types.args[a]);
+
+ ifaceFileIsUsed(pt, mt->iff, &td->types.args[a]);
+ }
+}
+
+
+/*
+ * Resolve the types of a ctor.
+ */
+static void resolveCtorTypes(sipSpec *pt,classDef *scope,ctorDef *ct)
+{
+ int a;
+
+ /* Handle any C++ signature. */
+ if (ct->cppsig != NULL && ct->cppsig != &ct->pysig)
+ for (a = 0; a < ct -> cppsig -> nrArgs; ++a)
+ getBaseType(pt, scope->iff->module, scope, &ct->cppsig->args[a]);
+
+ /* Handle the Python signature. */
+ for (a = 0; a < ct -> pysig.nrArgs; ++a)
+ {
+ argDef *ad = &ct -> pysig.args[a];
+
+ getBaseType(pt, scope->iff->module, scope, ad);
+
+ if (!supportedType(scope,NULL,ad,FALSE) && (ct -> cppsig == &ct -> pysig || ct -> methodcode == NULL))
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal(" unsupported ctor argument type - provide %%MethodCode and a C++ signature\n");
+ }
+
+ ifaceFileIsUsed(pt, scope->iff, ad);
+ scopeDefaultValue(pt,scope,ad);
+ }
+}
+
+
+/*
+ * Resolve the types of a function.
+ */
+static void resolveFuncTypes(sipSpec *pt, moduleDef *mod, classDef *scope, overDef *od)
+{
+ argDef *res;
+
+ /* Handle any C++ signature. */
+ if (od -> cppsig != &od -> pysig)
+ {
+ int a;
+
+ getBaseType(pt,mod, scope, &od->cppsig->result);
+
+ for (a = 0; a < od -> cppsig -> nrArgs; ++a)
+ getBaseType(pt, mod, scope, &od->cppsig->args[a]);
+ }
+
+ /* Handle the Python signature. */
+ resolvePySigTypes(pt, mod, scope, od, &od->pysig,isSignal(od));
+
+ /* These slots must return int. */
+ res = &od -> pysig.result;
+
+ if (isIntReturnSlot(od->common))
+ if (res -> atype != int_type || res -> nrderefs != 0 ||
+ isReference(res) || isConstArg(res))
+ fatal("%s slots must return int\n",od -> common -> pyname -> text);
+
+ /* These slots must return void. */
+ if (isVoidReturnSlot(od -> common))
+ if (res -> atype != void_type || res -> nrderefs != 0 ||
+ isReference(res) || isConstArg(res))
+ fatal("%s slots must return void\n",od -> common -> pyname -> text);
+
+ /* These slots must return long. */
+ if (isLongReturnSlot(od->common))
+ if (res->atype != long_type || res->nrderefs != 0 ||
+ isReference(res) || isConstArg(res))
+ fatal("%s slots must return long\n", od->common->pyname->text);
+}
+
+
+/*
+ * Resolve the types of a Python signature.
+ */
+static void resolvePySigTypes(sipSpec *pt, moduleDef *mod, classDef *scope,
+ overDef *od, signatureDef *pysig, int issignal)
+{
+ int a;
+ argDef *res = &pysig -> result;
+
+ if (res -> atype != void_type || res -> nrderefs != 0)
+ {
+ if (issignal)
+ {
+ if (scope != NULL)
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal("::");
+ }
+
+ fatal("%s() signals must return void\n",od -> cppname);
+ }
+
+ getBaseType(pt, mod, scope, res);
+
+ /* Results must be simple. */
+ if (!supportedType(scope,od,res,FALSE) && (od -> cppsig == &od -> pysig || od -> methodcode == NULL))
+ {
+ if (scope != NULL)
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal("::");
+ }
+
+ fatal("%s() unsupported function return type - provide %%MethodCode and a %s signature\n",od -> cppname,(pt -> genc ? "C" : "C++"));
+ }
+ }
+
+ for (a = 0; a < pysig -> nrArgs; ++a)
+ {
+ argDef *ad = &pysig -> args[a];
+
+ getBaseType(pt, mod, scope, ad);
+
+ if (ad -> atype == slotcon_type)
+ resolvePySigTypes(pt, mod, scope, od, ad->u.sa, TRUE);
+
+ /*
+ * Note signal arguments are restricted in their types because we don't
+ * (yet) support handwritten code for them.
+ */
+ if (issignal)
+ {
+ if (!supportedType(scope,od,ad,FALSE))
+ {
+ if (scope != NULL)
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal("::");
+ }
+
+ fatal("%s() unsupported signal argument type\n");
+ }
+ }
+ else if (!supportedType(scope,od,ad,TRUE) && (od -> cppsig == &od -> pysig || od -> methodcode == NULL || (isVirtual(od) && od -> virthandler -> virtcode == NULL)))
+ {
+ if (scope != NULL)
+ {
+ fatalScopedName(classFQCName(scope));
+ fatal("::");
+ }
+
+ if (isVirtual(od))
+ fatal("%s() unsupported function argument type - provide %%Method code, a valid %%VirtualCatcherCode and a valid C++ signature\n",od -> cppname);
+
+ fatal("%s() unsupported function argument type - provide %%Method code and a valid %s signature\n",od -> cppname,(pt -> genc ? "C" : "C++"));
+ }
+
+ if (scope != NULL)
+ scopeDefaultValue(pt,scope,ad);
+ }
+}
+
+
+/*
+ * Resolve the type of a variable.
+ */
+static void resolveVariableType(sipSpec *pt,varDef *vd)
+{
+ int bad = TRUE;
+ argDef *vtype = &vd -> type;
+
+ getBaseType(pt, vd->module, vd->ecd, vtype);
+
+ switch (vtype -> atype)
+ {
+ case mapped_type:
+ case class_type:
+ /* Class, Class & and Class * are supported. */
+
+ if (vtype -> nrderefs <= 1)
+ bad = FALSE;
+ break;
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ case wstring_type:
+ /*
+ * (signed/unsigned) char, (signed/unsigned) char *, wchar_t, wchar_t *
+ * are supported.
+ */
+
+ if (!isReference(vtype) && vtype -> nrderefs <= 1)
+ bad = FALSE;
+ break;
+
+ case cfloat_type:
+ case float_type:
+ case cdouble_type:
+ case double_type:
+ case enum_type:
+ case bool_type:
+ case cbool_type:
+ case ushort_type:
+ case short_type:
+ case uint_type:
+ case cint_type:
+ case int_type:
+ case ulong_type:
+ case long_type:
+ case ulonglong_type:
+ case longlong_type:
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ /* These are supported without pointers or references. */
+
+ if (!isReference(vtype) && vtype -> nrderefs == 0)
+ bad = FALSE;
+ break;
+
+ case struct_type:
+ case void_type:
+ /* A simple pointer is supported. */
+
+ if (!isReference(vtype) && vtype -> nrderefs == 1)
+ bad = FALSE;
+ break;
+ }
+
+ if (bad)
+ {
+ fatalScopedName(vd -> fqcname);
+ fatal(" has an unsupported type\n");
+ }
+
+ if (vtype -> atype != class_type && vd -> accessfunc != NULL)
+ {
+ fatalScopedName(vd -> fqcname);
+ fatal(" has %%AccessCode but isn't a class instance\n");
+ }
+
+ if (vd -> ecd != NULL)
+ ifaceFileIsUsed(pt, vd->ecd->iff, vtype);
+ else
+ ifaceFileIsUsed(pt, NULL, vtype);
+
+ /*
+ * Instance variables or static class variables (unless they are
+ * constants) need a handler.
+ */
+ if (vd -> ecd != NULL && vd -> accessfunc == NULL &&
+ (!isStaticVar(vd) || vtype -> nrderefs != 0 || !isConstArg(vtype)))
+ {
+ setNeedsHandler(vd);
+ setHasVarHandlers(vd -> ecd);
+ }
+}
+
+
+/*
+ * See if a type is supported by the generated code.
+ */
+static int supportedType(classDef *cd,overDef *od,argDef *ad,int outputs)
+{
+ switch (ad -> atype)
+ {
+ case anyslot_type:
+ /*
+ * This must be an input, and must also have handwritten code.
+ */
+
+ ensureInput(cd,od,ad);
+ return FALSE;
+
+ case signal_type:
+ case slot_type:
+ case rxcon_type:
+ case rxdis_type:
+ case slotcon_type:
+ case slotdis_type:
+ case qobject_type:
+ case ellipsis_type:
+ /* These can only appear in argument lists without * or &. */
+
+ ensureInput(cd,od,ad);
+ return TRUE;
+
+ case sstring_type:
+ case ustring_type:
+ case string_type:
+ case wstring_type:
+ if (isReference(ad))
+ {
+ if (outputs && ad -> nrderefs <= 1)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+ }
+ else if (ad -> nrderefs == 0)
+ {
+ ensureInput(cd,od,ad);
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 1)
+ {
+ if (outputs)
+ defaultInput(ad);
+ else
+ ensureInput(cd,od,ad);
+
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 2 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+
+ break;
+
+ case cfloat_type:
+ case float_type:
+ case cdouble_type:
+ case double_type:
+ case enum_type:
+ case bool_type:
+ case cbool_type:
+ case ushort_type:
+ case short_type:
+ case uint_type:
+ case cint_type:
+ case int_type:
+ case ulong_type:
+ case long_type:
+ case ulonglong_type:
+ case longlong_type:
+ case pyobject_type:
+ case pytuple_type:
+ case pylist_type:
+ case pydict_type:
+ case pycallable_type:
+ case pyslice_type:
+ case pytype_type:
+ if (isReference(ad))
+ {
+ if (ad -> nrderefs == 0 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+ }
+ else if (ad -> nrderefs == 0)
+ {
+ ensureInput(cd,od,ad);
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 1 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+
+ break;
+
+ case mapped_type:
+ case class_type:
+ if (isReference(ad))
+ {
+ if (ad -> nrderefs == 0)
+ {
+ defaultInput(ad);
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 1 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+ }
+ else if (ad -> nrderefs == 0)
+ {
+ ensureInput(cd,od,ad);
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 1)
+ {
+ if (outputs)
+ defaultInput(ad);
+ else
+ ensureInput(cd,od,ad);
+
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 2 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+
+ break;
+
+ case struct_type:
+ case void_type:
+ if (isReference(ad))
+ {
+ if (ad -> nrderefs == 1 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+ }
+ else if (ad -> nrderefs == 1)
+ {
+ ensureInput(cd,od,ad);
+ return TRUE;
+ }
+ else if (ad -> nrderefs == 2 && outputs)
+ {
+ defaultOutput(cd,od,ad);
+ return TRUE;
+ }
+
+ break;
+ }
+
+ /* Unsupported if we got this far. */
+ return FALSE;
+}
+
+
+/*
+ * Ensure the direction of an argument is an input.
+ */
+static void ensureInput(classDef *cd,overDef *od,argDef *ad)
+{
+ if (isOutArg(ad))
+ {
+ if (cd != NULL)
+ {
+ fatalScopedName(classFQCName(cd));
+ fatal("::");
+ }
+
+ if (od != NULL)
+ fatal("%s",od -> cppname);
+
+ fatal("() invalid argument type for /Out/\n");
+ }
+
+ setIsInArg(ad);
+}
+
+
+/*
+ * Default the direction of an argument to an input.
+ */
+static void defaultInput(argDef *ad)
+{
+ if (!isInArg(ad) && !isOutArg(ad))
+ setIsInArg(ad);
+}
+
+
+/*
+ * Default the direction of an argument to an output unless the argument is
+ * const.
+ */
+static void defaultOutput(classDef *cd,overDef *od,argDef *ad)
+{
+ if (isOutArg(ad))
+ {
+ if (isConstArg(ad))
+ {
+ if (cd != NULL)
+ {
+ fatalScopedName(classFQCName(cd));
+ fatal("::");
+ }
+
+ if (od != NULL)
+ fatal("%s",od -> cppname);
+
+ fatal("() const argument cannot have /Out/ specified\n");
+ }
+ }
+ else if (!isInArg(ad))
+ if (isConstArg(ad))
+ setIsInArg(ad);
+ else
+ setIsOutArg(ad);
+}
+
+
+/*
+ * Put a scoped name to stderr.
+ */
+void fatalScopedName(scopedNameDef *snd)
+{
+ while (snd != NULL)
+ {
+ fatal("%s",snd -> name);
+
+ snd = snd -> next;
+
+ if (snd != NULL)
+ fatal("::");
+ }
+}
+
+
+/*
+ * Compare two overloads and return TRUE if they are the same.
+ */
+static int sameOverload(overDef *od1,overDef *od2)
+{
+ /* They must both be const, or both not. */
+ if (isConst(od1) != isConst(od2))
+ return FALSE;
+
+ return sameSignature(&od1 -> pysig,&od2 -> pysig,TRUE);
+}
+
+
+/*
+ * Compare two virtual handlers and return TRUE if they are the same.
+ */
+static int sameVirtualHandler(virtHandlerDef *vhd1,virtHandlerDef *vhd2)
+{
+ if (isTransferVH(vhd1) != isTransferVH(vhd2))
+ return FALSE;
+
+ if (!sameArgType(&vhd1->pysig->result, &vhd2->pysig->result, TRUE))
+ return FALSE;
+
+ if (!sameSignature(vhd1->pysig, vhd2->pysig, TRUE))
+ return FALSE;
+
+ if (vhd1->pysig == vhd1->cppsig && vhd2->pysig == vhd2->cppsig)
+ return TRUE;
+
+ if (!sameArgType(&vhd1->cppsig->result, &vhd2->cppsig->result, TRUE))
+ return FALSE;
+
+ return sameSignature(vhd1->cppsig, vhd2->cppsig, TRUE);
+}
+
+
+/*
+ * Compare two signatures and return TRUE if they are the same.
+ */
+int sameSignature(signatureDef *sd1,signatureDef *sd2,int strict)
+{
+ int a;
+
+ if (strict)
+ {
+ /* The number of arguments must be the same. */
+ if (sd1 -> nrArgs != sd2 -> nrArgs)
+ return FALSE;
+ }
+ else
+ {
+ int na1, na2;
+
+ /* We only count the compulsory arguments. */
+ na1 = 0;
+
+ for (a = 0; a < sd1 -> nrArgs; ++a)
+ {
+ if (sd1 -> args[a].defval != NULL)
+ break;
+
+ ++na1;
+ }
+
+ na2 = 0;
+
+ for (a = 0; a < sd2 -> nrArgs; ++a)
+ {
+ if (sd2 -> args[a].defval != NULL)
+ break;
+
+ ++na2;
+ }
+
+ if (na1 != na2)
+ return FALSE;
+ }
+
+ /* The arguments must be the same. */
+ for (a = 0; a < sd1 -> nrArgs; ++a)
+ {
+ if (!strict && sd1 -> args[a].defval != NULL)
+ break;
+
+ if (!sameArgType(&sd1 -> args[a],&sd2 -> args[a],strict))
+ return FALSE;
+ }
+
+ /* Must be the same if we've got this far. */
+ return TRUE;
+}
+
+
+#define pyAsString(t) ((t) == ustring_type || (t) == sstring_type || \
+ (t) == string_type)
+#define pyAsFloat(t) ((t) == cfloat_type || (t) == float_type || \
+ (t) == cdouble_type || (t) == double_type)
+#define pyAsInt(t) ((t) == cint_type || (t) == bool_type || \
+ (t) == short_type || (t) == ushort_type || \
+ (t) == int_type || (t) == uint_type)
+#define pyAsLong(t) ((t) == long_type || (t) == longlong_type)
+#define pyAsULong(t) ((t) == ulong_type || (t) == ulonglong_type)
+#define pyAsAuto(t) ((t) == bool_type || \
+ (t) == short_type || (t) == ushort_type || \
+ (t) == int_type || (t) == uint_type || \
+ (t) == float_type || (t) == double_type)
+
+/*
+ * Compare two argument types and return TRUE if they are the same. "strict"
+ * means as C++ would see it, rather than Python.
+ */
+static int sameArgType(argDef *a1, argDef *a2, int strict)
+{
+ /* The references must be the same. */
+ if (isReference(a1) != isReference(a2) || a1->nrderefs != a2->nrderefs)
+ return FALSE;
+
+ if (strict)
+ {
+ /* The const should be the same. */
+ if (isConstArg(a1) != isConstArg(a2))
+ return FALSE;
+
+ return sameBaseType(a1,a2);
+ }
+
+ /* Python will see all these as strings. */
+ if (pyAsString(a1->atype) && pyAsString(a2->atype))
+ return TRUE;
+
+ /* Python will see all these as floats. */
+ if (pyAsFloat(a1->atype) && pyAsFloat(a2->atype))
+ return TRUE;
+
+ /* Python will see all these as ints. */
+ if (pyAsInt(a1->atype) && pyAsInt(a2->atype))
+ return TRUE;
+
+ /* Python will see all these as longs. */
+ if (pyAsLong(a1->atype) && pyAsLong(a2->atype))
+ return TRUE;
+
+ /* Python will see all these as unsigned longs. */
+ if (pyAsULong(a1->atype) && pyAsULong(a2->atype))
+ return TRUE;
+
+ /* Python will automatically convert between these. */
+ if (pyAsAuto(a1->atype) && pyAsAuto(a2->atype))
+ return TRUE;
+
+ /* All the special cases have been handled. */
+ return sameBaseType(a1, a2);
+}
+
+
+/*
+ * Compare two basic types and return TRUE if they are the same.
+ */
+
+int sameBaseType(argDef *a1,argDef *a2)
+{
+ /* The types must be the same. */
+
+ if (a1 -> atype != a2 ->atype)
+ return FALSE;
+
+ switch (a1 -> atype)
+ {
+ case class_type:
+ if (a1 -> u.cd != a2 -> u.cd)
+ return FALSE;
+
+ break;
+
+ case enum_type:
+ if (a1 -> u.ed != a2 -> u.ed)
+ return FALSE;
+
+ break;
+
+ case slotcon_type:
+ case slotdis_type:
+ if (!sameSignature(a1 -> u.sa,a2 -> u.sa,TRUE))
+ return FALSE;
+
+ break;
+
+ case template_type:
+ {
+ int a;
+ templateDef *td1, *td2;
+
+ td1 = a1 -> u.td;
+ td2 = a2 -> u.td;
+
+ if (!sameScopedName(td1 -> fqname,td2 -> fqname) != 0 ||
+ td1 -> types.nrArgs != td2 -> types.nrArgs)
+ return FALSE;
+
+ for (a = 0; a < td1 -> types.nrArgs; ++a)
+ if (!sameBaseType(&td1 -> types.args[a],&td2 -> types.args[a]))
+ return FALSE;
+
+ break;
+ }
+
+ case struct_type:
+ if (!sameScopedName(a1 -> u.sname,a2 -> u.sname) != 0)
+ return FALSE;
+
+ break;
+
+ case defined_type:
+ if (!sameScopedName(a1 -> u.snd,a2 -> u.snd))
+ return FALSE;
+
+ break;
+
+ case mapped_type:
+ if (a1 -> u.mtd != a2 -> u.mtd)
+ return FALSE;
+
+ break;
+ }
+
+ /* Must be the same if we've got this far. */
+
+ return TRUE;
+}
+
+
+/*
+ * See if two Python signatures are the same as far as Python is concerned.
+ */
+static int samePythonSignature(signatureDef *sd1, signatureDef *sd2)
+{
+ int a1, a2;
+
+ a1 = a2 = -1;
+
+ for (;;)
+ {
+ a1 = nextSignificantArg(sd1, a1);
+ a2 = nextSignificantArg(sd2, a2);
+
+ if (a1 < 0 || a2 < 0)
+ break;
+
+ if (!sameArgType(&sd1->args[a1], &sd2->args[a2], FALSE))
+ return FALSE;
+ }
+
+ return (a1 < 0 && a2 < 0);
+
+}
+
+
+/*
+ * Return the next significant argument from a Python signature (ie. one that
+ * is not optional or an output only argument. Return -1 if there isn't one.
+ */
+static int nextSignificantArg(signatureDef *sd, int a)
+{
+ while (++a < sd->nrArgs)
+ {
+ if (sd->args[a].defval != NULL)
+ break;
+
+ if (isInArg(&sd->args[a]))
+ return a;
+ }
+
+ return -1;
+}
+
+
+/*
+ * Return TRUE if two scoped names are the same.
+ */
+
+int sameScopedName(scopedNameDef *snd1,scopedNameDef *snd2)
+{
+ while (snd1 != NULL && snd2 != NULL && strcmp(snd1 -> name,snd2 -> name) == 0)
+ {
+ snd1 = snd1 -> next;
+ snd2 = snd2 -> next;
+ }
+
+ return (snd1 == NULL && snd2 == NULL);
+}
+
+
+/*
+ * Add an explicit scope to the default value of an argument if possible.
+ */
+
+static void scopeDefaultValue(sipSpec *pt,classDef *cd,argDef *ad)
+{
+ valueDef *vd, **tailp, *newvd;
+
+ /*
+ * We do a quick check to see if we need to do anything. This means
+ * we can limit the times we need to copy the default value. It needs
+ * to be copied because it will be shared by class versions that have
+ * been created on the fly and it may need to be scoped differently for
+ * each of those versions.
+ */
+
+ for (vd = ad -> defval; vd != NULL; vd = vd -> next)
+ if (vd -> vtype == scoped_value && vd -> u.vscp -> next == NULL)
+ break;
+
+ if (vd == NULL)
+ return;
+
+ /*
+ * It's not certain that we will do anything, but we assume we will and
+ * start copying.
+ */
+
+ newvd = NULL;
+ tailp = &newvd;
+
+ for (vd = ad -> defval; vd != NULL; vd = vd -> next)
+ {
+ mroDef *mro;
+ scopedNameDef *origname;
+ valueDef *new;
+
+ /* Make the copy. */
+
+ new = sipMalloc(sizeof (valueDef));
+
+ *new = *vd;
+ *tailp = new;
+ tailp = &new -> next;
+
+ /*
+ * Skip this part of the expression if it isn't a named value
+ * or it already has a scope.
+ */
+
+ if (vd -> vtype != scoped_value || vd -> u.vscp -> next != NULL)
+ continue;
+
+ /*
+ * Search the class hierarchy for an enum value with the same
+ * name. If we don't find one, leave it as it is (the compiler
+ * will find out if this is a problem).
+ */
+
+ origname = vd -> u.vscp;
+
+ for (mro = cd -> mro; mro != NULL; mro = mro -> next)
+ {
+ enumDef *ed;
+
+ if (isDuplicateSuper(mro))
+ continue;
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ {
+ enumMemberDef *emd;
+
+ if (ed -> ecd != mro -> cd)
+ continue;
+
+ for (emd = ed -> members; emd != NULL; emd = emd -> next)
+ if (strcmp(emd -> cname,origname -> name) == 0)
+ {
+ scopedNameDef *snd;
+
+ /*
+ * Take the scope from the
+ * class that the enum was
+ * defined in.
+ */
+
+ snd = copyScopedName(mro -> cd -> iff -> fqcname);
+ appendScopedName(&snd,origname);
+
+ new -> u.vscp = snd;
+
+ /* Nothing more to do. */
+
+ break;
+ }
+
+ if (emd != NULL)
+ break;
+ }
+
+ if (ed != NULL)
+ break;
+ }
+ }
+
+ ad -> defval = newvd;
+}
+
+
+/*
+ * Make sure a type is a base type.
+ */
+static void getBaseType(sipSpec *pt, moduleDef *mod, classDef *defscope, argDef *type)
+{
+ /* Loop until we've got to a base type. */
+ while (type -> atype == defined_type)
+ {
+ scopedNameDef *snd = type -> u.snd;
+
+ type -> atype = no_type;
+
+ if (defscope != NULL)
+ searchScope(pt,defscope,snd,type);
+
+ if (type -> atype == no_type)
+ searchMappedTypes(pt,snd,type);
+
+ if (type -> atype == no_type)
+ searchTypedefs(pt,snd,type);
+
+ if (type -> atype == no_type)
+ searchEnums(pt,snd,type);
+
+ if (type -> atype == no_type)
+ searchClasses(pt, mod, snd, type);
+
+ if (type -> atype == no_type)
+ fatalNoDefinedType(snd);
+ }
+
+ /* Get the base type of any slot arguments. */
+ if (type -> atype == slotcon_type || type -> atype == slotdis_type)
+ {
+ int sa;
+
+ for (sa = 0; sa < type -> u.sa -> nrArgs; ++sa)
+ getBaseType(pt, mod, defscope, &type->u.sa->args[sa]);
+ }
+
+ /* See if the type refers to an instantiated template. */
+ if (type->atype == template_type)
+ {
+ classDef *cd;
+
+ for (cd = pt->classes; cd != NULL; cd = cd->next)
+ if (cd->td != NULL &&
+ sameScopedName(cd->td->fqname, type->u.td->fqname) &&
+ sameSignature(&cd->td->types, &type->u.td->types, TRUE))
+ {
+ type->atype = class_type;
+ type->u.cd = cd;
+
+ break;
+ }
+ }
+
+ /* Replace the base type if it has been mapped. */
+ if (type -> atype == struct_type || type -> atype == template_type)
+ {
+ searchMappedTypes(pt,NULL,type);
+
+ /*
+ * If we still have a template then see if we need to
+ * automatically instantiate it.
+ */
+ if (type->atype == template_type)
+ {
+ mappedTypeTmplDef *mtt;
+
+ for (mtt = pt->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
+ if (sameScopedName(type->u.td->fqname, mtt->mt->type.u.td->fqname) && sameTemplateSignature(&type->u.td->types, &mtt->mt->type.u.td->types, TRUE))
+ {
+ type->u.mtd = instantiateMappedTypeTemplate(pt, mod, mtt, type);
+ type->atype = mapped_type;
+
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Instantiate a mapped type template and return it.
+ */
+static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type)
+{
+ scopedNameDef *type_names, *type_values;
+ mappedTypeDef *mtd;
+
+ type_names = type_values = NULL;
+ appendTypeStrings(type->u.td->fqname, &mtt->mt->type.u.td->types, &type->u.td->types, &mtt->sig, &type_names, &type_values);
+
+ mtd = allocMappedType(type);
+
+ mtd->iff = findIfaceFile(pt, mod, type->u.td->fqname, mappedtype_iface, type);
+ mtd->iff->module = mod;
+
+ mtd->hdrcode = templateCode(pt, &mtd->iff->used, mtt->mt->hdrcode, type_names, type_values);
+ mtd->convfromcode = templateCode(pt, &mtd->iff->used, mtt->mt->convfromcode, type_names, type_values);
+ mtd->convtocode = templateCode(pt, &mtd->iff->used, mtt->mt->convtocode, type_names, type_values);
+
+ mtd->next = pt->mappedtypes;
+ pt->mappedtypes = mtd;
+
+ if (type_names != NULL)
+ freeScopedName(type_names);
+
+ if (type_values != NULL)
+ freeScopedName(type_values);
+
+ return mtd;
+}
+
+
+/*
+ * Search for a name in a scope and return the corresponding type.
+ */
+
+static void searchScope(sipSpec *pt,classDef *scope,scopedNameDef *snd,
+ argDef *ad)
+{
+ scopedNameDef *tmpsnd = NULL;
+ mroDef *mro;
+
+ for (mro = scope -> mro; mro != NULL; mro = mro -> next)
+ {
+ if (isDuplicateSuper(mro))
+ continue;
+
+ /* Append the name to the scope and see if it exists. */
+
+ tmpsnd = copyScopedName(classFQCName(mro -> cd));
+ appendScopedName(&tmpsnd,copyScopedName(snd));
+
+ searchMappedTypes(pt,tmpsnd,ad);
+
+ if (ad -> atype != no_type)
+ break;
+
+ searchTypedefs(pt,tmpsnd,ad);
+
+ if (ad -> atype != no_type)
+ break;
+
+ searchEnums(pt,tmpsnd,ad);
+
+ if (ad -> atype != no_type)
+ break;
+
+ searchClasses(pt, mro->cd->iff->module, tmpsnd, ad);
+
+ if (ad -> atype != no_type)
+ break;
+
+ freeScopedName(tmpsnd);
+ tmpsnd = NULL;
+ }
+
+ if (tmpsnd != NULL)
+ freeScopedName(tmpsnd);
+}
+
+
+/*
+ * Search the mapped types for a name and return the type.
+ */
+
+static void searchMappedTypes(sipSpec *pt,scopedNameDef *snd,argDef *ad)
+{
+ mappedTypeDef *mtd;
+ scopedNameDef *oname;
+
+ /* Patch back to defined types so we can use sameBaseType(). */
+ if (snd != NULL)
+ {
+ oname = ad -> u.snd;
+ ad -> u.snd = snd;
+ ad -> atype = defined_type;
+ }
+
+ for (mtd = pt -> mappedtypes; mtd != NULL; mtd = mtd -> next)
+ if (sameBaseType(ad,&mtd -> type))
+ {
+ /* Copy the type. */
+ ad -> atype = mapped_type;
+ ad -> u.mtd = mtd;
+
+ return;
+ }
+
+ /* Restore because we didn't find anything. */
+ if (snd != NULL)
+ {
+ ad -> u.snd = oname;
+ ad -> atype = no_type;
+ }
+}
+
+
+/*
+ * Search the typedefs for a name and return the type.
+ */
+
+static void searchTypedefs(sipSpec *pt,scopedNameDef *snd,argDef *ad)
+{
+ typedefDef *td;
+
+ for (td = pt -> typedefs; td != NULL; td = td -> next)
+ if (sameScopedName(td -> fqname,snd))
+ {
+ /* Copy the type. */
+
+ ad -> atype = td -> type.atype;
+ ad -> argflags |= td -> type.argflags;
+ ad -> nrderefs += td -> type.nrderefs;
+ ad -> u = td -> type.u;
+
+ break;
+ }
+}
+
+
+/*
+ * Search the enums for a name and return the type.
+ */
+
+static void searchEnums(sipSpec *pt,scopedNameDef *snd,argDef *ad)
+{
+ enumDef *ed;
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ {
+ if (ed -> fqcname == NULL)
+ continue;
+
+ if (sameScopedName(ed -> fqcname,snd))
+ {
+ ad -> atype = enum_type;
+ ad -> u.ed = ed;
+
+ break;
+ }
+ }
+}
+
+
+/*
+ * Search the classes for one with a particular name and return it as a type.
+ */
+static void searchClasses(sipSpec *pt, moduleDef *mod, scopedNameDef *cname, argDef *ad)
+{
+ classDef *cd;
+
+ for (cd = pt -> classes; cd != NULL; cd = cd -> next)
+ {
+ /*
+ * Ignore an external class unless it was declared in the same
+ * context (ie. module) as the name is being used.
+ */
+ if (isExternal(cd) && cd->iff->module != mod)
+ continue;
+
+ if (sameScopedName(classFQCName(cd), cname))
+ {
+ ad -> atype = class_type;
+ ad -> u.cd = cd;
+
+ break;
+ }
+ }
+}
+
+
+/*
+ * Print an error message describing an undefined type to stderr and terminate.
+ */
+
+static void fatalNoDefinedType(scopedNameDef *snd)
+{
+ fatalScopedName(snd);
+ fatal(" is undefined\n");
+}
+
+
+/*
+ * Make sure all external interface files for all other functions of a module
+ * are used.
+ */
+static void ifaceFilesAreUsedFromOther(sipSpec *pt, signatureDef *sd)
+{
+ int a;
+ ifaceFileDef *iff;
+
+ if ((iff = getIfaceFile(&sd->result)) != NULL && iff->module != pt->module)
+ addToUsedList(&pt->used, iff);
+
+ for (a = 0; a < sd->nrArgs; ++a)
+ if ((iff = getIfaceFile(&sd->args[a])) != NULL && iff->module != pt->module)
+ addToUsedList(&pt->used, iff);
+}
+
+
+/*
+ * Make sure all interface files for all overloads of a method are used.
+ */
+static void ifaceFilesAreUsedByMethod(sipSpec *pt, classDef *cd, memberDef *md)
+{
+ overDef *od;
+
+ for (od = cd -> overs; od != NULL; od = od -> next)
+ if (od -> common == md)
+ ifaceFilesAreUsed(pt, cd->iff, od);
+}
+
+
+/*
+ * Make sure all interface files for a signature are used.
+ */
+static void ifaceFilesAreUsed(sipSpec *pt, ifaceFileDef *iff, overDef *od)
+{
+ int a;
+
+ ifaceFileIsUsed(pt, iff, &od->pysig.result);
+
+ for (a = 0; a < od->pysig.nrArgs; ++a)
+ ifaceFileIsUsed(pt, iff, &od->pysig.args[a]);
+
+ if (od->cppsig != &od->pysig)
+ {
+ ifaceFileIsUsed(pt, iff, &od->cppsig->result);
+
+ for (a = 0; a < od->cppsig->nrArgs; ++a)
+ ifaceFileIsUsed(pt, iff, &od->cppsig->args[a]);
+ }
+}
+
+
+/*
+ * If a type has an interface file then add it to the appropriate list of used
+ * interface files so that the header file is #included in the generated code.
+ */
+static void ifaceFileIsUsed(sipSpec *pt, ifaceFileDef *iff, argDef *ad)
+{
+ ifaceFileDef *usediff;
+
+ if ((usediff = getIfaceFile(ad)) != NULL && usediff != iff)
+ {
+ ifaceFileList *iffl, **used;
+
+ used = (iff != NULL ? &iff->used : &pt->used);
+
+ iffl = addToUsedList(used, usediff);
+
+ /*
+ * If the type is a protected enum then its scoping shadow
+ * class is needed in the generated header file.
+ */
+ if (ad->atype == enum_type && isProtectedEnum(ad->u.ed))
+ iffl->header = TRUE;
+ }
+}
+
+
+/*
+ * Return the interface file for a type, or NULL if it doesn't have one.
+ */
+static ifaceFileDef *getIfaceFile(argDef *ad)
+{
+ ifaceFileDef *iff;
+
+ switch (ad -> atype)
+ {
+ case class_type:
+ iff = ad -> u.cd -> iff;
+ break;
+
+ case mapped_type:
+ iff = ad -> u.mtd -> iff;
+ break;
+
+ case enum_type:
+ if (ad -> u.ed -> fqcname != NULL && ad -> u.ed -> ecd != NULL)
+ {
+ iff = ad -> u.ed -> ecd -> iff;
+ break;
+ }
+
+ /* Drop through. */
+
+ default:
+ iff = NULL;
+ }
+
+ return iff;
+}
+
+
+/*
+ * Position a class so that it is after all its super-classes.
+ */
+static void positionClass(classDef *cd)
+{
+ classList *cl;
+
+ /* See if it has already been done. */
+ if (cd -> node -> ordered)
+ return;
+
+ for (cl = cd -> supers; cl != NULL; cl = cl -> next)
+ {
+ nodeDef **ndp, *nd1, *nd2, *rp;
+
+ /* Ignore super-classes from different modules. */
+ if (cl -> cd -> iff -> module != cd -> iff -> module)
+ continue;
+
+ /* Make sure the super-class is positioned. */
+ positionClass(cl -> cd);
+
+ /*
+ * Find ancestors of the two that are siblings (ie. they have a
+ * common parent).
+ */
+ rp = &cd -> iff -> module -> root;
+
+ for (nd1 = cd -> node; nd1 != rp; nd1 = nd1 -> parent)
+ {
+ for (nd2 = cl -> cd -> node; nd2 != rp; nd2 = nd2 -> parent)
+ if (nd1 -> parent == nd2 -> parent)
+ break;
+
+ if (nd2 != rp)
+ break;
+ }
+
+ /*
+ * The first node must appear after the second in the common
+ * parent's list of children.
+ */
+ for (ndp = &nd1 -> parent -> child; *ndp != NULL; ndp = &(*ndp) -> next)
+ {
+ nodeDef *nd = *ndp;
+
+ if (nd == nd2)
+ break;
+
+ if (nd == nd1)
+ {
+ /* Remove this one from the list. */
+ *ndp = nd -> next;
+
+ /* Find the super-class ancestor. */
+ while (*ndp != nd2)
+ ndp = &(*ndp) -> next;
+
+ /*
+ * Put this one back after the super-class
+ * ancestor.
+ */
+ nd -> next = (*ndp) -> next;
+ (*ndp) -> next = nd;
+
+ break;
+ }
+ }
+ }
+
+ cd -> node -> ordered = TRUE;
+}
+
+
+/*
+ * Make sure a class is in the namespace tree.
+ */
+static void addNodeToParent(nodeDef *root,classDef *cd)
+{
+ nodeDef *nd, *parent;
+
+ /* Skip classes already in the tree. */
+ if (cd -> node != NULL)
+ return;
+
+ /* Add this child to the parent. */
+ nd = sipMalloc(sizeof (nodeDef));
+
+ nd -> ordered = FALSE;
+ nd -> cd = cd;
+ nd -> child = NULL;
+
+ /* Get the address of the parent node. */
+ if (cd -> ecd == NULL)
+ parent = root;
+ else
+ {
+ /* Make sure the parent is in the tree. */
+ addNodeToParent(root,cd -> ecd);
+
+ parent = cd -> ecd -> node;
+ }
+
+ nd -> parent = parent;
+
+ /* Insert this at the head of the parent's children. */
+ nd -> next = parent -> child;
+ parent -> child = nd;
+
+ /* Remember where we are in the tree. */
+ cd -> node = nd;
+}
+
+
+/*
+ * Assign the module specific class number for a class and all it's children.
+ */
+static void assignClassNrs(sipSpec *pt,moduleDef *mod,nodeDef *nd)
+{
+ classDef *cd;
+ nodeDef *cnd;
+
+ /* Assign the class if it's not the root. */
+ if ((cd = nd -> cd) != NULL)
+ {
+ cd -> classnr = mod -> nrclasses++;
+
+ /*
+ * If we find a class defined in the main module called QObject, assume
+ * it's Qt.
+ */
+ if (mod == pt -> module && strcmp(classBaseName(cd),"QObject") == 0)
+ pt -> qobjclass = cd -> classnr;
+ }
+
+ /* Assign all it's children. */
+ for (cnd = nd -> child; cnd != NULL; cnd = cnd -> next)
+ assignClassNrs(pt,mod,cnd);
+}
+
+
+/*
+ * Assign the module specific enum number for all named enums.
+ */
+static void assignEnumNrs(sipSpec *pt)
+{
+ enumDef *ed;
+
+ for (ed = pt -> enums; ed != NULL; ed = ed -> next)
+ if (ed -> fqcname != NULL)
+ ed -> enumnr = ed -> module -> nrenums++;
+}
diff --git a/python/sip/siplib/bool.cpp b/python/sip/siplib/bool.cpp
new file mode 100644
index 00000000..c21a0c79
--- /dev/null
+++ b/python/sip/siplib/bool.cpp
@@ -0,0 +1,19 @@
+// This contains all the C++ code that is needed by the sip module.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of SIP.
+//
+// This copy of SIP is licensed for use under the terms of the SIP License
+// Agreement. See the file LICENSE for more details.
+//
+// SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+// Set a C++ bool for the main C implementation of the module.
+extern "C" void sipSetBool(void *ptr, int val)
+{
+ *reinterpret_cast<bool *>(ptr) = val;
+}
diff --git a/python/sip/siplib/objmap.c b/python/sip/siplib/objmap.c
new file mode 100644
index 00000000..efc7bc2a
--- /dev/null
+++ b/python/sip/siplib/objmap.c
@@ -0,0 +1,264 @@
+/*
+ * This module implements a hash table class for mapping C/C++ addresses to the
+ * corresponding wrapped Python object.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <string.h>
+
+#include "sip.h"
+#include "sipint.h"
+
+
+#define hash_1(k,s) (((unsigned long)(k)) % (s))
+#define hash_2(k,s) ((s) - 2 - (hash_1((k),(s)) % ((s) - 2)))
+
+
+/* Prime numbers to use as hash table sizes. */
+static unsigned long hash_primes[] = {
+ 521, 1031, 2053, 4099,
+ 8209, 16411, 32771, 65537, 131101, 262147,
+ 524309, 1048583, 2097169, 4194319, 8388617, 16777259,
+ 33554467, 67108879, 134217757, 268435459, 536870923, 1073741827,
+ 2147483659U,0
+};
+
+
+static sipHashEntry *newHashTable(unsigned long);
+static sipHashEntry *findHashEntry(sipObjectMap *,void *);
+static void reorganiseMap(sipObjectMap *om);
+
+
+/*
+ * Initialise an object map.
+ */
+void sipOMInit(sipObjectMap *om)
+{
+ om -> primeIdx = 0;
+ om -> unused = om -> size = hash_primes[om -> primeIdx];
+ om -> stale = 0;
+ om -> hash_array = newHashTable(om -> size);
+}
+
+
+/*
+ * Finalise an object map.
+ */
+void sipOMFinalise(sipObjectMap *om)
+{
+ sip_api_free(om -> hash_array);
+}
+
+
+/*
+ * Allocate and initialise a new hash table.
+ */
+static sipHashEntry *newHashTable(unsigned long size)
+{
+ size_t nbytes;
+ sipHashEntry *hashtab;
+
+ nbytes = sizeof (sipHashEntry) * size;
+
+ if ((hashtab = (sipHashEntry *)sip_api_malloc(nbytes)) != NULL)
+ memset(hashtab,0,nbytes);
+
+ return hashtab;
+}
+
+
+/*
+ * Return a pointer to the hash entry that is used, or should be used, for the
+ * given C/C++ address.
+ */
+static sipHashEntry *findHashEntry(sipObjectMap *om,void *key)
+{
+ unsigned long hash, inc;
+ void *hek;
+
+ hash = hash_1(key,om -> size);
+ inc = hash_2(key,om -> size);
+
+ while ((hek = om -> hash_array[hash].key) != NULL && hek != key)
+ hash = (hash + inc) % om -> size;
+
+ return &om -> hash_array[hash];
+}
+
+
+/*
+ * Return the wrapped Python object of a specific type for a C/C++ address or
+ * NULL if it wasn't found.
+ */
+sipWrapper *sipOMFindObject(sipObjectMap *om,void *key, sipWrapperType *type)
+{
+ sipHashEntry *he = findHashEntry(om, key);
+ sipWrapper *w;
+
+ /* Go through each wrapped object at this address. */
+ for (w = he->first; w != NULL; w = w->next)
+ {
+ /*
+ * If this wrapped object is of the given type, or a sub-type
+ * of it, or vice versa, then we assume it is the same C++
+ * object.
+ */
+ if (PyObject_TypeCheck(w, (PyTypeObject *)type) ||
+ PyType_IsSubtype((PyTypeObject *)type, w->ob_type))
+ return w;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Add a C/C++ address and the corresponding wrapped Python object to the map.
+ */
+void sipOMAddObject(sipObjectMap *om,sipWrapper *val)
+{
+ sipHashEntry *he = findHashEntry(om,val -> u.cppPtr);
+
+ /*
+ * If the bucket is in use then we appear to have several objects at
+ * the same address.
+ */
+ if (he -> first != NULL)
+ {
+ /*
+ * This can happen for three reasons. A variable of one class
+ * can be declared at the start of another class. Therefore
+ * there are two objects, of different classes, with the same
+ * address. The second reason is that the old C/C++ object has
+ * been deleted by C/C++ but we didn't get to find out for some
+ * reason, and a new C/C++ instance has been created at the
+ * same address. The third reason is if we are in the process
+ * of deleting a Python object but the C++ object gets wrapped
+ * again because the C++ dtor called a method that has been
+ * re-implemented in Python. The absence of the SIP_SHARE_MAP
+ * flag tells us that a new C++ instance has just been created
+ * and so we know the second reason is the correct one so we
+ * mark the old pointers as invalid and reuse the entry.
+ * Otherwise we just add this one to the existing list of
+ * objects at this address.
+ */
+ if (!(val -> flags & SIP_SHARE_MAP))
+ {
+ sipWrapper *w;
+
+ for (w = he -> first; w != NULL; w = w -> next)
+ w -> u.cppPtr = NULL;
+
+ he -> first = NULL;
+ }
+
+ val -> next = he -> first;
+ he -> first = val;
+
+ return;
+ }
+
+ /* See if the bucket was unused or stale. */
+ if (he -> key == NULL)
+ {
+ he -> key = val -> u.cppPtr;
+ om -> unused--;
+ }
+ else
+ om -> stale--;
+
+ /* Add the rest of the new value. */
+ he -> first = val;
+ val -> next = NULL;
+
+ reorganiseMap(om);
+}
+
+
+/*
+ * Reorganise a map if it is running short of space.
+ */
+static void reorganiseMap(sipObjectMap *om)
+{
+ unsigned long old_size, i;
+ sipHashEntry *ohe, *old_tab;
+
+ /* Don't bother if it still has more than 12% available. */
+ if (om -> unused > om -> size >> 3)
+ return;
+
+ /*
+ * If reorganising (ie. making the stale buckets unused) using the same
+ * sized table would make 25% available then do that. Otherwise use a
+ * bigger table (if possible).
+ */
+ if (om -> unused + om -> stale < om -> size >> 2 && hash_primes[om -> primeIdx + 1] != 0)
+ om -> primeIdx++;
+
+ old_size = om -> size;
+ old_tab = om -> hash_array;
+
+ om -> unused = om -> size = hash_primes[om -> primeIdx];
+ om -> stale = 0;
+ om -> hash_array = newHashTable(om -> size);
+
+ /* Transfer the entries from the old table to the new one. */
+ ohe = old_tab;
+
+ for (i = 0; i < old_size; ++i)
+ {
+ if (ohe -> key != NULL && ohe -> first != NULL)
+ {
+ *findHashEntry(om,ohe -> key) = *ohe;
+ om -> unused--;
+ }
+
+ ++ohe;
+ }
+
+ sip_api_free(old_tab);
+}
+
+
+/*
+ * Remove a C/C++ object from the table. Return 0 if it was removed
+ * successfully.
+ */
+int sipOMRemoveObject(sipObjectMap *om,sipWrapper *val)
+{
+ sipHashEntry *he = findHashEntry(om,val -> u.cppPtr);
+ sipWrapper **wp;
+
+ for (wp = &he -> first; *wp != NULL; wp = &(*wp) -> next)
+ if (*wp == val)
+ {
+ *wp = val -> next;
+
+ /*
+ * If the bucket is now empty then count it as stale.
+ * Note that we do not NULL the key and count it as
+ * unused because that might throw out the search for
+ * another entry that wanted to go here, found it
+ * already occupied, and was put somewhere else. In
+ * other words, searches must be repeatable until we
+ * reorganise the table.
+ */
+ if (he -> first == NULL)
+ om -> stale++;
+
+ return 0;
+ }
+
+ return -1;
+}
diff --git a/python/sip/siplib/qtlib.c b/python/sip/siplib/qtlib.c
new file mode 100644
index 00000000..da7637f1
--- /dev/null
+++ b/python/sip/siplib/qtlib.c
@@ -0,0 +1,1254 @@
+/*
+ * The SIP library code that implements the interface to the optional module
+ * supplied Qt support.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <Python.h>
+#include <string.h>
+
+#include "sip.h"
+#include "sipint.h"
+
+
+/* This is how Qt "types" signals and slots. */
+#define isQtSlot(s) (*(s) == '1')
+#define isQtSignal(s) (*(s) == '2')
+
+
+static PyObject *py_sender = NULL; /* The last Python signal sender. */
+
+
+static int isSameSlot(sipSlot *,PyObject *,const char *);
+static int emitQtSig(sipWrapper *,const char *,PyObject *);
+static int emitToSlotList(sipSlotList *rxlist, PyObject *sigargs);
+static int addSlotToPySigList(sipWrapper *,const char *,PyObject *,const char *);
+static void removeSlotFromPySigList(sipWrapper *,const char *,PyObject *,const char *);
+static PyObject *getWeakRef(PyObject *obj);
+static sipPySig *findPySignal(sipWrapper *,const char *);
+static char *sipStrdup(const char *);
+static int saveSlot(sipSlot *sp, PyObject *rxObj, const char *slot);
+static void *createUniversalSlot(sipWrapper *txSelf, const char *sig, PyObject *rxObj, const char *slot, const char **member);
+static void *findSignal(void *txrx, const char **sig);
+static void *newSignal(void *txrx, const char **sig);
+static void freeSlot(sipSlot *slot);
+
+
+/*
+ * Return the most recent signal sender.
+ */
+PyObject *sip_api_get_sender()
+{
+ PyObject *sender;
+ const void *qt_sender;
+
+ /*
+ * If there is a Qt sender then it is more recent than the last Python
+ * sender, so use it instead.
+ */
+ if ((qt_sender = sipQtSupport->qt_get_sender()) != NULL)
+ sender = sip_api_convert_from_instance((void *)qt_sender, sipQObjectClass, NULL);
+ else
+ {
+ if ((sender = py_sender) == NULL)
+ sender = Py_None;
+
+ Py_INCREF(sender);
+ }
+
+ return sender;
+}
+
+
+/*
+ * Release the resources held by a connection.
+ */
+void sip_api_free_connection(sipSlotConnection *conn)
+{
+ freeSlot(&conn->sc_slot);
+}
+
+
+/*
+ * Compare two connections and return TRUE if they are the same.
+ */
+int sip_api_same_connection(sipSlotConnection *conn, void *tx, const char *sig,
+ PyObject *rxObj, const char *slot)
+{
+ return (conn->sc_transmitter == tx &&
+ sipQtSupport->qt_same_name(conn->sc_signature->sg_signature, sig) &&
+ isSameSlot(&conn->sc_slot, rxObj, slot));
+}
+
+
+/*
+ * Parse the signal arguments for a connection.
+ */
+sipSignature *sip_api_parse_signature(const char *sig)
+{
+ static sipSignature *psig_list = NULL;
+ sipSignature *psig;
+ const char *sp, *ep;
+
+ /*
+ * First see if it has already been parsed. Note that both sides of a
+ * connection will probably be parsed twice because the function names will
+ * be different even though the signatures will probably be the same. We
+ * could be more clever, the most saving is when repeatedly emitting a
+ * signal for which this is sufficient.
+ */
+ for (psig = psig_list; psig != NULL; psig = psig->sg_next)
+ if (sipQtSupport->qt_same_name(psig->sg_signature, sig))
+ return psig;
+
+ /* Create a new one including space for the copy of the signature. */
+ if ((psig = (sipSignature *)sip_api_malloc(sizeof (sipSignature) + strlen(sig) + 1)) == NULL)
+ return NULL;
+
+ psig->sg_signature = (char *)&psig[1];
+ psig->sg_nrargs = 0;
+ psig->sg_args = 0;
+
+ /* Find the start and end of the arguments. */
+ sp = strchr(sig, '(');
+ ep = strrchr(sig, ')');
+
+ /* If the signal isn't well formed we assume Qt will pick it up. */
+ if (sp && ep && sp < ep)
+ {
+ /*
+ * Copy the signature arguments while counting them and
+ * removing non-significant spaces. Each argument is left as a
+ * '\0' terminated string.
+ */
+ char *dp = psig->sg_signature;
+ int depth = 0, nrcommas = 0, argstart = TRUE;
+
+ for (;;)
+ {
+ char ch = *++sp;
+
+ if (strchr(",*&)<>", ch))
+ {
+ /* Backup over any previous trailing space. */
+ if (dp > psig->sg_signature && dp[-1] == ' ')
+ --dp;
+
+ if (sp == ep)
+ {
+ *dp = '\0';
+ break;
+ }
+
+ if (ch == ',' && depth == 0)
+ {
+ *dp++ = '\0';
+ ++nrcommas;
+ argstart = TRUE;
+ }
+ else
+ {
+ *dp++ = ch;
+
+ /*
+ * Make sure commas in template
+ * arguments are ignored.
+ */
+ if (ch == '<')
+ ++depth;
+ else if (ch == '>')
+ --depth;
+ }
+ }
+ else if (ch == ' ')
+ {
+ /* Ignore leading and multiple spaces. */
+ if (!argstart && dp[-1] != ' ')
+ *dp++ = ch;
+ }
+ else
+ {
+ *dp++ = ch;
+ argstart = FALSE;
+ }
+ }
+
+ /* Handle the arguments now they are in a normal form. */
+ if (*psig->sg_signature)
+ {
+ char *arg = psig->sg_signature;
+ int a;
+
+ /* Allocate the space. */
+ psig->sg_nrargs = nrcommas + 1;
+
+ if ((psig->sg_args = (sipSigArg *)sip_api_malloc(sizeof (sipSigArg) * psig->sg_nrargs)) == NULL)
+ {
+ sip_api_free(psig);
+ return NULL;
+ }
+
+ for (a = 0; a < psig->sg_nrargs; ++a)
+ {
+ size_t btlen = 0;
+ int unsup, isref = FALSE, indir = 0;
+ sipSigArgType sat = unknown_sat;
+
+ /* Find the start of the significant part of the type. */
+ dp = arg;
+
+ if (strncmp(dp, "const ", 6) == 0)
+ dp += 6;
+
+ /*
+ * Find the length of the base type, the number of indirections
+ * and if it is a reference.
+ */
+ for (ep = dp; *ep; ++ep)
+ if (*ep == '&')
+ isref = TRUE;
+ else if (*ep == '*')
+ ++indir;
+ else
+ ++btlen;
+
+ /*
+ * Assume that anything other than a base type is unsupported.
+ */
+ unsup = (isref || indir);
+
+ /* Parse the base type. */
+ switch (btlen)
+ {
+ case 3:
+ if (strncmp(dp, "int", 3) == 0)
+ sat = int_sat;
+ break;
+
+ case 4:
+ if (strncmp(dp, "bool", 4) == 0)
+ sat = bool_sat;
+ else if (strncmp(dp, "long", 4) == 0)
+ sat = long_sat;
+ else if (strncmp(dp, "char", 4) == 0)
+ {
+ sat = (indir ? string_sat : char_sat);
+ unsup = (isref || indir > 1);
+ }
+ else if (strncmp(dp, "void", 4) == 0)
+ {
+ sat = void_sat;
+ unsup = (isref || indir != 1);
+ }
+ break;
+
+ case 5:
+ if (strncmp(dp, "float", 5) == 0)
+ sat = float_sat;
+ else if (strncmp(dp, "short", 5) == 0)
+ sat = short_sat;
+ break;
+
+ case 6:
+ if (strncmp(dp, "double", 6) == 0)
+ sat = double_sat;
+ break;
+
+ case 7:
+ if (strncmp(dp, "__int64", 7) == 0)
+ sat = longlong_sat;
+ else if (strncmp(dp, "wchar_t", 7) == 0)
+ {
+ sat = (indir ? wstring_sat : wchar_sat);
+ unsup = (isref || indir > 1);
+ }
+ break;
+
+ case 8:
+ if (strncmp(dp, "unsigned", 8) == 0)
+ sat = uint_sat;
+ else if (strncmp(dp, "QVariant", 8) == 0)
+ {
+ if (indir == 0)
+ {
+ sat = qvariant_sat;
+ unsup = FALSE;
+ }
+ else if (indir == 1)
+ {
+ sat = qvariantp_sat;
+ unsup = FALSE;
+ }
+ }
+ break;
+
+ case 9:
+ if (strncmp(dp, "long long", 9) == 0)
+ sat = longlong_sat;
+ break;
+
+ case 11:
+ if (strncmp(dp, "signed char", 11) == 0)
+ {
+ sat = (indir ? sstring_sat : schar_sat);
+ unsup = (isref || indir > 1);
+ }
+ break;
+
+ case 12:
+ if (strncmp(dp, "unsigned int", 12) == 0)
+ sat = uint_sat;
+ break;
+
+ case 13:
+ if (strncmp(dp, "unsigned long", 13) == 0)
+ sat = ulong_sat;
+ else if (strncmp(dp, "unsigned char", 13) == 0)
+ {
+ sat = (indir ? ustring_sat : uchar_sat);
+ unsup = (isref || indir > 1);
+ }
+ else if (strncmp(dp, "PyQt_PyObject", 13) == 0 && indir == 0)
+ {
+ sat = pyobject_sat;
+ unsup = FALSE;
+ }
+ break;
+
+ case 14:
+ if (strncmp(dp, "unsigned short", 14) == 0)
+ sat = ushort_sat;
+ break;
+
+ case 16:
+ if (strncmp(dp, "unsigned __int64", 16) == 0)
+ sat = ulonglong_sat;
+ break;
+
+ case 18:
+ if (strncmp(dp, "unsigned long long", 18) == 0)
+ sat = ulonglong_sat;
+ break;
+ }
+
+ if (sat == unknown_sat)
+ sipFindSigArgType(dp, btlen, &psig->sg_args[a], indir);
+ else
+ {
+ if (unsup)
+ sat = unknown_sat;
+
+ psig->sg_args[a].atype = sat;
+ }
+
+ /* Move to the start of the next argument. */
+ arg += strlen(arg) + 1;
+ }
+ }
+ }
+
+ /* Make a deep copy of the signal. */
+ strcpy(psig->sg_signature, sig);
+
+ /* Add it to the list so it can be re-used. */
+ psig->sg_next = psig_list;
+ psig_list = psig;
+
+ return psig;
+}
+
+
+/*
+ * Find an existing signal.
+ */
+static void *findSignal(void *txrx, const char **sig)
+{
+ sipSignature *psig;
+
+ /*
+ * Handle the trivial case where the Qt implementation doesn't support
+ * universal signals.
+ */
+ if (sipQtSupport->qt_is_qt_signal == NULL)
+ return txrx;
+
+ /* See if this a shortcircuited Python signal. */
+ if (strchr(*sig, '(') == NULL)
+ return sipQtSupport->qt_find_universal_signal_shortcut(txrx, *sig, sig);
+
+ /* See if the existing object can be used itself. */
+ if (sipQtSupport->qt_is_qt_signal(txrx, *sig))
+ return txrx;
+
+ if ((psig = sip_api_parse_signature(*sig)) == NULL)
+ return NULL;
+
+ /* Find an ordinary universal signal. */
+ return sipQtSupport->qt_find_universal_signal(txrx, psig);
+}
+
+
+/*
+ * Return a usable signal, creating a new universal signal if needed.
+ */
+static void *newSignal(void *txrx, const char **sig)
+{
+ sipSignature *psig;
+
+ /*
+ * Handle the trivial case where the Qt implementation doesn't support
+ * universal signals.
+ */
+ if (sipQtSupport->qt_is_qt_signal == NULL)
+ return txrx;
+
+ /* See if this a shortcircuited Python signal. */
+ if (strchr(*sig, '(') == NULL)
+ return sipQtSupport->qt_create_universal_signal_shortcut(txrx, *sig, sig);
+
+ /* See if the existing object can be used itself. */
+ if (sipQtSupport->qt_is_qt_signal(txrx, *sig))
+ return txrx;
+
+ if ((psig = sip_api_parse_signature(*sig)) == NULL)
+ return NULL;
+
+ /* Create an ordinary universal signal. */
+ return sipQtSupport->qt_create_universal_signal(txrx, psig);
+}
+
+
+/*
+ * Create a universal slot. Returns a pointer to it or 0 if there was an
+ * error.
+ */
+static void *createUniversalSlot(sipWrapper *txSelf, const char *sig,
+ PyObject *rxObj, const char *slot,
+ const char **member)
+{
+ sipSlotConnection conn;
+ void *us;
+
+ /* Initialise the connection. */
+ conn.sc_transmitter = (txSelf ? sipGetAddress(txSelf) : 0);
+
+ /* Save the real slot. */
+ if (saveSlot(&conn.sc_slot, rxObj, slot) < 0)
+ return 0;
+
+ /* Parse the signature and create the universal slot. */
+ if ((conn.sc_signature = sip_api_parse_signature(sig)) == NULL || (us = sipQtSupport->qt_create_universal_slot(txSelf, &conn, member)) == NULL)
+ {
+ sip_api_free_connection(&conn);
+ return 0;
+ }
+
+ return us;
+}
+
+
+/*
+ * Emit a Python or Qt signal.
+ */
+int sip_api_emit_signal(PyObject *self,const char *sig,PyObject *sigargs)
+{
+ sipPySig *ps;
+ void *tx;
+ sipWrapper *w = (sipWrapper *)self;
+
+ /*
+ * Don't do anything if signals are blocked. Qt signals would be blocked
+ * anyway, but this blocks Python signals as well.
+ */
+ if ((tx = sip_api_get_cpp_ptr(w, sipQObjectClass)) == NULL || sipQtSupport->qt_signals_blocked(tx))
+ return 0;
+
+ if (isQtSignal(sig))
+ {
+ sipSignature *psig;
+
+ /* Handle Qt implementations that emit using generated code. */
+ if (!sipQtSupport->qt_emit_signal)
+ return emitQtSig(w, sig, sigargs);
+
+ /* See if the signal is a shortcut. */
+ if (strchr(sig, '(') == NULL)
+ return sipQtSupport->qt_emit_signal_shortcut(tx, sig, sigargs);
+
+ if ((psig = sip_api_parse_signature(sig)) == NULL)
+ return -1;
+
+ if (psig->sg_nrargs != PyTuple_GET_SIZE(sigargs))
+ PyErr_Format(PyExc_TypeError, "Signal has %d arguments, but %d given", psig->sg_nrargs, PyTuple_GET_SIZE(sigargs));
+
+ return sipQtSupport->qt_emit_signal(tx, psig, sigargs);
+ }
+
+ if ((ps = findPySignal(w,sig)) != NULL)
+ {
+ int rc;
+
+ /* Forget the last Qt sender and remember this one. */
+ sipQtSupport->qt_forget_sender();
+ py_sender = self;
+
+ rc = emitToSlotList(ps -> rxlist,sigargs);
+
+ /* Forget this as a sender. */
+ py_sender = NULL;
+
+ return rc;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Search the Python signal list for a signal.
+ */
+static sipPySig *findPySignal(sipWrapper *w,const char *sig)
+{
+ sipPySig *ps;
+
+ for (ps = w -> pySigList; ps != NULL; ps = ps -> next)
+ if (sipQtSupport->qt_same_name(ps -> name,sig))
+ return ps;
+
+ return NULL;
+}
+
+
+/*
+ * Search a signal table for a signal. If found, call the emitter function
+ * with the signal arguments. Return 0 if the signal was emitted or <0 if
+ * there was an error.
+ */
+static int emitQtSig(sipWrapper *w,const char *sig,PyObject *sigargs)
+{
+ sipQtSignal *tab;
+
+ /* Search the table. */
+ for (tab = ((sipWrapperType *)(w -> ob_type)) -> type -> td_emit; tab -> st_name != NULL; ++tab)
+ {
+ const char *sp, *tp;
+ int found;
+
+ /* Compare only the base name. */
+ sp = &sig[1];
+ tp = tab -> st_name;
+
+ found = TRUE;
+
+ while (*sp != '\0' && *sp != '(' && *tp != '\0')
+ if (*sp++ != *tp++)
+ {
+ found = FALSE;
+ break;
+ }
+
+ if (found)
+ return (*tab -> st_emitfunc)(w,sigargs);
+ }
+
+ /* It wasn't found if we got this far. */
+ PyErr_Format(PyExc_NameError,"Invalid signal %s",&sig[1]);
+
+ return -1;
+}
+
+
+/*
+ * Send a signal to a single slot (Qt or Python).
+ */
+int sip_api_emit_to_slot(sipSlot *slot, PyObject *sigargs)
+{
+ PyObject *sa, *oxtype, *oxvalue, *oxtb, *sfunc, *newmeth, *sref;
+
+ /* Keep some compilers quiet. */
+ oxtype = oxvalue = oxtb = NULL;
+
+ /* Fan out Qt signals. */
+ if (slot -> name != NULL && slot -> name[0] != '\0')
+ return sip_api_emit_signal(slot -> pyobj,slot -> name,sigargs);
+
+ /* Get the object to call, resolving any weak references. */
+ if (slot -> weakSlot == NULL)
+ sref = NULL;
+ else if ((sref = PyWeakref_GetObject(slot -> weakSlot)) == NULL)
+ return -1;
+ else
+ Py_INCREF(sref);
+
+ if (sref == Py_None)
+ {
+ /*
+ * If the real object has gone then we pretend everything is Ok. This
+ * mimics the Qt behaviour of not caring if a receiving object has been
+ * deleted.
+ */
+ Py_DECREF(sref);
+ return 0;
+ }
+
+ if (slot -> pyobj == NULL)
+ {
+ PyObject *self = (sref != NULL ? sref : slot->meth.mself);
+
+ /* See if any underlying C++ instance has gone. */
+ if (self != NULL && sip_api_wrapper_check(self) && ((sipWrapper *)self)->u.cppPtr == NULL)
+ {
+ Py_XDECREF(sref);
+ return 0;
+ }
+
+ if ((sfunc = PyMethod_New(slot->meth.mfunc, self, slot->meth.mclass)) == NULL)
+ {
+ Py_XDECREF(sref);
+ return -1;
+ }
+
+ /* Make sure we garbage collect the new method. */
+ newmeth = sfunc;
+ }
+ else if (slot -> name != NULL)
+ {
+ char *mname = slot -> name + 1;
+ PyObject *self = (sref != NULL ? sref : slot->pyobj);
+
+ /* See if any underlying C++ instance has gone. */
+ if (self != NULL && sip_api_wrapper_check(self) && ((sipWrapper *)self)->u.cppPtr == NULL)
+ {
+ Py_XDECREF(sref);
+ return 0;
+ }
+
+ if ((sfunc = PyObject_GetAttrString(self, mname)) == NULL || !PyCFunction_Check(sfunc))
+ {
+ /*
+ * Note that in earlier versions of SIP this error would be
+ * detected when the slot was connected.
+ */
+ PyErr_Format(PyExc_NameError,"Invalid slot %s",mname);
+
+ Py_XDECREF(sref);
+ return -1;
+ }
+
+ /* Make sure we garbage collect the new method. */
+ newmeth = sfunc;
+ }
+ else if (slot->pyobj == Py_None)
+ {
+ /*
+ * This was a lambda function that has been freed by the cyclic garbage
+ * collector so ignore it.
+ */
+ Py_XDECREF(sref);
+ return 0;
+ }
+ else
+ {
+ sfunc = slot -> pyobj;
+ newmeth = NULL;
+ }
+
+ /*
+ * We make repeated attempts to call a slot. If we work out that it failed
+ * because of an immediate type error we try again with one less argument.
+ * We keep going until we run out of arguments to drop. This emulates the
+ * Qt ability of the slot to accept fewer arguments than a signal provides.
+ */
+ sa = sigargs;
+ Py_INCREF(sa);
+
+ for (;;)
+ {
+ PyObject *nsa, *xtype, *xvalue, *xtb, *resobj;
+
+ if ((resobj = PyEval_CallObject(sfunc,sa)) != NULL)
+ {
+ Py_DECREF(resobj);
+
+ Py_XDECREF(newmeth);
+ Py_XDECREF(sref);
+
+ /* Remove any previous exception. */
+
+ if (sa != sigargs)
+ {
+ Py_XDECREF(oxtype);
+ Py_XDECREF(oxvalue);
+ Py_XDECREF(oxtb);
+ PyErr_Clear();
+ }
+
+ Py_DECREF(sa);
+
+ return 0;
+ }
+
+ /* Get the exception. */
+ PyErr_Fetch(&xtype,&xvalue,&xtb);
+
+ /*
+ * See if it is unacceptable. An acceptable failure is a type error
+ * with no traceback - so long as we can still reduce the number of
+ * arguments and try again.
+ */
+ if (!PyErr_GivenExceptionMatches(xtype,PyExc_TypeError) ||
+ xtb != NULL ||
+ PyTuple_GET_SIZE(sa) == 0)
+ {
+ /*
+ * If there is a traceback then we must have called the slot and
+ * the exception was later on - so report the exception as is.
+ */
+ if (xtb != NULL)
+ {
+ if (sa != sigargs)
+ {
+ Py_XDECREF(oxtype);
+ Py_XDECREF(oxvalue);
+ Py_XDECREF(oxtb);
+ }
+
+ PyErr_Restore(xtype,xvalue,xtb);
+ }
+ else if (sa == sigargs)
+ PyErr_Restore(xtype,xvalue,xtb);
+ else
+ {
+ /*
+ * Discard the latest exception and restore the original one.
+ */
+ Py_XDECREF(xtype);
+ Py_XDECREF(xvalue);
+ Py_XDECREF(xtb);
+
+ PyErr_Restore(oxtype,oxvalue,oxtb);
+ }
+
+ break;
+ }
+
+ /* If this is the first attempt, save the exception. */
+ if (sa == sigargs)
+ {
+ oxtype = xtype;
+ oxvalue = xvalue;
+ oxtb = xtb;
+ }
+ else
+ {
+ Py_XDECREF(xtype);
+ Py_XDECREF(xvalue);
+ Py_XDECREF(xtb);
+ }
+
+ /* Create the new argument tuple. */
+ if ((nsa = PyTuple_GetSlice(sa,0,PyTuple_GET_SIZE(sa) - 1)) == NULL)
+ {
+ /* Tidy up. */
+ Py_XDECREF(oxtype);
+ Py_XDECREF(oxvalue);
+ Py_XDECREF(oxtb);
+
+ break;
+ }
+
+ Py_DECREF(sa);
+ sa = nsa;
+ }
+
+ Py_XDECREF(newmeth);
+ Py_XDECREF(sref);
+
+ Py_DECREF(sa);
+
+ return -1;
+}
+
+
+/*
+ * Send a signal to the slots (Qt or Python) in a Python list.
+ */
+static int emitToSlotList(sipSlotList *rxlist,PyObject *sigargs)
+{
+ int rc;
+
+ /* Apply the arguments to each slot method. */
+ rc = 0;
+
+ while (rxlist != NULL && rc >= 0)
+ {
+ sipSlotList *next;
+
+ /*
+ * We get the next in the list before calling the slot in case the list
+ * gets changed by the slot - usually because the slot disconnects
+ * itself.
+ */
+ next = rxlist -> next;
+ rc = sip_api_emit_to_slot(&rxlist -> rx, sigargs);
+ rxlist = next;
+ }
+
+ return rc;
+}
+
+
+/*
+ * Add a slot to a transmitter's Python signal list. The signal is a Python
+ * signal, the slot may be either a Qt signal, a Qt slot, a Python signal or a
+ * Python slot.
+ */
+static int addSlotToPySigList(sipWrapper *txSelf,const char *sig,
+ PyObject *rxObj,const char *slot)
+{
+ sipPySig *ps;
+ sipSlotList *psrx;
+
+ /* Create a new one if necessary. */
+ if ((ps = findPySignal(txSelf,sig)) == NULL)
+ {
+ if ((ps = (sipPySig *)sip_api_malloc(sizeof (sipPySig))) == NULL)
+ return -1;
+
+ if ((ps -> name = sipStrdup(sig)) == NULL)
+ {
+ sip_api_free(ps);
+ return -1;
+ }
+
+ ps -> rxlist = NULL;
+ ps -> next = txSelf -> pySigList;
+
+ txSelf -> pySigList = ps;
+ }
+
+ /* Create the new receiver. */
+ if ((psrx = (sipSlotList *)sip_api_malloc(sizeof (sipSlotList))) == NULL)
+ return -1;
+
+ if (saveSlot(&psrx->rx, rxObj, slot) < 0)
+ {
+ sip_api_free(psrx);
+ return -1;
+ }
+
+ psrx -> next = ps -> rxlist;
+ ps -> rxlist = psrx;
+
+ return 0;
+}
+
+
+/*
+ * Compare two slots to see if they are the same.
+ */
+static int isSameSlot(sipSlot *slot1,PyObject *rxobj2,const char *slot2)
+{
+ /* See if they are signals or Qt slots, ie. they have a name. */
+ if (slot1 -> name != NULL)
+ return (slot2 != NULL &&
+ sipQtSupport->qt_same_name(slot1 -> name,slot2) &&
+ slot1 -> pyobj == rxobj2);
+
+ /* Both must be Python slots. */
+ if (slot2 != NULL)
+ return 0;
+
+ /* See if they are Python methods. */
+ if (slot1 -> pyobj == NULL)
+ return (PyMethod_Check(rxobj2) &&
+ slot1 -> meth.mfunc == PyMethod_GET_FUNCTION(rxobj2) &&
+ slot1 -> meth.mself == PyMethod_GET_SELF(rxobj2) &&
+ slot1 -> meth.mclass == PyMethod_GET_CLASS(rxobj2));
+
+ if (PyMethod_Check(rxobj2))
+ return 0;
+
+ /* The objects must be the same. */
+ return (slot1 -> pyobj == rxobj2);
+}
+
+
+/*
+ * Convert a valid Python signal or slot to an existing universal slot.
+ */
+void *sipGetRx(sipWrapper *txSelf,const char *sigargs,PyObject *rxObj,
+ const char *slot,const char **memberp)
+{
+ if (slot != NULL)
+ if (isQtSlot(slot) || isQtSignal(slot))
+ {
+ void *rx;
+
+ *memberp = slot;
+
+ if ((rx = sip_api_get_cpp_ptr((sipWrapper *)rxObj, sipQObjectClass)) == NULL)
+ return NULL;
+
+ if (isQtSignal(slot))
+ rx = findSignal(rx, memberp);
+
+ return rx;
+ }
+
+ /*
+ * The slot was either a Python callable or PyQt3 Python signal so there
+ * should be a universal slot.
+ */
+ return sipQtSupport->qt_find_slot(sipGetAddress(txSelf), sigargs, rxObj, slot, memberp);
+}
+
+
+/*
+ * Convert a Python receiver (either a Python signal or slot or a Qt signal or
+ * slot) to a Qt receiver. It is only ever called when the signal is a Qt
+ * signal. Return NULL is there was an error.
+ */
+void *sip_api_convert_rx(sipWrapper *txSelf,const char *sig,PyObject *rxObj,
+ const char *slot,const char **memberp)
+{
+ if (slot == NULL)
+ return createUniversalSlot(txSelf, sig, rxObj, NULL, memberp);
+
+ if (isQtSlot(slot) || isQtSignal(slot))
+ {
+ void *rx;
+
+ *memberp = slot;
+
+ if ((rx = sip_api_get_cpp_ptr((sipWrapper *)rxObj, sipQObjectClass)) == NULL)
+ return NULL;
+
+ if (isQtSignal(slot))
+ rx = newSignal(rx, memberp);
+
+ return rx;
+ }
+
+ /* The slot is a Python signal so we need a universal slot to catch it. */
+ return createUniversalSlot(txSelf, sig, rxObj, slot, memberp);
+}
+
+
+/*
+ * Connect a Qt signal or a Python signal to a Qt slot, a Qt signal, a Python
+ * slot or a Python signal. This is all possible combinations.
+ */
+PyObject *sip_api_connect_rx(PyObject *txObj,const char *sig,PyObject *rxObj,
+ const char *slot, int type)
+{
+ sipWrapper *txSelf = (sipWrapper *)txObj;
+
+ /* Handle Qt signals. */
+ if (isQtSignal(sig))
+ {
+ void *tx, *rx;
+ const char *member, *real_sig;
+ int res;
+
+ if ((tx = sip_api_get_cpp_ptr(txSelf, sipQObjectClass)) == NULL)
+ return NULL;
+
+ real_sig = sig;
+
+ if ((tx = newSignal(tx, &real_sig)) == NULL)
+ return NULL;
+
+ if ((rx = sip_api_convert_rx(txSelf, sig, rxObj, slot, &member)) == NULL)
+ return NULL;
+
+ res = sipQtSupport->qt_connect(tx, real_sig, rx, member, type);
+
+ return PyBool_FromLong(res);
+ }
+
+ /* Handle Python signals. */
+ if (addSlotToPySigList(txSelf, sig, rxObj, slot) < 0)
+ return NULL;
+
+ Py_INCREF(Py_True);
+ return Py_True;
+}
+
+
+/*
+ * Disconnect a signal to a signal or a Qt slot.
+ */
+PyObject *sip_api_disconnect_rx(PyObject *txObj,const char *sig,
+ PyObject *rxObj,const char *slot)
+{
+ sipWrapper *txSelf = (sipWrapper *)txObj;
+
+ /* Handle Qt signals. */
+ if (isQtSignal(sig))
+ {
+ void *tx, *rx;
+ const char *member;
+ int res;
+
+ if ((tx = sip_api_get_cpp_ptr(txSelf, sipQObjectClass)) == NULL)
+ return NULL;
+
+ if ((rx = sipGetRx(txSelf, sig, rxObj, slot, &member)) == NULL)
+ {
+ Py_INCREF(Py_False);
+ return Py_False;
+ }
+
+ /* Handle Python signals. */
+ tx = findSignal(tx, &sig);
+
+ res = sipQtSupport->qt_disconnect(tx, sig, rx, member);
+
+ /*
+ * Delete it if it is a universal slot as this will be it's only
+ * connection. If the slot is actually a universal signal then it
+ * should leave it in place.
+ */
+ sipQtSupport->qt_destroy_universal_slot(rx);
+
+ return PyBool_FromLong(res);
+ }
+
+ /* Handle Python signals. */
+ removeSlotFromPySigList(txSelf,sig,rxObj,slot);
+
+ Py_INCREF(Py_True);
+ return Py_True;
+}
+
+
+/*
+ * Remove a slot from a transmitter's Python signal list.
+ */
+static void removeSlotFromPySigList(sipWrapper *txSelf,const char *sig,
+ PyObject *rxObj,const char *slot)
+{
+ sipPySig *ps;
+
+ if ((ps = findPySignal(txSelf,sig)) != NULL)
+ {
+ sipSlotList **psrxp;
+
+ for (psrxp = &ps -> rxlist; *psrxp != NULL; psrxp = &(*psrxp) -> next)
+ {
+ sipSlotList *psrx = *psrxp;
+
+ if (isSameSlot(&psrx -> rx,rxObj,slot))
+ {
+ *psrxp = psrx -> next;
+ sipFreeSlotList(psrx);
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Free a sipSlot structure.
+ */
+static void freeSlot(sipSlot *slot)
+{
+ if (slot->name != NULL)
+ sip_api_free(slot->name);
+ else
+ {
+ PyObject *lam = slot->pyobj;
+
+ if (lam != NULL && (lam == Py_None || sipLambdaSlot(lam)))
+ Py_DECREF(lam);
+ }
+
+ /* Remove any weak reference. */
+ Py_XDECREF(slot->weakSlot);
+}
+
+
+/*
+ * Free a sipSlotList structure on the heap.
+ */
+void sipFreeSlotList(sipSlotList *rx)
+{
+ freeSlot(&rx->rx);
+ sip_api_free(rx);
+}
+
+
+/*
+ * Implement strdup() using sip_api_malloc().
+ */
+static char *sipStrdup(const char *s)
+{
+ char *d;
+
+ if ((d = (char *)sip_api_malloc(strlen(s) + 1)) != NULL)
+ strcpy(d,s);
+
+ return d;
+}
+
+
+/*
+ * Initialise a slot, returning 0 if there was no error. If the signal was a
+ * Qt signal, then the slot may be a Python signal or a Python slot. If the
+ * signal was a Python signal, then the slot may be anything.
+ */
+static int saveSlot(sipSlot *sp, PyObject *rxObj, const char *slot)
+{
+ sp -> weakSlot = NULL;
+
+ if (slot == NULL)
+ {
+ sp -> name = NULL;
+
+ if (PyMethod_Check(rxObj))
+ {
+ /*
+ * Python creates methods on the fly. We could increment the
+ * reference count to keep it alive, but that would keep "self"
+ * alive as well and would probably be a circular reference.
+ * Instead we remember the component parts and hope they are still
+ * valid when we re-create the method when we need it.
+ */
+ sipSaveMethod(&sp -> meth,rxObj);
+
+ /* Notice if the class instance disappears. */
+ sp -> weakSlot = getWeakRef(sp -> meth.mself);
+
+ /* This acts a flag to say that the slot is a method. */
+ sp -> pyobj = NULL;
+ }
+ else
+ {
+ PyObject *self;
+
+ /*
+ * We know that it is another type of callable, ie. a
+ * function/builtin.
+ */
+
+ if (PyCFunction_Check(rxObj) &&
+ (self = PyCFunction_GET_SELF(rxObj)) != NULL &&
+ sip_api_wrapper_check(self))
+ {
+ /*
+ * It is a wrapped C++ class method. We can't keep a copy
+ * because they are generated on the fly and we can't take a
+ * reference as that may keep the instance (ie. self) alive.
+ * We therefore treat it as if the user had specified the slot
+ * at "obj, SLOT('meth()')" rather than "obj.meth" (see below).
+ */
+
+ const char *meth;
+
+ /* Get the method name. */
+ meth = ((PyCFunctionObject *)rxObj) -> m_ml -> ml_name;
+
+ if ((sp -> name = (char *)sip_api_malloc(strlen(meth) + 2)) == NULL)
+ return -1;
+
+ /*
+ * Copy the name and set the marker that it needs converting to
+ * a built-in method.
+ */
+ sp -> name[0] = '\0';
+ strcpy(&sp -> name[1],meth);
+
+ sp -> pyobj = self;
+ sp -> weakSlot = getWeakRef(self);
+ }
+ else
+ {
+ /*
+ * A bit of a hack to allow lamba functions to be used as
+ * slots.
+ */
+ if (sipLambdaSlot(rxObj))
+ Py_INCREF(rxObj);
+
+ /*
+ * It's unlikely that we will succeed in getting a weak
+ * reference to the slot, but there is no harm in trying (and
+ * future versions of Python may support references to more
+ * object types).
+ */
+ sp -> pyobj = rxObj;
+ sp -> weakSlot = getWeakRef(rxObj);
+ }
+ }
+ }
+ else if ((sp -> name = sipStrdup(slot)) == NULL)
+ return -1;
+ else if (isQtSlot(slot))
+ {
+ /*
+ * The user has decided to connect a Python signal to a Qt slot and
+ * specified the slot as "obj, SLOT('meth()')" rather than "obj.meth".
+ */
+
+ char *tail;
+
+ /* Remove any arguments. */
+ if ((tail = strchr(sp -> name,'(')) != NULL)
+ *tail = '\0';
+
+ /*
+ * A bit of a hack to indicate that this needs converting to a built-in
+ * method.
+ */
+ sp -> name[0] = '\0';
+
+ /* Notice if the class instance disappears. */
+ sp -> weakSlot = getWeakRef(rxObj);
+
+ sp -> pyobj = rxObj;
+ }
+ else
+ /* It's a Qt signal. */
+ sp -> pyobj = rxObj;
+
+ return 0;
+}
+
+
+/*
+ * Return a weak reference to the given object.
+ */
+static PyObject *getWeakRef(PyObject *obj)
+{
+ PyObject *wr;
+
+ if ((wr = PyWeakref_NewRef(obj,NULL)) == NULL)
+ PyErr_Clear();
+
+ return wr;
+}
+
+
+/*
+ * See if an object is a lambda function.
+ */
+int sipLambdaSlot(PyObject *slotObj)
+{
+ if (!PyFunction_Check(slotObj))
+ return FALSE;
+
+ return (strcmp(PyString_AsString(((PyFunctionObject *)slotObj)->func_name), "<lambda>") == 0);
+}
diff --git a/python/sip/siplib/sip.h b/python/sip/siplib/sip.h
new file mode 100644
index 00000000..d08a913d
--- /dev/null
+++ b/python/sip/siplib/sip.h
@@ -0,0 +1,1302 @@
+/*
+ * The SIP module interface.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#ifndef _SIP_H
+#define _SIP_H
+
+
+/*
+ * This gets round a problem with Qt's moc and Python v2.3. Strictly speaking
+ * it's a Qt problem but later versions of Python include a fix for it so we
+ * might as well too.
+ */
+#undef slots
+
+
+#include <Python.h>
+
+/*
+ * There is a mis-feature somewhere with the Borland compiler. This works
+ * around it.
+ */
+#if defined(__BORLANDC__)
+#include <rpc.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Sanity check on the Python version. */
+#if PY_VERSION_HEX < 0x02030000
+#error "This version of SIP requires Python v2.3 or later"
+#endif
+
+
+/*
+ * Define the SIP version number.
+ */
+#define SIP_VERSION 0x040600
+#define SIP_VERSION_STR "4.6"
+
+
+/*
+ * Define the current API version number. SIP must handle modules with the
+ * same major number and with the same or earlier minor number. Whenever data
+ * structure elements are added they must be appended and the minor number
+ * incremented. Whenever data structure elements are removed or the order
+ * changed then the major number must be incremented and the minor number set
+ * to 0.
+ *
+ * History:
+ *
+ * 3.4 Added qt_find_connection() to the Qt support API.
+ * Added sip_api_string_as_char(), sip_api_unicode_as_wchar(),
+ * sip_api_unicode_as_wstring(), sip_api_find_class(),
+ * sip_api_find_named_enum() and sip_api_parse_signature().
+ * Added the 'A', 'w' and 'x' format characters to sip_api_parse_args(),
+ * sip_api_parse_result(), sip_api_build_result() and
+ * sip_api_call_method().
+ *
+ * 3.3 Added sip_api_register_int_types().
+ *
+ * 3.2 Added sip_api_export_symbol() and sip_api_import_symbol().
+ *
+ * 3.1 Added sip_api_add_mapped_type_instance().
+ *
+ * 3.0 Moved the Qt support out of the sip module and into PyQt. This is
+ * such a dramatic change that there is no point in attempting to maintain
+ * backwards compatibility.
+ *
+ * 2.0 Added the td_flags field to the sipTypeDef structure.
+ * Added the first_child, sibling_next, sibling_prev and parent fields to
+ * the sipWrapper structure.
+ * Added the td_traverse and td_clear fields to the sipTypeDef structure.
+ * Added the em_api_minor field to the sipExportedModuleDef structure.
+ * Added sip_api_bad_operator_arg().
+ * Added sip_api_wrapper_check().
+ *
+ * 1.1 Added support for __pos__ and __abs__.
+ *
+ * 1.0 Removed all deprecated parts of the API.
+ * Removed the td_proxy field from the sipTypeDef structure.
+ * Removed the create proxy function from the 'q' and 'y' format
+ * characters to sip_api_parse_args().
+ * Removed sip_api_emit_to_slot().
+ * Reworked the enum related structures.
+ *
+ * 0.2 Added the 'H' format character to sip_api_parse_args().
+ *
+ * 0.1 Added sip_api_add_class_instance().
+ * Added the 't' format character to sip_api_parse_args().
+ * Deprecated the 'J' and 'K' format characters to sip_api_parse_result().
+ *
+ * 0.0 Original version.
+ */
+#define SIP_API_MAJOR_NR 3
+#define SIP_API_MINOR_NR 4
+
+
+/* Some compatibility stuff to help with handwritten code for SIP v3. */
+#if !defined(ANY)
+#define ANY void
+#endif
+
+
+/* Some Python compatibility stuff. */
+#if PY_VERSION_HEX >= 0x02050000
+#define SIP_SSIZE_T Py_ssize_t
+#else
+#define SIP_SSIZE_T int
+#endif
+
+
+/*
+ * The mask that can be passed to sipTrace().
+ */
+#define SIP_TRACE_CATCHERS 0x0001
+#define SIP_TRACE_CTORS 0x0002
+#define SIP_TRACE_DTORS 0x0004
+#define SIP_TRACE_INITS 0x0008
+#define SIP_TRACE_DEALLOCS 0x0010
+#define SIP_TRACE_METHODS 0x0020
+
+
+/*
+ * Hide some thread dependent stuff.
+ */
+#ifdef WITH_THREAD
+typedef PyGILState_STATE sip_gilstate_t;
+#define SIP_RELEASE_GIL(gs) PyGILState_Release(gs);
+#define SIP_BLOCK_THREADS {PyGILState_STATE sipGIL = PyGILState_Ensure();
+#define SIP_UNBLOCK_THREADS PyGILState_Release(sipGIL);}
+#else
+typedef int sip_gilstate_t;
+#define SIP_RELEASE_GIL(gs)
+#define SIP_BLOCK_THREADS
+#define SIP_UNBLOCK_THREADS
+#endif
+
+
+/*
+ * The metatype of a wrapper type.
+ */
+typedef struct _sipWrapperType {
+ /*
+ * The super-metatype. This must be first in the structure so that it can
+ * be cast to a PyTypeObject *.
+ */
+ PyHeapTypeObject super;
+
+ /* The additional type information. */
+ struct _sipTypeDef *type;
+
+ /* The list of init extenders. */
+ struct _sipInitExtenderDef *iextend;
+
+ /* The optional PyQt defined Q_OBJECT information. */
+ void *qt_qobject;
+} sipWrapperType;
+
+
+/*
+ * The type of a C/C++ wrapper object.
+ */
+typedef struct _sipWrapper {
+ PyObject_HEAD
+
+ /* For the user to use. */
+ PyObject *user;
+
+ union {
+ /* C/C++ object pointer. */
+ void *cppPtr;
+
+ /* Access function. */
+ void *(*afPtr)();
+ } u;
+
+ /* Object flags. */
+ int flags;
+
+ /* The instance dictionary. */
+ PyObject *dict;
+
+ /* Python signal list (complex). */
+ struct _sipPySig *pySigList;
+
+ /* Next object at this address. */
+ struct _sipWrapper *next;
+
+ /* First child object. */
+ struct _sipWrapper *first_child;
+
+ /* Next sibling. */
+ struct _sipWrapper *sibling_next;
+
+ /* Previous sibling. */
+ struct _sipWrapper *sibling_prev;
+
+ /* Owning object. */
+ struct _sipWrapper *parent;
+} sipWrapper;
+
+
+/*
+ * Some convenient function pointers.
+ */
+typedef void *(*sipInitFunc)(sipWrapper *, PyObject *, sipWrapper **, int *);
+typedef int (*sipTraverseFunc)(void *, visitproc, void *);
+typedef int (*sipClearFunc)(void *);
+typedef SIP_SSIZE_T (*sipBufferFunc)(PyObject *, void *, SIP_SSIZE_T, void **);
+typedef SIP_SSIZE_T (*sipSegCountFunc)(PyObject *, void *, SIP_SSIZE_T *);
+typedef void (*sipDeallocFunc)(sipWrapper *);
+typedef void *(*sipCastFunc)(void *, sipWrapperType *);
+typedef sipWrapperType *(*sipSubClassConvertFunc)(void **);
+typedef void *(*sipForceConvertToFunc)(PyObject *, int *);
+typedef int (*sipConvertToFunc)(PyObject *, void **, int *, PyObject *);
+typedef PyObject *(*sipConvertFromFunc)(void *, PyObject *);
+typedef int (*sipVirtHandlerFunc)(void *, PyObject *, ...);
+typedef int (*sipEmitFunc)(sipWrapper *, PyObject *);
+typedef void (*sipReleaseFunc)(void *, int);
+
+
+/*
+ * The information describing an encoded class ID.
+ */
+typedef struct _sipEncodedClassDef {
+ /* The class number. */
+ unsigned sc_class:16;
+
+ /* The module number (255 for this one). */
+ unsigned sc_module:8;
+
+ /* A context specific flag. */
+ unsigned sc_flag:1;
+} sipEncodedClassDef;
+
+
+/*
+ * The information describing an enum member.
+ */
+typedef struct _sipEnumMemberDef {
+ /* The member name. */
+ const char *em_name;
+
+ /* The member value. */
+ int em_val;
+
+ /* The member enum, -ve if anonymous. */
+ int em_enum;
+} sipEnumMemberDef;
+
+
+/*
+ * The information describing a named enum.
+ */
+typedef struct _sipEnumDef {
+ /* The Python name of the enum. */
+ const char *e_name;
+
+ /* The C/C++ name of the enum, NULL if the same as the Python name. */
+ const char *e_cname;
+
+ /* The scoping type. */
+ int e_scope;
+
+ /* The Python slots. */
+ struct _sipPySlotDef *e_pyslots;
+} sipEnumDef;
+
+
+/*
+ * The information describing static instances.
+ */
+typedef struct _sipInstancesDef {
+ /* The classes. */
+ struct _sipClassInstanceDef *id_class;
+
+ /* The void *. */
+ struct _sipVoidPtrInstanceDef *id_voidp;
+
+ /* The chars. */
+ struct _sipCharInstanceDef *id_char;
+
+ /* The strings. */
+ struct _sipStringInstanceDef *id_string;
+
+ /* The ints. */
+ struct _sipIntInstanceDef *id_int;
+
+ /* The longs. */
+ struct _sipLongInstanceDef *id_long;
+
+ /* The unsigned longs. */
+ struct _sipUnsignedLongInstanceDef *id_ulong;
+
+ /* The long longs. */
+ struct _sipLongLongInstanceDef *id_llong;
+
+ /* The unsigned long longs. */
+ struct _sipUnsignedLongLongInstanceDef *id_ullong;
+
+ /* The doubles. */
+ struct _sipDoubleInstanceDef *id_double;
+
+ /* The enums. */
+ struct _sipEnumInstanceDef *id_enum;
+} sipInstancesDef;
+
+
+/*
+ * The information describing a type initialiser extender.
+ */
+typedef struct _sipInitExtenderDef {
+ /* The extender function. */
+ sipInitFunc ie_extender;
+
+ /* The class being extended. */
+ sipEncodedClassDef ie_class;
+
+ /* The next extender for this class. */
+ struct _sipInitExtenderDef *ie_next;
+} sipInitExtenderDef;
+
+
+/*
+ * The information describing a sub-class convertor.
+ */
+typedef struct _sipSubClassConvertorDef {
+ /* The convertor. */
+ sipSubClassConvertFunc scc_convertor;
+
+ /* The encoded base type. */
+ sipEncodedClassDef scc_base;
+
+ /* The base type. */
+ sipWrapperType *scc_basetype;
+} sipSubClassConvertorDef;
+
+
+/*
+ * The different Python slot types.
+ */
+typedef enum {
+ str_slot, /* __str__ */
+ int_slot, /* __int__ */
+ long_slot, /* __long__ */
+ float_slot, /* __float__ */
+ len_slot, /* __len__ */
+ contains_slot, /* __contains__ */
+ add_slot, /* __add__ for number */
+ concat_slot, /* __add__ for sequence types */
+ sub_slot, /* __sub__ */
+ mul_slot, /* __mul__ for number types */
+ repeat_slot, /* __mul__ for sequence types */
+ div_slot, /* __div__ */
+ mod_slot, /* __mod__ */
+ and_slot, /* __and__ */
+ or_slot, /* __or__ */
+ xor_slot, /* __xor__ */
+ lshift_slot, /* __lshift__ */
+ rshift_slot, /* __rshift__ */
+ iadd_slot, /* __iadd__ for number types */
+ iconcat_slot, /* __iadd__ for sequence types */
+ isub_slot, /* __isub__ */
+ imul_slot, /* __imul__ for number types */
+ irepeat_slot, /* __imul__ for sequence types */
+ idiv_slot, /* __idiv__ */
+ imod_slot, /* __imod__ */
+ iand_slot, /* __iand__ */
+ ior_slot, /* __ior__ */
+ ixor_slot, /* __ixor__ */
+ ilshift_slot, /* __ilshift__ */
+ irshift_slot, /* __irshift__ */
+ invert_slot, /* __invert__ */
+ call_slot, /* __call__ */
+ getitem_slot, /* __getitem__ */
+ setitem_slot, /* __setitem__ */
+ delitem_slot, /* __delitem__ */
+ lt_slot, /* __lt__ */
+ le_slot, /* __le__ */
+ eq_slot, /* __eq__ */
+ ne_slot, /* __ne__ */
+ gt_slot, /* __gt__ */
+ ge_slot, /* __ge__ */
+ cmp_slot, /* __cmp__ */
+ nonzero_slot, /* __nonzero__ */
+ neg_slot, /* __neg__ */
+ repr_slot, /* __repr__ */
+ hash_slot, /* __hash__ */
+ pos_slot, /* __pos__ */
+ abs_slot /* __abs__ */
+} sipPySlotType;
+
+
+/*
+ * The information describing a Python slot function.
+ */
+typedef struct _sipPySlotDef {
+ /* The function. */
+ void *psd_func;
+
+ /* The type. */
+ sipPySlotType psd_type;
+} sipPySlotDef;
+
+
+/*
+ * The information describing a Python slot extender.
+ */
+typedef struct _sipPySlotExtenderDef {
+ /* The function. */
+ void *pse_func;
+
+ /* The type. */
+ sipPySlotType pse_type;
+
+ /* The encoded class. */
+ sipEncodedClassDef pse_class;
+} sipPySlotExtenderDef;
+
+
+/*
+ * This enumerates the different dynamic signal argument types.
+ */
+typedef enum {
+ unknown_sat,
+ char_sat,
+ uchar_sat,
+ string_sat,
+ ustring_sat,
+ short_sat,
+ ushort_sat,
+ int_sat,
+ uint_sat,
+ long_sat,
+ ulong_sat,
+ longlong_sat,
+ ulonglong_sat,
+ float_sat,
+ double_sat,
+ enum_sat,
+ bool_sat,
+ void_sat,
+ class_sat,
+ classp_sat,
+ mtype_sat,
+ mtypep_sat,
+ qvariant_sat,
+ qvariantp_sat,
+ pyobject_sat,
+ schar_sat,
+ sstring_sat,
+ wchar_sat,
+ wstring_sat
+} sipSigArgType;
+
+
+/*
+ * The information describing a typedef.
+ */
+typedef struct _sipTypedefDef {
+ /* The typedef name. */
+ const char *tdd_name;
+
+ /* The typedef type. */
+ sipSigArgType tdd_type;
+
+ /* The type name for enum_sat, class_sat and mtype_sat. */
+ const char *tdd_type_name;
+
+ /* The defining module, NULL if the current one. */
+ const char *tdd_mod_name;
+} sipTypedefDef;
+
+
+/*
+ * The information describing a type.
+ */
+typedef struct _sipTypeDef {
+ /* The module. */
+ struct _sipExportedModuleDef *td_module;
+
+ /* Type flags, see the sipType*() macros. */
+ int td_flags;
+
+ /* The Python name of the type. */
+ const char *td_name;
+
+ /* The C/C++ name of the type, NULL if the same as the Python name. */
+ const char *td_cname;
+
+ /* The scoping type. */
+ sipEncodedClassDef td_scope;
+
+ /* The super-types. */
+ sipEncodedClassDef *td_supers;
+
+ /* The table of Python slots. */
+ sipPySlotDef *td_pyslots;
+
+ /* The number of lazy methods. */
+ int td_nrmethods;
+
+ /* The table of lazy methods. */
+ PyMethodDef *td_methods;
+
+ /* The number of lazy enum members. */
+ int td_nrenummembers;
+
+ /* The table of lazy enum members. */
+ sipEnumMemberDef *td_enummembers;
+
+ /* The variable table. */
+ PyMethodDef *td_variables;
+
+ /* The initialisation function. */
+ sipInitFunc td_init;
+
+ /* The traverse function. */
+ sipTraverseFunc td_traverse;
+
+ /* The clear function. */
+ sipClearFunc td_clear;
+
+ /* The read buffer function. */
+ sipBufferFunc td_readbuffer;
+
+ /* The write buffer function. */
+ sipBufferFunc td_writebuffer;
+
+ /* The segment count function. */
+ sipSegCountFunc td_segcount;
+
+ /* The char buffer function. */
+ sipBufferFunc td_charbuffer;
+
+ /* The deallocation function. */
+ sipDeallocFunc td_dealloc;
+
+ /* The cast function, 0 if a C struct. */
+ sipCastFunc td_cast;
+
+ /* The release function. */
+ sipReleaseFunc td_release;
+
+ /* The force convert to function, 0 if a C++ namespace. */
+ sipForceConvertToFunc td_fcto;
+
+ /* The convert to function. */
+ sipConvertToFunc td_cto;
+
+ /* Emit table for Qt signals. */
+ struct _sipQtSignal *td_emit;
+
+ /* The static instances. */
+ sipInstancesDef td_instances;
+
+ /* The next namespace extender. */
+ struct _sipTypeDef *td_nsextender;
+} sipTypeDef;
+
+
+/*
+ * The information describing an external type.
+ */
+typedef struct _sipExternalTypeDef {
+ /* The index into the type table. */
+ int et_nr;
+
+ /* The name of the type. */
+ const char *et_name;
+} sipExternalTypeDef;
+
+
+/*
+ * The information describing a mapped class.
+ */
+typedef struct _sipMappedType {
+ /* The corresponding C++ definition. */
+ const char *mt_name;
+
+ /* The release function. */
+ sipReleaseFunc mt_release;
+
+ /* The force convert to function. */
+ sipForceConvertToFunc mt_fcto;
+
+ /* The convert to function. */
+ sipConvertToFunc mt_cto;
+
+ /* The convert from function. */
+ sipConvertFromFunc mt_cfrom;
+} sipMappedType;
+
+
+/*
+ * Defines an entry in the module specific list of delayed dtor calls.
+ */
+typedef struct _sipDelayedDtor {
+ /* The C/C++ instance. */
+ void *dd_ptr;
+
+ /* The class name. */
+ const char *dd_name;
+
+ /* Non-zero if dd_ptr is a derived class instance. */
+ int dd_isderived;
+
+ /* Next in the list. */
+ struct _sipDelayedDtor *dd_next;
+} sipDelayedDtor;
+
+
+/*
+ * The information describing an imported module.
+ */
+typedef struct _sipImportedModuleDef {
+ /* The module name. */
+ const char *im_name;
+
+ /* The required version. */
+ int im_version;
+
+ /* The imported module. */
+ struct _sipExportedModuleDef *im_module;
+} sipImportedModuleDef;
+
+
+/*
+ * The main client module structure.
+ */
+typedef struct _sipExportedModuleDef {
+ /* The next in the list. */
+ struct _sipExportedModuleDef *em_next;
+
+ /* The SIP API minor version number. */
+ unsigned em_api_minor;
+
+ /* The module name. */
+ const char *em_name;
+
+ /* The module name as an object. */
+ PyObject *em_nameobj;
+
+ /* The module version. */
+ int em_version;
+
+ /* The imported modules. */
+ sipImportedModuleDef *em_imports;
+
+ /* The optional Qt support API. */
+ struct _sipQtAPI *em_qt_api;
+
+ /* The number of types. */
+ int em_nrtypes;
+
+ /* The table of type types. */
+ struct _sipWrapperType **em_types;
+
+ /* The table of external types. */
+ sipExternalTypeDef *em_external;
+
+ /* The table of mapped types. */
+ sipMappedType **em_mappedtypes;
+
+ /* The number of enums. */
+ int em_nrenums;
+
+ /* The table of enum types. */
+ PyTypeObject **em_enums;
+
+ /* The table of enum type data. */
+ sipEnumDef *em_enumdefs;
+
+ /* The number of members in global enums. */
+ int em_nrenummembers;
+
+ /* The table of members in global enums. */
+ sipEnumMemberDef *em_enummembers;
+
+ /* The table of typedefs. */
+ sipTypedefDef *em_typedefs;
+
+ /* The table of virtual handlers. */
+ sipVirtHandlerFunc *em_virthandlers;
+
+ /* The sub-class convertors. */
+ sipSubClassConvertorDef *em_convertors;
+
+ /* The static instances. */
+ sipInstancesDef em_instances;
+
+ /* The license. */
+ struct _sipLicenseDef *em_license;
+
+ /* The table of exception types. */
+ PyObject **em_exceptions;
+
+ /* The table of Python slot extenders. */
+ sipPySlotExtenderDef *em_slotextend;
+
+ /* The table of initialiser extenders. */
+ sipInitExtenderDef *em_initextend;
+
+ /* The delayed dtor handler. */
+ void (*em_delayeddtors)(const sipDelayedDtor *);
+
+ /* The list of delayed dtors. */
+ sipDelayedDtor *em_ddlist;
+} sipExportedModuleDef;
+
+
+/*
+ * The information describing a license to be added to a dictionary.
+ */
+typedef struct _sipLicenseDef {
+ /* The type of license. */
+ const char *lc_type;
+
+ /* The licensee. */
+ const char *lc_licensee;
+
+ /* The timestamp. */
+ const char *lc_timestamp;
+
+ /* The signature. */
+ const char *lc_signature;
+} sipLicenseDef;
+
+
+/*
+ * The information describing a void pointer instance to be added to a
+ * dictionary.
+ */
+typedef struct _sipVoidPtrInstanceDef {
+ /* The void pointer name. */
+ const char *vi_name;
+
+ /* The void pointer value. */
+ void *vi_val;
+} sipVoidPtrInstanceDef;
+
+
+/*
+ * The information describing a char instance to be added to a dictionary.
+ */
+typedef struct _sipCharInstanceDef {
+ /* The char name. */
+ const char *ci_name;
+
+ /* The char value. */
+ char ci_val;
+} sipCharInstanceDef;
+
+
+/*
+ * The information describing a string instance to be added to a dictionary.
+ */
+typedef struct _sipStringInstanceDef {
+ /* The string name. */
+ const char *si_name;
+
+ /* The string value. */
+ const char *si_val;
+} sipStringInstanceDef;
+
+
+/*
+ * The information describing an int instance to be added to a dictionary.
+ */
+typedef struct _sipIntInstanceDef {
+ /* The int name. */
+ const char *ii_name;
+
+ /* The int value. */
+ int ii_val;
+} sipIntInstanceDef;
+
+
+/*
+ * The information describing a long instance to be added to a dictionary.
+ */
+typedef struct _sipLongInstanceDef {
+ /* The long name. */
+ const char *li_name;
+
+ /* The long value. */
+ long li_val;
+} sipLongInstanceDef;
+
+
+/*
+ * The information describing an unsigned long instance to be added to a
+ * dictionary.
+ */
+typedef struct _sipUnsignedLongInstanceDef {
+ /* The unsigned long name. */
+ const char *uli_name;
+
+ /* The unsigned long value. */
+ unsigned long uli_val;
+} sipUnsignedLongInstanceDef;
+
+
+/*
+ * The information describing a long long instance to be added to a dictionary.
+ */
+typedef struct _sipLongLongInstanceDef {
+ /* The long long name. */
+ const char *lli_name;
+
+ /* The long long value. */
+#if defined(HAVE_LONG_LONG)
+ PY_LONG_LONG lli_val;
+#else
+ long lli_val;
+#endif
+} sipLongLongInstanceDef;
+
+
+/*
+ * The information describing an unsigned long long instance to be added to a
+ * dictionary.
+ */
+typedef struct _sipUnsignedLongLongInstanceDef {
+ /* The unsigned long long name. */
+ const char *ulli_name;
+
+ /* The unsigned long long value. */
+#if defined(HAVE_LONG_LONG)
+ unsigned PY_LONG_LONG ulli_val;
+#else
+ unsigned long ulli_val;
+#endif
+} sipUnsignedLongLongInstanceDef;
+
+
+/*
+ * The information describing a double instance to be added to a dictionary.
+ */
+typedef struct _sipDoubleInstanceDef {
+ /* The double name. */
+ const char *di_name;
+
+ /* The double value. */
+ double di_val;
+} sipDoubleInstanceDef;
+
+
+/*
+ * The information describing a class instance to be added to a dictionary.
+ */
+typedef struct _sipClassInstanceDef {
+ /* The class instance name. */
+ const char *ci_name;
+
+ /* The actual instance. */
+ void *ci_ptr;
+
+ /* A pointer to the Python type. */
+ struct _sipWrapperType **ci_type;
+
+ /* The wrapping flags. */
+ int ci_flags;
+} sipClassInstanceDef;
+
+
+/*
+ * The information describing an enum instance to be added to a dictionary.
+ */
+typedef struct _sipEnumInstanceDef {
+ /* The enum instance name. */
+ const char *ei_name;
+
+ /* The enum value. */
+ int ei_val;
+
+ /* A pointer to the Python type. */
+ PyTypeObject **ei_type;
+} sipEnumInstanceDef;
+
+
+/*
+ * Define a mapping between a wrapped type identified by a string and the
+ * corresponding Python type.
+ */
+typedef struct _sipStringTypeClassMap {
+ /* The type as a string. */
+ const char *typeString;
+
+ /* A pointer to the Python type. */
+ struct _sipWrapperType **pyType;
+} sipStringTypeClassMap;
+
+
+/*
+ * Define a mapping between a wrapped type identified by an integer and the
+ * corresponding Python type.
+ */
+typedef struct _sipIntTypeClassMap {
+ /* The type as an integer. */
+ int typeInt;
+
+ /* A pointer to the Python type. */
+ struct _sipWrapperType **pyType;
+} sipIntTypeClassMap;
+
+
+/*
+ * A Python method's component parts. This allows us to re-create the method
+ * without changing the reference counts of the components.
+ */
+typedef struct _sipPyMethod {
+ /* The function. */
+ PyObject *mfunc;
+
+ /* Self if it is a bound method. */
+ PyObject *mself;
+
+ /* The class. */
+ PyObject *mclass;
+} sipPyMethod;
+
+
+/*
+ * Cache a reference to a Python member function.
+ */
+typedef struct _sipMethodCache {
+ /* Method cache flags. */
+ int mcflags;
+
+ /* The method. */
+ sipPyMethod pyMethod;
+} sipMethodCache;
+
+
+/*
+ * A slot (in the Qt, rather than Python, sense).
+ */
+typedef struct _sipSlot {
+ /* Name if a Qt or Python signal. */
+ char *name;
+
+ /* Signal or Qt slot object. */
+ PyObject *pyobj;
+
+ /* Python slot method, pyobj is NULL. */
+ sipPyMethod meth;
+
+ /* A weak reference to the slot. */
+ PyObject *weakSlot;
+} sipSlot;
+
+
+/*
+ * An entry in a linked list of slots.
+ */
+typedef struct _sipSlotList {
+ /* The receiver. */
+ sipSlot rx;
+
+ /* Next in the list. */
+ struct _sipSlotList *next;
+} sipSlotList;
+
+
+/*
+ * A Python signal.
+ */
+typedef struct _sipPySig {
+ /* The name of the signal. */
+ char *name;
+
+ /* The list of receivers. */
+ sipSlotList *rxlist;
+
+ /* Next in the list. */
+ struct _sipPySig *next;
+} sipPySig;
+
+
+/*
+ * This defines a single dynamic signal argument type.
+ */
+typedef struct _sipSigArg {
+ /* The type. */
+ sipSigArgType atype;
+
+ union {
+ /* The Python type for classes. */
+ sipWrapperType *wt;
+
+ /* The data for mapped types. */
+ sipMappedType *mt;
+
+ /* The Python type for named enums. */
+ PyTypeObject *et;
+ } u;
+} sipSigArg;
+
+
+/*
+ * A parsed signal signature.
+ */
+typedef struct _sipSignature {
+ /* The number of arguments. */
+ int sg_nrargs;
+
+ /* The parsed arguments (heap). */
+ sipSigArg *sg_args;
+
+ /* The unparsed signature (heap). */
+ char *sg_signature;
+
+ /* The next in the list. */
+ struct _sipSignature *sg_next;
+} sipSignature;
+
+
+/*
+ * A connection to a universal slot.
+ */
+typedef struct _sipSlotConnection {
+ /* The transmitter QObject. */
+ void *sc_transmitter;
+
+ /* The parsed signature. */
+ const sipSignature *sc_signature;
+
+ /* The slot. */
+ sipSlot sc_slot;
+} sipSlotConnection;
+
+
+/*
+ * Maps the name of a Qt signal to a wrapper function to emit it.
+ */
+typedef struct _sipQtSignal {
+ /* The signal name. */
+ char *st_name;
+
+ /* The emitter function. */
+ sipEmitFunc st_emitfunc;
+} sipQtSignal;
+
+
+/*
+ * The API exported by the SIP module, ie. pointers to all the data and
+ * functions that can be used by generated code.
+ */
+typedef struct _sipAPIDef {
+ /*
+ * This must be the first entry and it's signature must not change so that
+ * version number mismatches can be detected and reported.
+ */
+ int (*api_export_module)(sipExportedModuleDef *client, unsigned api_major,
+ unsigned api_minor, PyObject *mod_dict);
+
+ /*
+ * The following are part of the public API.
+ */
+ void (*api_bad_catcher_result)(PyObject *method);
+ void (*api_bad_length_for_slice)(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen);
+ PyObject *(*api_build_result)(int *isErr, const char *fmt, ...);
+ PyObject *(*api_call_method)(int *isErr, PyObject *method, const char *fmt,
+ ...);
+ PyObject *(*api_class_name)(PyObject *self);
+ PyObject *(*api_connect_rx)(PyObject *txObj, const char *sig,
+ PyObject *rxObj, const char *slot, int type);
+ SIP_SSIZE_T (*api_convert_from_sequence_index)(SIP_SSIZE_T idx,
+ SIP_SSIZE_T len);
+ int (*api_can_convert_to_instance)(PyObject *pyObj, sipWrapperType *type,
+ int flags);
+ int (*api_can_convert_to_mapped_type)(PyObject *pyObj,
+ const sipMappedType *mt, int flags);
+ void *(*api_convert_to_instance)(PyObject *pyObj, sipWrapperType *type,
+ PyObject *transferObj, int flags, int *statep, int *iserrp);
+ void *(*api_convert_to_mapped_type)(PyObject *pyObj,
+ const sipMappedType *mt, PyObject *transferObj, int flags,
+ int *statep, int *iserrp);
+ void *(*api_force_convert_to_instance)(PyObject *pyObj,
+ sipWrapperType *type, PyObject *transferObj, int flags,
+ int *statep, int *iserrp);
+ void *(*api_force_convert_to_mapped_type)(PyObject *pyObj,
+ const sipMappedType *mt, PyObject *transferObj, int flags,
+ int *statep, int *iserrp);
+ void (*api_release_instance)(void *cpp, sipWrapperType *type, int state);
+ void (*api_release_mapped_type)(void *cpp, const sipMappedType *mt,
+ int state);
+ PyObject *(*api_convert_from_instance)(void *cpp, sipWrapperType *type,
+ PyObject *transferObj);
+ PyObject *(*api_convert_from_new_instance)(void *cpp, sipWrapperType *type,
+ PyObject *transferObj);
+ PyObject *(*api_convert_from_mapped_type)(void *cpp,
+ const sipMappedType *mt, PyObject *transferObj);
+ void *(*api_convert_to_cpp)(PyObject *sipSelf, sipWrapperType *type,
+ int *iserrp);
+ int (*api_get_state)(PyObject *transferObj);
+ const sipMappedType *(*api_find_mapped_type)(const char *type);
+ PyObject *(*api_disconnect_rx)(PyObject *txObj, const char *sig,
+ PyObject *rxObj, const char *slot);
+ int (*api_emit_signal)(PyObject *self, const char *sig, PyObject *sigargs);
+ void (*api_free)(void *mem);
+ PyObject *(*api_get_sender)();
+ PyObject *(*api_get_wrapper)(void *cppPtr, sipWrapperType *type);
+ void *(*api_malloc)(size_t nbytes);
+ sipWrapperType *(*api_map_int_to_class)(int typeInt,
+ const sipIntTypeClassMap *map, int maplen);
+ sipWrapperType *(*api_map_string_to_class)(const char *typeString,
+ const sipStringTypeClassMap *map, int maplen);
+ int (*api_parse_result)(int *isErr, PyObject *method, PyObject *res,
+ const char *fmt, ...);
+ void (*api_trace)(unsigned mask, const char *fmt, ...);
+ void (*api_transfer)(PyObject *self, int toCpp);
+ void (*api_transfer_back)(PyObject *self);
+ void (*api_transfer_to)(PyObject *self, PyObject *owner);
+ int (*api_wrapper_check)(PyObject *o);
+ unsigned long (*api_long_as_unsigned_long)(PyObject *o);
+ PyObject *(*api_convert_from_named_enum)(int eval, PyTypeObject *et);
+
+ /*
+ * The following may be used by Qt support code but no other handwritten
+ * code.
+ */
+ PyObject *(*api_convert_from_void_ptr)(void *val);
+ void (*api_free_connection)(sipSlotConnection *conn);
+ int (*api_emit_to_slot)(sipSlot *slot, PyObject *sigargs);
+ int (*api_same_connection)(sipSlotConnection *conn, void *tx,
+ const char *sig, PyObject *rxObj, const char *slot);
+ void *(*api_convert_rx)(sipWrapper *txSelf, const char *sigargs,
+ PyObject *rxObj, const char *slot, const char **memberp);
+
+ /*
+ * The following are not part of the public API.
+ */
+ int (*api_parse_args)(int *argsParsedp, PyObject *sipArgs,
+ const char *fmt, ...);
+ int (*api_parse_pair)(int *argsParsedp, PyObject *arg0, PyObject *arg1,
+ const char *fmt, ...);
+ void (*api_common_ctor)(sipMethodCache *cache, int nrmeths);
+ void (*api_common_dtor)(sipWrapper *sipSelf);
+ void *(*api_convert_to_void_ptr)(PyObject *obj);
+ void (*api_no_function)(int argsParsed, const char *func);
+ void (*api_no_method)(int argsParsed, const char *classname,
+ const char *method);
+ void (*api_abstract_method)(const char *classname, const char *method);
+ void (*api_bad_class)(const char *classname);
+ void (*api_bad_set_type)(const char *classname, const char *var);
+ void *(*api_get_cpp_ptr)(sipWrapper *w, sipWrapperType *type);
+ void *(*api_get_complex_cpp_ptr)(sipWrapper *w);
+ PyObject *(*api_is_py_method)(sip_gilstate_t *gil, sipMethodCache *pymc,
+ sipWrapper *sipSelf, char *cname, char *mname);
+ void (*api_call_hook)(const char *hookname);
+ void (*api_start_thread)(void);
+ void (*api_end_thread)(void);
+ void (*api_raise_unknown_exception)(void);
+ void (*api_raise_class_exception)(sipWrapperType *type, void *ptr);
+ void (*api_raise_sub_class_exception)(sipWrapperType *type, void *ptr);
+ int (*api_add_class_instance)(PyObject *dict, const char *name,
+ void *cppPtr, sipWrapperType *wt);
+ int (*api_add_enum_instance)(PyObject *dict, const char *name, int value,
+ PyTypeObject *type);
+ void (*api_bad_operator_arg)(PyObject *self, PyObject *arg,
+ sipPySlotType st);
+ PyObject *(*api_pyslot_extend)(sipExportedModuleDef *mod, sipPySlotType st,
+ sipWrapperType *type, PyObject *arg0, PyObject *arg1);
+ void (*api_add_delayed_dtor)(sipWrapper *w);
+ int (*api_add_mapped_type_instance)(PyObject *dict, const char *name,
+ void *cppPtr, const sipMappedType *mt);
+
+ /*
+ * The following are part of the public API.
+ */
+ int (*api_export_symbol)(const char *name, void *sym);
+ void *(*api_import_symbol)(const char *name);
+
+ /*
+ * The following may be used by Qt support code but no other handwritten
+ * code.
+ */
+ int (*api_register_int_types)(PyObject *args);
+ sipSignature *(*api_parse_signature)(const char *sig);
+
+ /*
+ * The following are part of the public API.
+ */
+ sipWrapperType *(*api_find_class)(const char *type);
+ PyTypeObject *(*api_find_named_enum)(const char *type);
+
+ /*
+ * The following are not part of the public API.
+ */
+ char (*api_string_as_char)(PyObject *obj);
+#if defined(HAVE_WCHAR_H)
+ wchar_t (*api_unicode_as_wchar)(PyObject *obj);
+ wchar_t *(*api_unicode_as_wstring)(PyObject *obj);
+#else
+ int (*api_unicode_as_wchar)(PyObject *obj);
+ int *(*api_unicode_as_wstring)(PyObject *obj);
+#endif
+} sipAPIDef;
+
+
+/*
+ * The API implementing the optional Qt support.
+ */
+typedef struct _sipQtAPI {
+ struct _sipWrapperType **qt_qobject;
+ int (*qt_is_qt_signal)(void *, const char *);
+ void *(*qt_create_universal_signal_shortcut)(void *, const char *,
+ const char **);
+ void *(*qt_create_universal_signal)(void *, const struct _sipSignature *);
+ void *(*qt_find_universal_signal_shortcut)(void *, const char *,
+ const char **);
+ void *(*qt_find_universal_signal)(void *, const struct _sipSignature *);
+ int (*qt_emit_signal_shortcut)(void *, const char *, PyObject *);
+ int (*qt_emit_signal)(void *, const struct _sipSignature *, PyObject *);
+ void *(*qt_create_universal_slot)(struct _sipWrapper *,
+ struct _sipSlotConnection *, const char **);
+ void (*qt_destroy_universal_slot)(void *);
+ void *(*qt_find_slot)(void *, const char *, PyObject *, const char *,
+ const char **);
+ int (*qt_connect)(void *, const char *, void *, const char *, int);
+ int (*qt_disconnect)(void *, const char *, void *, const char *);
+ int (*qt_signals_blocked)(void *);
+ const void *(*qt_get_sender)();
+ void (*qt_forget_sender)();
+ int (*qt_same_name)(const char *, const char *);
+ sipSlotConnection *(*qt_find_connection)(void *, void **);
+} sipQtAPI;
+
+
+/*
+ * These are flags that can be passed to sipCanConvertToInstance(),
+ * sipConvertToInstance() and sipForceConvertToInstance().
+ */
+#define SIP_NOT_NONE 0x01 /* Disallow None. */
+#define SIP_NO_CONVERTORS 0x02 /* Disable any type convertors. */
+
+
+/*
+ * These are the state flags returned by %ConvertToTypeCode. Note that these
+ * share the same "namespace" as the flags below.
+ */
+#define SIP_TEMPORARY 0x0001 /* A temporary instance. */
+#define SIP_DERIVED_CLASS 0x0002 /* The instance is derived. */
+
+
+/*
+ * Useful macros, not part of the public API.
+ */
+#define SIP_PY_OWNED 0x0004 /* Owned by Python. */
+#define SIP_INDIRECT 0x0008 /* If there is a level of indirection. */
+#define SIP_ACCFUNC 0x0010 /* If there is an access function. */
+#define SIP_NOT_IN_MAP 0x0020 /* If Python object not in the map. */
+#define SIP_SHARE_MAP 0x0040 /* If the map slot might be occupied. */
+#define SIP_CPP_HAS_REF 0x0080 /* If C/C++ has a reference. */
+
+#define sipIsPyOwned(w) ((w)->flags & SIP_PY_OWNED)
+#define sipSetPyOwned(w) ((w)->flags |= SIP_PY_OWNED)
+#define sipResetPyOwned(w) ((w)->flags &= ~SIP_PY_OWNED)
+#define sipIsDerived(w) ((w)->flags & SIP_DERIVED_CLASS)
+#define sipIsIndirect(w) ((w)->flags & SIP_INDIRECT)
+#define sipIsAccessFunc(w) ((w)->flags & SIP_ACCFUNC)
+#define sipNotInMap(w) ((w)->flags & SIP_NOT_IN_MAP)
+#define sipCppHasRef(w) ((w)->flags & SIP_CPP_HAS_REF)
+#define sipSetCppHasRef(w) ((w)->flags |= SIP_CPP_HAS_REF)
+#define sipResetCppHasRef(w) ((w)->flags &= ~SIP_CPP_HAS_REF)
+
+
+#define SIP_TYPE_ABSTRACT 0x0001 /* If the type is abstract. */
+#define SIP_TYPE_SCC 0x0002 /* If the type is subject to sub-class convertors. */
+#define SIP_TYPE_FLAGS_SHIFT 8 /* The user type flags shift. */
+#define SIP_TYPE_FLAGS_MASK 0x0f00 /* The user type flags mask. */
+
+#define sipTypeIsAbstract(wt) ((wt)->type->td_flags & SIP_TYPE_ABSTRACT)
+#define sipTypeHasSCC(wt) ((wt)->type->td_flags & SIP_TYPE_SCC)
+#define sipTypeFlags(wt) (((wt)->type->td_flags & SIP_TYPE_FLAGS_MASK) >> SIP_TYPE_FLAGS_SHIFT)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/python/sip/siplib/sipint.h b/python/sip/siplib/sipint.h
new file mode 100644
index 00000000..97c35631
--- /dev/null
+++ b/python/sip/siplib/sipint.h
@@ -0,0 +1,121 @@
+/*
+ * This file defines the SIP library internal interfaces.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#ifndef _SIPINT_H
+#define _SIPINT_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef TRUE
+#define TRUE 1
+
+#undef FALSE
+#define FALSE 0
+
+
+/*
+ * This defines a single entry in an object map's hash table.
+ */
+typedef struct
+{
+ void *key; /* The C/C++ address. */
+ sipWrapper *first; /* The first object at this address. */
+} sipHashEntry;
+
+
+/*
+ * This defines the interface to a hash table class for mapping C/C++ addresses
+ * to the corresponding wrapped Python object.
+ */
+typedef struct
+{
+ int primeIdx; /* Index into table sizes. */
+ unsigned long size; /* Size of hash table. */
+ unsigned long unused; /* Nr. unused in hash table. */
+ unsigned long stale; /* Nr. stale in hash table. */
+ sipHashEntry *hash_array; /* Current hash table. */
+} sipObjectMap;
+
+
+extern PyInterpreterState *sipInterpreter; /* The interpreter. */
+
+
+extern sipQtAPI *sipQtSupport; /* The Qt support API. */
+extern sipWrapperType *sipQObjectClass; /* The Python QObject class. */
+
+void *sip_api_convert_rx(sipWrapper *txSelf, const char *sigargs,
+ PyObject *rxObj, const char *slot,
+ const char **memberp);
+void *sipGetRx(sipWrapper *txSelf,const char *sigargs,PyObject *rxObj,
+ const char *slot,const char **memberp);
+int sip_api_emit_signal(PyObject *self,const char *sig,PyObject *sigargs);
+PyObject *sip_api_get_sender();
+PyObject *sip_api_connect_rx(PyObject *txObj,const char *sig,
+ PyObject *rxObj,const char *slot, int type);
+PyObject *sip_api_disconnect_rx(PyObject *txObj,const char *sig,
+ PyObject *rxObj,const char *slot);
+sipSignature *sip_api_parse_signature(const char *sig);
+
+
+/*
+ * These are part of the SIP API but are also used within the SIP module.
+ */
+void *sip_api_malloc(size_t nbytes);
+void sip_api_free(void *mem);
+void *sip_api_get_cpp_ptr(sipWrapper *w,sipWrapperType *type);
+PyObject *sip_api_convert_from_instance(void *cppPtr, sipWrapperType *type,
+ PyObject *transferObj);
+void sip_api_start_thread(void);
+void sip_api_end_thread(void);
+PyObject *sip_api_convert_from_void_ptr(void *val);
+PyObject *sip_api_convert_from_named_enum(int eval, PyTypeObject *et);
+int sip_api_wrapper_check(PyObject *o);
+void sip_api_free_connection(sipSlotConnection *conn);
+int sip_api_emit_to_slot(sipSlot *slot, PyObject *sigargs);
+int sip_api_same_connection(sipSlotConnection *conn, void *tx, const char *sig,
+ PyObject *rxObj, const char *slot);
+
+
+/*
+ * These are not part of the SIP API but are used within the SIP module.
+ */
+void sipFreeSlotList(sipSlotList *rx);
+void sipSaveMethod(sipPyMethod *pm,PyObject *meth);
+void *sipGetPending(sipWrapper **op, int *fp);
+PyObject *sipWrapSimpleInstance(void *cppPtr, sipWrapperType *type,
+ sipWrapper *owner, int initflags);
+int sipLambdaSlot(PyObject *slotObj);
+
+void sipOMInit(sipObjectMap *om);
+void sipOMFinalise(sipObjectMap *om);
+sipWrapper *sipOMFindObject(sipObjectMap *om,void *key,sipWrapperType *type);
+void sipOMAddObject(sipObjectMap *om,sipWrapper *val);
+int sipOMRemoveObject(sipObjectMap *om,sipWrapper *val);
+
+void sipSetBool(void *ptr,int val);
+
+void *sipGetAddress(sipWrapper *w);
+void sipFindSigArgType(const char *name, size_t len, sipSigArg *at, int indir);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/python/sip/siplib/siplib.c b/python/sip/siplib/siplib.c
new file mode 100644
index 00000000..d546522c
--- /dev/null
+++ b/python/sip/siplib/siplib.c
@@ -0,0 +1,7902 @@
+/*
+ * SIP library code.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include <Python.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <string.h>
+
+#include "sip.h"
+#include "sipint.h"
+
+
+/*
+ * These are the functions that make up the public and private SIP API.
+ */
+static void sip_api_bad_catcher_result(PyObject *method);
+static void sip_api_bad_length_for_slice(SIP_SSIZE_T seqlen,
+ SIP_SSIZE_T slicelen);
+static PyObject *sip_api_build_result(int *isErr, const char *fmt, ...);
+static PyObject *sip_api_call_method(int *isErr, PyObject *method,
+ const char *fmt, ...);
+static PyObject *sip_api_class_name(PyObject *self);
+static SIP_SSIZE_T sip_api_convert_from_sequence_index(SIP_SSIZE_T idx,
+ SIP_SSIZE_T len);
+static int sip_api_can_convert_to_instance(PyObject *pyObj,
+ sipWrapperType *type, int flags);
+static int sip_api_can_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt, int flags);
+static void *sip_api_convert_to_instance(PyObject *pyObj, sipWrapperType *type,
+ PyObject *transferObj, int flags, int *statep, int *iserrp);
+static void *sip_api_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt, PyObject *transferObj, int flags, int *statep,
+ int *iserrp);
+static void *sip_api_force_convert_to_instance(PyObject *pyObj,
+ sipWrapperType *type, PyObject *transferObj, int flags, int *statep,
+ int *iserrp);
+static void *sip_api_force_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt, PyObject *transferObj, int flags, int *statep,
+ int *iserrp);
+static void sip_api_release_instance(void *cpp, sipWrapperType *type,
+ int state);
+static void sip_api_release_mapped_type(void *cpp, const sipMappedType *mt,
+ int state);
+static PyObject *sip_api_convert_from_new_instance(void *cpp,
+ sipWrapperType *type, PyObject *transferObj);
+static PyObject *sip_api_convert_from_mapped_type(void *cpp,
+ const sipMappedType *mt, PyObject *transferObj);
+static void *sip_api_convert_to_cpp(PyObject *sipSelf, sipWrapperType *type,
+ int *iserrp);
+static int sip_api_get_state(PyObject *transferObj);
+static const sipMappedType *sip_api_find_mapped_type(const char *type);
+static PyObject *sip_api_get_wrapper(void *cppPtr, sipWrapperType *type);
+static sipWrapperType *sip_api_map_int_to_class(int typeInt,
+ const sipIntTypeClassMap *map, int maplen);
+static sipWrapperType *sip_api_map_string_to_class(const char *typeString,
+ const sipStringTypeClassMap *map, int maplen);
+static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
+ const char *fmt, ...);
+static void sip_api_trace(unsigned mask,const char *fmt,...);
+static void sip_api_transfer(PyObject *self, int toCpp);
+static void sip_api_transfer_back(PyObject *self);
+static void sip_api_transfer_to(PyObject *self, PyObject *owner);
+static int sip_api_export_module(sipExportedModuleDef *client,
+ unsigned api_major, unsigned api_minor, PyObject *mod_dict);
+static int sip_api_parse_args(int *argsParsedp, PyObject *sipArgs,
+ const char *fmt, ...);
+static int sip_api_parse_pair(int *argsParsedp, PyObject *sipArg0,
+ PyObject *sipArg1, const char *fmt, ...);
+static void sip_api_common_ctor(sipMethodCache *cache, int nrmeths);
+static void sip_api_common_dtor(sipWrapper *sipSelf);
+static void *sip_api_convert_to_void_ptr(PyObject *obj);
+static void sip_api_no_function(int argsParsed, const char *func);
+static void sip_api_no_method(int argsParsed, const char *classname,
+ const char *method);
+static void sip_api_abstract_method(const char *classname, const char *method);
+static void sip_api_bad_class(const char *classname);
+static void sip_api_bad_set_type(const char *classname, const char *var);
+static void *sip_api_get_complex_cpp_ptr(sipWrapper *w);
+static PyObject *sip_api_is_py_method(sip_gilstate_t *gil,
+ sipMethodCache *pymc, sipWrapper *sipSelf, char *cname, char *mname);
+static void sip_api_call_hook(const char *hookname);
+static void sip_api_raise_unknown_exception(void);
+static void sip_api_raise_class_exception(sipWrapperType *type, void *ptr);
+static void sip_api_raise_sub_class_exception(sipWrapperType *type, void *ptr);
+static int sip_api_add_class_instance(PyObject *dict, const char *name,
+ void *cppPtr, sipWrapperType *wt);
+static int sip_api_add_mapped_type_instance(PyObject *dict, const char *name,
+ void *cppPtr, const sipMappedType *mt);
+static int sip_api_add_enum_instance(PyObject *dict, const char *name,
+ int value, PyTypeObject *type);
+static void sip_api_bad_operator_arg(PyObject *self, PyObject *arg,
+ sipPySlotType st);
+static PyObject *sip_api_pyslot_extend(sipExportedModuleDef *mod,
+ sipPySlotType st, sipWrapperType *type, PyObject *arg0,
+ PyObject *arg1);
+static void sip_api_add_delayed_dtor(sipWrapper *w);
+static unsigned long sip_api_long_as_unsigned_long(PyObject *o);
+static int sip_api_export_symbol(const char *name, void *sym);
+static void *sip_api_import_symbol(const char *name);
+static int sip_api_register_int_types(PyObject *args);
+static sipWrapperType *sip_api_find_class(const char *type);
+static PyTypeObject *sip_api_find_named_enum(const char *type);
+static char sip_api_string_as_char(PyObject *obj);
+#if defined(HAVE_WCHAR_H)
+static wchar_t sip_api_unicode_as_wchar(PyObject *obj);
+static wchar_t *sip_api_unicode_as_wstring(PyObject *obj);
+#else
+static int sip_api_unicode_as_wchar(PyObject *obj);
+static int *sip_api_unicode_as_wstring(PyObject *obj);
+#endif
+
+
+/*
+ * The data structure that represents the SIP API.
+ */
+static const sipAPIDef sip_api = {
+ /* This must be first. */
+ sip_api_export_module,
+ /*
+ * The following are part of the public API.
+ */
+ sip_api_bad_catcher_result,
+ sip_api_bad_length_for_slice,
+ sip_api_build_result,
+ sip_api_call_method,
+ sip_api_class_name,
+ sip_api_connect_rx,
+ sip_api_convert_from_sequence_index,
+ sip_api_can_convert_to_instance,
+ sip_api_can_convert_to_mapped_type,
+ sip_api_convert_to_instance,
+ sip_api_convert_to_mapped_type,
+ sip_api_force_convert_to_instance,
+ sip_api_force_convert_to_mapped_type,
+ sip_api_release_instance,
+ sip_api_release_mapped_type,
+ sip_api_convert_from_instance,
+ sip_api_convert_from_new_instance,
+ sip_api_convert_from_mapped_type,
+ sip_api_convert_to_cpp,
+ sip_api_get_state,
+ sip_api_find_mapped_type,
+ sip_api_disconnect_rx,
+ sip_api_emit_signal,
+ sip_api_free,
+ sip_api_get_sender,
+ sip_api_get_wrapper,
+ sip_api_malloc,
+ sip_api_map_int_to_class,
+ sip_api_map_string_to_class,
+ sip_api_parse_result,
+ sip_api_trace,
+ sip_api_transfer,
+ sip_api_transfer_back,
+ sip_api_transfer_to,
+ sip_api_wrapper_check,
+ sip_api_long_as_unsigned_long,
+ /*
+ * The following may be used by Qt support code but by no other handwritten
+ * code.
+ */
+ sip_api_convert_from_named_enum,
+ sip_api_convert_from_void_ptr,
+ sip_api_free_connection,
+ sip_api_emit_to_slot,
+ sip_api_same_connection,
+ sip_api_convert_rx,
+ /*
+ * The following are not part of the public API.
+ */
+ sip_api_parse_args,
+ sip_api_parse_pair,
+ sip_api_common_ctor,
+ sip_api_common_dtor,
+ sip_api_convert_to_void_ptr,
+ sip_api_no_function,
+ sip_api_no_method,
+ sip_api_abstract_method,
+ sip_api_bad_class,
+ sip_api_bad_set_type,
+ sip_api_get_cpp_ptr,
+ sip_api_get_complex_cpp_ptr,
+ sip_api_is_py_method,
+ sip_api_call_hook,
+ sip_api_start_thread,
+ sip_api_end_thread,
+ sip_api_raise_unknown_exception,
+ sip_api_raise_class_exception,
+ sip_api_raise_sub_class_exception,
+ sip_api_add_class_instance,
+ sip_api_add_enum_instance,
+ sip_api_bad_operator_arg,
+ sip_api_pyslot_extend,
+ sip_api_add_delayed_dtor,
+ sip_api_add_mapped_type_instance,
+ /*
+ * The following are part of the public API.
+ */
+ sip_api_export_symbol,
+ sip_api_import_symbol,
+ /*
+ * The following may be used by Qt support code but by no other handwritten
+ * code.
+ */
+ sip_api_register_int_types,
+ sip_api_parse_signature,
+ /*
+ * The following are part of the public API.
+ */
+ sip_api_find_class,
+ sip_api_find_named_enum,
+ /*
+ * The following are not part of the public API.
+ */
+ sip_api_string_as_char,
+ sip_api_unicode_as_wchar,
+ sip_api_unicode_as_wstring,
+};
+
+
+#define PARSE_OK 0x00000000 /* Parse is Ok so far. */
+#define PARSE_MANY 0x10000000 /* Too many arguments. */
+#define PARSE_FEW 0x20000000 /* Too few arguments. */
+#define PARSE_TYPE 0x30000000 /* Argument with a bad type. */
+#define PARSE_UNBOUND 0x40000000 /* Unbound method. */
+#define PARSE_FORMAT 0x50000000 /* Bad format character. */
+#define PARSE_RAISED 0x60000000 /* Exception already raised. */
+#define PARSE_STICKY 0x80000000 /* The error sticks. */
+#define PARSE_MASK 0xf0000000
+
+/*
+ * Note that some of the following flags safely share values because they
+ * cannot be used at the same time.
+ */
+#define FORMAT_DEREF 0x01 /* The pointer will be dereferenced. */
+#define FORMAT_FACTORY 0x02 /* Implement /Factory/ in a VH. */
+#define FORMAT_TRANSFER 0x02 /* Implement /Transfer/. */
+#define FORMAT_NO_STATE 0x04 /* Don't return the C/C++ state. */
+#define FORMAT_TRANSFER_BACK 0x04 /* Implement /TransferBack/. */
+#define FORMAT_GET_WRAPPER 0x08 /* Implement /GetWrapper/. */
+#define FORMAT_NO_CONVERTORS 0x10 /* Suppress any convertors. */
+#define FORMAT_TRANSFER_THIS 0x20 /* Support for /TransferThis/. */
+
+#define SIP_MC_FOUND 0x01 /* If we have looked for the method. */
+#define SIP_MC_ISMETH 0x02 /* If we looked and there was one. */
+
+#define sipFoundMethod(m) ((m)->mcflags & SIP_MC_FOUND)
+#define sipSetFoundMethod(m) ((m)->mcflags |= SIP_MC_FOUND)
+#define sipIsMethod(m) ((m)->mcflags & SIP_MC_ISMETH)
+#define sipSetIsMethod(m) ((m)->mcflags |= SIP_MC_ISMETH)
+
+
+/*
+ * An entry in a linked list of name/symbol pairs.
+ */
+typedef struct _sipSymbol {
+ const char *name; /* The name. */
+ void *symbol; /* The symbol. */
+ struct _sipSymbol *next; /* The next in the list. */
+} sipSymbol;
+
+
+/*
+ * An entry in a linked list of Python objects.
+ */
+typedef struct _sipPyObject {
+ PyObject *object; /* The Python object. */
+ struct _sipPyObject *next; /* The next in the list. */
+} sipPyObject;
+
+
+static PyTypeObject sipWrapperType_Type;
+static sipWrapperType sipWrapper_Type;
+static PyTypeObject sipVoidPtr_Type;
+
+PyInterpreterState *sipInterpreter = NULL;
+sipQtAPI *sipQtSupport = NULL;
+sipWrapperType *sipQObjectClass;
+sipPyObject *sipRegisteredIntTypes = NULL;
+sipSymbol *sipSymbolList = NULL;
+
+
+/*
+ * Various strings as Python objects created as and when needed.
+ */
+static PyObject *licenseName = NULL;
+static PyObject *licenseeName = NULL;
+static PyObject *typeName = NULL;
+static PyObject *timestampName = NULL;
+static PyObject *signatureName = NULL;
+
+static sipObjectMap cppPyMap; /* The C/C++ to Python map. */
+static sipExportedModuleDef *clientList = NULL; /* List of registered clients. */
+static unsigned traceMask = 0; /* The current trace mask. */
+
+static sipTypeDef *currentType = NULL; /* The type being created. */
+
+
+static void addSlots(sipWrapperType *wt, sipTypeDef *td);
+static void initSlots(PyTypeObject *to, PyNumberMethods *nb,
+ PySequenceMethods *sq, PyMappingMethods *mp, sipPySlotDef *slots,
+ int force);
+static void *findSlot(PyObject *self, sipPySlotType st);
+static void *findSlotInType(sipTypeDef *td, sipPySlotType st);
+static int objobjargprocSlot(PyObject *self, PyObject *arg1, PyObject *arg2,
+ sipPySlotType st);
+static int ssizeobjargprocSlot(PyObject *self, SIP_SSIZE_T arg1,
+ PyObject *arg2, sipPySlotType st);
+static PyObject *buildObject(PyObject *tup, const char *fmt, va_list va);
+static int parsePass1(sipWrapper **selfp, int *selfargp, int *argsParsedp,
+ PyObject *sipArgs, const char *fmt, va_list va);
+static int parsePass2(sipWrapper *self, int selfarg, int nrargs,
+ PyObject *sipArgs, const char *fmt, va_list va);
+static int getSelfFromArgs(sipWrapperType *type, PyObject *args, int argnr,
+ sipWrapper **selfp);
+static PyObject *createEnumMember(sipTypeDef *td, sipEnumMemberDef *enm);
+static PyObject *handleGetLazyAttr(PyObject *nameobj, sipWrapperType *wt,
+ sipWrapper *w);
+static int handleSetLazyAttr(PyObject *nameobj, PyObject *valobj,
+ sipWrapperType *wt, sipWrapper *w);
+static int getNonStaticVariables(sipWrapperType *wt, sipWrapper *w,
+ PyObject **ndict);
+static void findLazyAttr(sipWrapperType *wt, char *name, PyMethodDef **pmdp,
+ sipEnumMemberDef **enmp, PyMethodDef **vmdp, sipTypeDef **in);
+static int compareMethodName(const void *key, const void *el);
+static int compareEnumMemberName(const void *key, const void *el);
+static int checkPointer(void *ptr);
+static void *cast_cpp_ptr(void *ptr, sipWrapperType *src_type,
+ sipWrapperType *dst_type);
+static void badArgs(int argsParsed, const char *classname, const char *method);
+static void finalise(void);
+static sipWrapperType *createType(sipExportedModuleDef *client,
+ sipTypeDef *type, PyObject *mod_dict);
+static PyTypeObject *createEnum(sipExportedModuleDef *client, sipEnumDef *ed,
+ PyObject *mod_dict);
+static const char *getBaseName(const char *name);
+static PyObject *getBaseNameObject(const char *name);
+static PyObject *createTypeDict(PyObject *mname);
+static sipExportedModuleDef *getClassModule(sipEncodedClassDef *enc,
+ sipExportedModuleDef *em);
+static sipWrapperType *getClassType(sipEncodedClassDef *enc,
+ sipExportedModuleDef *em);
+static sipWrapperType *convertSubClass(sipWrapperType *type, void **cppPtr);
+static void *getPtrTypeDef(sipWrapper *self, sipTypeDef **td);
+static int addInstances(PyObject *dict, sipInstancesDef *id);
+static int addVoidPtrInstances(PyObject *dict, sipVoidPtrInstanceDef *vi);
+static int addCharInstances(PyObject *dict, sipCharInstanceDef *ci);
+static int addStringInstances(PyObject *dict, sipStringInstanceDef *si);
+static int addIntInstances(PyObject *dict, sipIntInstanceDef *ii);
+static int addLongInstances(PyObject *dict, sipLongInstanceDef *li);
+static int addUnsignedLongInstances(PyObject *dict,
+ sipUnsignedLongInstanceDef *uli);
+static int addLongLongInstances(PyObject *dict, sipLongLongInstanceDef *lli);
+static int addUnsignedLongLongInstances(PyObject *dict,
+ sipUnsignedLongLongInstanceDef *ulli);
+static int addDoubleInstances(PyObject *dict, sipDoubleInstanceDef *di);
+static int addEnumInstances(PyObject *dict, sipEnumInstanceDef *ei);
+static int addSingleEnumInstance(PyObject *dict, const char *name, int value,
+ PyTypeObject *type);
+static int addClassInstances(PyObject *dict, sipClassInstanceDef *ci);
+static int addSingleClassInstance(PyObject *dict, const char *name,
+ void *cppPtr, sipWrapperType *wt, int initflags);
+static int addLicense(PyObject *dict, sipLicenseDef *lc);
+static PyObject *cast(PyObject *self, PyObject *args);
+static PyObject *callDtor(PyObject *self, PyObject *args);
+static PyObject *isDeleted(PyObject *self, PyObject *args);
+static PyObject *setDeleted(PyObject *self, PyObject *args);
+static PyObject *setTraceMask(PyObject *self, PyObject *args);
+static PyObject *wrapInstance(PyObject *self, PyObject *args);
+static PyObject *unwrapInstance(PyObject *self, PyObject *args);
+static PyObject *transfer(PyObject *self, PyObject *args);
+static PyObject *transferBack(PyObject *self, PyObject *args);
+static PyObject *transferTo(PyObject *self, PyObject *args);
+static int sipWrapperType_Check(PyObject *op);
+static void addToParent(sipWrapper *self, sipWrapper *owner);
+static void removeFromParent(sipWrapper *self);
+static sipWrapperType *findClass(sipExportedModuleDef *emd, const char *name,
+ size_t len);
+static int findClassArg(sipExportedModuleDef *emd, const char *name,
+ size_t len, sipSigArg *at, int indir);
+static int findMtypeArg(sipMappedType **mttab, const char *name, size_t len,
+ sipSigArg *at, int indir);
+static PyTypeObject *findEnum(sipExportedModuleDef *emd, const char *name,
+ size_t len);
+static int findEnumArg(sipExportedModuleDef *emd, const char *name, size_t len,
+ sipSigArg *at, int indir);
+static int sameScopedName(const char *pyname, const char *name, size_t len);
+static int nameEq(const char *with, const char *name, size_t len);
+static int isExactWrappedType(sipWrapperType *wt);
+static void release(void *addr, sipTypeDef *td, int state);
+static void callPyDtor(sipWrapper *self);
+static int qt_and_sip_api_3_4(void);
+static int visitSlot(sipSlot *slot, visitproc visit, void *arg);
+static void clearAnyLambda(sipSlot *slot);
+static int parseCharArray(PyObject *obj, char **ap, int *aszp);
+static int parseChar(PyObject *obj, char *ap);
+static int parseCharString(PyObject *obj, char **ap);
+#if defined(HAVE_WCHAR_H)
+static int parseWCharArray(PyObject *obj, wchar_t **ap, int *aszp);
+static int parseWChar(PyObject *obj, wchar_t *ap);
+static int parseWCharString(PyObject *obj, wchar_t **ap);
+#else
+static void raiseNoWChar();
+#endif
+
+
+/*
+ * The Python module initialisation function.
+ */
+#if defined(SIP_STATIC_MODULE)
+void initsip(void)
+#else
+PyMODINIT_FUNC initsip(void)
+#endif
+{
+ static PyMethodDef methods[] = {
+ {"cast", cast, METH_VARARGS, NULL},
+ {"delete", callDtor, METH_VARARGS, NULL},
+ {"isdeleted", isDeleted, METH_VARARGS, NULL},
+ {"setdeleted", setDeleted, METH_VARARGS, NULL},
+ {"settracemask", setTraceMask, METH_VARARGS, NULL},
+ {"transfer", transfer, METH_VARARGS, NULL},
+ {"transferback", transferBack, METH_VARARGS, NULL},
+ {"transferto", transferTo, METH_VARARGS, NULL},
+ {"wrapinstance", wrapInstance, METH_VARARGS, NULL},
+ {"unwrapinstance", unwrapInstance, METH_VARARGS, NULL},
+ {NULL, NULL, 0, NULL}
+ };
+
+ int rc;
+ PyObject *mod, *mod_dict, *obj;
+
+#ifdef WITH_THREAD
+ PyEval_InitThreads();
+#endif
+
+ /* Initialise the types. */
+ sipWrapperType_Type.tp_base = &PyType_Type;
+
+ if (PyType_Ready(&sipWrapperType_Type) < 0)
+ Py_FatalError("sip: Failed to initialise sip.wrappertype type");
+
+ if (PyType_Ready((PyTypeObject *)&sipWrapper_Type) < 0)
+ Py_FatalError("sip: Failed to initialise sip.wrapper type");
+
+ if (PyType_Ready(&sipVoidPtr_Type) < 0)
+ Py_FatalError("sip: Failed to initialise sip.voidptr type");
+
+ mod = Py_InitModule("sip", methods);
+ mod_dict = PyModule_GetDict(mod);
+
+ /* Publish the SIP API. */
+ if ((obj = PyCObject_FromVoidPtr((void *)&sip_api, NULL)) == NULL)
+ Py_FatalError("sip: Failed to create _C_API object");
+
+ rc = PyDict_SetItemString(mod_dict, "_C_API", obj);
+ Py_DECREF(obj);
+
+ if (rc < 0)
+ Py_FatalError("sip: Failed to add _C_API object to module dictionary");
+
+ /* Add the SIP version number, but don't worry about errors. */
+ if ((obj = PyInt_FromLong(SIP_VERSION)) != NULL)
+ {
+ PyDict_SetItemString(mod_dict, "SIP_VERSION", obj);
+ Py_DECREF(obj);
+ }
+
+ if ((obj = PyString_FromString(SIP_VERSION_STR)) != NULL)
+ {
+ PyDict_SetItemString(mod_dict, "SIP_VERSION_STR", obj);
+ Py_DECREF(obj);
+ }
+
+ /* Add the type objects, but don't worry about errors. */
+ PyDict_SetItemString(mod_dict, "wrappertype", (PyObject *)&sipWrapperType_Type);
+ PyDict_SetItemString(mod_dict, "wrapper", (PyObject *)&sipWrapper_Type);
+ PyDict_SetItemString(mod_dict, "voidptr", (PyObject *)&sipVoidPtr_Type);
+
+ /* Initialise the module if it hasn't already been done. */
+ if (sipInterpreter == NULL)
+ {
+ Py_AtExit(finalise);
+
+ /* Initialise the object map. */
+ sipOMInit(&cppPyMap);
+
+ sipQtSupport = NULL;
+
+ /*
+ * Get the current interpreter. This will be shared between all
+ * threads.
+ */
+ sipInterpreter = PyThreadState_Get()->interp;
+ }
+}
+
+
+/*
+ * Display a printf() style message to stderr according to the current trace
+ * mask.
+ */
+static void sip_api_trace(unsigned mask, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap,fmt);
+
+ if (mask & traceMask)
+ vfprintf(stderr, fmt, ap);
+
+ va_end(ap);
+}
+
+
+/*
+ * Set the trace mask.
+ */
+static PyObject *setTraceMask(PyObject *self, PyObject *args)
+{
+ unsigned new_mask;
+
+ if (PyArg_ParseTuple(args, "I:settracemask", &new_mask))
+ {
+ traceMask = new_mask;
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Transfer the ownership of an instance to C/C++.
+ */
+static PyObject *transferTo(PyObject *self, PyObject *args)
+{
+ PyObject *w, *owner;
+
+ if (PyArg_ParseTuple(args, "O!O:transferto", &sipWrapper_Type, &w, &owner))
+ {
+ if (owner == Py_None)
+ owner = NULL;
+ else if (!sip_api_wrapper_check(owner))
+ {
+ PyErr_Format(PyExc_TypeError, "transferto() argument 2 must be sip.wrapper, not %s", owner->ob_type->tp_name);
+ return NULL;
+ }
+
+ sip_api_transfer_to(w, owner);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Transfer the ownership of an instance to Python.
+ */
+static PyObject *transferBack(PyObject *self, PyObject *args)
+{
+ PyObject *w;
+
+ if (PyArg_ParseTuple(args, "O!:transferback", &sipWrapper_Type, &w))
+ {
+ sip_api_transfer_back(w);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Transfer the ownership of an instance. This is deprecated.
+ */
+static PyObject *transfer(PyObject *self, PyObject *args)
+{
+ PyObject *w;
+ int toCpp;
+
+ if (PyArg_ParseTuple(args, "O!i:transfer", &sipWrapper_Type, &w, &toCpp))
+ {
+ if (toCpp)
+ sip_api_transfer_to(w, NULL);
+ else
+ sip_api_transfer_back(w);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Cast an instance to one of it's sub or super-classes by returning a new
+ * Python object with the superclass type wrapping the same C++ instance.
+ */
+static PyObject *cast(PyObject *self, PyObject *args)
+{
+ sipWrapper *w;
+ sipWrapperType *wt, *type;
+ void *addr;
+ PyTypeObject *ft, *tt;
+
+ if (!PyArg_ParseTuple(args, "O!O!:cast", &sipWrapper_Type, &w, &sipWrapperType_Type, &wt))
+ return NULL;
+
+ ft = ((PyObject *)w)->ob_type;
+ tt = (PyTypeObject *)wt;
+
+ if (ft == tt || PyType_IsSubtype(tt, ft))
+ type = NULL;
+ else if (PyType_IsSubtype(ft, tt))
+ type = wt;
+ else
+ {
+ PyErr_SetString(PyExc_TypeError, "argument 1 of sip.cast() must be an instance of a sub or super-type of argument 2");
+ return NULL;
+ }
+
+ if ((addr = sip_api_get_cpp_ptr(w, type)) == NULL)
+ return NULL;
+
+ /*
+ * We don't put this new object into the map so that the original object is
+ * always found. It would also totally confuse the map logic.
+ */
+ return sipWrapSimpleInstance(addr, wt, NULL, (w->flags | SIP_NOT_IN_MAP) & ~SIP_PY_OWNED);
+}
+
+
+/*
+ * Call an instance's dtor.
+ */
+static PyObject *callDtor(PyObject *self, PyObject *args)
+{
+ sipWrapper *w;
+ void *addr;
+ sipTypeDef *td;
+
+ if (!PyArg_ParseTuple(args, "O!:delete", &sipWrapper_Type, &w))
+ return NULL;
+
+ addr = getPtrTypeDef(w, &td);
+
+ if (checkPointer(addr) < 0)
+ return NULL;
+
+ /*
+ * Transfer ownership to C++ so we don't try to release it again when the
+ * Python object is garbage collected.
+ */
+ removeFromParent(w);
+ sipResetPyOwned(w);
+
+ release(addr, td, w->flags);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+/*
+ * Check if an instance still exists without raising an exception.
+ */
+static PyObject *isDeleted(PyObject *self, PyObject *args)
+{
+ sipWrapper *w;
+ PyObject *res;
+
+ if (!PyArg_ParseTuple(args, "O!:isdeleted", &sipWrapper_Type, &w))
+ return NULL;
+
+ res = (sipGetAddress(w) == NULL ? Py_True : Py_False);
+
+ Py_INCREF(res);
+ return res;
+}
+
+
+/*
+ * Mark an instance as having been deleted.
+ */
+static PyObject *setDeleted(PyObject *self, PyObject *args)
+{
+ sipWrapper *w;
+
+ if (!PyArg_ParseTuple(args, "O!:setdeleted", &sipWrapper_Type, &w))
+ return NULL;
+
+ /*
+ * Transfer ownership to C++ so we don't try to release it when the Python
+ * object is garbage collected.
+ */
+ removeFromParent(w);
+ sipResetPyOwned(w);
+
+ w->u.cppPtr = NULL;
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+/*
+ * Unwrap an instance.
+ */
+static PyObject *unwrapInstance(PyObject *self, PyObject *args)
+{
+ sipWrapper *w;
+
+ if (PyArg_ParseTuple(args, "O!:unwrapinstance", &sipWrapper_Type, &w))
+ {
+ void *addr;
+
+ /*
+ * We just get the pointer but don't try and cast it (which isn't
+ * needed and wouldn't work with the way casts are currently
+ * implemented if we are unwrapping something derived from a wrapped
+ * class).
+ */
+ if ((addr = sip_api_get_cpp_ptr(w, NULL)) == NULL)
+ return NULL;
+
+ return PyLong_FromVoidPtr(addr);
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Wrap an instance.
+ */
+static PyObject *wrapInstance(PyObject *self, PyObject *args)
+{
+ unsigned long addr;
+ sipWrapperType *wt;
+
+ if (PyArg_ParseTuple(args, "kO!:wrapinstance", &addr, &sipWrapperType_Type, &wt))
+ return sip_api_convert_from_instance((void *)addr, wt, NULL);
+
+ return NULL;
+}
+
+
+/*
+ * Register a client module. A negative value is returned and an exception
+ * raised if there was an error. Not normally needed by handwritten code.
+ */
+static int sip_api_export_module(sipExportedModuleDef *client,
+ unsigned api_major, unsigned api_minor, PyObject *mod_dict)
+{
+ sipExportedModuleDef *em;
+ sipImportedModuleDef *im;
+ sipSubClassConvertorDef *scc;
+ sipWrapperType **mw;
+ sipEnumMemberDef *emd;
+ sipInitExtenderDef *ie;
+ int i;
+
+ /* Check that we can support it. */
+
+ if (api_major != SIP_API_MAJOR_NR || api_minor > SIP_API_MINOR_NR)
+ {
+#if SIP_API_MINOR_NR > 0
+ PyErr_Format(PyExc_RuntimeError, "the sip module supports API v%d.0 to v%d.%d but the %s module requires API v%d.%d", SIP_API_MAJOR_NR, SIP_API_MAJOR_NR, SIP_API_MINOR_NR, client->em_name, api_major,api_minor);
+#else
+ PyErr_Format(PyExc_RuntimeError, "the sip module supports API v%d.0 but the %s module requires API v%d.%d", SIP_API_MAJOR_NR, client->em_name, api_major,api_minor);
+#endif
+
+ return -1;
+ }
+
+ /* Convert the module name to an object. */
+ if ((client->em_nameobj = PyString_FromString(client->em_name)) == NULL)
+ return -1;
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ /* SIP clients must have unique names. */
+ if (strcmp(em->em_name, client->em_name) == 0)
+ {
+ PyErr_Format(PyExc_RuntimeError, "the sip module has already registered a module called %s", client->em_name);
+
+ return -1;
+ }
+
+ /* Only one module can claim to wrap QObject. */
+ if (em->em_qt_api != NULL && client->em_qt_api != NULL)
+ {
+ PyErr_Format(PyExc_RuntimeError, "the %s and %s modules both wrap the QObject class", client->em_name, em->em_name);
+
+ return -1;
+ }
+ }
+
+ /* Import any required modules. */
+ if ((im = client->em_imports) != NULL)
+ {
+ while (im->im_name != NULL)
+ {
+ PyObject *mod;
+
+ if ((mod = PyImport_ImportModule(im->im_name)) == NULL)
+ return -1;
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ if (strcmp(em->em_name, im->im_name) == 0)
+ break;
+
+ if (em == NULL)
+ {
+ PyErr_Format(PyExc_RuntimeError, "the %s module failed to register with the sip module", im->im_name);
+
+ return -1;
+ }
+
+ /* Check the versions are compatible. */
+ if (im->im_version >= 0 || em->em_version >= 0)
+ if (im->im_version != em->em_version)
+ {
+ PyErr_Format(PyExc_RuntimeError, "the %s module is version %d but the %s module requires version %d", em->em_name, em->em_version, client->em_name, im->im_version);
+
+ return -1;
+ }
+
+ /* Save the imported module. */
+ im->im_module = em;
+
+ ++im;
+ }
+ }
+
+ /* Create the module's classes. */
+ if ((mw = client->em_types) != NULL)
+ for (i = 0; i < client->em_nrtypes; ++i, ++mw)
+ {
+ sipTypeDef *td = (sipTypeDef *)*mw;
+
+ /* Skip external classes. */
+ if (td == NULL)
+ continue;
+
+ /* See if this is a namespace extender. */
+ if (td->td_name == NULL)
+ {
+ sipTypeDef **last;
+ sipWrapperType *wt = getClassType(&td->td_scope, client);
+
+ /* Append this type to the real one. */
+ last = &wt->type->td_nsextender;
+
+ while (*last != NULL)
+ last = &(*last)->td_nsextender;
+
+ *last = td;
+
+ /*
+ * Set this so that the extender's original
+ * module can be found.
+ */
+ td->td_module = client;
+
+ /*
+ * Save the real namespace type so that it is
+ * the correct scope for any enums or classes
+ * defined in this module.
+ */
+ *mw = wt;
+ }
+ else if ((*mw = createType(client, td, mod_dict)) == NULL)
+ return -1;
+ }
+
+ /* Set any Qt support API. */
+ if (client->em_qt_api != NULL)
+ {
+ sipQtSupport = client->em_qt_api;
+ sipQObjectClass = *sipQtSupport->qt_qobject;
+ }
+
+ /* Append any initialiser extenders to the relevant classes. */
+ if ((ie = client->em_initextend) != NULL)
+ while (ie->ie_extender != NULL)
+ {
+ sipWrapperType *wt = getClassType(&ie->ie_class, client);
+
+ ie->ie_next = wt->iextend;
+ wt->iextend = ie;
+
+ ++ie;
+ }
+
+ /* Set the base class object for any sub-class convertors. */
+ if ((scc = client->em_convertors) != NULL)
+ while (scc->scc_convertor != NULL)
+ {
+ scc->scc_basetype = getClassType(&scc->scc_base, client);
+
+ ++scc;
+ }
+
+ /* Create the module's enums. */
+ if (client->em_nrenums != 0)
+ {
+ if ((client->em_enums = sip_api_malloc(client->em_nrenums * sizeof (PyTypeObject *))) == NULL)
+ return -1;
+
+ for (i = 0; i < client->em_nrenums; ++i)
+ if ((client->em_enums[i] = createEnum(client, &client->em_enumdefs[i], mod_dict)) == NULL)
+ return -1;
+ }
+
+ for (emd = client->em_enummembers, i = 0; i < client->em_nrenummembers; ++i, ++emd)
+ {
+ PyObject *mo;
+
+ if ((mo = sip_api_convert_from_named_enum(emd->em_val, client->em_enums[emd->em_enum])) == NULL)
+ return -1;
+
+ if (PyDict_SetItemString(mod_dict, emd->em_name, mo) < 0)
+ return -1;
+
+ Py_DECREF(mo);
+ }
+
+
+ /*
+ * Add any class static instances. We need to do this once all types are
+ * fully formed because of potential interdependencies.
+ */
+ if ((mw = client->em_types) != NULL)
+ for (i = 0; i < client->em_nrtypes; ++i)
+ {
+ sipWrapperType *wt;
+
+ if ((wt = *mw++) != NULL && addInstances(((PyTypeObject *)wt)->tp_dict, &wt->type->td_instances) < 0)
+ return -1;
+ }
+
+ /* Add any global static instances. */
+ if (addInstances(mod_dict, &client->em_instances) < 0)
+ return -1;
+
+ /* Add any license. */
+ if (client->em_license != NULL && addLicense(mod_dict, client->em_license) < 0)
+ return -1;
+
+ /* See if the new module satisfies any outstanding external types. */
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipExternalTypeDef *etd;
+
+ if (em->em_external == NULL)
+ continue;
+
+ for (etd = em->em_external; etd->et_nr >= 0; ++etd)
+ {
+ if (etd->et_name == NULL)
+ continue;
+
+ mw = client->em_types;
+
+ for (i = 0; i < client->em_nrtypes; ++i)
+ {
+ sipWrapperType *wt;
+ const char *tname;
+
+ if ((wt = *mw++) == NULL)
+ continue;
+
+ tname = strchr(wt->type->td_name, '.') + 1;
+
+ if (strcmp(etd->et_name, tname) == 0)
+ {
+ em->em_types[etd->et_nr] = wt;
+ etd->et_name = NULL;
+
+ break;
+ }
+ }
+ }
+ }
+
+ /* Add to the list of client modules. */
+ client->em_next = clientList;
+ clientList = client;
+
+ return 0;
+}
+
+
+/*
+ * Called by the interpreter to do any final clearing up, just in case the
+ * interpreter will re-start.
+ */
+static void finalise(void)
+{
+ sipExportedModuleDef *em;
+
+ /* Mark the Python API as unavailable. */
+ sipInterpreter = NULL;
+
+ /* Handle any delayed dtors. */
+ for (em = clientList; em != NULL; em = em->em_next)
+ if (em->em_ddlist != NULL)
+ {
+ em->em_delayeddtors(em->em_ddlist);
+
+ /* Free the list. */
+ do
+ {
+ sipDelayedDtor *dd = em->em_ddlist;
+
+ em->em_ddlist = dd->dd_next;
+ sip_api_free(dd);
+ }
+ while (em->em_ddlist != NULL);
+ }
+
+ licenseName = NULL;
+ licenseeName = NULL;
+ typeName = NULL;
+ timestampName = NULL;
+ signatureName = NULL;
+
+ /* Release all memory we've allocated directly. */
+ sipOMFinalise(&cppPyMap);
+
+ /* Re-initialise those globals that (might) need it. */
+ clientList = NULL;
+}
+
+
+/*
+ * Add a wrapped C/C++ pointer to the list of delayed dtors.
+ */
+static void sip_api_add_delayed_dtor(sipWrapper *w)
+{
+ void *ptr;
+ sipTypeDef *td;
+ sipExportedModuleDef *em;
+
+ if ((ptr = getPtrTypeDef(w, &td)) == NULL)
+ return;
+
+ /* Find the defining module. */
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ int i;
+
+ for (i = 0; i < em->em_nrtypes; ++i)
+ if (em->em_types[i] != NULL && em->em_types[i]->type == td)
+ {
+ sipDelayedDtor *dd;
+
+ if ((dd = sip_api_malloc(sizeof (sipDelayedDtor))) == NULL)
+ return;
+
+ /* Add to the list. */
+ dd->dd_ptr = ptr;
+ dd->dd_name = getBaseName(td->td_name);
+ dd->dd_isderived = sipIsDerived(w);
+ dd->dd_next = em->em_ddlist;
+
+ em->em_ddlist = dd;
+
+ return;
+ }
+ }
+}
+
+
+/*
+ * A wrapper around the Python memory allocater that will raise an exception if
+ * if the allocation fails.
+ */
+void *sip_api_malloc(size_t nbytes)
+{
+ void *mem;
+
+ if ((mem = PyMem_Malloc(nbytes)) == NULL)
+ PyErr_NoMemory();
+
+ return mem;
+}
+
+
+/*
+ * A wrapper around the Python memory de-allocater.
+ */
+void sip_api_free(void *mem)
+{
+ PyMem_Free(mem);
+}
+
+
+/*
+ * Extend a Python slot by looking in other modules to see if there is an
+ * extender function that can handle the arguments.
+ */
+static PyObject *sip_api_pyslot_extend(sipExportedModuleDef *mod,
+ sipPySlotType st, sipWrapperType *type,
+ PyObject *arg0, PyObject *arg1)
+{
+ sipExportedModuleDef *em;
+
+ /* Go through each module. */
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipPySlotExtenderDef *ex;
+
+ /* Skip the module that couldn't handle the arguments. */
+ if (em == mod)
+ continue;
+
+ /* Skip if the module doesn't have any extenders. */
+ if (em->em_slotextend == NULL)
+ continue;
+
+ /* Go through each extender. */
+ for (ex = em->em_slotextend; ex->pse_func != NULL; ++ex)
+ {
+ PyObject *res;
+
+ /* Skip if not the right slot type. */
+ if (ex->pse_type != st)
+ continue;
+
+ /* Check against the type if one was given. */
+ if (type != NULL && type != getClassType(&ex->pse_class, NULL))
+ continue;
+
+ PyErr_Clear();
+
+ res = ((binaryfunc)ex->pse_func)(arg0, arg1);
+
+ if (res != Py_NotImplemented)
+ return res;
+ }
+ }
+
+ /* The arguments couldn't handled anywhere. */
+ PyErr_Clear();
+
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+}
+
+
+/*
+ * Call the Python re-implementation of a C++ virtual.
+ */
+static PyObject *sip_api_call_method(int *isErr, PyObject *method,
+ const char *fmt, ...)
+{
+ PyObject *args, *res;
+ va_list va;
+
+ va_start(va,fmt);
+
+ if ((args = PyTuple_New(strlen(fmt))) != NULL && buildObject(args,fmt,va) != NULL)
+ res = PyEval_CallObject(method,args);
+ else
+ {
+ res = NULL;
+
+ if (isErr != NULL)
+ *isErr = TRUE;
+ }
+
+ Py_XDECREF(args);
+
+ va_end(va);
+
+ return res;
+}
+
+
+/*
+ * Build a result object based on a format string.
+ */
+static PyObject *sip_api_build_result(int *isErr, const char *fmt, ...)
+{
+ PyObject *res = NULL;
+ int badfmt, tupsz;
+ va_list va;
+
+ va_start(va,fmt);
+
+ /* Basic validation of the format string. */
+
+ badfmt = FALSE;
+
+ if (*fmt == '(')
+ {
+ char *ep;
+
+ if ((ep = strchr(fmt,')')) == NULL || ep[1] != '\0')
+ badfmt = TRUE;
+ else
+ tupsz = ep - fmt - 1;
+ }
+ else if (strlen(fmt) == 1)
+ tupsz = -1;
+ else
+ badfmt = TRUE;
+
+ if (badfmt)
+ PyErr_Format(PyExc_SystemError,"sipBuildResult(): invalid format string \"%s\"",fmt);
+ else if (tupsz < 0 || (res = PyTuple_New(tupsz)) != NULL)
+ res = buildObject(res,fmt,va);
+
+ va_end(va);
+
+ if (res == NULL && isErr != NULL)
+ *isErr = TRUE;
+
+ return res;
+}
+
+
+/*
+ * Get the values off the stack and put them into an object.
+ */
+static PyObject *buildObject(PyObject *obj, const char *fmt, va_list va)
+{
+ char ch, termch;
+ int i;
+
+ /*
+ * The format string has already been checked that it is properly
+ * formed if it is enclosed in parenthesis.
+ */
+ if (*fmt == '(')
+ {
+ termch = ')';
+ ++fmt;
+ }
+ else
+ termch = '\0';
+
+ i = 0;
+
+ while ((ch = *fmt++) != termch)
+ {
+ PyObject *el;
+
+ switch (ch)
+ {
+ case 'a':
+ {
+ char *s;
+ int l;
+
+ s = va_arg(va, char *);
+ l = va_arg(va, int);
+
+ if (s != NULL)
+ el = PyString_FromStringAndSize(s, (SIP_SSIZE_T)l);
+ else
+ {
+ Py_INCREF(Py_None);
+ el = Py_None;
+ }
+ }
+
+ break;
+
+ case 'A':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t *s;
+ int l;
+
+ s = va_arg(va, wchar_t *);
+ l = va_arg(va, int);
+
+ if (s != NULL)
+ el = PyUnicode_FromWideChar(s, (SIP_SSIZE_T)l);
+ else
+ {
+ Py_INCREF(Py_None);
+ el = Py_None;
+ }
+ }
+#else
+ raiseNoWChar();
+ el = NULL;
+#endif
+
+ break;
+
+ case 'b':
+ el = PyBool_FromLong(va_arg(va,int));
+ break;
+
+ case 'c':
+ {
+ char c = va_arg(va, int);
+
+ el = PyString_FromStringAndSize(&c,1);
+ }
+
+ break;
+
+ case 'w':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t c = va_arg(va, int);
+
+ el = PyUnicode_FromWideChar(&c, 1);
+ }
+#else
+ raiseNoWChar();
+ el = NULL;
+#endif
+
+ break;
+
+ case 'e':
+ el = PyInt_FromLong(va_arg(va,int));
+ break;
+
+ case 'E':
+ {
+ int ev = va_arg(va, int);
+ PyTypeObject *et = va_arg(va, PyTypeObject *);
+
+ el = sip_api_convert_from_named_enum(ev, et);
+ }
+
+ break;
+
+ case 'd':
+ case 'f':
+ el = PyFloat_FromDouble(va_arg(va,double));
+ break;
+
+ case 'h':
+ case 'i':
+ el = PyInt_FromLong(va_arg(va,int));
+ break;
+
+ case 'l':
+ el = PyLong_FromLong(va_arg(va,long));
+ break;
+
+ case 'm':
+ el = PyLong_FromUnsignedLong(va_arg(va, unsigned long));
+ break;
+
+ case 'n':
+#if defined(HAVE_LONG_LONG)
+ el = PyLong_FromLongLong(va_arg(va, PY_LONG_LONG));
+#else
+ el = PyLong_FromLong(va_arg(va, long));
+#endif
+ break;
+
+ case 'o':
+#if defined(HAVE_LONG_LONG)
+ el = PyLong_FromUnsignedLongLong(va_arg(va, unsigned PY_LONG_LONG));
+#else
+ el = PyLong_FromUnsignedLong(va_arg(va, unsigned long));
+#endif
+ break;
+
+ case 's':
+ {
+ char *s = va_arg(va, char *);
+
+ if (s != NULL)
+ el = PyString_FromString(s);
+ else
+ {
+ Py_INCREF(Py_None);
+ el = Py_None;
+ }
+ }
+
+ break;
+
+ case 'x':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t *s = va_arg(va, wchar_t *);
+
+ if (s != NULL)
+ el = PyUnicode_FromWideChar(s, (SIP_SSIZE_T)wcslen(s));
+ else
+ {
+ Py_INCREF(Py_None);
+ el = Py_None;
+ }
+ }
+#else
+ raiseNoWChar();
+ el = NULL;
+#endif
+
+ break;
+
+ case 't':
+ case 'u':
+ el = PyLong_FromUnsignedLong(va_arg(va, unsigned));
+ break;
+
+ case 'B':
+ {
+ void *p = va_arg(va,void *);
+ sipWrapperType *wt = va_arg(va, sipWrapperType *);
+ PyObject *xfer = va_arg(va, PyObject *);
+
+ el = sip_api_convert_from_new_instance(p, wt, xfer);
+ }
+
+ break;
+
+ case 'C':
+ {
+ void *p = va_arg(va,void *);
+ sipWrapperType *wt = va_arg(va, sipWrapperType *);
+ PyObject *xfer = va_arg(va, PyObject *);
+
+ el = sip_api_convert_from_instance(p, wt, xfer);
+ }
+
+ break;
+
+ case 'D':
+ {
+ void *p = va_arg(va, void *);
+ const sipMappedType *mt = va_arg(va, const sipMappedType *);
+ PyObject *xfer = va_arg(va, PyObject *);
+
+ el = sip_api_convert_from_mapped_type(p, mt, xfer);
+ }
+
+ break;
+
+ case 'M':
+ case 'O':
+ {
+ void *sipCpp = va_arg(va,void *);
+ sipWrapperType *wt = va_arg(va,sipWrapperType *);
+
+ el = sip_api_convert_from_instance(sipCpp,wt,NULL);
+ }
+
+ break;
+
+ case 'N':
+ case 'P':
+ {
+ void *sipCpp = va_arg(va,void *);
+ sipWrapperType *wt = va_arg(va,sipWrapperType *);
+
+ el = sip_api_convert_from_new_instance(sipCpp,wt,NULL);
+ }
+
+ break;
+
+ case 'R':
+ el = va_arg(va,PyObject *);
+ break;
+
+ case 'S':
+ el = va_arg(va,PyObject *);
+ Py_INCREF(el);
+ break;
+
+ case 'T':
+ {
+ void *sipCpp = va_arg(va,void *);
+ sipConvertFromFunc func = va_arg(va,sipConvertFromFunc);
+
+ el = func(sipCpp, NULL);
+ }
+
+ break;
+
+ case 'V':
+ el = sip_api_convert_from_void_ptr(va_arg(va,void *));
+ break;
+
+ default:
+ PyErr_Format(PyExc_SystemError,"buildObject(): invalid format character '%c'",ch);
+ el = NULL;
+ }
+
+ if (el == NULL)
+ {
+ Py_XDECREF(obj);
+ return NULL;
+ }
+
+ if (obj == NULL)
+ return el;
+
+ PyTuple_SET_ITEM(obj,i,el);
+ ++i;
+ }
+
+ return obj;
+}
+
+
+/*
+ * Parse a result object based on a format string.
+ */
+static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
+ const char *fmt, ...)
+{
+ int tupsz, rc = 0;
+ va_list va;
+
+ va_start(va,fmt);
+
+ /* Basic validation of the format string. */
+
+ if (*fmt == '(')
+ {
+ char *ep;
+
+ if ((ep = strchr(fmt,')')) == NULL || ep[1] != '\0')
+ {
+ PyErr_Format(PyExc_SystemError, "sipParseResult(): invalid format string \"%s\"", fmt);
+ rc = -1;
+ }
+ else
+ {
+ tupsz = ep - ++fmt;
+
+ if (tupsz >= 0 && (!PyTuple_Check(res) || PyTuple_GET_SIZE(res) != tupsz))
+ {
+ sip_api_bad_catcher_result(method);
+ rc = -1;
+ }
+ }
+ }
+ else
+ tupsz = -1;
+
+ if (rc == 0)
+ {
+ char ch;
+ int i = 0;
+
+ while ((ch = *fmt++) != '\0' && ch != ')' && rc == 0)
+ {
+ PyObject *arg;
+ int invalid = FALSE;
+
+ if (tupsz > 0)
+ {
+ arg = PyTuple_GET_ITEM(res,i);
+ ++i;
+ }
+ else
+ arg = res;
+
+ switch (ch)
+ {
+ case 'a':
+ {
+ char **p = va_arg(va, char **);
+ int *szp = va_arg(va, int *);
+
+ if (parseCharArray(arg, p, szp) < 0)
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'A':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t **p = va_arg(va, wchar_t **);
+ int *szp = va_arg(va, int *);
+
+ if (parseWCharArray(arg, p, szp) < 0)
+ invalid = TRUE;
+ }
+#else
+ raiseNoWChar();
+ invalid = TRUE;
+#endif
+
+ break;
+
+ case 'b':
+ {
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ sipSetBool(va_arg(va,void *),v);
+ }
+
+ break;
+
+ case 'c':
+ {
+ char *p = va_arg(va, char *);
+
+ if (parseChar(arg, p) < 0)
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'w':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t *p = va_arg(va, wchar_t *);
+
+ if (parseWChar(arg, p) < 0)
+ invalid = TRUE;
+ }
+#else
+ raiseNoWChar();
+ invalid = TRUE;
+#endif
+
+ break;
+
+ case 'd':
+ {
+ double v = PyFloat_AsDouble(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,double *) = v;
+ }
+
+ break;
+
+ case 'e':
+ {
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,int *) = v;
+ }
+
+ break;
+
+ case 'E':
+ {
+ PyTypeObject *et = va_arg(va, PyTypeObject *);
+ int *p = va_arg(va, int *);
+
+ if (PyObject_TypeCheck(arg, et))
+ *p = PyInt_AsLong(arg);
+ else
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'f':
+ {
+ float v = PyFloat_AsDouble(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,float *) = v;
+ }
+
+ break;
+
+ case 'h':
+ {
+ short v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,short *) = v;
+ }
+
+ break;
+
+ case 't':
+ {
+ unsigned short v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,unsigned short *) = v;
+ }
+
+ break;
+
+ case 'i':
+ {
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,int *) = v;
+ }
+
+ break;
+
+ case 'u':
+ {
+ unsigned v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,unsigned *) = v;
+ }
+
+ break;
+
+ case 'l':
+ {
+ long v = PyLong_AsLong(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,long *) = v;
+ }
+
+ break;
+
+ case 'm':
+ {
+ unsigned long v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va, unsigned long *) = v;
+ }
+
+ break;
+
+ case 'n':
+ {
+#if defined(HAVE_LONG_LONG)
+ PY_LONG_LONG v = PyLong_AsLongLong(arg);
+#else
+ long v = PyLong_AsLong(arg);
+#endif
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+#if defined(HAVE_LONG_LONG)
+ *va_arg(va, PY_LONG_LONG *) = v;
+#else
+ *va_arg(va, long *) = v;
+#endif
+ }
+
+ break;
+
+ case 'o':
+ {
+#if defined(HAVE_LONG_LONG)
+ unsigned PY_LONG_LONG v = PyLong_AsUnsignedLongLong(arg);
+#else
+ unsigned long v = PyLong_AsUnsignedLong(arg);
+#endif
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+#if defined(HAVE_LONG_LONG)
+ *va_arg(va, unsigned PY_LONG_LONG *) = v;
+#else
+ *va_arg(va, unsigned long *) = v;
+#endif
+ }
+
+ break;
+
+ case 's':
+ {
+ char **p = va_arg(va, char **);
+
+ if (parseCharString(arg, p) < 0)
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'x':
+#if defined(HAVE_WCHAR_H)
+ {
+ wchar_t **p = va_arg(va, wchar_t **);
+
+ if (parseWCharString(arg, p) < 0)
+ invalid = TRUE;
+ }
+#else
+ raiseNoWChar();
+ invalid = TRUE;
+#endif
+
+ break;
+
+ case 'C':
+ {
+ if (*fmt == '\0')
+ invalid = TRUE;
+ else
+ {
+ int flags = *fmt++ - '0';
+ int iserr = FALSE;
+ sipWrapperType *type;
+ void **cpp;
+ int *state;
+
+ type = va_arg(va, sipWrapperType *);
+
+ if (flags & FORMAT_NO_STATE)
+ state = NULL;
+ else
+ state = va_arg(va, int *);
+
+ cpp = va_arg(va, void **);
+
+ *cpp = sip_api_force_convert_to_instance(arg, type, (flags & FORMAT_FACTORY ? arg : NULL), (flags & FORMAT_DEREF ? SIP_NOT_NONE : 0), state, &iserr);
+
+ if (iserr)
+ invalid = TRUE;
+ }
+ }
+
+ break;
+
+ case 'D':
+ {
+ if (*fmt == '\0')
+ invalid = TRUE;
+ else
+ {
+ int flags = *fmt++ - '0';
+ int iserr = FALSE;
+ const sipMappedType *mt;
+ void **cpp;
+ int *state;
+
+ mt = va_arg(va, const sipMappedType *);
+
+ if (flags & FORMAT_NO_STATE)
+ state = NULL;
+ else
+ state = va_arg(va, int *);
+
+ cpp = va_arg(va, void **);
+
+ *cpp = sip_api_force_convert_to_mapped_type(arg, mt, (flags & FORMAT_FACTORY ? arg : NULL), (flags & FORMAT_DEREF ? SIP_NOT_NONE : 0), state, &iserr);
+
+ if (iserr)
+ invalid = TRUE;
+ }
+ }
+
+ break;
+
+ case 'L':
+ {
+ sipForceConvertToFunc func = va_arg(va,sipForceConvertToFunc);
+ void **sipCpp = va_arg(va,void **);
+ int iserr = FALSE;
+
+ *sipCpp = func(arg,&iserr);
+
+ if (iserr)
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'M':
+ {
+ sipForceConvertToFunc func = va_arg(va,sipForceConvertToFunc);
+ void **sipCpp = va_arg(va,void **);
+ int iserr = FALSE;
+
+ *sipCpp = func(arg,&iserr);
+
+ if (iserr || *sipCpp == NULL)
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'N':
+ {
+ PyTypeObject *type = va_arg(va,PyTypeObject *);
+ PyObject **p = va_arg(va,PyObject **);
+
+ if (arg == Py_None || PyObject_TypeCheck(arg,type))
+ {
+ Py_INCREF(arg);
+ *p = arg;
+ }
+ else
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'O':
+ Py_INCREF(arg);
+ *va_arg(va,PyObject **) = arg;
+ break;
+
+ case 'T':
+ {
+ PyTypeObject *type = va_arg(va,PyTypeObject *);
+ PyObject **p = va_arg(va,PyObject **);
+
+ if (PyObject_TypeCheck(arg,type))
+ {
+ Py_INCREF(arg);
+ *p = arg;
+ }
+ else
+ invalid = TRUE;
+ }
+
+ break;
+
+ case 'V':
+ {
+ void *v = sip_api_convert_to_void_ptr(arg);
+
+ if (PyErr_Occurred())
+ invalid = TRUE;
+ else
+ *va_arg(va,void **) = v;
+ }
+
+ break;
+
+ case 'Z':
+ if (arg != Py_None)
+ invalid = TRUE;
+
+ break;
+
+ default:
+ PyErr_Format(PyExc_SystemError,"sipParseResult(): invalid format character '%c'",ch);
+ rc = -1;
+ }
+
+ if (invalid)
+ {
+ sip_api_bad_catcher_result(method);
+ rc = -1;
+ break;
+ }
+ }
+ }
+
+ va_end(va);
+
+ if (isErr != NULL && rc < 0)
+ *isErr = TRUE;
+
+ return rc;
+}
+
+
+/*
+ * A thin wrapper around PyLong_AsUnsignedLong() that works around a bug in
+ * Python versions prior to v2.4 where an integer (or a named enum) causes an
+ * error.
+ */
+static unsigned long sip_api_long_as_unsigned_long(PyObject *o)
+{
+#if PY_VERSION_HEX < 0x02040000
+ if (o != NULL && !PyLong_Check(o) && PyInt_Check(o))
+ {
+ long v = PyInt_AsLong(o);
+
+ if (v < 0)
+ {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to unsigned long");
+
+ return (unsigned long)-1;
+ }
+
+ return v;
+ }
+#endif
+
+ return PyLong_AsUnsignedLong(o);
+}
+
+
+/*
+ * Parse the arguments to a C/C++ function without any side effects.
+ */
+static int sip_api_parse_args(int *argsParsedp, PyObject *sipArgs,
+ const char *fmt, ...)
+{
+ int valid, nrargs, selfarg;
+ sipWrapper *self;
+ PyObject *single_arg;
+ va_list va;
+
+ /* Previous sticky errors stop subsequent parses. */
+ if (*argsParsedp & PARSE_STICKY)
+ return 0;
+
+ /* See if we are parsing a tuple or a single argument. */
+ if (PyTuple_Check(sipArgs))
+ {
+ Py_INCREF(sipArgs);
+ nrargs = PyTuple_GET_SIZE(sipArgs);
+ }
+ else if ((single_arg = PyTuple_New(1)) != NULL)
+ {
+ Py_INCREF(sipArgs);
+ PyTuple_SET_ITEM(single_arg,0,sipArgs);
+
+ sipArgs = single_arg;
+ nrargs = 1;
+ }
+ else
+ return 0;
+
+ /*
+ * The first pass checks all the types and does conversions that are
+ * cheap and have no side effects.
+ */
+ va_start(va,fmt);
+ valid = parsePass1(&self,&selfarg,&nrargs,sipArgs,fmt,va);
+ va_end(va);
+
+ if (valid != PARSE_OK)
+ {
+ int pvalid, pnrargs;
+
+ /*
+ * Use this error if there was no previous error, or if we
+ * have parsed more arguments this time, or if the previous
+ * error was that there were too many arguments.
+ */
+ pvalid = (*argsParsedp & PARSE_MASK);
+ pnrargs = (*argsParsedp & ~PARSE_MASK);
+
+ if (pvalid == PARSE_OK || pnrargs < nrargs ||
+ (pnrargs == nrargs && pvalid == PARSE_MANY))
+ *argsParsedp = valid | nrargs;
+
+ Py_DECREF(sipArgs);
+
+ return 0;
+ }
+
+ /*
+ * The second pass does any remaining conversions now that we know we
+ * have the right signature.
+ */
+ va_start(va,fmt);
+ valid = parsePass2(self,selfarg,nrargs,sipArgs,fmt,va);
+ va_end(va);
+
+ if (valid != PARSE_OK)
+ {
+ *argsParsedp = valid | PARSE_STICKY;
+
+ Py_DECREF(sipArgs);
+
+ return 0;
+ }
+
+ *argsParsedp = nrargs;
+
+ Py_DECREF(sipArgs);
+
+ return 1;
+}
+
+
+/*
+ * Parse a pair of arguments to a C/C++ function without any side effects.
+ */
+static int sip_api_parse_pair(int *argsParsedp, PyObject *sipArg0,
+ PyObject *sipArg1, const char *fmt, ...)
+{
+ int valid, nrargs, selfarg;
+ sipWrapper *self;
+ PyObject *args;
+ va_list va;
+
+ /* Previous sticky errors stop subsequent parses. */
+ if (*argsParsedp & PARSE_STICKY)
+ return 0;
+
+ if ((args = PyTuple_New(2)) == NULL)
+ return 0;
+
+ Py_INCREF(sipArg0);
+ PyTuple_SET_ITEM(args, 0, sipArg0);
+
+ Py_INCREF(sipArg1);
+ PyTuple_SET_ITEM(args, 1, sipArg1);
+
+ nrargs = 2;
+
+ /*
+ * The first pass checks all the types and does conversions that are
+ * cheap and have no side effects.
+ */
+ va_start(va,fmt);
+ valid = parsePass1(&self,&selfarg,&nrargs,args,fmt,va);
+ va_end(va);
+
+ if (valid != PARSE_OK)
+ {
+ int pvalid, pnrargs;
+
+ /*
+ * Use this error if there was no previous error, or if we
+ * have parsed more arguments this time, or if the previous
+ * error was that there were too many arguments.
+ */
+ pvalid = (*argsParsedp & PARSE_MASK);
+ pnrargs = (*argsParsedp & ~PARSE_MASK);
+
+ if (pvalid == PARSE_OK || pnrargs < nrargs ||
+ (pnrargs == nrargs && pvalid == PARSE_MANY))
+ *argsParsedp = valid | nrargs;
+
+ Py_DECREF(args);
+
+ return 0;
+ }
+
+ /*
+ * The second pass does any remaining conversions now that we know we
+ * have the right signature.
+ */
+ va_start(va,fmt);
+ valid = parsePass2(self,selfarg,nrargs,args,fmt,va);
+ va_end(va);
+
+ if (valid != PARSE_OK)
+ {
+ *argsParsedp = valid | PARSE_STICKY;
+
+ Py_DECREF(args);
+
+ return 0;
+ }
+
+ *argsParsedp = nrargs;
+
+ Py_DECREF(args);
+
+ return 1;
+}
+
+
+/*
+ * First pass of the argument parse, converting those that can be done so
+ * without any side effects. Return PARSE_OK if the arguments matched.
+ */
+static int parsePass1(sipWrapper **selfp, int *selfargp, int *argsParsedp,
+ PyObject *sipArgs, const char *fmt, va_list va)
+{
+ int valid, compulsory, nrargs, argnr, nrparsed;
+
+ valid = PARSE_OK;
+ nrargs = *argsParsedp;
+ nrparsed = 0;
+ compulsory = TRUE;
+ argnr = 0;
+
+ /*
+ * Handle those format characters that deal with the "self" argument.
+ * They will always be the first one.
+ */
+ *selfp = NULL;
+ *selfargp = FALSE;
+
+ switch (*fmt++)
+ {
+ case 'B':
+ case 'p':
+ {
+ PyObject *self;
+ sipWrapperType *type;
+
+ self = *va_arg(va,PyObject **);
+ type = va_arg(va,sipWrapperType *);
+ va_arg(va,void **);
+
+ if (self == NULL)
+ {
+ if ((valid = getSelfFromArgs(type,sipArgs,argnr,selfp)) != PARSE_OK)
+ break;
+
+ *selfargp = TRUE;
+ ++nrparsed;
+ ++argnr;
+ }
+ else
+ *selfp = (sipWrapper *)self;
+
+ break;
+ }
+
+ case 'C':
+ *selfp = (sipWrapper *)va_arg(va,PyObject *);
+ break;
+
+ default:
+ --fmt;
+ }
+
+ /* Now handle the remaining arguments. */
+ while (valid == PARSE_OK)
+ {
+ char ch;
+ PyObject *arg;
+
+ PyErr_Clear();
+
+ /* See if the following arguments are optional. */
+ if ((ch = *fmt++) == '|')
+ {
+ compulsory = FALSE;
+ ch = *fmt++;
+ }
+
+ /* See if we don't expect anything else. */
+
+ if (ch == '\0')
+ {
+ /* Invalid if there are still arguments. */
+ if (argnr < nrargs)
+ valid = PARSE_MANY;
+
+ break;
+ }
+
+ /* See if we have run out of arguments. */
+
+ if (argnr == nrargs)
+ {
+ /*
+ * It is an error if we are still expecting compulsory
+ * arguments unless the current argume is an ellipsis.
+ */
+ if (ch != 'W' && ch != '\0' && compulsory)
+ valid = PARSE_FEW;
+
+ break;
+ }
+
+ /* Get the next argument. */
+ arg = PyTuple_GET_ITEM(sipArgs,argnr);
+ ++argnr;
+
+ switch (ch)
+ {
+ case 'W':
+ /* Ellipsis. */
+ break;
+
+ case 's':
+ {
+ /* String or None. */
+
+ char **p = va_arg(va, char **);
+
+ if (parseCharString(arg, p) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'x':
+#if defined(HAVE_WCHAR_H)
+ {
+ /* Wide string or None. */
+
+ wchar_t **p = va_arg(va, wchar_t **);
+
+ if (parseWCharString(arg, p) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+#else
+ raiseNoWChar();
+ valid = PARSE_RAISED;
+ break;
+#endif
+
+ case 'U':
+ {
+ /*
+ * Slot name or callable, return the name or
+ * callable.
+ */
+
+ char **sname = va_arg(va, char **);
+ PyObject **scall = va_arg(va, PyObject **);
+
+ *sname = NULL;
+ *scall = NULL;
+
+ if (PyString_Check(arg))
+ {
+ char *s = PyString_AS_STRING(arg);
+
+ if (*s == '1' || *s == '2' || *s == '9')
+ *sname = s;
+ else
+ valid = PARSE_TYPE;
+ }
+ else if (PyCallable_Check(arg))
+ *scall = arg;
+ else if (arg != Py_None)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'S':
+ {
+ /* Slot name, return the name. */
+
+ if (PyString_Check(arg))
+ {
+ char *s = PyString_AS_STRING(arg);
+
+ if (*s == '1' || *s == '2' || *s == '9')
+ *va_arg(va,char **) = s;
+ else
+ valid = PARSE_TYPE;
+ }
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'G':
+ {
+ /* Signal name, return the name. */
+
+ if (PyString_Check(arg))
+ {
+ char *s = PyString_AS_STRING(arg);
+
+ if (*s == '2' || *s == '9')
+ *va_arg(va,char **) = s;
+ else
+ valid = PARSE_TYPE;
+ }
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'J':
+ {
+ /* Class instance. */
+
+ if (*fmt == '\0')
+ valid = PARSE_FORMAT;
+ else
+ {
+ int flags = *fmt++ - '0';
+ sipWrapperType *type;
+ int iflgs = 0;
+
+ type = va_arg(va,sipWrapperType *);
+ va_arg(va,void **);
+
+ if (flags & FORMAT_DEREF)
+ iflgs |= SIP_NOT_NONE;
+
+ if (flags & (FORMAT_GET_WRAPPER|FORMAT_TRANSFER_THIS))
+ va_arg(va,PyObject **);
+
+ if (flags & FORMAT_NO_CONVERTORS)
+ iflgs |= SIP_NO_CONVERTORS;
+ else
+ va_arg(va, int *);
+
+ if (!sip_api_can_convert_to_instance(arg, type, iflgs))
+ valid = PARSE_TYPE;
+ }
+
+ break;
+ }
+
+ case 'M':
+ {
+ /* Mapped type instance. */
+
+ if (*fmt == '\0')
+ valid = PARSE_FORMAT;
+ else
+ {
+ int flags = *fmt++ - '0';
+ sipMappedType *mt;
+ int iflgs = 0;
+
+ mt = va_arg(va, sipMappedType *);
+ va_arg(va, void **);
+ va_arg(va, int *);
+
+ if (flags & FORMAT_DEREF)
+ iflgs |= SIP_NOT_NONE;
+
+ if (!sip_api_can_convert_to_mapped_type(arg, mt, iflgs))
+ valid = PARSE_TYPE;
+ }
+
+ break;
+ }
+
+
+ case 'N':
+ {
+ /* Python object of given type or None. */
+
+ PyTypeObject *type = va_arg(va,PyTypeObject *);
+ PyObject **p = va_arg(va,PyObject **);
+
+ if (arg == Py_None || PyObject_TypeCheck(arg,type))
+ *p = arg;
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'P':
+ {
+ /*
+ * Python object of any type with a
+ * sub-format.
+ */
+
+ *va_arg(va,PyObject **) = arg;
+
+ /* Skip the sub-format. */
+ if (*fmt++ == '\0')
+ valid = PARSE_FORMAT;
+
+ break;
+ }
+
+ case 'T':
+ {
+ /* Python object of given type. */
+
+ PyTypeObject *type = va_arg(va,PyTypeObject *);
+ PyObject **p = va_arg(va,PyObject **);
+
+ if (PyObject_TypeCheck(arg,type))
+ *p = arg;
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'R':
+ {
+ /* Sub-class of QObject. */
+
+ if (sipQtSupport == NULL || !PyObject_TypeCheck(arg, (PyTypeObject *)sipQObjectClass))
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,PyObject **) = arg;
+
+ break;
+ }
+
+ case 'F':
+ {
+ /* Python callable object. */
+
+ if (PyCallable_Check(arg))
+ *va_arg(va,PyObject **) = arg;
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'H':
+ {
+ /* Python callable object or None. */
+
+ if (arg == Py_None || PyCallable_Check(arg))
+ *va_arg(va,PyObject **) = arg;
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'q':
+ {
+ /* Qt receiver to connect. */
+
+ va_arg(va,char *);
+ va_arg(va,void **);
+ va_arg(va,const char **);
+
+ if (sipQtSupport == NULL || !PyObject_TypeCheck(arg, (PyTypeObject *)sipQObjectClass))
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'Q':
+ {
+ /* Qt receiver to disconnect. */
+
+ va_arg(va,char *);
+ va_arg(va,void **);
+ va_arg(va,const char **);
+
+ if (sipQtSupport == NULL || !PyObject_TypeCheck(arg, (PyTypeObject *)sipQObjectClass))
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'y':
+ {
+ /* Python slot to connect. */
+
+ va_arg(va,char *);
+ va_arg(va,void **);
+ va_arg(va,const char **);
+
+ if (sipQtSupport == NULL || !PyCallable_Check(arg))
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'Y':
+ {
+ /* Python slot to disconnect. */
+
+ va_arg(va,char *);
+ va_arg(va,void **);
+ va_arg(va,const char **);
+
+ if (sipQtSupport == NULL || !PyCallable_Check(arg))
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'a':
+ {
+ /* Char array or None. */
+
+ char **p = va_arg(va, char **);
+ int *szp = va_arg(va, int *);
+
+ if (parseCharArray(arg, p, szp) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'A':
+#if defined(HAVE_WCHAR_H)
+ {
+ /* Wide char array or None. */
+
+ wchar_t **p = va_arg(va, wchar_t **);
+ int *szp = va_arg(va, int *);
+
+ if (parseWCharArray(arg, p, szp) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+#else
+ raiseNoWChar();
+ valid = PARSE_RAISED;
+ break
+#endif
+
+ case 'c':
+ {
+ /* Character. */
+
+ char *p = va_arg(va, char *);
+
+ if (parseChar(arg, p) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'w':
+#if defined(HAVE_WCHAR_H)
+ {
+ /* Wide character. */
+
+ wchar_t *p = va_arg(va, wchar_t *);
+
+ if (parseWChar(arg, p) < 0)
+ valid = PARSE_TYPE;
+
+ break;
+ }
+#else
+ raiseNoWChar();
+ valid = PARSE_RAISED;
+ break
+#endif
+
+ case 'b':
+ {
+ /* Bool. */
+
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ sipSetBool(va_arg(va,void *),v);
+
+ break;
+ }
+
+ case 'e':
+ {
+ /* Anonymous enum. */
+
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,int *) = v;
+
+ break;
+ }
+
+ case 'E':
+ {
+ /* Named enum. */
+
+ PyTypeObject *et = va_arg(va, PyTypeObject *);
+
+ va_arg(va, int *);
+
+ if (!PyObject_TypeCheck(arg, et))
+ valid = PARSE_TYPE;
+ }
+
+ break;
+
+ case 'i':
+ {
+ /* Integer. */
+
+ int v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,int *) = v;
+
+ break;
+ }
+
+ case 'u':
+ {
+ /* Unsigned integer. */
+
+ unsigned v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va, unsigned *) = v;
+
+ break;
+ }
+
+ case 'h':
+ {
+ /* Short integer. */
+
+ short v = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,short *) = v;
+
+ break;
+ }
+
+ case 't':
+ {
+ /* Unsigned short integer. */
+
+ unsigned short v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va, unsigned short *) = v;
+
+ break;
+ }
+
+ case 'l':
+ {
+ /* Long integer. */
+
+ long v = PyLong_AsLong(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,long *) = v;
+
+ break;
+ }
+
+ case 'm':
+ {
+ /* Unsigned long integer. */
+
+ unsigned long v = sip_api_long_as_unsigned_long(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va, unsigned long *) = v;
+
+ break;
+ }
+
+ case 'n':
+ {
+ /* Long long integer. */
+
+#if defined(HAVE_LONG_LONG)
+ PY_LONG_LONG v = PyLong_AsLongLong(arg);
+#else
+ long v = PyLong_AsLong(arg);
+#endif
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+#if defined(HAVE_LONG_LONG)
+ *va_arg(va, PY_LONG_LONG *) = v;
+#else
+ *va_arg(va, long *) = v;
+#endif
+
+ break;
+ }
+
+ case 'o':
+ {
+ /* Unsigned long long integer. */
+
+#if defined(HAVE_LONG_LONG)
+ unsigned PY_LONG_LONG v = PyLong_AsUnsignedLongLong(arg);
+#else
+ unsigned long v = PyLong_AsUnsignedLong(arg);
+#endif
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+#if defined(HAVE_LONG_LONG)
+ *va_arg(va, unsigned PY_LONG_LONG *) = v;
+#else
+ *va_arg(va, unsigned long *) = v;
+#endif
+
+ break;
+ }
+
+ case 'f':
+ {
+ /* Float. */
+
+ double v = PyFloat_AsDouble(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,float *) = (float)v;
+
+ break;
+ }
+
+ case 'X':
+ {
+ /* Constrained (ie. exact) types. */
+
+ switch (*fmt++)
+ {
+ case 'b':
+ {
+ /* Boolean. */
+
+ if (PyBool_Check(arg))
+ sipSetBool(va_arg(va,void *),(arg == Py_True));
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'd':
+ {
+ /* Double float. */
+
+ if (PyFloat_Check(arg))
+ *va_arg(va,double *) = PyFloat_AS_DOUBLE(arg);
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'f':
+ {
+ /* Float. */
+
+ if (PyFloat_Check(arg))
+ *va_arg(va,float *) = (float)PyFloat_AS_DOUBLE(arg);
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ case 'i':
+ {
+ /* Integer. */
+
+ if (PyInt_Check(arg))
+ *va_arg(va,int *) = PyInt_AS_LONG(arg);
+ else
+ valid = PARSE_TYPE;
+
+ break;
+ }
+
+ default:
+ valid = PARSE_FORMAT;
+ }
+
+ break;
+ }
+
+ case 'd':
+ {
+ /* Double float. */
+
+ double v = PyFloat_AsDouble(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,double *) = v;
+
+ break;
+ }
+
+ case 'v':
+ {
+ /* Void pointer. */
+
+ void *v = sip_api_convert_to_void_ptr(arg);
+
+ if (PyErr_Occurred())
+ valid = PARSE_TYPE;
+ else
+ *va_arg(va,void **) = v;
+
+ break;
+ }
+
+ default:
+ valid = PARSE_FORMAT;
+ }
+
+ if (valid == PARSE_OK)
+ {
+ if (ch == 'W')
+ {
+ /*
+ * An ellipsis matches everything and ends the
+ * parse.
+ */
+ nrparsed = nrargs;
+ break;
+ }
+
+ ++nrparsed;
+ }
+ }
+
+ *argsParsedp = nrparsed;
+
+ return valid;
+}
+
+
+/*
+ * Second pass of the argument parse, converting the remaining ones that might
+ * have side effects. Return PARSE_OK if there was no error.
+ */
+static int parsePass2(sipWrapper *self, int selfarg, int nrargs,
+ PyObject *sipArgs, const char *fmt, va_list va)
+{
+ int a, valid;
+
+ valid = PARSE_OK;
+
+ /* Handle the converions of "self" first. */
+ switch (*fmt++)
+ {
+ case 'B':
+ {
+ /*
+ * The address of a C++ instance when calling one of
+ * its public methods.
+ */
+
+ sipWrapperType *type;
+ void **p;
+
+ *va_arg(va,PyObject **) = (PyObject *)self;
+ type = va_arg(va,sipWrapperType *);
+ p = va_arg(va,void **);
+
+ if ((*p = sip_api_get_cpp_ptr(self,type)) == NULL)
+ valid = PARSE_RAISED;
+
+ break;
+ }
+
+ case 'p':
+ {
+ /*
+ * The address of a C++ instance when calling one of
+ * its protected methods.
+ */
+
+ void **p;
+
+ *va_arg(va,PyObject **) = (PyObject *)self;
+ va_arg(va,sipWrapperType *);
+ p = va_arg(va,void **);
+
+ if ((*p = sip_api_get_complex_cpp_ptr(self)) == NULL)
+ valid = PARSE_RAISED;
+
+ break;
+ }
+
+ case 'C':
+ va_arg(va,PyObject *);
+ break;
+
+ default:
+ --fmt;
+ }
+
+ for (a = (selfarg ? 1 : 0); a < nrargs && *fmt != 'W' && valid == PARSE_OK; ++a)
+ {
+ char ch;
+ PyObject *arg = PyTuple_GET_ITEM(sipArgs,a);
+
+ /* Skip the optional character. */
+ if ((ch = *fmt++) == '|')
+ ch = *fmt++;
+
+ /*
+ * Do the outstanding conversions. For most types it has
+ * already been done, so we are just skipping the parameters.
+ */
+ switch (ch)
+ {
+ case 'q':
+ {
+ /* Qt receiver to connect. */
+
+ char *sig = va_arg(va,char *);
+ void **rx = va_arg(va,void **);
+ const char **slot = va_arg(va,const char **);
+
+ if ((*rx = sip_api_convert_rx(self,sig,arg,*slot,slot)) == NULL)
+ valid = PARSE_RAISED;
+
+ break;
+ }
+
+ case 'Q':
+ {
+ /* Qt receiver to disconnect. */
+
+ char *sig = va_arg(va,char *);
+ void **rx = va_arg(va,void **);
+ const char **slot = va_arg(va,const char **);
+
+ *rx = sipGetRx(self,sig,arg,*slot,slot);
+ break;
+ }
+
+ case 'y':
+ {
+ /* Python slot to connect. */
+
+ char *sig = va_arg(va,char *);
+ void **rx = va_arg(va,void **);
+ const char **slot = va_arg(va,const char **);
+
+ if ((*rx = sip_api_convert_rx(self,sig,arg,NULL,slot)) == NULL)
+ valid = PARSE_RAISED;
+
+ break;
+ }
+
+ case 'Y':
+ {
+ /* Python slot to disconnect. */
+
+ char *sig = va_arg(va,char *);
+ void **rx = va_arg(va,void **);
+ const char **slot = va_arg(va,const char **);
+
+ *rx = sipGetRx(self,sig,arg,NULL,slot);
+ break;
+ }
+
+ case 'J':
+ {
+ /* Class instance. */
+
+ int flags = *fmt++ - '0';
+ sipWrapperType *type;
+ void **p;
+ int iflgs = 0;
+ int iserr = FALSE;
+ int *state;
+ PyObject *xfer, **wrapper;
+
+ type = va_arg(va,sipWrapperType *);
+ p = va_arg(va,void **);
+
+ if (flags & FORMAT_TRANSFER)
+ xfer = (self ? (PyObject *)self : arg);
+ else if (flags & FORMAT_TRANSFER_BACK)
+ xfer = Py_None;
+ else
+ xfer = NULL;
+
+ if (flags & FORMAT_DEREF)
+ iflgs |= SIP_NOT_NONE;
+
+ if (flags & (FORMAT_GET_WRAPPER|FORMAT_TRANSFER_THIS))
+ wrapper = va_arg(va, PyObject **);
+
+ if (flags & FORMAT_NO_CONVERTORS)
+ {
+ iflgs |= SIP_NO_CONVERTORS;
+ state = NULL;
+ }
+ else
+ state = va_arg(va, int *);
+
+ *p = sip_api_convert_to_instance(arg, type, xfer, iflgs, state, &iserr);
+
+ if (iserr)
+ valid = PARSE_RAISED;
+
+ if (flags & FORMAT_GET_WRAPPER)
+ *wrapper = (*p != NULL ? arg : NULL);
+ else if (flags & FORMAT_TRANSFER_THIS && *p != NULL)
+ *wrapper = arg;
+
+ break;
+ }
+
+ case 'M':
+ {
+ /* Mapped type instance. */
+
+ int flags = *fmt++ - '0';
+ sipMappedType *mt;
+ void **p;
+ int iflgs = 0;
+ int iserr = FALSE;
+ int *state;
+ PyObject *xfer;
+
+ mt = va_arg(va, sipMappedType *);
+ p = va_arg(va, void **);
+ state = va_arg(va, int *);
+
+ if (flags & FORMAT_TRANSFER)
+ xfer = (self ? (PyObject *)self : arg);
+ else if (flags & FORMAT_TRANSFER_BACK)
+ xfer = Py_None;
+ else
+ xfer = NULL;
+
+ if (flags & FORMAT_DEREF)
+ iflgs |= SIP_NOT_NONE;
+
+ *p = sip_api_convert_to_mapped_type(arg, mt, xfer, iflgs, state, &iserr);
+
+ if (iserr)
+ valid = PARSE_RAISED;
+
+ break;
+ }
+
+ case 'P':
+ {
+ /*
+ * Python object of any type with a
+ * sub-format.
+ */
+
+ PyObject **p = va_arg(va,PyObject **);
+ int flags = *fmt++ - '0';
+
+ if (flags & FORMAT_TRANSFER)
+ {
+ Py_XINCREF(*p);
+ }
+ else if (flags & FORMAT_TRANSFER_BACK)
+ {
+ Py_XDECREF(*p);
+ }
+
+ break;
+ }
+
+ case 'X':
+ {
+ /* Constrained (ie. exact) type. */
+
+ ++fmt;
+ va_arg(va,void *);
+
+ break;
+ }
+
+
+ case 'E':
+ {
+ /* Named enum. */
+
+ int *p;
+
+ va_arg(va, PyTypeObject *);
+ p = va_arg(va, int *);
+
+ *p = PyInt_AsLong(arg);
+
+ break;
+ }
+
+ /*
+ * Every other argument is a pointer and only differ in how
+ * many there are.
+ */
+ case 'N':
+ case 'T':
+ case 'a':
+ case 'A':
+ va_arg(va,void *);
+
+ /* Drop through. */
+
+ default:
+ va_arg(va,void *);
+ }
+ }
+
+ /* Handle any ellipsis argument. */
+ if (*fmt == 'W' && valid == PARSE_OK)
+ {
+ PyObject *al;
+
+ /* Create a tuple for any remaining arguments. */
+ if ((al = PyTuple_New(nrargs - a)) != NULL)
+ {
+ int da = 0;
+
+ while (a < nrargs)
+ {
+ PyObject *arg = PyTuple_GET_ITEM(sipArgs,a);
+
+ /* Add the remaining argument to the tuple. */
+ Py_INCREF(arg);
+ PyTuple_SET_ITEM(al, da, arg);
+
+ ++a;
+ ++da;
+ }
+
+ /* Return the tuple. */
+ *va_arg(va, PyObject **) = al;
+ }
+ else
+ valid = PARSE_RAISED;
+ }
+
+ return valid;
+}
+
+
+/*
+ * Carry out actions common to all ctors.
+ */
+static void sip_api_common_ctor(sipMethodCache *cache,int nrmeths)
+{
+ /* This is thread safe. */
+ while (nrmeths-- > 0)
+ cache++->mcflags = 0;
+}
+
+
+/*
+ * Carry out actions common to all dtors.
+ */
+static void sip_api_common_dtor(sipWrapper *sipSelf)
+{
+ if (sipSelf != NULL && sipInterpreter != NULL)
+ {
+ SIP_BLOCK_THREADS
+
+ callPyDtor(sipSelf);
+
+ if (!sipNotInMap(sipSelf))
+ sipOMRemoveObject(&cppPyMap,sipSelf);
+
+ /* This no longer points to anything useful. */
+ sipSelf->u.cppPtr = NULL;
+
+ /*
+ * If C/C++ has a reference (and therefore no parent) then remove it.
+ * Otherwise remove the object from any parent.
+ */
+ if (sipCppHasRef(sipSelf))
+ {
+ sipResetCppHasRef(sipSelf);
+ Py_DECREF(sipSelf);
+ }
+ else
+ removeFromParent(sipSelf);
+
+ SIP_UNBLOCK_THREADS
+ }
+}
+
+
+/*
+ * Call self.__dtor__() if it is implemented.
+ */
+static void callPyDtor(sipWrapper *self)
+{
+ sip_gilstate_t sipGILState;
+ sipMethodCache pymc;
+ PyObject *meth;
+
+ /* No need to cache the method, it will only be called once. */
+ pymc.mcflags = 0;
+ meth = sip_api_is_py_method(&sipGILState, &pymc, self, NULL, "__dtor__");
+
+ if (meth != NULL)
+ {
+ PyObject *res = sip_api_call_method(0, meth, "", NULL);
+
+ Py_DECREF(meth);
+
+ /* Discard any result. */
+ Py_XDECREF(res);
+
+ SIP_RELEASE_GIL(sipGILState);
+ }
+}
+
+
+/*
+ * Add a wrapper to it's parent owner if it has one. The wrapper must not
+ * currently have a parent and, therefore, no siblings.
+ */
+static void addToParent(sipWrapper *self, sipWrapper *owner)
+{
+ if (owner != NULL)
+ {
+ if (owner->first_child != NULL)
+ {
+ self->sibling_next = owner->first_child;
+ owner->first_child->sibling_prev = self;
+ }
+
+ owner->first_child = self;
+ self->parent = owner;
+
+ /*
+ * The owner holds a real reference so that the cyclic garbage
+ * collector works properly.
+ */
+ Py_INCREF(self);
+ }
+}
+
+
+/*
+ * Remove a wrapper from it's parent if it has one.
+ */
+static void removeFromParent(sipWrapper *self)
+{
+ if (self->parent != NULL)
+ {
+ if (self->parent->first_child == self)
+ self->parent->first_child = self->sibling_next;
+
+ if (self->sibling_next != NULL)
+ self->sibling_next->sibling_prev = self->sibling_prev;
+
+ if (self->sibling_prev != NULL)
+ self->sibling_prev->sibling_next = self->sibling_next;
+
+ self->parent = NULL;
+ self->sibling_next = NULL;
+ self->sibling_prev = NULL;
+
+ /*
+ * We must do this last, after all the pointers are correct,
+ * because this is used by the clear slot.
+ */
+ Py_DECREF(self);
+ }
+}
+
+
+/*
+ * Convert a sequence index. Return the index or a negative value if there was
+ * an error.
+ */
+static SIP_SSIZE_T sip_api_convert_from_sequence_index(SIP_SSIZE_T idx,
+ SIP_SSIZE_T len)
+{
+ /* Negative indices start from the other end. */
+ if (idx < 0)
+ idx = len + idx;
+
+ if (idx < 0 || idx >= len)
+ {
+ PyErr_Format(PyExc_IndexError, "sequence index out of range");
+ return -1;
+ }
+
+ return idx;
+}
+
+
+/*
+ * Create and return a single type object.
+ */
+static sipWrapperType *createType(sipExportedModuleDef *client,
+ sipTypeDef *type, PyObject *mod_dict)
+{
+ PyObject *name, *bases, *typedict, *args, *dict;
+ sipEncodedClassDef *sup;
+ sipWrapperType *wt;
+
+ /* Create an object corresponding to the type name. */
+ if ((name = getBaseNameObject(type->td_name)) == NULL)
+ goto reterr;
+
+ /* Create the tuple of super types. */
+ if ((sup = type->td_supers) == NULL)
+ {
+ static PyObject *nobases = NULL;
+
+ if (nobases == NULL && (nobases = Py_BuildValue("(O)",&sipWrapper_Type)) == NULL)
+ goto relname;
+
+ Py_INCREF(nobases);
+ bases = nobases;
+ }
+ else
+ {
+ int i, nrsupers = 0;
+
+ do
+ ++nrsupers;
+ while (!sup++->sc_flag);
+
+ if ((bases = PyTuple_New(nrsupers)) == NULL)
+ goto relname;
+
+ for (sup = type->td_supers, i = 0; i < nrsupers; ++i, ++sup)
+ {
+ PyObject *st = (PyObject *)getClassType(sup, client);
+
+ Py_INCREF(st);
+ PyTuple_SET_ITEM(bases,i,st);
+ }
+ }
+
+ /* Create the type dictionary. */
+ if ((typedict = createTypeDict(client->em_nameobj)) == NULL)
+ goto relbases;
+
+ /* Initialise the rest of the type and pass it via the back door. */
+ type->td_module = client;
+ currentType = type;
+
+ /* Create the type by calling the metatype. */
+ if ((args = Py_BuildValue("OOO",name,bases,typedict)) == NULL)
+ goto reldict;
+
+ if ((wt = (sipWrapperType *)PyObject_Call((PyObject *)&sipWrapperType_Type,args,NULL)) == NULL)
+ goto relargs;
+
+ /* Get the dictionary into which the type will be placed. */
+ if (type->td_scope.sc_flag)
+ dict = mod_dict;
+ else
+ dict = ((PyTypeObject *)getClassType(&type->td_scope, client))->tp_dict;
+
+ /* Add the type to the "parent" dictionary. */
+ if (PyDict_SetItem(dict,name,(PyObject *)wt) < 0)
+ goto reltype;
+
+ /* We can now release our references. */
+ Py_DECREF(args);
+ Py_DECREF(typedict);
+ Py_DECREF(bases);
+ Py_DECREF(name);
+
+ return wt;
+
+ /* Unwind after an error. */
+
+reltype:
+ Py_DECREF((PyObject *)wt);
+
+relargs:
+ Py_DECREF(args);
+
+reldict:
+ Py_DECREF(typedict);
+
+relbases:
+ Py_DECREF(bases);
+
+relname:
+ Py_DECREF(name);
+
+reterr:
+ return NULL;
+}
+
+
+/*
+ * Create and return an enum type object.
+ */
+static PyTypeObject *createEnum(sipExportedModuleDef *client, sipEnumDef *ed,
+ PyObject *mod_dict)
+{
+ static PyObject *bases = NULL;
+ PyObject *name, *typedict, *args, *dict;
+ PyTypeObject *et;
+
+ /* Get the module and dictionary into which the type will be placed. */
+ if (ed->e_scope < 0)
+ dict = mod_dict;
+ else
+ dict = ((PyTypeObject *)client->em_types[ed->e_scope])->tp_dict;
+
+ /* Create the base type tuple if it hasn't already been done. */
+ if (bases == NULL && (bases = Py_BuildValue("(O)",&PyInt_Type)) == NULL)
+ goto reterr;
+
+ /* Create an object corresponding to the type name. */
+ if ((name = getBaseNameObject(ed->e_name)) == NULL)
+ goto reterr;
+
+ /* Create the type dictionary. */
+ if ((typedict = createTypeDict(client->em_nameobj)) == NULL)
+ goto relname;
+
+ /* Create the type by calling the metatype. */
+ if ((args = Py_BuildValue("OOO",name,bases,typedict)) == NULL)
+ goto reldict;
+
+ if ((et = (PyTypeObject *)PyObject_Call((PyObject *)&PyType_Type,args,NULL)) == NULL)
+ goto relargs;
+
+ /* Initialise any slots. */
+ if (ed->e_pyslots != NULL)
+ initSlots(et, et->tp_as_number, et->tp_as_sequence, et->tp_as_mapping, ed->e_pyslots, TRUE);
+
+ /* Add the type to the "parent" dictionary. */
+ if (PyDict_SetItem(dict,name,(PyObject *)et) < 0)
+ goto reltype;
+
+ /* We can now release our references. */
+ Py_DECREF(args);
+ Py_DECREF(typedict);
+ Py_DECREF(name);
+
+ return et;
+
+ /* Unwind after an error. */
+
+reltype:
+ Py_DECREF((PyObject *)et);
+
+relargs:
+ Py_DECREF(args);
+
+reldict:
+ Py_DECREF(typedict);
+
+relname:
+ Py_DECREF(name);
+
+reterr:
+ return NULL;
+}
+
+
+/*
+ * Return a pointer to the basename of a Python "pathname".
+ */
+static const char *getBaseName(const char *name)
+{
+ const char *bn;
+
+ if ((bn = strrchr(name, '.')) != NULL)
+ ++bn;
+ else
+ bn = name;
+
+ return bn;
+}
+
+
+/*
+ * Create a Python object corresponding to the basename of a Python "pathname".
+ */
+static PyObject *getBaseNameObject(const char *name)
+{
+ return PyString_FromString(getBaseName(name));
+}
+
+
+/*
+ * Create a type dictionary for dynamic type being created in the module with
+ * the specified name.
+ */
+static PyObject *createTypeDict(PyObject *mname)
+{
+ static PyObject *proto = NULL;
+ static PyObject *mstr = NULL;
+ PyObject *dict;
+
+ /* Create a prototype dictionary. */
+ if (proto == NULL)
+ {
+ if ((proto = PyDict_New()) == NULL)
+ return NULL;
+
+ /*
+ * These tell pickle that SIP generated classes can't be
+ * pickled.
+ */
+ if (PyDict_SetItemString(proto, "__reduce_ex__", Py_None) < 0 ||
+ PyDict_SetItemString(proto, "__reduce__", Py_None) < 0)
+ {
+ Py_DECREF(proto);
+ proto = NULL;
+
+ return NULL;
+ }
+ }
+
+ /* Create an object for "__module__". */
+ if (mstr == NULL && (mstr = PyString_FromString("__module__")) == NULL)
+ return NULL;
+
+ if ((dict = PyDict_Copy(proto)) == NULL)
+ return NULL;
+
+ /* We need to set the module name as an attribute for dynamic types. */
+ if (PyDict_SetItem(dict, mstr, mname) < 0)
+ {
+ Py_DECREF(dict);
+ return NULL;
+ }
+
+ return dict;
+}
+
+
+/*
+ * Add a set of static instances to a dictionary.
+ */
+static int addInstances(PyObject *dict,sipInstancesDef *id)
+{
+ if (id->id_class != NULL && addClassInstances(dict,id->id_class) < 0)
+ return -1;
+
+ if (id->id_voidp != NULL && addVoidPtrInstances(dict,id->id_voidp) < 0)
+ return -1;
+
+ if (id->id_char != NULL && addCharInstances(dict,id->id_char) < 0)
+ return -1;
+
+ if (id->id_string != NULL && addStringInstances(dict,id->id_string) < 0)
+ return -1;
+
+ if (id->id_int != NULL && addIntInstances(dict, id->id_int) < 0)
+ return -1;
+
+ if (id->id_long != NULL && addLongInstances(dict,id->id_long) < 0)
+ return -1;
+
+ if (id->id_ulong != NULL && addUnsignedLongInstances(dict, id->id_ulong) < 0)
+ return -1;
+
+ if (id->id_llong != NULL && addLongLongInstances(dict, id->id_llong) < 0)
+ return -1;
+
+ if (id->id_ullong != NULL && addUnsignedLongLongInstances(dict, id->id_ullong) < 0)
+ return -1;
+
+ if (id->id_double != NULL && addDoubleInstances(dict,id->id_double) < 0)
+ return -1;
+
+ if (id->id_enum != NULL && addEnumInstances(dict,id->id_enum) < 0)
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * Get "self" from the argument tuple for a method called as
+ * Class.Method(self, ...) rather than self.Method(...).
+ */
+static int getSelfFromArgs(sipWrapperType *type, PyObject *args, int argnr,
+ sipWrapper **selfp)
+{
+ PyObject *self;
+
+ /* Get self from the argument tuple. */
+
+ if (argnr >= PyTuple_GET_SIZE(args))
+ return PARSE_UNBOUND;
+
+ self = PyTuple_GET_ITEM(args, argnr);
+
+ if (!PyObject_TypeCheck(self, (PyTypeObject *)type))
+ return PARSE_UNBOUND;
+
+ *selfp = (sipWrapper *)self;
+
+ return PARSE_OK;
+}
+
+
+/*
+ * Handle the result of a call to the class/instance setattro methods.
+ */
+static int handleSetLazyAttr(PyObject *nameobj,PyObject *valobj,
+ sipWrapperType *wt,sipWrapper *w)
+{
+ char *name;
+ PyMethodDef *pmd, *vmd;
+ sipEnumMemberDef *enm;
+
+ /* See if it was a lazy attribute. */
+ if ((name = PyString_AsString(nameobj)) == NULL)
+ return -1;
+
+ pmd = NULL;
+ enm = NULL;
+ vmd = NULL;
+
+ findLazyAttr(wt,name,&pmd,&enm,&vmd,NULL);
+
+ if (vmd != NULL)
+ {
+ if (valobj == NULL)
+ {
+ PyErr_Format(PyExc_ValueError,"%s.%s cannot be deleted",wt->type->td_name,name);
+
+ return -1;
+ }
+
+ if ((vmd->ml_flags & METH_STATIC) != 0 || w != NULL)
+ {
+ PyObject *res;
+
+ if ((res = (*vmd->ml_meth)((PyObject *)w,valobj)) == NULL)
+ return -1;
+
+ /* Ignore the result (which should be Py_None). */
+ Py_DECREF(res);
+
+ return 0;
+ }
+
+ PyErr_SetObject(PyExc_AttributeError,nameobj);
+
+ return -1;
+ }
+
+ /* It isn't a variable. */
+ return 1;
+}
+
+
+/*
+ * Handle the result of a call to the class/instance getattro methods.
+ */
+static PyObject *handleGetLazyAttr(PyObject *nameobj,sipWrapperType *wt,
+ sipWrapper *w)
+{
+ char *name;
+ PyMethodDef *pmd, *vmd;
+ sipEnumMemberDef *enm;
+ sipTypeDef *in;
+
+ /* If it was an error, propagate it. */
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError))
+ return NULL;
+
+ PyErr_Clear();
+
+ /* See if it was a lazy attribute. */
+ if ((name = PyString_AsString(nameobj)) == NULL)
+ return NULL;
+
+ pmd = NULL;
+ enm = NULL;
+ vmd = NULL;
+
+ findLazyAttr(wt,name,&pmd,&enm,&vmd,&in);
+
+ if (pmd != NULL)
+ return PyCFunction_New(pmd,(PyObject *)w);
+
+ if (enm != NULL)
+ {
+ PyObject *attr;
+
+ /*
+ * Convert the value to an object. Note that we cannot cache
+ * it in the type dictionary because a sub-type might have a
+ * lazy attribute of the same name. In this case (because we
+ * call the standard getattro code first) this one would be
+ * wrongly found in preference to the one in the sub-class.
+ * The example in PyQt is QScrollView::ResizePolicy and
+ * QListView::WidthMode both having a member called Manual.
+ * One way around this might be to cache them in a separate
+ * dictionary and search that before doing the binary search
+ * through the lazy enum table.
+ */
+ if ((attr = createEnumMember(in, enm)) == NULL)
+ return NULL;
+
+ return attr;
+ }
+
+ if (vmd != NULL)
+ if ((vmd->ml_flags & METH_STATIC) != 0 || w != NULL)
+ return (*vmd->ml_meth)((PyObject *)w,NULL);
+
+ PyErr_SetObject(PyExc_AttributeError,nameobj);
+
+ return NULL;
+}
+
+
+/*
+ * Create a Python object for an enum member.
+ */
+static PyObject *createEnumMember(sipTypeDef *td, sipEnumMemberDef *enm)
+{
+ if (enm->em_enum < 0)
+ return PyInt_FromLong(enm->em_val);
+
+ return sip_api_convert_from_named_enum(enm->em_val, td->td_module->em_enums[enm->em_enum]);
+}
+
+
+/*
+ * Create a Python object for a member of a named enum.
+ */
+PyObject *sip_api_convert_from_named_enum(int eval, PyTypeObject *et)
+{
+ PyObject *args, *mo;
+
+ if ((args = Py_BuildValue("(i)", eval)) == NULL)
+ return NULL;
+
+ mo = PyObject_Call((PyObject *)et, args, NULL);
+
+ Py_DECREF(args);
+
+ return mo;
+}
+
+
+/*
+ * Find definition for a lazy class attribute.
+ */
+static void findLazyAttr(sipWrapperType *wt,char *name,PyMethodDef **pmdp,
+ sipEnumMemberDef **enmp,PyMethodDef **vmdp,
+ sipTypeDef **in)
+{
+ sipTypeDef *td, *nsx;
+ sipEncodedClassDef *sup;
+
+ /* The base type doesn't have any type information. */
+ if ((td = wt->type) == NULL)
+ return;
+
+ /* Search the possible linked list of namespace extenders. */
+ nsx = td;
+
+ do
+ {
+ /* Try the methods. */
+ if (nsx->td_nrmethods > 0 &&
+ (*pmdp = (PyMethodDef *)bsearch(name, nsx->td_methods, nsx->td_nrmethods, sizeof (PyMethodDef), compareMethodName)) != NULL)
+ return;
+
+ /* Try the enum members. */
+ if (nsx->td_nrenummembers > 0 &&
+ (*enmp = (sipEnumMemberDef *)bsearch(name, nsx->td_enummembers, nsx->td_nrenummembers, sizeof (sipEnumMemberDef), compareEnumMemberName)) != NULL)
+ {
+ if (in != NULL)
+ *in = nsx;
+
+ return;
+ }
+
+ /* Try the variables. Note, these aren't sorted. */
+ if (nsx->td_variables != NULL)
+ {
+ PyMethodDef *md;
+
+ for (md = nsx->td_variables; md->ml_name != NULL; ++md)
+ if (strcmp(name, md->ml_name) == 0)
+ {
+ *vmdp = md;
+ return;
+ }
+ }
+
+ nsx = nsx->td_nsextender;
+ }
+ while (nsx != NULL);
+
+ /* Check the base classes. */
+ if ((sup = td->td_supers) != NULL)
+ do
+ {
+ findLazyAttr(getClassType(sup, td->td_module), name, pmdp, enmp, vmdp, in);
+
+ if (*pmdp != NULL || *enmp != NULL || *vmdp != NULL)
+ break;
+ }
+ while (!sup++->sc_flag);
+}
+
+
+/*
+ * The bsearch() helper function for searching a sorted method table.
+ */
+static int compareMethodName(const void *key,const void *el)
+{
+ return strcmp((const char *)key,((const PyMethodDef *)el)->ml_name);
+}
+
+
+/*
+ * The bsearch() helper function for searching a sorted enum member table.
+ */
+static int compareEnumMemberName(const void *key,const void *el)
+{
+ return strcmp((const char *)key,((const sipEnumMemberDef *)el)->em_name);
+}
+
+
+/*
+ * Report a function with invalid argument types.
+ */
+static void sip_api_no_function(int argsParsed, const char *func)
+{
+ badArgs(argsParsed,NULL,func);
+}
+
+
+/*
+ * Report a method/function/signal with invalid argument types.
+ */
+static void sip_api_no_method(int argsParsed, const char *classname, const char *method)
+{
+ badArgs(argsParsed,classname,method);
+}
+
+
+/*
+ * Report an abstract method called with an unbound self.
+ */
+static void sip_api_abstract_method(const char *classname, const char *method)
+{
+ PyErr_Format(PyExc_TypeError,"%s.%s() is abstract and cannot be called as an unbound method", classname, method);
+}
+
+
+/*
+ * Handle error reporting for bad arguments to various things.
+ */
+static void badArgs(int argsParsed, const char *classname, const char *method)
+{
+ char *sep;
+ int nrparsed = argsParsed & ~PARSE_MASK;
+
+ if (classname != NULL)
+ sep = ".";
+ else
+ {
+ classname = "";
+ sep = "";
+ }
+
+ switch (argsParsed & PARSE_MASK)
+ {
+ case PARSE_FEW:
+ PyErr_Format(PyExc_TypeError,"insufficient number of arguments to %s%s%s()",classname,sep,method);
+ break;
+
+ case PARSE_MANY:
+ PyErr_Format(PyExc_TypeError,"too many arguments to %s%s%s(), %d at most expected",classname,sep,method,nrparsed);
+ break;
+
+ case PARSE_TYPE:
+ PyErr_Format(PyExc_TypeError,"argument %d of %s%s%s() has an invalid type",nrparsed + 1,classname,sep,method);
+ break;
+
+ case PARSE_FORMAT:
+ PyErr_Format(PyExc_TypeError,"invalid format to sipParseArgs() from %s%s%s()",classname,sep,method);
+ break;
+
+ case PARSE_UNBOUND:
+ PyErr_Format(PyExc_TypeError,"first argument of unbound method %s%s%s() must be a %s instance",classname,sep,method,classname);
+ break;
+
+ case PARSE_RAISED:
+ /* It has already been taken care of. */
+
+ break;
+
+ case PARSE_OK:
+ /* This is raised by a private re-implementation. */
+ PyErr_Format(PyExc_AttributeError,"%s%s%s is a private method",classname,sep,method);
+ break;
+ }
+}
+
+
+/*
+ * Report a bad operator argument. Only a small subset of operators need to
+ * be handled (those that don't return Py_NotImplemented).
+ */
+static void sip_api_bad_operator_arg(PyObject *self, PyObject *arg,
+ sipPySlotType st)
+{
+ const char *sn = NULL;
+
+ /* Try and get the text to match a Python exception. */
+
+ switch (st)
+ {
+ case concat_slot:
+ case iconcat_slot:
+ PyErr_Format(PyExc_TypeError, "cannot concatenate '%s' and '%s' objects", self->ob_type->tp_name, arg->ob_type->tp_name);
+ break;
+
+ case repeat_slot:
+ sn = "*";
+ break;
+
+ case irepeat_slot:
+ sn = "*=";
+ break;
+
+ default:
+ sn = "unknown";
+ }
+
+ if (sn != NULL)
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for %s: '%s' and '%s'", sn, self->ob_type->tp_name, arg->ob_type->tp_name);
+}
+
+
+/*
+ * Report a sequence length that does not match the length of a slice.
+ */
+static void sip_api_bad_length_for_slice(SIP_SSIZE_T seqlen,
+ SIP_SSIZE_T slicelen)
+{
+ PyErr_Format(PyExc_ValueError,
+#if PY_VERSION_HEX >= 0x02050000
+ "attempt to assign sequence of size %zd to slice of size %zd",
+#else
+ "attempt to assign sequence of size %d to slice of size %d",
+#endif
+ seqlen, slicelen);
+}
+
+
+/*
+ * Report a Python object that cannot be converted to a particular class.
+ */
+static void sip_api_bad_class(const char *classname)
+{
+ PyErr_Format(PyExc_TypeError,"cannot convert Python object to an instance of %s",classname);
+}
+
+
+/*
+ * Report a Python class variable with an unexpected type.
+ */
+static void sip_api_bad_set_type(const char *classname,const char *var)
+{
+ PyErr_Format(PyExc_TypeError,"invalid type for variable %s.%s",classname,var);
+}
+
+
+/*
+ * Report a Python member function with an unexpected return type.
+ */
+static void sip_api_bad_catcher_result(PyObject *method)
+{
+ const char *cname;
+ char *mname;
+
+ /*
+ * This is part of the public API so we make no assumptions about the
+ * method object.
+ */
+ if (!PyMethod_Check(method) ||
+ PyMethod_GET_FUNCTION(method) == NULL ||
+ !PyFunction_Check(PyMethod_GET_FUNCTION(method)) ||
+ PyMethod_GET_SELF(method) == NULL)
+ {
+ PyErr_Format(PyExc_TypeError,"invalid argument to sipBadCatcherResult()");
+ return;
+ }
+
+ mname = PyString_AsString(((PyFunctionObject *)PyMethod_GET_FUNCTION(method))->func_name);
+
+ if (mname == NULL)
+ return;
+
+ cname = PyMethod_GET_SELF(method)->ob_type->tp_name;
+
+ PyErr_Format(PyExc_TypeError,"invalid result type from %s.%s()",cname,mname);
+}
+
+
+/*
+ * Return the name of the class corresponding to a wrapper object. This comes
+ * with a reference.
+ */
+static PyObject *sip_api_class_name(PyObject *self)
+{
+ return PyString_FromString(self->ob_type->tp_name);
+}
+
+
+/*
+ * Return non-zero if the object is a C++ instance wrapper.
+ */
+int sip_api_wrapper_check(PyObject *o)
+{
+ return PyObject_TypeCheck(o,(PyTypeObject *)&sipWrapper_Type);
+}
+
+
+/*
+ * Return non-zero if the object is a C++ instance wrapper type.
+ */
+static int sipWrapperType_Check(PyObject *op)
+{
+ return PyObject_TypeCheck(op,(PyTypeObject *)&sipWrapperType_Type);
+}
+
+
+/*
+ * Transfer ownership of a class instance to Python from C/C++.
+ */
+static void sip_api_transfer_back(PyObject *self)
+{
+ if (self != NULL && sip_api_wrapper_check(self))
+ {
+ sipWrapper *w = (sipWrapper *)self;
+
+ if (sipCppHasRef(w))
+ {
+ sipResetCppHasRef(w);
+ Py_DECREF(w);
+ }
+ else
+ removeFromParent(w);
+
+ sipSetPyOwned(w);
+ }
+}
+
+
+/*
+ * Transfer ownership of a class instance to C/C++ from Python.
+ */
+static void sip_api_transfer_to(PyObject *self, PyObject *owner)
+{
+ /*
+ * There is a legitimate case where we try to transfer a PyObject that
+ * may not be a SIP generated class. The virtual handler code calls
+ * this function to keep the C/C++ instance alive when it gets rid of
+ * the Python object returned by the Python method. A class may have
+ * handwritten code that converts a regular Python type - so we can't
+ * assume that we can simply cast to sipWrapper.
+ */
+ if (self != NULL && sip_api_wrapper_check(self) && (owner == NULL || sip_api_wrapper_check(owner)))
+ {
+ sipWrapper *w = (sipWrapper *)self;
+
+ /*
+ * Keep the object alive while we do the transfer. If C++ has a
+ * reference then there is no need to increment it, just reset the flag
+ * and the following decrement will bring everything back to the way it
+ * should be.
+ */
+ if (sipCppHasRef(w))
+ sipResetCppHasRef(w);
+ else
+ {
+ Py_INCREF(self);
+ removeFromParent(w);
+ }
+
+ addToParent(w, (sipWrapper *)owner);
+
+ Py_DECREF(self);
+
+ sipResetPyOwned(w);
+ }
+}
+
+
+/*
+ * Transfer ownership of a class instance from Python to C/C++, or vice versa.
+ * This is deprecated.
+ */
+static void sip_api_transfer(PyObject *self, int toCpp)
+{
+ if (toCpp)
+ sip_api_transfer_to(self, self);
+ else
+ sip_api_transfer_back(self);
+}
+
+
+/*
+ * Add a license to a dictionary.
+ */
+static int addLicense(PyObject *dict,sipLicenseDef *lc)
+{
+ int rc;
+ PyObject *ldict, *proxy, *o;
+
+ /* Convert the strings we use to objects if not already done. */
+
+ if (licenseName == NULL && (licenseName = PyString_FromString("__license__")) == NULL)
+ return -1;
+
+ if (licenseeName == NULL && (licenseeName = PyString_FromString("Licensee")) == NULL)
+ return -1;
+
+ if (typeName == NULL && (typeName = PyString_FromString("Type")) == NULL)
+ return -1;
+
+ if (timestampName == NULL && (timestampName = PyString_FromString("Timestamp")) == NULL)
+ return -1;
+
+ if (signatureName == NULL && (signatureName = PyString_FromString("Signature")) == NULL)
+ return -1;
+
+ /* We use a dictionary to hold the license information. */
+ if ((ldict = PyDict_New()) == NULL)
+ return -1;
+
+ /* The license type is compulsory, the rest are optional. */
+ if (lc->lc_type == NULL || (o = PyString_FromString(lc->lc_type)) == NULL)
+ goto deldict;
+
+ rc = PyDict_SetItem(ldict,typeName,o);
+ Py_DECREF(o);
+
+ if (rc < 0)
+ goto deldict;
+
+ if (lc->lc_licensee != NULL)
+ {
+ if ((o = PyString_FromString(lc->lc_licensee)) == NULL)
+ goto deldict;
+
+ rc = PyDict_SetItem(ldict,licenseeName,o);
+ Py_DECREF(o);
+
+ if (rc < 0)
+ goto deldict;
+ }
+
+ if (lc->lc_timestamp != NULL)
+ {
+ if ((o = PyString_FromString(lc->lc_timestamp)) == NULL)
+ goto deldict;
+
+ rc = PyDict_SetItem(ldict,timestampName,o);
+ Py_DECREF(o);
+
+ if (rc < 0)
+ goto deldict;
+ }
+
+ if (lc->lc_signature != NULL)
+ {
+ if ((o = PyString_FromString(lc->lc_signature)) == NULL)
+ goto deldict;
+
+ rc = PyDict_SetItem(ldict,signatureName,o);
+ Py_DECREF(o);
+
+ if (rc < 0)
+ goto deldict;
+ }
+
+ /* Create a read-only proxy. */
+ if ((proxy = PyDictProxy_New(ldict)) == NULL)
+ goto deldict;
+
+ Py_DECREF(ldict);
+
+ rc = PyDict_SetItem(dict,licenseName,proxy);
+ Py_DECREF(proxy);
+
+ return rc;
+
+deldict:
+ Py_DECREF(ldict);
+
+ return -1;
+}
+
+
+/*
+ * Add the void pointer instances to a dictionary.
+ */
+static int addVoidPtrInstances(PyObject *dict,sipVoidPtrInstanceDef *vi)
+{
+ while (vi->vi_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = sip_api_convert_from_void_ptr(vi->vi_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,vi->vi_name,w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++vi;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the char instances to a dictionary.
+ */
+static int addCharInstances(PyObject *dict,sipCharInstanceDef *ci)
+{
+ while (ci->ci_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyString_FromStringAndSize(&ci->ci_val,1)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,ci->ci_name,w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++ci;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the string instances to a dictionary.
+ */
+static int addStringInstances(PyObject *dict,sipStringInstanceDef *si)
+{
+ while (si->si_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyString_FromString(si->si_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,si->si_name,w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++si;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the int instances to a dictionary.
+ */
+static int addIntInstances(PyObject *dict, sipIntInstanceDef *ii)
+{
+ while (ii->ii_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyInt_FromLong(ii->ii_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict, ii->ii_name, w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++ii;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the long instances to a dictionary.
+ */
+static int addLongInstances(PyObject *dict,sipLongInstanceDef *li)
+{
+ while (li->li_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyLong_FromLong(li->li_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,li->li_name,w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++li;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the unsigned long instances to a dictionary.
+ */
+static int addUnsignedLongInstances(PyObject *dict, sipUnsignedLongInstanceDef *uli)
+{
+ while (uli->uli_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyLong_FromUnsignedLong(uli->uli_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict, uli->uli_name, w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++uli;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the long long instances to a dictionary.
+ */
+static int addLongLongInstances(PyObject *dict, sipLongLongInstanceDef *lli)
+{
+ while (lli->lli_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+#if defined(HAVE_LONG_LONG)
+ if ((w = PyLong_FromLongLong(lli->lli_val)) == NULL)
+#else
+ if ((w = PyLong_FromLong(lli->lli_val)) == NULL)
+#endif
+ return -1;
+
+ rc = PyDict_SetItemString(dict, lli->lli_name, w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++lli;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the unsigned long long instances to a dictionary.
+ */
+static int addUnsignedLongLongInstances(PyObject *dict, sipUnsignedLongLongInstanceDef *ulli)
+{
+ while (ulli->ulli_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+#if defined(HAVE_LONG_LONG)
+ if ((w = PyLong_FromUnsignedLongLong(ulli->ulli_val)) == NULL)
+#else
+ if ((w = PyLong_FromUnsignedLong(ulli->ulli_val)) == NULL)
+#endif
+ return -1;
+
+ rc = PyDict_SetItemString(dict, ulli->ulli_name, w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++ulli;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Add the double instances to a dictionary.
+ */
+static int addDoubleInstances(PyObject *dict,sipDoubleInstanceDef *di)
+{
+ while (di->di_name != NULL)
+ {
+ int rc;
+ PyObject *w;
+
+ if ((w = PyFloat_FromDouble(di->di_val)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,di->di_name,w);
+ Py_DECREF(w);
+
+ if (rc < 0)
+ return -1;
+
+ ++di;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Wrap a set of enum instances and add them to a dictionary.
+ */
+static int addEnumInstances(PyObject *dict, sipEnumInstanceDef *ei)
+{
+ while (ei->ei_name != NULL)
+ {
+ if (addSingleEnumInstance(dict, ei->ei_name, ei->ei_val, *ei->ei_type) < 0)
+ return -1;
+
+ ++ei;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Wrap a single enum instance and add it to a dictionary.
+ */
+static int addSingleEnumInstance(PyObject *dict, const char *name, int value,
+ PyTypeObject *type)
+{
+ int rc;
+ PyObject *w;
+
+ if ((w = sip_api_convert_from_named_enum(value, type)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict, name, w);
+ Py_DECREF(w);
+
+ return rc;
+}
+
+
+/*
+ * Wrap an enum instance and add it to a dictionary.
+ */
+static int sip_api_add_enum_instance(PyObject *dict, const char *name,
+ int value, PyTypeObject *type)
+{
+ /* If this is a wrapped type then get the type dictionary. */
+ if (sipWrapperType_Check(dict))
+ dict = ((PyTypeObject *)dict)->tp_dict;
+
+ return addSingleEnumInstance(dict, name, value, type);
+}
+
+
+/*
+ * Wrap a set of class instances and add them to a dictionary.
+ */
+static int addClassInstances(PyObject *dict, sipClassInstanceDef *ci)
+{
+ while (ci->ci_name != NULL)
+ {
+ if (addSingleClassInstance(dict, ci->ci_name, ci->ci_ptr, *ci->ci_type, ci->ci_flags) < 0)
+ return -1;
+
+ ++ci;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Wrap a single class instance and add it to a dictionary.
+ */
+static int addSingleClassInstance(PyObject *dict, const char *name,
+ void *cppPtr, sipWrapperType *wt, int initflags)
+{
+ int rc;
+ PyObject *w;
+
+ if ((w = sipWrapSimpleInstance(cppPtr,wt,NULL,initflags)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,name,w);
+ Py_DECREF(w);
+
+ return rc;
+}
+
+
+/*
+ * Wrap a class instance and add it to a dictionary.
+ */
+static int sip_api_add_class_instance(PyObject *dict, const char *name,
+ void *cppPtr, sipWrapperType *wt)
+{
+ /* If this is a wrapped type then get the type dictionary. */
+ if (sipWrapperType_Check(dict))
+ dict = ((PyTypeObject *)dict)->tp_dict;
+
+ return addSingleClassInstance(dict, name, cppPtr, wt, 0);
+}
+
+
+/*
+ * Wrap a mapped type instance and add it to a dictionary.
+ */
+static int sip_api_add_mapped_type_instance(PyObject *dict, const char *name,
+ void *cppPtr, const sipMappedType *mt)
+{
+ int rc;
+ PyObject *w;
+
+ /* If this is a wrapped type then get the type dictionary. */
+ if (sipWrapperType_Check(dict))
+ dict = ((PyTypeObject *)dict)->tp_dict;
+
+ if ((w = mt->mt_cfrom(cppPtr, NULL)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict, name, w);
+ Py_DECREF(w);
+
+ return rc;
+}
+
+
+/*
+ * Get the C/C++ pointer for a complex object.
+ */
+static void *sip_api_get_complex_cpp_ptr(sipWrapper *w)
+{
+ if (!sipIsDerived(w))
+ {
+ PyErr_SetString(PyExc_RuntimeError,"no access to protected functions or signals for objects not created from Python");
+
+ return NULL;
+ }
+
+ if (checkPointer(w->u.cppPtr) < 0)
+ return NULL;
+
+ return w->u.cppPtr;
+}
+
+
+/*
+ * Return the Python member function corresponding to a C/C++ virtual function,
+ * if any. If one was found then the Python lock is acquired.
+ */
+static PyObject *sip_api_is_py_method(sip_gilstate_t *gil,sipMethodCache *pymc,
+ sipWrapper *sipSelf,char *cname,
+ char *mname)
+{
+ /* We might still have C++ going after the interpreter has gone. */
+ if (sipInterpreter == NULL)
+ return NULL;
+
+ /*
+ * It's possible that the Python object has been deleted but the
+ * underlying (complex) C/C++ instance is still working and trying to
+ * handle virtual functions. Or an instance has started handling
+ * virtual functions before its ctor has returned. In either case say
+ * there is no Python method.
+ */
+ if (sipSelf == NULL)
+ return NULL;
+
+#ifdef WITH_THREAD
+ *gil = PyGILState_Ensure();
+#endif
+
+ /* See if we have already looked for the Python method. */
+ if (!sipFoundMethod(pymc))
+ {
+ PyObject *methobj;
+
+ /*
+ * Using PyMethod_Check() rather than PyCallable_Check() has
+ * the added benefits of ensuring the (common) case of there
+ * being no Python method is handled as a direct call to C/C++
+ * (rather than converted to Python and then back to C/C++) and
+ * makes sure that abstract virtuals are trapped.
+ */
+ if ((methobj = PyObject_GetAttrString((PyObject *)sipSelf,mname)) != NULL)
+ {
+ if (PyMethod_Check(methobj))
+ {
+ sipSetIsMethod(pymc);
+ sipSaveMethod(&pymc->pyMethod,methobj);
+ }
+
+ Py_DECREF(methobj);
+ }
+
+ PyErr_Clear();
+
+ sipSetFoundMethod(pymc);
+ }
+ else if (sipIsMethod(pymc))
+ PyErr_Clear();
+
+ if (sipIsMethod(pymc))
+ return PyMethod_New(pymc->pyMethod.mfunc,pymc->pyMethod.mself,pymc->pyMethod.mclass);
+
+ if (cname != NULL)
+ PyErr_Format(PyExc_NotImplementedError,"%s.%s() is abstract and must be overridden",cname,mname);
+
+#ifdef WITH_THREAD
+ PyGILState_Release(*gil);
+#endif
+
+ return NULL;
+}
+
+
+/*
+ * Convert a C/C++ pointer to the object that wraps it.
+ */
+static PyObject *sip_api_get_wrapper(void *cppPtr,sipWrapperType *type)
+{
+ return (PyObject *)sipOMFindObject(&cppPyMap,cppPtr,type);
+}
+
+
+/*
+ * Return the C/C++ pointer from a wrapper without any checks.
+ */
+void *sipGetAddress(sipWrapper *w)
+{
+ if (sipIsAccessFunc(w))
+ return (*w->u.afPtr)();
+
+ if (sipIsIndirect(w))
+ return *((void **)w->u.cppPtr);
+
+ return w->u.cppPtr;
+}
+
+
+/*
+ * Get the C/C++ pointer from a wrapper and optionally cast it to the required
+ * type.
+ */
+void *sip_api_get_cpp_ptr(sipWrapper *w,sipWrapperType *type)
+{
+ void *ptr = sipGetAddress(w);
+
+ if (checkPointer(ptr) < 0)
+ return NULL;
+
+ if (type != NULL)
+ ptr = cast_cpp_ptr(ptr, (sipWrapperType *)w->ob_type, type);
+
+ return ptr;
+}
+
+
+/*
+ * Cast a C/C++ pointer from a source type to a destination type.
+ */
+static void *cast_cpp_ptr(void *ptr, sipWrapperType *src_type,
+ sipWrapperType *dst_type)
+{
+ sipCastFunc cast = src_type->type->td_cast;
+
+ /* C structures don't have cast functions. */
+ if (cast != NULL)
+ ptr = (*cast)(ptr, dst_type);
+
+ return ptr;
+}
+
+
+/*
+ * Check that a pointer is non-NULL.
+ */
+static int checkPointer(void *ptr)
+{
+ if (ptr == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError,"underlying C/C++ object has been deleted");
+ return -1;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Check to see if a Python object can be converted to a wrapped type.
+ */
+static int sip_api_can_convert_to_instance(PyObject *pyObj,
+ sipWrapperType *type, int flags)
+{
+ int ok;
+ sipConvertToFunc cto = type->type->td_cto;
+
+ /* None is handled outside the type checkers. */
+ if (pyObj == Py_None)
+ ok = ((flags & SIP_NOT_NONE) == 0);
+ else if (cto == NULL || (flags & SIP_NO_CONVERTORS) != 0)
+ ok = PyObject_TypeCheck(pyObj, (PyTypeObject *)type);
+ else
+ ok = cto(pyObj, NULL, NULL, NULL);
+
+ return ok;
+}
+
+
+/*
+ * Check to see if a Python object can be converted to a mapped type.
+ */
+static int sip_api_can_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt,
+ int flags)
+{
+ int ok;
+
+ /* None is handled outside the type checkers. */
+ if (pyObj == Py_None)
+ ok = ((flags & SIP_NOT_NONE) == 0);
+ else
+ ok = mt->mt_cto(pyObj, NULL, NULL, NULL);
+
+ return ok;
+}
+
+
+/*
+ * Convert a Python object to a C/C++ pointer, assuming a previous call to
+ * sip_api_can_convert_to_instance() has been successful. Allow ownership to
+ * be transferred and any type convertors to be disabled.
+ */
+static void *sip_api_convert_to_instance(PyObject *pyObj, sipWrapperType *type,
+ PyObject *transferObj, int flags,
+ int *statep, int *iserrp)
+{
+ void *cpp = NULL;
+ int state = 0;
+ sipConvertToFunc cto = type->type->td_cto;
+
+ /* Don't convert if there has already been an error. */
+ if (!*iserrp)
+ {
+ /* Do the conversion. */
+ if (pyObj == Py_None)
+ cpp = NULL;
+ else if (cto == NULL || (flags & SIP_NO_CONVERTORS) != 0)
+ {
+ if ((cpp = sip_api_get_cpp_ptr((sipWrapper *)pyObj, type)) == NULL)
+ *iserrp = TRUE;
+ else if (transferObj != NULL)
+ if (transferObj == Py_None)
+ sip_api_transfer_back(pyObj);
+ else
+ sip_api_transfer_to(pyObj, transferObj);
+ }
+ else
+ state = cto(pyObj, &cpp, iserrp, transferObj);
+ }
+
+ if (statep != NULL)
+ *statep = state;
+
+ return cpp;
+}
+
+
+/*
+ * Convert a Python object to a C/C++ pointer, assuming a previous call to
+ * sip_api_can_convert_to_mapped_type() has been successful. Allow ownership
+ * to be transferred.
+ */
+static void *sip_api_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt,
+ PyObject *transferObj, int flags,
+ int *statep, int *iserrp)
+{
+ void *cpp = NULL;
+ int state = 0;
+
+ /* Don't convert if there has already been an error. */
+ if (!*iserrp)
+ if (pyObj == Py_None)
+ cpp = NULL;
+ else
+ state = mt->mt_cto(pyObj, &cpp, iserrp, transferObj);
+
+ if (statep != NULL)
+ *statep = state;
+
+ return cpp;
+}
+
+
+/*
+ * Convert a Python object to a C/C++ pointer and raise an exception if it
+ * can't be done.
+ */
+static void *sip_api_force_convert_to_instance(PyObject *pyObj,
+ sipWrapperType *type,
+ PyObject *transferObj,
+ int flags, int *statep,
+ int *iserrp)
+{
+ /* Don't even try if there has already been an error. */
+ if (*iserrp)
+ return NULL;
+
+ /* See if the object's type can be converted. */
+ if (!sip_api_can_convert_to_instance(pyObj, type, flags))
+ {
+ PyErr_Format(PyExc_TypeError, "%s cannot be converted to %s in this context", pyObj->ob_type->tp_name, type->type->td_name);
+
+ if (statep != NULL)
+ *statep = 0;
+
+ *iserrp = TRUE;
+ return NULL;
+ }
+
+ /* Do the conversion. */
+ return sip_api_convert_to_instance(pyObj, type, transferObj, flags, statep, iserrp);
+}
+
+
+/*
+ * Convert a Python object to a C/C++ pointer and raise an exception if it
+ * can't be done.
+ */
+static void *sip_api_force_convert_to_mapped_type(PyObject *pyObj,
+ const sipMappedType *mt,
+ PyObject *transferObj,
+ int flags, int *statep,
+ int *iserrp)
+{
+ /* Don't even try if there has already been an error. */
+ if (*iserrp)
+ return NULL;
+
+ /* See if the object's type can be converted. */
+ if (!sip_api_can_convert_to_mapped_type(pyObj, mt, flags))
+ {
+ PyErr_Format(PyExc_TypeError, "%s cannot be converted to %s in this context", pyObj->ob_type->tp_name, mt->mt_name);
+
+ if (statep != NULL)
+ *statep = 0;
+
+ *iserrp = TRUE;
+ return NULL;
+ }
+
+ /* Do the conversion. */
+ return sip_api_convert_to_mapped_type(pyObj, mt, transferObj, flags, statep, iserrp);
+}
+
+
+/*
+ * Release a possibly temporary instance created by a type convertor.
+ */
+static void sip_api_release_instance(void *cpp, sipWrapperType *type, int state)
+{
+ /* See if there is something to release. */
+ if (state & SIP_TEMPORARY)
+ release(cpp, type->type, state);
+}
+
+
+/*
+ * Release an instance.
+ */
+static void release(void *addr, sipTypeDef *td, int state)
+{
+ sipReleaseFunc rel = td->td_release;
+
+ /*
+ * If there is no release function then it must be a C structure and we can
+ * just free it.
+ */
+ if (rel == NULL)
+ sip_api_free(addr);
+ else
+ rel(addr, state);
+}
+
+
+/*
+ * Release a possibly temporary mapped type created by a type convertor.
+ */
+static void sip_api_release_mapped_type(void *cpp, const sipMappedType *mt,
+ int state)
+{
+ /* See if there is something to release. */
+ if (state & SIP_TEMPORARY)
+ {
+ sipReleaseFunc rel = mt->mt_release;
+
+ /*
+ * If there is no release function then it must be a C
+ * structure and we can just free it.
+ */
+ if (rel == NULL)
+ sip_api_free(cpp);
+ else
+ rel(cpp, state);
+ }
+}
+
+
+/*
+ * Convert a C/C++ instance to a Python instance.
+ */
+PyObject *sip_api_convert_from_instance(void *cpp, sipWrapperType *type,
+ PyObject *transferObj)
+{
+ PyObject *py;
+
+ /* Handle None. */
+ if (cpp == NULL)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ /* Apply any sub-class convertor. */
+ if (sipTypeHasSCC(type))
+ type = convertSubClass(type, &cpp);
+
+ /* See if we have already wrapped it. */
+ if ((py = sip_api_get_wrapper(cpp, type)) != NULL)
+ Py_INCREF(py);
+ else if ((py = sipWrapSimpleInstance(cpp, type, NULL, SIP_SHARE_MAP)) == NULL)
+ return NULL;
+
+ /* Handle any ownership transfer. */
+ if (transferObj != NULL)
+ if (transferObj == Py_None)
+ sip_api_transfer_back(py);
+ else
+ sip_api_transfer_to(py, transferObj);
+
+ return py;
+}
+
+
+/*
+ * Convert a new C/C++ instance to a Python instance.
+ */
+static PyObject *sip_api_convert_from_new_instance(void *cpp,
+ sipWrapperType *type,
+ PyObject *transferObj)
+{
+ sipWrapper *owner;
+
+ /* Handle None. */
+ if (cpp == NULL)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ /* Apply any sub-class convertor. */
+ if (sipTypeHasSCC(type))
+ type = convertSubClass(type, &cpp);
+
+ /* Handle any ownership transfer. */
+ if (transferObj != NULL && transferObj != Py_None)
+ owner = (sipWrapper *)transferObj;
+ else
+ owner = NULL;
+
+ return sipWrapSimpleInstance(cpp, type, owner, (owner == NULL ? SIP_PY_OWNED : 0));
+}
+
+
+/*
+ * Convert a C/C++ instance implemented as a mapped type to a Python object.
+ */
+static PyObject *sip_api_convert_from_mapped_type(void *cpp,
+ const sipMappedType *mt,
+ PyObject *transferObj)
+{
+ /* Handle None. */
+ if (cpp == NULL)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return mt->mt_cfrom(cpp, transferObj);
+}
+
+
+/*
+ * Convert a Python instance of a class to a C/C++ object pointer, checking
+ * that the instance's class is derived from a given base type.
+ */
+static void *sip_api_convert_to_cpp(PyObject *sipSelf,sipWrapperType *type,
+ int *iserrp)
+{
+ return sip_api_convert_to_instance(sipSelf, type, NULL, SIP_NO_CONVERTORS, NULL, iserrp);
+}
+
+
+/*
+ * Implement the normal transfer policy for the result of %ConvertToTypeCode,
+ * ie. it is temporary unless it is being transferred from Python.
+ */
+int sip_api_get_state(PyObject *transferObj)
+{
+ return (transferObj == NULL || transferObj == Py_None) ? SIP_TEMPORARY : 0;
+}
+
+
+/*
+ * Return the mapped type structure for a particular mapped type.
+ */
+static const sipMappedType *sip_api_find_mapped_type(const char *type)
+{
+ sipExportedModuleDef *em;
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipMappedType **mtypes, *mt;
+
+ if ((mtypes = em->em_mappedtypes) == NULL)
+ continue;
+
+ while ((mt = *mtypes++) != NULL)
+ {
+ const char *s1 = mt->mt_name, *s2 = type;
+
+ /*
+ * Compare while ignoring spaces so that we don't impose a rigorous
+ * naming standard.
+ */
+ do
+ {
+ while (*s1 == ' ')
+ ++s1;
+
+ while (*s2 == ' ')
+ ++s2;
+
+ if (*s1 == '\0' && *s2 == '\0')
+ return mt;
+ }
+ while (*s1++ == *s2++);
+ }
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return the type structure for a particular class.
+ */
+static sipWrapperType *sip_api_find_class(const char *type)
+{
+ sipExportedModuleDef *em;
+ size_t type_len = strlen(type);
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipWrapperType *wt = findClass(em, type, type_len);
+
+ if (wt != NULL)
+ return wt;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return the type structure for a particular named enum.
+ */
+static PyTypeObject *sip_api_find_named_enum(const char *type)
+{
+ sipExportedModuleDef *em;
+ size_t type_len = strlen(type);
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ PyTypeObject *py = findEnum(em, type, type_len);
+
+ if (py != NULL)
+ return py;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Save the components of a Python method.
+ */
+void sipSaveMethod(sipPyMethod *pm,PyObject *meth)
+{
+ pm->mfunc = PyMethod_GET_FUNCTION(meth);
+ pm->mself = PyMethod_GET_SELF(meth);
+ pm->mclass = PyMethod_GET_CLASS(meth);
+}
+
+
+/*
+ * Call a hook.
+ */
+static void sip_api_call_hook(const char *hookname)
+{
+ PyObject *dictofmods, *mod, *dict, *hook, *res;
+
+ /* Get the dictionary of modules. */
+ if ((dictofmods = PyImport_GetModuleDict()) == NULL)
+ return;
+
+ /* Get the __builtin__ module. */
+ if ((mod = PyDict_GetItemString(dictofmods,"__builtin__")) == NULL)
+ return;
+
+ /* Get it's dictionary. */
+ if ((dict = PyModule_GetDict(mod)) == NULL)
+ return;
+
+ /* Get the function hook. */
+ if ((hook = PyDict_GetItemString(dict,hookname)) == NULL)
+ return;
+
+ /* Call the hook and discard any result. */
+ res = PyObject_CallObject(hook,NULL);
+
+ Py_XDECREF(res);
+}
+
+
+/*
+ * Call any sub-class convertors for a given type returning a pointer to the
+ * sub-type object, and possibly modifying the C++ address (in the case of
+ * multiple inheritence).
+ */
+static sipWrapperType *convertSubClass(sipWrapperType *type, void **cppPtr)
+{
+ sipExportedModuleDef *em;
+
+ if (*cppPtr == NULL)
+ return NULL;
+
+ /*
+ * Note that this code depends on the fact that a module appears in the
+ * list of modules before any module it imports, ie. sub-class convertors
+ * will be invoked for more specific types first.
+ */
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipSubClassConvertorDef *scc;
+
+ if ((scc = em->em_convertors) == NULL)
+ continue;
+
+ while (scc->scc_convertor != NULL)
+ {
+ /*
+ * The base type is the "root" class that may have a number of
+ * convertors each handling a "branch" of the derived tree of
+ * classes. The "root" normally implements the base function that
+ * provides the RTTI used by the convertors and is re-implemented
+ * by derived classes. We therefore see if the target type is a
+ * sub-class of the root, ie. see if the convertor might be able to
+ * convert the target type to something more specific.
+ */
+ if (PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)scc->scc_basetype))
+ {
+ void *ptr;
+ sipWrapperType *subtype;
+
+ ptr = cast_cpp_ptr(*cppPtr, type, scc->scc_basetype);
+ subtype = (*scc->scc_convertor)(&ptr);
+
+ /*
+ * We are only interested in types that are not super-classes
+ * of the target. This happens either because it is in an
+ * earlier convertor than the one that handles the type or it
+ * is in a later convertor that handles a different branch of
+ * the hierarchy. Either way, the ordering of the modules
+ * ensures that there will be no more than one and that it will
+ * be the right one.
+ */
+ if (subtype != NULL && !PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)subtype))
+ {
+ *cppPtr = ptr;
+ return subtype;
+ }
+ }
+
+ ++scc;
+ }
+ }
+
+ /*
+ * We haven't found the exact type, so return the most specific type that
+ * it must be. This can happen legitimately if the wrapped library is
+ * returning an internal class that is down-cast to a more generic class.
+ * Also we want this function to be safe when a class doesn't have any
+ * convertors.
+ */
+ return type;
+}
+
+
+/*
+ * The bsearch() helper function for searching a sorted string map table.
+ */
+static int compareStringMapEntry(const void *key,const void *el)
+{
+ return strcmp((const char *)key,((const sipStringTypeClassMap *)el)->typeString);
+}
+
+
+/*
+ * A convenience function for %ConvertToSubClassCode for types represented as a
+ * string. Returns the Python class object or NULL if the type wasn't
+ * recognised.
+ */
+static sipWrapperType *sip_api_map_string_to_class(const char *typeString,
+ const sipStringTypeClassMap *map,
+ int maplen)
+{
+ sipStringTypeClassMap *me;
+
+ me = (sipStringTypeClassMap *)bsearch((const void *)typeString,
+ (const void *)map,maplen,
+ sizeof (sipStringTypeClassMap),
+ compareStringMapEntry);
+
+ return ((me != NULL) ? *me->pyType : NULL);
+}
+
+
+/*
+ * The bsearch() helper function for searching a sorted integer map table.
+ */
+static int compareIntMapEntry(const void *keyp,const void *el)
+{
+ int key = *(int *)keyp;
+
+ if (key > ((const sipIntTypeClassMap *)el)->typeInt)
+ return 1;
+
+ if (key < ((const sipIntTypeClassMap *)el)->typeInt)
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * A convenience function for %ConvertToSubClassCode for types represented as
+ * an integer. Returns the Python class object or NULL if the type wasn't
+ * recognised.
+ */
+static sipWrapperType *sip_api_map_int_to_class(int typeInt,
+ const sipIntTypeClassMap *map,
+ int maplen)
+{
+ sipIntTypeClassMap *me;
+
+ me = (sipIntTypeClassMap *)bsearch((const void *)&typeInt,
+ (const void *)map,maplen,
+ sizeof (sipIntTypeClassMap),
+ compareIntMapEntry);
+
+ return ((me != NULL) ? *me->pyType : NULL);
+}
+
+
+/*
+ * Raise an unknown exception. Make no assumptions about the GIL.
+ */
+static void sip_api_raise_unknown_exception(void)
+{
+ static PyObject *mobj = NULL;
+
+ SIP_BLOCK_THREADS
+
+ if (mobj == NULL)
+ mobj = PyString_FromString("unknown");
+
+ PyErr_SetObject(PyExc_Exception, mobj);
+
+ SIP_UNBLOCK_THREADS
+}
+
+
+/*
+ * Raise an exception implemented as a class. Make no assumptions about the
+ * GIL.
+ */
+static void sip_api_raise_class_exception(sipWrapperType *type,void *ptr)
+{
+ PyObject *self;
+
+ SIP_BLOCK_THREADS
+
+ self = sipWrapSimpleInstance(ptr,type,NULL,SIP_PY_OWNED);
+
+ PyErr_SetObject((PyObject *)type,self);
+
+ Py_XDECREF(self);
+
+ SIP_UNBLOCK_THREADS
+}
+
+
+/*
+ * Raise an exception implemented as a class or sub-class. Make no assumptions
+ * about the GIL.
+ */
+static void sip_api_raise_sub_class_exception(sipWrapperType *type,void *ptr)
+{
+ PyObject *self;
+
+ SIP_BLOCK_THREADS
+
+ self = sipWrapSimpleInstance(ptr,type,NULL,SIP_PY_OWNED);
+
+ PyErr_SetObject((PyObject *)type,self);
+
+ Py_XDECREF(self);
+
+ SIP_UNBLOCK_THREADS
+}
+
+
+/*
+ * Return the module of an encoded class.
+ */
+static sipExportedModuleDef *getClassModule(sipEncodedClassDef *enc,
+ sipExportedModuleDef *em)
+{
+ if (enc->sc_module != 255)
+ em = em->em_imports[enc->sc_module].im_module;
+
+ return em;
+}
+
+
+/*
+ * Return the type of an encoded class.
+ */
+static sipWrapperType *getClassType(sipEncodedClassDef *enc,
+ sipExportedModuleDef *em)
+{
+ return getClassModule(enc, em)->em_types[enc->sc_class];
+}
+
+
+/*
+ * Find a particular slot function for a wrapper.
+ */
+static void *findSlot(PyObject *self,sipPySlotType st)
+{
+ sipTypeDef *td = ((sipWrapperType *)(self->ob_type))->type;
+ sipEncodedClassDef *sup;
+ void *slot;
+
+ /* Check the immediate type. */
+ if ((slot = findSlotInType(td, st)) != NULL)
+ return slot;
+
+ /* Check the super-types, if there are any. */
+ if ((sup = td->td_supers) != NULL)
+ do
+ if ((slot = findSlotInType(getClassType(sup, td->td_module)->type, st)) != NULL)
+ return slot;
+ while (!sup++->sc_flag);
+
+ /* This should never happen. */
+ return NULL;
+}
+
+
+/*
+ * Find a particular slot function in a type.
+ */
+static void *findSlotInType(sipTypeDef *td, sipPySlotType st)
+{
+ sipPySlotDef *psd;
+
+ if ((psd = td->td_pyslots) != NULL)
+ while (psd->psd_func != NULL)
+ {
+ if (psd->psd_type == st)
+ return psd->psd_func;
+
+ ++psd;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return the C/C++ address and the basic type information for a wrapper.
+ */
+static void *getPtrTypeDef(sipWrapper *self, sipTypeDef **td)
+{
+ *td = ((sipWrapperType *)self->ob_type)->type;
+
+ return (sipNotInMap(self) ? NULL : self->u.cppPtr);
+}
+
+
+/*
+ * Handle an objobjargproc slot.
+ */
+static int objobjargprocSlot(PyObject *self,PyObject *arg1,PyObject *arg2,
+ sipPySlotType st)
+{
+ int (*f)(PyObject *,PyObject *);
+ PyObject *args;
+ int res;
+
+ /*
+ * Slot handlers require a single PyObject *. The second argument is
+ * optional.
+ */
+ if (arg2 == NULL)
+ args = arg1;
+ else if (PyTuple_Check(arg1))
+ {
+ int i;
+
+ /*
+ * It's already a tuple so we need to copy it and append the
+ * value.
+ */
+ if ((args = PyTuple_New(PyTuple_GET_SIZE(arg1) + 1)) == NULL)
+ return -1;
+
+ for (i = 0; i < PyTuple_GET_SIZE(arg1); ++i)
+ {
+ PyObject *o = PyTuple_GET_ITEM(arg1,i);
+
+ PyTuple_SET_ITEM(args,i,o);
+ Py_INCREF(o);
+ }
+
+ PyTuple_SET_ITEM(args,i,arg2);
+ Py_INCREF(arg2);
+ }
+ else if ((args = Py_BuildValue("(OO)",arg1,arg2)) == NULL)
+ return -1;
+
+ f = (int (*)(PyObject *,PyObject *))findSlot(self,st);
+
+ res = f(self,args);
+
+ if (arg2 != NULL)
+ {
+ Py_DECREF(args);
+ }
+
+ return res;
+}
+
+
+/*
+ * Handle an ssizeobjargproc slot.
+ */
+static int ssizeobjargprocSlot(PyObject *self, SIP_SSIZE_T arg1,
+ PyObject *arg2, sipPySlotType st)
+{
+ int (*f)(PyObject *,PyObject *);
+ PyObject *args;
+ int res;
+
+ /*
+ * Slot handlers require a single PyObject *. The second argument is
+ * optional.
+ */
+ if (arg2 == NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ args = PyInt_FromSsize_t(arg1);
+#else
+ args = PyInt_FromLong(arg1);
+#endif
+ else
+#if PY_VERSION_HEX >= 0x02050000
+ args = Py_BuildValue("(nO)", arg1, arg2);
+#else
+ args = Py_BuildValue("(iO)", arg1, arg2);
+#endif
+
+ if (args == NULL)
+ return -1;
+
+ f = (int (*)(PyObject *,PyObject *))findSlot(self,st);
+
+ res = f(self,args);
+
+ Py_DECREF(args);
+
+ return res;
+}
+
+
+/*****************************************************************************
+ * The functions, data types and structures to support a Python type to hold a
+ * void * that can be converted to an integer.
+ *****************************************************************************/
+
+/* The object data structure. */
+typedef struct {
+ PyObject_HEAD
+ void *voidptr;
+} sipVoidPtr;
+
+
+/*
+ * Implement __new__ for the type.
+ */
+static PyObject *sipVoidPtr_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
+{
+ PyObject *obj;
+ void *ptr;
+ int nargs, bad;
+
+ /* We don't support keyword arguments. */
+ if (kwds != NULL)
+ {
+ PyErr_SetString(PyExc_TypeError, "keyword arguments are not supported");
+ return NULL;
+ }
+
+ /* Get the single argument. */
+ if ((nargs = PyTuple_Size(args)) < 0)
+ return NULL;
+
+ bad = FALSE;
+
+ if (nargs == 1)
+ {
+ PyObject *arg = PyTuple_GET_ITEM(args, 0);
+
+ if (arg == Py_None)
+ ptr = NULL;
+ else if (PyCObject_Check(arg))
+ ptr = PyCObject_AsVoidPtr(arg);
+ else if (arg->ob_type == &sipVoidPtr_Type)
+ {
+ /*
+ * The type is immutable so just return the argument.
+ */
+ Py_INCREF(arg);
+ return arg;
+ }
+ else
+ {
+ ptr = (void *)PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ bad = TRUE;
+ }
+ }
+ else
+ bad = TRUE;
+
+ if (bad)
+ {
+ PyErr_SetString(PyExc_TypeError, "a single integer, CObject, None or another voidptr is required");
+ return NULL;
+ }
+
+ /* Create the instance. */
+ if ((obj = subtype->tp_alloc(subtype, 0)) == NULL)
+ return NULL;
+
+ /* Save the pointer. */
+ ((sipVoidPtr *)obj)->voidptr = ptr;
+
+ return obj;
+}
+
+
+/*
+ * Implement int() for the type.
+ */
+static PyObject *sipVoidPtr_int(sipVoidPtr *v)
+{
+ return PyInt_FromLong((long)v->voidptr);
+}
+
+
+/*
+ * Implement hex() for the type.
+ */
+static PyObject *sipVoidPtr_hex(sipVoidPtr *v)
+{
+ char buf[2 + 16 + 1];
+
+ PyOS_snprintf(buf, sizeof (buf), "0x%.*lx", (int)(sizeof (void *) * 2), (unsigned long)v->voidptr);
+
+ return PyString_FromString(buf);
+}
+
+
+/*
+ * Implement ascobject() for the type.
+ */
+static PyObject *sipVoidPtr_ascobject(sipVoidPtr *v, PyObject *arg)
+{
+ return PyCObject_FromVoidPtr(v->voidptr, NULL);
+}
+
+
+/*
+ * Implement asstring() for the type.
+ */
+static PyObject *sipVoidPtr_asstring(sipVoidPtr *v,PyObject *arg)
+{
+ long nbytes = PyInt_AsLong(arg);
+
+ if (PyErr_Occurred())
+ return NULL;
+
+ return PyString_FromStringAndSize(v->voidptr,nbytes);
+}
+
+
+/* The methods data structure. */
+static PyMethodDef sipVoidPtr_Methods[] = {
+ {"ascobject", (PyCFunction)sipVoidPtr_ascobject, METH_NOARGS, NULL},
+ {"asstring", (PyCFunction)sipVoidPtr_asstring, METH_O, NULL},
+ {NULL}
+};
+
+
+/* The number methods data structure. */
+PyNumberMethods sipVoidPtr_NumberMethods = {
+ 0, /* nb_add */
+ 0, /* nb_subtract */
+ 0, /* nb_multiply */
+ 0, /* nb_divide */
+ 0, /* nb_remainder */
+ 0, /* nb_divmod */
+ 0, /* nb_power */
+ 0, /* nb_negative */
+ 0, /* nb_positive */
+ 0, /* nb_absolute */
+ 0, /* nb_nonzero */
+ 0, /* nb_invert */
+ 0, /* nb_lshift */
+ 0, /* nb_rshift */
+ 0, /* nb_and */
+ 0, /* nb_xor */
+ 0, /* nb_or */
+ 0, /* nb_coerce */
+ (unaryfunc)sipVoidPtr_int, /* nb_int */
+ 0, /* nb_long */
+ 0, /* nb_float */
+ 0, /* nb_oct */
+ (unaryfunc)sipVoidPtr_hex, /* nb_hex */
+};
+
+
+/* The type data structure. */
+static PyTypeObject sipVoidPtr_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ "sip.voidptr", /* tp_name */
+ sizeof (sipVoidPtr), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ 0, /* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_compare */
+ 0, /* tp_repr */
+ &sipVoidPtr_NumberMethods, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ 0, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ sipVoidPtr_Methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ sipVoidPtr_new, /* tp_new */
+};
+
+
+/*
+ * A convenience function to convert a C/C++ void pointer from a Python object.
+ */
+static void *sip_api_convert_to_void_ptr(PyObject *obj)
+{
+ if (obj == NULL)
+ {
+ PyErr_SetString(PyExc_TypeError,"sip.voidptr is NULL");
+ return NULL;
+ }
+
+ if (obj == Py_None)
+ return NULL;
+
+ /* Save a conversion if it's not a sub-type. */
+ if (obj->ob_type == &sipVoidPtr_Type)
+ return ((sipVoidPtr *)obj)->voidptr;
+
+ return (void *)PyInt_AsLong(obj);
+}
+
+
+/*
+ * A convenience function to convert a C/C++ void pointer to a Python object.
+ */
+PyObject *sip_api_convert_from_void_ptr(void *val)
+{
+ sipVoidPtr *self;
+
+ if (val == NULL)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ if ((self = PyObject_NEW(sipVoidPtr,&sipVoidPtr_Type)) == NULL)
+ return NULL;
+
+ self->voidptr = val;
+
+ return (PyObject *)self;
+}
+
+
+/*
+ * Return TRUE if a type is a wrapped type, rather than a sub-type implemented
+ * in Python or the super-type.
+ */
+static int isExactWrappedType(sipWrapperType *wt)
+{
+ char *name;
+
+ /*
+ * We check by comparing the actual type name with the name used to create
+ * the original wrapped type.
+ */
+#if PY_VERSION_HEX >= 0x02050000
+ if ((name = PyString_AsString(wt->super.ht_name)) == NULL)
+#else
+ if ((name = PyString_AsString(wt->super.name)) == NULL)
+#endif
+ return FALSE;
+
+ return (strcmp(name, getBaseName(wt->type->td_name)) == 0);
+}
+
+
+/*****************************************************************************
+ * The Python metatype for a C++ wrapper type.
+ *****************************************************************************/
+
+/*
+ * The type alloc slot.
+ */
+static PyObject *sipWrapperType_alloc(PyTypeObject *self, SIP_SSIZE_T nitems)
+{
+ PyObject *o;
+
+ /* Call the standard super-metatype alloc. */
+ if ((o = PyType_Type.tp_alloc(self, nitems)) == NULL)
+ return NULL;
+
+ /*
+ * Consume any extra type specific information and use it to initialise
+ * the slots. This only happens for directly wrapped classes (and not
+ * programmer written sub-classes). This must be done in the alloc
+ * function because it is the only place we can break out of the
+ * default new() function before PyType_Ready() is called.
+ */
+ if (currentType != NULL)
+ {
+ ((sipWrapperType *)o)->type = currentType;
+ addSlots((sipWrapperType *)o, currentType);
+ currentType = NULL;
+ }
+
+ return o;
+}
+
+
+/*
+ * The type init slot.
+ */
+static int sipWrapperType_init(sipWrapperType *self, PyObject *args,
+ PyObject *kwds)
+{
+ /* Call the standard super-metatype init. */
+ if (PyType_Type.tp_init((PyObject *)self, args, kwds) < 0)
+ return -1;
+
+ /*
+ * If we don't yet have any extra type specific information (because we are
+ * a programmer defined sub-class) then get it from the (first) super-type.
+ */
+ if (self->type == NULL)
+ {
+ PyTypeObject *sc = ((PyTypeObject *)self)->tp_base;
+
+ /*
+ * Make sure that the type is derived from sip.wrapper. It might not
+ * if the type specifies sip.wrappertype as the __metaclass__.
+ */
+ if (sc == NULL || !sipWrapperType_Check((PyObject *)sc))
+ {
+ PyErr_Format(PyExc_TypeError,
+ "type %s must be derived from sip.wrapper",
+ ((PyTypeObject *)self)->tp_name);
+
+ return -1;
+ }
+
+ self->type = ((sipWrapperType *)sc)->type;
+ }
+
+ return 0;
+}
+
+
+/*
+ * The type getattro slot.
+ */
+static PyObject *sipWrapperType_getattro(PyObject *obj,PyObject *name)
+{
+ char *nm;
+ PyObject *attr;
+ sipWrapperType *wt = (sipWrapperType *)obj;
+
+ /*
+ * If we are getting the type dictionary for a base wrapped type then we
+ * don't want the super-metatype to handle it.
+ */
+ if ((nm = PyString_AsString(name)) == NULL)
+ return NULL;
+
+ if (strcmp(nm, "__dict__") == 0)
+ {
+ int i;
+ sipTypeDef *td;
+ sipEnumMemberDef *enm;
+ PyObject *dict;
+ PyMethodDef *pmd;
+
+ dict = ((PyTypeObject *)wt)->tp_dict;
+
+ /* The base type doesn't have any type information. */
+ if ((td = wt->type) == NULL || !isExactWrappedType(wt))
+ {
+ Py_INCREF(dict);
+ return dict;
+ }
+
+ /*
+ * We can't cache the methods or variables so we need to make a
+ * temporary copy of the type dictionary and return that (so
+ * that it will get garbage collected immediately afterwards).
+ */
+ if ((dict = PyDict_Copy(dict)) == NULL)
+ return NULL;
+
+ /* Search the possible linked list of namespace extenders. */
+ do
+ {
+ /*
+ * Add the type's lazy enums. It doesn't matter if
+ * they are already there.
+ */
+ enm = td->td_enummembers;
+
+ for (i = 0; i < td->td_nrenummembers; ++i)
+ {
+ int rc;
+ PyObject *val;
+
+ if ((val = createEnumMember(td, enm)) == NULL)
+ return NULL;
+
+ rc = PyDict_SetItemString(dict, enm->em_name, val);
+
+ Py_DECREF(val);
+
+ if (rc < 0)
+ return NULL;
+
+ ++enm;
+ }
+
+ /* Do the methods. */
+ pmd = td->td_methods;
+
+ for (i = 0; i < td->td_nrmethods; ++i)
+ {
+ int rc;
+ PyObject *meth;
+
+ if ((meth = PyCFunction_New(pmd, NULL)) == NULL)
+ {
+ Py_DECREF(dict);
+ return NULL;
+ }
+
+ rc = PyDict_SetItemString(dict, pmd->ml_name, meth);
+
+ Py_DECREF(meth);
+
+ if (rc < 0)
+ {
+ Py_DECREF(dict);
+ return NULL;
+ }
+
+ ++pmd;
+ }
+
+ /* Do the static variables. */
+ if ((pmd = td->td_variables) != NULL)
+ while (pmd->ml_name != NULL)
+ {
+ if ((pmd->ml_flags & METH_STATIC) != 0)
+ {
+ int rc;
+ PyObject *val;
+
+ if ((val = (*pmd->ml_meth)(NULL, NULL)) == NULL)
+ {
+ Py_DECREF(dict);
+ return NULL;
+ }
+
+ rc = PyDict_SetItemString(dict, pmd->ml_name, val);
+
+ Py_DECREF(val);
+
+ if (rc < 0)
+ {
+ Py_DECREF(dict);
+ return NULL;
+ }
+ }
+
+ ++pmd;
+ }
+
+ td = td->td_nsextender;
+ }
+ while (td != NULL);
+
+ return dict;
+ }
+
+ /* Now try the super-metatype's method. */
+ if ((attr = PyType_Type.tp_getattro(obj,name)) != NULL)
+ return attr;
+
+ return handleGetLazyAttr(name,wt,NULL);
+}
+
+
+/*
+ * The type setattro slot.
+ */
+static int sipWrapperType_setattro(PyObject *obj,PyObject *name,PyObject *value)
+{
+ int rc;
+
+ rc = handleSetLazyAttr(name,value,(sipWrapperType *)obj,NULL);
+
+ if (rc <= 0)
+ return rc;
+
+ /* Try the super-type's method last. */
+ return PyType_Type.tp_setattro(obj,name,value);
+}
+
+
+/*
+ * The type data structure. We inherit everything from the standard Python
+ * metatype except the init and getattro methods and the size of the type
+ * object created is increased to accomodate the extra information we associate
+ * with a wrapped type.
+ */
+static PyTypeObject sipWrapperType_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ "sip.wrappertype", /* tp_name */
+ sizeof (sipWrapperType), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ 0, /* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_compare */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ sipWrapperType_getattro, /* tp_getattro */
+ sipWrapperType_setattro, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ 0, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ 0, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ (initproc)sipWrapperType_init, /* tp_init */
+ sipWrapperType_alloc, /* tp_alloc */
+ 0, /* tp_new */
+ 0, /* tp_free */
+};
+
+
+/*****************************************************************************
+ * The Python type that is the super-type for all C++ wrapper types.
+ *****************************************************************************/
+
+/*
+ * The instance new slot.
+ */
+static PyObject *sipWrapper_new(sipWrapperType *wt,PyObject *args,PyObject *kwds)
+{
+ /* See if it is a namespace. */
+ if (wt->type->td_fcto == NULL)
+ {
+ PyErr_Format(PyExc_TypeError, "%s represents a C++ namespace that cannot be instantiated", wt->type->td_name);
+
+ return NULL;
+ }
+
+ /*
+ * See if the object is being created explicitly rather than being wrapped.
+ */
+ if (sipGetPending(NULL, NULL) == NULL)
+ {
+ /*
+ * See if it cannot be instantiated or sub-classed from Python, eg.
+ * it's an opaque class. Some restrictions might be overcome with
+ * better SIP support.
+ */
+ if (wt->type->td_init == NULL)
+ {
+ PyErr_Format(PyExc_TypeError,"%s cannot be instantiated or sub-classed", wt->type->td_name);
+
+ return NULL;
+ }
+
+ /* See if it is an abstract type. */
+ if (sipTypeIsAbstract(wt) && strcmp(strchr(wt->type->td_name, '.') + 1, ((PyTypeObject *)wt)->tp_name) == 0)
+ {
+ PyErr_Format(PyExc_TypeError, "%s represents a C++ abstract class and cannot be instantiated", wt->type->td_name);
+
+ return NULL;
+ }
+ }
+
+ /* Call the standard super-type new. */
+ return PyBaseObject_Type.tp_new((PyTypeObject *)wt, args, kwds);
+}
+
+
+/*
+ * The instance init slot.
+ */
+static int sipWrapper_init(sipWrapper *self,PyObject *args,PyObject *kwds)
+{
+ void *sipNew;
+ int sipFlags;
+ sipWrapper *owner;
+
+ if (self->ob_type == (PyTypeObject *)&sipWrapper_Type)
+ {
+ PyErr_SetString(PyExc_TypeError,"the sip.wrapper type cannot be instantiated");
+ return -1;
+ }
+
+ if (kwds != NULL)
+ {
+ PyErr_SetString(PyExc_TypeError,"keyword arguments are not supported");
+ return -1;
+ }
+
+ /* Check there is no existing C++ instance waiting to be wrapped. */
+ if ((sipNew = sipGetPending(&owner, &sipFlags)) == NULL)
+ {
+ int argsparsed = 0;
+ sipWrapperType *wt = (sipWrapperType *)self->ob_type;
+
+ /* Call the C++ ctor. */
+ owner = NULL;
+
+ if ((sipNew = wt->type->td_init(self, args, &owner, &argsparsed)) != NULL)
+ sipFlags = SIP_DERIVED_CLASS;
+ else
+ {
+ int pstate = argsparsed & PARSE_MASK;
+ sipInitExtenderDef *ie = wt->iextend;
+
+ /*
+ * While we just have signature errors, try any initialiser
+ * extenders.
+ */
+ while (ie != NULL && (pstate == PARSE_MANY || pstate == PARSE_FEW || pstate == PARSE_TYPE))
+ {
+ argsparsed = 0;
+
+ if ((sipNew = ie->ie_extender(self, args, &owner, &argsparsed)) != NULL)
+ break;
+
+ pstate = argsparsed & PARSE_MASK;
+ ie = ie->ie_next;
+ }
+
+ if (sipNew == NULL)
+ {
+ /*
+ * If the arguments were parsed without error then assume an
+ * exception has already been raised for why the instance
+ * wasn't created.
+ */
+ if (pstate == PARSE_OK)
+ argsparsed = PARSE_RAISED;
+
+ badArgs(argsparsed, NULL, getBaseName(wt->type->td_name));
+ return -1;
+ }
+
+ sipFlags = 0;
+ }
+
+ if (owner == NULL)
+ sipFlags |= SIP_PY_OWNED;
+ }
+
+ addToParent(self, owner);
+
+ self->u.cppPtr = sipNew;
+ self->flags = sipFlags;
+
+ if (!sipNotInMap(self))
+ sipOMAddObject(&cppPyMap,self);
+
+ return 0;
+}
+
+
+/*
+ * The instance traverse slot.
+ */
+static int sipWrapper_traverse(sipWrapper *self, visitproc visit, void *arg)
+{
+ int vret;
+ void *ptr;
+ sipTypeDef *td;
+ sipWrapper *w;
+ sipPySig *ps;
+
+ /* Call the nearest handwritten traverse code in the class hierachy. */
+ if ((ptr = getPtrTypeDef(self, &td)) != NULL)
+ {
+ sipTypeDef *ctd = td;
+
+ if (td->td_traverse == NULL)
+ {
+ sipEncodedClassDef *sup;
+
+ if ((sup = td->td_supers) != NULL)
+ do
+ ctd = getClassType(sup, td->td_module)->type;
+ while (ctd->td_traverse == NULL && !sup++->sc_flag);
+ }
+
+ if (ctd->td_traverse != NULL)
+ if ((vret = ctd->td_traverse(ptr, visit, arg)) != 0)
+ return vret;
+ }
+
+ if (qt_and_sip_api_3_4())
+ {
+ void *tx = sipGetAddress(self);
+
+ if (tx != NULL)
+ {
+ sipSlotConnection *conn;
+ void *context = NULL;
+
+ while ((conn = sipQtSupport->qt_find_connection(tx, &context)) != NULL)
+ {
+ if ((vret = visitSlot(&conn->sc_slot, visit, arg)) != 0)
+ return vret;
+
+ if (context == NULL)
+ break;
+ }
+ }
+ }
+
+ for (ps = self->pySigList; ps != NULL; ps = ps->next)
+ {
+ sipSlotList *psrx;
+
+ for (psrx = ps->rxlist; psrx != NULL; psrx = psrx->next)
+ if ((vret = visitSlot(&psrx->rx, visit, arg)) != 0)
+ return vret;
+ }
+
+ if (self->user != NULL)
+ if ((vret = visit(self->user, arg)) != 0)
+ return vret;
+
+ if (self->dict != NULL)
+ if ((vret = visit(self->dict, arg)) != 0)
+ return vret;
+
+ for (w = self->first_child; w != NULL; w = w->sibling_next)
+ {
+ /*
+ * We don't traverse if the wrapper is a child of itself. We
+ * do this so that wrapped objects returned by virtual methods
+ * with the /Factory/ don't have those objects collected. This
+ * then means that plugins implemented in Python have a chance
+ * of working.
+ */
+ if (w != self)
+ if ((vret = visit((PyObject *)w, arg)) != 0)
+ return vret;
+ }
+
+ return 0;
+}
+
+
+/*
+ * The instance clear slot.
+ */
+static int sipWrapper_clear(sipWrapper *self)
+{
+ int vret = 0;
+ void *ptr;
+ sipTypeDef *td;
+ PyObject *tmp;
+ sipPySig *ps;
+
+ /* Call the nearest handwritten clear code in the class hierachy. */
+ if ((ptr = getPtrTypeDef(self, &td)) != NULL)
+ {
+ sipTypeDef *ctd = td;
+
+ if (td->td_clear == NULL)
+ {
+ sipEncodedClassDef *sup;
+
+ if ((sup = td->td_supers) != NULL)
+ do
+ ctd = getClassType(sup, td->td_module)->type;
+ while (ctd->td_clear == NULL && !sup++->sc_flag);
+ }
+
+ if (ctd->td_clear != NULL)
+ vret = ctd->td_clear(ptr);
+ }
+
+ /* Remove any lambda slots connected via a proxy. */
+ if (qt_and_sip_api_3_4())
+ {
+ void *tx = sipGetAddress(self);
+
+ if (tx != NULL)
+ {
+ sipSlotConnection *conn;
+ void *context = NULL;
+
+ while ((conn = sipQtSupport->qt_find_connection(tx, &context)) != NULL)
+ {
+ clearAnyLambda(&conn->sc_slot);
+
+ if (context == NULL)
+ break;
+ }
+ }
+ }
+
+ /* Remove any lambda slots connected to PyQt v3 Python signals. */
+ for (ps = self->pySigList; ps != NULL; ps = ps->next)
+ {
+ sipSlotList *psrx;
+
+ for (psrx = ps->rxlist; psrx != NULL; psrx = psrx->next)
+ clearAnyLambda(&psrx->rx);
+ }
+
+ /* Remove any user object. */
+ tmp = self->user;
+ self->user = NULL;
+ Py_XDECREF(tmp);
+
+ /* Remove the instance dictionary. */
+ tmp = self->dict;
+ self->dict = NULL;
+ Py_XDECREF(tmp);
+
+ /* Detach children (which will be owned by C/C++. */
+ while (self->first_child != NULL)
+ {
+ /*
+ * Although this object is being garbage collected it doesn't follow
+ * that it's children should be. So we make sure that the child stays
+ * alive and remember we have done so.
+ */
+ Py_INCREF(self->first_child);
+ sipSetCppHasRef(self->first_child);
+
+ removeFromParent(self->first_child);
+ }
+
+ return vret;
+}
+
+
+/*
+ * The instance read buffer slot.
+ */
+static SIP_SSIZE_T sipWrapper_getreadbuffer(sipWrapper *self,
+ SIP_SSIZE_T segment, void **ptrptr)
+{
+ void *ptr;
+ sipTypeDef *td;
+
+ if ((ptr = getPtrTypeDef(self, &td)) == NULL)
+ return -1;
+
+ return td->td_readbuffer((PyObject *)self, ptr, segment, ptrptr);
+}
+
+
+/*
+ * The instance write buffer slot.
+ */
+static SIP_SSIZE_T sipWrapper_getwritebuffer(sipWrapper *self,
+ SIP_SSIZE_T segment, void **ptrptr)
+{
+ void *ptr;
+ sipTypeDef *td;
+
+ if ((ptr = getPtrTypeDef(self, &td)) == NULL)
+ return -1;
+
+ return td->td_writebuffer((PyObject *)self, ptr, segment, ptrptr);
+}
+
+
+/*
+ * The instance segment count slot.
+ */
+static SIP_SSIZE_T sipWrapper_getsegcount(sipWrapper *self, SIP_SSIZE_T *lenp)
+{
+ void *ptr;
+ sipTypeDef *td;
+
+ if ((ptr = getPtrTypeDef(self, &td)) == NULL)
+ return 0;
+
+ return td->td_segcount((PyObject *)self, ptr, lenp);
+}
+
+
+/*
+ * The instance char buffer slot.
+ */
+static SIP_SSIZE_T sipWrapper_getcharbuffer(sipWrapper *self,
+ SIP_SSIZE_T segment, void **ptrptr)
+{
+ void *ptr;
+ sipTypeDef *td;
+
+ if ((ptr = getPtrTypeDef(self, &td)) == NULL)
+ return -1;
+
+ return td->td_charbuffer((PyObject *)self, ptr, segment, ptrptr);
+}
+
+
+/*
+ * The instance dealloc slot.
+ */
+static void sipWrapper_dealloc(sipWrapper *self)
+{
+ sipTypeDef *td;
+
+ if (getPtrTypeDef(self, &td) != NULL)
+ {
+ /*
+ * Remove the object from the map before calling the class specific
+ * dealloc code. This code calls the C++ dtor and may result in
+ * further calls that pass the instance as an argument. If this is
+ * still in the map then it's reference count would be increased (to
+ * one) and bad things happen when it drops back to zero again. (An
+ * example is PyQt events generated during the dtor call being passed
+ * to an event filter implemented in Python.) By removing it from the
+ * map first we ensure that a new Python object is created.
+ */
+ sipOMRemoveObject(&cppPyMap, self);
+
+ /* Call the C++ dtor if there is one. */
+ if (td->td_dealloc != NULL)
+ td->td_dealloc(self);
+ }
+
+ /*
+ * Now that the C++ object no longer exists we can tidy up the Python
+ * object. We used to do this first but that meant lambda slots were
+ * removed too soon (if they were connected to QObject.destroyed()).
+ */
+ sipWrapper_clear(self);
+
+ while (self->pySigList != NULL)
+ {
+ sipPySig *ps;
+ sipSlotList *psrx;
+
+ /* Take this one out of the list. */
+ ps = self->pySigList;
+ self->pySigList = ps->next;
+
+ while ((psrx = ps->rxlist) != NULL)
+ {
+ ps->rxlist = psrx->next;
+ sipFreeSlotList(psrx);
+ }
+
+ sip_api_free(ps->name);
+ sip_api_free(ps);
+ }
+
+ /* Call the standard super-type dealloc. */
+ PyBaseObject_Type.tp_dealloc((PyObject *)self);
+}
+
+
+/*
+ * The instance call slot. Note that keyword arguments aren't supported.
+ */
+static PyObject *sipWrapper_call(PyObject *self,PyObject *args,PyObject *kw)
+{
+ PyObject *(*f)(PyObject *,PyObject *);
+
+ f = (PyObject *(*)(PyObject *,PyObject *))findSlot(self,call_slot);
+
+ return f(self,args);
+}
+
+
+/*
+ * The sequence instance item slot.
+ */
+static PyObject *sipWrapper_sq_item(PyObject *self, SIP_SSIZE_T n)
+{
+ PyObject *(*f)(PyObject *,PyObject *);
+ PyObject *arg, *res;
+
+#if PY_VERSION_HEX >= 0x02050000
+ if ((arg = PyInt_FromSsize_t(n)) == NULL)
+#else
+ if ((arg = PyInt_FromLong(n)) == NULL)
+#endif
+ return NULL;
+
+ f = (PyObject *(*)(PyObject *,PyObject *))findSlot(self,getitem_slot);
+
+ res = f(self,arg);
+
+ Py_DECREF(arg);
+
+ return res;
+}
+
+
+/*
+ * The mapping instance assign subscript slot.
+ */
+static int sipWrapper_mp_ass_subscript(PyObject *self,PyObject *key,
+ PyObject *value)
+{
+ return objobjargprocSlot(self,key,value,(value != NULL ? setitem_slot : delitem_slot));
+}
+
+
+/*
+ * The sequence instance assign item slot.
+ */
+static int sipWrapper_sq_ass_item(PyObject *self, SIP_SSIZE_T i, PyObject *o)
+{
+ return ssizeobjargprocSlot(self, i, o, (o != NULL ? setitem_slot : delitem_slot));
+}
+
+
+/*
+ * The instance rich compare slot.
+ */
+static PyObject *sipWrapper_richcompare(PyObject *self,PyObject *arg,int op)
+{
+ PyObject *(*f)(PyObject *,PyObject *);
+ sipPySlotType st;
+
+ /* Convert the operation to a slot type. */
+ switch (op)
+ {
+ case Py_LT:
+ st = lt_slot;
+ break;
+
+ case Py_LE:
+ st = le_slot;
+ break;
+
+ case Py_EQ:
+ st = eq_slot;
+ break;
+
+ case Py_NE:
+ st = ne_slot;
+ break;
+
+ case Py_GT:
+ st = gt_slot;
+ break;
+
+ case Py_GE:
+ st = ge_slot;
+ break;
+ }
+
+ /* It might not exist if not all the above have been implemented. */
+ if ((f = (PyObject *(*)(PyObject *,PyObject *))findSlot(self,st)) == NULL)
+ {
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ }
+
+ return f(self,arg);
+}
+
+
+/*
+ * The instance getattro slot.
+ */
+static PyObject *sipWrapper_getattro(PyObject *obj,PyObject *name)
+{
+ char *nm;
+ PyObject *attr;
+ sipWrapperType *wt = (sipWrapperType *)obj->ob_type;
+ sipWrapper *w = (sipWrapper *)obj;
+
+ /*
+ * If we are getting the instance dictionary of a base wrapper type
+ * then we don't want the metatype to handle it.
+ */
+ if ((nm = PyString_AsString(name)) == NULL)
+ return NULL;
+
+ if (strcmp(nm, "__dict__") == 0)
+ {
+ PyObject *tmpdict = NULL;
+
+ if (isExactWrappedType(wt) && getNonStaticVariables(wt, w, &tmpdict) < 0)
+ {
+ Py_XDECREF(tmpdict);
+ return NULL;
+ }
+
+ /*
+ * If a copy of the instance dictionary wasn't created then
+ * just return the original. Note that Python doesn't want a
+ * proxy.
+ */
+ if (tmpdict == NULL)
+ if ((tmpdict = w->dict) == NULL)
+ tmpdict = PyDict_New();
+ else
+ Py_INCREF(tmpdict);
+
+ return tmpdict;
+ }
+
+ /* Try the super-type's method first. */
+ if ((attr = PyBaseObject_Type.tp_getattro(obj,name)) != NULL)
+ return attr;
+
+ return handleGetLazyAttr(name,wt,w);
+}
+
+
+/*
+ * Add the values of all non-static variables to a dictionary (first making a
+ * copy of the dictionary if needed).
+ */
+static int getNonStaticVariables(sipWrapperType *wt,sipWrapper *w,
+ PyObject **ndict)
+{
+ PyMethodDef *pmd;
+
+ if ((pmd = wt->type->td_variables) != NULL)
+ while (pmd->ml_name != NULL)
+ {
+ if ((pmd->ml_flags & METH_STATIC) == 0)
+ {
+ int rc;
+ PyObject *val, *dict;
+
+ /*
+ * Create a copy of the original dictionary if
+ * it hasn't already been done.
+ */
+ if ((dict = *ndict) == NULL)
+ {
+ if ((dict = PyDict_Copy(w->dict)) == NULL)
+ return -1;
+
+ *ndict = dict;
+ }
+
+ if ((val = (*pmd->ml_meth)((PyObject *)w,NULL)) == NULL)
+ return -1;
+
+ rc = PyDict_SetItemString(dict,pmd->ml_name,val);
+
+ Py_DECREF(val);
+
+ if (rc < 0)
+ return -1;
+ }
+
+ ++pmd;
+ }
+
+ return 0;
+}
+
+
+/*
+ * The instance setattro slot.
+ */
+static int sipWrapper_setattro(PyObject *obj,PyObject *name,PyObject *value)
+{
+ int rc;
+
+ rc = handleSetLazyAttr(name,value,(sipWrapperType *)obj->ob_type,(sipWrapper *)obj);
+
+ if (rc <= 0)
+ return rc;
+
+ /* Try the super-type's method last. */
+ return PyBaseObject_Type.tp_setattro(obj,name,value);
+}
+
+
+/*
+ * The type data structure. Note that we pretend to be a mapping object and a
+ * sequence object at the same time. Python will choose one over another,
+ * depending on the context, but we implement as much as we can and don't make
+ * assumptions about which Python will choose.
+ */
+static sipWrapperType sipWrapper_Type = {
+ {
+ {
+ PyObject_HEAD_INIT(&sipWrapperType_Type)
+ 0, /* ob_size */
+ "sip.wrapper", /* tp_name */
+ sizeof (sipWrapper), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ (destructor)sipWrapper_dealloc, /* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_compare */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ sipWrapper_getattro, /* tp_getattro */
+ sipWrapper_setattro, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */
+ 0, /* tp_doc */
+ (traverseproc)sipWrapper_traverse, /* tp_traverse */
+ (inquiry)sipWrapper_clear, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ 0, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ offsetof(sipWrapper,dict), /* tp_dictoffset */
+ (initproc)sipWrapper_init, /* tp_init */
+ 0, /* tp_alloc */
+ (newfunc)sipWrapper_new, /* tp_new */
+ 0, /* tp_free */
+ },
+ },
+ 0,
+ 0
+};
+
+
+/*
+ * Add the slots for a type and all its super-types.
+ */
+static void addSlots(sipWrapperType *wt, sipTypeDef *td)
+{
+ sipEncodedClassDef *sup;
+
+ /* Add the buffer interface. */
+ if (td->td_readbuffer != NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ wt->super.as_buffer.bf_getreadbuffer = (readbufferproc)sipWrapper_getreadbuffer;
+#else
+ wt->super.as_buffer.bf_getreadbuffer = (getreadbufferproc)sipWrapper_getreadbuffer;
+#endif
+
+ if (td->td_writebuffer != NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ wt->super.as_buffer.bf_getwritebuffer = (writebufferproc)sipWrapper_getwritebuffer;
+#else
+ wt->super.as_buffer.bf_getwritebuffer = (getwritebufferproc)sipWrapper_getwritebuffer;
+#endif
+
+ if (td->td_segcount != NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ wt->super.as_buffer.bf_getsegcount = (segcountproc)sipWrapper_getsegcount;
+#else
+ wt->super.as_buffer.bf_getsegcount = (getsegcountproc)sipWrapper_getsegcount;
+#endif
+
+ if (td->td_charbuffer != NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ wt->super.as_buffer.bf_getcharbuffer = (charbufferproc)sipWrapper_getcharbuffer;
+#else
+ wt->super.as_buffer.bf_getcharbuffer = (getcharbufferproc)sipWrapper_getcharbuffer;
+#endif
+
+ /* Add the slots for this type. */
+ if (td->td_pyslots != NULL)
+ initSlots((PyTypeObject *)wt, &wt->super.as_number, &wt->super.as_sequence, &wt->super.as_mapping, td->td_pyslots, FALSE);
+
+ /* Recurse through any super-types. */
+ if ((sup = td->td_supers) != NULL)
+ do
+ addSlots(wt, getClassType(sup, td->td_module)->type);
+ while (!sup++->sc_flag);
+}
+
+
+/*
+ * Add the slot handler for each slot present in the type, optionally replacing
+ * any that have already been defined.
+ */
+static void initSlots(PyTypeObject *to, PyNumberMethods *nb, PySequenceMethods *sq, PyMappingMethods *mp, sipPySlotDef *slots, int force)
+{
+ void *f;
+
+ while ((f = slots->psd_func) != NULL)
+ switch (slots++->psd_type)
+ {
+ case str_slot:
+ if (force || to->tp_str == NULL)
+ to->tp_str = (reprfunc)f;
+ break;
+
+ case int_slot:
+ if (nb != NULL)
+ if (force || nb->nb_int == NULL)
+ nb->nb_int = (unaryfunc)f;
+ break;
+
+ case long_slot:
+ if (nb != NULL)
+ if (force || nb->nb_long == NULL)
+ nb->nb_long = (unaryfunc)f;
+ break;
+
+ case float_slot:
+ if (nb != NULL)
+ if (force || nb->nb_float == NULL)
+ nb->nb_float = (unaryfunc)f;
+ break;
+
+ case len_slot:
+ if (mp != NULL)
+ if (force || mp->mp_length == NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ mp->mp_length = (lenfunc)f;
+#else
+ mp->mp_length = (inquiry)f;
+#endif
+ if (sq != NULL)
+ if (force || sq->sq_length == NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ sq->sq_length = (lenfunc)f;
+#else
+ sq->sq_length = (inquiry)f;
+#endif
+ break;
+
+ case contains_slot:
+ if (sq != NULL)
+ if (force || sq->sq_contains == NULL)
+ sq->sq_contains = (objobjproc)f;
+ break;
+
+ case add_slot:
+ if (nb != NULL)
+ if (force || nb->nb_add == NULL)
+ nb->nb_add = (binaryfunc)f;
+ break;
+
+ case concat_slot:
+ if (sq != NULL)
+ if (force || sq->sq_concat == NULL)
+ sq->sq_concat = (binaryfunc)f;
+ break;
+
+ case sub_slot:
+ if (nb != NULL)
+ if (force || nb->nb_subtract == NULL)
+ nb->nb_subtract = (binaryfunc)f;
+ break;
+
+ case mul_slot:
+ if (nb != NULL)
+ if (force || nb->nb_multiply == NULL)
+ nb->nb_multiply = (binaryfunc)f;
+ break;
+
+ case repeat_slot:
+ if (sq != NULL)
+ if (force || sq->sq_repeat == NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ sq->sq_repeat = (ssizeargfunc)f;
+#else
+ sq->sq_repeat = (intargfunc)f;
+#endif
+ break;
+
+ case div_slot:
+ if (nb != NULL)
+ {
+ if (force || nb->nb_divide == NULL)
+ nb->nb_divide = (binaryfunc)f;
+
+ if (force || nb->nb_true_divide == NULL)
+ nb->nb_true_divide = (binaryfunc)f;
+ }
+ break;
+
+ case mod_slot:
+ if (nb != NULL)
+ if (force || nb->nb_remainder == NULL)
+ nb->nb_remainder = (binaryfunc)f;
+ break;
+
+ case and_slot:
+ if (nb != NULL)
+ if (force || nb->nb_and == NULL)
+ nb->nb_and = (binaryfunc)f;
+ break;
+
+ case or_slot:
+ if (nb != NULL)
+ if (force || nb->nb_or == NULL)
+ nb->nb_or = (binaryfunc)f;
+ break;
+
+ case xor_slot:
+ if (nb != NULL)
+ if (force || nb->nb_xor == NULL)
+ nb->nb_xor = (binaryfunc)f;
+ break;
+
+ case lshift_slot:
+ if (nb != NULL)
+ if (force || nb->nb_lshift == NULL)
+ nb->nb_lshift = (binaryfunc)f;
+ break;
+
+ case rshift_slot:
+ if (nb != NULL)
+ if (force || nb->nb_rshift == NULL)
+ nb->nb_rshift = (binaryfunc)f;
+ break;
+
+ case iadd_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_add == NULL)
+ nb->nb_inplace_add = (binaryfunc)f;
+ break;
+
+ case iconcat_slot:
+ if (sq != NULL)
+ if (force || sq->sq_inplace_concat == NULL)
+ sq->sq_inplace_concat = (binaryfunc)f;
+ break;
+
+ case isub_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_subtract == NULL)
+ nb->nb_inplace_subtract = (binaryfunc)f;
+ break;
+
+ case imul_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_multiply == NULL)
+ nb->nb_inplace_multiply = (binaryfunc)f;
+ break;
+
+ case irepeat_slot:
+ if (sq != NULL)
+ if (force || sq->sq_inplace_repeat == NULL)
+#if PY_VERSION_HEX >= 0x02050000
+ sq->sq_inplace_repeat = (ssizeargfunc)f;
+#else
+ sq->sq_inplace_repeat = (intargfunc)f;
+#endif
+ break;
+
+ case idiv_slot:
+ if (nb != NULL)
+ {
+ if (force || nb->nb_inplace_divide == NULL)
+ nb->nb_inplace_divide = (binaryfunc)f;
+
+ if (force || nb->nb_inplace_true_divide == NULL)
+ nb->nb_inplace_true_divide = (binaryfunc)f;
+ }
+ break;
+
+ case imod_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_remainder == NULL)
+ nb->nb_inplace_remainder = (binaryfunc)f;
+ break;
+
+ case iand_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_and == NULL)
+ nb->nb_inplace_and = (binaryfunc)f;
+ break;
+
+ case ior_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_or == NULL)
+ nb->nb_inplace_or = (binaryfunc)f;
+ break;
+
+ case ixor_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_xor == NULL)
+ nb->nb_inplace_xor = (binaryfunc)f;
+ break;
+
+ case ilshift_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_lshift == NULL)
+ nb->nb_inplace_lshift = (binaryfunc)f;
+ break;
+
+ case irshift_slot:
+ if (nb != NULL)
+ if (force || nb->nb_inplace_rshift == NULL)
+ nb->nb_inplace_rshift = (binaryfunc)f;
+ break;
+
+ case invert_slot:
+ if (nb != NULL)
+ if (force || nb->nb_invert == NULL)
+ nb->nb_invert = (unaryfunc)f;
+ break;
+
+ case call_slot:
+ if (force || to->tp_call == NULL)
+ to->tp_call = sipWrapper_call;
+ break;
+
+ case getitem_slot:
+ if (mp != NULL)
+ if (force || mp->mp_subscript == NULL)
+ mp->mp_subscript = (binaryfunc)f;
+ if (sq != NULL)
+ if (force || sq->sq_item == NULL)
+ sq->sq_item = sipWrapper_sq_item;
+ break;
+
+ case setitem_slot:
+ case delitem_slot:
+ if (mp != NULL)
+ if (force || mp->mp_ass_subscript == NULL)
+ mp->mp_ass_subscript = sipWrapper_mp_ass_subscript;
+ if (sq != NULL)
+ if (force || sq->sq_ass_item == NULL)
+ sq->sq_ass_item = sipWrapper_sq_ass_item;
+ break;
+
+ case lt_slot:
+ case le_slot:
+ case eq_slot:
+ case ne_slot:
+ case gt_slot:
+ case ge_slot:
+ if (force || to->tp_richcompare == NULL)
+ to->tp_richcompare = sipWrapper_richcompare;
+ break;
+
+ case cmp_slot:
+ if (force || to->tp_compare == NULL)
+ to->tp_compare = (cmpfunc)f;
+ break;
+
+ case nonzero_slot:
+ if (nb != NULL)
+ if (force || nb->nb_nonzero == NULL)
+ nb->nb_nonzero = (inquiry)f;
+ break;
+
+ case neg_slot:
+ if (nb != NULL)
+ if (force || nb->nb_negative == NULL)
+ nb->nb_negative = (unaryfunc)f;
+ break;
+
+ case repr_slot:
+ if (force || to->tp_repr == NULL)
+ to->tp_repr = (reprfunc)f;
+ break;
+
+ case hash_slot:
+ if (force || to->tp_hash == NULL)
+ to->tp_hash = (hashfunc)f;
+ break;
+
+ case pos_slot:
+ if (nb != NULL)
+ if (force || nb->nb_positive == NULL)
+ nb->nb_positive = (unaryfunc)f;
+ break;
+
+ case abs_slot:
+ if (nb != NULL)
+ if (force || nb->nb_absolute == NULL)
+ nb->nb_absolute = (unaryfunc)f;
+ break;
+ }
+}
+
+
+/*
+ * Search for a named class and return the wrapper type.
+ */
+static sipWrapperType *findClass(sipExportedModuleDef *emd, const char *name,
+ size_t len)
+{
+ int i;
+ sipWrapperType **wtp = emd->em_types;
+
+ for (i = 0; i < emd->em_nrtypes; ++i)
+ {
+ sipWrapperType *wt;
+
+ if ((wt = *wtp++) == NULL)
+ continue;
+
+ if (wt->type->td_cname != NULL)
+ {
+ if (!nameEq(wt->type->td_cname, name, len))
+ continue;
+ }
+ else if (!sameScopedName(wt->type->td_name, name, len))
+ continue;
+
+ return wt;
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Search for a named class and return TRUE and the necessary information to
+ * create an instance of it if it was found.
+ */
+static int findClassArg(sipExportedModuleDef *emd, const char *name,
+ size_t len, sipSigArg *at, int indir)
+{
+ sipWrapperType *wt = findClass(emd, name, len);
+
+ if (wt == NULL)
+ return FALSE;
+
+ if (indir == 0)
+ at->atype = class_sat;
+ else if (indir == 1)
+ at->atype = classp_sat;
+ else
+ at->atype = unknown_sat;
+
+ at->u.wt = wt;
+
+ return TRUE;
+}
+
+
+/*
+ * Search for a mapped type and return TRUE and the necessary information to
+ * create an instance of it if it was found.
+ */
+static int findMtypeArg(sipMappedType **mttab, const char *name, size_t len,
+ sipSigArg *at, int indir)
+{
+ sipMappedType *mt;
+
+ while ((mt = *mttab++) != NULL)
+ if (nameEq(mt->mt_name, name, len))
+ {
+ if (indir == 0)
+ at->atype = mtype_sat;
+ else if (indir == 1)
+ at->atype = mtypep_sat;
+ else
+ at->atype = unknown_sat;
+
+ at->u.mt = mt;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+/*
+ * Search for a named enum in a particular module and return the corresponding
+ * type object.
+ */
+static PyTypeObject *findEnum(sipExportedModuleDef *emd, const char *name,
+ size_t len)
+{
+ int i;
+ sipEnumDef *ed;
+
+ for (ed = emd->em_enumdefs, i = 0; i < emd->em_nrenums; ++i, ++ed)
+ {
+ if (ed->e_cname != NULL)
+ {
+ if (!nameEq(ed->e_cname, name, len))
+ continue;
+ }
+ else if (!sameScopedName(ed->e_name, name, len))
+ continue;
+
+ return emd->em_enums[i];
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Search for a named enum and return TRUE and the necessary information to
+ * create an instance of it if it was found.
+ */
+static int findEnumArg(sipExportedModuleDef *emd, const char *name, size_t len,
+ sipSigArg *at, int indir)
+{
+ PyTypeObject *py = findEnum(emd, name, len);
+
+ if (py == NULL)
+ return FALSE;
+
+ if (indir == 0)
+ at->atype = enum_sat;
+ else
+ at->atype = unknown_sat;
+
+ at->u.et = py;
+
+ return TRUE;
+}
+
+
+/*
+ * Search for a named type and the necessary information to create an instance
+ * of it.
+ */
+void sipFindSigArgType(const char *name, size_t len, sipSigArg *at, int indir)
+{
+ sipExportedModuleDef *em;
+ sipPyObject *po;
+
+ at->atype = unknown_sat;
+
+ for (em = clientList; em != NULL; em = em->em_next)
+ {
+ sipTypedefDef *tdd;
+
+ /* Search for a typedef. */
+ if ((tdd = em->em_typedefs) != NULL)
+ while (tdd->tdd_name != NULL)
+ {
+ if (nameEq(tdd->tdd_name, name, len))
+ {
+ sipExportedModuleDef *tem;
+ const char *tn;
+ size_t tnlen;
+
+ at->atype = tdd->tdd_type;
+
+ /* Done with the simple cases. */
+ if ((tn = tdd->tdd_type_name) == NULL)
+ return;
+
+ /*
+ * Find the module that this class, mapped type or enum is
+ * defined in.
+ */
+ if (tdd->tdd_mod_name == NULL)
+ tem = em;
+ else
+ for (tem = clientList; tem != NULL; tem = tem->em_next)
+ if (strcmp(tem->em_name, tdd->tdd_mod_name) == 0)
+ break;
+
+ tnlen = strlen(tn);
+
+ switch (tdd->tdd_type)
+ {
+ case class_sat:
+ findClassArg(tem, tn, tnlen, at, indir);
+ break;
+
+ case mtype_sat:
+ findMtypeArg(tem->em_mappedtypes, tn, tnlen, at, indir);
+ break;
+
+ case enum_sat:
+ findEnumArg(tem, tn, tnlen, at, indir);
+ break;
+ }
+
+ /* We should have found it by now. */
+ return;
+ }
+
+ ++tdd;
+ }
+
+ /* Search for a class. */
+ if (em->em_types != NULL && findClassArg(em, name, len, at, indir))
+ return;
+
+ /* Search for a mapped type. */
+ if (em->em_mappedtypes != NULL && findMtypeArg(em->em_mappedtypes, name, len, at, indir))
+ return;
+
+ /* Search for an enum. */
+ if (em->em_enums != NULL && findEnumArg(em, name, len, at, indir))
+ return;
+ }
+
+ /* Search for a dynamically registered int type. */
+ for (po = sipRegisteredIntTypes; po != NULL; po = po->next)
+ {
+ int i;
+
+ for (i = 0; i < PyTuple_GET_SIZE(po->object); ++i)
+ {
+ char *int_nm = PyString_AsString(PyTuple_GET_ITEM(po->object, i));
+
+ if (int_nm == NULL)
+ continue;
+
+ if (nameEq(int_nm, name, len))
+ {
+ at->atype = int_sat;
+ return;
+ }
+ }
+ }
+}
+
+
+/*
+ * Compare a '\0' terminated string with the first len characters of a second
+ * and return a non-zero value if they are equal.
+ */
+static int nameEq(const char *with, const char *name, size_t len)
+{
+ return (strlen(with) == len && strncmp(with, name, len) == 0);
+}
+
+
+/*
+ * Return TRUE if a Python scoped name and a fixed length C++ scoped name
+ * match.
+ */
+static int sameScopedName(const char *pyname, const char *name, size_t len)
+{
+ char ch;
+
+ /* Skip the module name from the Python name. */
+ pyname = strchr(pyname, '.') + 1;
+
+ while ((ch = *pyname++) != '\0' && len)
+ if (ch == '.')
+ {
+ if (len < 2 || name[0] != ':' || name[1] != ':')
+ return FALSE;
+
+ name += 2;
+ len -= 2;
+ }
+ else if (ch == name[0])
+ {
+ ++name;
+ --len;
+ }
+ else
+ return FALSE;
+
+ return (ch == '\0' && len == 0);
+}
+
+
+/*
+ * Register a Python tuple of type names that will be interpreted as ints if
+ * they are seen as signal arguments.
+ */
+static int sip_api_register_int_types(PyObject *args)
+{
+ sipPyObject *po;
+ int bad_args = FALSE;
+
+ /* Raise an exception if the arguments are bad. */
+ if (PyTuple_Check(args))
+ {
+ int i;
+
+ for (i = 0; i < PyTuple_GET_SIZE(args); ++i)
+ if (!PyString_Check(PyTuple_GET_ITEM(args, i)))
+ {
+ bad_args = TRUE;
+ break;
+ }
+ }
+ else
+ bad_args = TRUE;
+
+ if (bad_args)
+ {
+ PyErr_SetString(PyExc_TypeError, "all arguments must be strings");
+ return -1;
+ }
+
+ if ((po = sip_api_malloc(sizeof (sipPyObject))) == NULL)
+ return -1;
+
+ Py_INCREF(args);
+
+ po->object = args;
+ po->next = sipRegisteredIntTypes;
+
+ sipRegisteredIntTypes = po;
+
+ return 0;
+}
+
+
+/*
+ * Register a symbol with a name. A negative value is returned if the name was
+ * already registered.
+ */
+static int sip_api_export_symbol(const char *name, void *sym)
+{
+ sipSymbol *ss;
+
+ if (sip_api_import_symbol(name) != NULL)
+ return -1;
+
+ if ((ss = sip_api_malloc(sizeof (sipSymbol))) == NULL)
+ return -1;
+
+ ss->name = name;
+ ss->symbol = sym;
+ ss->next = sipSymbolList;
+
+ sipSymbolList = ss;
+
+ return 0;
+}
+
+
+/*
+ * Return the symbol registered with the given name. NULL is returned if the
+ * name was not registered.
+ */
+static void *sip_api_import_symbol(const char *name)
+{
+ sipSymbol *ss;
+
+ for (ss = sipSymbolList; ss != NULL; ss = ss->next)
+ if (strcmp(ss->name, name) == 0)
+ return ss->symbol;
+
+ return NULL;
+}
+
+
+/*
+ * Returns TRUE if the Qt support is present and conforms to the v3.4 or later
+ * of the SIP API.
+ */
+static int qt_and_sip_api_3_4(void)
+{
+ return (sipQtSupport != NULL && sipQObjectClass->type->td_module->em_api_minor >= 4);
+}
+
+
+/*
+ * Visit a slot connected to an object for the cyclic garbage collector.
+ */
+static int visitSlot(sipSlot *slot, visitproc visit, void *arg)
+{
+ if (slot->pyobj != NULL && sipLambdaSlot(slot->pyobj))
+ return visit(slot->pyobj, arg);
+
+ return 0;
+}
+
+
+/*
+ * Clear a slot if it is a lambda function.
+ */
+static void clearAnyLambda(sipSlot *slot)
+{
+ PyObject *lam = slot->pyobj;
+
+ if (lam != NULL && sipLambdaSlot(lam))
+ {
+ /*
+ * Replace the lambda function with None. We don't use NULL as this
+ * has another meaning.
+ */
+ Py_INCREF(Py_None);
+ slot->pyobj = Py_None;
+
+ Py_DECREF(lam);
+ }
+}
+
+
+/*
+ * Convert a Python object to a character.
+ */
+static char sip_api_string_as_char(PyObject *obj)
+{
+ char ch;
+
+ if (parseChar(obj, &ch) < 0)
+ {
+ PyErr_SetString(PyExc_ValueError, "string of length 1 expected");
+
+ return '\0';
+ }
+
+ return ch;
+}
+
+
+/*
+ * Parse a character array and return it's address and length.
+ */
+static int parseCharArray(PyObject *obj, char **ap, int *aszp)
+{
+ if (obj == Py_None)
+ {
+ *ap = NULL;
+ *aszp = 0;
+ }
+ else if (PyString_Check(obj))
+ {
+ *ap = PyString_AS_STRING(obj);
+ *aszp = (int)PyString_GET_SIZE(obj);
+ }
+ else
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * Parse a character and return it.
+ */
+static int parseChar(PyObject *obj, char *ap)
+{
+ if (!PyString_Check(obj) || PyString_GET_SIZE(obj) != 1)
+ return -1;
+
+ *ap = *PyString_AS_STRING(obj);
+
+ return 0;
+}
+
+
+/*
+ * Parse a character string and return it.
+ */
+static int parseCharString(PyObject *obj, char **ap)
+{
+ if (obj == Py_None)
+ *ap = NULL;
+ else if (PyString_Check(obj))
+ *ap = PyString_AS_STRING(obj);
+ else
+ return -1;
+
+ return 0;
+}
+
+
+#if defined(HAVE_WCHAR_H)
+/*
+ * Convert a Python object to a wide character.
+ */
+static wchar_t sip_api_unicode_as_wchar(PyObject *obj)
+{
+ wchar_t ch;
+
+ if (parseWChar(obj, &ch) < 0)
+ {
+ PyErr_SetString(PyExc_ValueError, "unicode string of length 1 expected");
+
+ return L'\0';
+ }
+
+ return ch;
+}
+
+
+/*
+ * Convert a Python object to a wide character string on the heap.
+ */
+static wchar_t *sip_api_unicode_as_wstring(PyObject *obj)
+{
+ wchar_t *p;
+
+ if (parseWCharString(obj, &p) < 0)
+ {
+ PyErr_SetString(PyExc_ValueError, "unicode string expected");
+
+ return NULL;
+ }
+
+ return p;
+}
+
+
+/*
+ * Parse a wide character array and return it's address and length.
+ */
+static int parseWCharArray(PyObject *obj, wchar_t **ap, int *aszp)
+{
+ if (obj == Py_None)
+ {
+ *ap = NULL;
+ *aszp = 0;
+ }
+ else if (PyUnicode_Check(obj))
+ {
+ SIP_SSIZE_T ulen;
+ wchar_t *wc;
+
+ ulen = PyUnicode_GET_SIZE(obj);
+
+ if ((wc = sip_api_malloc(ulen * sizeof (wchar_t))) == NULL)
+ return -1;
+
+ ulen = PyUnicode_AsWideChar((PyUnicodeObject *)obj, wc, ulen);
+
+ if (ulen < 0)
+ {
+ sip_api_free(wc);
+ return -1;
+ }
+
+ *ap = wc;
+ *aszp = (int)ulen;
+ }
+ else
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * Parse a wide character and return it.
+ */
+static int parseWChar(PyObject *obj, wchar_t *ap)
+{
+ if (!PyUnicode_Check(obj) || PyUnicode_GET_SIZE(obj) != 1)
+ return -1;
+
+ if (PyUnicode_AsWideChar((PyUnicodeObject *)obj, ap, 1) != 1)
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * Parse a wide character string and return it.
+ */
+static int parseWCharString(PyObject *obj, wchar_t **ap)
+{
+ if (obj == Py_None)
+ *ap = NULL;
+ else if (PyUnicode_Check(obj))
+ {
+ SIP_SSIZE_T ulen;
+ wchar_t *wc;
+
+ ulen = PyUnicode_GET_SIZE(obj);
+
+ if ((wc = sip_api_malloc((ulen + 1) * sizeof (wchar_t))) == NULL)
+ return -1;
+
+ ulen = PyUnicode_AsWideChar((PyUnicodeObject *)obj, wc, ulen);
+
+ if (ulen < 0)
+ {
+ sip_api_free(wc);
+ return -1;
+ }
+
+ wc[ulen] = L'\0';
+
+ *ap = wc;
+ }
+ else
+ return -1;
+
+ return 0;
+}
+
+#else
+
+/*
+ * Convert a Python object to a wide character.
+ */
+static int sip_api_unicode_as_wchar(PyObject *obj)
+{
+ raiseNoWChar();
+
+ return 0;
+}
+
+
+/*
+ * Convert a Python object to a wide character.
+ */
+static int *sip_api_unicode_as_wstring(PyObject *obj)
+{
+ raiseNoWChar();
+
+ return NULL;
+}
+
+
+/*
+ * Report the need for absent wide character support.
+ */
+static void raiseNoWChar()
+{
+ PyErr_SetString(PyExc_SystemError, "sip built without wchar_t support");
+}
+
+#endif
diff --git a/python/sip/siplib/siplib.sbf b/python/sip/siplib/siplib.sbf
new file mode 100644
index 00000000..2499d1b8
--- /dev/null
+++ b/python/sip/siplib/siplib.sbf
@@ -0,0 +1,16 @@
+# This is the build file for the extension module.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of SIP.
+#
+# This copy of SIP is licensed for use under the terms of the SIP License
+# Agreement. See the file LICENSE for more details.
+#
+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+target = sip
+sources = siplib.c qtlib.c threads.c objmap.c bool.cpp
+headers = sip.h sipint.h
diff --git a/python/sip/siplib/threads.c b/python/sip/siplib/threads.c
new file mode 100644
index 00000000..c4ee75ff
--- /dev/null
+++ b/python/sip/siplib/threads.c
@@ -0,0 +1,223 @@
+/*
+ * Thread support for the SIP library. This module provides the hooks for
+ * C++ classes that provide a thread interface to interact properly with the
+ * Python threading infrastructure.
+ *
+ * Copyright (c) 2007
+ * Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+ *
+ * This file is part of SIP.
+ *
+ * This copy of SIP is licensed for use under the terms of the SIP License
+ * Agreement. See the file LICENSE for more details.
+ *
+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+#include "sip.h"
+#include "sipint.h"
+
+
+/*
+ * The data associated with pending request to wrap an object.
+ */
+typedef struct _pendingDef {
+ void *cpp; /* The C/C++ object ot be wrapped. */
+ sipWrapper *owner; /* The owner of the object. */
+ int flags; /* The flags. */
+} pendingDef;
+
+
+#ifdef WITH_THREAD
+
+#include <pythread.h>
+
+
+/*
+ * The per thread data we need to maintain.
+ */
+typedef struct _threadDef {
+ long thr_ident; /* The thread identifier. */
+ pendingDef pending; /* An object waiting to be wrapped. */
+ struct _threadDef *next; /* Next in the list. */
+} threadDef;
+
+
+static threadDef *threads = NULL; /* Linked list of threads. */
+
+
+static threadDef *currentThreadDef(void);
+
+#endif
+
+
+static pendingDef pending; /* An object waiting to be wrapped. */
+
+
+/*
+ * Get the address of any C/C++ object waiting to be wrapped.
+ */
+void *sipGetPending(sipWrapper **op, int *fp)
+{
+ pendingDef *pp;
+
+#ifdef WITH_THREAD
+ threadDef *td;
+
+ if ((td = currentThreadDef()) != NULL)
+ pp = &td->pending;
+ else
+ pp = &pending;
+#else
+ pp = &pending;
+#endif
+
+ if (pp->cpp != NULL)
+ {
+ if (op != NULL)
+ *op = pp->owner;
+
+ if (fp != NULL)
+ *fp = pp->flags;
+ }
+
+ return pp->cpp;
+}
+
+
+/*
+ * Convert a new C/C++ pointer to a Python instance.
+ */
+PyObject *sipWrapSimpleInstance(void *cppPtr, sipWrapperType *type,
+ sipWrapper *owner, int flags)
+{
+ static PyObject *nullargs = NULL;
+
+ pendingDef old_pending;
+ PyObject *self;
+#ifdef WITH_THREAD
+ threadDef *td;
+#endif
+
+ if (nullargs == NULL && (nullargs = PyTuple_New(0)) == NULL)
+ return NULL;
+
+ if (cppPtr == NULL)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ /*
+ * Object creation can trigger the Python garbage collector which in turn
+ * can execute arbitrary Python code which can then call this function
+ * recursively. Therefore we save any existing pending object before
+ * setting the new one.
+ */
+#ifdef WITH_THREAD
+ if ((td = currentThreadDef()) != NULL)
+ {
+ old_pending = td->pending;
+
+ td->pending.cpp = cppPtr;
+ td->pending.owner = owner;
+ td->pending.flags = flags;
+ }
+ else
+ {
+ old_pending = pending;
+
+ pending.cpp = cppPtr;
+ pending.owner = owner;
+ pending.flags = flags;
+ }
+#else
+ old_pending = pending;
+
+ pending.cpp = cppPtr;
+ pending.owner = owner;
+ pending.flags = flags;
+#endif
+
+ self = PyObject_Call((PyObject *)type, nullargs, NULL);
+
+#ifdef WITH_THREAD
+ if (td != NULL)
+ td->pending = old_pending;
+ else
+ pending = old_pending;
+#else
+ pending = old_pending;
+#endif
+
+ return self;
+}
+
+
+/*
+ * This is called from a newly created thread to initialise some thread local
+ * storage.
+ */
+void sip_api_start_thread(void)
+{
+#ifdef WITH_THREAD
+ threadDef *td;
+
+ /* Save the thread ID. First, find an empty slot in the list. */
+ for (td = threads; td != NULL; td = td->next)
+ if (td->thr_ident == 0)
+ break;
+
+ if (td == NULL)
+ {
+ td = sip_api_malloc(sizeof (threadDef));
+ td->next = threads;
+ threads = td;
+ }
+
+ if (td != NULL)
+ {
+ td->thr_ident = PyThread_get_thread_ident();
+ td->pending.cpp = NULL;
+ }
+#endif
+}
+
+
+/*
+ * Handle the termination of a thread. The thread state should already have
+ * been handled by the last call to PyGILState_Release().
+ */
+void sip_api_end_thread(void)
+{
+#ifdef WITH_THREAD
+ threadDef *td;
+
+ /* We have the GIL at this point. */
+ if ((td = currentThreadDef()) != NULL)
+ td->thr_ident = 0;
+#endif
+}
+
+
+#ifdef WITH_THREAD
+
+/*
+ * Return the thread data for the current thread or NULL if it wasn't
+ * recognised.
+ */
+static threadDef *currentThreadDef(void)
+{
+ threadDef *td;
+ long ident = PyThread_get_thread_ident();
+
+ for (td = threads; td != NULL; td = td->next)
+ if (td->thr_ident == ident)
+ break;
+
+ return td;
+}
+
+#endif
diff --git a/python/sip/siputils.py b/python/sip/siputils.py
new file mode 100644
index 00000000..d4e596ca
--- /dev/null
+++ b/python/sip/siputils.py
@@ -0,0 +1,2354 @@
+# This module is intended to be used by the build/installation scripts of
+# extension modules created with SIP. It provides information about file
+# locations, version numbers etc., and provides some classes and functions.
+#
+# Copyright (c) 2007
+# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+#
+# This file is part of SIP.
+#
+# This copy of SIP is licensed for use under the terms of the SIP License
+# Agreement. See the file LICENSE for more details.
+#
+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import sys
+import os
+import string
+import types
+import stat
+import re
+
+
+# These are installation specific values created when SIP was configured.
+# @SIP_CONFIGURATION@
+
+# The stack of configuration dictionaries.
+_config_stack = []
+
+
+class Configuration(object):
+ """The class that represents SIP configuration values.
+ """
+ def __init__(self, sub_cfg=None):
+ """Initialise an instance of the class.
+
+ sub_cfg is the list of sub-class configurations. It should be None
+ when called normally.
+ """
+ # Find the build macros in the closest imported module from where this
+ # was originally defined.
+ self._macros = None
+
+ for cls in self.__class__.__mro__:
+ if cls is object:
+ continue
+
+ mod = sys.modules[cls.__module__]
+
+ if hasattr(mod, "_default_macros"):
+ self._macros = mod._default_macros
+ break
+
+ if sub_cfg:
+ cfg = sub_cfg
+ else:
+ cfg = []
+
+ cfg.append(_pkg_config)
+
+ global _config_stack
+ _config_stack = cfg
+
+ def __getattr__(self, name):
+ """Allow configuration values and user options to be handled as
+ instance variables.
+
+ name is the name of the configuration value or user option.
+ """
+ for cfg in _config_stack:
+ try:
+ return cfg[name]
+ except KeyError:
+ pass
+
+ raise AttributeError, "\"%s\" is not a valid configuration value or user option" % name
+
+ def build_macros(self):
+ """Return the dictionary of platform specific build macros.
+ """
+ return self._macros
+
+ def set_build_macros(self, macros):
+ """Set the dictionary of build macros to be use when generating
+ Makefiles.
+
+ macros is the dictionary of platform specific build macros.
+ """
+ self._macros = macros
+
+
+class _UniqueList:
+ """A limited list that ensures all its elements are unique.
+ """
+ def __init__(self, value=None):
+ """Initialise the instance.
+
+ value is the initial value of the list.
+ """
+ if value is None:
+ self._list = []
+ else:
+ self._list = value
+
+ def append(self, value):
+ """Append a value to the list if it isn't already present.
+
+ value is the value to append.
+ """
+ if value not in self._list:
+ self._list.append(value)
+
+ def lextend(self, value):
+ """A normal list extend ignoring the uniqueness.
+
+ value is the list of elements to append.
+ """
+ self._list.extend(value)
+
+ def extend(self, value):
+ """Append each element of a value to a list if it isn't already
+ present.
+
+ value is the list of elements to append.
+ """
+ for el in value:
+ self.append(el)
+
+ def as_list(self):
+ """Return the list as a raw list.
+ """
+ return self._list
+
+
+class _Macro:
+ """A macro that can be manipulated as a list.
+ """
+ def __init__(self, name, value):
+ """Initialise the instance.
+
+ name is the name of the macro.
+ value is the initial value of the macro.
+ """
+ self._name = name
+ self.set(value)
+
+ def set(self, value):
+ """Explicitly set the value of the macro.
+
+ value is the new value. It may be a string, a list of strings or a
+ _UniqueList instance.
+ """
+ self._macro = []
+
+ if isinstance(value, _UniqueList):
+ value = value.as_list()
+
+ if type(value) == types.ListType:
+ self.extend(value)
+ else:
+ self.append(value)
+
+ def append(self, value):
+ """Append a value to the macro.
+
+ value is the value to append.
+ """
+ if value:
+ self._macro.append(value)
+
+ def extend(self, value):
+ """Append each element of a value to the macro.
+
+ value is the list of elements to append.
+ """
+ for el in value:
+ self.append(el)
+
+ def as_list(self):
+ """Return the macro as a list.
+ """
+ return self._macro
+
+
+class Makefile:
+ """The base class for the different types of Makefiles.
+ """
+ def __init__(self, configuration, console=0, qt=0, opengl=0, python=0,
+ threaded=0, warnings=1, debug=0, dir=None,
+ makefile="Makefile", installs=None, universal=''):
+ """Initialise an instance of the target. All the macros are left
+ unchanged allowing scripts to manipulate them at will.
+
+ configuration is the current configuration.
+ console is set if the target is a console (rather than windows) target.
+ qt is set if the target uses Qt. For Qt v4 a list of Qt libraries may
+ be specified and a simple non-zero value implies QtCore and QtGui.
+ opengl is set if the target uses OpenGL.
+ python is set if the target #includes Python.h.
+ debug is set to generated a debugging version of the target.
+ threaded is set if the target requires thread support. It is
+ automatically set if the target uses Qt and Qt has thread support
+ enabled.
+ warnings is set if compiler warning messages are required.
+ debug is set if debugging symbols should be generated.
+ dir is the directory for build files and Makefiles.
+ makefile is the name of the Makefile.
+ installs is a list of extra install targets. Each element is a two
+ part list, the first of which is the source and the second is the
+ destination. If the source is another list then it is a set of source
+ files and the destination is a directory.
+ universal is the name of the SDK if the target is a MacOS/X universal
+ binary.
+ """
+ if qt:
+ if not hasattr(configuration, "qt_version"):
+ error("The target uses Qt but pyqtconfig has not been imported.")
+
+ # For Qt v4 interpret Qt support as meaning link against the core
+ # and GUI libraries (which corresponds to the default qmake
+ # configuration). Also allow a list of Qt v4 modules to be
+ # specified.
+ if configuration.qt_version >= 0x040000:
+ if type(qt) != types.ListType:
+ qt = ["QtCore", "QtGui"]
+
+ self._threaded = configuration.qt_threaded
+ else:
+ self._threaded = threaded
+
+ if sys.platform != "darwin":
+ universal = ''
+
+ self.config = configuration
+ self.console = console
+ self._qt = qt
+ self._opengl = opengl
+ self._python = python
+ self._warnings = warnings
+ self._debug = debug
+ self._dir = dir
+ self._makefile = makefile
+ self._installs = installs
+ self._universal = universal
+
+ self._finalised = 0
+
+ # Copy the macros and convert them all to instance lists.
+ macros = configuration.build_macros()
+
+ for m in macros.keys():
+ # Allow the user to override the default.
+ try:
+ val = getattr(configuration, m)
+ except AttributeError:
+ val = macros[m]
+
+ # These require special handling as they are (potentially) a set of
+ # space separated values rather than a single value that might
+ # contain spaces.
+ if m in ("DEFINES", "CONFIG") or m[:6] in ("INCDIR", "LIBDIR"):
+ val = string.split(val)
+
+ # We also want to treat lists of libraries in the same way so that
+ # duplicates get eliminated.
+ if m[:4] == "LIBS":
+ val = string.split(val)
+
+ self.__dict__[m] = _Macro(m, val)
+
+ # This is used to alter the configuration more significantly than can
+ # be done with just configuration files.
+ self.generator = self.optional_string("MAKEFILE_GENERATOR", "UNIX")
+
+ # These are what configuration scripts normally only need to change.
+ self.extra_cflags = []
+ self.extra_cxxflags = []
+ self.extra_defines = []
+ self.extra_include_dirs = []
+ self.extra_lflags = []
+ self.extra_lib_dirs = []
+ self.extra_libs = []
+
+ # Get these once and make them available to sub-classes.
+ if sys.platform == "win32":
+ def_copy = "copy"
+ def_rm = "del"
+ def_mkdir = "mkdir"
+ def_chk_dir_exists = "if not exist"
+ else:
+ def_copy = "cp -f"
+ def_rm = "rm -f"
+ def_mkdir = "mkdir -p"
+ def_chk_dir_exists = "test -d"
+
+ self.copy = self.optional_string("COPY", def_copy)
+ self.rm = self.optional_string("DEL_FILE", def_rm)
+ self.mkdir = self.optional_string("MKDIR", def_mkdir)
+ self.chkdir = self.optional_string("CHK_DIR_EXISTS", def_chk_dir_exists)
+
+
+ def finalise(self):
+ """Finalise the macros by doing any consolidation that isn't specific
+ to a Makefile.
+ """
+ # Extract the things we might need from the Windows Qt configuration.
+ if self._qt:
+ wcfg = string.split(self.config.qt_winconfig)
+ win_shared = ("shared" in wcfg)
+ win_exceptions = ("exceptions" in wcfg)
+ win_rtti = ("rtti" in wcfg)
+ win_stl = ("stl" in wcfg)
+ else:
+ win_shared = 1
+ win_exceptions = 0
+ win_rtti = 0
+ win_stl = 0
+
+ # Get what we are going to transform.
+ cflags = _UniqueList()
+ cflags.extend(self.extra_cflags)
+ cflags.extend(self.optional_list("CFLAGS"))
+
+ cxxflags = _UniqueList()
+ cxxflags.extend(self.extra_cxxflags)
+ cxxflags.extend(self.optional_list("CXXFLAGS"))
+
+ defines = _UniqueList()
+ defines.extend(self.extra_defines)
+ defines.extend(self.optional_list("DEFINES"))
+
+ incdir = _UniqueList(["."])
+ incdir.extend(self.extra_include_dirs)
+ incdir.extend(self.optional_list("INCDIR"))
+
+ lflags = _UniqueList()
+ lflags.extend(self.extra_lflags)
+ lflags.extend(self.optional_list("LFLAGS"))
+
+ libdir = _UniqueList()
+ libdir.extend(self.extra_lib_dirs)
+ libdir.extend(self.optional_list("LIBDIR"))
+
+ # Handle MacOS/X universal binaries.
+ if self._universal:
+ unicflags = ('-arch ppc -arch i386 -isysroot %s' % self._universal).split()
+ unilflags = ('-arch ppc -arch i386 -Wl,-syslibroot,%s' % self._universal).split()
+
+ cflags.lextend(unicflags)
+ cxxflags.lextend(unicflags)
+ lflags.lextend(unilflags)
+
+ # Don't use a unique list as libraries may need to be searched more
+ # than once. Also MacOS/X uses the form "-framework lib" so we don't
+ # want to lose the multiple "-framework".
+ libs = []
+
+ for l in self.extra_libs:
+ libs.append(self.platform_lib(l))
+
+ if self._qt:
+ libs.extend(self._dependent_libs(l))
+
+ libs.extend(self.optional_list("LIBS"))
+
+ rpaths = _UniqueList()
+
+ for l in self.extra_lib_dirs:
+ # Ignore relative directories. This is really a hack to handle
+ # SIP v3 inter-module linking.
+ if os.path.dirname(l) not in ("", ".", ".."):
+ rpaths.append(l)
+
+ if self._python:
+ incdir.append(self.config.py_inc_dir)
+ incdir.append(self.config.py_conf_inc_dir)
+
+ if sys.platform == "cygwin":
+ libdir.append(self.config.py_lib_dir)
+
+ py_lib = "python%u.%u" % ((self.config.py_version >> 16), ((self.config.py_version >> 8) & 0xff))
+ libs.append(self.platform_lib(py_lib))
+ elif sys.platform == "win32":
+ libdir.append(self.config.py_lib_dir)
+
+ py_lib = "python%u%u" % ((self.config.py_version >> 16), ((self.config.py_version >> 8) & 0xff))
+
+ # For Borland use the OMF version of the Python library if it
+ # exists, otherwise assume that Python was built with Borland
+ # and use the normal library.
+ if self.generator == "BMAKE":
+ bpy_lib = py_lib + "_bcpp"
+ bpy_lib_path = os.path.join(self.config.py_lib_dir, self.platform_lib(bpy_lib))
+
+ if os.access(bpy_lib_path, os.F_OK):
+ py_lib = bpy_lib
+
+ if self._debug:
+ py_lib = py_lib + "_d"
+
+ if self.generator != "MINGW":
+ cflags.append("/D_DEBUG")
+ cxxflags.append("/D_DEBUG")
+
+ libs.append(self.platform_lib(py_lib))
+
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ if win_exceptions:
+ cflags_exceptions = "CFLAGS_EXCEPTIONS_ON"
+ cxxflags_exceptions = "CXXFLAGS_EXCEPTIONS_ON"
+ else:
+ cflags_exceptions = "CFLAGS_EXCEPTIONS_OFF"
+ cxxflags_exceptions = "CXXFLAGS_EXCEPTIONS_OFF"
+
+ cflags.extend(self.optional_list(cflags_exceptions))
+ cxxflags.extend(self.optional_list(cxxflags_exceptions))
+
+ if win_rtti:
+ cflags_rtti = "CFLAGS_RTTI_ON"
+ cxxflags_rtti = "CXXFLAGS_RTTI_ON"
+ else:
+ cflags_rtti = "CFLAGS_RTTI_OFF"
+ cxxflags_rtti = "CXXFLAGS_RTTI_OFF"
+
+ cflags.extend(self.optional_list(cflags_rtti))
+ cxxflags.extend(self.optional_list(cxxflags_rtti))
+
+ if win_stl:
+ cflags_stl = "CFLAGS_STL_ON"
+ cxxflags_stl = "CXXFLAGS_STL_ON"
+ else:
+ cflags_stl = "CFLAGS_STL_OFF"
+ cxxflags_stl = "CXXFLAGS_STL_OFF"
+
+ cflags.extend(self.optional_list(cflags_stl))
+ cxxflags.extend(self.optional_list(cxxflags_stl))
+
+ if self._debug:
+ if win_shared:
+ cflags_mt = "CFLAGS_MT_DLLDBG"
+ cxxflags_mt = "CXXFLAGS_MT_DLLDBG"
+ else:
+ cflags_mt = "CFLAGS_MT_DBG"
+ cxxflags_mt = "CXXFLAGS_MT_DBG"
+
+ cflags_debug = "CFLAGS_DEBUG"
+ cxxflags_debug = "CXXFLAGS_DEBUG"
+ lflags_debug = "LFLAGS_DEBUG"
+ else:
+ if win_shared:
+ cflags_mt = "CFLAGS_MT_DLL"
+ cxxflags_mt = "CXXFLAGS_MT_DLL"
+ else:
+ cflags_mt = "CFLAGS_MT"
+ cxxflags_mt = "CXXFLAGS_MT"
+
+ cflags_debug = "CFLAGS_RELEASE"
+ cxxflags_debug = "CXXFLAGS_RELEASE"
+ lflags_debug = "LFLAGS_RELEASE"
+
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ if self._threaded:
+ cflags.extend(self.optional_list(cflags_mt))
+ cxxflags.extend(self.optional_list(cxxflags_mt))
+
+ if self.console:
+ cflags.extend(self.optional_list("CFLAGS_CONSOLE"))
+ cxxflags.extend(self.optional_list("CXXFLAGS_CONSOLE"))
+
+ cflags.extend(self.optional_list(cflags_debug))
+ cxxflags.extend(self.optional_list(cxxflags_debug))
+ lflags.extend(self.optional_list(lflags_debug))
+
+ if self._warnings:
+ cflags_warn = "CFLAGS_WARN_ON"
+ cxxflags_warn = "CXXFLAGS_WARN_ON"
+ else:
+ cflags_warn = "CFLAGS_WARN_OFF"
+ cxxflags_warn = "CXXFLAGS_WARN_OFF"
+
+ cflags.extend(self.optional_list(cflags_warn))
+ cxxflags.extend(self.optional_list(cxxflags_warn))
+
+ if self._threaded:
+ cflags.extend(self.optional_list("CFLAGS_THREAD"))
+ cxxflags.extend(self.optional_list("CXXFLAGS_THREAD"))
+ lflags.extend(self.optional_list("LFLAGS_THREAD"))
+
+ if self._qt:
+ if self.generator != "UNIX" and win_shared:
+ defines.append("QT_DLL")
+
+ if not self._debug:
+ defines.append("QT_NO_DEBUG")
+
+ if self.config.qt_version >= 0x040000:
+ for mod in self._qt:
+ if mod == "QtCore":
+ defines.append("QT_CORE_LIB")
+ elif mod == "QtGui":
+ defines.append("QT_GUI_LIB")
+ elif mod == "QtNetwork":
+ defines.append("QT_NETWORK_LIB")
+ elif mod == "QtOpenGL":
+ defines.append("QT_OPENGL_LIB")
+ elif mod == "QtSql":
+ defines.append("QT_SQL_LIB")
+ elif mod == "QtTest":
+ defines.append("QT_TEST_LIB")
+ elif mod == "QtXml":
+ defines.append("QT_XML_LIB")
+ elif self._threaded:
+ defines.append("QT_THREAD_SUPPORT")
+
+ # Handle library directories.
+ libdir_qt = self.optional_list("LIBDIR_QT")
+ libdir.extend(libdir_qt)
+ rpaths.extend(libdir_qt)
+
+ if self.config.qt_version >= 0x040000:
+ # For Windows: the macros that define the dependencies on
+ # Windows libraries.
+ wdepmap = {
+ "QtCore": "LIBS_CORE",
+ "QtGui": "LIBS_GUI",
+ "QtNetwork": "LIBS_NETWORK",
+ "QtOpenGL": "LIBS_OPENGL"
+ }
+
+ # For Windows: the dependencies between Qt libraries.
+ qdepmap = {
+ "QtAssistant": ("QtCore", "QtGui", "QtNetwork"),
+ "QtGui": ("QtCore", ),
+ "QtNetwork": ("QtCore", ),
+ "QtOpenGL": ("QtCore", "QtGui"),
+ "QtSql": ("QtCore", ),
+ "QtSvg": ("QtCore", "QtGui", "QtXml"),
+ "QtTest": ("QtCore", "QtGui"),
+ "QtXml": ("QtCore", ),
+ "QtDesigner": ("QtCore", "QtGui"),
+ "QAxContainer": ("QtCore", "QtGui")
+ }
+
+ # The QtSql .prl file doesn't include QtGui as a dependency (at
+ # least on Linux) so we explcitly set the dependency here for
+ # everything.
+ if "QtSql" in self._qt:
+ if "QtGui" not in self._qt:
+ self._qt.append("QtGui")
+
+ # With Qt v4.2.0, the QtAssistantClient library is now a shared
+ # library on UNIX. The QtAssistantClient .prl file doesn't
+ # include QtGui and QtNetwork as a dependency any longer. This
+ # seems to be a bug in Qt v4.2.0. We explicitly set the
+ # dependencies here.
+ if self.config.qt_version >= 0x040200 and "QtAssistant" in self._qt:
+ if "QtGui" not in self._qt:
+ self._qt.append("QtGui")
+ if "QtNetwork" not in self._qt:
+ self._qt.append("QtNetwork")
+
+ for mod in self._qt:
+ lib = self._qt4_module_to_lib(mod)
+ libs.append(self.platform_lib(lib, self._is_framework(mod)))
+
+ if sys.platform == "win32":
+ # On Windows the dependent libraries seem to be in
+ # qmake.conf rather than the .prl file and the
+ # inter-dependencies between Qt libraries don't seem to
+ # be anywhere.
+ deps = _UniqueList()
+
+ if mod in wdepmap.keys():
+ deps.extend(self.optional_list(wdepmap[mod]))
+
+ if mod in qdepmap.keys():
+ for qdep in qdepmap[mod]:
+ # Ignore the dependency if it is explicitly
+ # linked.
+ if qdep not in self._qt:
+ libs.append(self.platform_lib(self._qt4_module_to_lib(qdep)))
+
+ if qdep in wdepmap.keys():
+ deps.extend(self.optional_list(wdepmap[qdep]))
+
+ libs.extend(deps.as_list())
+ else:
+ libs.extend(self._dependent_libs(lib, self._is_framework(mod)))
+ else:
+ # Windows needs the version number appended if Qt is a DLL.
+ qt_lib = self.config.qt_lib
+
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE") and win_shared:
+ qt_lib = qt_lib + string.replace(version_to_string(self.config.qt_version), ".", "")
+
+ if self.config.qt_edition == "non-commercial":
+ qt_lib = qt_lib + "nc"
+
+ libs.append(self.platform_lib(qt_lib, self.config.qt_framework))
+ libs.extend(self._dependent_libs(self.config.qt_lib))
+
+ # Handle header directories.
+ try:
+ specd_base = self.config.qt_data_dir
+ except AttributeError:
+ specd_base = self.config.qt_dir
+
+ specd = os.path.join(specd_base, "mkspecs", "default")
+
+ if not os.access(specd, os.F_OK):
+ specd = os.path.join(specd_base, "mkspecs", self.config.platform)
+
+ incdir.append(specd)
+
+ qtincdir = self.optional_list("INCDIR_QT")
+
+ if qtincdir:
+ if self.config.qt_version >= 0x040000:
+ for mod in self._qt:
+ if mod == "QAxContainer":
+ incdir.append(os.path.join(qtincdir[0], "ActiveQt"))
+ elif self._is_framework(mod):
+ if mod == "QtAssistant" and self.config.qt_version < 0x040202:
+ mod = "QtAssistantClient"
+
+ incdir.append(os.path.join(libdir_qt[0], mod + ".framework", "Headers"))
+ else:
+ incdir.append(os.path.join(qtincdir[0], mod))
+
+ # This must go after the module include directories.
+ incdir.extend(qtincdir)
+
+ if self._opengl:
+ incdir.extend(self.optional_list("INCDIR_OPENGL"))
+ lflags.extend(self.optional_list("LFLAGS_OPENGL"))
+ libdir.extend(self.optional_list("LIBDIR_OPENGL"))
+ libs.extend(self.optional_list("LIBS_OPENGL"))
+
+ if self._qt or self._opengl:
+ incdir.extend(self.optional_list("INCDIR_X11"))
+ libdir.extend(self.optional_list("LIBDIR_X11"))
+ libs.extend(self.optional_list("LIBS_X11"))
+
+ if self._threaded:
+ libs.extend(self.optional_list("LIBS_THREAD"))
+ libs.extend(self.optional_list("LIBS_RTMT"))
+ else:
+ libs.extend(self.optional_list("LIBS_RT"))
+
+ if self.console:
+ libs.extend(self.optional_list("LIBS_CONSOLE"))
+
+ libs.extend(self.optional_list("LIBS_WINDOWS"))
+
+ lflags.extend(self._platform_rpaths(rpaths.as_list()))
+
+ # Save the transformed values.
+ self.CFLAGS.set(cflags)
+ self.CXXFLAGS.set(cxxflags)
+ self.DEFINES.set(defines)
+ self.INCDIR.set(incdir)
+ self.LFLAGS.set(lflags)
+ self.LIBDIR.set(libdir)
+ self.LIBS.set(libs)
+
+ # Don't do it again because it has side effects.
+ self._finalised = 1
+
+ def _is_framework(self, mod):
+ """Return true if the given Qt module is a framework.
+ """
+ return (self.config.qt_framework and (self.config.qt_version >= 0x040200 or mod != "QtAssistant"))
+
+ def _qt4_module_to_lib(self, mname):
+ """Return the name of the Qt4 library corresponding to a module.
+
+ mname is the name of the module.
+ """
+ if mname == "QtAssistant":
+ if self.config.qt_version >= 0x040202 and sys.platform == "darwin":
+ lib = mname
+ else:
+ lib = "QtAssistantClient"
+ else:
+ lib = mname
+
+ if self._debug:
+ if sys.platform == "win32":
+ lib = lib + "d"
+ elif self.config.qt_version < 0x040200 or sys.platform == "darwin":
+ lib = lib + "_debug"
+
+ if sys.platform == "win32":
+ if (mname in ("QtCore", "QtGui", "QtNetwork", "QtOpenGL",
+ "QtSql", "QtSvg", "QtTest", "QtXml", "QtDesigner") or
+ (self.config.qt_version >= 0x040200 and mname == "QtAssistant")):
+ lib = lib + "4"
+
+ return lib
+
+ def optional_list(self, name):
+ """Return an optional Makefile macro as a list.
+
+ name is the name of the macro.
+ """
+ return self.__dict__[name].as_list()
+
+ def optional_string(self, name, default=""):
+ """Return an optional Makefile macro as a string.
+
+ name is the name of the macro.
+ default is the default value
+ """
+ s = string.join(self.optional_list(name))
+
+ if not s:
+ s = default
+
+ return s
+
+ def required_string(self, name):
+ """Return a required Makefile macro as a string.
+
+ name is the name of the macro.
+ """
+ s = self.optional_string(name)
+
+ if not s:
+ raise ValueError, "\"%s\" must have a non-empty value" % name
+
+ return s
+
+ def _platform_rpaths(self, rpaths):
+ """Return a list of platform specific rpath flags.
+
+ rpaths is the cannonical list of rpaths.
+ """
+ flags = []
+ prefix = self.optional_string("RPATH")
+
+ if prefix:
+ for r in rpaths:
+ flags.append(_quote(prefix + r))
+
+ return flags
+
+ def platform_lib(self, clib, framework=0):
+ """Return a library name in platform specific form.
+
+ clib is the library name in cannonical form.
+ framework is set of the library is implemented as a MacOS framework.
+ """
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ plib = clib + ".lib"
+ elif sys.platform == "darwin" and framework:
+ plib = "-framework " + clib
+ else:
+ plib = "-l" + clib
+
+ return plib
+
+ def _dependent_libs(self, clib, framework=0):
+ """Return a list of additional libraries (in platform specific form)
+ that must be linked with a library.
+
+ clib is the library name in cannonical form.
+ framework is set of the library is implemented as a MacOS framework.
+ """
+ prl_libs = []
+
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ prl_name = os.path.join(self.config.qt_lib_dir, clib + ".prl")
+ elif sys.platform == "darwin" and framework:
+ prl_name = os.path.join(self.config.qt_lib_dir, clib + ".framework", clib + ".prl")
+ else:
+ prl_name = os.path.join(self.config.qt_lib_dir, "lib" + clib + ".prl")
+
+ if os.access(prl_name, os.F_OK):
+ try:
+ f = open(prl_name, "r")
+ except IOError, detail:
+ error("Unable to open \"%s\": %s" % (prl_name, detail))
+
+ line = f.readline()
+ while line:
+ line = string.strip(line)
+ if line and line[0] != "#":
+ eq = string.find(line, "=")
+ if eq > 0 and string.strip(line[:eq]) == "QMAKE_PRL_LIBS":
+ prl_libs = string.split(line[eq + 1:])
+ break
+
+ line = f.readline()
+
+ f.close()
+
+ return prl_libs
+
+
+ def parse_build_file(self, filename):
+ """
+ Parse a build file and return the corresponding dictionary.
+
+ filename is the name of the build file. If it is a dictionary instead
+ then its contents are validated.
+ """
+ if type(filename) is types.DictType:
+ bfname = "dictionary"
+ dict = filename
+ else:
+ if self._dir:
+ bfname = os.path.join(self._dir, filename)
+ else:
+ bfname = filename
+
+ dict = {}
+
+ try:
+ f = open(bfname, "r")
+ except IOError, detail:
+ error("Unable to open \"%s\": %s" % (bfname, detail))
+
+ line_nr = 1
+ line = f.readline()
+
+ while line:
+ line = string.strip(line)
+
+ if line and line[0] != "#":
+ eq = string.find(line, "=")
+
+ if eq <= 0:
+ error("\"%s\" line %d: Line must be in the form 'name = value value...'." % (bfname, line_nr))
+
+ dict[string.strip(line[:eq])] = string.strip(line[eq + 1:])
+
+ line_nr = line_nr + 1
+ line = f.readline()
+
+ f.close()
+
+ # Check the compulsory values.
+ for i in ("target", "sources"):
+ try:
+ dict[i]
+ except KeyError:
+ error("\"%s\" is missing from \"%s\"." % (i, bfname))
+
+ # Get the optional values.
+ for i in ("headers", "moc_headers"):
+ try:
+ dict[i]
+ except KeyError:
+ dict[i] = ""
+
+ # Generate the list of objects.
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ ext = ".obj"
+ else:
+ ext = ".o"
+
+ olist = []
+
+ for f in string.split(dict["sources"]):
+ root, discard = os.path.splitext(f)
+ olist.append(root + ext)
+
+ for f in string.split(dict["moc_headers"]):
+ if not self._qt:
+ error("\"%s\" defines \"moc_headers\" for a non-Qt module." % bfname)
+
+ root, discard = os.path.splitext(f)
+ olist.append("moc_" + root + ext)
+
+ dict["objects"] = string.join(olist)
+
+ return dict
+
+ def clean_build_file_objects(self, mfile, build):
+ """Generate the clean target.
+
+ mfile is the file object.
+ build is the dictionary created from the build file.
+ """
+ mfile.write("\t-%s $(TARGET)\n" % self.rm)
+
+ for f in string.split(build["objects"]):
+ mfile.write("\t-%s %s\n" % (self.rm, f))
+
+ for f in string.split(build["moc_headers"]):
+ root, discard = os.path.splitext(f)
+ mfile.write("\t-%s moc_%s.cpp\n" % (self.rm, root))
+
+ def ready(self):
+ """The Makefile is now ready to be used.
+ """
+ if not self._finalised:
+ self.finalise()
+
+ def generate(self):
+ """Generate the Makefile.
+ """
+ self.ready()
+
+ if self._dir:
+ mfname = os.path.join(self._dir, self._makefile)
+ else:
+ mfname = self._makefile
+
+ try:
+ mfile = open(mfname, "w")
+ except IOError, detail:
+ error("Unable to create \"%s\": %s" % (mfname, detail))
+
+ self.generate_macros_and_rules(mfile)
+ self.generate_target_default(mfile)
+ self.generate_target_install(mfile)
+
+ if self._installs:
+ if type(self._installs) != types.ListType:
+ self._installs = [self._installs]
+
+ for src, dst in self._installs:
+ self.install_file(mfile, src, dst)
+
+ self.generate_target_clean(mfile)
+
+ mfile.close()
+
+ def generate_macros_and_rules(self, mfile):
+ """The default implementation of the macros and rules generation.
+
+ mfile is the file object.
+ """
+ mfile.write("CC = %s\n" % self.required_string("CC"))
+ mfile.write("CXX = %s\n" % self.required_string("CXX"))
+ mfile.write("LINK = %s\n" % self.required_string("LINK"))
+
+ cppflags = []
+
+ for f in self.optional_list("DEFINES"):
+ cppflags.append("-D" + f)
+
+ for f in self.optional_list("INCDIR"):
+ cppflags.append("-I" + _quote(f))
+
+ libs = []
+
+ if self.generator in ("MSVC", "MSVC.NET"):
+ libdir_prefix = "/LIBPATH:"
+ else:
+ libdir_prefix = "-L"
+
+ for ld in self.optional_list("LIBDIR"):
+ if sys.platform == "darwin" and self.config.qt_framework:
+ fflag = "-F" + _quote(ld)
+ libs.append(fflag)
+ cppflags.append(fflag)
+
+ libs.append(libdir_prefix + _quote(ld))
+
+ libs.extend(self.optional_list("LIBS"))
+
+ mfile.write("CPPFLAGS = %s\n" % string.join(cppflags))
+
+ mfile.write("CFLAGS = %s\n" % self.optional_string("CFLAGS"))
+ mfile.write("CXXFLAGS = %s\n" % self.optional_string("CXXFLAGS"))
+ mfile.write("LFLAGS = %s\n" % self.optional_string("LFLAGS"))
+
+ mfile.write("LIBS = %s\n" % string.join(libs))
+
+ if self._qt:
+ mfile.write("MOC = %s\n" % _quote(self.required_string("MOC")))
+
+ # These probably don't matter.
+ if self.generator == "MINGW":
+ mfile.write(".SUFFIXES: .cpp .cxx .cc .C .c\n\n")
+ elif self.generator == "UNIX":
+ mfile.write(".SUFFIXES: .c .o .cpp .cc .cxx .C\n\n")
+ else:
+ mfile.write(".SUFFIXES: .c .cpp .cc .cxx .C\n\n")
+
+ if self.generator in ("MSVC", "MSVC.NET"):
+ mfile.write("""
+{.}.cpp{}.obj::
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -Fo @<<
+\t$<
+<<
+
+{.}.cc{}.obj::
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -Fo @<<
+\t$<
+<<
+
+{.}.cxx{}.obj::
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -Fo @<<
+\t$<
+<<
+
+{.}.C{}.obj::
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -Fo @<<
+\t$<
+<<
+
+{.}.c{}.obj::
+\t$(CC) -c $(CFLAGS) $(CPPFLAGS) -Fo @<<
+\t$<
+<<
+""")
+ elif self.generator == "BMAKE":
+ mfile.write("""
+.cpp.obj:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o$@ $<
+
+.cc.obj:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o$@ $<
+
+.cxx.obj:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o$@ $<
+
+.C.obj:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o$@ $<
+
+.c.obj:
+\t$(CC) -c $(CFLAGS) $(CPPFLAGS) -o$@ $<
+""")
+ else:
+ mfile.write("""
+.cpp.o:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
+
+.cc.o:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
+
+.cxx.o:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
+
+.C.o:
+\t$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
+
+.c.o:
+\t$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
+""")
+
+ def generate_target_default(self, mfile):
+ """The default implementation of the default target.
+
+ mfile is the file object.
+ """
+ mfile.write("\nall:\n")
+
+ def generate_target_install(self, mfile):
+ """The default implementation of the install target.
+
+ mfile is the file object.
+ """
+ mfile.write("\ninstall:\n")
+
+ def generate_target_clean(self, mfile):
+ """The default implementation of the clean target.
+
+ mfile is the file object.
+ """
+ mfile.write("\nclean:\n")
+
+ def install_file(self, mfile, src, dst, strip=0):
+ """Install one or more files in a directory.
+
+ mfile is the file object.
+ src is the name of a single file to install, or the list of a number of
+ files to install.
+ dst is the name of the destination directory.
+ strip is set if the files should be stripped after been installed.
+ """
+ # Help package builders.
+ if self.generator == "UNIX":
+ dst = "$(DESTDIR)" + dst
+
+ mfile.write("\t@%s %s " % (self.chkdir, _quote(dst)))
+
+ if self.generator == "UNIX":
+ mfile.write("|| ")
+
+ mfile.write("%s %s\n" % (self.mkdir, _quote(dst)))
+
+ if type(src) != types.ListType:
+ src = [src]
+
+ # Get the strip command if needed.
+ if strip:
+ strip_cmd = self.optional_string("STRIP")
+
+ if not strip_cmd:
+ strip = 0
+
+ for sf in src:
+ target = _quote(os.path.join(dst, os.path.basename(sf)))
+
+ mfile.write("\t%s %s %s\n" % (self.copy, _quote(sf), target))
+
+ if strip:
+ mfile.write("\t%s %s\n" % (strip_cmd, target))
+
+
+class ParentMakefile(Makefile):
+ """The class that represents a parent Makefile.
+ """
+ def __init__(self, configuration, subdirs, dir=None, makefile="Makefile",
+ installs=None):
+ """Initialise an instance of a parent Makefile.
+
+ subdirs is the sequence of subdirectories.
+ """
+ Makefile.__init__(self, configuration, dir=dir, makefile=makefile, installs=installs)
+
+ self._subdirs = subdirs
+
+ def generate_macros_and_rules(self, mfile):
+ """Generate the macros and rules.
+
+ mfile is the file object.
+ """
+ # We don't want them.
+ pass
+
+ def generate_target_default(self, mfile):
+ """Generate the default target.
+
+ mfile is the file object.
+ """
+ self._subdir_target(mfile)
+
+ def generate_target_install(self, mfile):
+ """Generate the install target.
+
+ mfile is the file object.
+ """
+ self._subdir_target(mfile, "install")
+
+ def generate_target_clean(self, mfile):
+ """Generate the clean target.
+
+ mfile is the file object.
+ """
+ self._subdir_target(mfile, "clean")
+
+ def _subdir_target(self, mfile, target="all"):
+ """Create a target for a list of sub-directories.
+
+ mfile is the file object.
+ target is the name of the target.
+ """
+ if target == "all":
+ tname = ""
+ else:
+ tname = " " + target
+
+ mfile.write("\n" + target + ":\n")
+
+ for d in self._subdirs:
+ if self.generator == "MINGW":
+ mfile.write("\t@$(MAKE) -C %s%s\n" % (d, tname))
+ elif self.generator == "UNIX":
+ mfile.write("\t@(cd %s; $(MAKE)%s)\n" % (d, tname))
+ else:
+ mfile.write("\tcd %s\n" % d)
+ mfile.write("\t$(MAKE)%s\n" % tname)
+ mfile.write("\t@cd ..\n")
+
+
+class PythonModuleMakefile(Makefile):
+ """The class that represents a Python module Makefile.
+ """
+ def __init__(self, configuration, dstdir, srcdir=None, dir=None,
+ makefile="Makefile", installs=None):
+ """Initialise an instance of a parent Makefile.
+
+ dstdir is the name of the directory where the module's Python code will
+ be installed.
+ srcdir is the name of the directory (relative to the directory in which
+ the Makefile will be created) containing the module's Python code. It
+ defaults to the same directory.
+ """
+ Makefile.__init__(self, configuration, dir=dir, makefile=makefile, installs=installs)
+
+ if not srcdir:
+ srcdir = "."
+
+ if dir:
+ self._moddir = os.path.join(dir, srcdir)
+ else:
+ self._moddir = srcdir
+
+ self._srcdir = srcdir
+ self._dstdir = dstdir
+
+ def generate_macros_and_rules(self, mfile):
+ """Generate the macros and rules.
+
+ mfile is the file object.
+ """
+ # We don't want them.
+ pass
+
+ def generate_target_install(self, mfile):
+ """Generate the install target.
+
+ mfile is the file object.
+ """
+ Makefile.generate_target_install(self, mfile)
+
+ os.path.walk(self._moddir, self._visit, mfile)
+
+ def _visit(self, mfile, dirname, names):
+ """Install the files from a particular directory.
+
+ mfile is the file object.
+ dirname is the sub-directory.
+ names is the list of files to install from the sub-directory.
+ """
+ tail = dirname[len(self._moddir):]
+
+ flist = []
+ for f in names:
+ # Ignore certain files.
+ if f in ("Makefile", ):
+ continue
+
+ if os.path.isfile(os.path.join(dirname, f)):
+ flist.append(os.path.join(self._srcdir + tail, f))
+
+ self.install_file(mfile, flist, self._dstdir + tail)
+
+
+class ModuleMakefile(Makefile):
+ """The class that represents a Python extension module Makefile
+ """
+ def __init__(self, configuration, build_file, install_dir=None, static=0,
+ console=0, qt=0, opengl=0, threaded=0, warnings=1, debug=0,
+ dir=None, makefile="Makefile", installs=None, strip=1,
+ export_all=0, universal=''):
+ """Initialise an instance of a module Makefile.
+
+ build_file is the file containing the target specific information. If
+ it is a dictionary instead then its contents are validated.
+ install_dir is the directory the target will be installed in.
+ static is set if the module should be built as a static library.
+ strip is set if the module should be stripped of unneeded symbols when
+ installed. The default is 1.
+ export_all is set if all the module's symbols should be exported rather
+ than just the module's initialisation function. Exporting all symbols
+ increases the size of the module and slows down module load times but
+ may avoid problems with modules that use exceptions. The default is 0.
+ """
+ Makefile.__init__(self, configuration, console, qt, opengl, 1, threaded, warnings, debug, dir, makefile, installs, universal)
+
+ self._build = self.parse_build_file(build_file)
+ self._install_dir = install_dir
+ self._dir = dir
+ self.static = static
+
+ # Don't strip or restrict the exports if this is a debug or static
+ # build.
+ if debug or static:
+ self._strip = 0
+ self._limit_exports = 0
+ else:
+ self._strip = strip
+
+ # The deprecated configuration flag has precedence.
+ if self.config.export_all:
+ self._limit_exports = 0
+ else:
+ self._limit_exports = not export_all
+
+ # Save the target name for later.
+ self._target = self._build["target"]
+
+ if sys.platform != "win32" and static:
+ self._target = "lib" + self._target
+
+ if sys.platform == "win32" and debug:
+ self._target = self._target + "_d"
+
+ def finalise(self):
+ """Finalise the macros common to all module Makefiles.
+ """
+ if self.console:
+ lflags_console = "LFLAGS_CONSOLE"
+ else:
+ lflags_console = "LFLAGS_WINDOWS"
+
+ if self.static:
+ self.DEFINES.append("SIP_STATIC_MODULE")
+ else:
+ self.CFLAGS.extend(self.optional_list("CFLAGS_SHLIB"))
+ self.CXXFLAGS.extend(self.optional_list("CXXFLAGS_SHLIB"))
+
+ lflags_dll = self.optional_list("LFLAGS_DLL")
+
+ if lflags_dll:
+ self.LFLAGS.extend(lflags_dll)
+ elif self.console:
+ lflags_console = "LFLAGS_CONSOLE_DLL"
+ else:
+ lflags_console = "LFLAGS_WINDOWS_DLL"
+
+ # We use this to explictly create bundles on MacOS. Apple's Python
+ # can handle extension modules that are bundles or dynamic
+ # libraries, but python.org versions need bundles (unless built
+ # with DYNLOADFILE=dynload_shlib.o).
+ if sys.platform == "darwin":
+ lflags_plugin = ["-bundle"]
+ else:
+ lflags_plugin = self.optional_list("LFLAGS_PLUGIN")
+
+ if not lflags_plugin:
+ lflags_plugin = self.optional_list("LFLAGS_SHLIB")
+
+ self.LFLAGS.extend(lflags_plugin)
+
+ self.LFLAGS.extend(self.optional_list(lflags_console))
+
+ if sys.platform == "darwin":
+ # We use the -F flag to explictly specify the directory containing
+ # the Python framework rather than rely on the default search path.
+ # This allows Apple's Python to be used even if a later python.org
+ # version is also installed.
+ dl = string.split(sys.exec_prefix, os.sep)
+ try:
+ dl = dl[:dl.index("Python.framework")]
+ except ValueError:
+ error("SIP requires Python to be built as a framework")
+ self.LFLAGS.append("-F%s" % string.join(dl, os.sep))
+ self.LFLAGS.append("-framework Python")
+
+ Makefile.finalise(self)
+
+ if not self.static:
+ if self.optional_string("AIX_SHLIB"):
+ # AIX needs a lot of special handling.
+ if self.required_string('LINK') == 'g++':
+ # g++ is used for linking.
+ # For SIP v4 and g++:
+ # 1.) Import the python symbols
+ aix_lflags = ['-Wl,-bI:%s/python.exp' % self.config.py_lib_dir]
+
+ if self._limit_exports:
+ aix_lflags.append('-Wl,-bnoexpall')
+ aix_lflags.append('-Wl,-bnoentry')
+ aix_lflags.append('-Wl,-bE:%s.exp' % self._target)
+ else:
+ # IBM VisualAge C++ is used for linking.
+ # For SIP v4 and xlC:
+ # 1.) Create a shared object
+ # 2.) Import the python symbols
+ aix_lflags = ['-qmkshrobj',
+ '-bI:%s/python.exp' % self.config.py_lib_dir]
+
+ if self._limit_exports:
+ aix_lflags.append('-bnoexpall')
+ aix_lflags.append('-bnoentry')
+ aix_lflags.append('-bE:%s.exp' % self._target)
+
+ self.LFLAGS.extend(aix_lflags)
+ else:
+ if self._limit_exports:
+ if sys.platform[:5] == 'linux':
+ self.LFLAGS.extend(['-Wl,--version-script=%s.exp' % self._target])
+ elif sys.platform[:5] == 'sunos':
+ if self.required_string('LINK') == 'g++':
+ self.LFLAGS.extend(['-Wl,-z,noversion', '-Wl,-M,%s.exp' % self._target])
+ else:
+ self.LFLAGS.extend(['-z' 'noversion', '-M', '%s.exp' % self._target])
+ elif sys.platform[:5] == 'hp-ux':
+ self.LFLAGS.extend(['-Wl,+e,init%s' % self._target])
+ elif sys.platform[:5] == 'irix' and self.required_string('LINK') != 'g++':
+ # Doesn't work when g++ is used for linking on IRIX.
+ self.LFLAGS.extend(['-Wl,-exported_symbol,init%s' % self._target])
+
+ # Force the shared linker if there is one.
+ link_shlib = self.optional_list("LINK_SHLIB")
+
+ if link_shlib:
+ self.LINK.set(link_shlib)
+
+ def module_as_lib(self, mname):
+ """Return the name of a SIP v3.x module when it is used as a library.
+ This will raise an exception when used with SIP v4.x modules.
+
+ mname is the name of the module.
+ """
+ raise ValueError, "module_as_lib() can only be used with SIP v3.x"
+
+ def generate_macros_and_rules(self, mfile):
+ """Generate the macros and rules generation.
+
+ mfile is the file object.
+ """
+ if self.static:
+ if sys.platform == "win32":
+ ext = "lib"
+ else:
+ ext = "a"
+ else:
+ if sys.platform == "win32":
+ ext = "pyd"
+ elif sys.platform == "darwin":
+ ext = "so"
+ elif sys.platform == "cygwin":
+ ext = "dll"
+ else:
+ ext = self.optional_string("EXTENSION_PLUGIN")
+ if not ext:
+ ext = self.optional_string("EXTENSION_SHLIB", "so")
+
+ mfile.write("TARGET = %s\n" % (self._target + "." + ext))
+ mfile.write("OFILES = %s\n" % self._build["objects"])
+ mfile.write("HFILES = %s %s\n" % (self._build["headers"], self._build["moc_headers"]))
+ mfile.write("\n")
+
+ if self.static:
+ if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
+ mfile.write("LIB = %s\n" % self.required_string("LIB"))
+ elif self.generator == "MINGW":
+ mfile.write("AR = %s\n" % self.required_string("LIB"))
+ self._ranlib = None
+ else:
+ mfile.write("AR = %s\n" % self.required_string("AR"))
+
+ self._ranlib = self.optional_string("RANLIB")
+
+ if self._ranlib:
+ mfile.write("RANLIB = %s\n" % self._ranlib)
+
+ Makefile.generate_macros_and_rules(self, mfile)
+
+ def generate_target_default(self, mfile):
+ """Generate the default target.
+
+ mfile is the file object.
+ """
+ mfile.write("\n$(TARGET): $(OFILES)\n")
+
+ if self.generator in ("MSVC", "MSVC.NET"):
+ if self.static:
+ mfile.write("\t$(LIB) /OUT:$(TARGET) @<<\n")
+ mfile.write("\t $(OFILES)\n")
+ mfile.write("<<\n")
+ else:
+ mfile.write("\t$(LINK) $(LFLAGS) /OUT:$(TARGET) @<<\n")
+ mfile.write("\t $(OFILES) $(LIBS)\n")
+ mfile.write("<<\n")
+
+ if "embed_manifest_dll" in self.optional_list("CONFIG"):
+ mfile.write("\tmt -nologo -manifest $(TARGET).manifest -outputresource:$(TARGET);2\n")
+ elif self.generator == "BMAKE":
+ if self.static:
+ mfile.write("\t-%s $(TARGET)\n" % (self.rm))
+ mfile.write("\t$(LIB) $(TARGET) @&&|\n")
+
+ for of in string.split(self._build["objects"]):
+ mfile.write("+%s \\\n" % (of))
+
+ mfile.write("|\n")
+ else:
+ mfile.write("\t$(LINK) @&&|\n")
+ mfile.write("\t$(LFLAGS) $(OFILES) ,$(TARGET),,$(LIBS),%s\n" % (self._target))
+ mfile.write("|\n")
+
+ # Create the .def file that renames the entry point.
+ defname = self._target + ".def"
+
+ if self._dir:
+ defname = os.path.join(self._dir, defname)
+
+ try:
+ dfile = open(defname, "w")
+ except IOError, detail:
+ error("Unable to create \"%s\": %s" % (defname, detail))
+
+ dfile.write("EXPORTS\n")
+ dfile.write("init%s=_init%s\n" % (self._target, self._target))
+
+ dfile.close()
+
+ else:
+ if self.static:
+ mfile.write("\t-%s $(TARGET)\n" % self.rm)
+ mfile.write("\t$(AR) $(TARGET) $(OFILES)\n")
+
+ if self._ranlib:
+ mfile.write("\t$(RANLIB) $(TARGET)\n")
+ else:
+ if self._limit_exports:
+ # Create an export file for AIX, Linux and Solaris.
+ if sys.platform[:5] == 'linux':
+ mfile.write("\t@echo '{ global: init%s; local: *; };' > %s.exp\n" % (self._target, self._target))
+ elif sys.platform[:5] == 'sunos':
+ mfile.write("\t@echo '{ global: init%s; local: *; };' > %s.exp\n" % (self._target, self._target))
+ elif sys.platform[:3] == 'aix':
+ mfile.write("\t@echo '#!' >%s.exp" % self._target)
+ mfile.write("; \\\n\t echo 'init%s' >>%s.exp\n" % (self._target, self._target))
+
+ mfile.write("\t$(LINK) $(LFLAGS) -o $(TARGET) $(OFILES) $(LIBS)\n")
+
+ mfile.write("\n$(OFILES): $(HFILES)\n")
+
+ for mf in string.split(self._build["moc_headers"]):
+ root, discard = os.path.splitext(mf)
+ cpp = "moc_" + root + ".cpp"
+
+ mfile.write("\n%s: %s\n" % (cpp, mf))
+ mfile.write("\t$(MOC) -o %s %s\n" % (cpp, mf))
+
+ def generate_target_install(self, mfile):
+ """Generate the install target.
+
+ mfile is the file object.
+ """
+ if self._install_dir is None:
+ self._install_dir = self.config.default_mod_dir
+
+ mfile.write("\ninstall: $(TARGET)\n")
+ self.install_file(mfile, "$(TARGET)", self._install_dir, self._strip)
+
+ def generate_target_clean(self, mfile):
+ """Generate the clean target.
+
+ mfile is the file object.
+ """
+ mfile.write("\nclean:\n")
+ self.clean_build_file_objects(mfile, self._build)
+
+ # Remove any export file on AIX, Linux and Solaris.
+ if self._limit_exports and (sys.platform[:5] == 'linux' or
+ sys.platform[:5] == 'sunos' or
+ sys.platform[:3] == 'aix'):
+ mfile.write("\t-%s %s.exp\n" % (self.rm, self._target))
+
+
+class SIPModuleMakefile(ModuleMakefile):
+ """The class that represents a SIP generated module Makefile.
+ """
+ def finalise(self):
+ """Finalise the macros for a SIP generated module Makefile.
+ """
+ self.INCDIR.append(self.config.sip_inc_dir)
+
+ ModuleMakefile.finalise(self)
+
+
+class ProgramMakefile(Makefile):
+ """The class that represents a program Makefile.
+ """
+ def __init__(self, configuration, build_file=None, install_dir=None,
+ console=0, qt=0, opengl=0, python=0, threaded=0, warnings=1,
+ debug=0, dir=None, makefile="Makefile", installs=None,
+ universal=''):
+ """Initialise an instance of a program Makefile.
+
+ build_file is the file containing the target specific information. If
+ it is a dictionary instead then its contents are validated.
+ install_dir is the directory the target will be installed in.
+ """
+ Makefile.__init__(self, configuration, console, qt, opengl, python, threaded, warnings, debug, dir, makefile, installs, universal)
+
+ self._install_dir = install_dir
+
+ if build_file:
+ self._build = self.parse_build_file(build_file)
+ else:
+ self._build = None
+
+ def build_command(self, source):
+ """Create a command line that will build an executable. Returns a
+ tuple of the name of the executable and the command line.
+
+ source is the name of the source file.
+ """
+ self.ready()
+
+ # The name of the executable.
+ exe, ignore = os.path.splitext(source)
+
+ if sys.platform in ("win32", "cygwin"):
+ exe = exe + ".exe"
+
+ # The command line.
+ build = []
+
+ build.append(self.required_string("CXX"))
+
+ for f in self.optional_list("DEFINES"):
+ build.append("-D" + f)
+
+ for f in self.optional_list("INCDIR"):
+ build.append("-I" + _quote(f))
+
+ build.extend(self.optional_list("CXXFLAGS"))
+
+ # Borland requires all flags to precede all file names.
+ if self.generator != "BMAKE":
+ build.append(source)
+
+ if self.generator in ("MSVC", "MSVC.NET"):
+ build.append("-Fe")
+ build.append("/link")
+ libdir_prefix = "/LIBPATH:"
+ elif self.generator == "BMAKE":
+ build.append("-e" + exe)
+ libdir_prefix = "-L"
+ else:
+ build.append("-o")
+ build.append(exe)
+ libdir_prefix = "-L"
+
+ for ld in self.optional_list("LIBDIR"):
+ if sys.platform == "darwin" and self.config.qt_framework:
+ build.append("-F" + _quote(ld))
+
+ build.append(libdir_prefix + _quote(ld))
+
+ lflags = self.optional_list("LFLAGS")
+
+ # This is a huge hack demonstrating my lack of understanding of how the
+ # Borland compiler works.
+ if self.generator == "BMAKE":
+ blflags = []
+
+ for lf in lflags:
+ for f in string.split(lf):
+ # Tell the compiler to pass the flags to the linker.
+ if f[-1] == "-":
+ f = "-l-" + f[1:-1]
+ elif f[0] == "-":
+ f = "-l" + f[1:]
+
+ # Remove any explicit object files otherwise the compiler
+ # will complain that they can't be found, but they don't
+ # seem to be needed.
+ if string.lower(f[-4:]) != ".obj":
+ blflags.append(f)
+
+ lflags = blflags
+
+ build.extend(lflags)
+
+ build.extend(self.optional_list("LIBS"))
+
+ if self.generator == "BMAKE":
+ build.append(source)
+
+ return (exe, string.join(build))
+
+ def finalise(self):
+ """Finalise the macros for a program Makefile.
+ """
+ if self.generator in ("MSVC", "MSVC.NET"):
+ self.LFLAGS.append("/INCREMENTAL:NO")
+
+ if self.console:
+ lflags_console = "LFLAGS_CONSOLE"
+ else:
+ lflags_console = "LFLAGS_WINDOWS"
+
+ self.LFLAGS.extend(self.optional_list(lflags_console))
+
+ Makefile.finalise(self)
+
+ def generate_macros_and_rules(self, mfile):
+ """Generate the macros and rules generation.
+
+ mfile is the file object.
+ """
+ if not self._build:
+ raise ValueError, "pass a filename as build_file when generating a Makefile"
+
+ target = self._build["target"]
+
+ if sys.platform in ("win32", "cygwin"):
+ target = target + ".exe"
+
+ mfile.write("TARGET = %s\n" % target)
+ mfile.write("OFILES = %s\n" % self._build["objects"])
+ mfile.write("HFILES = %s\n" % self._build["headers"])
+ mfile.write("\n")
+
+ Makefile.generate_macros_and_rules(self, mfile)
+
+ def generate_target_default(self, mfile):
+ """Generate the default target.
+
+ mfile is the file object.
+ """
+ mfile.write("\n$(TARGET): $(OFILES)\n")
+
+ if self.generator in ("MSVC", "MSVC.NET"):
+ mfile.write("\t$(LINK) $(LFLAGS) /OUT:$(TARGET) @<<\n")
+ mfile.write("\t $(OFILES) $(LIBS)\n")
+ mfile.write("<<\n")
+
+ if "embed_manifest_dll" in self.optional_list("CONFIG"):
+ mfile.write("\tmt -nologo -manifest $(TARGET).manifest -outputresource:$(TARGET);1\n")
+ elif self.generator == "BMAKE":
+ mfile.write("\t$(LINK) @&&|\n")
+ mfile.write("\t$(LFLAGS) $(OFILES) ,$(TARGET),,$(LIBS),,\n")
+ mfile.write("|\n")
+ else:
+ mfile.write("\t$(LINK) $(LFLAGS) -o $(TARGET) $(OFILES) $(LIBS)\n")
+
+ mfile.write("\n$(OFILES): $(HFILES)\n")
+
+ for mf in string.split(self._build["moc_headers"]):
+ root, discard = os.path.splitext(mf)
+ cpp = "moc_" + root + ".cpp"
+
+ mfile.write("\n%s: %s\n" % (cpp, mf))
+ mfile.write("\t$(MOC) -o %s %s\n" % (cpp, mf))
+
+ def generate_target_install(self, mfile):
+ """Generate the install target.
+
+ mfile is the file object.
+ """
+ if self._install_dir is None:
+ self._install_dir = self.config.default_bin_dir
+
+ mfile.write("\ninstall: $(TARGET)\n")
+ self.install_file(mfile, "$(TARGET)", self._install_dir)
+
+ def generate_target_clean(self, mfile):
+ """Generate the clean target.
+
+ mfile is the file object.
+ """
+ mfile.write("\nclean:\n")
+ self.clean_build_file_objects(mfile, self._build)
+
+
+def _quote(s):
+ """Return a string surrounded by double quotes it if contains a space.
+
+ s is the string.
+ """
+ if string.find(s, " ") >= 0:
+ s = '"' + s + '"'
+
+ return s
+
+
+def version_to_string(v):
+ """Convert a 3 part version number encoded as a hexadecimal value to a
+ string.
+ """
+ return "%u.%u.%u" % (((v >> 16) & 0xff), ((v >> 8) & 0xff), (v & 0xff))
+
+
+def read_version(filename, description, numdefine=None, strdefine=None):
+ """Read the version information for a package from a file. The information
+ is specified as #defines of a numeric (hexadecimal or decimal) value and/or
+ a string value.
+
+ filename is the name of the file.
+ description is the descriptive name of the package.
+ numdefine is the name of the #define of the numeric version. It is ignored
+ if it is None.
+ strdefine is the name of the #define of the string version. It is ignored
+ if it is None.
+
+ Returns a tuple of the version as a number and as a string.
+ """
+ need_num = numdefine is not None
+ need_str = strdefine is not None
+
+ vers = None
+ versstr = None
+
+ f = open(filename)
+ l = f.readline()
+
+ while l and (need_num or need_str):
+ wl = string.split(l)
+ if len(wl) >= 3 and wl[0] == "#define":
+ if need_num and wl[1] == numdefine:
+ v = wl[2]
+
+ if v[0:2] == "0x":
+ vers = string.atoi(v,16)
+ else:
+ dec = int(v)
+ maj = dec / 100
+ min = (dec % 100) / 10
+ bug = (dec % 10)
+ vers = (maj << 16) + (min << 8) + bug
+
+ need_num = 0
+
+ if need_str and wl[1] == strdefine:
+ # Take account of embedded spaces.
+ versstr = string.join(wl[2:])[1:-1]
+ need_str = 0
+
+ l = f.readline()
+
+ f.close()
+
+ if need_num or need_str:
+ error("The %s version number could not be determined by parsing %s." % (description, filename))
+
+ return (vers, versstr)
+
+
+def create_content(dict, macros=None):
+ """Convert a dictionary to a string (typically to use as the content to a
+ call to create_config_module()). Dictionary values that are strings are
+ quoted. Dictionary values that are lists are converted to quoted strings.
+
+ dict is the dictionary.
+ macros is the optional dictionary of platform specific build macros.
+ """
+ content = "_pkg_config = {\n"
+
+ keys = dict.keys()
+ keys.sort()
+
+ # Format it nicely.
+ width = 0
+
+ for k in keys:
+ klen = len(k)
+
+ if width < klen:
+ width = klen
+
+ for k in keys:
+ val = dict[k]
+ vtype = type(val)
+
+ if val is None:
+ val = "None"
+ elif vtype == types.ListType:
+ val = "'" + string.join(val) + "'"
+ elif vtype == types.StringType:
+ val = "'" + val + "'"
+ elif vtype == types.IntType:
+ if string.find(k, "version") >= 0:
+ # Assume it's a hexadecimal version number. It doesn't matter
+ # if it isn't, we are just trying to make it look pretty.
+ val = "0x%06x" % val
+ else:
+ val = str(val)
+ else:
+ val = "'" + str(val) + "'"
+
+ content = content + " '" + k + "':" + (" " * (width - len(k) + 2)) + string.replace(val, "\\", "\\\\")
+
+ if k != keys[-1]:
+ content = content + ","
+
+ content = content + "\n"
+
+ content = content + "}\n\n"
+
+ # Format the optional macros.
+ content = content + "_default_macros = "
+
+ if macros:
+ content = content + "{\n"
+
+ names = macros.keys()
+ names.sort()
+
+ width = 0
+ for c in names:
+ clen = len(c)
+ if width < clen:
+ width = clen
+
+ for c in names:
+ if c == names[-1]:
+ sep = ""
+ else:
+ sep = ","
+
+ k = "'" + c + "':"
+ content = content + " %-*s '%s'%s\n" % (1 + width + 2, k, string.replace(macros[c], "\\", "\\\\"), sep)
+
+ content = content + "}\n"
+ else:
+ content = content + "None\n"
+
+ return content
+
+
+def create_config_module(module, template, content, macros=None):
+ """Create a configuration module by replacing "@" followed by
+ "SIP_CONFIGURATION" followed by "@" in a template file with a content
+ string.
+
+ module is the name of the module file.
+ template is the name of the template file.
+ content is the content string. If it is a dictionary it is first converted
+ to a string using create_content().
+ macros is an optional dictionary of platform specific build macros. It is
+ only used if create_content() is called to convert the content to a string.
+ """
+ if type(content) == types.DictType:
+ content = create_content(content, macros)
+
+ # Allow this file to used as a template.
+ key = "@" + "SIP_CONFIGURATION" + "@"
+
+ df = open(module, "w")
+ sf = open(template, "r")
+
+ line = sf.readline()
+ while line:
+ if string.find(line, key) >= 0:
+ line = content
+
+ df.write(line)
+
+ line = sf.readline()
+
+
+def version_to_sip_tag(version, tags, description):
+ """Convert a version number to a SIP tag.
+
+ version is the version number. If it is negative then the latest version
+ is assumed. (This is typically useful if a snapshot is indicated by a
+ negative version number.)
+ tags is the dictionary of tags keyed by version number. The tag used is
+ the one with the smallest key (ie. earliest version) that is greater than
+ the given version number.
+ description is the descriptive name of the package used for error messages.
+
+ Returns the corresponding tag.
+ """
+ vl = tags.keys()
+ vl.sort()
+
+ # For a snapshot use the latest tag.
+ if version < 0:
+ tag = tags[vl[-1]]
+ else:
+ for v in vl:
+ if version < v:
+ tag = tags[v]
+ break
+ else:
+ error("Unsupported %s version: 0x%06x." % (description, version))
+
+ return tag
+
+
+def error(msg):
+ """Display an error message and terminate.
+
+ msg is the text of the error message.
+ """
+ sys.stderr.write(format("Error: " + msg) + "\n")
+ sys.exit(1)
+
+
+def inform(msg):
+ """Display an information message.
+
+ msg is the text of the error message.
+ """
+ sys.stdout.write(format(msg) + "\n")
+
+
+def format(msg, leftmargin=0, rightmargin=78):
+ """Format a message by inserting line breaks at appropriate places.
+
+ msg is the text of the message.
+ leftmargin is the position of the left margin.
+ rightmargin is the position of the right margin.
+
+ Return the formatted message.
+ """
+ curs = leftmargin
+ fmsg = " " * leftmargin
+
+ for w in string.split(msg):
+ l = len(w)
+ if curs != leftmargin and curs + l > rightmargin:
+ fmsg = fmsg + "\n" + (" " * leftmargin)
+ curs = leftmargin
+
+ if curs > leftmargin:
+ fmsg = fmsg + " "
+ curs = curs + 1
+
+ fmsg = fmsg + w
+ curs = curs + l
+
+ return fmsg
+
+
+def parse_build_macros(filename, names, overrides=None, properties=None):
+ """Parse a qmake compatible file of build system macros and convert it to a
+ dictionary. A macro is a name/value pair. The dictionary is returned or
+ None if any of the overrides was invalid.
+
+ filename is the name of the file to parse.
+ names is a list of the macro names to extract from the file.
+ overrides is an optional list of macro names and values that modify those
+ found in the file. They are of the form "name=value" (in which case the
+ value replaces the value found in the file) or "name+=value" (in which case
+ the value is appended to the value found in the file).
+ properties is an optional dictionary of property name and values that are
+ used to resolve any expressions of the form "$[name]" in the file.
+ """
+ # Validate and convert the overrides to a dictionary.
+ orides = {}
+
+ if overrides is not None:
+ for oride in overrides:
+ prefix = ""
+ name_end = string.find(oride, "+=")
+
+ if name_end >= 0:
+ prefix = "+"
+ val_start = name_end + 2
+ else:
+ name_end = string.find(oride, "=")
+
+ if name_end >= 0:
+ val_start = name_end + 1
+ else:
+ return None
+
+ name = oride[:name_end]
+
+ if name not in names:
+ return None
+
+ orides[name] = prefix + oride[val_start:]
+
+ # This class defines a file like object that handles the nested include()
+ # directives in qmake files.
+ class qmake_build_file_reader:
+ def __init__(self, filename):
+ self.filename = filename
+ self.currentfile = None
+ self.filestack = []
+ self.pathstack = []
+ self.cond_fname = None
+ self._openfile(filename)
+
+ def _openfile(self, filename):
+ try:
+ f = open(filename, 'r')
+ except IOError, detail:
+ # If this file is conditional then don't raise an error.
+ if self.cond_fname == filename:
+ return
+
+ error("Unable to open %s: %s" % (filename, detail))
+
+ if self.currentfile:
+ self.filestack.append(self.currentfile)
+ self.pathstack.append(self.path)
+
+ self.currentfile = f
+ self.path = os.path.dirname(filename)
+
+ def readline(self):
+ line = self.currentfile.readline()
+ sline = line.strip()
+
+ if self.cond_fname and sline == '}':
+ # The current condition is closed.
+ self.cond_fname = None
+ line = self.currentfile.readline()
+ elif sline.startswith('exists(') and sline.endswith('{'):
+ # A new condition is opened so extract the filename.
+ self.cond_fname = self._normalise(sline[:-1].strip()[7:-1].strip())
+ line = self.currentfile.readline()
+ elif sline.startswith('include('):
+ nextfile = self._normalise(sline[8:-1].strip())
+ self._openfile(nextfile)
+ return self.readline()
+
+ if not line and self.filestack:
+ self.currentfile = self.filestack.pop()
+ self.path = self.pathstack.pop()
+ return self.readline()
+
+ return line
+
+ # Normalise a filename by expanding any environment variables and
+ # making sure it is absolute.
+ def _normalise(self, fname):
+ if "$(" in fname:
+ fname = os.path.normpath(self._expandvars(fname))
+
+ if not os.path.isabs(fname):
+ fname = os.path.join(self.path, fname)
+
+ return fname
+
+ # Expand the environment variables in a filename.
+ def _expandvars(self, fname):
+ i = 0
+ while True:
+ m = re.search(r'\$\((\w+)\)', fname[i:])
+ if not m:
+ break
+
+ i, j = m.span(0)
+ name = m.group(1)
+ if name in os.environ:
+ tail = fname[j:]
+ fname = fname[:i] + os.environ[name]
+ i = len(fname)
+ fname += tail
+ else:
+ i = j
+
+ return fname
+
+ f = qmake_build_file_reader(filename)
+
+ # Get everything into a dictionary.
+ raw = {
+ "DIR_SEPARATOR": os.sep,
+ "LITERAL_WHITESPACE": " ",
+ "LITERAL_DOLLAR": "$",
+ "LITERAL_HASH": "#"
+ }
+
+ line = f.readline()
+ while line:
+ # Handle line continuations.
+ while len(line) > 1 and line[-2] == "\\":
+ line = line[:-2]
+
+ next = f.readline()
+
+ if next:
+ line = line + next
+ else:
+ break
+
+ line = string.strip(line)
+
+ # Ignore comments.
+ if line and line[0] != "#":
+ assstart = string.find(line, "+")
+ if assstart > 0 and line[assstart + 1] == '=':
+ assend = assstart + 1
+ else:
+ assstart = string.find(line, "=")
+ assend = assstart
+
+ if assstart > 0:
+ lhs = string.strip(line[:assstart])
+ rhs = string.strip(line[assend + 1:])
+
+ raw[lhs] = rhs
+
+ line = f.readline()
+
+ # Go through the raw dictionary extracting the macros we need and
+ # resolving any macro expansions. First of all, make sure every macro has
+ # a value.
+ refined = {}
+
+ for m in names:
+ refined[m] = ""
+
+ macro_prefix = "QMAKE_"
+
+ for lhs in raw.keys():
+ # Strip any prefix.
+ if string.find(lhs, macro_prefix) == 0:
+ reflhs = lhs[len(macro_prefix):]
+ else:
+ reflhs = lhs
+
+ # See if we are interested in this one.
+ if reflhs not in names:
+ continue
+
+ rhs = raw[lhs]
+
+ # Resolve any references.
+ estart = string.find(rhs, "$$(")
+ mstart = string.find(rhs, "$$")
+
+ while mstart >= 0 and mstart != estart:
+ rstart = mstart + 2
+ if rstart < len(rhs) and rhs[rstart] == "{":
+ rstart = rstart + 1
+ term = "}"
+ elif rstart < len(rhs) and rhs[rstart] == "[":
+ rstart = rstart + 1
+ term = "]"
+ else:
+ term = string.whitespace
+
+ mend = rstart
+ while mend < len(rhs) and rhs[mend] not in term:
+ mend = mend + 1
+
+ lhs = rhs[rstart:mend]
+
+ if term in "}]":
+ mend = mend + 1
+
+ if term == "]":
+ if properties is None or lhs not in properties.keys():
+ error("%s: property '%s' is not defined." % (filename, lhs))
+
+ value = properties[lhs]
+ else:
+ try:
+ value = raw[lhs]
+ except KeyError:
+ error("%s: macro '%s' is not defined." % (filename, lhs))
+
+ rhs = rhs[:mstart] + value + rhs[mend:]
+ estart = string.find(rhs, "$$(")
+ mstart = string.find(rhs, "$$")
+
+ # Expand any POSIX style environment variables.
+ pleadin = ["$$(", "$("]
+
+ for pl in pleadin:
+ estart = string.find(rhs, pl)
+
+ if estart >= 0:
+ nstart = estart + len(pl)
+ break
+ else:
+ estart = -1
+
+ while estart >= 0:
+ eend = string.find(rhs[nstart:], ")")
+
+ if eend < 0:
+ break
+
+ eend = nstart + eend
+
+ name = rhs[nstart:eend]
+
+ try:
+ env = os.environ[name]
+ except KeyError:
+ env = ""
+
+ rhs = rhs[:estart] + env + rhs[eend + 1:]
+
+ for pl in pleadin:
+ estart = string.find(rhs, pl)
+
+ if estart >= 0:
+ nstart = estart + len(pl)
+ break
+ else:
+ estart = -1
+
+ # Expand any Windows style environment variables.
+ estart = string.find(rhs, "%")
+
+ while estart >= 0:
+ eend = string.find(rhs[estart + 1:], "%")
+
+ if eend < 0:
+ break
+
+ eend = estart + 1 + eend
+
+ name = rhs[estart + 1:eend]
+
+ try:
+ env = os.environ[name]
+ except KeyError:
+ env = ""
+
+ rhs = rhs[:estart] + env + rhs[eend + 1:]
+
+ estart = string.find(rhs, "%")
+
+ refined[reflhs] = rhs
+
+ # Handle the user overrides.
+ for lhs in orides.keys():
+ rhs = refined[lhs]
+ oride = orides[lhs]
+
+ if string.find(oride, "+") == 0:
+ if rhs:
+ rhs = rhs + " " + oride[1:]
+ else:
+ rhs = oride[1:]
+ else:
+ rhs = oride
+
+ refined[lhs] = rhs
+
+ return refined
+
+
+def create_wrapper(script, wrapper, gui=0):
+ """Create a platform dependent executable wrapper around a Python script.
+
+ script is the full pathname of the script.
+ wrapper is the name of the wrapper file to create.
+ gui is non-zero if a GUI enabled version of the interpreter should be used.
+
+ Returns the platform specific name of the wrapper.
+ """
+ if sys.platform == "win32":
+ wrapper = wrapper + ".bat"
+
+ wf = open(wrapper, "w")
+
+ if sys.platform == "win32":
+ exe = sys.executable
+
+ if gui:
+ exe = exe[:-4] + "w.exe"
+
+ wf.write("@\"%s\" \"%s\" %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9\n" % (exe, script))
+ elif sys.platform == "darwin":
+ # python, pythonw and sys.executable are all different images. We
+ # would prefer to use the latter (because it includes the version
+ # number) but that would mean being unable to support the "gui"
+ # argument.
+ if gui:
+ exe = "pythonw"
+ else:
+ exe = "python"
+
+ wf.write("exec %s %s ${1+\"$@\"}\n" % (exe, script))
+ else:
+ wf.write("exec %s %s ${1+\"$@\"}\n" % (sys.executable, script))
+
+ wf.close()
+
+ if sys.platform != "win32":
+ sbuf = os.stat(wrapper)
+ mode = sbuf.st_mode
+ mode |= (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
+
+ os.chmod(wrapper, mode)
+
+ return wrapper
diff --git a/python/sip/specs/aix-g++ b/python/sip/specs/aix-g++
new file mode 100644
index 00000000..438185a6
--- /dev/null
+++ b/python/sip/specs/aix-g++
@@ -0,0 +1,79 @@
+#
+# qmake configuration for aix-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -mpowerpc
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_THREAD_SAFE
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
+QMAKE_AIX_SHLIB = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthreads
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/aix-g++-64 b/python/sip/specs/aix-g++-64
new file mode 100644
index 00000000..231f3dd3
--- /dev/null
+++ b/python/sip/specs/aix-g++-64
@@ -0,0 +1,79 @@
+#
+# qmake configuration for aix-g++-64
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -maix64
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_THREAD_SAFE
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -maix64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
+QMAKE_AIX_SHLIB = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthreads
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar -X64 cq
+QMAKE_RANLIB = ranlib -X64
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/aix-xlc b/python/sip/specs/aix-xlc
new file mode 100644
index 00000000..fd288a36
--- /dev/null
+++ b/python/sip/specs/aix-xlc
@@ -0,0 +1,82 @@
+#
+# qmake configuration for aix-xlc
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = xlc
+QMAKE_CC_THREAD = xlc_r
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -qstrict
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O3
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -qthreaded
+
+QMAKE_CXX = xlC
+QMAKE_CXX_THREAD = xlC_r
+QMAKE_CXXFLAGS = -+ $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = xlC
+QMAKE_LINK_THREAD = xlC_r
+QMAKE_LINK_SHLIB = ld
+QMAKE_LINK_SHLIB_CMD = makeC++SharedLib -p 0 \
+ -o $(TARGET) $(LFLAGS) $(OBJECTS) $(OBJMOC) $(LIBS)
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB =
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
+QMAKE_AIX_SHLIB = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthreads
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/aix-xlc-64 b/python/sip/specs/aix-xlc-64
new file mode 100644
index 00000000..56501e75
--- /dev/null
+++ b/python/sip/specs/aix-xlc-64
@@ -0,0 +1,84 @@
+#
+# qmake configuration for aix-xlc
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = xlc
+QMAKE_CC_THREAD = xlc_r
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -qstrict -q64
+# -qwarn64 turns on too many bogus warnings and shadows real warnings
+#QMAKE_CFLAGS_WARN_ON = -qwarn64
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O3
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -qthreaded
+
+QMAKE_CXX = xlC
+QMAKE_CXX_THREAD = xlC_r
+QMAKE_CXXFLAGS = -+ $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = xlC
+QMAKE_LINK_THREAD = xlC_r
+QMAKE_LINK_SHLIB = ld
+QMAKE_LINK_SHLIB_CMD = makeC++SharedLib -p 0 -X 64 \
+ -o $(TARGET) $(LFLAGS) $(OBJECTS) $(OBJMOC) $(LIBS)
+QMAKE_LFLAGS = -q64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB =
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
+QMAKE_AIX_SHLIB = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthreads
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar -X64 cq
+QMAKE_RANLIB = ranlib -X64
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/bsdi-g++ b/python/sip/specs/bsdi-g++
new file mode 100644
index 00000000..e1a43a05
--- /dev/null
+++ b/python/sip/specs/bsdi-g++
@@ -0,0 +1,84 @@
+#
+# $Id$
+#
+# qmake configuration for bsdi-g++
+#
+# Written for WindRiver BSD/OS 4.0.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+QMAKE_LIBS_QT_THREAD = -lqt-mt
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/cygwin-g++ b/python/sip/specs/cygwin-g++
new file mode 100644
index 00000000..d045bce8
--- /dev/null
+++ b/python/sip/specs/cygwin-g++
@@ -0,0 +1,86 @@
+#
+# $Id$
+#
+# qmake configuration for cygwin-g++
+#
+# Written for Qt/X11 on Cygwin, using the POSIX API.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+QMAKE_CYGWIN_SHLIB = 1
+QMAKE_CYGWIN_EXE = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+QMAKE_LIBS_QT_THREAD = -lqt-mt
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/darwin-g++ b/python/sip/specs/darwin-g++
new file mode 100644
index 00000000..11e62dc7
--- /dev/null
+++ b/python/sip/specs/darwin-g++
@@ -0,0 +1,89 @@
+#
+# qmake configuration for darwin-g++
+#
+# Written for Qt/X11 on Darwin and XFree86
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl native_precompiled_headers
+QT += core gui
+DEFINES += __USE_WS_X11__
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_EXTENSION_PLUGIN = so
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = c++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = c++
+QMAKE_LINK_SHLIB = c++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_APP = -prebind
+QMAKE_LFLAGS_SHLIB = -prebind -dynamiclib -single_module -headerpad_max_install_names
+QMAKE_LFLAGS_PLUGIN = -bundle
+QMAKE_LFLAGS_THREAD =
+
+QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
+
+QMAKE_RPATH =
+
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $$QMAKE_COPY
+QMAKE_COPY_DIR = $$QMAKE_COPY -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/dgux-g++ b/python/sip/specs/dgux-g++
new file mode 100644
index 00000000..8267828a
--- /dev/null
+++ b/python/sip/specs/dgux-g++
@@ -0,0 +1,77 @@
+#
+# $Id$
+#
+# qmake configuration for dgux-g++
+#
+# Written for DG/UX R4.20MU06.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-h,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_QT = -lqt
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/freebsd-g++ b/python/sip/specs/freebsd-g++
new file mode 100644
index 00000000..7a424109
--- /dev/null
+++ b/python/sip/specs/freebsd-g++
@@ -0,0 +1,80 @@
+#
+# qmake configuration for freebsd-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -pthread -D_THREAD_SAFE
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+# Addon software goes into /usr/local on the BSDs, by default we will look there
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD = -pthread
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/freebsd-g++34 b/python/sip/specs/freebsd-g++34
new file mode 100644
index 00000000..24c77866
--- /dev/null
+++ b/python/sip/specs/freebsd-g++34
@@ -0,0 +1,80 @@
+#
+# qmake configuration for freebsd-g++34 (using g++34 from ports/lang/gcc34)
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc34
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -pthread -D_THREAD_SAFE
+
+QMAKE_CXX = g++34
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+# Addon software goes into /usr/local on the BSDs, by default we will look there
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++34
+QMAKE_LINK_SHLIB = g++34
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD = -pthread
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/freebsd-g++40 b/python/sip/specs/freebsd-g++40
new file mode 100644
index 00000000..cb8f58ef
--- /dev/null
+++ b/python/sip/specs/freebsd-g++40
@@ -0,0 +1,80 @@
+#
+# qmake configuration for freebsd-g++40 (using g++40 from ports/lang/gcc40)
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc40
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -pthread -D_THREAD_SAFE
+
+QMAKE_CXX = g++40
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+# Addon software goes into /usr/local on the BSDs, by default we will look there
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++40
+QMAKE_LINK_SHLIB = g++40
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD = -pthread
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/freebsd-icc b/python/sip/specs/freebsd-icc
new file mode 100644
index 00000000..71d08b79
--- /dev/null
+++ b/python/sip/specs/freebsd-icc
@@ -0,0 +1,105 @@
+#
+# qmake configuration for freebsd-icc
+#
+# Written for Intel C++ 7.1 and 8.0 on FreeBSD
+#
+# Note: Some of the remarks from the Intel compiler are disabled (even
+# with 'warn_on' specified):
+#
+# remark #171: invalid type conversion: "int" to "void *"
+# remark #193: zero used for undefined preprocessing identifier
+# remark #279: controlling expression is constant
+# remark #304: access control not specified ("public" by default)
+# remark #310: old-style parameter list (anachronism)
+# remark #383: value copied to temporary, reference to temporary used
+# remark #424: extra ";" ignored
+# remark #444: destructor for base class "Class" is not virtual
+# remark #488: template parameter "T" is not used in declaring the parameter
+# types of function template "function"
+# remark #810: conversion from "type1" to "type2" may loose significant bits
+# remark #858: type qualifier on return type is meaningless
+# remark #967: conversion from "type1" to "type2"; sizes do not match
+# remark #981: operands are evaluated in unspecified order
+# remark #1418: external definition with no prior declaration
+# remark #1419: external declaration in primary source file
+# warning #1476: field uses tail padding of a base class
+# warning #1477: GNU C++ compilers may use bit field padding
+# warning #1572: floating-point equality and inequality comparisons are unreliable
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = icc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -wd858,1572
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -w2 -wd171,193,279,304,310,383,424,444,488,810,967,981,1418,1419,1476,1477
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE =
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_THREAD_SAFE
+
+QMAKE_CXX = icpc
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+# Addon software goes into /usr/local on the BSDs, by default we will look there
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = icpc
+QMAKE_LINK_SHLIB = icpc
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Qoption,ld,-soname,
+QMAKE_LFLAGS_THREAD = -mt
+QMAKE_RPATH = -Qoption,ld,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpux-acc b/python/sip/specs/hpux-acc
new file mode 100644
index 00000000..0a78d972
--- /dev/null
+++ b/python/sip/specs/hpux-acc
@@ -0,0 +1,103 @@
+#
+# qmake configuration for hpux-acc
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE. See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Ae +DAportable -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +O1
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = -AA +DAportable -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = +M
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib /usr/contrib/X11R6/lib
+
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = -AA +DAportable -Wl,+s
+QMAKE_LFLAGS_RELEASE = -O
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 1
+QMAKE_EXTENSION_SHLIB = sl
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL -lXt
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpux-acc-64 b/python/sip/specs/hpux-acc-64
new file mode 100644
index 00000000..083c4038
--- /dev/null
+++ b/python/sip/specs/hpux-acc-64
@@ -0,0 +1,124 @@
+#
+# qmake configuration for hpux-n64
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE.
+# From pthread(3t):
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
+# See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Ae +DA2.0W -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +O1
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = -AA +DA2.0W -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = +M
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6/pa20_64
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib/pa20_64 /usr/contrib/X11R6/lib/pa20_64
+
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = -AA +DA2.0W -Wl,+s
+QMAKE_LFLAGS_RELEASE = -O
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 3
+QMAKE_EXTENSION_SHLIB = sl
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL -lXt
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpux-acc-o64 b/python/sip/specs/hpux-acc-o64
new file mode 100644
index 00000000..e6739a70
--- /dev/null
+++ b/python/sip/specs/hpux-acc-o64
@@ -0,0 +1,123 @@
+#
+# qmake configuration for hpux-o64
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE.
+# From pthread(3t):
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
+# See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Ae +DA2.0 -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O +Oentrysched +Onolimit
+QMAKE_CFLAGS_DEBUG = -y -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = +DA2.0 -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = -g
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib /usr/contrib/X11R6/lib
+
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = +DA2.0 -Wl,+s
+QMAKE_LFLAGS_RELEASE = -O
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -b
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 2
+QMAKE_EXTENSION_SHLIB = sl
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpux-cc b/python/sip/specs/hpux-cc
new file mode 100644
index 00000000..4ccc1316
--- /dev/null
+++ b/python/sip/specs/hpux-cc
@@ -0,0 +1,100 @@
+#
+# $Id$
+#
+# qmake configuration for hpux-cc
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE.
+# See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Ae +DA1.1e -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = +DA1.1e -w +a1 -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib /usr/contrib/X11R6/lib
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+# CC generates template code during linking, and so needs -I's
+QMAKE_LFLAGS = +DA1.1e -Wl,+s -L/usr/lib -I$$QMAKE_INCDIR_X11 -I$$QMAKE_INCDIR_QT
+QMAKE_LFLAGS_RELEASE = -O -s
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -b
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 1
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/hpux-g++ b/python/sip/specs/hpux-g++
new file mode 100644
index 00000000..55339938
--- /dev/null
+++ b/python/sip/specs/hpux-g++
@@ -0,0 +1,85 @@
+#
+# qmake configuration for hpux-g++
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads,
+# therefore we also need to redefine _HPUX_SOURCE.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl plugin_no_soname
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D_HPUX_SOURCE -DGLU_VERSION_1_2
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/Mesa/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/Mesa/lib /usr/contrib/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -Wl,+s
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -fPIC -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 1
+QMAKE_EXTENSION_SHLIB = sl
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpux-g++-64 b/python/sip/specs/hpux-g++-64
new file mode 100644
index 00000000..0b81fcd7
--- /dev/null
+++ b/python/sip/specs/hpux-g++-64
@@ -0,0 +1,85 @@
+#
+# qmake configuration for hpux-g++-64
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads,
+# therefore we also need to redefine _HPUX_SOURCE.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR = /usr/lib/pa20_64
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6/pa20_64
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/Mesa/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/Mesa/lib/pa20_64 /usr/contrib/X11R6/lib/pa20_64
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -Wl,+s -lpthread
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -fPIC -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 3
+QMAKE_EXTENSION_SHLIB = sl
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpuxi-acc b/python/sip/specs/hpuxi-acc
new file mode 100644
index 00000000..1596ac2d
--- /dev/null
+++ b/python/sip/specs/hpuxi-acc
@@ -0,0 +1,122 @@
+#
+# qmake configuration for hpuxi-acc-32
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE.
+# From pthread(3t):
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
+# See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release plugin_no_soname
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = lex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = +DD32 +DSitanium -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +O2 +Osize
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = +M
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/hpux32/X11R6
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib/hpux32 /usr/contrib/X11R6/lib/hpux32
+
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = +DD32 +DSitanium -Wl,+s
+QMAKE_LFLAGS_RELEASE = +O2
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH =
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL -lXt
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hpuxi-acc-64 b/python/sip/specs/hpuxi-acc-64
new file mode 100644
index 00000000..0763d140
--- /dev/null
+++ b/python/sip/specs/hpuxi-acc-64
@@ -0,0 +1,122 @@
+#
+# qmake configuration for hpuxi-acc-64
+#
+# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
+# we also need to redefine _HPUX_SOURCE.
+# From pthread(3t):
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
+# See pthread(3t) for more details.
+#
+# From the "HP aC++ Online Programmer's Guide":
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
+#
+# From the online "C/HP-UX Reference Manual":
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release plugin_no_soname
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = lex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = +DD64 +DSitanium -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +O2 +Osize
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = +M
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/hpux64/X11R6
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib/hpux64 /usr/contrib/X11R6/lib/hpux64
+
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = +DD64 +DSitanium -Wl,+s
+QMAKE_LFLAGS_RELEASE = +O2
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH =
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL -lXt
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/hurd-g++ b/python/sip/specs/hurd-g++
new file mode 100644
index 00000000..88539e81
--- /dev/null
+++ b/python/sip/specs/hurd-g++
@@ -0,0 +1,77 @@
+#
+# qmake configuration for hurd-g++
+#
+# Submitted by uch@nop.or.jp as "gnu-g++".
+# Renamed to "hurd-g++" because people were confusing GNU/Hurd with GNU/Linux.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+QT += core gui
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/irix-cc b/python/sip/specs/irix-cc
new file mode 100644
index 00000000..efc47bc6
--- /dev/null
+++ b/python/sip/specs/irix-cc
@@ -0,0 +1,113 @@
+#
+# qmake configuration for irix-cc
+#
+# From cc(1):
+# -n32
+# Generates a (new) 32-bit object. This defaults to -mips3 if
+# -mips4 has not been specified.
+# -LANG: ...
+# The language feature option group controls the source language
+# interpretation assumed by the compiler. The individual controls
+# in this group are as follows:
+# ansi-for-init-scope [ = ( ON|OFF ) ]
+# Enables or disables the ANSI scoping rules for for-init
+# declarations (the scope of the name declared extends to
+# the end of the for statement). This enables the behavior
+# that is required by the C++ standard. The default value
+# is OFF, which is the ARM behavior (the scope of the name
+# declared extends to the end of the block enclosing the for
+# statement).
+# bool [ = ( ON|OFF ) ]
+# Enables or disables the predefined bool data type, along
+# with the predefined values true and false. Use this option
+# only to suppress this type in old code that defines bool
+# itself. Because this option changes the mangling of function
+# names with bool parameters, all files comprising a program
+# should be compiled with consistent options.
+# Default is ON.
+# The _BOOL feature macro can be used in #ifdefs to do conditional
+# compilation based on whether or not this option is enabled.
+# std
+# Enables use of the standard C++ library and standard-
+# conforming iostream library. Specifying this flag also
+# triggers other standard-conforming behavior, such as the
+# new rules for the scope of for loop initializers.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -n32 -signed -woff 1209,1355,1375,1424,3303
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -fullwarn
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2 -OPT:Olimit=3000
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -woff 1110,1174,3262
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = -n32 -signed -LANG:std:libc_in_namespace_std=ON -woff 1209,1355,1375,1424,3303
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS = -n32
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lm
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = CC -ar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)so_locations $(OBJECTS_DIR)ii_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/irix-cc-64 b/python/sip/specs/irix-cc-64
new file mode 100644
index 00000000..f83d1f93
--- /dev/null
+++ b/python/sip/specs/irix-cc-64
@@ -0,0 +1,113 @@
+#
+# qmake configuration for irix-cc-64
+#
+# From cc(1):
+# -64
+# Generates a 64-bit object. This defaults to -mips4 if -mips3 has
+# not been specified.
+# -LANG: ...
+# The language feature option group controls the source language
+# interpretation assumed by the compiler. The individual controls
+# in this group are as follows:
+# ansi-for-init-scope [ = ( ON|OFF ) ]
+# Enables or disables the ANSI scoping rules for for-init
+# declarations (the scope of the name declared extends to
+# the end of the for statement). This enables the behavior
+# that is required by the C++ standard. The default value
+# is OFF, which is the ARM behavior (the scope of the name
+# declared extends to the end of the block enclosing the for
+# statement).
+# bool [ = ( ON|OFF ) ]
+# Enables or disables the predefined bool data type, along
+# with the predefined values true and false. Use this option
+# only to suppress this type in old code that defines bool
+# itself. Because this option changes the mangling of function
+# names with bool parameters, all files comprising a program
+# should be compiled with consistent options.
+# Default is ON.
+# The _BOOL feature macro can be used in #ifdefs to do conditional
+# compilation based on whether or not this option is enabled.
+# std
+# Enables use of the standard C++ library and standard-
+# conforming iostream library. Specifying this flag also
+# triggers other standard-conforming behavior, such as the
+# new rules for the scope of for loop initializers.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -64 -signed -woff 1209,1355,1375,1424,3303
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -fullwarn
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2 -OPT:Olimit=3000
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -woff 1110,1174,3262
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = -64 -signed -LANG:std:libc_in_namespace_std=ON -woff 1209,1355,1375,1424,3303
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS = -64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lm
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = CC -ar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)so_locations $(OBJECTS_DIR)ii_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/irix-cc-o32 b/python/sip/specs/irix-cc-o32
new file mode 100644
index 00000000..ff6732f4
--- /dev/null
+++ b/python/sip/specs/irix-cc-o32
@@ -0,0 +1,89 @@
+#
+# $Id$
+#
+# qmake configuration for irix-cc-o32
+#
+# From cc(1):
+# -o32 or -32
+# Generates an (old) 32-bit object. See the o32(5) man page for
+# option descriptions and details. This defaults to -mips2 if
+# -mips1 has not been specified.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS = -o32 -signed -woff 3115,3203,3260,3672,3937
+QMAKE_CFLAGS_WARN_ON = -fullwarn
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2 -Olimit 3000
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -woff 3203,3262
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS = -o32
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+QMAKE_LIBS_QT_THREAD = -lqt-mt
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu -lm
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)so_locations $(OBJECTS_DIR)ii_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/irix-g++ b/python/sip/specs/irix-g++
new file mode 100644
index 00000000..5deaa1c6
--- /dev/null
+++ b/python/sip/specs/irix-g++
@@ -0,0 +1,84 @@
+#
+# qmake configuration for irix-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared -Wl,-LD_LAYOUT:lgot_buffer=1000
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS = -lC
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+# libGLU is using the SGI C++ library internally and this somehow clashes
+# with the GNU C++ library (similar name mangling and symbol names?)
+# so we add -lC so that the SGI C++ library is used first...
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = so_locations
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/irix-g++-64 b/python/sip/specs/irix-g++-64
new file mode 100644
index 00000000..ade0ad3f
--- /dev/null
+++ b/python/sip/specs/irix-g++-64
@@ -0,0 +1,84 @@
+#
+# qmake configuration for irix-g++-64
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -mabi=64
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD =
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -mabi=64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared -Wl,-LD_LAYOUT:lgot_buffer=1000
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS = -lC
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+# libGLU is using the SGI C++ library internally and this somehow clashes
+# with the GNU C++ library (similar name mangling and symbol names?)
+# so we add -lC so that the SGI C++ library is used first...
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = so_locations
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-cxx b/python/sip/specs/linux-cxx
new file mode 100644
index 00000000..fd5aae25
--- /dev/null
+++ b/python/sip/specs/linux-cxx
@@ -0,0 +1,78 @@
+#
+# qmake configuration for linux-cxx
+#
+# Written for Compaq C++ for GNU/Linux on Alpha
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = ccc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -w
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Olimit 1000
+
+QMAKE_CXX = cxx
+QMAKE_CXXFLAGS = -w
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = cxx
+QMAKE_LINK_SHLIB = cxx
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-ecc-64 b/python/sip/specs/linux-ecc-64
new file mode 100644
index 00000000..a6b43277
--- /dev/null
+++ b/python/sip/specs/linux-ecc-64
@@ -0,0 +1,84 @@
+#
+# qmake configuration for linux-ecc-64
+#
+# Written for Intel C++ 7.1 and 8.0 for Linux
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = ecc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = ecpc
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = ecpc
+QMAKE_LINK_SHLIB = ecpc
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Qoption,ld,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Qoption,ld,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-g++ b/python/sip/specs/linux-g++
new file mode 100644
index 00000000..9d94ff32
--- /dev/null
+++ b/python/sip/specs/linux-g++
@@ -0,0 +1,90 @@
+#
+# qmake configuration for linux-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
+QMAKE_YACC_HEADER = $base.tab.h
+QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-g++-32 b/python/sip/specs/linux-g++-32
new file mode 100644
index 00000000..c0b7b79b
--- /dev/null
+++ b/python/sip/specs/linux-g++-32
@@ -0,0 +1,90 @@
+#
+# qmake configuration for linux-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
+QMAKE_YACC_HEADER = $base.tab.h
+QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_CFLAGS = -m32 -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -m32
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-g++-64 b/python/sip/specs/linux-g++-64
new file mode 100644
index 00000000..7bdd3b14
--- /dev/null
+++ b/python/sip/specs/linux-g++-64
@@ -0,0 +1,93 @@
+#
+# qmake configuration for linux-g++
+#
+# Written for GNU/Linux platforms that have both lib and lib64 directories,
+# like the AMD Opteron.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
+QMAKE_YACC_HEADER = $base.tab.h
+QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_CFLAGS = -m64 -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib64
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -m64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-icc b/python/sip/specs/linux-icc
new file mode 100644
index 00000000..a14034c2
--- /dev/null
+++ b/python/sip/specs/linux-icc
@@ -0,0 +1,107 @@
+#
+# qmake configuration for linux-icc
+#
+# Written for Intel C++ 5.0.1, 6.0.1, 7.0 and 8.0 for GNU/Linux
+#
+# Note: Some of the remarks from the Intel compiler are disabled (even
+# with 'warn_on' specified):
+#
+# remark #171: invalid type conversion: "int" to "void *"
+# remark #193: zero used for undefined preprocessing identifier
+# remark #279: controlling expression is constant
+# remark #304: access control not specified ("public" by default)
+# remark #310: old-style parameter list (anachronism)
+# remark #383: value copied to temporary, reference to temporary used
+# remark #424: extra ";" ignored
+# remark #444: destructor for base class "Class" is not virtual
+# remark #488: template parameter "T" is not used in declaring the parameter
+# types of function template "function"
+# remark #810: conversion from "type1" to "type2" may loose significant bits
+# remark #858: type qualifier on return type is meaningless
+# remark #967: conversion from "type1" to "type2"; sizes do not match
+# remark #981: operands are evaluated in unspecified order
+# remark #1418: external definition with no prior declaration
+# remark #1419: external declaration in primary source file
+# warning #1476: field uses tail padding of a base class
+# warning #1477: GNU C++ compilers may use bit field padding
+# warning #1572: floating-point equality and inequality comparisons are unreliable
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = icc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -wd858,1572
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -w2 -wd171,193,279,304,310,383,424,444,488,810,967,981,1418,1419,1476,1477
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE =
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = icpc
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = icpc
+QMAKE_LINK_SHLIB = icpc
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Qoption,ld,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Qoption,ld,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-kcc b/python/sip/specs/linux-kcc
new file mode 100644
index 00000000..6a9cf088
--- /dev/null
+++ b/python/sip/specs/linux-kcc
@@ -0,0 +1,93 @@
+#
+# qmake configuration for linux-kcc
+#
+# Written for KAI C++ 4.0f for GNU/Linux
+#
+# This product has been discontinued, use Intel C++ instead.
+#
+# From the KAI C++ man page for Linux:
+# --[no_]thread_safe
+# [Waive or] Request thread-safe handling of system-allocated objects.
+# To guarantee thread safety, this option must be used when both
+# compiling and linking. Thread-safe C++ is not link-compatible with
+# (the default) non-thread-safe C++.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = KCC
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = --c --display_error_number --backend -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +K2
+QMAKE_CFLAGS_DEBUG = +K0
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = --diag_suppress 111,177
+QMAKE_CFLAGS_THREAD = --thread_safe
+
+QMAKE_CXX = KCC
+QMAKE_CXXFLAGS = --display_error_number --diag_suppress 611,1142 --backend -pipe
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = KCC
+QMAKE_LINK_SHLIB = KCC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB =
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = --soname$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = --thread_safe
+QMAKE_RPATH = -rpath$$LITERAL_WHITESPACE
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)ti_files
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-kylix b/python/sip/specs/linux-kylix
new file mode 100644
index 00000000..335f839d
--- /dev/null
+++ b/python/sip/specs/linux-kylix
@@ -0,0 +1,82 @@
+#
+# qmake configuration for linux-kylix
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = bc++
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -m
+QMAKE_CFLAGS_WARN_ON = -w
+QMAKE_CFLAGS_WARN_OFF = -w-
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -v -y
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = bc++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -P
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = bc++
+QMAKE_LINK_SHLIB = bc++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -lv -ly
+QMAKE_LFLAGS_SHLIB = -ltD -lTpd
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -lN
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH =
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -llibdl
+QMAKE_LIBS_X11 = -llibXext -llibX11 -llibm
+QMAKE_LIBS_X11SM = -llibSM -llibICE
+QMAKE_LIBS_NIS = -llibnsl
+QMAKE_LIBS_OPENGL = -llibGLU -llibGL -llibXmu
+QMAKE_LIBS_OPENGL_QT = -llibGL -llibXmu
+QMAKE_LIBS_THREAD = -llibpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-lsb b/python/sip/specs/linux-lsb
new file mode 100644
index 00000000..95367161
--- /dev/null
+++ b/python/sip/specs/linux-lsb
@@ -0,0 +1,90 @@
+#
+# qmake configuration for linux-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = lsbcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
+QMAKE_YACC_HEADER = $base.tab.h
+QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+QMAKE_CXX = lsbc++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = lsbc++
+QMAKE_LINK_SHLIB = lsbc++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/linux-pgcc b/python/sip/specs/linux-pgcc
new file mode 100644
index 00000000..fae849dc
--- /dev/null
+++ b/python/sip/specs/linux-pgcc
@@ -0,0 +1,82 @@
+#
+# qmake configuration for linux-pgcc
+#
+# Written for the Portland Group compiler 6.0-5
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = pgcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -fast
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fpic
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = pgCC
+QMAKE_CXXFLAGS = --display_error_number --diag_suppress815 $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = pgCC
+QMAKE_LINK_SHLIB = pgCC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared -fpic
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -R
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/lynxos-g++ b/python/sip/specs/lynxos-g++
new file mode 100644
index 00000000..da2ebe70
--- /dev/null
+++ b/python/sip/specs/lynxos-g++
@@ -0,0 +1,85 @@
+#
+# qmake configuration for lynxos-g++
+#
+# Written for LynxOS 4.0
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/include/GL
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/macx-g++ b/python/sip/specs/macx-g++
new file mode 100644
index 00000000..d28fda9f
--- /dev/null
+++ b/python/sip/specs/macx-g++
@@ -0,0 +1,97 @@
+#
+# qmake configuration for macx-g++
+#
+# Mac OS X + command-line compiler
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib_version_first plugin_no_soname link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublibs
+QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
+QMAKE_YACC_HEADER = $base.tab.h
+QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_RESOURCE = /Developer/Tools/Rez
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -Os
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+QMAKE_CFLAGS_PPC = -arch ppc
+QMAKE_CFLAGS_X86 = -arch i386
+
+QMAKE_CXX = c++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+QMAKE_CXXFLAGS_PPC = $$QMAKE_CFLAGS_PPC
+QMAKE_CXXFLAGS_X86 = $$QMAKE_CFLAGS_X86
+
+QMAKE_LIBDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_FIX_RPATH = install_name_tool -id
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LFLAGS = -headerpad_max_install_names
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_APP =
+QMAKE_LFLAGS_SHLIB = -single_module -dynamiclib
+QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_PPC = -arch ppc
+QMAKE_LFLAGS_X86 = -arch i386
+
+QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
+
+QMAKE_RPATH =
+
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $$QMAKE_COPY
+QMAKE_COPY_DIR = $$QMAKE_COPY -R
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/macx-mwerks b/python/sip/specs/macx-mwerks
new file mode 100644
index 00000000..76c425a7
--- /dev/null
+++ b/python/sip/specs/macx-mwerks
@@ -0,0 +1,25 @@
+#
+# qmake configuration for macx-mwerks
+#
+# Mac OS X + Metrowerks compiler
+#
+
+MAKEFILE_GENERATOR = METROWERKS
+TEMPLATE = app
+QT += core gui
+CONFIG += qt release warn_off separate_volume link_prl
+
+DEFINES += QT_NO_STL __MACOSX__ __CF_USE_FRAMEWORK_INCLUDES__
+
+CODEWARRIOR_LINKER = Mach-O PPC Linker
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_VOLUMENAME = OS X Volume
+FRAMEWORKPATH = {System}/Library/Frameworks/
+QMAKE_CRT_OBJECTS = crt1.o
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBS = -framework System
+QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
+load(qt_config)
diff --git a/python/sip/specs/macx-pbuilder b/python/sip/specs/macx-pbuilder
new file mode 100644
index 00000000..1e806d15
--- /dev/null
+++ b/python/sip/specs/macx-pbuilder
@@ -0,0 +1,83 @@
+#
+# qmake configuration for macx-pbuilder
+#
+# Mac OS X + Project Builder
+#
+
+MAKEFILE_GENERATOR = PROJECTBUILDER
+TEMPLATE = app
+CONFIG += qt warn_on release lib_version_first incremental plugin_no_soname link_prl app_bundle
+QT += core gui
+QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
+
+QMAKE_CC =
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_RESOURCE = /Developer/Tools/Rez
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -Os
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX =
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR = /usr/local/include \
+ /System/Library/Frameworks/CarbonCore.framework/Headers
+QMAKE_LIBDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
+
+QMAKE_LINK = c++
+QMAKE_LINK_SHLIB = c++
+QMAKE_LFLAGS = -headerpad_max_install_names
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_APP =
+QMAKE_LFLAGS_SHLIB = -single_module -dynamiclib
+QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+#QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}@executable_path/../Frameworks/
+QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH =
+
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_THREAD =
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $$QMAKE_COPY
+QMAKE_COPY_DIR = $$QMAKE_COPY -R
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/macx-xcode b/python/sip/specs/macx-xcode
new file mode 100644
index 00000000..d2a5789a
--- /dev/null
+++ b/python/sip/specs/macx-xcode
@@ -0,0 +1,83 @@
+#
+# qmake configuration for macx-xcode
+#
+# Mac OS X + XCode
+#
+
+MAKEFILE_GENERATOR = XCODE
+TEMPLATE = app
+CONFIG += qt warn_on release lib_version_first incremental plugin_no_soname link_prl app_bundle
+QT += core gui
+QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
+
+QMAKE_CC =
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_RESOURCE = /Developer/Tools/Rez
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -Os
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX =
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR = /usr/local/include \
+ /System/Library/Frameworks/CarbonCore.framework/Headers
+QMAKE_LIBDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
+
+QMAKE_LINK = c++
+QMAKE_LINK_SHLIB = c++
+QMAKE_LFLAGS = -headerpad_max_install_names
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_APP =
+QMAKE_LFLAGS_SHLIB = -single_module -dynamiclib
+QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+#QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}@executable_path/../Frameworks/
+QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH =
+
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_THREAD =
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $$QMAKE_COPY
+QMAKE_COPY_DIR = $$QMAKE_COPY -R
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/macx-xlc b/python/sip/specs/macx-xlc
new file mode 100644
index 00000000..262764b2
--- /dev/null
+++ b/python/sip/specs/macx-xlc
@@ -0,0 +1,94 @@
+#
+# qmake configuration for macx-xlc
+#
+# Mac OS X + IBM's XL C/C++ Advanced Edition for Mac OS X
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release app_bundle global_init_link_order lib_version_first plugin_no_soname link_prl
+QT += core gui
+
+QMAKE_CC = xlc
+QMAKE_CC_THREAD = xlc_r
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -qstrict
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O3
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -qthreaded
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_COMPILER_DEFINES += __APPLE__ __xlc__
+
+QMAKE_CXX = xlc++
+QMAKE_CXX_THREAD = xlc++_r
+QMAKE_CXXFLAGS = -+ $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = xlc++
+QMAKE_LINK_THREAD = xlc++_r
+QMAKE_LINK_SHLIB = ld
+#QMAKE_LINK_SHLIB_CMD = makeC++SharedLib -p 0 \
+# -o $(TARGETD) \
+# $(LFLAGS) $(OBJECTS) $(OBJMOC) $(LIBS); \
+# $(AR) lib$(QMAKE_TARGET).a $(TARGETD); \
+# $(RANLIB) lib$(QMAKE_TARGET).a; \
+# mv lib$(QMAKE_TARGET).a $(DESTDIR)
+QMAKE_LFLAGS = -headerpad_max_install_names
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -prebind -qmkshrobj
+QMAKE_LFLAGS_PLUGIN = -bundle
+QMAKE_LFLAGS_SONAME =
+#QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
+#QMAKE_AIX_SHLIB = 1
+#QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
+#QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
+#QMAKE_LIBS_THREAD = -lpthreads
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $$QMAKE_COPY
+QMAKE_COPY_DIR = $$QMAKE_COPY -R
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/netbsd-g++ b/python/sip/specs/netbsd-g++
new file mode 100644
index 00000000..0b112b10
--- /dev/null
+++ b/python/sip/specs/netbsd-g++
@@ -0,0 +1,80 @@
+#
+# qmake configuration for netbsd-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -pthread
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LINK_SHLIB_CMD = $$QMAKE_LINK_SHLIB $$QMAKE_LFLAGS_SHLIB $(LFLAGS) $$QMAKE_LFLAGS -o $(TARGETD) $(OBJECTS) $(OBJMOC) $(LIBS)
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD = -pthread
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB = ranlib
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/openbsd-g++ b/python/sip/specs/openbsd-g++
new file mode 100644
index 00000000..86caacdb
--- /dev/null
+++ b/python/sip/specs/openbsd-g++
@@ -0,0 +1,81 @@
+#
+# qmake configuration for openbsd-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -pthread
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/local/include
+QMAKE_LIBDIR = /usr/local/lib
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LINK_SHLIB_CMD = $$QMAKE_LINK_SHLIB $(LFLAGS) \
+ $$QMAKE_CFLAGS_SHLIB $$QMAKE_LFLAGS \
+ -o $(TARGETD) $(OBJECTS) $(OBJMOC) $(LIBS)
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD = -pthread
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar q
+QMAKE_RANLIB = ranlib
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/qnx-g++ b/python/sip/specs/qnx-g++
new file mode 100644
index 00000000..c2411d4d
--- /dev/null
+++ b/python/sip/specs/qnx-g++
@@ -0,0 +1,81 @@
+#
+# qmake configuration for qnx-g++
+#
+# Written for QNX RTOS v6 with X11
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe -fno-inline -fno-pack-struct
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses -fno-inline -fno-pack-struct
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS = -lunix
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/reliant-cds b/python/sip/specs/reliant-cds
new file mode 100644
index 00000000..998bf5f4
--- /dev/null
+++ b/python/sip/specs/reliant-cds
@@ -0,0 +1,85 @@
+#
+# $Id$
+#
+# qmake configuration for reliant-cds
+#
+# Written for Reliant UNIX 5.45 using the CDS++ C/C++ compiler V2.0C.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -v
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -K pthread
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /opt/X/include/X11
+QMAKE_LIBDIR_X11 = /opt/X/lib
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = -K pthread
+QMAKE_RPATH = -Wl,-Brpath=
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+QMAKE_LIBS_QT_THREAD = -lqt-mt
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = CC -xar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)/Templates.DB
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/reliant-cds-64 b/python/sip/specs/reliant-cds-64
new file mode 100644
index 00000000..7374b730
--- /dev/null
+++ b/python/sip/specs/reliant-cds-64
@@ -0,0 +1,85 @@
+#
+# $Id$
+#
+# qmake configuration for reliant-cds-64
+#
+# Written for Reliant UNIX 5.45 using the CDS++ C/C++ compiler V2.0C.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Klp64
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -v
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -K pthread
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /opt/X/include/X11
+QMAKE_LIBDIR_X11 = /opt/X/lib
+QMAKE_INCDIR_QT = $(QTDIR)/include
+QMAKE_LIBDIR_QT = $(QTDIR)/lib
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS = -Klp64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = -K pthread
+QMAKE_RPATH = -Wl,-Brpath=
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_QT = -lqt
+QMAKE_LIBS_QT_THREAD = -lqt-mt
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu
+QMAKE_LIBS_OPENGL_QT = -lGL -lXmu
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $(QTDIR)/bin/moc
+QMAKE_UIC = $(QTDIR)/bin/uic
+
+QMAKE_AR = CC -xar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)/Templates.DB
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/python/sip/specs/sco-cc b/python/sip/specs/sco-cc
new file mode 100644
index 00000000..8a4a3924
--- /dev/null
+++ b/python/sip/specs/sco-cc
@@ -0,0 +1,78 @@
+#
+# qmake configuration for sco-cc
+#
+# Written for SCO OpenServer with UDK
+#
+# -Wf,--diag_suppress,838
+# turns off warning about missing return types in X headers
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+QT += core gui
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC = -Wf,--diag_suppress,111 -Wf,--diag_suppress,177
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -Wf,--display_error_number -Wf,--diag_suppress,838
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE -Tused
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 = /usr/X/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/sco-g++ b/python/sip/specs/sco-g++
new file mode 100644
index 00000000..9a488e83
--- /dev/null
+++ b/python/sip/specs/sco-g++
@@ -0,0 +1,77 @@
+#
+# qmake configuration for sco-g++
+#
+# Written for SCO OpenServer 5.0.6 with Skunkware's compiler
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_RPATH =
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lm
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/solaris-cc b/python/sip/specs/solaris-cc
new file mode 100644
index 00000000..3e1f4285
--- /dev/null
+++ b/python/sip/specs/solaris-cc
@@ -0,0 +1,85 @@
+#
+# qmake configuration for solaris-cc
+#
+# Written for Forte Developer 6 and Sun ONE Studio 7 and 8
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -xM
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -mt
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = -O2
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/sfw/include
+QMAKE_LIBDIR = /usr/sfw/lib
+QMAKE_INCDIR_X11 = /usr/openwin/include
+QMAKE_LIBDIR_X11 = /usr/openwin/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/openwin/include
+QMAKE_LIBDIR_OPENGL = /usr/openwin/lib
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = -mt
+QMAKE_RPATH = -R
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS =
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread -lrt
+QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = CC -xar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)Templates.DB $(OBJECTS_DIR)SunWS_cache
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/solaris-cc-64 b/python/sip/specs/solaris-cc-64
new file mode 100644
index 00000000..cd1af176
--- /dev/null
+++ b/python/sip/specs/solaris-cc-64
@@ -0,0 +1,102 @@
+#
+# qmake configuration for solaris-cc-64
+#
+# Written for Forte Developer 6 and Sun ONE Studio 7 and 8
+#
+# From the standards(5) manual page:
+# The XNS4 specification is safe for use only in ILP32 (32-bit)
+# environments and should not be used for LP64 (64-bit)
+# application environments. Use XNS5, which has LP64-clean
+# interfaces that are portable across ILP32 and LP64 environments.
+# [...]
+# For platforms supporting the LP64 (64-bit) programming environment
+# where the SC5.0 Compilers have been installed, SUSv2-conforming LP64
+# applications using XNS5 library calls should be built with command
+# lines of the form:
+# c89 $(getconf XBS5_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=500 \
+# $(getconf XBS5_LP64_OFF64_LDFLAGS) foo.c -o foo \
+# $(getconf XBS5_LP64_OFF64_LIBS) -lxnet
+# So it appears that _XOPEN_SOURCE=500 should be defined when building
+# 64-bit applications (on Solaris 7 and better). But then __EXTENSIONS__
+# should be defined as well to recover all the default system interface.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -xarch=generic64 -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
+QMAKE_CFLAGS_DEPS = -xM
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -mt
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = -O
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/sfw/include
+QMAKE_LIBDIR = /usr/sfw/lib/64
+QMAKE_INCDIR_X11 = /usr/openwin/include
+QMAKE_LIBDIR_X11 = /usr/openwin/lib/64
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/openwin/include
+QMAKE_LIBDIR_OPENGL = /usr/openwin/lib/64
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS = -xarch=generic64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = -mt
+QMAKE_RPATH = -R
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS =
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread -lrt
+QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = CC -xar -o
+QMAKE_RANLIB =
+
+QMAKE_CLEAN = -r $(OBJECTS_DIR)Templates.DB $(OBJECTS_DIR)SunWS_cache
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/solaris-g++ b/python/sip/specs/solaris-g++
new file mode 100644
index 00000000..09d141d1
--- /dev/null
+++ b/python/sip/specs/solaris-g++
@@ -0,0 +1,87 @@
+#
+# qmake configuration for solaris-g++
+#
+# The X11 header files used to be broken on Solaris until patches were
+# released in early 2001 for Solaris 2.6, 7, and 8. On Solaris 2.5.1
+# or non-patched systems -fpermissive works around the incompatibility
+# between GCC 2.95 or better and Solaris - but we still get warnings
+# because we don't use -isystem.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/sfw/include
+QMAKE_LIBDIR = /usr/sfw/lib
+QMAKE_INCDIR_X11 = /usr/openwin/include
+QMAKE_LIBDIR_X11 = /usr/openwin/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/openwin/include
+QMAKE_LIBDIR_OPENGL = /usr/openwin/lib
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-R,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS =
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread -lrt
+QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/solaris-g++-64 b/python/sip/specs/solaris-g++-64
new file mode 100644
index 00000000..c85882a2
--- /dev/null
+++ b/python/sip/specs/solaris-g++-64
@@ -0,0 +1,104 @@
+#
+# qmake configuration for solaris-g++64
+#
+# The X11 header files used to be broken on Solaris until patches were
+# released in early 2001 for Solaris 2.6, 7, and 8. On Solaris 2.5.1
+# or non-patched systems -fpermissive works around the incompatibility
+# between GCC 2.95 or better and Solaris - but we still get warnings
+# because we don't use -isystem.
+#
+# From the standards(5) manual page:
+# The XNS4 specification is safe for use only in ILP32 (32-bit)
+# environments and should not be used for LP64 (64-bit)
+# application environments. Use XNS5, which has LP64-clean
+# interfaces that are portable across ILP32 and LP64 environments.
+# [...]
+# For platforms supporting the LP64 (64-bit) programming environment
+# where the SC5.0 Compilers have been installed, SUSv2-conforming LP64
+# applications using XNS5 library calls should be built with command
+# lines of the form:
+# c89 $(getconf XBS5_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=500 \
+# $(getconf XBS5_LP64_OFF64_LDFLAGS) foo.c -o foo \
+# $(getconf XBS5_LP64_OFF64_LIBS) -lxnet
+# So it appears that _XOPEN_SOURCE=500 should be defined when building
+# 64-bit applications (on Solaris 7 and better). But then __EXTENSIONS__
+# should be defined as well to recover all the default system interface.
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -m64 -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR = /usr/sfw/include
+QMAKE_LIBDIR = /usr/sfw/lib/64
+QMAKE_INCDIR_X11 = /usr/openwin/include
+QMAKE_LIBDIR_X11 = /usr/openwin/lib/64
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL = /usr/openwin/include
+QMAKE_LIBDIR_OPENGL = /usr/openwin/lib/64
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS = -m64
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-R,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_NIS =
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread -lrt
+QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/tru64-cxx b/python/sip/specs/tru64-cxx
new file mode 100644
index 00000000..b7154be9
--- /dev/null
+++ b/python/sip/specs/tru64-cxx
@@ -0,0 +1,79 @@
+#
+# qmake configuration for tru64-cxx
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl plugin_no_soname
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Olimit 1000
+QMAKE_CFLAGS_THREAD = -pthread
+
+QMAKE_CXX = cxx
+QMAKE_CXXFLAGS = -x cxx -model ansi $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = cxx
+QMAKE_LINK_SHLIB = cxx
+QMAKE_LFLAGS = -model ansi
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_THREAD = -pthread
+QMAKE_LFLAGS_SONAME = -soname$$LITERAL_WHITESPACE
+QMAKE_RPATH = -rpath$$LITERAL_WHITESPACE
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lrt
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/tru64-g++ b/python/sip/specs/tru64-g++
new file mode 100644
index 00000000..eb3a7581
--- /dev/null
+++ b/python/sip/specs/tru64-g++
@@ -0,0 +1,79 @@
+#
+# qmake configuration for tru64-g++
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl plugin_no_soname
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_X11 = -lXext -lX11 -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread -lexc -lrt
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cqs
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/unixware-cc b/python/sip/specs/unixware-cc
new file mode 100644
index 00000000..61b0d7f6
--- /dev/null
+++ b/python/sip/specs/unixware-cc
@@ -0,0 +1,84 @@
+#
+# qmake configuration for unixware-cc
+#
+# Written for UnixWare 7 with UDK or OUDK
+#
+# -Wf,--diag_suppress,838
+# turns off warning about missing return types in X headers
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -KPIC
+QMAKE_CFLAGS_YACC = -Wf,--diag_suppress,111 -Wf,--diag_suppress,177
+QMAKE_CFLAGS_THREAD = -Kthread
+
+QMAKE_CXX = CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -Wf,--display_error_number -Wf,--diag_suppress,838
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE -Tused
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 = /usr/X/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = CC
+QMAKE_LINK_SHLIB = CC
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -G
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -h$$LITERAL_WHITESPACE
+QMAKE_LFLAGS_THREAD = -Kthread
+QMAKE_RPATH = -R
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL
+
+QMAKE_LIBS_THREAD =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/unixware-g++ b/python/sip/specs/unixware-g++
new file mode 100644
index 00000000..cd7735ee
--- /dev/null
+++ b/python/sip/specs/unixware-g++
@@ -0,0 +1,81 @@
+#
+# qmake configuration for unixware-g++
+#
+# Written for UnixWare 7 with OSTK
+#
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 = /usr/X/lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD =
+QMAKE_RPATH = -Wl,-R,
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
+QMAKE_LIBS_X11SM = -lSM -lICE
+QMAKE_LIBS_OPENGL = -lGLU -lGL -lXt
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lthread
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = ar cq
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/python/sip/specs/win32-borland b/python/sip/specs/win32-borland
new file mode 100644
index 00000000..63bf07ae
--- /dev/null
+++ b/python/sip/specs/win32-borland
@@ -0,0 +1,90 @@
+#
+# qmake configuration for win32-borland
+#
+# Written for Borland C++
+#
+
+MAKEFILE_GENERATOR = BMAKE
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl copy_dir_files no_empty_targets cd_change_global debug_and_release debug_and_release_target
+QT += core gui
+DEFINES += UNICODE
+QMAKE_NOFORCE = 1
+QMAKE_COMPILER_DEFINES += __BORLANDC__ WIN32
+
+QMAKE_CC = bcc32
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -tWR -tWM
+QMAKE_CFLAGS_WARN_ON = -w -w-hid
+QMAKE_CFLAGS_WARN_OFF = -w-
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -v
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_CONSOLE = -tWC
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_CONSOLE = $$QMAKE_CFLAGS_CONSOLE
+QMAKE_CXXFLAGS_STL_ON =
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON =
+QMAKE_CXXFLAGS_RTTI_OFF = -RT-
+QMAKE_CXXFLAGS_EXCEPTIONS_ON =
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -x-
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR = $(BCB)\lib
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o$@ $<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$@ $<
+
+QMAKE_LINK = ilink32
+QMAKE_LFLAGS = -c -x -Gn
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = -v
+QMAKE_LFLAGS_CONSOLE = -ap -Tpe c0x32.obj
+QMAKE_LFLAGS_WINDOWS = -aa -Tpe c0w32.obj
+QMAKE_LFLAGS_DLL= -Gi -aa -Tpd c0d32.obj
+
+QMAKE_LIBS = import32.lib cw32mti.lib
+QMAKE_LIBS_CORE =
+QMAKE_LIBS_GUI =
+QMAKE_LIBS_NETWORK = ws2_32.lib
+QMAKE_LIBS_OPENGL =
+QMAKE_LIBS_COMPAT =
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+#QMAKE_LIBS_OPENGL =
+#QMAKE_LFLAGS_OPENGL = /dopengl32.dll
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = tlib /C /P256
+QMAKE_RC = brcc32 -dQ_CC_BOR
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy /y
+QMAKE_COPY_DIR = xcopy /s /q /y /i
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = if not exist
+QMAKE_MKDIR = mkdir
+
+load(qt_config)
diff --git a/python/sip/specs/win32-g++ b/python/sip/specs/win32-g++
new file mode 100644
index 00000000..0c45103d
--- /dev/null
+++ b/python/sip/specs/win32-g++
@@ -0,0 +1,102 @@
+#
+# qmake configuration for win32-g++
+#
+# Written for MinGW
+#
+
+MAKEFILE_GENERATOR = MINGW
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
+QT += core gui
+DEFINES += UNICODE QT_LARGEFILE_SUPPORT
+QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
+
+QMAKE_EXT_OBJ = .o
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -mthreads
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_RTTI_ON = -frtti
+QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+QMAKE_LINK = g++
+QMAKE_LFLAGS = -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
+QMAKE_LFLAGS_RELEASE = -Wl,-s
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
+QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
+QMAKE_LFLAGS_DLL = -shared
+QMAKE_LINK_OBJECT_MAX = 10
+QMAKE_LINK_OBJECT_SCRIPT= object_script
+
+
+QMAKE_LIBS =
+QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
+QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32
+QMAKE_LIBS_NETWORK = -lws2_32
+QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32
+QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
+QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
+
+MINGW_IN_SHELL = $$(MINGW_IN_SHELL)
+isEqual(MINGW_IN_SHELL, 1) {
+ QMAKE_DIR_SEP = /
+ QMAKE_COPY = cp
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = mv
+ QMAKE_DEL_FILE = rm
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+} else {
+ QMAKE_COPY = copy /y
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = move
+ QMAKE_DEL_FILE = del
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+}
+QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = ar -ru
+QMAKE_RC = windres
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = if not exist
+load(qt_config)
diff --git a/python/sip/specs/win32-icc b/python/sip/specs/win32-icc
new file mode 100644
index 00000000..ca00e9e5
--- /dev/null
+++ b/python/sip/specs/win32-icc
@@ -0,0 +1,87 @@
+#
+# qmake configuration for win32-icc
+#
+# Written for Intel C++
+#
+
+MAKEFILE_GENERATOR = MSVC
+TEMPLATE = app
+CONFIG += qt warn_on release incremental flat link_prl precompile_header copy_dir_files debug_and_release debug_and_release_target
+QT += core gui
+DEFINES += UNICODE QT_LARGEFILE_SUPPORT
+QMAKE_COMPILER_DEFINES += __INTEL_COMPILER _MSC_VER=1300 WIN32
+
+QMAKE_CC = icl
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -nologo -Zm200
+QMAKE_CFLAGS_WARN_ON = -W3 /Qwd673
+QMAKE_CFLAGS_WARN_OFF = -W0 /Qwd673
+QMAKE_CFLAGS_RELEASE = -O2 -MD
+QMAKE_CFLAGS_DEBUG = -Zi -MDd
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS /Zc:forScope
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_STL_ON = -GX
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON = -GR
+QMAKE_CXXFLAGS_RTTI_OFF =
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = -GX
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
+
+QMAKE_LINK = link
+QMAKE_LFLAGS = /NOLOGO
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:console
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:windows
+QMAKE_LFLAGS_DLL = /DLL
+QMAKE_LFLAGS_QT_DLL = /BASE:0x39D00000
+
+QMAKE_LIBS =
+QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
+QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib
+QMAKE_LIBS_NETWORK = ws2_32.lib
+QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib delayimp.lib
+QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = lib /NOLOGO
+QMAKE_RC = rc
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy /y
+QMAKE_COPY_DIR = xcopy /s /q /y /i
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = if not exist
+QMAKE_MKDIR = mkdir
+
+DSP_EXTENSION = .dsp
+load(qt_config)
diff --git a/python/sip/specs/win32-msvc b/python/sip/specs/win32-msvc
new file mode 100644
index 00000000..2332b6b9
--- /dev/null
+++ b/python/sip/specs/win32-msvc
@@ -0,0 +1,86 @@
+#
+# qmake configuration for win32-msvc
+#
+# Written for Microsoft C++
+#
+
+MAKEFILE_GENERATOR = MSVC
+TEMPLATE = app
+CONFIG += qt warn_on release incremental flat link_prl precompile_header copy_dir_files cd_change_global no_delete_multiple_files debug_and_release debug_and_release_target
+QT += core gui
+DEFINES += UNICODE QT_LARGEFILE_SUPPORT
+QMAKE_COMPILER_DEFINES += _MSC_VER=1200 WIN32
+
+QMAKE_CC = cl
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -nologo -Zm200
+QMAKE_CFLAGS_WARN_ON = -W3
+QMAKE_CFLAGS_WARN_OFF = -W0
+QMAKE_CFLAGS_RELEASE = -O1 -MD
+QMAKE_CFLAGS_DEBUG = -Zi -MDd
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_STL_ON = -GX
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON = -GR
+QMAKE_CXXFLAGS_RTTI_OFF =
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = -GX
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
+
+QMAKE_LINK = link
+QMAKE_LFLAGS = /NOLOGO
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
+QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:console
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:windows
+QMAKE_LFLAGS_DLL = /DLL
+
+QMAKE_LIBS =
+QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
+QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib
+QMAKE_LIBS_NETWORK = ws2_32.lib
+QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib delayimp.lib
+QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = lib /NOLOGO
+QMAKE_RC = rc
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy /y
+QMAKE_COPY_DIR = xcopy /s /q /y /i
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = if not exist
+QMAKE_MKDIR = mkdir
+
+DSP_EXTENSION = .dsp
+load(qt_config)
diff --git a/python/sip/specs/win32-msvc.net b/python/sip/specs/win32-msvc.net
new file mode 100644
index 00000000..5fbb7566
--- /dev/null
+++ b/python/sip/specs/win32-msvc.net
@@ -0,0 +1,88 @@
+#
+# qmake configuration for win32-msvc.net
+#
+# Written for Microsoft C++.NET
+#
+
+MAKEFILE_GENERATOR = MSVC.NET
+TEMPLATE = app
+CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
+QT += core gui
+DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT
+QMAKE_COMPILER_DEFINES += _MSC_VER=1300 WIN32
+
+QMAKE_CC = cl
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -nologo -Zm200
+QMAKE_CFLAGS_WARN_ON = -W3
+QMAKE_CFLAGS_WARN_OFF = -W0
+QMAKE_CFLAGS_RELEASE = -O2 -MD
+QMAKE_CFLAGS_DEBUG = -Zi -MDd
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_STL_ON = -EHsc
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON = -GR
+QMAKE_CXXFLAGS_RTTI_OFF =
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
+
+QMAKE_LINK = link
+QMAKE_LFLAGS = /NOLOGO
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
+QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
+QMAKE_LFLAGS_DLL = /DLL
+
+QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
+QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib
+QMAKE_LIBS_NETWORK = ws2_32.lib
+QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib
+QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
+
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = lib /NOLOGO
+QMAKE_RC = rc
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy /y
+QMAKE_COPY_DIR = xcopy /s /q /y /i
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = if not exist
+QMAKE_MKDIR = mkdir
+
+VCPROJ_EXTENSION = .vcproj
+VCSOLUTION_EXTENSION = .sln
+VCPROJ_KEYWORD = Qt4VSv1.0
+load(qt_config)
diff --git a/python/sip/specs/win32-msvc2005 b/python/sip/specs/win32-msvc2005
new file mode 100644
index 00000000..1205df40
--- /dev/null
+++ b/python/sip/specs/win32-msvc2005
@@ -0,0 +1,88 @@
+#
+# qmake configuration for win32-msvc2005
+#
+# Written for Microsoft VC2005.NET
+#
+
+MAKEFILE_GENERATOR = MSVC.NET
+TEMPLATE = app
+CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll
+QT += core gui
+DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT
+QMAKE_COMPILER_DEFINES += _MSC_VER=1400 WIN32
+
+QMAKE_CC = cl
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
+QMAKE_CFLAGS_WARN_ON = -W3
+QMAKE_CFLAGS_WARN_OFF = -W0
+QMAKE_CFLAGS_RELEASE = -O2 -MD
+QMAKE_CFLAGS_DEBUG = -Zi -MDd
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_STL_ON = -EHsc
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON = -GR
+QMAKE_CXXFLAGS_RTTI_OFF =
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
+
+QMAKE_LINK = link
+QMAKE_LFLAGS = /NOLOGO
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
+QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
+QMAKE_LFLAGS_DLL = /DLL
+
+QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
+QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib
+QMAKE_LIBS_NETWORK = ws2_32.lib
+QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib
+QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
+
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = lib /NOLOGO
+QMAKE_RC = rc
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy /y
+QMAKE_COPY_DIR = xcopy /s /q /y /i
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = if not exist
+QMAKE_MKDIR = mkdir
+
+VCPROJ_EXTENSION = .vcproj
+VCSOLUTION_EXTENSION = .sln
+VCPROJ_KEYWORD = Qt4VSv1.0
+load(qt_config)
diff --git a/python/sip/specs/win32-watcom b/python/sip/specs/win32-watcom
new file mode 100644
index 00000000..463778bd
--- /dev/null
+++ b/python/sip/specs/win32-watcom
@@ -0,0 +1,69 @@
+#
+# $Id$
+#
+# qmake configuration for win32-watcom
+#
+# Written for Watcom C++, now OpenWatcom.
+#
+
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+
+QMAKE_CC = wcl386
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -zq
+QMAKE_CFLAGS_WARN_ON = -w2
+QMAKE_CFLAGS_WARN_OFF = -w0
+QMAKE_CFLAGS_RELEASE = -ox
+QMAKE_CFLAGS_DEBUG = -d2
+QMAKE_CFLAGS_YACC =
+
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $(QTDIR)\include
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -fo=$obj $src
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -fo=$obj $src
+
+QMAKE_LINK = wlink
+QMAKE_LFLAGS = op quiet op c
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = d all
+QMAKE_LFLAGS_CONSOLE = sys nt
+QMAKE_LFLAGS_WINDOWS = sys nt_win
+QMAKE_LFLAGS_CONSOLE_DLL= sys nt
+QMAKE_LFLAGS_WINDOWS_DLL= sys nt_win
+
+QMAKE_LIBS =
+QMAKE_LIBS_CONSOLE =
+QMAKE_LIBS_WINDOWS =
+QMAKE_LIBS_QT = %QTDIR%\lib\qt.lib
+QMAKE_LIBS_QT_ENTRY = %QTDIR%\lib\qtmain.lib
+
+QMAKE_LIBS_OPENGL = opengl32.lib
+
+QMAKE_MOC = $(QTDIR)/bin/moc.exe
+QMAKE_UIC = $(QTDIR)/bin/uic.exe
+QMAKE_IDC = $(QTDIR)/bin/idc.exe
+
+QMAKE_LIB = wlib -b -c -n -q -p=512
+QMAKE_RC = rc
+
+QMAKE_ZIP = zip -r -9
+
+QMAKE_COPY = copy
+QMAKE_MOVE = move
+QMAKE_DEL_FILE = del
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p